sunxi: GPIO pin mux hardware-feature-specific function index defines
authorPaul Kocialkowski <contact@paulk.fr>
Sun, 22 Mar 2015 17:12:22 +0000 (18:12 +0100)
committerHans de Goede <hdegoede@redhat.com>
Wed, 15 Apr 2015 14:17:17 +0000 (16:17 +0200)
Each hardware feature exposed through the GPIO pin mux is usually using the same
function index (for a given port), so there is no need to define one value per
pin: one value per hardware feature per port is sufficient, avoids duplication
and makes everything easier to understand.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
arch/arm/cpu/armv7/sunxi/board.c
arch/arm/cpu/armv7/sunxi/rsb.c
arch/arm/include/asm/arch-sunxi/gpio.h
board/sunxi/board.c
board/sunxi/gmac.c
drivers/net/sunxi_emac.c
drivers/video/sunxi_display.c

index c02c0150960c2be2ee2324c680d86d258f09b4f2..c1b4cf5c2f9125b0c464c1e7758dec27b99e20ff 100644 (file)
@@ -46,28 +46,33 @@ static int gpio_init(void)
        sunxi_gpio_set_cfgpin(SUNXI_GPB(22), SUNXI_GPIO_INPUT);
        sunxi_gpio_set_cfgpin(SUNXI_GPB(23), SUNXI_GPIO_INPUT);
 #endif
-       sunxi_gpio_set_cfgpin(SUNXI_GPF(2), SUNXI_GPF2_UART0_TX);
-       sunxi_gpio_set_cfgpin(SUNXI_GPF(4), SUNXI_GPF4_UART0_RX);
+#if defined(CONFIG_MACH_SUN8I)
+       sunxi_gpio_set_cfgpin(SUNXI_GPF(2), SUN8I_GPF_UART0_TX);
+       sunxi_gpio_set_cfgpin(SUNXI_GPF(4), SUN8I_GPF_UART0_RX);
+#else
+       sunxi_gpio_set_cfgpin(SUNXI_GPF(2), SUNXI_GPF_UART0_TX);
+       sunxi_gpio_set_cfgpin(SUNXI_GPF(4), SUNXI_GPF_UART0_RX);
+#endif
        sunxi_gpio_set_pull(SUNXI_GPF(4), 1);
 #elif CONFIG_CONS_INDEX == 1 && (defined(CONFIG_MACH_SUN4I) || defined(CONFIG_MACH_SUN7I))
-       sunxi_gpio_set_cfgpin(SUNXI_GPB(22), SUN4I_GPB22_UART0_TX);
-       sunxi_gpio_set_cfgpin(SUNXI_GPB(23), SUN4I_GPB23_UART0_RX);
+       sunxi_gpio_set_cfgpin(SUNXI_GPB(22), SUN4I_GPB_UART0);
+       sunxi_gpio_set_cfgpin(SUNXI_GPB(23), SUN4I_GPB_UART0);
        sunxi_gpio_set_pull(SUNXI_GPB(23), SUNXI_GPIO_PULL_UP);
 #elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_MACH_SUN5I)
-       sunxi_gpio_set_cfgpin(SUNXI_GPB(19), SUN5I_GPB19_UART0_TX);
-       sunxi_gpio_set_cfgpin(SUNXI_GPB(20), SUN5I_GPB20_UART0_RX);
+       sunxi_gpio_set_cfgpin(SUNXI_GPB(19), SUN5I_GPB_UART0);
+       sunxi_gpio_set_cfgpin(SUNXI_GPB(20), SUN5I_GPB_UART0);
        sunxi_gpio_set_pull(SUNXI_GPB(20), SUNXI_GPIO_PULL_UP);
 #elif CONFIG_CONS_INDEX == 1 && defined(CONFIG_MACH_SUN6I)
-       sunxi_gpio_set_cfgpin(SUNXI_GPH(20), SUN6I_GPH20_UART0_TX);
-       sunxi_gpio_set_cfgpin(SUNXI_GPH(21), SUN6I_GPH21_UART0_RX);
+       sunxi_gpio_set_cfgpin(SUNXI_GPH(20), SUN6I_GPH_UART0);
+       sunxi_gpio_set_cfgpin(SUNXI_GPH(21), SUN6I_GPH_UART0);
        sunxi_gpio_set_pull(SUNXI_GPH(21), SUNXI_GPIO_PULL_UP);
 #elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN5I)
-       sunxi_gpio_set_cfgpin(SUNXI_GPG(3), SUN5I_GPG3_UART1_TX);
-       sunxi_gpio_set_cfgpin(SUNXI_GPG(4), SUN5I_GPG4_UART1_RX);
+       sunxi_gpio_set_cfgpin(SUNXI_GPG(3), SUN5I_GPG_UART1);
+       sunxi_gpio_set_cfgpin(SUNXI_GPG(4), SUN5I_GPG_UART1);
        sunxi_gpio_set_pull(SUNXI_GPG(4), SUNXI_GPIO_PULL_UP);
 #elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_MACH_SUN8I)
