summaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-omap/i2c.c
diff options
context:
space:
mode:
authorPaul Walmsley2010-12-07 05:30:57 +0100
committerTony Lindgren2010-12-07 23:39:02 +0100
commit00b4ade1f1968b55bb57a91c1f09a40fc33f72a0 (patch)
tree735c088094c5bf5be0b2ae4b4cbf34069965553c /arch/arm/plat-omap/i2c.c
parentMerge branch 'ctrl-wip/mux-omap4-v4' of git://gitorious.org/omap-pm/linux int... (diff)
downloadkernel-qcow2-linux-00b4ade1f1968b55bb57a91c1f09a40fc33f72a0.tar.gz
kernel-qcow2-linux-00b4ade1f1968b55bb57a91c1f09a40fc33f72a0.tar.xz
kernel-qcow2-linux-00b4ade1f1968b55bb57a91c1f09a40fc33f72a0.zip
OMAP1: I2C: fix device initialization
Commit 4d17aeb1c5b2375769446d13012a98e6d265ec13 ("OMAP: I2C: split device registration and convert OMAP2+ to omap_device") broke I2C on OMAP1. The following messages appear at boot: i2c_omap i2c_omap.1: failure requesting irq 0 i2c_omap: probe of i2c_omap.1 failed with error -22 Investigation revealed that a chunk of code is missing from the original plat-omap/i2c.c file which configured the IRQ and base address for the I2C block on OMAP1. Upon adding this back, the OMAP1 I2C block seems to initialize correctly. Thanks to Cory Maccarrone <darkstar6262@gmail.com> for reporting the bug, and apologies for the breakage. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> Tested-by: Cory Maccarrone <darkstar6262@gmail.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/plat-omap/i2c.c')
-rw-r--r--arch/arm/plat-omap/i2c.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/plat-omap/i2c.c b/arch/arm/plat-omap/i2c.c
index a5bff9ce7cbe..a6cf4e94f14c 100644
--- a/arch/arm/plat-omap/i2c.c
+++ b/arch/arm/plat-omap/i2c.c
@@ -97,10 +97,15 @@ static inline int omap1_i2c_add_bus(int bus_id)
{
struct platform_device *pdev;
struct omap_i2c_bus_platform_data *pdata;
+ struct resource *res;
omap1_i2c_mux_pins(bus_id);
pdev = &omap_i2c_devices[bus_id - 1];
+ res = pdev->resource;
+ res[0].start = OMAP1_I2C_BASE;
+ res[0].end = res[0].start + OMAP_I2C_SIZE;
+ res[1].start = INT_I2C;
pdata = &i2c_pdata[bus_id - 1];
return platform_device_register(pdev);