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