Blame view
Documentation/i2c/busses/i2c-ocores
1.75 KB
18f98b1e3
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Kernel driver i2c-ocores Supported adapters: * OpenCores.org I2C controller by Richard Herveille (see datasheet link) Datasheet: http://www.opencores.org/projects.cgi/web/i2c/overview Author: Peter Korsgaard <jacmet@sunsite.dk> Description ----------- i2c-ocores is an i2c bus driver for the OpenCores.org I2C controller IP core by Richard Herveille. Usage ----- i2c-ocores uses the platform bus, so you need to provide a struct platform_device with the base address and interrupt number. The dev.platform_data of the device should also point to a struct ocores_i2c_platform_data (see linux/i2c-ocores.h) describing the distance between registers and the input clock speed. |
dd14be4c2
|
23 24 |
There is also a possibility to attach a list of i2c_board_info which the i2c-ocores driver will add to the bus upon creation. |
18f98b1e3
|
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
E.G. something like: static struct resource ocores_resources[] = { [0] = { .start = MYI2C_BASEADDR, .end = MYI2C_BASEADDR + 8, .flags = IORESOURCE_MEM, }, [1] = { .start = MYI2C_IRQ, .end = MYI2C_IRQ, .flags = IORESOURCE_IRQ, }, }; |
dd14be4c2
|
40 41 42 43 44 45 46 47 48 49 50 51 |
/* optional board info */ struct i2c_board_info ocores_i2c_board_info[] = { { I2C_BOARD_INFO("tsc2003", 0x48), .platform_data = &tsc2003_platform_data, .irq = TSC_IRQ }, { I2C_BOARD_INFO("adv7180", 0x42 >> 1), .irq = ADV_IRQ } }; |
18f98b1e3
|
52 53 54 |
static struct ocores_i2c_platform_data myi2c_data = { .regstep = 2, /* two bytes between registers */ .clock_khz = 50000, /* input clock of 50MHz */ |
dd14be4c2
|
55 56 |
.devices = ocores_i2c_board_info, /* optional table of devices */ .num_devices = ARRAY_SIZE(ocores_i2c_board_info), /* table size */ |
18f98b1e3
|
57 58 59 60 61 62 63 64 65 66 |
}; static struct platform_device myi2c = { .name = "ocores-i2c", .dev = { .platform_data = &myi2c_data, }, .num_resources = ARRAY_SIZE(ocores_resources), .resource = ocores_resources, }; |