Changeset 10179


Ignore:
Timestamp:
2008-01-12T17:41:28+01:00 (8 years ago)
Author:
matteo
Message:

[AR7] cache GPIO addresses to be more efficent

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar7/files/include/asm-mips/ar7/gpio.h

    r9419 r10179  
    2929static inline int gpio_get_value(unsigned gpio) 
    3030{ 
    31         void __iomem *gpio_in = 
    32                 (void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_INPUT); 
     31        static unsigned addr; 
    3332 
    34         return readl(gpio_in) & (1 << gpio); 
     33        if (!addr) { 
     34                void __iomem *gpio_in = (void __iomem *) 
     35                                KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_INPUT); 
     36                addr = readl(gpio_in); 
     37        } 
     38 
     39        return addr & (1 << gpio); 
    3540} 
    3641 
    3742static inline void gpio_set_value(unsigned gpio, int value) 
    3843{ 
     44        static unsigned addr; 
     45        unsigned tmp; 
     46 
    3947        void __iomem *gpio_out = 
    4048                (void __iomem *)KSEG1ADDR(AR7_REGS_GPIO + AR7_GPIO_OUTPUT); 
    41         unsigned tmp; 
     49        if (!addr) 
     50                addr = readl(gpio_out); 
    4251 
    43         tmp = readl(gpio_out) & ~(1 << gpio); 
     52        tmp = addr & ~(1 << gpio); 
    4453        if (value) 
    4554                tmp |= 1 << gpio; 
Note: See TracChangeset for help on using the changeset viewer.