Lines Matching refs:i3cdev
281 const struct i3c_device *i3cdev = dev_to_i3cdev(dev); in i3c_device_uevent() local
285 if (i3cdev->desc) in i3c_device_uevent()
286 devinfo = i3cdev->desc->info; in i3c_device_uevent()
307 struct i3c_device *i3cdev; in i3c_device_match() local
313 i3cdev = dev_to_i3cdev(dev); in i3c_device_match()
315 if (i3c_device_match_id(i3cdev, i3cdrv->id_table)) in i3c_device_match()
323 struct i3c_device *i3cdev = dev_to_i3cdev(dev); in i3c_device_probe() local
326 return driver->probe(i3cdev); in i3c_device_probe()
331 struct i3c_device *i3cdev = dev_to_i3cdev(dev); in i3c_device_remove() local
335 driver->remove(i3cdev); in i3c_device_remove()
337 i3c_device_free_ibi(i3cdev); in i3c_device_remove()
893 struct i3c_device *i3cdev = dev_to_i3cdev(dev); in i3c_device_release() local
895 WARN_ON(i3cdev->desc); in i3c_device_release()
897 of_node_put(i3cdev->dev.of_node); in i3c_device_release()
898 kfree(i3cdev); in i3c_device_release()
1069 struct i3c_dev_desc *i3cdev; in i3c_master_defslvs_locked() local
1080 i3c_bus_for_each_i3cdev(bus, i3cdev) { in i3c_master_defslvs_locked()
1083 if (i3cdev == master->this) in i3c_master_defslvs_locked()
1086 if (I3C_BCR_DEVICE_ROLE(i3cdev->info.bcr) == in i3c_master_defslvs_locked()
1117 i3c_bus_for_each_i3cdev(bus, i3cdev) { in i3c_master_defslvs_locked()
1119 if (i3cdev == master->this) in i3c_master_defslvs_locked()
1122 desc->bcr = i3cdev->info.bcr; in i3c_master_defslvs_locked()
1123 desc->dcr = i3cdev->info.dcr; in i3c_master_defslvs_locked()
1124 desc->dyn_addr = i3cdev->info.dyn_addr << 1; in i3c_master_defslvs_locked()
1125 desc->static_addr = i3cdev->info.static_addr << 1; in i3c_master_defslvs_locked()
1619 struct i3c_dev_desc *i3cdev; in i3c_master_early_i3c_dev_add() local
1622 i3cdev = i3c_master_alloc_i3c_dev(master, &info); in i3c_master_early_i3c_dev_add()
1623 if (IS_ERR(i3cdev)) in i3c_master_early_i3c_dev_add()
1626 i3cdev->boardinfo = boardinfo; in i3c_master_early_i3c_dev_add()
1628 ret = i3c_master_attach_i3c_dev(master, i3cdev); in i3c_master_early_i3c_dev_add()
1632 ret = i3c_master_setdasa_locked(master, i3cdev->info.static_addr, in i3c_master_early_i3c_dev_add()
1633 i3cdev->boardinfo->init_dyn_addr); in i3c_master_early_i3c_dev_add()
1637 i3cdev->info.dyn_addr = i3cdev->boardinfo->init_dyn_addr; in i3c_master_early_i3c_dev_add()
1638 ret = i3c_master_reattach_i3c_dev(i3cdev, 0); in i3c_master_early_i3c_dev_add()
1642 ret = i3c_master_retrieve_dev_info(i3cdev); in i3c_master_early_i3c_dev_add()
1649 i3c_master_rstdaa_locked(master, i3cdev->boardinfo->init_dyn_addr); in i3c_master_early_i3c_dev_add()
1651 i3c_master_detach_i3c_dev(i3cdev); in i3c_master_early_i3c_dev_add()
1653 i3c_master_free_i3c_dev(i3cdev); in i3c_master_early_i3c_dev_add()
1757 struct i3c_dev_desc *i3cdev; in i3c_master_set_info() local
1770 i3cdev = i3c_master_alloc_i3c_dev(master, info); in i3c_master_set_info()
1771 if (IS_ERR(i3cdev)) in i3c_master_set_info()
1772 return PTR_ERR(i3cdev); in i3c_master_set_info()
1774 master->this = i3cdev; in i3c_master_set_info()
1777 ret = i3c_master_attach_i3c_dev(master, i3cdev); in i3c_master_set_info()
1784 i3c_master_free_i3c_dev(i3cdev); in i3c_master_set_info()
1792 struct i3c_dev_desc *i3cdev, *i3ctmp; in i3c_master_detach_free_devs() local
1795 list_for_each_entry_safe(i3cdev, i3ctmp, &master->bus.devs.i3c, in i3c_master_detach_free_devs()
1797 i3c_master_detach_i3c_dev(i3cdev); in i3c_master_detach_free_devs()
1799 if (i3cdev->boardinfo && i3cdev->boardinfo->init_dyn_addr) in i3c_master_detach_free_devs()
1801 i3cdev->boardinfo->init_dyn_addr, in i3c_master_detach_free_devs()
1804 i3c_master_free_i3c_dev(i3cdev); in i3c_master_detach_free_devs()
2002 static void i3c_master_attach_boardinfo(struct i3c_dev_desc *i3cdev) in i3c_master_attach_boardinfo() argument
2004 struct i3c_master_controller *master = i3cdev->common.master; in i3c_master_attach_boardinfo()
2008 if (i3cdev->info.pid != i3cboardinfo->pid) in i3c_master_attach_boardinfo()
2011 i3cdev->boardinfo = i3cboardinfo; in i3c_master_attach_boardinfo()
2012 i3cdev->info.static_addr = i3cboardinfo->static_addr; in i3c_master_attach_boardinfo()
2021 struct i3c_dev_desc *i3cdev; in i3c_master_search_i3c_dev_duplicate() local
2023 i3c_bus_for_each_i3cdev(&master->bus, i3cdev) { in i3c_master_search_i3c_dev_duplicate()
2024 if (i3cdev != refdev && i3cdev->info.pid == refdev->info.pid) in i3c_master_search_i3c_dev_duplicate()
2025 return i3cdev; in i3c_master_search_i3c_dev_duplicate()
2535 struct i3c_dev_desc *i3cdev; in i3c_master_unregister_i3c_devs() local
2537 i3c_bus_for_each_i3cdev(&master->bus, i3cdev) { in i3c_master_unregister_i3c_devs()
2538 if (!i3cdev->dev) in i3c_master_unregister_i3c_devs()
2541 i3cdev->dev->desc = NULL; in i3c_master_unregister_i3c_devs()
2542 if (device_is_registered(&i3cdev->dev->dev)) in i3c_master_unregister_i3c_devs()
2543 device_unregister(&i3cdev->dev->dev); in i3c_master_unregister_i3c_devs()
2545 put_device(&i3cdev->dev->dev); in i3c_master_unregister_i3c_devs()
2546 i3cdev->dev = NULL; in i3c_master_unregister_i3c_devs()