Lines Matching refs:master

113 	struct i3c_master_controller *master;  in dev_to_i3cbus()  local
118 master = dev_to_i3cmaster(dev); in dev_to_i3cbus()
120 return &master->bus; in dev_to_i3cbus()
125 struct i3c_master_controller *master; in dev_to_i3cdesc() local
130 master = dev_to_i3cmaster(dev); in dev_to_i3cdesc()
132 return master->this; in dev_to_i3cdesc()
604 static int i3c_set_hotjoin(struct i3c_master_controller *master, bool enable) in i3c_set_hotjoin() argument
608 if (!master || !master->ops) in i3c_set_hotjoin()
611 if (!master->ops->enable_hotjoin || !master->ops->disable_hotjoin) in i3c_set_hotjoin()
614 i3c_bus_normaluse_lock(&master->bus); in i3c_set_hotjoin()
617 ret = master->ops->enable_hotjoin(master); in i3c_set_hotjoin()
619 ret = master->ops->disable_hotjoin(master); in i3c_set_hotjoin()
621 master->hotjoin = enable; in i3c_set_hotjoin()
623 i3c_bus_normaluse_unlock(&master->bus); in i3c_set_hotjoin()
641 ret = i3c_set_hotjoin(i3cbus->cur_master->common.master, res); in hotjoin_store()
654 int i3c_master_enable_hotjoin(struct i3c_master_controller *master) in i3c_master_enable_hotjoin() argument
656 return i3c_set_hotjoin(master, true); in i3c_master_enable_hotjoin()
666 int i3c_master_disable_hotjoin(struct i3c_master_controller *master) in i3c_master_disable_hotjoin() argument
668 return i3c_set_hotjoin(master, false); in i3c_master_disable_hotjoin()
678 ret = sysfs_emit(buf, "%d\n", i3cbus->cur_master->common.master->hotjoin); in hotjoin_show()
703 struct i3c_master_controller *master = dev_to_i3cmaster(dev); in i3c_masterdev_release() local
706 if (master->wq) in i3c_masterdev_release()
707 destroy_workqueue(master->wq); in i3c_masterdev_release()
722 struct i3c_master_controller *master = i3c_bus_to_i3c_master(i3cbus); in i3c_bus_set_mode() local
749 dev_dbg(&master->dev, "i2c-scl = %ld Hz i3c-scl = %ld Hz\n", in i3c_bus_set_mode()
770 i3c_master_to_i2c_adapter(struct i3c_master_controller *master) in i3c_master_to_i2c_adapter() argument
772 return &master->i2c; in i3c_master_to_i2c_adapter()
781 i3c_master_alloc_i2c_dev(struct i3c_master_controller *master, in i3c_master_alloc_i2c_dev() argument
790 dev->common.master = master; in i3c_master_alloc_i2c_dev()
826 static int i3c_master_send_ccc_cmd_locked(struct i3c_master_controller *master, in i3c_master_send_ccc_cmd_locked() argument
831 if (!cmd || !master) in i3c_master_send_ccc_cmd_locked()
834 if (WARN_ON(master->init_done && in i3c_master_send_ccc_cmd_locked()
835 !rwsem_is_locked(&master->bus.lock))) in i3c_master_send_ccc_cmd_locked()
838 if (!master->ops->send_ccc_cmd) in i3c_master_send_ccc_cmd_locked()
844 if (master->ops->supports_ccc_cmd && in i3c_master_send_ccc_cmd_locked()
845 !master->ops->supports_ccc_cmd(master, cmd)) in i3c_master_send_ccc_cmd_locked()
848 ret = master->ops->send_ccc_cmd(master, cmd); in i3c_master_send_ccc_cmd_locked()
860 i3c_master_find_i2c_dev_by_addr(const struct i3c_master_controller *master, in i3c_master_find_i2c_dev_by_addr() argument
865 i3c_bus_for_each_i2cdev(&master->bus, dev) { in i3c_master_find_i2c_dev_by_addr()
883 int i3c_master_get_free_addr(struct i3c_master_controller *master, in i3c_master_get_free_addr() argument
886 return i3c_bus_get_free_addr(&master->bus, start_addr); in i3c_master_get_free_addr()
906 i3c_master_alloc_i3c_dev(struct i3c_master_controller *master, in i3c_master_alloc_i3c_dev() argument
915 dev->common.master = master; in i3c_master_alloc_i3c_dev()
922 static int i3c_master_rstdaa_locked(struct i3c_master_controller *master, in i3c_master_rstdaa_locked() argument
930 if (!master) in i3c_master_rstdaa_locked()
933 addrstat = i3c_bus_get_addr_slot_status(&master->bus, addr); in i3c_master_rstdaa_locked()
941 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_rstdaa_locked()
963 int i3c_master_entdaa_locked(struct i3c_master_controller *master) in i3c_master_entdaa_locked() argument
971 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_entdaa_locked()
978 static int i3c_master_enec_disec_locked(struct i3c_master_controller *master, in i3c_master_enec_disec_locked() argument
996 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_enec_disec_locked()
1016 int i3c_master_disec_locked(struct i3c_master_controller *master, u8 addr, in i3c_master_disec_locked() argument
1019 return i3c_master_enec_disec_locked(master, addr, false, evts); in i3c_master_disec_locked()
1037 int i3c_master_enec_locked(struct i3c_master_controller *master, u8 addr, in i3c_master_enec_locked() argument
1040 return i3c_master_enec_disec_locked(master, addr, true, evts); in i3c_master_enec_locked()
1063 int i3c_master_defslvs_locked(struct i3c_master_controller *master) in i3c_master_defslvs_locked() argument
1075 if (!master) in i3c_master_defslvs_locked()
1078 bus = i3c_master_get_bus(master); in i3c_master_defslvs_locked()
1082 if (i3cdev == master->this) in i3c_master_defslvs_locked()
1104 defslvs->master.bcr = master->this->info.bcr; in i3c_master_defslvs_locked()
1105 defslvs->master.dcr = master->this->info.dcr; in i3c_master_defslvs_locked()
1106 defslvs->master.dyn_addr = master->this->info.dyn_addr << 1; in i3c_master_defslvs_locked()
1107 defslvs->master.static_addr = I3C_BROADCAST_ADDR << 1; in i3c_master_defslvs_locked()
1118 if (i3cdev == master->this) in i3c_master_defslvs_locked()
1129 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_defslvs_locked()
1136 static int i3c_master_setda_locked(struct i3c_master_controller *master, in i3c_master_setda_locked() argument
1155 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_setda_locked()
1161 static int i3c_master_setdasa_locked(struct i3c_master_controller *master, in i3c_master_setdasa_locked() argument
1164 return i3c_master_setda_locked(master, static_addr, dyn_addr, true); in i3c_master_setdasa_locked()
1167 static int i3c_master_setnewda_locked(struct i3c_master_controller *master, in i3c_master_setnewda_locked() argument
1170 return i3c_master_setda_locked(master, oldaddr, newaddr, false); in i3c_master_setnewda_locked()
1173 static int i3c_master_getmrl_locked(struct i3c_master_controller *master, in i3c_master_getmrl_locked() argument
1193 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_getmrl_locked()
1215 static int i3c_master_getmwl_locked(struct i3c_master_controller *master, in i3c_master_getmwl_locked() argument
1228 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_getmwl_locked()
1245 static int i3c_master_getmxds_locked(struct i3c_master_controller *master, in i3c_master_getmxds_locked() argument
1259 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_getmxds_locked()
1266 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_getmxds_locked()
1289 static int i3c_master_gethdrcap_locked(struct i3c_master_controller *master, in i3c_master_gethdrcap_locked() argument
1303 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_gethdrcap_locked()
1320 static int i3c_master_getpid_locked(struct i3c_master_controller *master, in i3c_master_getpid_locked() argument
1333 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_getpid_locked()
1350 static int i3c_master_getbcr_locked(struct i3c_master_controller *master, in i3c_master_getbcr_locked() argument
1363 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_getbcr_locked()
1375 static int i3c_master_getdcr_locked(struct i3c_master_controller *master, in i3c_master_getdcr_locked() argument
1388 ret = i3c_master_send_ccc_cmd_locked(master, &cmd); in i3c_master_getdcr_locked()
1402 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_master_retrieve_dev_info() local
1409 slot_status = i3c_bus_get_addr_slot_status(&master->bus, in i3c_master_retrieve_dev_info()
1415 ret = i3c_master_getpid_locked(master, &dev->info); in i3c_master_retrieve_dev_info()
1419 ret = i3c_master_getbcr_locked(master, &dev->info); in i3c_master_retrieve_dev_info()
1423 ret = i3c_master_getdcr_locked(master, &dev->info); in i3c_master_retrieve_dev_info()
1428 ret = i3c_master_getmxds_locked(master, &dev->info); in i3c_master_retrieve_dev_info()
1436 i3c_master_getmrl_locked(master, &dev->info); in i3c_master_retrieve_dev_info()
1437 i3c_master_getmwl_locked(master, &dev->info); in i3c_master_retrieve_dev_info()
1440 ret = i3c_master_gethdrcap_locked(master, &dev->info); in i3c_master_retrieve_dev_info()
1450 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_master_put_i3c_addrs() local
1453 i3c_bus_set_addr_slot_status(&master->bus, in i3c_master_put_i3c_addrs()
1458 i3c_bus_set_addr_slot_status(&master->bus, dev->info.dyn_addr, in i3c_master_put_i3c_addrs()
1462 i3c_bus_set_addr_slot_status(&master->bus, dev->boardinfo->init_dyn_addr, in i3c_master_put_i3c_addrs()
1468 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_master_get_i3c_addrs() local
1475 status = i3c_bus_get_addr_slot_status(&master->bus, in i3c_master_get_i3c_addrs()
1484 i3c_bus_set_addr_slot_status(&master->bus, in i3c_master_get_i3c_addrs()
1497 status = i3c_bus_get_addr_slot_status(&master->bus, in i3c_master_get_i3c_addrs()
1502 i3c_bus_set_addr_slot_status(&master->bus, dev->info.dyn_addr, in i3c_master_get_i3c_addrs()
1510 i3c_bus_set_addr_slot_status(&master->bus, in i3c_master_get_i3c_addrs()
1517 static int i3c_master_attach_i3c_dev(struct i3c_master_controller *master, in i3c_master_attach_i3c_dev() argument
1534 if (master->this != dev && master->ops->attach_i3c_dev) { in i3c_master_attach_i3c_dev()
1535 ret = master->ops->attach_i3c_dev(dev); in i3c_master_attach_i3c_dev()
1542 list_add_tail(&dev->common.node, &master->bus.devs.i3c); in i3c_master_attach_i3c_dev()
1550 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_master_reattach_i3c_dev() local
1554 i3c_bus_set_addr_slot_status(&master->bus, in i3c_master_reattach_i3c_dev()
1558 i3c_bus_set_addr_slot_status(&master->bus, old_dyn_addr, in i3c_master_reattach_i3c_dev()
1562 if (master->ops->reattach_i3c_dev) { in i3c_master_reattach_i3c_dev()
1563 ret = master->ops->reattach_i3c_dev(dev, old_dyn_addr); in i3c_master_reattach_i3c_dev()
1575 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_master_detach_i3c_dev() local
1578 if (master->this != dev && master->ops->detach_i3c_dev) in i3c_master_detach_i3c_dev()
1579 master->ops->detach_i3c_dev(dev); in i3c_master_detach_i3c_dev()
1585 static int i3c_master_attach_i2c_dev(struct i3c_master_controller *master, in i3c_master_attach_i2c_dev() argument
1590 if (master->ops->attach_i2c_dev) { in i3c_master_attach_i2c_dev()
1591 ret = master->ops->attach_i2c_dev(dev); in i3c_master_attach_i2c_dev()
1596 list_add_tail(&dev->common.node, &master->bus.devs.i2c); in i3c_master_attach_i2c_dev()
1603 struct i3c_master_controller *master = i2c_dev_get_master(dev); in i3c_master_detach_i2c_dev() local
1607 if (master->ops->detach_i2c_dev) in i3c_master_detach_i2c_dev()
1608 master->ops->detach_i2c_dev(dev); in i3c_master_detach_i2c_dev()
1611 static int i3c_master_early_i3c_dev_add(struct i3c_master_controller *master, in i3c_master_early_i3c_dev_add() argument
1621 i3cdev = i3c_master_alloc_i3c_dev(master, &info); in i3c_master_early_i3c_dev_add()
1627 ret = i3c_master_attach_i3c_dev(master, i3cdev); in i3c_master_early_i3c_dev_add()
1631 ret = i3c_master_setdasa_locked(master, i3cdev->info.static_addr, in i3c_master_early_i3c_dev_add()
1648 i3c_master_rstdaa_locked(master, i3cdev->boardinfo->init_dyn_addr); in i3c_master_early_i3c_dev_add()
1658 i3c_master_register_new_i3c_devs(struct i3c_master_controller *master) in i3c_master_register_new_i3c_devs() argument
1663 if (!master->init_done) in i3c_master_register_new_i3c_devs()
1666 i3c_bus_for_each_i3cdev(&master->bus, desc) { in i3c_master_register_new_i3c_devs()
1667 if (desc->dev || !desc->info.dyn_addr || desc == master->this) in i3c_master_register_new_i3c_devs()
1674 desc->dev->bus = &master->bus; in i3c_master_register_new_i3c_devs()
1676 desc->dev->dev.parent = &master->dev; in i3c_master_register_new_i3c_devs()
1680 dev_set_name(&desc->dev->dev, "%d-%llx", master->bus.id, in i3c_master_register_new_i3c_devs()
1688 dev_err(&master->dev, in i3c_master_register_new_i3c_devs()
1710 int i3c_master_do_daa(struct i3c_master_controller *master) in i3c_master_do_daa() argument
1714 i3c_bus_maintenance_lock(&master->bus); in i3c_master_do_daa()
1715 ret = master->ops->do_daa(master); in i3c_master_do_daa()
1716 i3c_bus_maintenance_unlock(&master->bus); in i3c_master_do_daa()
1721 i3c_bus_normaluse_lock(&master->bus); in i3c_master_do_daa()
1722 i3c_master_register_new_i3c_devs(master); in i3c_master_do_daa()
1723 i3c_bus_normaluse_unlock(&master->bus); in i3c_master_do_daa()
1825 int i3c_master_set_info(struct i3c_master_controller *master, in i3c_master_set_info() argument
1831 if (!i3c_bus_dev_addr_is_avail(&master->bus, info->dyn_addr)) in i3c_master_set_info()
1835 master->secondary) in i3c_master_set_info()
1838 if (master->this) in i3c_master_set_info()
1841 i3cdev = i3c_master_alloc_i3c_dev(master, info); in i3c_master_set_info()
1845 master->this = i3cdev; in i3c_master_set_info()
1846 master->bus.cur_master = master->this; in i3c_master_set_info()
1848 ret = i3c_master_attach_i3c_dev(master, i3cdev); in i3c_master_set_info()
1861 static void i3c_master_detach_free_devs(struct i3c_master_controller *master) in i3c_master_detach_free_devs() argument
1866 list_for_each_entry_safe(i3cdev, i3ctmp, &master->bus.devs.i3c, in i3c_master_detach_free_devs()
1871 i3c_bus_set_addr_slot_status(&master->bus, in i3c_master_detach_free_devs()
1878 list_for_each_entry_safe(i2cdev, i2ctmp, &master->bus.devs.i2c, in i3c_master_detach_free_devs()
1881 i3c_bus_set_addr_slot_status(&master->bus, in i3c_master_detach_free_devs()
1920 static int i3c_master_bus_init(struct i3c_master_controller *master) in i3c_master_bus_init() argument
1932 list_for_each_entry(i2cboardinfo, &master->boardinfo.i2c, node) { in i3c_master_bus_init()
1933 status = i3c_bus_get_addr_slot_status(&master->bus, in i3c_master_bus_init()
1940 i3c_bus_set_addr_slot_status(&master->bus, in i3c_master_bus_init()
1944 i2cdev = i3c_master_alloc_i2c_dev(master, in i3c_master_bus_init()
1952 ret = i3c_master_attach_i2c_dev(master, i2cdev); in i3c_master_bus_init()
1963 ret = master->ops->bus_init(master); in i3c_master_bus_init()
1971 if (!master->this) { in i3c_master_bus_init()
1972 dev_err(&master->dev, in i3c_master_bus_init()
1978 if (master->ops->set_speed) { in i3c_master_bus_init()
1979 ret = master->ops->set_speed(master, I3C_OPEN_DRAIN_SLOW_SPEED); in i3c_master_bus_init()
1988 ret = i3c_master_rstdaa_locked(master, I3C_BROADCAST_ADDR); in i3c_master_bus_init()
1992 if (master->ops->set_speed) { in i3c_master_bus_init()
1993 ret = master->ops->set_speed(master, I3C_OPEN_DRAIN_NORMAL_SPEED); in i3c_master_bus_init()
1999 ret = i3c_master_disec_locked(master, I3C_BROADCAST_ADDR, in i3c_master_bus_init()
2012 list_for_each_entry(i3cboardinfo, &master->boardinfo.i3c, node) { in i3c_master_bus_init()
2021 ret = i3c_bus_get_addr_slot_status(&master->bus, in i3c_master_bus_init()
2029 i3c_bus_set_addr_slot_status_mask(&master->bus, in i3c_master_bus_init()
2043 i3c_master_early_i3c_dev_add(master, i3cboardinfo); in i3c_master_bus_init()
2046 ret = i3c_master_do_daa(master); in i3c_master_bus_init()
2053 i3c_master_rstdaa_locked(master, I3C_BROADCAST_ADDR); in i3c_master_bus_init()
2056 if (master->ops->bus_cleanup) in i3c_master_bus_init()
2057 master->ops->bus_cleanup(master); in i3c_master_bus_init()
2060 i3c_master_detach_free_devs(master); in i3c_master_bus_init()
2065 static void i3c_master_bus_cleanup(struct i3c_master_controller *master) in i3c_master_bus_cleanup() argument
2067 if (master->ops->bus_cleanup) in i3c_master_bus_cleanup()
2068 master->ops->bus_cleanup(master); in i3c_master_bus_cleanup()
2070 i3c_master_detach_free_devs(master); in i3c_master_bus_cleanup()
2075 struct i3c_master_controller *master = i3cdev->common.master; in i3c_master_attach_boardinfo() local
2078 list_for_each_entry(i3cboardinfo, &master->boardinfo.i3c, node) { in i3c_master_attach_boardinfo()
2091 struct i3c_master_controller *master = i3c_dev_get_master(refdev); in i3c_master_search_i3c_dev_duplicate() local
2094 i3c_bus_for_each_i3cdev(&master->bus, i3cdev) { in i3c_master_search_i3c_dev_duplicate()
2118 int i3c_master_add_i3c_dev_locked(struct i3c_master_controller *master, in i3c_master_add_i3c_dev_locked() argument
2128 if (!master) in i3c_master_add_i3c_dev_locked()
2131 newdev = i3c_master_alloc_i3c_dev(master, &info); in i3c_master_add_i3c_dev_locked()
2135 ret = i3c_master_attach_i3c_dev(master, newdev); in i3c_master_add_i3c_dev_locked()
2201 i3c_bus_get_addr_slot_status(&master->bus, expected_dyn_addr) == I3C_ADDR_SLOT_FREE) { in i3c_master_add_i3c_dev_locked()
2206 ret = i3c_master_setnewda_locked(master, in i3c_master_add_i3c_dev_locked()
2214 dev_err(&master->dev, in i3c_master_add_i3c_dev_locked()
2216 master->bus.id, newdev->info.pid); in i3c_master_add_i3c_dev_locked()
2231 dev_err(&master->dev, in i3c_master_add_i3c_dev_locked()
2233 master->bus.id, newdev->info.pid); in i3c_master_add_i3c_dev_locked()
2237 dev_err(&master->dev, in i3c_master_add_i3c_dev_locked()
2239 master->bus.id, newdev->info.pid); in i3c_master_add_i3c_dev_locked()
2262 of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master, in of_i3c_master_add_i2c_boardinfo() argument
2266 struct device *dev = &master->dev; in of_i3c_master_add_i2c_boardinfo()
2290 list_add_tail(&boardinfo->node, &master->boardinfo.i2c); in of_i3c_master_add_i2c_boardinfo()
2297 of_i3c_master_add_i3c_boardinfo(struct i3c_master_controller *master, in of_i3c_master_add_i3c_boardinfo() argument
2301 struct device *dev = &master->dev; in of_i3c_master_add_i3c_boardinfo()
2313 addrstatus = i3c_bus_get_addr_slot_status(&master->bus, in of_i3c_master_add_i3c_boardinfo()
2325 addrstatus = i3c_bus_get_addr_slot_status(&master->bus, in of_i3c_master_add_i3c_boardinfo()
2339 list_add_tail(&boardinfo->node, &master->boardinfo.i3c); in of_i3c_master_add_i3c_boardinfo()
2344 static int of_i3c_master_add_dev(struct i3c_master_controller *master, in of_i3c_master_add_dev() argument
2350 if (!master) in of_i3c_master_add_dev()
2362 ret = of_i3c_master_add_i2c_boardinfo(master, node, reg); in of_i3c_master_add_dev()
2364 ret = of_i3c_master_add_i3c_boardinfo(master, node, reg); in of_i3c_master_add_dev()
2369 static int of_populate_i3c_bus(struct i3c_master_controller *master) in of_populate_i3c_bus() argument
2371 struct device *dev = &master->dev; in of_populate_i3c_bus()
2381 ret = of_i3c_master_add_dev(master, node); in of_populate_i3c_bus()
2394 master->bus.scl_rate.i2c = val; in of_populate_i3c_bus()
2397 master->bus.scl_rate.i3c = val; in of_populate_i3c_bus()
2405 struct i3c_master_controller *master = i2c_adapter_to_i3c_master(adap); in i3c_master_i2c_adapter_xfer() local
2410 if (!xfers || !master || nxfers <= 0) in i3c_master_i2c_adapter_xfer()
2413 if (!master->ops->i2c_xfers) in i3c_master_i2c_adapter_xfer()
2423 i3c_bus_normaluse_lock(&master->bus); in i3c_master_i2c_adapter_xfer()
2424 dev = i3c_master_find_i2c_dev_by_addr(master, addr); in i3c_master_i2c_adapter_xfer()
2428 ret = master->ops->i2c_xfers(dev, xfers, nxfers); in i3c_master_i2c_adapter_xfer()
2429 i3c_bus_normaluse_unlock(&master->bus); in i3c_master_i2c_adapter_xfer()
2453 struct i3c_master_controller *master = i2c_adapter_to_i3c_master(adap); in i3c_master_i2c_attach() local
2459 if (i3c_master_find_i2c_dev_by_addr(master, client->addr)) in i3c_master_i2c_attach()
2462 status = i3c_bus_get_addr_slot_status(&master->bus, client->addr); in i3c_master_i2c_attach()
2466 i3c_bus_set_addr_slot_status(&master->bus, client->addr, in i3c_master_i2c_attach()
2469 i2cdev = i3c_master_alloc_i2c_dev(master, client->addr, in i3c_master_i2c_attach()
2476 ret = i3c_master_attach_i2c_dev(master, i2cdev); in i3c_master_i2c_attach()
2485 i3c_bus_set_addr_slot_status(&master->bus, client->addr, in i3c_master_i2c_attach()
2493 struct i3c_master_controller *master = i2c_adapter_to_i3c_master(adap); in i3c_master_i2c_detach() local
2496 dev = i3c_master_find_i2c_dev_by_addr(master, client->addr); in i3c_master_i2c_detach()
2501 i3c_bus_set_addr_slot_status(&master->bus, dev->addr, in i3c_master_i2c_detach()
2519 struct i3c_master_controller *master; in i3c_i2c_notifier_call() local
2531 master = i2c_adapter_to_i3c_master(adap); in i3c_i2c_notifier_call()
2533 i3c_bus_maintenance_lock(&master->bus); in i3c_i2c_notifier_call()
2544 i3c_bus_maintenance_unlock(&master->bus); in i3c_i2c_notifier_call()
2553 static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master) in i3c_master_i2c_adapter_init() argument
2555 struct i2c_adapter *adap = i3c_master_to_i2c_adapter(master); in i3c_master_i2c_adapter_init()
2560 adap->dev.parent = master->dev.parent; in i3c_master_i2c_adapter_init()
2561 adap->owner = master->dev.parent->driver->owner; in i3c_master_i2c_adapter_init()
2563 strscpy(adap->name, dev_name(master->dev.parent), sizeof(adap->name)); in i3c_master_i2c_adapter_init()
2567 id = of_alias_get_id(master->dev.of_node, "i2c"); in i3c_master_i2c_adapter_init()
2581 list_for_each_entry(i2cboardinfo, &master->boardinfo.i2c, node) { in i3c_master_i2c_adapter_init()
2582 i2cdev = i3c_master_find_i2c_dev_by_addr(master, in i3c_master_i2c_adapter_init()
2592 static void i3c_master_i2c_adapter_cleanup(struct i3c_master_controller *master) in i3c_master_i2c_adapter_cleanup() argument
2596 i2c_del_adapter(&master->i2c); in i3c_master_i2c_adapter_cleanup()
2598 i3c_bus_for_each_i2cdev(&master->bus, i2cdev) in i3c_master_i2c_adapter_cleanup()
2602 static void i3c_master_unregister_i3c_devs(struct i3c_master_controller *master) in i3c_master_unregister_i3c_devs() argument
2606 i3c_bus_for_each_i3cdev(&master->bus, i3cdev) { in i3c_master_unregister_i3c_devs()
2642 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_master_handle_ibi() local
2651 master->ops->recycle_ibi_slot(dev, slot); in i3c_master_handle_ibi()
2854 int i3c_master_register(struct i3c_master_controller *master, in i3c_master_register() argument
2860 struct i3c_bus *i3cbus = i3c_master_get_bus(master); in i3c_master_register()
2873 master->dev.parent = parent; in i3c_master_register()
2874 master->dev.of_node = of_node_get(parent->of_node); in i3c_master_register()
2875 master->dev.bus = &i3c_bus_type; in i3c_master_register()
2876 master->dev.type = &i3c_masterdev_type; in i3c_master_register()
2877 master->dev.release = i3c_masterdev_release; in i3c_master_register()
2878 master->ops = ops; in i3c_master_register()
2879 master->secondary = secondary; in i3c_master_register()
2880 INIT_LIST_HEAD(&master->boardinfo.i2c); in i3c_master_register()
2881 INIT_LIST_HEAD(&master->boardinfo.i3c); in i3c_master_register()
2883 device_initialize(&master->dev); in i3c_master_register()
2884 dev_set_name(&master->dev, "i3c-%d", i3cbus->id); in i3c_master_register()
2886 master->dev.dma_mask = parent->dma_mask; in i3c_master_register()
2887 master->dev.coherent_dma_mask = parent->coherent_dma_mask; in i3c_master_register()
2888 master->dev.dma_parms = parent->dma_parms; in i3c_master_register()
2890 ret = i3c_bus_init(i3cbus, master->dev.of_node); in i3c_master_register()
2894 ret = of_populate_i3c_bus(master); in i3c_master_register()
2898 list_for_each_entry(i2cbi, &master->boardinfo.i2c, node) { in i3c_master_register()
2925 master->wq = alloc_workqueue("%s", WQ_PERCPU, 0, dev_name(parent)); in i3c_master_register()
2926 if (!master->wq) { in i3c_master_register()
2931 ret = i3c_master_bus_init(master); in i3c_master_register()
2935 ret = device_add(&master->dev); in i3c_master_register()
2943 ret = i3c_master_i2c_adapter_init(master); in i3c_master_register()
2949 pm_runtime_no_callbacks(&master->dev); in i3c_master_register()
2950 pm_suspend_ignore_children(&master->dev, true); in i3c_master_register()
2951 pm_runtime_enable(&master->dev); in i3c_master_register()
2957 master->init_done = true; in i3c_master_register()
2958 i3c_bus_normaluse_lock(&master->bus); in i3c_master_register()
2959 i3c_master_register_new_i3c_devs(master); in i3c_master_register()
2960 i3c_bus_normaluse_unlock(&master->bus); in i3c_master_register()
2965 device_del(&master->dev); in i3c_master_register()
2968 i3c_master_bus_cleanup(master); in i3c_master_register()
2971 put_device(&master->dev); in i3c_master_register()
2983 void i3c_master_unregister(struct i3c_master_controller *master) in i3c_master_unregister() argument
2985 i3c_bus_notify(&master->bus, I3C_NOTIFY_BUS_REMOVE); in i3c_master_unregister()
2987 i3c_master_i2c_adapter_cleanup(master); in i3c_master_unregister()
2988 i3c_master_unregister_i3c_devs(master); in i3c_master_unregister()
2989 i3c_master_bus_cleanup(master); in i3c_master_unregister()
2990 pm_runtime_disable(&master->dev); in i3c_master_unregister()
2991 device_unregister(&master->dev); in i3c_master_unregister()
2997 struct i3c_master_controller *master; in i3c_dev_setdasa_locked() local
3002 master = i3c_dev_get_master(dev); in i3c_dev_setdasa_locked()
3003 if (!master) in i3c_dev_setdasa_locked()
3010 return i3c_master_setdasa_locked(master, dev->info.static_addr, in i3c_dev_setdasa_locked()
3017 struct i3c_master_controller *master; in i3c_dev_do_xfers_locked() local
3022 master = i3c_dev_get_master(dev); in i3c_dev_do_xfers_locked()
3023 if (!master || !xfers) in i3c_dev_do_xfers_locked()
3026 if (mode != I3C_SDR && !(master->this->info.hdr_cap & BIT(mode))) in i3c_dev_do_xfers_locked()
3029 return master->ops->i3c_xfers(dev, xfers, nxfers, mode); in i3c_dev_do_xfers_locked()
3034 struct i3c_master_controller *master; in i3c_dev_disable_ibi_locked() local
3040 master = i3c_dev_get_master(dev); in i3c_dev_disable_ibi_locked()
3041 ret = master->ops->disable_ibi(dev); in i3c_dev_disable_ibi_locked()
3056 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_dev_enable_ibi_locked() local
3062 ret = master->ops->enable_ibi(dev); in i3c_dev_enable_ibi_locked()
3072 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_dev_request_ibi_locked() local
3076 if (!master->ops->request_ibi) in i3c_dev_request_ibi_locked()
3099 ret = master->ops->request_ibi(dev, req); in i3c_dev_request_ibi_locked()
3110 struct i3c_master_controller *master = i3c_dev_get_master(dev); in i3c_dev_free_ibi_locked() local
3118 master->ops->free_ibi(dev); in i3c_dev_free_ibi_locked()