mirror of
https://github.com/torvalds/linux.git
synced 2024-11-19 10:31:48 +00:00
9bca19a01d
Pull i2c updates from Wolfram Sang: - mainly feature additions to drivers (stm32f7, qup, xlp9xx, mlxcpld, ...) - conversion to use the i2c_8bit_addr_from_msg macro consistently - move includes to platform_data - core updates to allow the (still in review) I3C subsystem to connect - and the regular share of smaller driver updates * 'i2c/for-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (68 commits) i2c: qup: fix building without CONFIG_ACPI i2c: tegra: Remove suspend-resume i2c: imx-lpi2c: Switch to SPDX identifier i2c: mxs: Switch to SPDX identifier i2c: busses: make use of i2c_8bit_addr_from_msg i2c: algos: make use of i2c_8bit_addr_from_msg i2c: rcar: document R8A77980 bindings i2c: qup: Add command-line parameter to override SCL frequency i2c: qup: Correct duty cycle for FM and FM+ i2c: qup: Add support for Fast Mode Plus i2c: qup: add probe path for Centriq ACPI devices i2c: robotfuzz-osif: drop pointless test i2c: robotfuzz-osif: remove pointless local variable i2c: rk3x: Don't print visible virtual mapping MMIO address i2c: opal: don't check number of messages in the driver i2c: ibm_iic: don't check number of messages in the driver i2c: imx: Switch to SPDX identifier i2c: mux: pca954x: merge calls to of_match_device and of_device_get_match_data i2c: mux: demux-pinctrl: use proper parent device for demux adapter i2c: mux: improve error message for failed symlink ...
69 lines
1.7 KiB
Plaintext
69 lines
1.7 KiB
Plaintext
Kernel driver i2c-ocores
|
|
|
|
Supported adapters:
|
|
* OpenCores.org I2C controller by Richard Herveille (see datasheet link)
|
|
https://opencores.org/project/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/platform_data/i2c-ocores.h) describing the
|
|
distance between registers and the input clock speed.
|
|
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.
|
|
|
|
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,
|
|
},
|
|
};
|
|
|
|
/* 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
|
|
}
|
|
};
|
|
|
|
static struct ocores_i2c_platform_data myi2c_data = {
|
|
.regstep = 2, /* two bytes between registers */
|
|
.clock_khz = 50000, /* input clock of 50MHz */
|
|
.devices = ocores_i2c_board_info, /* optional table of devices */
|
|
.num_devices = ARRAY_SIZE(ocores_i2c_board_info), /* table size */
|
|
};
|
|
|
|
static struct platform_device myi2c = {
|
|
.name = "ocores-i2c",
|
|
.dev = {
|
|
.platform_data = &myi2c_data,
|
|
},
|
|
.num_resources = ARRAY_SIZE(ocores_resources),
|
|
.resource = ocores_resources,
|
|
};
|