1Kernel driver i2c-ocores 2 3Supported adapters: 4 * OpenCores.org I2C controller by Richard Herveille (see datasheet link) 5 Datasheet: http://www.opencores.org/projects.cgi/web/i2c/overview 6 7Author: Peter Korsgaard <jacmet@sunsite.dk> 8 9Description 10----------- 11 12i2c-ocores is an i2c bus driver for the OpenCores.org I2C controller 13IP core by Richard Herveille. 14 15Usage 16----- 17 18i2c-ocores uses the platform bus, so you need to provide a struct 19platform_device with the base address and interrupt number. The 20dev.platform_data of the device should also point to a struct 21ocores_i2c_platform_data (see linux/i2c-ocores.h) describing the 22distance between registers and the input clock speed. 23 24E.G. something like: 25 26static struct resource ocores_resources[] = { 27 [0] = { 28 .start = MYI2C_BASEADDR, 29 .end = MYI2C_BASEADDR + 8, 30 .flags = IORESOURCE_MEM, 31 }, 32 [1] = { 33 .start = MYI2C_IRQ, 34 .end = MYI2C_IRQ, 35 .flags = IORESOURCE_IRQ, 36 }, 37}; 38 39static struct ocores_i2c_platform_data myi2c_data = { 40 .regstep = 2, /* two bytes between registers */ 41 .clock_khz = 50000, /* input clock of 50MHz */ 42}; 43 44static struct platform_device myi2c = { 45 .name = "ocores-i2c", 46 .dev = { 47 .platform_data = &myi2c_data, 48 }, 49 .num_resources = ARRAY_SIZE(ocores_resources), 50 .resource = ocores_resources, 51}; 52