Changeset 42511


Ignore:
Timestamp:
2014-09-12T08:54:05+02:00 (3 years ago)
Author:
blogic
Message:

atheros: convert AR5312 GPIO code to platform driver

Signed-off-by: Sergey Ryazanov <ryazanov.s.a@…>

Location:
trunk/target/linux/atheros
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/atheros/config-3.14

    r42508 r42511  
    4545CONFIG_GENERIC_SMP_IDLE_THREAD=y 
    4646CONFIG_GPIOLIB=y 
     47CONFIG_GPIO_AR5312=y 
    4748CONFIG_GPIO_DEVRES=y 
    4849CONFIG_GPIO_SYSFS=y 
  • trunk/target/linux/atheros/patches-3.14/100-board.patch

    r42510 r42511  
    12931293--- /dev/null 
    12941294+++ b/arch/mips/include/asm/mach-ar231x/ar5312_regs.h 
    1295 @@ -0,0 +1,247 @@ 
     1295@@ -0,0 +1,235 @@ 
    12961296+/* 
    12971297+ * This file is subject to the terms and conditions of the GNU General Public 
     
    15261526+#define MEM_CFG1_AC1_S  12 
    15271527+ 
    1528 +/* GPIO Address Map */ 
    15291528+#define AR5312_GPIO         (AR5312_APBBASE  + 0x2000) 
    1530 +#define AR5312_GPIO_DO      (AR5312_GPIO + 0x00)        /* output register */ 
    1531 +#define AR5312_GPIO_DI      (AR5312_GPIO + 0x04)        /* intput register */ 
    1532 +#define AR5312_GPIO_CR      (AR5312_GPIO + 0x08)        /* control register */ 
    1533 + 
    1534 +/* GPIO Control Register bit field definitions */ 
    1535 +#define AR5312_GPIO_CR_M(x)    (1 << (x))               /* mask for i/o */ 
    1536 +#define AR5312_GPIO_CR_O(x)    (0 << (x))               /* mask for output */ 
    1537 +#define AR5312_GPIO_CR_I(x)    (1 << (x))               /* mask for input */ 
    1538 +#define AR5312_GPIO_CR_INT(x)  (1 << ((x)+8))           /* mask for interrupt*/ 
    1539 +#define AR5312_GPIO_CR_UART(x) (1 << ((x)+16))          /* uart multiplex */ 
    1540 +#define AR5312_NUM_GPIO                8 
    15411529+ 
    15421530+#endif /* __ASM_MACH_AR231X_AR5312_REGS_H */ 
    15431531--- /dev/null 
    15441532+++ b/arch/mips/ar231x/ar5312.c 
    1545 @@ -0,0 +1,536 @@ 
     1533@@ -0,0 +1,476 @@ 
    15461534+/* 
    15471535+ * This file is subject to the terms and conditions of the GNU General Public 
     
    16871675+       irq_set_chained_handler(AR5312_IRQ_MISC_INTRS, ar5312_misc_irq_handler); 
    16881676+} 
    1689 + 
    1690 +/* 
    1691 + * gpiolib implementations 
    1692 + */ 
    1693 +static int 
    1694 +ar5312_gpio_get_value(struct gpio_chip *chip, unsigned gpio) 
    1695 +{ 
    1696 +       return (ar231x_read_reg(AR5312_GPIO_DI) >> gpio) & 1; 
    1697 +} 
    1698 + 
    1699 +static void 
    1700 +ar5312_gpio_set_value(struct gpio_chip *chip, unsigned gpio, int value) 
    1701 +{ 
    1702 +       u32 reg = ar231x_read_reg(AR5312_GPIO_DO); 
    1703 + 
    1704 +       reg = value ? reg | (1 << gpio) : reg & ~(1 << gpio); 
    1705 +       ar231x_write_reg(AR5312_GPIO_DO, reg); 
    1706 +} 
    1707 + 
    1708 +static int 
    1709 +ar5312_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) 
    1710 +{ 
    1711 +       ar231x_mask_reg(AR5312_GPIO_CR, 0, 1 << gpio); 
    1712 +       return 0; 
    1713 +} 
    1714 + 
    1715 +static int 
    1716 +ar5312_gpio_direction_output(struct gpio_chip *chip, unsigned gpio, int value) 
    1717 +{ 
    1718 +       ar231x_mask_reg(AR5312_GPIO_CR, 1 << gpio, 0); 
    1719 +       ar5312_gpio_set_value(chip, gpio, value); 
    1720 +       return 0; 
    1721 +} 
    1722 + 
    1723 +static struct gpio_chip ar5312_gpio_chip = { 
    1724 +       .label                  = "ar5312-gpio", 
    1725 +       .direction_input        = ar5312_gpio_direction_input, 
    1726 +       .direction_output       = ar5312_gpio_direction_output, 
    1727 +       .set                    = ar5312_gpio_set_value, 
    1728 +       .get                    = ar5312_gpio_get_value, 
    1729 +       .base                   = 0, 
    1730 +       .ngpio                  = AR5312_NUM_GPIO, /* 8 */ 
    1731 +}; 
    1732 + 
    1733 +/* end of gpiolib */ 
    17341677+ 
    17351678+static void ar5312_device_reset_set(u32 mask) 
     
    20251968+} 
    20261969+ 
    2027 +static int __init 
    2028 +ar5312_gpio_init(void) 
    2029 +{ 
    2030 +       int ret = gpiochip_add(&ar5312_gpio_chip); 
    2031 + 
    2032 +       if (ret) { 
    2033 +               pr_err("%s: failed to add gpiochip\n", ar5312_gpio_chip.label); 
    2034 +               return ret; 
    2035 +       } 
    2036 +       pr_info("%s: registered %d GPIOs\n", ar5312_gpio_chip.label, 
    2037 +               ar5312_gpio_chip.ngpio); 
    2038 +       return ret; 
    2039 +} 
    2040 + 
    20411970+void __init 
    20421971+ar5312_prom_init(void) 
     
    20611990+       devid &= AR5312_REV_CHIP; 
    20621991+       ar231x_board.devid = (u16)devid; 
    2063 +       ar5312_gpio_init(); 
    20641992+} 
    20651993+ 
  • trunk/target/linux/atheros/patches-3.14/105-ar2315_pci.patch

    r42510 r42511  
    359359--- a/arch/mips/ar231x/Kconfig 
    360360+++ b/arch/mips/ar231x/Kconfig 
    361 @@ -7,3 +7,10 @@ config SOC_AR2315 
     361@@ -8,3 +8,10 @@ config SOC_AR2315 
    362362        bool "Atheros 2315+ support" 
    363363        depends on ATHEROS_AR231X 
Note: See TracChangeset for help on using the changeset viewer.