RE: [PATCH 2.6.27-rc9-omap] i2c-omap: timeouts begone

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> At least we can say the problem seems to be related to pm. Maybe after
> context restore we should wait until the clock stabilizes or some
> register changes ??

Maybe.  An experiment would be to not shut the clock off in the idle routine.

Actually, scanning i2c_init shows what looks to be a problem.

 235 static int omap_i2c_init(struct omap_i2c_dev *dev)
 236 {
 237         u16 psc = 0, scll = 0, sclh = 0;
 238         u16 fsscll = 0, fssclh = 0, hsscll = 0, hssclh = 0;
 239         unsigned long fclk_rate = 12000000;
 240         unsigned long timeout;
 241         unsigned long internal_clk = 0;
 242
 243         if (!dev->rev1) {
 244                 omap_i2c_write_reg(dev, OMAP_I2C_SYSC_REG, OMAP_I2C_SYSC_SRST);

None of the module local OCP registers are being setup properly.  A write of a 0x2 kills other settings.  If after this operation the SSYC reg will say:
        -Forced Idle
        -Locally gate I+F clock on ocp-segment idle request
        -wake up disabled

If it is left this way what can happen is when L4/L3 clock stop partial idle is broadcast, this module will ack and gate its clocks.  This will result in you dropping data. Or if the data was sent ok, but clock stop happens, you won't be able to wake the system properly as you've cleared the local wakeup generation.  The result will be a timeout.

On OMAP2 I2C wasn't hooked properly into PRCM for handshake so it needed a workaround.  The same isn't true for OMAP3.  Treating the two as if they are the same with respect to power is false.

Regards,
Richard W.

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux