Lines Matching defs:i3cbus
96 i3c_bus_to_i3c_master(struct i3c_bus *i3cbus)
98 return container_of(i3cbus, struct i3c_master_controller, bus);
416 static void i3c_bus_cleanup(struct i3c_bus *i3cbus)
419 idr_remove(&i3c_bus_idr, i3cbus->id);
423 static int i3c_bus_init(struct i3c_bus *i3cbus, struct device_node *np)
427 init_rwsem(&i3cbus->lock);
428 INIT_LIST_HEAD(&i3cbus->devs.i2c);
429 INIT_LIST_HEAD(&i3cbus->devs.i3c);
430 i3c_bus_init_addrslots(i3cbus);
431 i3cbus->mode = I3C_BUS_MODE_PURE;
445 ret = idr_alloc(&i3c_bus_idr, i3cbus, start, end, GFP_KERNEL);
451 i3cbus->id = ret;
467 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
470 i3c_bus_normaluse_lock(i3cbus);
471 if (i3cbus->mode < 0 ||
472 i3cbus->mode >= ARRAY_SIZE(i3c_bus_mode_strings) ||
473 !i3c_bus_mode_strings[i3cbus->mode])
476 ret = sprintf(buf, "%s\n", i3c_bus_mode_strings[i3cbus->mode]);
477 i3c_bus_normaluse_unlock(i3cbus);
487 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
490 i3c_bus_normaluse_lock(i3cbus);
491 ret = sprintf(buf, "%d-%llx\n", i3cbus->id,
492 i3cbus->cur_master->info.pid);
493 i3c_bus_normaluse_unlock(i3cbus);
503 struct i3c_bus *i3cbus = dev_to_i3cbus(dev);
506 i3c_bus_normaluse_lock(i3cbus);
507 ret = sprintf(buf, "%ld\n", i3cbus->scl_rate.i3c);
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, "%ld\n", i3cbus->scl_rate.i2c);
523 i3c_bus_normaluse_unlock(i3cbus);
561 static int i3c_bus_set_mode(struct i3c_bus *i3cbus, enum i3c_bus_mode mode,
564 struct i3c_master_controller *master = i3c_bus_to_i3c_master(i3cbus);
566 i3cbus->mode = mode;
568 switch (i3cbus->mode) {
570 if (!i3cbus->scl_rate.i3c)
571 i3cbus->scl_rate.i3c = I3C_BUS_TYP_I3C_SCL_RATE;
575 if (!i3cbus->scl_rate.i3c)
576 i3cbus->scl_rate.i3c = I3C_BUS_TYP_I3C_SCL_RATE;
577 if (!i3cbus->scl_rate.i2c)
578 i3cbus->scl_rate.i2c = max_i2c_scl_rate;
581 if (!i3cbus->scl_rate.i2c)
582 i3cbus->scl_rate.i2c = max_i2c_scl_rate;
583 if (!i3cbus->scl_rate.i3c ||
584 i3cbus->scl_rate.i3c > i3cbus->scl_rate.i2c)
585 i3cbus->scl_rate.i3c = i3cbus->scl_rate.i2c;
592 i3cbus->scl_rate.i2c, i3cbus->scl_rate.i3c);
598 if (i3cbus->scl_rate.i3c > I3C_BUS_MAX_I3C_SCL_RATE ||
599 i3cbus->scl_rate.i2c > I3C_BUS_I2C_FM_PLUS_SCL_RATE)
2604 struct i3c_bus *i3cbus = i3c_master_get_bus(master);
2627 ret = i3c_bus_init(i3cbus, master->dev.of_node);
2632 dev_set_name(&master->dev, "i3c-%d", i3cbus->id);
2661 ret = i3c_bus_set_mode(i3cbus, mode, i2c_scl_rate);