[U-Boot] [PATCH 1/5] net: mdio: Add mdio_free() and mdio_unregister() API

Bin Meng bmeng.cn at gmail.com
Thu Sep 10 08:52:25 CEST 2015


Hi Simon,

On Thu, Sep 10, 2015 at 2:07 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Bin,
>
> On Friday, 4 September 2015, Bin Meng <bmeng.cn at gmail.com> wrote:
>>
>> Currently there is no API to uninitialize mdio. Add two APIs for this.
>>
>> Signed-off-by: Bin Meng <bmeng.cn at gmail.com>
>> ---
>>
>>  common/miiphyutil.c | 19 +++++++++++++++++++
>>  include/miiphy.h    |  2 ++
>>  2 files changed, 21 insertions(+)
>>
>> diff --git a/common/miiphyutil.c b/common/miiphyutil.c
>> index c88c28a..e499b58 100644
>> --- a/common/miiphyutil.c
>> +++ b/common/miiphyutil.c
>> @@ -152,6 +152,11 @@ struct mii_dev *mdio_alloc(void)
>>         return bus;
>>  }
>>
>> +void mdio_free(struct mii_dev *bus)
>> +{
>> +       free(bus);
>> +}
>
>
> Should this function be exported, or just called from mdio_unregister()?
>

I created mdio_free() to keep API symmetry - there is an mdio_alloc()
API already. IMHO we should remove mdio_alloc() API and move
mdio_alloc() to inside mdio_register(), but did not do that way as
that change is quite big (a bunch of ethernet drivers need update).
What do you think?

>>
>> +
>>  int mdio_register(struct mii_dev *bus)
>>  {
>>         if (!bus || !bus->name || !bus->read || !bus->write)
>> @@ -173,6 +178,20 @@ int mdio_register(struct mii_dev *bus)
>>         return 0;
>>  }
>>
>> +int mdio_unregister(struct mii_dev *bus)
>> +{
>> +       if (!bus)
>> +               return 0;
>> +
>> +       /* delete it from the list */
>> +       list_del(&bus->link);
>> +
>> +       if (current_mii == bus)
>> +               current_mii = NULL;
>> +
>> +       return 0;
>> +}
>> +
>>  void mdio_list_devices(void)
>>  {
>>         struct list_head *entry;
>> diff --git a/include/miiphy.h b/include/miiphy.h
>> index 088797e..af12274 100644
>> --- a/include/miiphy.h
>> +++ b/include/miiphy.h
>> @@ -59,7 +59,9 @@ struct phy_device *mdio_phydev_for_ethname(const char *devname);
>>  void miiphy_listdev(void);
>>
>>  struct mii_dev *mdio_alloc(void);
>> +void mdio_free(struct mii_dev *bus);
>>  int mdio_register(struct mii_dev *bus);
>> +int mdio_unregister(struct mii_dev *bus);
>
>
> Function comments.

OK

>
>>
>>  void mdio_list_devices(void);
>>
>>  #ifdef CONFIG_BITBANGMII
>> --

Regards,
Bin


More information about the U-Boot mailing list