Message ID | 20230510-i2c-mchp-pci1xxxx-function-cast-v1-1-3ba4459114c4@kernel.org |
---|---|
State | New |
Headers | show |
Series | i2c: mchp-pci1xxxx: Avoid cast to incompatible function type | expand |
The 05/10/2023 14:32, Simon Horman wrote: > > Rather than casting pci1xxxx_i2c_shutdown to an incompatible function type, > update the type to match that expected by __devm_add_action. > > Reported by clang-16 with W-1: > > .../i2c-mchp-pci1xxxx.c:1159:29: error: cast from 'void (*)(struct pci1xxxx_i2c *)' to 'void (*)(void *)' converts to incompatible function type [-Werror,-Wcast-function-type-strict] > ret = devm_add_action(dev, (void (*)(void *))pci1xxxx_i2c_shutdown, i2c); > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/device.h:251:29: note: expanded from macro 'devm_add_action' > __devm_add_action(release, action, data, #action) > ^~~~~~ > > No functional change intended. > Compile tested only. Reviewed-by: Horatiu Vultur <horatiu.vultur@microchip.com> > > Signed-off-by: Simon Horman <horms@kernel.org> > --- > drivers/i2c/busses/i2c-mchp-pci1xxxx.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-mchp-pci1xxxx.c b/drivers/i2c/busses/i2c-mchp-pci1xxxx.c > index b21ffd6df927..5ef136c3ecb1 100644 > --- a/drivers/i2c/busses/i2c-mchp-pci1xxxx.c > +++ b/drivers/i2c/busses/i2c-mchp-pci1xxxx.c > @@ -1118,8 +1118,10 @@ static int pci1xxxx_i2c_resume(struct device *dev) > static DEFINE_SIMPLE_DEV_PM_OPS(pci1xxxx_i2c_pm_ops, pci1xxxx_i2c_suspend, > pci1xxxx_i2c_resume); > > -static void pci1xxxx_i2c_shutdown(struct pci1xxxx_i2c *i2c) > +static void pci1xxxx_i2c_shutdown(void *data) > { > + struct pci1xxxx_i2c *i2c = data; > + > pci1xxxx_i2c_config_padctrl(i2c, false); > pci1xxxx_i2c_configure_core_reg(i2c, false); > } > @@ -1156,7 +1158,7 @@ static int pci1xxxx_i2c_probe_pci(struct pci_dev *pdev, > init_completion(&i2c->i2c_xfer_done); > pci1xxxx_i2c_init(i2c); > > - ret = devm_add_action(dev, (void (*)(void *))pci1xxxx_i2c_shutdown, i2c); > + ret = devm_add_action(dev, pci1xxxx_i2c_shutdown, i2c); > if (ret) > return ret; > >
Hi Simon, On Wed, May 10, 2023 at 02:32:17PM +0200, Simon Horman wrote: > Rather than casting pci1xxxx_i2c_shutdown to an incompatible function type, > update the type to match that expected by __devm_add_action. > > Reported by clang-16 with W-1: > > .../i2c-mchp-pci1xxxx.c:1159:29: error: cast from 'void (*)(struct pci1xxxx_i2c *)' to 'void (*)(void *)' converts to incompatible function type [-Werror,-Wcast-function-type-strict] > ret = devm_add_action(dev, (void (*)(void *))pci1xxxx_i2c_shutdown, i2c); > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/device.h:251:29: note: expanded from macro 'devm_add_action' > __devm_add_action(release, action, data, #action) > ^~~~~~ > > No functional change intended. > Compile tested only. > > Signed-off-by: Simon Horman <horms@kernel.org> Reviewed-by: Andi Shyti <andi.shyti@kernel.org> Andi
On Wed, May 10, 2023 at 02:32:17PM +0200, Simon Horman wrote: > Rather than casting pci1xxxx_i2c_shutdown to an incompatible function type, > update the type to match that expected by __devm_add_action. > > Reported by clang-16 with W-1: > > .../i2c-mchp-pci1xxxx.c:1159:29: error: cast from 'void (*)(struct pci1xxxx_i2c *)' to 'void (*)(void *)' converts to incompatible function type [-Werror,-Wcast-function-type-strict] > ret = devm_add_action(dev, (void (*)(void *))pci1xxxx_i2c_shutdown, i2c); > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/device.h:251:29: note: expanded from macro 'devm_add_action' > __devm_add_action(release, action, data, #action) > ^~~~~~ > > No functional change intended. > Compile tested only. > > Signed-off-by: Simon Horman <horms@kernel.org> Applied to for-current, thanks!
diff --git a/drivers/i2c/busses/i2c-mchp-pci1xxxx.c b/drivers/i2c/busses/i2c-mchp-pci1xxxx.c index b21ffd6df927..5ef136c3ecb1 100644 --- a/drivers/i2c/busses/i2c-mchp-pci1xxxx.c +++ b/drivers/i2c/busses/i2c-mchp-pci1xxxx.c @@ -1118,8 +1118,10 @@ static int pci1xxxx_i2c_resume(struct device *dev) static DEFINE_SIMPLE_DEV_PM_OPS(pci1xxxx_i2c_pm_ops, pci1xxxx_i2c_suspend, pci1xxxx_i2c_resume); -static void pci1xxxx_i2c_shutdown(struct pci1xxxx_i2c *i2c) +static void pci1xxxx_i2c_shutdown(void *data) { + struct pci1xxxx_i2c *i2c = data; + pci1xxxx_i2c_config_padctrl(i2c, false); pci1xxxx_i2c_configure_core_reg(i2c, false); } @@ -1156,7 +1158,7 @@ static int pci1xxxx_i2c_probe_pci(struct pci_dev *pdev, init_completion(&i2c->i2c_xfer_done); pci1xxxx_i2c_init(i2c); - ret = devm_add_action(dev, (void (*)(void *))pci1xxxx_i2c_shutdown, i2c); + ret = devm_add_action(dev, pci1xxxx_i2c_shutdown, i2c); if (ret) return ret;
Rather than casting pci1xxxx_i2c_shutdown to an incompatible function type, update the type to match that expected by __devm_add_action. Reported by clang-16 with W-1: .../i2c-mchp-pci1xxxx.c:1159:29: error: cast from 'void (*)(struct pci1xxxx_i2c *)' to 'void (*)(void *)' converts to incompatible function type [-Werror,-Wcast-function-type-strict] ret = devm_add_action(dev, (void (*)(void *))pci1xxxx_i2c_shutdown, i2c); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./include/linux/device.h:251:29: note: expanded from macro 'devm_add_action' __devm_add_action(release, action, data, #action) ^~~~~~ No functional change intended. Compile tested only. Signed-off-by: Simon Horman <horms@kernel.org> --- drivers/i2c/busses/i2c-mchp-pci1xxxx.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)