-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[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>
- Loading branch information
Peter Korsgaard
authored and
Greg Kroah-Hartman
committed
Jun 22, 2006
1 parent
aee6230
commit 18f98b1
Showing
5 changed files
with
425 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
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. | ||
|
||
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, | ||
}, | ||
}; | ||
|
||
static struct ocores_i2c_platform_data myi2c_data = { | ||
.regstep = 2, /* two bytes between registers */ | ||
.clock_khz = 50000, /* input clock of 50MHz */ | ||
}; | ||
|
||
static struct platform_device myi2c = { | ||
.name = "ocores-i2c", | ||
.dev = { | ||
.platform_data = &myi2c_data, | ||
}, | ||
.num_resources = ARRAY_SIZE(ocores_resources), | ||
.resource = ocores_resources, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.