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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html