1*8883ddafSNikita Kiryanov /*
2*8883ddafSNikita Kiryanov * Copyright (C) 2015 Compulab, Ltd.
3*8883ddafSNikita Kiryanov *
4*8883ddafSNikita Kiryanov * SPDX-License-Identifier: GPL-2.0+
5*8883ddafSNikita Kiryanov */
6*8883ddafSNikita Kiryanov
7*8883ddafSNikita Kiryanov #include <common.h>
8*8883ddafSNikita Kiryanov #include <asm/arch/sys_proto.h>
9*8883ddafSNikita Kiryanov #include <asm/arch/mux.h>
10*8883ddafSNikita Kiryanov #include "board.h"
11*8883ddafSNikita Kiryanov
12*8883ddafSNikita Kiryanov static struct module_pin_mux rgmii1_pin_mux[] = {
13*8883ddafSNikita Kiryanov {OFFSET(mii1_txen), MODE(2)},
14*8883ddafSNikita Kiryanov {OFFSET(mii1_txd3), MODE(2)},
15*8883ddafSNikita Kiryanov {OFFSET(mii1_txd2), MODE(2)},
16*8883ddafSNikita Kiryanov {OFFSET(mii1_txd1), MODE(2)},
17*8883ddafSNikita Kiryanov {OFFSET(mii1_txd0), MODE(2)},
18*8883ddafSNikita Kiryanov {OFFSET(mii1_txclk), MODE(2)},
19*8883ddafSNikita Kiryanov {OFFSET(mii1_rxdv), MODE(2) | RXACTIVE | PULLDOWN_EN},
20*8883ddafSNikita Kiryanov {OFFSET(mii1_rxclk), MODE(2) | RXACTIVE | PULLDOWN_EN},
21*8883ddafSNikita Kiryanov {OFFSET(mii1_rxd3), MODE(2) | RXACTIVE | PULLDOWN_EN},
22*8883ddafSNikita Kiryanov {OFFSET(mii1_rxd2), MODE(2) | RXACTIVE | PULLDOWN_EN},
23*8883ddafSNikita Kiryanov {OFFSET(mii1_rxd1), MODE(2) | RXACTIVE | PULLDOWN_EN},
24*8883ddafSNikita Kiryanov {OFFSET(mii1_rxd0), MODE(2) | RXACTIVE | PULLDOWN_EN},
25*8883ddafSNikita Kiryanov {-1},
26*8883ddafSNikita Kiryanov };
27*8883ddafSNikita Kiryanov
28*8883ddafSNikita Kiryanov static struct module_pin_mux rgmii2_pin_mux[] = {
29*8883ddafSNikita Kiryanov {OFFSET(gpmc_a0), MODE(2)}, /* txen */
30*8883ddafSNikita Kiryanov {OFFSET(gpmc_a2), MODE(2)}, /* txd3 */
31*8883ddafSNikita Kiryanov {OFFSET(gpmc_a3), MODE(2)}, /* txd2 */
32*8883ddafSNikita Kiryanov {OFFSET(gpmc_a4), MODE(2)}, /* txd1 */
33*8883ddafSNikita Kiryanov {OFFSET(gpmc_a5), MODE(2)}, /* txd0 */
34*8883ddafSNikita Kiryanov {OFFSET(gpmc_a6), MODE(2)}, /* txclk */
35*8883ddafSNikita Kiryanov {OFFSET(gpmc_a1), MODE(2) | RXACTIVE | PULLDOWN_EN}, /* rxvd */
36*8883ddafSNikita Kiryanov {OFFSET(gpmc_a7), MODE(2) | RXACTIVE | PULLDOWN_EN}, /* rxclk */
37*8883ddafSNikita Kiryanov {OFFSET(gpmc_a8), MODE(2) | RXACTIVE | PULLDOWN_EN}, /* rxd3 */
38*8883ddafSNikita Kiryanov {OFFSET(gpmc_a9), MODE(2) | RXACTIVE | PULLDOWN_EN}, /* rxd2 */
39*8883ddafSNikita Kiryanov {OFFSET(gpmc_a10), MODE(2) | RXACTIVE | PULLDOWN_EN}, /* rxd1 */
40*8883ddafSNikita Kiryanov {OFFSET(gpmc_a11), MODE(2) | RXACTIVE | PULLUP_EN}, /* rxd0 */
41*8883ddafSNikita Kiryanov {-1},
42*8883ddafSNikita Kiryanov };
43*8883ddafSNikita Kiryanov
44*8883ddafSNikita Kiryanov static struct module_pin_mux mdio_pin_mux[] = {
45*8883ddafSNikita Kiryanov {OFFSET(mdio_data), (MODE(0) | PULLUP_EN | RXACTIVE)},
46*8883ddafSNikita Kiryanov {OFFSET(mdio_clk), (MODE(0) | PULLUP_EN)},
47*8883ddafSNikita Kiryanov {-1},
48*8883ddafSNikita Kiryanov };
49*8883ddafSNikita Kiryanov
50*8883ddafSNikita Kiryanov static struct module_pin_mux uart0_pin_mux[] = {
51*8883ddafSNikita Kiryanov {OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE | SLEWCTRL)},
52*8883ddafSNikita Kiryanov {OFFSET(uart0_txd), (MODE(0) | PULLUDDIS | PULLUP_EN | SLEWCTRL)},
53*8883ddafSNikita Kiryanov {-1},
54*8883ddafSNikita Kiryanov };
55*8883ddafSNikita Kiryanov
56*8883ddafSNikita Kiryanov static struct module_pin_mux mmc0_pin_mux[] = {
57*8883ddafSNikita Kiryanov {OFFSET(mmc0_clk), (MODE(0) | PULLUDDIS | RXACTIVE)},
58*8883ddafSNikita Kiryanov {OFFSET(mmc0_cmd), (MODE(0) | PULLUP_EN | RXACTIVE)},
59*8883ddafSNikita Kiryanov {OFFSET(mmc0_dat0), (MODE(0) | PULLUP_EN | RXACTIVE)},
60*8883ddafSNikita Kiryanov {OFFSET(mmc0_dat1), (MODE(0) | PULLUP_EN | RXACTIVE)},
61*8883ddafSNikita Kiryanov {OFFSET(mmc0_dat2), (MODE(0) | PULLUP_EN | RXACTIVE)},
62*8883ddafSNikita Kiryanov {OFFSET(mmc0_dat3), (MODE(0) | PULLUP_EN | RXACTIVE)},
63*8883ddafSNikita Kiryanov {-1},
64*8883ddafSNikita Kiryanov };
65*8883ddafSNikita Kiryanov
66*8883ddafSNikita Kiryanov static struct module_pin_mux i2c_pin_mux[] = {
67*8883ddafSNikita Kiryanov {OFFSET(i2c0_sda), (MODE(0) | PULLUP_EN | RXACTIVE | SLEWCTRL)},
68*8883ddafSNikita Kiryanov {OFFSET(i2c0_scl), (MODE(0) | PULLUP_EN | RXACTIVE | SLEWCTRL)},
69*8883ddafSNikita Kiryanov {OFFSET(spi2_sclk), (MODE(1) | PULLUP_EN | RXACTIVE | SLEWCTRL)},
70*8883ddafSNikita Kiryanov {OFFSET(spi2_cs0), (MODE(1) | PULLUP_EN | RXACTIVE | SLEWCTRL)},
71*8883ddafSNikita Kiryanov {-1},
72*8883ddafSNikita Kiryanov };
73*8883ddafSNikita Kiryanov
74*8883ddafSNikita Kiryanov static struct module_pin_mux nand_pin_mux[] = {
75*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad0), (MODE(0) | PULLUDDIS | RXACTIVE)},
76*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad1), (MODE(0) | PULLUDDIS | RXACTIVE)},
77*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad2), (MODE(0) | PULLUDDIS | RXACTIVE)},
78*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad3), (MODE(0) | PULLUDDIS | RXACTIVE)},
79*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad4), (MODE(0) | PULLUDDIS | RXACTIVE)},
80*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad5), (MODE(0) | PULLUDDIS | RXACTIVE)},
81*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad6), (MODE(0) | PULLUDDIS | RXACTIVE)},
82*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad7), (MODE(0) | PULLUDDIS | RXACTIVE)},
83*8883ddafSNikita Kiryanov {OFFSET(gpmc_wait0), (MODE(0) | PULLUP_EN | RXACTIVE)},
84*8883ddafSNikita Kiryanov {OFFSET(gpmc_wpn), (MODE(0) | PULLUP_EN)},
85*8883ddafSNikita Kiryanov {OFFSET(gpmc_csn0), (MODE(0) | PULLUP_EN)},
86*8883ddafSNikita Kiryanov {OFFSET(gpmc_wen), (MODE(0) | PULLDOWN_EN)},
87*8883ddafSNikita Kiryanov {OFFSET(gpmc_oen_ren), (MODE(0) | PULLDOWN_EN)},
88*8883ddafSNikita Kiryanov {OFFSET(gpmc_advn_ale), (MODE(0) | PULLDOWN_EN)},
89*8883ddafSNikita Kiryanov {OFFSET(gpmc_be0n_cle), (MODE(0) | PULLDOWN_EN)},
90*8883ddafSNikita Kiryanov {-1},
91*8883ddafSNikita Kiryanov };
92*8883ddafSNikita Kiryanov
93*8883ddafSNikita Kiryanov static struct module_pin_mux emmc_pin_mux[] = {
94*8883ddafSNikita Kiryanov {OFFSET(gpmc_csn1), (MODE(2) | PULLUDDIS | RXACTIVE)}, /* EMMC_CLK */
95*8883ddafSNikita Kiryanov {OFFSET(gpmc_csn2), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_CMD */
96*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad8), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_DAT0 */
97*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad9), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_DAT1 */
98*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad10), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_DAT2 */
99*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad11), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_DAT3 */
100*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad12), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_DAT4 */
101*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad13), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_DAT5 */
102*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad14), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_DAT6 */
103*8883ddafSNikita Kiryanov {OFFSET(gpmc_ad15), (MODE(2) | PULLUP_EN | RXACTIVE)}, /* EMMC_DAT7 */
104*8883ddafSNikita Kiryanov {-1},
105*8883ddafSNikita Kiryanov };
106*8883ddafSNikita Kiryanov
107*8883ddafSNikita Kiryanov static struct module_pin_mux spi_flash_pin_mux[] = {
108*8883ddafSNikita Kiryanov {OFFSET(spi0_d0), (MODE(0) | RXACTIVE | PULLUDEN)},
109*8883ddafSNikita Kiryanov {OFFSET(spi0_d1), (MODE(0) | RXACTIVE | PULLUDEN)},
110*8883ddafSNikita Kiryanov {OFFSET(spi0_cs0), (MODE(0) | RXACTIVE | PULLUDEN)},
111*8883ddafSNikita Kiryanov {OFFSET(spi0_sclk), (MODE(0) | RXACTIVE | PULLUDEN)},
112*8883ddafSNikita Kiryanov {-1},
113*8883ddafSNikita Kiryanov };
114*8883ddafSNikita Kiryanov
set_uart_mux_conf(void)115*8883ddafSNikita Kiryanov void set_uart_mux_conf(void)
116*8883ddafSNikita Kiryanov {
117*8883ddafSNikita Kiryanov configure_module_pin_mux(uart0_pin_mux);
118*8883ddafSNikita Kiryanov }
119*8883ddafSNikita Kiryanov
set_mdio_pin_mux(void)120*8883ddafSNikita Kiryanov void set_mdio_pin_mux(void)
121*8883ddafSNikita Kiryanov {
122*8883ddafSNikita Kiryanov configure_module_pin_mux(mdio_pin_mux);
123*8883ddafSNikita Kiryanov }
124*8883ddafSNikita Kiryanov
set_rgmii_pin_mux(void)125*8883ddafSNikita Kiryanov void set_rgmii_pin_mux(void)
126*8883ddafSNikita Kiryanov {
127*8883ddafSNikita Kiryanov configure_module_pin_mux(rgmii1_pin_mux);
128*8883ddafSNikita Kiryanov configure_module_pin_mux(rgmii2_pin_mux);
129*8883ddafSNikita Kiryanov }
130*8883ddafSNikita Kiryanov
set_mux_conf_regs(void)131*8883ddafSNikita Kiryanov void set_mux_conf_regs(void)
132*8883ddafSNikita Kiryanov {
133*8883ddafSNikita Kiryanov configure_module_pin_mux(mmc0_pin_mux);
134*8883ddafSNikita Kiryanov configure_module_pin_mux(emmc_pin_mux);
135*8883ddafSNikita Kiryanov configure_module_pin_mux(i2c_pin_mux);
136*8883ddafSNikita Kiryanov configure_module_pin_mux(spi_flash_pin_mux);
137*8883ddafSNikita Kiryanov configure_module_pin_mux(nand_pin_mux);
138*8883ddafSNikita Kiryanov }
139*8883ddafSNikita Kiryanov
set_i2c_pin_mux(void)140*8883ddafSNikita Kiryanov void set_i2c_pin_mux(void)
141*8883ddafSNikita Kiryanov {
142*8883ddafSNikita Kiryanov configure_module_pin_mux(i2c_pin_mux);
143*8883ddafSNikita Kiryanov }
144