Message ID | 20190405142112.26592-1-yuehaibing@huawei.com |
---|---|
State | New |
Headers | show |
Series | [v2] gpio: merrifield: Fix build err without CONFIG_ACPI | expand |
On Fri, Apr 05, 2019 at 10:21:12PM +0800, Yue Haibing wrote: > From: YueHaibing <yuehaibing@huawei.com> > > When building CONFIG_ACPI is not set > gcc warn this: > > drivers/gpio/gpio-merrifield.c: In function mrfld_gpio_get_pinctrl_dev_name: > drivers/gpio/gpio-merrifield.c:388:19: error: dereferencing pointer to incomplete type struct acpi_device > put_device(&adev->dev); > ^ > Reported-by: Hulk Robot <hulkci@huawei.com> > Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > Fixes:d00d2109c367 ("gpio: merrifield: Convert to use acpi_dev_get_first_match_dev()") > Signed-off-by: YueHaibing <yuehaibing@huawei.com> Thank you for an update, I have a comment below, but before sending v3, let Rafael to have a chance to look at it. > #ifdef CONFIG_ACPI > extern int acpi_platform_notify(struct device *dev, enum kobject_action action); > + > +static inline void put_acpi_device(struct acpi_device *adev) > +{ > + put_device(&adev->dev); > +} This should probably go to acpi_bus.h under acpi_dev_get_first_match_dev(). And talking to Mika we agreed that naming would be better as acpi_dev_put().
On Friday, April 5, 2019 4:50:09 PM CEST Andy Shevchenko wrote: > On Fri, Apr 05, 2019 at 10:21:12PM +0800, Yue Haibing wrote: > > From: YueHaibing <yuehaibing@huawei.com> > > > > When building CONFIG_ACPI is not set > > gcc warn this: > > > > drivers/gpio/gpio-merrifield.c: In function > > mrfld_gpio_get_pinctrl_dev_name: drivers/gpio/gpio-merrifield.c:388:19: > > error: dereferencing pointer to incomplete type struct acpi_device> > > put_device(&adev->dev); > > > > ^ > > > > Reported-by: Hulk Robot <hulkci@huawei.com> > > Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > Fixes:d00d2109c367 ("gpio: merrifield: Convert to use > > acpi_dev_get_first_match_dev()") Signed-off-by: YueHaibing > > <yuehaibing@huawei.com> > > Thank you for an update, I have a comment below, but before sending v3, let > Rafael to have a chance to look at it. > > > #ifdef CONFIG_ACPI > > extern int acpi_platform_notify(struct device *dev, enum kobject_action > > action);> > > + > > +static inline void put_acpi_device(struct acpi_device *adev) > > +{ > > + put_device(&adev->dev); > > +} > > This should probably go to acpi_bus.h under acpi_dev_get_first_match_dev(). > And talking to Mika we agreed that naming would be better as acpi_dev_put(). Agreed on both accounts. Thanks!
On Fri, Apr 12, 2019 at 3:55 AM Rafael J. Wysocki <rjw@rjwysocki.net> wrote: > On Friday, April 5, 2019 4:50:09 PM CEST Andy Shevchenko wrote: > > On Fri, Apr 05, 2019 at 10:21:12PM +0800, Yue Haibing wrote: > > > From: YueHaibing <yuehaibing@huawei.com> > > > > > > When building CONFIG_ACPI is not set > > > gcc warn this: > > > > > > drivers/gpio/gpio-merrifield.c: In function > > > mrfld_gpio_get_pinctrl_dev_name: drivers/gpio/gpio-merrifield.c:388:19: > > > error: dereferencing pointer to incomplete type struct acpi_device> > > > put_device(&adev->dev); > > > > > > ^ > > > > > > Reported-by: Hulk Robot <hulkci@huawei.com> > > > Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > > > Fixes:d00d2109c367 ("gpio: merrifield: Convert to use > > > acpi_dev_get_first_match_dev()") Signed-off-by: YueHaibing > > > <yuehaibing@huawei.com> > > > > Thank you for an update, I have a comment below, but before sending v3, let > > Rafael to have a chance to look at it. > > > > > #ifdef CONFIG_ACPI > > > extern int acpi_platform_notify(struct device *dev, enum kobject_action > > > action);> > > > + > > > +static inline void put_acpi_device(struct acpi_device *adev) > > > +{ > > > + put_device(&adev->dev); > > > +} > > > > This should probably go to acpi_bus.h under acpi_dev_get_first_match_dev(). > > And talking to Mika we agreed that naming would be better as acpi_dev_put(). > > Agreed on both accounts. Thanks! YueHaibing, please, send v3 with suggested changes.
On 2019/4/12 21:13, Andy Shevchenko wrote: > On Fri, Apr 12, 2019 at 3:55 AM Rafael J. Wysocki <rjw@rjwysocki.net> wrote: >> On Friday, April 5, 2019 4:50:09 PM CEST Andy Shevchenko wrote: >>> On Fri, Apr 05, 2019 at 10:21:12PM +0800, Yue Haibing wrote: >>>> From: YueHaibing <yuehaibing@huawei.com> >>>> >>>> When building CONFIG_ACPI is not set >>>> gcc warn this: >>>> >>>> drivers/gpio/gpio-merrifield.c: In function >>>> mrfld_gpio_get_pinctrl_dev_name: drivers/gpio/gpio-merrifield.c:388:19: >>>> error: dereferencing pointer to incomplete type struct acpi_device> >>>> put_device(&adev->dev); >>>> >>>> ^ >>>> >>>> Reported-by: Hulk Robot <hulkci@huawei.com> >>>> Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> >>>> Fixes:d00d2109c367 ("gpio: merrifield: Convert to use >>>> acpi_dev_get_first_match_dev()") Signed-off-by: YueHaibing >>>> <yuehaibing@huawei.com> >>> >>> Thank you for an update, I have a comment below, but before sending v3, let >>> Rafael to have a chance to look at it. >>> >>>> #ifdef CONFIG_ACPI >>>> extern int acpi_platform_notify(struct device *dev, enum kobject_action >>>> action);> >>>> + >>>> +static inline void put_acpi_device(struct acpi_device *adev) >>>> +{ >>>> + put_device(&adev->dev); >>>> +} >>> >>> This should probably go to acpi_bus.h under acpi_dev_get_first_match_dev(). >>> And talking to Mika we agreed that naming would be better as acpi_dev_put(). >> >> Agreed on both accounts. > > Thanks! > YueHaibing, please, send v3 with suggested changes. Ok. >
diff --git a/drivers/gpio/gpio-merrifield.c b/drivers/gpio/gpio-merrifield.c index 2383dc7..99ca18c 100644 --- a/drivers/gpio/gpio-merrifield.c +++ b/drivers/gpio/gpio-merrifield.c @@ -385,7 +385,7 @@ static const char *mrfld_gpio_get_pinctrl_dev_name(struct mrfld_gpio *priv) adev = acpi_dev_get_first_match_dev("INTC1002", NULL, -1); if (adev) { name = devm_kstrdup(priv->dev, acpi_dev_name(adev), GFP_KERNEL); - put_device(&adev->dev); + put_acpi_device(adev); } else { name = "pinctrl-merrifield"; } diff --git a/include/linux/acpi.h b/include/linux/acpi.h index a1bd789..2563e13 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -1331,12 +1331,19 @@ static inline int find_acpi_cpu_cache_topology(unsigned int cpu, int level) #ifdef CONFIG_ACPI extern int acpi_platform_notify(struct device *dev, enum kobject_action action); + +static inline void put_acpi_device(struct acpi_device *adev) +{ + put_device(&adev->dev); +} #else static inline int acpi_platform_notify(struct device *dev, enum kobject_action action) { return 0; } + +static inline void put_acpi_device(struct acpi_device *adev) {} #endif #endif /*_LINUX_ACPI_H*/