Re: [PATCH v2] leds: pm8058: Silence pointer to integer size warning
On Thu, 30 Nov 2017, Bjorn Andersson wrote: > The pointer returned by of_device_get_match_data() doesn't have the same > size as u32 on 64-bit architectures, causing a compile warning when > compile-testing the driver on such platform. > > Cast the return value of of_device_get_match_data() to unsigned long and > then to u32 to silence this warning. > > Cc: Linus Walleij > Fixes: 7f866986e705 ("leds: add PM8058 LEDs driver") > Signed-off-by: Bjorn Andersson > --- > drivers/leds/leds-pm8058.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Applied with Pavel's Ack thanks. Will send out a pull-request shortly. > diff --git a/drivers/leds/leds-pm8058.c b/drivers/leds/leds-pm8058.c > index a52674327857..8988ba3b2d65 100644 > --- a/drivers/leds/leds-pm8058.c > +++ b/drivers/leds/leds-pm8058.c > @@ -106,7 +106,7 @@ static int pm8058_led_probe(struct platform_device *pdev) > if (!led) > return -ENOMEM; > > - led->ledtype = (u32)of_device_get_match_data(&pdev->dev); > + led->ledtype = (u32)(unsigned long)of_device_get_match_data(&pdev->dev); > > map = dev_get_regmap(pdev->dev.parent, NULL); > if (!map) { -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH v2] leds: pm8058: Silence pointer to integer size warning
On Fri, 01 Dec 2017, Pavel Machek wrote: > On Fri 2017-12-01 07:57:15, Lee Jones wrote: > > On Thu, 30 Nov 2017, Bjorn Andersson wrote: > > > - led->ledtype = (u32)of_device_get_match_data(&pdev->dev); > > > + led->ledtype = (u32)(unsigned long)of_device_get_match_data(&pdev->dev); > > > > Wouldn't (u32)(void *) be even more correct? > > > > ... if the compiler will let you get away with it. > > Afaict that would still produce the warning. of_device_get_match_data > already returns void *. Just tested. It actually still suffers from the original error. warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
Re: [PATCH v2] leds: pm8058: Silence pointer to integer size warning
On Fri 2017-12-01 07:57:15, Lee Jones wrote: > On Thu, 30 Nov 2017, Bjorn Andersson wrote: > > > The pointer returned by of_device_get_match_data() doesn't have the same > > size as u32 on 64-bit architectures, causing a compile warning when > > compile-testing the driver on such platform. > > > > Cast the return value of of_device_get_match_data() to unsigned long and > > then to u32 to silence this warning. > > > > Cc: Linus Walleij > > Fixes: 7f866986e705 ("leds: add PM8058 LEDs driver") > > Signed-off-by: Bjorn Andersson Thanks! Acked-by: Pavel Machek > > diff --git a/drivers/leds/leds-pm8058.c b/drivers/leds/leds-pm8058.c > > index a52674327857..8988ba3b2d65 100644 > > --- a/drivers/leds/leds-pm8058.c > > +++ b/drivers/leds/leds-pm8058.c > > @@ -106,7 +106,7 @@ static int pm8058_led_probe(struct platform_device > > *pdev) > > if (!led) > > return -ENOMEM; > > > > - led->ledtype = (u32)of_device_get_match_data(&pdev->dev); > > + led->ledtype = (u32)(unsigned long)of_device_get_match_data(&pdev->dev); > > Wouldn't (u32)(void *) be even more correct? > > ... if the compiler will let you get away with it. Afaict that would still produce the warning. of_device_get_match_data already returns void *. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html signature.asc Description: Digital signature
Re: [PATCH v2] leds: pm8058: Silence pointer to integer size warning
On Thu, 30 Nov 2017, Bjorn Andersson wrote: > The pointer returned by of_device_get_match_data() doesn't have the same > size as u32 on 64-bit architectures, causing a compile warning when > compile-testing the driver on such platform. > > Cast the return value of of_device_get_match_data() to unsigned long and > then to u32 to silence this warning. > > Cc: Linus Walleij > Fixes: 7f866986e705 ("leds: add PM8058 LEDs driver") > Signed-off-by: Bjorn Andersson > --- > drivers/leds/leds-pm8058.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/leds/leds-pm8058.c b/drivers/leds/leds-pm8058.c > index a52674327857..8988ba3b2d65 100644 > --- a/drivers/leds/leds-pm8058.c > +++ b/drivers/leds/leds-pm8058.c > @@ -106,7 +106,7 @@ static int pm8058_led_probe(struct platform_device *pdev) > if (!led) > return -ENOMEM; > > - led->ledtype = (u32)of_device_get_match_data(&pdev->dev); > + led->ledtype = (u32)(unsigned long)of_device_get_match_data(&pdev->dev); Wouldn't (u32)(void *) be even more correct? ... if the compiler will let you get away with it. > map = dev_get_regmap(pdev->dev.parent, NULL); > if (!map) { -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog
[PATCH v2] leds: pm8058: Silence pointer to integer size warning
The pointer returned by of_device_get_match_data() doesn't have the same size as u32 on 64-bit architectures, causing a compile warning when compile-testing the driver on such platform. Cast the return value of of_device_get_match_data() to unsigned long and then to u32 to silence this warning. Cc: Linus Walleij Fixes: 7f866986e705 ("leds: add PM8058 LEDs driver") Signed-off-by: Bjorn Andersson --- drivers/leds/leds-pm8058.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/leds/leds-pm8058.c b/drivers/leds/leds-pm8058.c index a52674327857..8988ba3b2d65 100644 --- a/drivers/leds/leds-pm8058.c +++ b/drivers/leds/leds-pm8058.c @@ -106,7 +106,7 @@ static int pm8058_led_probe(struct platform_device *pdev) if (!led) return -ENOMEM; - led->ledtype = (u32)of_device_get_match_data(&pdev->dev); + led->ledtype = (u32)(unsigned long)of_device_get_match_data(&pdev->dev); map = dev_get_regmap(pdev->dev.parent, NULL); if (!map) { -- 2.15.0