xref: /rk3399_rockchip-uboot/board/compulab/cm_t43/mux.c (revision 8883ddafdeb398443870b7996a22cb65fd6d4bb4)
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