diff options
Diffstat (limited to 'drivers/gpio/gpio-sim.c')
| -rw-r--r-- | drivers/gpio/gpio-sim.c | 16 | 
1 files changed, 5 insertions, 11 deletions
diff --git a/drivers/gpio/gpio-sim.c b/drivers/gpio/gpio-sim.c index 98109839102f..1020c2feb249 100644 --- a/drivers/gpio/gpio-sim.c +++ b/drivers/gpio/gpio-sim.c @@ -991,28 +991,22 @@ static struct configfs_attribute *gpio_sim_device_config_attrs[] = {  };  struct gpio_sim_chip_name_ctx { -	struct gpio_sim_device *dev; +	struct fwnode_handle *swnode;  	char *page;  };  static int gpio_sim_emit_chip_name(struct device *dev, void *data)  {  	struct gpio_sim_chip_name_ctx *ctx = data; -	struct fwnode_handle *swnode; -	struct gpio_sim_bank *bank;  	/* This would be the sysfs device exported in /sys/class/gpio. */  	if (dev->class)  		return 0; -	swnode = dev_fwnode(dev); +	if (device_match_fwnode(dev, ctx->swnode)) +		return sprintf(ctx->page, "%s\n", dev_name(dev)); -	list_for_each_entry(bank, &ctx->dev->bank_list, siblings) { -		if (bank->swnode == swnode) -			return sprintf(ctx->page, "%s\n", dev_name(dev)); -	} - -	return -ENODATA; +	return 0;  }  static ssize_t gpio_sim_bank_config_chip_name_show(struct config_item *item, @@ -1020,7 +1014,7 @@ static ssize_t gpio_sim_bank_config_chip_name_show(struct config_item *item,  {  	struct gpio_sim_bank *bank = to_gpio_sim_bank(item);  	struct gpio_sim_device *dev = gpio_sim_bank_get_device(bank); -	struct gpio_sim_chip_name_ctx ctx = { dev, page }; +	struct gpio_sim_chip_name_ctx ctx = { bank->swnode, page };  	int ret;  	mutex_lock(&dev->lock);  |