* [PATCH net-next v1 0/2] ieee802154: ca8210: Sparse fix and GPIOd conversion @ 2025-03-03 15:07 Andy Shevchenko 2025-03-03 15:07 ` [PATCH net-next v1 1/2] ieee802154: ca8210: Use proper setter and getters for bitwise types Andy Shevchenko 2025-03-03 15:07 ` [PATCH net-next v1 2/2] ieee802154: ca8210: Switch to using gpiod API Andy Shevchenko 0 siblings, 2 replies; 8+ messages in thread From: Andy Shevchenko @ 2025-03-03 15:07 UTC (permalink / raw) To: Andy Shevchenko, linux-wpan, netdev, linux-kernel, linux-gpio Cc: Alexander Aring, Stefan Schmidt, Miquel Raynal, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Walleij, Bartosz Golaszewski The main part is the patch 2 that converts the driver to GPIO descriptor APIs, the first one is just an ad-hoc fix WRT sparse complains on the bitwise types misuse. Andy Shevchenko (2): ieee802154: ca8210: Use proper setter and getters for bitwise types ieee802154: ca8210: Switch to using gpiod API drivers/net/ieee802154/ca8210.c | 72 ++++++++++++--------------------- 1 file changed, 26 insertions(+), 46 deletions(-) -- 2.47.2 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next v1 1/2] ieee802154: ca8210: Use proper setter and getters for bitwise types 2025-03-03 15:07 [PATCH net-next v1 0/2] ieee802154: ca8210: Sparse fix and GPIOd conversion Andy Shevchenko @ 2025-03-03 15:07 ` Andy Shevchenko 2025-03-03 16:06 ` Miquel Raynal 2025-03-03 15:07 ` [PATCH net-next v1 2/2] ieee802154: ca8210: Switch to using gpiod API Andy Shevchenko 1 sibling, 1 reply; 8+ messages in thread From: Andy Shevchenko @ 2025-03-03 15:07 UTC (permalink / raw) To: Andy Shevchenko, linux-wpan, netdev, linux-kernel, linux-gpio Cc: Alexander Aring, Stefan Schmidt, Miquel Raynal, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Walleij, Bartosz Golaszewski Sparse complains that the driver doesn't respect the bitwise types: drivers/net/ieee802154/ca8210.c:1796:27: warning: incorrect type in assignment (different base types) drivers/net/ieee802154/ca8210.c:1796:27: expected restricted __le16 [addressable] [assigned] [usertype] pan_id drivers/net/ieee802154/ca8210.c:1796:27: got unsigned short [usertype] drivers/net/ieee802154/ca8210.c:1801:25: warning: incorrect type in assignment (different base types) drivers/net/ieee802154/ca8210.c:1801:25: expected restricted __le16 [addressable] [assigned] [usertype] pan_id drivers/net/ieee802154/ca8210.c:1801:25: got unsigned short [usertype] drivers/net/ieee802154/ca8210.c:1928:28: warning: incorrect type in argument 3 (different base types) drivers/net/ieee802154/ca8210.c:1928:28: expected unsigned short [usertype] dst_pan_id drivers/net/ieee802154/ca8210.c:1928:28: got restricted __le16 [addressable] [usertype] pan_id Use proper setter and getters for bitwise types. Note, in accordance with [1] the protocol is little endian. Link: https://www.cascoda.com/wp-content/uploads/2018/11/CA-8210_datasheet_0418.pdf [1] Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/net/ieee802154/ca8210.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c index 753215ebc67c..a036910f6082 100644 --- a/drivers/net/ieee802154/ca8210.c +++ b/drivers/net/ieee802154/ca8210.c @@ -1446,8 +1446,7 @@ static u8 mcps_data_request( command.pdata.data_req.src_addr_mode = src_addr_mode; command.pdata.data_req.dst.mode = dst_address_mode; if (dst_address_mode != MAC_MODE_NO_ADDR) { - command.pdata.data_req.dst.pan_id[0] = LS_BYTE(dst_pan_id); - command.pdata.data_req.dst.pan_id[1] = MS_BYTE(dst_pan_id); + put_unaligned_le16(dst_pan_id, command.pdata.data_req.dst.pan_id); if (dst_address_mode == MAC_MODE_SHORT_ADDR) { command.pdata.data_req.dst.address[0] = LS_BYTE( dst_addr->short_address @@ -1795,12 +1794,12 @@ static int ca8210_skb_rx( } hdr.source.mode = data_ind[0]; dev_dbg(&priv->spi->dev, "srcAddrMode: %#03x\n", hdr.source.mode); - hdr.source.pan_id = *(u16 *)&data_ind[1]; + hdr.source.pan_id = cpu_to_le16(get_unaligned_le16(&data_ind[1])); dev_dbg(&priv->spi->dev, "srcPanId: %#06x\n", hdr.source.pan_id); memcpy(&hdr.source.extended_addr, &data_ind[3], 8); hdr.dest.mode = data_ind[11]; dev_dbg(&priv->spi->dev, "dstAddrMode: %#03x\n", hdr.dest.mode); - hdr.dest.pan_id = *(u16 *)&data_ind[12]; + hdr.dest.pan_id = cpu_to_le16(get_unaligned_le16(&data_ind[12])); dev_dbg(&priv->spi->dev, "dstPanId: %#06x\n", hdr.dest.pan_id); memcpy(&hdr.dest.extended_addr, &data_ind[14], 8); @@ -1927,7 +1926,7 @@ static int ca8210_skb_tx( status = mcps_data_request( header.source.mode, header.dest.mode, - header.dest.pan_id, + le16_to_cpu(header.dest.pan_id), (union macaddr *)&header.dest.extended_addr, skb->len - mac_len, &skb->data[mac_len], -- 2.47.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 1/2] ieee802154: ca8210: Use proper setter and getters for bitwise types 2025-03-03 15:07 ` [PATCH net-next v1 1/2] ieee802154: ca8210: Use proper setter and getters for bitwise types Andy Shevchenko @ 2025-03-03 16:06 ` Miquel Raynal 2025-03-03 16:12 ` Andy Shevchenko 0 siblings, 1 reply; 8+ messages in thread From: Miquel Raynal @ 2025-03-03 16:06 UTC (permalink / raw) To: Andy Shevchenko Cc: linux-wpan, netdev, linux-kernel, linux-gpio, Alexander Aring, Stefan Schmidt, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Walleij, Bartosz Golaszewski Hello, On 03/03/2025 at 17:07:39 +02, Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > Sparse complains that the driver doesn't respect the bitwise types: > > drivers/net/ieee802154/ca8210.c:1796:27: warning: incorrect type in assignment (different base types) > drivers/net/ieee802154/ca8210.c:1796:27: expected restricted __le16 [addressable] [assigned] [usertype] pan_id > drivers/net/ieee802154/ca8210.c:1796:27: got unsigned short [usertype] > drivers/net/ieee802154/ca8210.c:1801:25: warning: incorrect type in assignment (different base types) > drivers/net/ieee802154/ca8210.c:1801:25: expected restricted __le16 [addressable] [assigned] [usertype] pan_id > drivers/net/ieee802154/ca8210.c:1801:25: got unsigned short [usertype] > drivers/net/ieee802154/ca8210.c:1928:28: warning: incorrect type in argument 3 (different base types) > drivers/net/ieee802154/ca8210.c:1928:28: expected unsigned short [usertype] dst_pan_id > drivers/net/ieee802154/ca8210.c:1928:28: got restricted __le16 [addressable] [usertype] pan_id > > Use proper setter and getters for bitwise types. > > Note, in accordance with [1] the protocol is little endian. > > Link: https://www.cascoda.com/wp-content/uploads/2018/11/CA-8210_datasheet_0418.pdf [1] > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Looks correct indeed, Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com> Thanks, Miquèl ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 1/2] ieee802154: ca8210: Use proper setter and getters for bitwise types 2025-03-03 16:06 ` Miquel Raynal @ 2025-03-03 16:12 ` Andy Shevchenko 0 siblings, 0 replies; 8+ messages in thread From: Andy Shevchenko @ 2025-03-03 16:12 UTC (permalink / raw) To: Miquel Raynal Cc: linux-wpan, netdev, linux-kernel, linux-gpio, Alexander Aring, Stefan Schmidt, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Walleij, Bartosz Golaszewski On Mon, Mar 03, 2025 at 05:06:32PM +0100, Miquel Raynal wrote: > On 03/03/2025 at 17:07:39 +02, Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > > > Sparse complains that the driver doesn't respect the bitwise types: > > > > drivers/net/ieee802154/ca8210.c:1796:27: warning: incorrect type in assignment (different base types) > > drivers/net/ieee802154/ca8210.c:1796:27: expected restricted __le16 [addressable] [assigned] [usertype] pan_id > > drivers/net/ieee802154/ca8210.c:1796:27: got unsigned short [usertype] > > drivers/net/ieee802154/ca8210.c:1801:25: warning: incorrect type in assignment (different base types) > > drivers/net/ieee802154/ca8210.c:1801:25: expected restricted __le16 [addressable] [assigned] [usertype] pan_id > > drivers/net/ieee802154/ca8210.c:1801:25: got unsigned short [usertype] > > drivers/net/ieee802154/ca8210.c:1928:28: warning: incorrect type in argument 3 (different base types) > > drivers/net/ieee802154/ca8210.c:1928:28: expected unsigned short [usertype] dst_pan_id > > drivers/net/ieee802154/ca8210.c:1928:28: got restricted __le16 [addressable] [usertype] pan_id > > > > Use proper setter and getters for bitwise types. > > > > Note, in accordance with [1] the protocol is little endian. > > > > Link: https://www.cascoda.com/wp-content/uploads/2018/11/CA-8210_datasheet_0418.pdf [1] > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Looks correct indeed, TBH, my guts feeling is that this driver was never tested on BE platforms... > Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com> Thanks for review! -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next v1 2/2] ieee802154: ca8210: Switch to using gpiod API 2025-03-03 15:07 [PATCH net-next v1 0/2] ieee802154: ca8210: Sparse fix and GPIOd conversion Andy Shevchenko 2025-03-03 15:07 ` [PATCH net-next v1 1/2] ieee802154: ca8210: Use proper setter and getters for bitwise types Andy Shevchenko @ 2025-03-03 15:07 ` Andy Shevchenko 2025-03-03 16:20 ` Miquel Raynal 1 sibling, 1 reply; 8+ messages in thread From: Andy Shevchenko @ 2025-03-03 15:07 UTC (permalink / raw) To: Andy Shevchenko, linux-wpan, netdev, linux-kernel, linux-gpio Cc: Alexander Aring, Stefan Schmidt, Miquel Raynal, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Walleij, Bartosz Golaszewski This updates the driver to gpiod API, and removes yet another use of of_get_named_gpio(). Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/net/ieee802154/ca8210.c | 63 ++++++++++++--------------------- 1 file changed, 22 insertions(+), 41 deletions(-) diff --git a/drivers/net/ieee802154/ca8210.c b/drivers/net/ieee802154/ca8210.c index a036910f6082..2342f1927dc9 100644 --- a/drivers/net/ieee802154/ca8210.c +++ b/drivers/net/ieee802154/ca8210.c @@ -52,12 +52,10 @@ #include <linux/debugfs.h> #include <linux/delay.h> #include <linux/gpio/consumer.h> -#include <linux/gpio.h> #include <linux/ieee802154.h> #include <linux/io.h> #include <linux/kfifo.h> #include <linux/of.h> -#include <linux/of_gpio.h> #include <linux/module.h> #include <linux/mutex.h> #include <linux/poll.h> @@ -350,8 +348,8 @@ struct work_priv_container { * @extclockenable: true if the external clock is to be enabled * @extclockfreq: frequency of the external clock * @extclockgpio: ca8210 output gpio of the external clock - * @gpio_reset: gpio number of ca8210 reset line - * @gpio_irq: gpio number of ca8210 interrupt line + * @reset_gpio: GPIO of ca8210 reset line + * @irq_gpio: GPIO of ca8210 interrupt line * @irq_id: identifier for the ca8210 irq * */ @@ -359,8 +357,8 @@ struct ca8210_platform_data { bool extclockenable; unsigned int extclockfreq; unsigned int extclockgpio; - int gpio_reset; - int gpio_irq; + struct gpio_desc *reset_gpio; + struct gpio_desc *irq_gpio; int irq_id; }; @@ -631,10 +629,10 @@ static void ca8210_reset_send(struct spi_device *spi, unsigned int ms) struct ca8210_priv *priv = spi_get_drvdata(spi); long status; - gpio_set_value(pdata->gpio_reset, 0); + gpiod_set_value(pdata->reset_gpio, 0); reinit_completion(&priv->ca8210_is_awake); msleep(ms); - gpio_set_value(pdata->gpio_reset, 1); + gpiod_set_value(pdata->reset_gpio, 1); priv->promiscuous = false; /* Wait until wakeup indication seen */ @@ -2784,25 +2782,14 @@ static void ca8210_unregister_ext_clock(struct spi_device *spi) */ static int ca8210_reset_init(struct spi_device *spi) { - int ret; - struct ca8210_platform_data *pdata = spi->dev.platform_data; + struct device *dev = &spi->dev; + struct ca8210_platform_data *pdata = dev_get_platdata(dev); - pdata->gpio_reset = of_get_named_gpio( - spi->dev.of_node, - "reset-gpio", - 0 - ); + pdata->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(pdata->reset_gpio)) + dev_crit(dev, "Reset GPIO did not set to output mode\n"); - ret = gpio_direction_output(pdata->gpio_reset, 1); - if (ret < 0) { - dev_crit( - &spi->dev, - "Reset GPIO %d did not set to output mode\n", - pdata->gpio_reset - ); - } - - return ret; + return PTR_ERR_OR_ZERO(pdata->reset_gpio); } /** @@ -2813,23 +2800,19 @@ static int ca8210_reset_init(struct spi_device *spi) */ static int ca8210_interrupt_init(struct spi_device *spi) { + struct device *dev = &spi->dev; + struct ca8210_platform_data *pdata = dev_get_platdata(dev); int ret; - struct ca8210_platform_data *pdata = spi->dev.platform_data; - pdata->gpio_irq = of_get_named_gpio( - spi->dev.of_node, - "irq-gpio", - 0 - ); + pdata->irq_gpio = devm_gpiod_get(dev, "irq", GPIOD_IN); + if (IS_ERR(pdata->irq_gpio)) { + dev_crit(dev, "Could not retrieve IRQ GPIO\n"); + return PTR_ERR(pdata->irq_gpio); + } - pdata->irq_id = gpio_to_irq(pdata->gpio_irq); + pdata->irq_id = gpiod_to_irq(pdata->irq_gpio); if (pdata->irq_id < 0) { - dev_crit( - &spi->dev, - "Could not get irq for gpio pin %d\n", - pdata->gpio_irq - ); - gpio_free(pdata->gpio_irq); + dev_crit(dev, "Could not get irq for IRQ GPIO\n"); return pdata->irq_id; } @@ -2840,10 +2823,8 @@ static int ca8210_interrupt_init(struct spi_device *spi) "ca8210-irq", spi_get_drvdata(spi) ); - if (ret) { + if (ret) dev_crit(&spi->dev, "request_irq %d failed\n", pdata->irq_id); - gpio_free(pdata->gpio_irq); - } return ret; } -- 2.47.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 2/2] ieee802154: ca8210: Switch to using gpiod API 2025-03-03 15:07 ` [PATCH net-next v1 2/2] ieee802154: ca8210: Switch to using gpiod API Andy Shevchenko @ 2025-03-03 16:20 ` Miquel Raynal 2025-03-03 16:28 ` Andy Shevchenko 0 siblings, 1 reply; 8+ messages in thread From: Miquel Raynal @ 2025-03-03 16:20 UTC (permalink / raw) To: Andy Shevchenko Cc: linux-wpan, netdev, linux-kernel, linux-gpio, Alexander Aring, Stefan Schmidt, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Walleij, Bartosz Golaszewski Hi Andy, > @@ -350,8 +348,8 @@ struct work_priv_container { > * @extclockenable: true if the external clock is to be enabled > * @extclockfreq: frequency of the external clock > * @extclockgpio: ca8210 output gpio of the external clock > - * @gpio_reset: gpio number of ca8210 reset line > - * @gpio_irq: gpio number of ca8210 interrupt line > + * @reset_gpio: GPIO of ca8210 reset line What about "CA8210 Reset GPIO line"? Or Just "Reset GPIO line"? Or even "Reset GPIO descriptor" (whatever). > + * @irq_gpio: GPIO of ca8210 interrupt line Same > * @irq_id: identifier for the ca8210 irq > * > */ > @@ -359,8 +357,8 @@ struct ca8210_platform_data { > bool extclockenable; > unsigned int extclockfreq; > unsigned int extclockgpio; > - int gpio_reset; > - int gpio_irq; > + struct gpio_desc *reset_gpio; > + struct gpio_desc *irq_gpio; > int irq_id; > }; [...] > /* Wait until wakeup indication seen */ > @@ -2784,25 +2782,14 @@ static void ca8210_unregister_ext_clock(struct spi_device *spi) > */ > static int ca8210_reset_init(struct spi_device *spi) > { > - int ret; > - struct ca8210_platform_data *pdata = spi->dev.platform_data; > + struct device *dev = &spi->dev; > + struct ca8210_platform_data *pdata = dev_get_platdata(dev); > Can you either mention the additional cleanup that you do in the commit log or split it in a separate commit? (splitting is probably not necessary here given that most of the cleanup anyway is related to the actual changes. > - pdata->gpio_reset = of_get_named_gpio( > - spi->dev.of_node, > - "reset-gpio", > - 0 > - ); > + pdata->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); > + if (IS_ERR(pdata->reset_gpio)) > + dev_crit(dev, "Reset GPIO did not set to output mode\n"); > > - ret = gpio_direction_output(pdata->gpio_reset, 1); > - if (ret < 0) { > - dev_crit( > - &spi->dev, > - "Reset GPIO %d did not set to output mode\n", > - pdata->gpio_reset > - ); > - } > - > - return ret; > + return PTR_ERR_OR_ZERO(pdata->reset_gpio); This is not a strong request, but in general I think it is preferred to return immediately, so this looks easier to understand: + pdata->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(pdata->reset_gpio)) { + dev_crit(dev, "Reset GPIO did not set to output mode\n"); + return PTR_ERR(pdata->reset_pgio); + } + + return 0; Otherwise the rest lgtm. Thanks, Miquèl ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 2/2] ieee802154: ca8210: Switch to using gpiod API 2025-03-03 16:20 ` Miquel Raynal @ 2025-03-03 16:28 ` Andy Shevchenko 2025-03-03 16:36 ` Miquel Raynal 0 siblings, 1 reply; 8+ messages in thread From: Andy Shevchenko @ 2025-03-03 16:28 UTC (permalink / raw) To: Miquel Raynal Cc: linux-wpan, netdev, linux-kernel, linux-gpio, Alexander Aring, Stefan Schmidt, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Walleij, Bartosz Golaszewski On Mon, Mar 03, 2025 at 05:20:59PM +0100, Miquel Raynal wrote: ... > > - * @gpio_reset: gpio number of ca8210 reset line > > - * @gpio_irq: gpio number of ca8210 interrupt line > > + * @reset_gpio: GPIO of ca8210 reset line > > What about "CA8210 Reset GPIO line"? Or Just "Reset GPIO line"? Or even > "Reset GPIO descriptor" (whatever). > > > + * @irq_gpio: GPIO of ca8210 interrupt line > > Same Sure. [...] > > - int ret; > > - struct ca8210_platform_data *pdata = spi->dev.platform_data; > > + struct device *dev = &spi->dev; > > + struct ca8210_platform_data *pdata = dev_get_platdata(dev); > > Can you either mention the additional cleanup that you do in the commit > log or split it in a separate commit? (splitting is probably not > necessary here given that most of the cleanup anyway is related to the > actual changes. Do you mean the platform_data accessors? I can actually split it to a separate change as I had done some of that in the past in other drivers. ... > > - ret = gpio_direction_output(pdata->gpio_reset, 1); > > - if (ret < 0) { > > - dev_crit( > > - &spi->dev, > > - "Reset GPIO %d did not set to output mode\n", > > - pdata->gpio_reset > > - ); > > - } > > - > > - return ret; > > + return PTR_ERR_OR_ZERO(pdata->reset_gpio); > > This is not a strong request, but in general I think it is preferred to return > immediately, so this looks easier to understand: I used the same logic as in the original flow. > + pdata->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); > + if (IS_ERR(pdata->reset_gpio)) { > + dev_crit(dev, "Reset GPIO did not set to output mode\n"); > + return PTR_ERR(pdata->reset_pgio); > + } > + > + return 0; Sure I can do this in v2. ... > Otherwise the rest lgtm. Thank you for the review! -- With Best Regards, Andy Shevchenko ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next v1 2/2] ieee802154: ca8210: Switch to using gpiod API 2025-03-03 16:28 ` Andy Shevchenko @ 2025-03-03 16:36 ` Miquel Raynal 0 siblings, 0 replies; 8+ messages in thread From: Miquel Raynal @ 2025-03-03 16:36 UTC (permalink / raw) To: Andy Shevchenko Cc: linux-wpan, netdev, linux-kernel, linux-gpio, Alexander Aring, Stefan Schmidt, Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Walleij, Bartosz Golaszewski On 03/03/2025 at 18:28:41 +02, Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote: > On Mon, Mar 03, 2025 at 05:20:59PM +0100, Miquel Raynal wrote: > > ... > >> > - * @gpio_reset: gpio number of ca8210 reset line >> > - * @gpio_irq: gpio number of ca8210 interrupt line >> > + * @reset_gpio: GPIO of ca8210 reset line >> >> What about "CA8210 Reset GPIO line"? Or Just "Reset GPIO line"? Or even >> "Reset GPIO descriptor" (whatever). >> >> > + * @irq_gpio: GPIO of ca8210 interrupt line >> >> Same > > Sure. > > [...] > >> > - int ret; >> > - struct ca8210_platform_data *pdata = spi->dev.platform_data; >> > + struct device *dev = &spi->dev; >> > + struct ca8210_platform_data *pdata = dev_get_platdata(dev); >> >> Can you either mention the additional cleanup that you do in the commit >> log or split it in a separate commit? (splitting is probably not >> necessary here given that most of the cleanup anyway is related to the >> actual changes. > > Do you mean the platform_data accessors? Yes. > I can actually split it to a separate > change as I had done some of that in the past in other drivers. Up to you, either way, as long as it is mentioned in the commit log, I'm happy. > > ... > >> > - ret = gpio_direction_output(pdata->gpio_reset, 1); >> > - if (ret < 0) { >> > - dev_crit( >> > - &spi->dev, >> > - "Reset GPIO %d did not set to output mode\n", >> > - pdata->gpio_reset >> > - ); >> > - } >> > - >> > - return ret; >> > + return PTR_ERR_OR_ZERO(pdata->reset_gpio); >> >> This is not a strong request, but in general I think it is preferred to return >> immediately, so this looks easier to understand: > > I used the same logic as in the original flow. That's true, and I understand your choice in the first place. But given that you're also doing a bit of cleanup, one more misc change feels okay. > >> + pdata->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); >> + if (IS_ERR(pdata->reset_gpio)) { >> + dev_crit(dev, "Reset GPIO did not set to output mode\n"); >> + return PTR_ERR(pdata->reset_pgio); >> + } >> + >> + return 0; > > Sure I can do this in v2. Great! > ... > >> Otherwise the rest lgtm. > > Thank you for the review! ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-03-03 16:36 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-03-03 15:07 [PATCH net-next v1 0/2] ieee802154: ca8210: Sparse fix and GPIOd conversion Andy Shevchenko 2025-03-03 15:07 ` [PATCH net-next v1 1/2] ieee802154: ca8210: Use proper setter and getters for bitwise types Andy Shevchenko 2025-03-03 16:06 ` Miquel Raynal 2025-03-03 16:12 ` Andy Shevchenko 2025-03-03 15:07 ` [PATCH net-next v1 2/2] ieee802154: ca8210: Switch to using gpiod API Andy Shevchenko 2025-03-03 16:20 ` Miquel Raynal 2025-03-03 16:28 ` Andy Shevchenko 2025-03-03 16:36 ` Miquel Raynal
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).