Changeset 17512


Ignore:
Timestamp:
2009-09-04T17:08:26+02:00 (7 years ago)
Author:
juhosg
Message:

[ramips] add GPIO configuration feature

Location:
trunk/target/linux/ramips/files/arch/mips
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/common.h

    r17467 r17512  
    1818 
    1919void __init ramips_soc_setup(void); 
     20void __init ramips_gpio_init(void); 
    2021void __init ramips_early_serial_setup(int line, unsigned base, unsigned freq, 
    2122                                      unsigned irq); 
  • trunk/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/rt288x.h

    r17456 r17512  
    22 * Ralink RT288x SoC specific definitions 
    33 * 
    4  * Copyright (C) 2008 Gabor Juhos <juhosg@openwrt.org> 
     4 * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org> 
    55 * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> 
    66 * 
     
    6969} 
    7070 
     71void rt288x_gpio_init(u32 mode) __init; 
     72 
    7173#endif /* _RT228X_H_ */ 
  • trunk/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/rt288x_regs.h

    r17452 r17512  
    4747#define SYSC_REG_RESET_CTRL     0x034   /* Reset Control*/ 
    4848#define SYSC_REG_RESET_STATUS   0x038   /* Reset Status*/ 
     49#define SYSC_REG_GPIO_MODE      0x060   /* GPIO Purpose Select */ 
    4950#define SYSC_REG_IA_ADDRESS     0x310   /* Illegal Access Address */ 
    5051#define SYSC_REG_IA_TYPE        0x314   /* Illegal Access Type */ 
     
    7576#define RT2880_RESET_FE         BIT(18) 
    7677#define RT2880_RESET_PCM        BIT(19) 
     78 
     79#define RT2880_GPIO_MODE_I2C    BIT(0) 
     80#define RT2880_GPIO_MODE_UART0  BIT(1) 
     81#define RT2880_GPIO_MODE_SPI    BIT(2) 
     82#define RT2880_GPIO_MODE_UART1  BIT(3) 
     83#define RT2880_GPIO_MODE_JTAG   BIT(4) 
     84#define RT2880_GPIO_MODE_MDIO   BIT(5) 
     85#define RT2880_GPIO_MODE_SDRAM  BIT(6) 
     86#define RT2880_GPIO_MODE_PCI    BIT(7) 
    7787 
    7888#define RT2880_INTC_INT_TIMER0  BIT(0) 
  • trunk/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/rt305x.h

    r17455 r17512  
    7474} 
    7575 
     76#define RT305X_GPIO_I2C_SD      1 
     77#define RT305X_GPIO_I2C_SCLK    2 
     78#define RT305X_GPIO_SPI_EN      3 
     79#define RT305X_GPIO_SPI_CLK     4 
     80#define RT305X_GPIO_SPI_DOUT    5 
     81#define RT305X_GPIO_SPI_DIN     6 
     82/* GPIO 7-14 is shared between UART0, PCM  and I2S interfaces */ 
     83#define RT305X_GPIO_7           7 
     84#define RT305X_GPIO_8           8 
     85#define RT305X_GPIO_9           9 
     86#define RT305X_GPIO_10          10 
     87#define RT305X_GPIO_11          11 
     88#define RT305X_GPIO_12          12 
     89#define RT305X_GPIO_13          13 
     90#define RT305X_GPIO_14          14 
     91#define RT305X_GPIO_UART1_TXD   15 
     92#define RT305X_GPIO_UART1_RXD   16 
     93#define RT305X_GPIO_JTAG_TDO    17 
     94#define RT305X_GPIO_JTAG_TDI    18 
     95#define RT305X_GPIO_JTAG_TMS    19 
     96#define RT305X_GPIO_JTAG_TCLK   20 
     97#define RT305X_GPIO_JTAG_TRST_N 21 
     98#define RT305X_GPIO_MDIO_MDC    22 
     99#define RT305X_GPIO_MDIO_MDIO   23 
     100#define RT305X_GPIO_SDRAM_MD16  24 
     101#define RT305X_GPIO_SDRAM_MD17  25 
     102#define RT305X_GPIO_SDRAM_MD18  26 
     103#define RT305X_GPIO_SDRAM_MD19  27 
     104#define RT305X_GPIO_SDRAM_MD20  28 
     105#define RT305X_GPIO_SDRAM_MD21  29 
     106#define RT305X_GPIO_SDRAM_MD22  30 
     107#define RT305X_GPIO_SDRAM_MD23  31 
     108#define RT305X_GPIO_SDRAM_MD24  32 
     109#define RT305X_GPIO_SDRAM_MD25  33 
     110#define RT305X_GPIO_SDRAM_MD26  34 
     111#define RT305X_GPIO_SDRAM_MD27  35 
     112#define RT305X_GPIO_SDRAM_MD28  36 
     113#define RT305X_GPIO_SDRAM_MD29  37 
     114#define RT305X_GPIO_SDRAM_MD30  38 
     115#define RT305X_GPIO_SDRAM_MD31  39 
     116#define RT305X_GPIO_GE0_TXD0    40 
     117#define RT305X_GPIO_GE0_TXD1    41 
     118#define RT305X_GPIO_GE0_TXD2    42 
     119#define RT305X_GPIO_GE0_TXD3    43 
     120#define RT305X_GPIO_GE0_TXEN    44 
     121#define RT305X_GPIO_GE0_TXCLK   45 
     122#define RT305X_GPIO_GE0_RXD0    46 
     123#define RT305X_GPIO_GE0_RXD1    47 
     124#define RT305X_GPIO_GE0_RXD2    48 
     125#define RT305X_GPIO_GE0_RXD3    49 
     126#define RT305X_GPIO_GE0_RXDV    50 
     127#define RT305X_GPIO_GE0_RXCLK   51 
     128 
     129void rt305x_gpio_init(u32 mode) __init; 
     130 
    76131#endif /* _RT305X_H_ */ 
  • trunk/target/linux/ramips/files/arch/mips/include/asm/mach-ralink/rt305x_regs.h

    r17446 r17512  
    5050#define SYSC_REG_RESET_CTRL     0x034   /* Reset Control*/ 
    5151#define SYSC_REG_RESET_STATUS   0x038   /* Reset Status*/ 
     52#define SYSC_REG_GPIO_MODE      0x060   /* GPIO Purpose Select */ 
    5253#define SYSC_REG_IA_ADDRESS     0x310   /* Illegal Access Address */ 
    5354#define SYSC_REG_IA_TYPE        0x314   /* Illegal Access Type */ 
     
    6162#define SYSTEM_CONFIG_CPUCLK_320        0x0 
    6263#define SYSTEM_CONFIG_CPUCLK_384        0x1 
     64 
     65#define RT305X_GPIO_MODE_I2C            BIT(0) 
     66#define RT305X_GPIO_MODE_SPI            BIT(1) 
     67#define RT305X_GPIO_MODE_UART0_SHIFT    2 
     68#define RT305X_GPIO_MODE_UART0_MASK     0x7 
     69#define RT305X_GPIO_MODE_UART0(x)       ((x) << RT305X_GPIO_MODE_UART0_SHIFT) 
     70#define RT305X_GPIO_MODE_UARTF          0x0 
     71#define RT305X_GPIO_MODE_PCM_UARTF      0x1 
     72#define RT305X_GPIO_MODE_PCM_I2S        0x2 
     73#define RT305X_GPIO_MODE_I2S_UARTF      0x3 
     74#define RT305X_GPIO_MODE_PCM_GPIO       0x4 
     75#define RT305X_GPIO_MODE_GPIO_UARTF     0x5 
     76#define RT305X_GPIO_MODE_GPIO_I2S       0x6 
     77#define RT305X_GPIO_MODE_GPIO           0x7 
     78#define RT305X_GPIO_MODE_UART1          BIT(5) 
     79#define RT305X_GPIO_MODE_JTAG           BIT(6) 
     80#define RT305X_GPIO_MODE_MDIO           BIT(7) 
     81#define RT305X_GPIO_MODE_SDRAM          BIT(8) 
     82#define RT305X_GPIO_MODE_RGMII          BIT(9) 
    6383 
    6484#define RT305X_RESET_SYSTEM     BIT(0) 
  • trunk/target/linux/ramips/files/arch/mips/ralink/common/gpio.c

    r17474 r17512  
    221221        return 0; 
    222222} 
    223  
    224 arch_initcall(ramips_gpio_init); 
  • trunk/target/linux/ramips/files/arch/mips/ralink/rt288x/mach-rt-n15.c

    r17463 r17512  
    1919#include <asm/mach-ralink/machine.h> 
    2020#include <asm/mach-ralink/dev_gpio_leds.h> 
     21#include <asm/mach-ralink/rt288x.h> 
     22#include <asm/mach-ralink/rt288x_regs.h> 
    2123 
    2224#include "devices.h" 
    2325 
    2426#define RT_N15_GPIO_LED_POWER           11 
     27#define RT_N15_GPIO_BUTTON_WPS          0 
     28#define RT_N15_GPIO_BUTTON_RESET        12 
    2529 
    2630#ifdef CONFIG_MTD_PARTITIONS 
     
    7478static void __init rt_n15_init(void) 
    7579{ 
     80        rt288x_gpio_init(RT2880_GPIO_MODE_UART0); 
     81 
    7682        rt288x_register_flash(0, &rt_n15_flash_data); 
    7783 
  • trunk/target/linux/ramips/files/arch/mips/ralink/rt288x/rt288x.c

    r17455 r17512  
    22 * Ralink RT288x SoC specific setup 
    33 * 
    4  * Copyright (C) 2008 Gabor Juhos <juhosg@openwrt.org> 
     4 * Copyright (C) 2008-2009 Gabor Juhos <juhosg@openwrt.org> 
    55 * Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org> 
    66 * 
     
    1515#include <linux/init.h> 
    1616#include <linux/module.h> 
     17#include <linux/gpio.h> 
    1718 
    1819#include <asm/mach-ralink/common.h> 
     
    7475} 
    7576 
     77static void rt288x_gpio_reserve(int first, int last) 
     78{ 
     79        for (; first <= last; first++) 
     80                gpio_request(first, "reserved"); 
     81} 
     82 
     83void __init rt288x_gpio_init(u32 mode) 
     84{ 
     85        rt288x_sysc_wr(mode, SYSC_REG_GPIO_MODE); 
     86 
     87        ramips_gpio_init(); 
     88        if ((mode & RT2880_GPIO_MODE_I2C) == 0) 
     89                rt288x_gpio_reserve(1, 2); 
     90 
     91        if ((mode & RT2880_GPIO_MODE_SPI) == 0) 
     92                rt288x_gpio_reserve(3, 6); 
     93 
     94        if ((mode & RT2880_GPIO_MODE_UART0) == 0) 
     95                rt288x_gpio_reserve(7, 14); 
     96 
     97        if ((mode & RT2880_GPIO_MODE_JTAG) == 0) 
     98                rt288x_gpio_reserve(17, 21); 
     99 
     100        if ((mode & RT2880_GPIO_MODE_MDIO) == 0) 
     101                rt288x_gpio_reserve(22, 23); 
     102 
     103        if ((mode & RT2880_GPIO_MODE_SDRAM) == 0) 
     104                rt288x_gpio_reserve(24, 39); 
     105 
     106        if ((mode & RT2880_GPIO_MODE_PCI) == 0) 
     107                rt288x_gpio_reserve(40, 71); 
     108} 
  • trunk/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-v22rw-2x2.c

    r17473 r17512  
    1919#include <asm/mach-ralink/machine.h> 
    2020#include <asm/mach-ralink/dev_gpio_leds.h> 
     21#include <asm/mach-ralink/rt305x.h> 
     22#include <asm/mach-ralink/rt305x_regs.h> 
    2123 
    2224#include "devices.h" 
    2325 
     26#define V22RW_2X2_GPIO_BUTTON_WPS       0 
     27#define V22RW_2X2_GPIO_BUTTON_SWRST     10 
    2428#define V22RW_2X2_GPIO_LED_SECURITY     13 
    2529#define V22RW_2X2_GPIO_LED_WPS          14 
     
    7983static void __init v22rw_2x2_init(void) 
    8084{ 
     85        rt305x_gpio_init(RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT); 
     86 
    8187        rt305x_register_flash(0, &v22rw_2x2_flash_data); 
    8288 
  • trunk/target/linux/ramips/files/arch/mips/ralink/rt305x/mach-whr-g300n.c

    r17456 r17512  
    1919#include <asm/mach-ralink/machine.h> 
    2020#include <asm/mach-ralink/dev_gpio_leds.h> 
     21#include <asm/mach-ralink/rt305x.h> 
     22#include <asm/mach-ralink/rt305x_regs.h> 
    2123 
    2224#include "devices.h" 
     
    8890static void __init whr_g300n_init(void) 
    8991{ 
     92        rt305x_gpio_init(RT305X_GPIO_MODE_GPIO << RT305X_GPIO_MODE_UART0_SHIFT); 
     93 
    9094        rt305x_register_flash(0, &whr_g300n_flash_data); 
    9195 
  • trunk/target/linux/ramips/files/arch/mips/ralink/rt305x/rt305x.c

    r17455 r17512  
    1515#include <linux/init.h> 
    1616#include <linux/module.h> 
     17#include <linux/gpio.h> 
    1718 
    1819#include <asm/mach-ralink/common.h> 
     
    6768        rt305x_sys_freq = rt305x_cpu_freq / 3; 
    6869} 
     70 
     71static void rt305x_gpio_reserve(int first, int last) 
     72{ 
     73        for (; first <= last; first++) 
     74                gpio_request(first, "reserved"); 
     75} 
     76 
     77void __init rt305x_gpio_init(u32 mode) 
     78{ 
     79        u32 t; 
     80 
     81        rt305x_sysc_wr(mode, SYSC_REG_GPIO_MODE); 
     82 
     83        ramips_gpio_init(); 
     84        if ((mode & RT305X_GPIO_MODE_I2C) == 0) 
     85                rt305x_gpio_reserve(RT305X_GPIO_I2C_SD, RT305X_GPIO_I2C_SCLK); 
     86 
     87        if ((mode & RT305X_GPIO_MODE_SPI) == 0) 
     88                rt305x_gpio_reserve(RT305X_GPIO_SPI_EN, RT305X_GPIO_SPI_CLK); 
     89 
     90        t = mode >> RT305X_GPIO_MODE_UART0_SHIFT; 
     91        t &= RT305X_GPIO_MODE_UART0_MASK; 
     92        switch (t) { 
     93        case RT305X_GPIO_MODE_UARTF: 
     94        case RT305X_GPIO_MODE_PCM_UARTF: 
     95        case RT305X_GPIO_MODE_PCM_I2S: 
     96        case RT305X_GPIO_MODE_I2S_UARTF: 
     97                rt305x_gpio_reserve(RT305X_GPIO_7, RT305X_GPIO_14); 
     98                break; 
     99        case RT305X_GPIO_MODE_PCM_GPIO: 
     100                rt305x_gpio_reserve(RT305X_GPIO_10, RT305X_GPIO_14); 
     101                break; 
     102        case RT305X_GPIO_MODE_GPIO_UARTF: 
     103        case RT305X_GPIO_MODE_GPIO_I2S: 
     104                rt305x_gpio_reserve(RT305X_GPIO_7, RT305X_GPIO_10); 
     105                break; 
     106        } 
     107 
     108        if ((mode & RT305X_GPIO_MODE_UART1) == 0) 
     109                rt305x_gpio_reserve(RT305X_GPIO_UART1_TXD, 
     110                                    RT305X_GPIO_UART1_RXD); 
     111 
     112        if ((mode & RT305X_GPIO_MODE_JTAG) == 0) 
     113                rt305x_gpio_reserve(RT305X_GPIO_JTAG_TDO, RT305X_GPIO_JTAG_TDI); 
     114 
     115        if ((mode & RT305X_GPIO_MODE_MDIO) == 0) 
     116                rt305x_gpio_reserve(RT305X_GPIO_MDIO_MDC, 
     117                                    RT305X_GPIO_MDIO_MDIO); 
     118 
     119        if ((mode & RT305X_GPIO_MODE_SDRAM) == 0) 
     120                rt305x_gpio_reserve(RT305X_GPIO_SDRAM_MD16, 
     121                                    RT305X_GPIO_SDRAM_MD31); 
     122 
     123        if ((mode & RT305X_GPIO_MODE_RGMII) == 0) 
     124                rt305x_gpio_reserve(RT305X_GPIO_GE0_TXD0, 
     125                                    RT305X_GPIO_GE0_RXCLK); 
     126} 
Note: See TracChangeset for help on using the changeset viewer.