i2c: omap: Fix the revision register read
authorShubhrajyoti D <shubhrajyoti@ti.com>
Mon, 5 Nov 2012 12:23:36 +0000 (17:53 +0530)
committerWolfram Sang <w.sang@pengutronix.de>
Wed, 14 Nov 2012 16:44:38 +0000 (17:44 +0100)
commit47dcd0161a0b37bf0299473585fc5030d3f45b64
tree433bf454fd29ba3d480ca9edd96527c4a2bf0ba3
parent2d4b4520a5eaed6701b0c9f7540c8fd99a26e449
i2c: omap: Fix the revision register read

The revision register on OMAP4 is a 16-bit lo and a 16-bit
hi. Currently the driver reads only the lower 8-bits.
Fix the same by preventing the truncating of the rev register
for OMAP4.

Also use the scheme bit ie bit-14 of the hi register to know if it
is OMAP_I2C_IP_VERSION_2.

On platforms previous to OMAP4 the offset 0x04 is IE register whose
bit-14 reset value is 0, the code uses the same to its advantage.

Also since the omap_i2c_read_reg uses reg_map_ip_* a raw_readw is done
to fetch the revision register.

The dev->regs is populated after reading the rev_hi. A NULL check
has been added in the resume handler to prevent the access before
the setting of the regs.

Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
drivers/i2c/busses/i2c-omap.c