[PATCH linux dev-4.7] drivers/fsi: Clock slave prior to master command

Joel Stanley joel at jms.id.au
Fri Feb 17 12:32:07 AEDT 2017


On Thu, Feb 9, 2017 at 4:25 PM, Joel Stanley <joel at jms.id.au> wrote:
> On Sat, Feb 4, 2017 at 6:08 AM, Christopher Bostic
> <cbostic at linux.vnet.ibm.com> wrote:
>> If the FSI bus has been idle for some period it is necessary to
>> wake up the slave so its ready for a new master initiated
>> commands. This is done by clocking out a series of 0's on the
>> SDA line immediately before any command.
>>
>> Signed-off-by: Christopher Bostic <cbostic at linux.vnet.ibm.com>
>
> In my testing I did not need this patch even after a long idle period.
>
> This patch did help when I tried to read or write to an invalid FSI
> address. I suspect we want to fix the root cause of those invalid
> read/writes - perhaps by catching them before they turn into
> transactions on the bus, or only doing the reset when the bus got into
> a bad state.
>
> Doing it on every read/write seems excessive and will slow down access
> to the bus.

I spoke with Chris about my concerns. He agreed that this was not the
correct fix, and is only a temporary fix while he develops proper
address checking and bus recovery.

In his words from https://github.com/openbmc/openbmc/issues/1122:

> Right now the FSI driver must clock a number of times, 32 presently, just
> before a command is issued. This prevents situations where the slave fails
> to respond to transactions after the bus has been idle for some time.
>
> Its expected that once bus error handling and clean up is in place that this
> extra clocking will no longer be required but that has not yet been proven.
> The issue tracks the need to remove this extra clocking once error handling is in place.

So we will apply this now in order to get the FSI kernel driver
working. Except to see the code removed in the coming weeks.

Cheers,

Joel


More information about the openbmc mailing list