-       sunxi_gpio_set_cfgpin(SUNXI_GPL(2), SUN8I_GPL2_R_UART_TX);
-       sunxi_gpio_set_cfgpin(SUNXI_GPL(3), SUN8I_GPL3_R_UART_RX);
+       sunxi_gpio_set_cfgpin(SUNXI_GPL(2), SUN8I_GPL_R_UART);
+       sunxi_gpio_set_cfgpin(SUNXI_GPL(3), SUN8I_GPL_R_UART);
        sunxi_gpio_set_pull(SUNXI_GPL(3), SUNXI_GPIO_PULL_UP);
 #else
 #error Unsupported console port number. Please fix pin mux settings in board.c
index b00befb30119bf547a56270a106359f5bf61c81c..f115a9cac41ecaa66260f5111f48a771b92d139e 100644 (file)
@@ -21,15 +21,15 @@ static int rsb_set_device_mode(void);
 static void rsb_cfg_io(void)
 {
 #ifdef CONFIG_MACH_SUN8I
-       sunxi_gpio_set_cfgpin(SUNXI_GPL(0), SUN8I_GPL0_R_RSB_SCK);
-       sunxi_gpio_set_cfgpin(SUNXI_GPL(1), SUN8I_GPL1_R_RSB_SDA);
+       sunxi_gpio_set_cfgpin(SUNXI_GPL(0), SUN8I_GPL_R_RSB);
+       sunxi_gpio_set_cfgpin(SUNXI_GPL(1), SUN8I_GPL_R_RSB);
        sunxi_gpio_set_pull(SUNXI_GPL(0), 1);
        sunxi_gpio_set_pull(SUNXI_GPL(1), 1);
        sunxi_gpio_set_drv(SUNXI_GPL(0), 2);
        sunxi_gpio_set_drv(SUNXI_GPL(1), 2);
 #elif defined CONFIG_MACH_SUN9I
-       sunxi_gpio_set_cfgpin(SUNXI_GPN(0), SUN9I_GPN0_R_RSB_SCK);
-       sunxi_gpio_set_cfgpin(SUNXI_GPN(1), SUN9I_GPN1_R_RSB_SDA);
+       sunxi_gpio_set_cfgpin(SUNXI_GPN(0), SUN9I_GPN_R_RSB);
+       sunxi_gpio_set_cfgpin(SUNXI_GPN(1), SUN9I_GPN_R_RSB);
        sunxi_gpio_set_pull(SUNXI_GPN(0), 1);
        sunxi_gpio_set_pull(SUNXI_GPN(1), 1);
        sunxi_gpio_set_drv(SUNXI_GPN(0), 2);
index 3a4b8c3165eedefd4aa12ecc4b7211fb51da295e..a6b15d61021941c4a7b85d41faf666df0a9548c1 100644 (file)
@@ -142,59 +142,37 @@ enum sunxi_gpio_number {
 #define SUNXI_GPIO_INPUT       0
 #define SUNXI_GPIO_OUTPUT      1
 
-#define SUNXI_GPA0_EMAC                2
-#define SUN6I_GPA0_GMAC                2
-#define SUN7I_GPA0_GMAC                5
+#define SUNXI_GPA_EMAC         2
+#define SUN6I_GPA_GMAC         2
+#define SUN7I_GPA_GMAC         5
 
-#define SUNXI_GPB0_TWI0                2
+#define SUNXI_GPB_TWI0         2
+#define SUN4I_GPB_UART0                2
+#define SUN5I_GPB_UART0                2
 
-#define SUN4I_GPB22_UART0_TX   2
-#define SUN4I_GPB23_UART0_RX   2
+#define SUNXI_GPC_SDC2         3
 
-#define SUN5I_GPB19_UART0_TX   2
-#define SUN5I_GPB20_UART0_RX   2
+#define SUNXI_GPD_LCD0         2
+#define SUNXI_GPD_LVDS0                3
 
-#define SUNXI_GPC6_SDC2                3
+#define SUNXI_GPF_SDC0         2
+#define SUNXI_GPF_UART0                4
+#define SUN8I_GPF_UART0                3
 
-#define SUNXI_GPD0_LCD0                2
-#define SUNXI_GPD0_LVDS0       3
+#define SUN5I_GPG_SDC1         2
+#define SUN5I_GPG_UART1                4
 
-#define SUNXI_GPF0_SDC0                2
+#define SUN6I_GPH_UART0                2
 
-#define SUNXI_GPF2_SDC0                2
-
-#ifdef CONFIG_MACH_SUN8I
-#define SUNXI_GPF2_UART0_TX    3
-#define SUNXI_GPF4_UART0_RX    3
-#else
-#define SUNXI_GPF2_UART0_TX    4
-#define SUNXI_GPF4_UART0_RX    4
-#endif
-
-#define SUN4I_GPG0_SDC1                4
-
-#define SUN5I_GPG3_SDC1                2
-
-#define SUN5I_GPG3_UART1_TX    4
-#define SUN5I_GPG4_UART1_RX    4
-
-#define SUN4I_GPH22_SDC1       5
-
-#define SUN6I_GPH20_UART0_TX   2
-#define SUN6I_GPH21_UART0_RX   2
-
-#define SUN4I_GPI4_SDC3                2
+#define SUN4I_GPI_SDC3         2
 
 #define SUN6I_GPL0_R_P2WI_SCK  3
 #define SUN6I_GPL1_R_P2WI_SDA  3
 
-#define SUN8I_GPL0_R_RSB_SCK   2
-#define SUN8I_GPL1_R_RSB_SDA   2
-#define SUN8I_GPL2_R_UART_TX   2
-#define SUN8I_GPL3_R_UART_RX   2
+#define SUN8I_GPL_R_RSB                2
+#define SUN8I_GPL_R_UART       2
 
-#define SUN9I_GPN0_R_RSB_SCK   3
-#define SUN9I_GPN1_R_RSB_SDA   3
+#define SUN9I_GPN_R_RSB                3
 
 /* GPIO pin pull-up/down config */
 #define SUNXI_GPIO_PULL_DISABLE        0
index 3b419b398b8faa86d2ec7a5ee7bff3ab17aa3652..af8cf1104db12c54ddd6236193b25663a1ad8202 100644 (file)
@@ -76,7 +76,7 @@ static void mmc_pinmux_setup(int sdc)
        case 0:
                /* D1-PF0, D0-PF1, CLK-PF2, CMD-PF3, D3-PF4, D4-PF5 */
                for (pin = SUNXI_GPF(0); pin <= SUNXI_GPF(5); pin++) {
-                       sunxi_gpio_set_cfgpin(pin, SUNXI_GPF0_SDC0);
+                       sunxi_gpio_set_cfgpin(pin, SUNXI_GPF_SDC0);
                        sunxi_gpio_set_pull(pin, SUNXI_GPIO_PULL_UP);
                        sunxi_gpio_set_drv(pin, 2);
                }
@@ -85,7 +85,7 @@ static void mmc_pinmux_setup(int sdc)
        case 1:
                /* CMD-PG3, CLK-PG4, D0~D3-PG5-8 */
                for (pin = SUNXI_GPG(3); pin <= SUNXI_GPG(8); pin++) {
-                       sunxi_gpio_set_cfgpin(pin, SUN5I_GPG3_SDC1);
+                       sunxi_gpio_set_cfgpin(pin, SUN5I_GPG_SDC1);
                        sunxi_gpio_set_pull(pin, SUNXI_GPIO_PULL_UP);
                        sunxi_gpio_set_drv(pin, 2);
                }
@@ -94,7 +94,7 @@ static void mmc_pinmux_setup(int sdc)
        case 2:
                /* CMD-PC6, CLK-PC7, D0-PC8, D1-PC9, D2-PC10, D3-PC11 */
                for (pin = SUNXI_GPC(6); pin <= SUNXI_GPC(11); pin++) {
-                       sunxi_gpio_set_cfgpin(pin, SUNXI_GPC6_SDC2);
+                       sunxi_gpio_set_cfgpin(pin, SUNXI_GPC_SDC2);
                        sunxi_gpio_set_pull(pin, SUNXI_GPIO_PULL_UP);
                        sunxi_gpio_set_drv(pin, 2);
                }
@@ -103,7 +103,7 @@ static void mmc_pinmux_setup(int sdc)
        case 3:
                /* CMD-PI4, CLK-PI5, D0~D3-PI6~9 : 2 */
                for (pin = SUNXI_GPI(4); pin <= SUNXI_GPI(9); pin++) {
-                       sunxi_gpio_set_cfgpin(pin, SUN4I_GPI4_SDC3);
+                       sunxi_gpio_set_cfgpin(pin, SUN4I_GPI_SDC3);
                        sunxi_gpio_set_pull(pin, SUNXI_GPIO_PULL_UP);
                        sunxi_gpio_set_drv(pin, 2);
                }
@@ -155,8 +155,8 @@ int board_mmc_init(bd_t *bis)
 
 void i2c_init_board(void)
 {
-       sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUNXI_GPB0_TWI0);
-       sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUNXI_GPB0_TWI0);
+       sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUNXI_GPB_TWI0);
+       sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUNXI_GPB_TWI0);
        clock_twi_onoff(0, 1);
 #if defined CONFIG_VIDEO_LCD_PANEL_I2C && !(defined CONFIG_SPL_BUILD)
        soft_i2c_gpio_sda = sunxi_name_to_gpio(CONFIG_VIDEO_LCD_PANEL_I2C_SDA);
