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

Reply via email to