diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c index f5a289a39b1a..c8aa0d27143c 100644 --- a/drivers/i3c/master.c +++ b/drivers/i3c/master.c @@ -514,88 +514,6 @@ static ssize_t i2c_scl_frequency_show(struct device *dev, } static DEVICE_ATTR_RO(i2c_scl_frequency); -static int i3c_set_hotjoin(struct i3c_master_controller *master, bool enable) -{ - int ret; - - if (!master || !master->ops) - return -EINVAL; - - if (!master->ops->enable_hotjoin || !master->ops->disable_hotjoin) - return -EINVAL; - - i3c_bus_normaluse_lock(&master->bus); - - if (enable) - ret = master->ops->enable_hotjoin(master); - else - ret = master->ops->disable_hotjoin(master); - - master->hotjoin = enable; - - i3c_bus_normaluse_unlock(&master->bus); - - return ret; -} - -static ssize_t hotjoin_store(struct device *dev, struct device_attribute *attr, - const char *buf, size_t count) -{ - struct i3c_bus *i3cbus = dev_to_i3cbus(dev); - int ret; - bool res; - - if (!i3cbus->cur_master) - return -EINVAL; - - if (kstrtobool(buf, &res)) - return -EINVAL; - - ret = i3c_set_hotjoin(i3cbus->cur_master->common.master, res); - if (ret) - return ret; - - return count; -} - -/* - * i3c_master_enable_hotjoin - Enable hotjoin - * @master: I3C master object - * - * Return: a 0 in case of success, an negative error code otherwise. - */ -int i3c_master_enable_hotjoin(struct i3c_master_controller *master) -{ - return i3c_set_hotjoin(master, true); -} -EXPORT_SYMBOL_GPL(i3c_master_enable_hotjoin); - -/* - * i3c_master_disable_hotjoin - Disable hotjoin - * @master: I3C master object - * - * Return: a 0 in case of success, an negative error code otherwise. - */ -int i3c_master_disable_hotjoin(struct i3c_master_controller *master) -{ - return i3c_set_hotjoin(master, false); -} -EXPORT_SYMBOL_GPL(i3c_master_disable_hotjoin); - -static ssize_t hotjoin_show(struct device *dev, struct device_attribute *da, char *buf) -{ - struct i3c_bus *i3cbus = dev_to_i3cbus(dev); - ssize_t ret; - - i3c_bus_normaluse_lock(i3cbus); - ret = sysfs_emit(buf, "%d\n", i3cbus->cur_master->common.master->hotjoin); - i3c_bus_normaluse_unlock(i3cbus); - - return ret; -} - -static DEVICE_ATTR_RW(hotjoin); - static struct attribute *i3c_masterdev_attrs[] = { &dev_attr_mode.attr, &dev_attr_current_master.attr, @@ -606,7 +524,6 @@ static struct attribute *i3c_masterdev_attrs[] = { &dev_attr_pid.attr, &dev_attr_dynamic_address.attr, &dev_attr_hdrcap.attr, - &dev_attr_hotjoin.attr, NULL, }; ATTRIBUTE_GROUPS(i3c_masterdev); diff --git a/include/linux/i3c/master.h b/include/linux/i3c/master.h index b5a568caf4c8..4b7bb43bf430 100644 --- a/include/linux/i3c/master.h +++ b/include/linux/i3c/master.h @@ -451,8 +451,6 @@ struct i3c_master_controller_ops { int (*disable_ibi)(struct i3c_dev_desc *dev); void (*recycle_ibi_slot)(struct i3c_dev_desc *dev, struct i3c_ibi_slot *slot); - int (*enable_hotjoin)(struct i3c_master_controller *master); - int (*disable_hotjoin)(struct i3c_master_controller *master); }; /** @@ -488,7 +486,6 @@ struct i3c_master_controller { const struct i3c_master_controller_ops *ops; unsigned int secondary : 1; unsigned int init_done : 1; - unsigned int hotjoin: 1; struct { struct list_head i3c; struct list_head i2c; @@ -545,8 +542,6 @@ int i3c_master_register(struct i3c_master_controller *master, const struct i3c_master_controller_ops *ops, bool secondary); void i3c_master_unregister(struct i3c_master_controller *master); -int i3c_master_enable_hotjoin(struct i3c_master_controller *master); -int i3c_master_disable_hotjoin(struct i3c_master_controller *master); /** * i3c_dev_get_master_data() - get master private data attached to an I3C