gpio-mcp23s08: i2c: auto-select base if no DT match or platform data
PATCH 1/1 gpio-mcp23s08: i2c: auto-select base if no DT match or platform data
The call to gpiochip_add made by this driver is capable of auto-selecting a base if one is not provided. However, it was not called unless there was already a DT entry or platform data. This patch calls it even if the base is not already known so that gpiochip_add can attempt to find a usable base.
--- drivers/gpio/gpio-mcp23s08.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
drivers/gpio/gpio-mcp23s08.c +4 -5
@@ -520,14 +520,13 @@ static int mcp230xx_probe(struct i2c_client *client, match =of_match_device (of_match_ptr (mcp23s08_i2c_of_match), &client->dev); -if (match) { + pdata = client->dev.platform_data; +if (match || !pdata) { base =-1 ; pullups =0 ; }else { - pdata = client->dev.platform_data; -if (!pdata || !gpio_is_valid (pdata->base)) { -dev_dbg (&client->dev, -"invalid or missing platform data\n" ); +if (!gpio_is_valid (pdata->base)) { +dev_dbg (&client->dev,"invalid platform data\n" );return -EINVAL ; } base = pdata->base;
Signature · 1 line
Daniel M. Weeks
Quoted 6 lines · Daniel M. Weeks
The call to
gpiochip_addmade by this driver is capable of auto-selecting a base if one is not provided. However, it was not called unless there was already a DT entry or platform data. This patch calls it even if the base is not already known so thatgpiochip_addcan attempt to find a usable base.Signed-off-by Daniel M. Weeks <[email protected]>
Peter, Lars: you also contribute to this driver so can you folks have a look at each others patches, e.g it'd be nice to have an ACK on this.
Yours,
Linus Walleij
Quoted 5 lines · Daniel M. Weeks
The call to
gpiochip_addmade by this driver is capable of auto-selecting a base if one is not provided. However, it was not called unless there was already a DT entry or platform data. This patch calls it even if the base is not already known so thatgpiochip_addcan attempt to find a usable base.
Nitpick:
You describe what your patch changes in the commit message. This is good, but I can see the changes looking at the code. Can you please add a few lines describing WHY your patch is needed ? (That'd be to be able to instantiate a device from userspace with sysfs, right ?)
The code is ok, so with a modified commit message feel free to add my
Quoted 29 lines
Signed-off-by Daniel M. Weeks <[email protected]>---
drivers/gpio/gpio-mcp23s08.c| 9 ++++-----1 file changed, 4 insertions(+), 5 deletions(-)drivers/gpio/gpio-mcp23s08.c +4
-5@@ -520,14 +520,13 @@ static int mcp230xx_probe(struct i2c_client *client, match =of_match_device (of_match_ptr (mcp23s08_i2c_of_match), &client->dev); -if (match) { + pdata = client->dev.platform_data; +if (match || !pdata) { base =-1 ; pullups =0 ; }else { - pdata = client->dev.platform_data; -if (!pdata || !gpio_is_valid (pdata->base)) { -dev_dbg (&client->dev, -"invalid or missing platform data\n" ); +if (!gpio_is_valid (pdata->base)) { +dev_dbg (&client->dev,"invalid platform data\n" );return -EINVAL ; }
Quoted 1 line
base =
pdata->base;
Thanks,
Lars
Quoted 6 lines · Daniel M. Weeks
The call to
gpiochip_addmade by this driver is capable of auto-selecting a base if one is not provided. However, it was not called unless there was already a DT entry or platform data. This patch calls it even if the base is not already known so thatgpiochip_addcan attempt to find a usable base.Signed-off-by Daniel M. Weeks <[email protected]>
Patch applied with Lars' ACK.
Yours,
Linus Walleij