Lines Matching refs:i3cbus

99 i3c_bus_to_i3c_master(struct i3c_bus *i3cbus)  in i3c_bus_to_i3c_master()  argument
101 return container_of(i3cbus, struct i3c_master_controller, bus); in i3c_bus_to_i3c_master()
461 static void i3c_bus_cleanup(struct i3c_bus *i3cbus) in i3c_bus_cleanup() argument
464 idr_remove(&i3c_bus_idr, i3cbus->id); in i3c_bus_cleanup()
468 static int i3c_bus_init(struct i3c_bus *i3cbus, struct device_node *np) in i3c_bus_init() argument
472 init_rwsem(&i3cbus->lock); in i3c_bus_init()
473 INIT_LIST_HEAD(&i3cbus->devs.i2c); in i3c_bus_init()
474 INIT_LIST_HEAD(&i3cbus->devs.i3c); in i3c_bus_init()
475 i3c_bus_init_addrslots(i3cbus); in i3c_bus_init()
476 i3cbus->mode = I3C_BUS_MODE_PURE; in i3c_bus_init()
490 ret = idr_alloc(&i3c_bus_idr, i3cbus, start, end, GFP_KERNEL); in i3c_bus_init()
496 i3cbus->id = ret; in i3c_bus_init()
542 struct i3c_bus *i3cbus = dev_to_i3cbus(dev); in mode_show() local
545 i3c_bus_normaluse_lock(i3cbus); in mode_show()
546 if (i3cbus->mode < 0 || in mode_show()
547 i3cbus->mode >= ARRAY_SIZE(i3c_bus_mode_strings) || in mode_show()
548 !i3c_bus_mode_strings[i3cbus->mode]) in mode_show()
551 ret = sprintf(buf, "%s\n", i3c_bus_mode_strings[i3cbus->mode]); in mode_show()
552 i3c_bus_normaluse_unlock(i3cbus); in mode_show()
562 struct i3c_bus *i3cbus = dev_to_i3cbus(dev); in current_master_show() local
565 i3c_bus_normaluse_lock(i3cbus); in current_master_show()
566 ret = sprintf(buf, "%d-%llx\n", i3cbus->id, in current_master_show()
567 i3cbus->cur_master->info.pid); in current_master_show()
568 i3c_bus_normaluse_unlock(i3cbus); in current_master_show()
578 struct i3c_bus *i3cbus = dev_to_i3cbus(dev); in i3c_scl_frequency_show() local
581 i3c_bus_normaluse_lock(i3cbus); in i3c_scl_frequency_show()
582 ret = sprintf(buf, "%ld\n", i3cbus->scl_rate.i3c); in i3c_scl_frequency_show()
583 i3c_bus_normaluse_unlock(i3cbus); in i3c_scl_frequency_show()
593 struct i3c_bus *i3cbus = dev_to_i3cbus(dev); in i2c_scl_frequency_show() local
596 i3c_bus_normaluse_lock(i3cbus); in i2c_scl_frequency_show()
597 ret = sprintf(buf, "%ld\n", i3cbus->scl_rate.i2c); in i2c_scl_frequency_show()
598 i3c_bus_normaluse_unlock(i3cbus); in i2c_scl_frequency_show()
631 struct i3c_bus *i3cbus = dev_to_i3cbus(dev); in hotjoin_store() local
635 if (!i3cbus->cur_master) in hotjoin_store()
641 ret = i3c_set_hotjoin(i3cbus->cur_master->common.master, res); in hotjoin_store()
674 struct i3c_bus *i3cbus = dev_to_i3cbus(dev); in hotjoin_show() local
677 i3c_bus_normaluse_lock(i3cbus); in hotjoin_show()
678 ret = sysfs_emit(buf, "%d\n", i3cbus->cur_master->common.master->hotjoin); in hotjoin_show()
679 i3c_bus_normaluse_unlock(i3cbus); in hotjoin_show()
719 static int i3c_bus_set_mode(struct i3c_bus *i3cbus, enum i3c_bus_mode mode, in i3c_bus_set_mode() argument
722 struct i3c_master_controller *master = i3c_bus_to_i3c_master(i3cbus); in i3c_bus_set_mode()
724 i3cbus->mode = mode; in i3c_bus_set_mode()
726 switch (i3cbus->mode) { in i3c_bus_set_mode()
728 if (!i3cbus->scl_rate.i3c) in i3c_bus_set_mode()
729 i3cbus->scl_rate.i3c = I3C_BUS_I3C_SCL_TYP_RATE; in i3c_bus_set_mode()
733 if (!i3cbus->scl_rate.i3c) in i3c_bus_set_mode()
734 i3cbus->scl_rate.i3c = I3C_BUS_I3C_SCL_TYP_RATE; in i3c_bus_set_mode()
735 if (!i3cbus->scl_rate.i2c) in i3c_bus_set_mode()
736 i3cbus->scl_rate.i2c = max_i2c_scl_rate; in i3c_bus_set_mode()
739 if (!i3cbus->scl_rate.i2c) in i3c_bus_set_mode()
740 i3cbus->scl_rate.i2c = max_i2c_scl_rate; in i3c_bus_set_mode()
741 if (!i3cbus->scl_rate.i3c || in i3c_bus_set_mode()
742 i3cbus->scl_rate.i3c > i3cbus->scl_rate.i2c) in i3c_bus_set_mode()
743 i3cbus->scl_rate.i3c = i3cbus->scl_rate.i2c; in i3c_bus_set_mode()
750 i3cbus->scl_rate.i2c, i3cbus->scl_rate.i3c); in i3c_bus_set_mode()
756 if (i3cbus->scl_rate.i3c > I3C_BUS_I3C_SCL_MAX_RATE || in i3c_bus_set_mode()
757 i3cbus->scl_rate.i2c > I3C_BUS_I2C_FM_PLUS_SCL_MAX_RATE) in i3c_bus_set_mode()
2860 struct i3c_bus *i3cbus = i3c_master_get_bus(master); in i3c_master_register() local
2884 dev_set_name(&master->dev, "i3c-%d", i3cbus->id); in i3c_master_register()
2890 ret = i3c_bus_init(i3cbus, master->dev.of_node); in i3c_master_register()
2921 ret = i3c_bus_set_mode(i3cbus, mode, i2c_scl_rate); in i3c_master_register()
2947 i3c_bus_notify(i3cbus, I3C_NOTIFY_BUS_ADD); in i3c_master_register()