1 Add access to the function2 gpio register. This probably has to be
2 converted into a pimux driver later on. This is needed for some setup
3 functions on the Arduino Yun.
5 --- a/arch/mips/ath79/common.h
6 +++ b/arch/mips/ath79/common.h
7 @@ -27,6 +27,7 @@ void ath79_ddr_wb_flush(unsigned int reg
8 void ath79_gpio_function_enable(u32 mask);
9 void ath79_gpio_function_disable(u32 mask);
10 void ath79_gpio_function_setup(u32 set, u32 clear);
11 +void ath79_gpio_function2_setup(u32 set, u32 clear);
12 void ath79_gpio_output_select(unsigned gpio, u8 val);
13 int ath79_gpio_direction_select(unsigned gpio, bool oe);
14 void ath79_gpio_init(void);
15 --- a/arch/mips/ath79/gpio.c
16 +++ b/arch/mips/ath79/gpio.c
17 @@ -193,6 +193,36 @@ static void __iomem *ath79_gpio_get_func
18 return ath79_gpio_base + reg;
21 +static void __iomem *ath79_gpio_get_function2_reg(void)
25 + if (soc_is_ar71xx() ||
29 + reg = AR71XX_GPIO_REG_FUNC_2;
33 + return ath79_gpio_base + reg;
37 +void ath79_gpio_function2_setup(u32 set, u32 clear)
39 + void __iomem *reg = ath79_gpio_get_function2_reg();
40 + unsigned long flags;
42 + spin_lock_irqsave(&ath79_gpio_lock, flags);
44 + __raw_writel((__raw_readl(reg) & ~clear) | set, reg);
48 + spin_unlock_irqrestore(&ath79_gpio_lock, flags);
51 void ath79_gpio_function_setup(u32 set, u32 clear)
53 void __iomem *reg = ath79_gpio_get_function_reg();
54 --- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
55 +++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
57 #define AR71XX_GPIO_REG_INT_PENDING 0x20
58 #define AR71XX_GPIO_REG_INT_ENABLE 0x24
59 #define AR71XX_GPIO_REG_FUNC 0x28
60 +#define AR71XX_GPIO_REG_FUNC_2 0x30
62 #define AR934X_GPIO_REG_OUT_FUNC0 0x2c
63 #define AR934X_GPIO_REG_OUT_FUNC1 0x30
65 #define AR724X_GPIO_FUNC_UART_EN BIT(1)
66 #define AR724X_GPIO_FUNC_JTAG_DISABLE BIT(0)
68 +#define AR933X_GPIO_FUNC2_JUMPSTART_DISABLE BIT(9)
70 #define AR913X_GPIO_FUNC_WMAC_LED_EN BIT(22)
71 #define AR913X_GPIO_FUNC_EXP_PORT_CS_EN BIT(21)
72 #define AR913X_GPIO_FUNC_I2S_REFCLKEN BIT(20)