[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <effa1a4d020a1ec6ea43fd5d4f12b89c@agner.ch>
Date: Tue, 27 Sep 2016 20:38:16 -0700
From: Stefan Agner <stefan@...er.ch>
To: Viresh Kumar <viresh.kumar@...aro.org>
Cc: Vladimir Zapolskiy <vladimir_zapolskiy@...tor.com>,
linus.walleij@...aro.org, shawnguo@...nel.org,
aalonso@...escale.com, b38343@...escale.com, ldewangan@...dia.com,
van.freenix@...il.com, p.zabel@...gutronix.de,
linux-gpio@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] pinctrl: freescale: avoid overwriting pin config when
freeing GPIO
On 2016-09-27 19:00, Viresh Kumar wrote:
> On 27-09-16, 12:34, Stefan Agner wrote:
>> Added Viresh Kumar to the discussion, he implemented the I2C recovery
>> functions.
>>
>> Yes, reordering the pinctrl/gpio_free calls would fix the problem too.
>>
>> However, I guess there is no explicit rule to that ("request/free GPIOs
>> only when they are muxed as GPIO"), so I think of it that the issue is
>> actually in the pinctrl driver.
>>
>> On top of that it is not entirely trivial to reorder the calls the way
>> i2c_generic_gpio_recovery and i2c_generic_recovery are set up right now.
>
> AFAICT, these routines don't touch the muxing part at all. Perhaps it is done
> internally by the GPIO calls. Can you please elaborate the exact change you are
> hinting towards here ?
The i.MX I2C driver touches the pinctrl in its prepare/unprepare
callbacks.
So, on a i.MX or Vybrid, the call chain looks like this:
i2c_generic_gpio_recovery
-> i2c_get_gpios_for_recovery
-> gpio_request_one
-> i2c_generic_recovery
-> prepare_recovery (i2c_imx_prepare_recovery)
-> pinctrl_select_state [gpio]
-> unprepare_recovery (i2c_imx_unprepare_recovery)
-> pinctrl_select_state [default]
-> i2c_put_gpios_for_recovery
-> gpio_free
And for the pinctrl/GPIO driver of Vybrid this is actually a problem
because gpio_free disables the output driver of the pad, and when that
happens after the (I2C) default pinctrl state gets selected the pad is
no longer active.
--
Stefan
Powered by blists - more mailing lists