Merge branch 'for_3.0/gpio-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm into gpio/merge
这个提交包含在:
@@ -432,7 +432,6 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio,
|
||||
{
|
||||
void __iomem *base = bank->base;
|
||||
u32 gpio_bit = 1 << gpio;
|
||||
u32 val;
|
||||
|
||||
if (cpu_is_omap44xx()) {
|
||||
MOD_REG_BIT(OMAP4_GPIO_LEVELDETECT0, gpio_bit,
|
||||
@@ -455,15 +454,8 @@ static inline void set_24xx_gpio_triggering(struct gpio_bank *bank, int gpio,
|
||||
}
|
||||
if (likely(!(bank->non_wakeup_gpios & gpio_bit))) {
|
||||
if (cpu_is_omap44xx()) {
|
||||
if (trigger != 0)
|
||||
__raw_writel(1 << gpio, bank->base+
|
||||
OMAP4_GPIO_IRQWAKEN0);
|
||||
else {
|
||||
val = __raw_readl(bank->base +
|
||||
OMAP4_GPIO_IRQWAKEN0);
|
||||
__raw_writel(val & (~(1 << gpio)), bank->base +
|
||||
OMAP4_GPIO_IRQWAKEN0);
|
||||
}
|
||||
MOD_REG_BIT(OMAP4_GPIO_IRQWAKEN0, gpio_bit,
|
||||
trigger != 0);
|
||||
} else {
|
||||
/*
|
||||
* GPIO wakeup request can only be generated on edge
|
||||
@@ -1134,8 +1126,11 @@ static void gpio_irq_shutdown(struct irq_data *d)
|
||||
{
|
||||
unsigned int gpio = d->irq - IH_GPIO_BASE;
|
||||
struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
_reset_gpio(bank, gpio);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
static void gpio_ack_irq(struct irq_data *d)
|
||||
@@ -1150,9 +1145,12 @@ static void gpio_mask_irq(struct irq_data *d)
|
||||
{
|
||||
unsigned int gpio = d->irq - IH_GPIO_BASE;
|
||||
struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
_set_gpio_irqenable(bank, gpio, 0);
|
||||
_set_gpio_triggering(bank, get_gpio_index(gpio), IRQ_TYPE_NONE);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
static void gpio_unmask_irq(struct irq_data *d)
|
||||
@@ -1161,7 +1159,9 @@ static void gpio_unmask_irq(struct irq_data *d)
|
||||
struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
|
||||
unsigned int irq_mask = 1 << get_gpio_index(gpio);
|
||||
u32 trigger = irqd_get_trigger_type(d);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (trigger)
|
||||
_set_gpio_triggering(bank, get_gpio_index(gpio), trigger);
|
||||
|
||||
@@ -1173,6 +1173,7 @@ static void gpio_unmask_irq(struct irq_data *d)
|
||||
}
|
||||
|
||||
_set_gpio_irqenable(bank, gpio, 1);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
static struct irq_chip gpio_irq_chip = {
|
||||
@@ -1524,7 +1525,7 @@ static void omap_gpio_mod_init(struct gpio_bank *bank, int id)
|
||||
}
|
||||
}
|
||||
|
||||
static void __init omap_gpio_chip_init(struct gpio_bank *bank)
|
||||
static void __devinit omap_gpio_chip_init(struct gpio_bank *bank)
|
||||
{
|
||||
int j;
|
||||
static int gpio;
|
||||
|
在新工单中引用
屏蔽一个用户