On 02/28/2014 08:26 AM, Peter Ujfalusi wrote: > On 02/28/2014 03:30 PM, Nishanth Menon wrote: >> TWL6030 can do 3.3MHz by default and there are no speed registers to >> configure. > > According to the datasheet the speed of twl6030 is limited to 2.4MHz. I have > not seen registers or pins to select the speed. As the documentation puts > this: High-speed mode (limited to 2.4Mbit/s maximum)
Aye, you are correct, the latest data sheet does show this - i made the mistake of opening an older spec doc :(.. >>> Also you could have more devices on the bus, wired for 3.4MHz. In that case >>> we >>> would need to make sure that the first access happens with 100KHz to twl6040 >>> to select 3.4MHz mode, switch the controller speed and allow the >>> communication >>> to other chips. It is another question how the 3.4MHz clients will interpret >>> the 100KHz communication on the bus, I guess it is ignored by them. >> As far as the i2c spec 2.1 says: >> "Fast-mode devices are downward-compatible and can communicate with >> Standard-mode devices in a 0 to 100 kbit/s I2C-bus system" >> ... >> "Hs-mode devices can transfer information at bit rates of up to 3.4 >> Mbit/s, yet they remain fully downward compatible with Fast- or >> Standard-mode (F/S-mode) devices for bi-directional communication in a >> mixed-speed bus system." >> >> So, they are backward compatible. > > I just tried it on PandaBoard to set the i2c speed to 24MHz. If I do not touch > the twl6040 ACCCTL register's i2cmode I can not access to twl6040 later on. > However if I select the high-speed mode as the first write everything is fine > afterwards. > Hrm, it is possible that I can write with high-speed to twl6040 but the > twl6040 is sending back the data in normal-mode? I doubt it would do that as it would be a violation of i2c high speed specification. > So in theory if I have the ACCCTL write as a first I2C access towards twl6040 > we might be safe if the bus is in high-speed mode? I think you did catch the real behavior in the email below. I do however suggest that you put one of those i2c analyser on the rail to see what is happening. else, we'd be doing a lot of guessing here. > > If I have fast mode configured to the controller, I can still communicate with > twl6040 even if it is set to normal mode. > > I still think that this patch is safe for now. We could try to figure out how > to increase the i2c speed on the bus for twl6030 and twl6040. This has to be > done in the same series. ?? you mean set i2c bus speed to full speed on PandaBoard? it is already full speed[1]! > > Now after several boots: > It seams if I set the i2c to 2.4MHz and I can not communicate with twl6040 > right after cold power on. > So if the i2c bus is already set to 2.4GHz I can not set the twl6040 ACCCTL > register. But the content of ACCCTL register seams to be preserved between > reboots and this is why I saw that the 2.4MHz bus speed might be even > possible. This observation is the key. Are you power cycling the regulators for TWL6040 as part of your shutdown handler? Did you read the ACCTL register after a reboot to see if the register contents are still the same as before? Based on this observation, I suggest switching [1] to 100KHz. [1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap4-panda-common.dtsi#n291 -- Regards, Nishanth Menon -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html