diff options
Diffstat (limited to 'drivers/gpio/gpio-pch.c')
| -rw-r--r-- | drivers/gpio/gpio-pch.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c index 0fec097e838..d6eac9b17db 100644 --- a/drivers/gpio/gpio-pch.c +++ b/drivers/gpio/gpio-pch.c @@ -20,6 +20,7 @@  #include <linux/gpio.h>  #include <linux/interrupt.h>  #include <linux/irq.h> +#include <linux/slab.h>  #define PCH_EDGE_FALLING	0  #define PCH_EDGE_RISING		BIT(0) @@ -138,9 +139,6 @@ static int pch_gpio_direction_output(struct gpio_chip *gpio, unsigned nr,  	unsigned long flags;  	spin_lock_irqsave(&chip->spinlock, flags); -	pm = ioread32(&chip->reg->pm) & ((1 << gpio_pins[chip->ioh]) - 1); -	pm |= (1 << nr); -	iowrite32(pm, &chip->reg->pm);  	reg_val = ioread32(&chip->reg->po);  	if (val) @@ -148,6 +146,11 @@ static int pch_gpio_direction_output(struct gpio_chip *gpio, unsigned nr,  	else  		reg_val &= ~(1 << nr);  	iowrite32(reg_val, &chip->reg->po); + +	pm = ioread32(&chip->reg->pm) & ((1 << gpio_pins[chip->ioh]) - 1); +	pm |= (1 << nr); +	iowrite32(pm, &chip->reg->pm); +  	spin_unlock_irqrestore(&chip->spinlock, flags);  	return 0; @@ -224,7 +227,7 @@ static void pch_gpio_setup(struct pch_gpio *chip)  	gpio->dbg_show = NULL;  	gpio->base = -1;  	gpio->ngpio = gpio_pins[chip->ioh]; -	gpio->can_sleep = 0; +	gpio->can_sleep = false;  	gpio->to_irq = pch_gpio_to_irq;  } @@ -518,7 +521,7 @@ static int pch_gpio_resume(struct pci_dev *pdev)  #endif  #define PCI_VENDOR_ID_ROHM             0x10DB -static DEFINE_PCI_DEVICE_TABLE(pch_gpio_pcidev_id) = { +static const struct pci_device_id pch_gpio_pcidev_id[] = {  	{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x8803) },  	{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8014) },  	{ PCI_DEVICE(PCI_VENDOR_ID_ROHM, 0x8043) },  | 
