[U-Boot] [PATCH] net: gmac_rockchip: Add support for pinctrl
Dr. Philipp Tomsich
philipp.tomsich at theobroma-systems.com
Tue Jul 11 13:43:20 UTC 2017
> On 10 Jul 2017, at 08:43, Romain Perier <romain.perier at collabora.com> wrote:
>
> Le 07/07/2017 à 05:58, Simon Glass a écrit :
>> +Philipp
>>
>> Hi Romain,
>>
>> On 3 July 2017 at 01:13, Romain Perier <romain.perier at collabora.com> wrote:
>>> Currently, selecting state simple is done by the device driver model,
>>> prior probing the driver. The problem is that it's done and called on
>>> the pinctrl node with "gmac" as the "periph" struct udevice *. So
>>> pinctrl-rk3288 is looking for an interrupt property that is not found,
>>> and then gmac_config is never called.
>>>
>>> This commits toggles the pinctrl on the right node from the probe
>>> function of the driver.
>> Is it possible to fix this while still using driver-model automatic pinctrl?
>
> This is what I have tried to do, without success. The purpose of this
> patch is also to discuss about the possible solutions we have.
From looking at pinctrl_rk3288.c, I wonder if there’s a problem with
pinctrl on the RK3288 outside of SPL: I see that the (full) set_state
is also implemented outside of SPL (#ifndef CONFIG_SPL_BUILD)
and not guarded by a CONFIG_IS_ENABLED(PINCTRL_FULL). So
something might go down the wrong path.
Could start narrowing this down by enabling DEBUG in pinctrl_rk3288
to see whether this is even the simple pinctrl that gets called?
> Regards,
> Romain
>
>>
>>> Signed-off-by: Romain Perier <romain.perier at collabora.com>
>>> ---
>>> drivers/net/gmac_rockchip.c | 4 ++++
>>> 1 file changed, 4 insertions(+)
>>>
>>> diff --git a/drivers/net/gmac_rockchip.c b/drivers/net/gmac_rockchip.c
>>> index 5e2ca76302..8581026b4a 100644
>>> --- a/drivers/net/gmac_rockchip.c
>>> +++ b/drivers/net/gmac_rockchip.c
>>> @@ -160,6 +160,10 @@ static int gmac_rockchip_probe(struct udevice *dev)
>>> struct clk clk;
>>> int ret;
>>>
>>> + ret = pinctrl_select_state(dev, "simple");
>>> + if (ret)
>>> + return ret;
>>> +
>>> ret = clk_get_by_index(dev, 0, &clk);
>>> if (ret)
>>> return ret;
>>> --
>>> 2.11.0
>>>
>> Regards,
>> Simon
>
More information about the U-Boot
mailing list