Lines Matching refs:i3cdev

278 	struct i3c_device *i3cdev = dev_to_i3cdev(dev);
282 i3c_device_get_info(i3cdev, &devinfo);
303 struct i3c_device *i3cdev;
309 i3cdev = dev_to_i3cdev(dev);
311 if (i3c_device_match_id(i3cdev, i3cdrv->id_table))
319 struct i3c_device *i3cdev = dev_to_i3cdev(dev);
322 return driver->probe(i3cdev);
327 struct i3c_device *i3cdev = dev_to_i3cdev(dev);
331 ret = driver->remove(i3cdev);
335 i3c_device_free_ibi(i3cdev);
726 struct i3c_device *i3cdev = dev_to_i3cdev(dev);
728 WARN_ON(i3cdev->desc);
730 of_node_put(i3cdev->dev.of_node);
731 kfree(i3cdev);
902 struct i3c_dev_desc *i3cdev;
913 i3c_bus_for_each_i3cdev(bus, i3cdev) {
916 if (i3cdev == master->this)
919 if (I3C_BCR_DEVICE_ROLE(i3cdev->info.bcr) ==
950 i3c_bus_for_each_i3cdev(bus, i3cdev) {
952 if (i3cdev == master->this)
955 desc->bcr = i3cdev->info.bcr;
956 desc->dcr = i3cdev->info.dcr;
957 desc->dyn_addr = i3cdev->info.dyn_addr << 1;
958 desc->static_addr = i3cdev->info.static_addr << 1;
1443 struct i3c_dev_desc *i3cdev;
1446 i3cdev = i3c_master_alloc_i3c_dev(master, &info);
1447 if (IS_ERR(i3cdev))
1450 i3cdev->boardinfo = boardinfo;
1452 ret = i3c_master_attach_i3c_dev(master, i3cdev);
1456 ret = i3c_master_setdasa_locked(master, i3cdev->info.static_addr,
1457 i3cdev->boardinfo->init_dyn_addr);
1461 i3cdev->info.dyn_addr = i3cdev->boardinfo->init_dyn_addr;
1462 ret = i3c_master_reattach_i3c_dev(i3cdev, 0);
1466 ret = i3c_master_retrieve_dev_info(i3cdev);
1473 i3c_master_rstdaa_locked(master, i3cdev->boardinfo->init_dyn_addr);
1475 i3c_master_detach_i3c_dev(i3cdev);
1477 i3c_master_free_i3c_dev(i3cdev);
1581 struct i3c_dev_desc *i3cdev;
1594 i3cdev = i3c_master_alloc_i3c_dev(master, info);
1595 if (IS_ERR(i3cdev))
1596 return PTR_ERR(i3cdev);
1598 master->this = i3cdev;
1601 ret = i3c_master_attach_i3c_dev(master, i3cdev);
1608 i3c_master_free_i3c_dev(i3cdev);
1616 struct i3c_dev_desc *i3cdev, *i3ctmp;
1619 list_for_each_entry_safe(i3cdev, i3ctmp, &master->bus.devs.i3c,
1621 i3c_master_detach_i3c_dev(i3cdev);
1623 if (i3cdev->boardinfo && i3cdev->boardinfo->init_dyn_addr)
1625 i3cdev->boardinfo->init_dyn_addr,
1628 i3c_master_free_i3c_dev(i3cdev);
1810 static void i3c_master_attach_boardinfo(struct i3c_dev_desc *i3cdev)
1812 struct i3c_master_controller *master = i3cdev->common.master;
1816 if (i3cdev->info.pid != i3cboardinfo->pid)
1819 i3cdev->boardinfo = i3cboardinfo;
1820 i3cdev->info.static_addr = i3cboardinfo->static_addr;
1829 struct i3c_dev_desc *i3cdev;
1831 i3c_bus_for_each_i3cdev(&master->bus, i3cdev) {
1832 if (i3cdev != refdev && i3cdev->info.pid == refdev->info.pid)
1833 return i3cdev;
2220 struct i3c_dev_desc *i3cdev;
2222 i3c_bus_for_each_i3cdev(&master->bus, i3cdev) {
2223 if (!i3cdev->dev)
2226 i3cdev->dev->desc = NULL;
2227 if (device_is_registered(&i3cdev->dev->dev))
2228 device_unregister(&i3cdev->dev->dev);
2230 put_device(&i3cdev->dev->dev);
2231 i3cdev->dev = NULL;