MFD: SM501 build fixes when CONFIG_MFD_SM501_GPIO unset.
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 MFD: SM501 build fixes when CONFIG_MFD_SM501_GPIO unset.
Fix the build problems if CONFIG_MFD_SM501_GPIO is not set, which is generally when there is no gpiolib support available as currently happens on x86 when building PCI SM501.
Signed-off-by Ben Dooks <[email protected]>
drivers/mfd/sm501.c +24 -5
@@ -19,7 +19,6 @@#include <linux/device.h> #include <linux/platform_device.h> #include <linux/pci.h> -#include <linux/gpio.h> #include <linux/i2c-gpio.h> #include <linux/sm501.h>
@@ -35,6 +34,9 @@ struct sm501_device {struct sm501_gpio ; +#ifdef CONFIG_MFD_SM501_GPIO +#include <linux/gpio.h> + struct sm501_gpio_chip { struct gpio_chip gpio; struct sm501_gpio *ourgpio; /* to get back to parent. */
@@ -50,6 +52,11 @@ struct sm501_gpio {void __iomem *regs;struct resource *regs_res; }; +#else +struct sm501_gpio { +/* no gpio support, empty definition for sm501_devdata. */ +}; +#endif struct sm501_devdata {spinlock_t reg_lock;
@@ -1082,6 +1089,9 @@ static void sm501_gpio_remove(struct sm5struct sm501_gpio *gpio = &sm->gpio;int ret; +if (!sm->gpio.registered) +return ; + ret =gpiochip_remove (&gpio->low.gpio);if (ret)dev_err (sm->dev,"cannot remove low chip, cannot tidy up\n" );
@@ -1100,6 +1110,11 @@ static inline int sm501_gpio_pin2nr(strustruct sm501_gpio *gpio = &sm->gpio; return pin + (pin < 32) ? gpio->low.gpio.base : gpio->high.gpio.base; } + +static inline int sm501_gpio_isregistered (struct sm501_devdata *sm) +{ +return sm->gpio.registered; +}#else static inline int sm501_register_gpio (struct sm501_devdata *sm) {
@@ -1114,6 +1129,11 @@ static inline int sm501_gpio_pin2nr(stru {return -1 ; } + +static inline int sm501_gpio_isregistered (struct sm501_devdata *sm) +{ +return 0 ; +}#endif static int sm501_register_gpio_i2c_instance(struct sm501_devdata *sm,
@@ -1330,8 +1350,8 @@ static int sm501_init_dev(struct sm501_d }if (pdata->gpio_i2c !=NULL && pdata->gpio_i2c_nr >0 ) { -if (!sm->gpio.registered) -dev_err (sm->dev,"no gpio registered for i2c gpio.\n" ); +if (!sm501_gpio_isregistered (sm)) +dev_err (sm->dev,"no gpio available for i2c gpio.\n" );else sm501_register_gpio_i2c (sm, pdata); }
@@ -1643,8 +1663,7 @@ static void sm501_dev_remove(struct sm50device_remove_file (sm->dev, &dev_attr_dbg_regs); -if (sm->gpio.registered) -sm501_gpio_remove (sm); +sm501_gpio_remove (sm); }static void sm501_pci_remove (struct pci_dev *dev)
Quoted 5 lines
Fix the build problems if
CONFIG_MFD_SM501_GPIOis not set, which is generally when there is no gpiolib support available as currently happens on x86 when building PCI SM501.Signed-off-by Ben Dooks <[email protected]>
Tested-by Li Zefan <[email protected]>
Quoted 7 lines · Li Zefan
Quoted 5 lines
Fix the build problems if
CONFIG_MFD_SM501_GPIOis not set, which is generally when there is no gpiolib support available as currently happens on x86 when building PCI SM501.Signed-off-by Ben Dooks <[email protected]>Tested-by Li Zefan <[email protected]>
thanks.
Signature · 4 lines
Ben Q: What's a light-year? A: One-third less calories than a regular year.