From 86f0a42718b387a75b4cc0325ca70f43ac06934d Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 30 Dec 2024 11:12:42 +0000 Subject: [PATCH] Revert "i3c: master: add enable(disable) hot join in sys entry" This reverts commit 4fa1dfad77901af8946f737b566e553707f8fb19 which is commit 317bacf960a4879af22d12175f47d284930b3273 upstream. It breaks the Android kernel abi and can be brought back in the future in an abi-safe way if it is really needed. Bug: 161946584 Change-Id: I536822f1c050c517e1b45af64c0703bd3f18bba4 Signed-off-by: Greg Kroah-Hartman --- drivers/i3c/master.c | 83 -------------------------------------- include/linux/i3c/master.h | 5 --- 2 files changed, 88 deletions(-) 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