index 884913262792900bb58fd258050e496921f93804..63a7360b6d2687adb5527590c77dddc8a9c08121 100644 (file)
@@ -39,45 +39,45 @@ int sunxi_gmac_initialize(bd_t *bis)
                if (pin == SUNXI_GPA(9) || pin == SUNXI_GPA(14))
                        continue;
 #endif
-               sunxi_gpio_set_cfgpin(pin, SUN7I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN7I_GPA_GMAC);
                sunxi_gpio_set_drv(pin, 3);
        }
 #elif defined CONFIG_RGMII
        /* Configure sun6i RGMII mode pin mux settings */
        for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(3); pin++) {
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
                sunxi_gpio_set_drv(pin, 3);
        }
        for (pin = SUNXI_GPA(9); pin <= SUNXI_GPA(14); pin++) {
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
                sunxi_gpio_set_drv(pin, 3);
        }
        for (pin = SUNXI_GPA(19); pin <= SUNXI_GPA(20); pin++) {
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
                sunxi_gpio_set_drv(pin, 3);
        }
        for (pin = SUNXI_GPA(25); pin <= SUNXI_GPA(27); pin++) {
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
                sunxi_gpio_set_drv(pin, 3);
        }
 #elif defined CONFIG_GMII
        /* Configure sun6i GMII mode pin mux settings */
        for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(27); pin++) {
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
                sunxi_gpio_set_drv(pin, 2);
        }
 #else
        /* Configure sun6i MII mode pin mux settings */
        for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(3); pin++)
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
        for (pin = SUNXI_GPA(8); pin <= SUNXI_GPA(9); pin++)
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
        for (pin = SUNXI_GPA(11); pin <= SUNXI_GPA(14); pin++)
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
        for (pin = SUNXI_GPA(19); pin <= SUNXI_GPA(24); pin++)
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
        for (pin = SUNXI_GPA(26); pin <= SUNXI_GPA(27); pin++)
