123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /*
- * Copyright (c) 2006-2024 RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2024-10-08 zhujiale the first version
- */
- #include "mdio.h"
- static struct rt_list_node mdio_list;
- struct mii_bus *rt_mdio_get_bus_by_name(const char *busname)
- {
- struct rt_list_node *entry;
- struct mii_bus *bus;
- if (!busname)
- {
- rt_kprintf("NULL bus name!\n");
- return RT_NULL;
- }
- rt_list_for_each(entry, &mdio_list)
- {
- bus = rt_container_of(entry, struct mii_bus, node);
- if (!strcmp(bus->name, busname))
- return bus;
- }
- return RT_NULL;
- }
- struct mii_bus *rt_mdio_alloc(void)
- {
- struct mii_bus *mii;
- mii = rt_malloc(sizeof(struct mii_bus));
- if (!mii)
- return RT_NULL;
- rt_list_init(&mii->node);
- return mii;
- }
- rt_err_t rt_mdio_register(struct mii_bus *bus)
- {
- if (!bus)
- return -RT_ERROR;
- if(rt_mdio_get_bus_by_name(bus->name))
- {
- rt_kprintf("mdio bus %s already exist!\n", bus->name);
- return -RT_ERROR;
- }
- rt_list_insert_before(&mdio_list, &bus->node);
- return RT_EOK;
- }
- rt_err_t rt_mdio_unregister(struct mii_bus *bus)
- {
- if (!bus)
- return -RT_ERROR;
- rt_list_remove(&bus->node);
- return RT_EOK;
- }
- static int mdio_init(void)
- {
- rt_list_init(&mdio_list);
- return 0;
- }
- INIT_CORE_EXPORT(mdio_init);
|