Lines Matching defs:i3cbus

97 i3c_bus_to_i3c_master(struct i3c_bus *i3cbus)
99 return container_of(i3cbus, struct i3c_master_controller, bus);
417 static void i3c_bus_cleanup(struct i3c_bus *i3cbus)
420 idr_remove(&i3c_bus_idr, i3cbus->id);
424 static int i3c_bus_init(struct i3c_bus *i3cbus, struct device_node *np)
428 init_rwsem(&i3cbus->lock);
429 INIT_LIST_HEAD(&i3cbus->devs.i2c);
430 INIT_LIST_HEAD(&i3cbus->devs.i3c);
431 i3c_bus_init_addrslots(i3cbus);
432 i3cbus->mode = I3C_BUS_MODE_PURE;
446 ret = idr_alloc(&i3c_bus_idr, i3cbus, start, end, GFP_KERNEL);
452 i3cbus->id = ret;
498 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
501 i3c_bus_normaluse_lock(i3cbus);
502 if (i3cbus->mode < 0 ||
503 i3cbus->mode >= ARRAY_SIZE(i3c_bus_mode_strings) ||
504 !i3c_bus_mode_strings[i3cbus->mode])
507 ret = sprintf(buf, "%s\n", i3c_bus_mode_strings[i3cbus->mode]);
508 i3c_bus_normaluse_unlock(i3cbus);
518 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
521 i3c_bus_normaluse_lock(i3cbus);
522 ret = sprintf(buf, "%d-%llx\n", i3cbus->id,
523 i3cbus->cur_master->info.pid);
524 i3c_bus_normaluse_unlock(i3cbus);
534 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
537 i3c_bus_normaluse_lock(i3cbus);
538 ret = sprintf(buf, "%ld\n", i3cbus->scl_rate.i3c);
539 i3c_bus_normaluse_unlock(i3cbus);
549 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
552 i3c_bus_normaluse_lock(i3cbus);
553 ret = sprintf(buf, "%ld\n", i3cbus->scl_rate.i2c);
554 i3c_bus_normaluse_unlock(i3cbus);
587 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
591 if (!i3cbus->cur_master)
597 ret = i3c_set_hotjoin(i3cbus->cur_master->common.master, res);
630 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
633 i3c_bus_normaluse_lock(i3cbus);
634 ret = sysfs_emit(buf, "%d\n", i3cbus->cur_master->common.master->hotjoin);
635 i3c_bus_normaluse_unlock(i3cbus);
675 static int i3c_bus_set_mode(struct i3c_bus *i3cbus, enum i3c_bus_mode mode,
678 struct i3c_master_controller *master = i3c_bus_to_i3c_master(i3cbus);
680 i3cbus->mode = mode;
682 switch (i3cbus->mode) {
684 if (!i3cbus->scl_rate.i3c)
685 i3cbus->scl_rate.i3c = I3C_BUS_TYP_I3C_SCL_RATE;
689 if (!i3cbus->scl_rate.i3c)
690 i3cbus->scl_rate.i3c = I3C_BUS_TYP_I3C_SCL_RATE;
691 if (!i3cbus->scl_rate.i2c)
692 i3cbus->scl_rate.i2c = max_i2c_scl_rate;
695 if (!i3cbus->scl_rate.i2c)
696 i3cbus->scl_rate.i2c = max_i2c_scl_rate;
697 if (!i3cbus->scl_rate.i3c ||
698 i3cbus->scl_rate.i3c > i3cbus->scl_rate.i2c)
699 i3cbus->scl_rate.i3c = i3cbus->scl_rate.i2c;
706 i3cbus->scl_rate.i2c, i3cbus->scl_rate.i3c);
712 if (i3cbus->scl_rate.i3c > I3C_BUS_MAX_I3C_SCL_RATE ||
713 i3cbus->scl_rate.i2c > I3C_BUS_I2C_FM_PLUS_SCL_RATE)
2726 struct i3c_bus *i3cbus = i3c_master_get_bus(master);
2749 ret = i3c_bus_init(i3cbus, master->dev.of_node);
2754 dev_set_name(&master->dev, "i3c-%d", i3cbus->id);
2787 ret = i3c_bus_set_mode(i3cbus, mode, i2c_scl_rate);
2813 i3c_bus_notify(i3cbus, I3C_NOTIFY_BUS_ADD);