Hi, On Mon, Oct 22, 2012 at 02:27:20PM +0200, Benoit Cousson wrote: > Hi Felipe, > > On 10/22/2012 11:46 AM, Felipe Balbi wrote: > > on OMAP4+ we want to read IRQSTATUS_RAW register, > > instead of IRQSTATUS. The reason being that IRQSTATUS > > will only contain the bits which were enabled on > > IRQENABLE_SET and that will break when we need to > > poll for a certain bit which wasn't enabled as an > > IRQ source. > > > > One such case is after we finish converting to > > deferred stop bit, we will have to poll for ARDY > > bit before returning control for the client driver > > in order to prevent us from trying to start a > > transfer on a bus which is already busy. > > > > Note, however, that omap-i2c.c needs a big rework > > on register definition and register access. Such > > work will be done in a separate series of patches. > > Do you need OMAP_I2C_IP_VERSION_3 for OMAP4? > > OMAP_I2C_IP_VERSION_2 was already introduced to detect OMAP3630 vs > omap4430 because they were sharing the same IP version.. > > /* I2C controller revisions present on specific hardware */ > #define OMAP_I2C_REV_ON_2430 0x36 > #define OMAP_I2C_REV_ON_3430_3530 0x3C > #define OMAP_I2C_REV_ON_3630_4430 0x40 > > So in theory you should not need an extra version.
are you sure that's how they're used ? Looking at the code where we
choose reg_map_ip_v1 and reg_map_ip_v2:
1120 if (dev->dtrev == OMAP_I2C_IP_VERSION_2)
1121 dev->regs = (u8 *)reg_map_ip_v2;
1122 else
1123 dev->regs = (u8 *)reg_map_ip_v1;
And looking at reg_map_ip_v1:
218 static const u8 reg_map_ip_v1[] = {
219 [OMAP_I2C_REV_REG] = 0x00,
220 [OMAP_I2C_IE_REG] = 0x01,
221 [OMAP_I2C_STAT_REG] = 0x02,
222 [OMAP_I2C_IV_REG] = 0x03,
223 [OMAP_I2C_WE_REG] = 0x03,
224 [OMAP_I2C_SYSS_REG] = 0x04,
225 [OMAP_I2C_BUF_REG] = 0x05,
226 [OMAP_I2C_CNT_REG] = 0x06,
227 [OMAP_I2C_DATA_REG] = 0x07,
228 [OMAP_I2C_SYSC_REG] = 0x08,
229 [OMAP_I2C_CON_REG] = 0x09,
230 [OMAP_I2C_OA_REG] = 0x0a,
231 [OMAP_I2C_SA_REG] = 0x0b,
232 [OMAP_I2C_PSC_REG] = 0x0c,
233 [OMAP_I2C_SCLL_REG] = 0x0d,
234 [OMAP_I2C_SCLH_REG] = 0x0e,
235 [OMAP_I2C_SYSTEST_REG] = 0x0f,
236 [OMAP_I2C_BUFSTAT_REG] = 0x10,
237 };
that's really not the register map on OMAP3. That only looks valid for
OMAP1.
-ECONFUSED
--
balbi
signature.asc
Description: Digital signature
