gpio: adnp: use simple i2c probe function
PATCH 1/2 gpio: adnp: use simple i2c probe function
The i2c probe functions here don't use the id information provided in their second argument, so the single-parameter i2c probe function ("probe_new") can be used instead.
--- drivers/gpio/gpio-adnp.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/gpio/gpio-adnp.c +2 -3
@@ -485,8 +485,7 @@ static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios,return 0 ; } -static int adnp_i2c_probe (struct i2c_client *client, -const struct i2c_device_id *id) +static int adnp_i2c_probe (struct i2c_client *client) {struct device_node *np = client->dev.of_node;struct adnp *adnp;
@@ -535,7 +534,7 @@ static struct i2c_driver adnp_i2c_driver = { .name = "gpio-adnp", .of_match_table = adnp_of_match, }, - .probe = adnp_i2c_probe, + .probe_new = adnp_i2c_probe, .id_table = adnp_i2c_id, };module_i2c_driver (adnp_i2c_driver);
Signature · 1 line
2.35.1
PATCH 2/2 gpio: adnp: Make use of device properties
Convert the module to be property provider agnostic and allow it to be used on non-OF platforms.
--- drivers/gpio/gpio-adnp.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)
drivers/gpio/gpio-adnp.c +5 -9
@@ -6,8 +6,9 @@#include <linux/gpio/driver.h> #include <linux/i2c.h> #include <linux/interrupt.h> +#include <linux/mod_devicetable.h> #include <linux/module.h> -#include <linux/of_irq.h> +#include <linux/property.h> #include <linux/seq_file.h> #include <linux/slab.h>
@@ -487,19 +488,15 @@ static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios,static int adnp_i2c_probe (struct i2c_client *client) { -struct device_node *np = client->dev.of_node; +struct device *dev = &client->dev;struct adnp *adnp;u32 num_gpios;int err; - err =of_property_read_u32 (np,"nr-gpios" , &num_gpios); + err =device_property_read_u32 (dev,"nr-gpios" , &num_gpios);if (err <0 )return err; - client->irq =irq_of_parse_and_map (np,0 ); -if (!client->irq) -return -EPROBE_DEFER ; - adnp =devm_kzalloc (&client->dev,sizeof (*adnp),GFP_KERNEL );if (!adnp)return -ENOMEM ;
@@ -507,8 +504,7 @@ static int adnp_i2c_probe(struct i2c_client *client)mutex_init (&adnp->i2c_lock); adnp->client = client; - err =adnp_gpio_setup (adnp, num_gpios, -of_property_read_bool (np,"interrupt-controller" )); + err =adnp_gpio_setup (adnp, num_gpios,device_property_read_bool (dev,"interrupt-controller" ));if (err)return err;
Signature · 1 line
2.35.1
Re: [PATCH v1 2/2] gpio: adnp: Make use of device properties
Quoted 4 lines · Andy Shevchenko
Convert the module to be property provider agnostic and allow it to be used on non-OF platforms.
Signed-off-by Andy Shevchenko <[email protected]>
Very nice!
Yours,
Linus Walleij
Bartosz Golaszewski
AppliedRe: [PATCH v1 2/2] gpio: adnp: Make use of device properties
In reply to Andy ShevchenkoQuoted 57 lines · Andy Shevchenko
Convert the module to be property provider agnostic and allow it to be used on non-OF platforms.
Signed-off-by Andy Shevchenko <[email protected]>--- drivers/gpio/gpio-adnp.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-)drivers/gpio/gpio-adnp.c +5
-10@@ -6,8 +6,9 @@#include <linux/gpio/driver.h> #include <linux/i2c.h> #include <linux/interrupt.h> +#include <linux/mod_devicetable.h> #include <linux/module.h> -#include <linux/of_irq.h> +#include <linux/property.h> #include <linux/seq_file.h> #include <linux/slab.h> @@ -487,19 +488,15 @@ static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios,static int adnp_i2c_probe (struct i2c_client *client) { -struct device_node *np = client->dev.of_node; +struct device *dev = &client->dev;struct adnp *adnp;u32 num_gpios;int err; - err =of_property_read_u32 (np,"nr-gpios" , &num_gpios); + err =device_property_read_u32 (dev,"nr-gpios" , &num_gpios);if (err <0 )return err; - client->irq =irq_of_parse_and_map (np,0 ); -if (!client->irq) -return -EPROBE_DEFER ; - adnp =devm_kzalloc (&client->dev,sizeof (*adnp),GFP_KERNEL );if (!adnp)return -ENOMEM ;@@ -507,8 +504,7 @@ static int adnp_i2c_probe(struct i2c_client *client)mutex_init (&adnp->i2c_lock); adnp->client = client; - err =adnp_gpio_setup (adnp, num_gpios, -of_property_read_bool (np,"interrupt-controller" )); + err =adnp_gpio_setup (adnp, num_gpios,device_property_read_bool (dev,"interrupt-controller" ));if (err)return err; --
Quoted 2 lines
2.35.1
Applied, thanks!
Bart
Bartosz Golaszewski
AppliedQuoted 34 lines · Andy Shevchenko
The i2c probe functions here don't use the id information provided in their second argument, so the single-parameter i2c probe function ("
probe_new") can be used instead.Signed-off-by Andy Shevchenko <[email protected]>--- drivers/gpio/gpio-adnp.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)drivers/gpio/gpio-adnp.c +2
-4@@ -485,8 +485,7 @@ static int adnp_gpio_setup(struct adnp *adnp, unsigned int num_gpios,return 0 ; } -static int adnp_i2c_probe (struct i2c_client *client, -const struct i2c_device_id *id) +static int adnp_i2c_probe (struct i2c_client *client) {struct device_node *np = client->dev.of_node;struct adnp *adnp;@@ -535,7 +534,7 @@ static struct i2c_driver adnp_i2c_driver = { .name = "gpio-adnp", .of_match_table = adnp_of_match, }, - .probe = adnp_i2c_probe, + .probe_new = adnp_i2c_probe, .id_table = adnp_i2c_id, };module_i2c_driver (adnp_i2c_driver); --
Quoted 2 lines
2.35.1
Applied, thanks!
Bart