diff options
author | Peter Korsgaard <jacmet@sunsite.dk> | 2006-06-04 14:01:08 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-22 14:10:33 -0400 |
commit | 18f98b1e3147afdb51e545cc6ff2b016c7d088a7 (patch) | |
tree | 5f974b01a7efadabe037ace19a0f33037d36a4b7 /Documentation/i2c/busses/i2c-ocores | |
parent | aee62305345863430a937af289b9bd080a100dac (diff) |
[PATCH] i2c: New bus driver for the OpenCores I2C controller
The following patch adds support for the OpenCores I2C controller IP
core (See http://www.opencores.org/projects.cgi/web/i2c/overview).
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'Documentation/i2c/busses/i2c-ocores')
-rw-r--r-- | Documentation/i2c/busses/i2c-ocores | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Documentation/i2c/busses/i2c-ocores b/Documentation/i2c/busses/i2c-ocores new file mode 100644 index 000000000000..cfcebb10d14e --- /dev/null +++ b/Documentation/i2c/busses/i2c-ocores | |||
@@ -0,0 +1,51 @@ | |||
1 | Kernel driver i2c-ocores | ||
2 | |||
3 | Supported adapters: | ||
4 | * OpenCores.org I2C controller by Richard Herveille (see datasheet link) | ||
5 | Datasheet: http://www.opencores.org/projects.cgi/web/i2c/overview | ||
6 | |||
7 | Author: Peter Korsgaard <jacmet@sunsite.dk> | ||
8 | |||
9 | Description | ||
10 | ----------- | ||
11 | |||
12 | i2c-ocores is an i2c bus driver for the OpenCores.org I2C controller | ||
13 | IP core by Richard Herveille. | ||
14 | |||
15 | Usage | ||
16 | ----- | ||
17 | |||
18 | i2c-ocores uses the platform bus, so you need to provide a struct | ||
19 | platform_device with the base address and interrupt number. The | ||
20 | dev.platform_data of the device should also point to a struct | ||
21 | ocores_i2c_platform_data (see linux/i2c-ocores.h) describing the | ||
22 | distance between registers and the input clock speed. | ||
23 | |||
24 | E.G. something like: | ||
25 | |||
26 | static 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 | |||
39 | static struct ocores_i2c_platform_data myi2c_data = { | ||
40 | .regstep = 2, /* two bytes between registers */ | ||
41 | .clock_khz = 50000, /* input clock of 50MHz */ | ||
42 | }; | ||
43 | |||
44 | static 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 | }; | ||