1 /* This file is part of the coreboot project. */
2 /* SPDX-License-Identifier: GPL-2.0-or-later */
6 #include <device/mmio.h>
8 static struct am335x_pinmux_regs
*regs
=
9 (struct am335x_pinmux_regs
*)(uintptr_t)AM335X_PINMUX_REG_ADDR
;
11 void am335x_pinmux_uart0(void)
13 write32(®s
->uart0_rxd
, MODE(0) | PULLUP_EN
| RXACTIVE
);
14 write32(®s
->uart0_txd
, MODE(0) | PULLUDEN
);
17 void am335x_pinmux_uart1(void)
19 write32(®s
->uart1_rxd
, MODE(0) | PULLUP_EN
| RXACTIVE
);
20 write32(®s
->uart1_txd
, MODE(0) | PULLUDEN
);
23 void am335x_pinmux_uart2(void)
26 write32(®s
->spi0_sclk
, MODE(1) | PULLUP_EN
| RXACTIVE
);
28 write32(®s
->spi0_d0
, MODE(1) | PULLUDEN
);
31 void am335x_pinmux_uart3(void)
34 write32(®s
->spi0_cs1
, MODE(1) | PULLUP_EN
| RXACTIVE
);
36 write32(®s
->ecap0_in_pwm0_out
, MODE(1) | PULLUDEN
);
39 void am335x_pinmux_uart4(void)
42 write32(®s
->gpmc_wait0
, MODE(6) | PULLUP_EN
| RXACTIVE
);
44 write32(®s
->gpmc_wpn
, MODE(6) | PULLUDEN
);
47 void am335x_pinmux_uart5(void)
50 write32(®s
->lcd_data9
, MODE(4) | PULLUP_EN
| RXACTIVE
);
52 write32(®s
->lcd_data8
, MODE(4) | PULLUDEN
);
55 void am335x_pinmux_mmc0(int cd
, int sk_evm
)
57 write32(®s
->mmc0_dat0
, MODE(0) | RXACTIVE
| PULLUP_EN
);
58 write32(®s
->mmc0_dat1
, MODE(0) | RXACTIVE
| PULLUP_EN
);
59 write32(®s
->mmc0_dat2
, MODE(0) | RXACTIVE
| PULLUP_EN
);
60 write32(®s
->mmc0_dat3
, MODE(0) | RXACTIVE
| PULLUP_EN
);
61 write32(®s
->mmc0_clk
, MODE(0) | RXACTIVE
| PULLUP_EN
);
62 write32(®s
->mmc0_cmd
, MODE(0) | RXACTIVE
| PULLUP_EN
);
65 write32(®s
->mcasp0_aclkr
, MODE(4) | RXACTIVE
);
69 write32(®s
->spi0_cs1
, MODE(5) | RXACTIVE
| PULLUP_EN
);
73 void am335x_pinmux_mmc1(void)
76 write32(®s
->gpmc_ad0
, MODE(1) | RXACTIVE
| PULLUP_EN
);
78 write32(®s
->gpmc_ad1
, MODE(1) | RXACTIVE
| PULLUP_EN
);
80 write32(®s
->gpmc_ad2
, MODE(1) | RXACTIVE
| PULLUP_EN
);
82 write32(®s
->gpmc_ad3
, MODE(1) | RXACTIVE
| PULLUP_EN
);
84 write32(®s
->gpmc_csn1
, MODE(2) | RXACTIVE
| PULLUP_EN
);
86 write32(®s
->gpmc_csn2
, MODE(2) | RXACTIVE
| PULLUP_EN
);
88 write32(®s
->gpmc_csn0
, MODE(7) | RXACTIVE
| PULLUP_EN
);
90 write32(®s
->gpmc_advn_ale
, MODE(7) | RXACTIVE
| PULLUP_EN
);
93 void am335x_pinmux_i2c0(void)
95 write32(®s
->i2c0_sda
, MODE(0) | RXACTIVE
| PULLUDEN
| SLEWCTRL
);
96 write32(®s
->i2c0_scl
, MODE(0) | RXACTIVE
| PULLUDEN
| SLEWCTRL
);
99 void am335x_pinmux_i2c1(void)
102 write32(®s
->spi0_d1
, MODE(2) | RXACTIVE
| PULLUDEN
| SLEWCTRL
);
104 write32(®s
->spi0_cs0
, MODE(2) | RXACTIVE
| PULLUDEN
| SLEWCTRL
);
107 void am335x_pinmux_spi0(void)
109 write32(®s
->spi0_sclk
, MODE(0) | RXACTIVE
| PULLUDEN
);
110 write32(®s
->spi0_d0
, MODE(0) | RXACTIVE
| PULLUDEN
| PULLUP_EN
);
111 write32(®s
->spi0_d1
, MODE(0) | RXACTIVE
| PULLUDEN
);
112 write32(®s
->spi0_cs0
, MODE(0) | RXACTIVE
| PULLUDEN
| PULLUP_EN
);
115 void am335x_pinmux_gpio0_7(void)
117 write32(®s
->ecap0_in_pwm0_out
, MODE(7) | PULLUDEN
);
120 void am335x_pinmux_rgmii1(void)
122 write32(®s
->mii1_txen
, MODE(2));
123 write32(®s
->mii1_rxdv
, MODE(2) | RXACTIVE
);
124 write32(®s
->mii1_txd0
, MODE(2));
125 write32(®s
->mii1_txd1
, MODE(2));
126 write32(®s
->mii1_txd2
, MODE(2));
127 write32(®s
->mii1_txd3
, MODE(2));
128 write32(®s
->mii1_txclk
, MODE(2));
129 write32(®s
->mii1_rxclk
, MODE(2) | RXACTIVE
);
130 write32(®s
->mii1_rxd0
, MODE(2) | RXACTIVE
);
131 write32(®s
->mii1_rxd1
, MODE(2) | RXACTIVE
);
132 write32(®s
->mii1_rxd2
, MODE(2) | RXACTIVE
);
133 write32(®s
->mii1_rxd3
, MODE(2) | RXACTIVE
);
136 void am335x_pinmux_mii1(void)
138 write32(®s
->mii1_rxerr
, MODE(0) | RXACTIVE
);
139 write32(®s
->mii1_txen
, MODE(0));
140 write32(®s
->mii1_rxdv
, MODE(0) | RXACTIVE
);
141 write32(®s
->mii1_txd0
, MODE(0));
142 write32(®s
->mii1_txd1
, MODE(0));
143 write32(®s
->mii1_txd2
, MODE(0));
144 write32(®s
->mii1_txd3
, MODE(0));
145 write32(®s
->mii1_txclk
, MODE(0) | RXACTIVE
);
146 write32(®s
->mii1_rxclk
, MODE(0) | RXACTIVE
);
147 write32(®s
->mii1_rxd0
, MODE(0) | RXACTIVE
);
148 write32(®s
->mii1_rxd1
, MODE(0) | RXACTIVE
);
149 write32(®s
->mii1_rxd2
, MODE(0) | RXACTIVE
);
150 write32(®s
->mii1_rxd3
, MODE(0) | RXACTIVE
);
151 write32(®s
->mdio_data
, MODE(0) | RXACTIVE
| PULLUP_EN
);
152 write32(®s
->mdio_clk
, MODE(0) | PULLUP_EN
);
155 void am335x_pinmux_nand(void)
157 write32(®s
->gpmc_ad0
, MODE(0) | PULLUP_EN
| RXACTIVE
);
158 write32(®s
->gpmc_ad1
, MODE(0) | PULLUP_EN
| RXACTIVE
);
159 write32(®s
->gpmc_ad2
, MODE(0) | PULLUP_EN
| RXACTIVE
);
160 write32(®s
->gpmc_ad3
, MODE(0) | PULLUP_EN
| RXACTIVE
);
161 write32(®s
->gpmc_ad4
, MODE(0) | PULLUP_EN
| RXACTIVE
);
162 write32(®s
->gpmc_ad5
, MODE(0) | PULLUP_EN
| RXACTIVE
);
163 write32(®s
->gpmc_ad6
, MODE(0) | PULLUP_EN
| RXACTIVE
);
164 write32(®s
->gpmc_ad7
, MODE(0) | PULLUP_EN
| RXACTIVE
);
165 write32(®s
->gpmc_wait0
, MODE(0) | RXACTIVE
| PULLUP_EN
);
166 write32(®s
->gpmc_wpn
, MODE(7) | PULLUP_EN
| RXACTIVE
);
167 write32(®s
->gpmc_csn0
, MODE(0) | PULLUDEN
);
168 write32(®s
->gpmc_advn_ale
, MODE(0) | PULLUDEN
);
169 write32(®s
->gpmc_oen_ren
, MODE(0) | PULLUDEN
);
170 write32(®s
->gpmc_wen
, MODE(0) | PULLUDEN
);
171 write32(®s
->gpmc_be0n_cle
, MODE(0) | PULLUDEN
);