[U-Boot] [RFC PATCH 12/13] dm: sunxi: Support driver model for Ethernet

Simon Glass sjg at chromium.org
Wed Mar 4 00:40:36 CET 2015


Hi Ian,

On 3 March 2015 at 01:40, Ian Campbell <ijc+uboot at hellion.org.uk> wrote:
> On Sun, 2015-03-01 at 09:33 -0700, Simon Glass wrote:
>> Adjust the Ethernet initialisation code to support driver model.
>> It is no-longer necessary to call designware_initialize(). The device will
>> be probed when it is used. The PHY type and GMAC base will come from the
>> device tree.
>
> I wonder if for this sort of thing designware_initialize couldn't become
> a nop so we can avoid some level of ifdefs?

I would rather not, since the intent is to delete the whole function.
Once all sunxi uses driver model for Ethernet we can drop the call in
gmac.c.

>
> Anyway, that's just minor, of larger concern is all the CONFIG_RGMII and
> CONFIG_GMII stuff which is just above the context here. Doesn't that
> need to become DM driven for this to be useful?
>

Yes

> In fact, doesn't the pinmux generally need to become DM driven?
>

Yes

> Or is this just a partial stepping stone to DM Ethernet support and not
> a complete transition? (I wonder if I am confusing Device Model with
> Device Tree here and this is all about the former, albeit the former is
> often driven from the latter...)
>

Yes this is Ethernet only. If we create a pinctl or funcmux framework
we could implement this, but it is in fact a separate issue from
Ethernet.

>>
>> Signed-off-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>>  board/sunxi/gmac.c | 11 ++++++++---
>>  1 file changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/board/sunxi/gmac.c b/board/sunxi/gmac.c
>> index 8849132..ce7831d 100644
>> --- a/board/sunxi/gmac.c
>> +++ b/board/sunxi/gmac.c
>> @@ -80,11 +80,16 @@ int sunxi_gmac_initialize(bd_t *bis)
>>               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
>>  #endif
>>
>> -#ifdef CONFIG_RGMII
>> +#ifdef CONFIG_DM_ETH
>> +     printf("eth init\n");
>> +     return 0;
>> +#else
>> +# ifdef CONFIG_RGMII
>>       return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII);
>> -#elif defined CONFIG_GMII
>> +# elif defined CONFIG_GMII
>>       return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_GMII);
>> -#else
>> +# else
>>       return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_MII);
>> +# endif
>>  #endif
>>  }
>
>

Regards,
Simon


More information about the U-Boot mailing list