|
|
@@ -1166,7 +1166,6 @@ static int sx150x_probe(struct i2c_client *client,
|
|
|
}
|
|
|
|
|
|
/* Register GPIO controller */
|
|
|
- pctl->gpio.label = devm_kstrdup(dev, client->name, GFP_KERNEL);
|
|
|
pctl->gpio.base = -1;
|
|
|
pctl->gpio.ngpio = pctl->data->npins;
|
|
|
pctl->gpio.get_direction = sx150x_gpio_get_direction;
|
|
|
@@ -1180,6 +1179,10 @@ static int sx150x_probe(struct i2c_client *client,
|
|
|
pctl->gpio.of_node = dev->of_node;
|
|
|
#endif
|
|
|
pctl->gpio.can_sleep = true;
|
|
|
+ pctl->gpio.label = devm_kstrdup(dev, client->name, GFP_KERNEL);
|
|
|
+ if (!pctl->gpio.label)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
/*
|
|
|
* Setting multiple pins is not safe when all pins are not
|
|
|
* handled by the same regmap register. The oscio pin (present
|
|
|
@@ -1200,13 +1203,15 @@ static int sx150x_probe(struct i2c_client *client,
|
|
|
|
|
|
/* Add Interrupt support if an irq is specified */
|
|
|
if (client->irq > 0) {
|
|
|
- pctl->irq_chip.name = devm_kstrdup(dev, client->name,
|
|
|
- GFP_KERNEL);
|
|
|
pctl->irq_chip.irq_mask = sx150x_irq_mask;
|
|
|
pctl->irq_chip.irq_unmask = sx150x_irq_unmask;
|
|
|
pctl->irq_chip.irq_set_type = sx150x_irq_set_type;
|
|
|
pctl->irq_chip.irq_bus_lock = sx150x_irq_bus_lock;
|
|
|
pctl->irq_chip.irq_bus_sync_unlock = sx150x_irq_bus_sync_unlock;
|
|
|
+ pctl->irq_chip.name = devm_kstrdup(dev, client->name,
|
|
|
+ GFP_KERNEL);
|
|
|
+ if (!pctl->irq_chip.name)
|
|
|
+ return -ENOMEM;
|
|
|
|
|
|
pctl->irq.masked = ~0;
|
|
|
pctl->irq.sense = 0;
|