Changeset 28974


Ignore:
Timestamp:
2011-11-12T11:54:09+01:00 (6 years ago)
Author:
juhosg
Message:

ar71xx: fix GPIO direction setup for AR934x

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/gpio.c

    r27057 r28974  
    9191} 
    9292 
     93static int ar934x_gpio_direction_input(struct gpio_chip *chip, 
     94                                       unsigned offset) 
     95{ 
     96        void __iomem *base = ar71xx_gpio_base; 
     97        unsigned long flags; 
     98 
     99        spin_lock_irqsave(&ar71xx_gpio_lock, flags); 
     100 
     101        __raw_writel(__raw_readl(base + GPIO_REG_OE) | (1 << offset), 
     102                     base + GPIO_REG_OE); 
     103 
     104        spin_unlock_irqrestore(&ar71xx_gpio_lock, flags); 
     105 
     106        return 0; 
     107} 
     108 
     109static int ar934x_gpio_direction_output(struct gpio_chip *chip, 
     110                                        unsigned offset, int value) 
     111{ 
     112        void __iomem *base = ar71xx_gpio_base; 
     113        unsigned long flags; 
     114 
     115        spin_lock_irqsave(&ar71xx_gpio_lock, flags); 
     116 
     117        if (value) 
     118                __raw_writel(1 << offset, base + GPIO_REG_SET); 
     119        else 
     120                __raw_writel(1 << offset, base + GPIO_REG_CLEAR); 
     121 
     122        __raw_writel(__raw_readl(base + GPIO_REG_OE) & ~(1 << offset), 
     123                     base + GPIO_REG_OE); 
     124 
     125        spin_unlock_irqrestore(&ar71xx_gpio_lock, flags); 
     126 
     127        return 0; 
     128} 
     129 
    93130static struct gpio_chip ar71xx_gpio_chip = { 
    94131        .label                  = "ar71xx", 
     
    182219        case AR71XX_SOC_AR9344: 
    183220                ar71xx_gpio_chip.ngpio = AR934X_GPIO_COUNT; 
     221                ar71xx_gpio_chip.direction_input = ar934x_gpio_direction_input; 
     222                ar71xx_gpio_chip.direction_output = ar934x_gpio_direction_output; 
    184223                break; 
    185224 
Note: See TracChangeset for help on using the changeset viewer.