-               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA0_GMAC);
+               sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
 #endif
 
 #ifdef CONFIG_RGMII
index 5a06d68af70804b35812b396ea53d58abf54f7e0..2a9fd56c95fe503c434cb21b1623693404e28bec 100644 (file)
@@ -497,7 +497,7 @@ int sunxi_emac_initialize(void)
 
        /* Configure pin mux settings for MII Ethernet */
        for (pin = SUNXI_GPA(0); pin <= SUNXI_GPA(17); pin++)
-               sunxi_gpio_set_cfgpin(pin, SUNXI_GPA0_EMAC);
+               sunxi_gpio_set_cfgpin(pin, SUNXI_GPA_EMAC);
 
        /* Set up clock gating */
        setbits_le32(&ccm->ahb_gate0, 0x1 << AHB_GATE_OFFSET_EMAC);
index 4e12150027a573a8fa5a083479270529cd940346..d2341b0e36b24aefae427d325abb6a2d712b3b2f 100644 (file)
@@ -665,10 +665,10 @@ static void sunxi_lcdc_tcon0_mode_set(const struct ctfb_res_modes *mode,
 
        for (pin = SUNXI_GPD(0); pin <= SUNXI_GPD(27); pin++)
 #ifdef CONFIG_VIDEO_LCD_IF_PARALLEL
-               sunxi_gpio_set_cfgpin(pin, SUNXI_GPD0_LCD0);
+               sunxi_gpio_set_cfgpin(pin, SUNXI_GPD_LCD0);
 #endif
 #ifdef CONFIG_VIDEO_LCD_IF_LVDS
-               sunxi_gpio_set_cfgpin(pin, SUNXI_GPD0_LVDS0);
+               sunxi_gpio_set_cfgpin(pin, SUNXI_GPD_LVDS0);
 #endif
 
        sunxi_lcdc_pll_set(0, mode->pixclock_khz, &clk_div, &clk_double);
@@ -779,8 +779,8 @@ static void sunxi_lcdc_tcon1_mode_set(const struct ctfb_res_modes *mode,
               &lcdc->tcon1_timing_sync);
 
        if (use_portd_hvsync) {
-               sunxi_gpio_set_cfgpin(SUNXI_GPD(26), SUNXI_GPD0_LCD0);
-               sunxi_gpio_set_cfgpin(SUNXI_GPD(27), SUNXI_GPD0_LCD0);
+               sunxi_gpio_set_cfgpin(SUNXI_GPD(26), SUNXI_GPD_LCD0);
+               sunxi_gpio_set_cfgpin(SUNXI_GPD(27), SUNXI_GPD_LCD0);
 
                val = 0;
                if (mode->sync & FB_SYNC_HOR_HIGH_ACT)