Lines Matching refs:bus
113 rt_err_t rt_bus_for_each_dev(rt_bus_t bus, void *data, int (*fn)(rt_device_t dev, void *)) in rt_bus_for_each_dev() argument
120 RT_ASSERT(bus != RT_NULL); in rt_bus_for_each_dev()
122 dev_list = &bus->dev_list; in rt_bus_for_each_dev()
123 dev_lock = &bus->dev_lock; in rt_bus_for_each_dev()
157 rt_err_t rt_bus_for_each_drv(rt_bus_t bus, void *data, int (*fn)(rt_driver_t drv, void *)) in rt_bus_for_each_drv() argument
164 RT_ASSERT(bus != RT_NULL); in rt_bus_for_each_drv()
166 drv_list = &bus->drv_list; in rt_bus_for_each_drv()
167 drv_lock = &bus->drv_lock; in rt_bus_for_each_drv()
192 rt_bus_t bus = drv->bus; in bus_probe() local
195 if (!bus) in bus_probe()
197 bus = dev->bus; in bus_probe()
200 if (!dev->drv && bus->match(drv, dev)) in bus_probe()
204 err = bus->probe(dev); in bus_probe()
234 rt_bus_t bus = drv->bus; in bus_probe_device() local
236 _dm_bus_lock(&bus->drv_lock); in bus_probe_device()
238 _dm_bus_unlock(&bus->drv_lock); in bus_probe_device()
253 rt_err_t rt_bus_add_driver(rt_bus_t bus, rt_driver_t drv) in rt_bus_add_driver() argument
255 RT_ASSERT(bus != RT_NULL); in rt_bus_add_driver()
258 drv->bus = bus; in rt_bus_add_driver()
261 _dm_bus_lock(&bus->drv_lock); in rt_bus_add_driver()
262 rt_list_insert_before(&bus->drv_list, &drv->node); in rt_bus_add_driver()
263 _dm_bus_unlock(&bus->drv_lock); in rt_bus_add_driver()
265 rt_bus_for_each_dev(bus, drv, bus_probe_driver); in rt_bus_add_driver()
279 rt_err_t rt_bus_add_device(rt_bus_t bus, rt_device_t dev) in rt_bus_add_device() argument
281 RT_ASSERT(bus != RT_NULL); in rt_bus_add_device()
284 dev->bus = bus; in rt_bus_add_device()
287 _dm_bus_lock(&bus->dev_lock); in rt_bus_add_device()
288 rt_list_insert_before(&bus->dev_list, &dev->node); in rt_bus_add_device()
289 _dm_bus_unlock(&bus->dev_lock); in rt_bus_add_device()
291 rt_bus_for_each_drv(bus, dev, bus_probe_device); in rt_bus_add_device()
306 rt_bus_t bus; in rt_bus_remove_driver() local
309 RT_ASSERT(drv->bus != RT_NULL); in rt_bus_remove_driver()
311 bus = drv->bus; in rt_bus_remove_driver()
313 LOG_D("Bus(%s) remove driver %s", bus->name, drv->parent.name); in rt_bus_remove_driver()
315 _dm_bus_lock(&bus->drv_lock); in rt_bus_remove_driver()
327 _dm_bus_unlock(&bus->drv_lock); in rt_bus_remove_driver()
341 rt_bus_t bus; in rt_bus_remove_device() local
346 RT_ASSERT(dev->bus != RT_NULL); in rt_bus_remove_device()
348 bus = dev->bus; in rt_bus_remove_device()
351 LOG_D("Bus(%s) remove device %s", bus->name, dev->parent.name); in rt_bus_remove_device()
353 _dm_bus_lock(&bus->dev_lock); in rt_bus_remove_device()
355 _dm_bus_unlock(&bus->dev_lock); in rt_bus_remove_device()
357 if (dev->bus->remove) in rt_bus_remove_device()
359 err = dev->bus->remove(dev); in rt_bus_remove_device()
369 _dm_bus_lock(&bus->drv_lock); in rt_bus_remove_device()
371 _dm_bus_unlock(&bus->drv_lock); in rt_bus_remove_device()
379 rt_bus_t bus; member
386 rt_bus_t bus; in device_shutdown() local
390 bus = info->bus; in device_shutdown()
392 if (bus->shutdown) in device_shutdown()
395 err = bus->shutdown(dev); in device_shutdown()
422 rt_bus_t bus = RT_NULL; in rt_bus_shutdown() local
430 rt_list_for_each_entry(bus, &bus_nodes, list) in rt_bus_shutdown()
432 info.bus = bus; in rt_bus_shutdown()
433 rt_bus_for_each_dev(bus, &info, device_shutdown); in rt_bus_shutdown()
449 rt_bus_t bus = RT_NULL; in rt_bus_find_by_name() local
455 rt_list_for_each_entry(bus, &bus_nodes, list) in rt_bus_find_by_name()
457 if (!rt_strncmp(bus->name, name, RT_NAME_MAX)) in rt_bus_find_by_name()
465 return bus; in rt_bus_find_by_name()
483 RT_ASSERT(dev->bus != RT_NULL); in rt_bus_reload_driver_device()
484 RT_ASSERT(dev->bus != new_bus); in rt_bus_reload_driver_device()
486 old_bus = dev->bus; in rt_bus_reload_driver_device()
501 rt_err_t rt_bus_register(rt_bus_t bus) in rt_bus_register() argument
503 RT_ASSERT(bus != RT_NULL); in rt_bus_register()
505 rt_list_init(&bus->list); in rt_bus_register()
506 rt_list_init(&bus->dev_list); in rt_bus_register()
507 rt_list_init(&bus->drv_list); in rt_bus_register()
509 rt_spin_lock_init(&bus->dev_lock); in rt_bus_register()
510 rt_spin_lock_init(&bus->drv_lock); in rt_bus_register()
514 rt_list_insert_before(&bus_nodes, &bus->list); in rt_bus_register()