xref: /OK3568_Linux_fs/u-boot/arch/arm/mach-davinci/da850_pinmux.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Pinmux configurations for the DA850 SoCs
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Copyright (C) 2011 OMICRON electronics GmbH
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include <common.h>
10*4882a593Smuzhiyun #include <asm/arch/davinci_misc.h>
11*4882a593Smuzhiyun #include <asm/arch/hardware.h>
12*4882a593Smuzhiyun #include <asm/arch/pinmux_defs.h>
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /* SPI pin muxer settings */
15*4882a593Smuzhiyun const struct pinmux_config spi0_pins_base[] = {
16*4882a593Smuzhiyun 	{ pinmux(3), 1, 0 }, /* SPI0_CLK */
17*4882a593Smuzhiyun 	{ pinmux(3), 1, 2 }, /* SPI0_SOMI */
18*4882a593Smuzhiyun 	{ pinmux(3), 1, 3 }, /* SPI0_SIMO */
19*4882a593Smuzhiyun };
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun const struct pinmux_config spi0_pins_scs0[] = {
22*4882a593Smuzhiyun 	{ pinmux(4), 1, 1 }, /* SPI0_SCS[0] */
23*4882a593Smuzhiyun };
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun const struct pinmux_config spi1_pins_base[] = {
26*4882a593Smuzhiyun 	{ pinmux(5), 1, 2 }, /* SPI1_CLK */
27*4882a593Smuzhiyun 	{ pinmux(5), 1, 4 }, /* SPI1_SOMI */
28*4882a593Smuzhiyun 	{ pinmux(5), 1, 5 }, /* SPI1_SIMO */
29*4882a593Smuzhiyun };
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun const struct pinmux_config spi1_pins_scs0[] = {
32*4882a593Smuzhiyun 	{ pinmux(5), 1, 1 }, /* SPI1_SCS[0] */
33*4882a593Smuzhiyun };
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun /* UART pin muxer settings */
36*4882a593Smuzhiyun const struct pinmux_config uart0_pins_txrx[] = {
37*4882a593Smuzhiyun 	{ pinmux(3), 2, 4 }, /* UART0_RXD */
38*4882a593Smuzhiyun 	{ pinmux(3), 2, 5 }, /* UART0_TXD */
39*4882a593Smuzhiyun };
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun const struct pinmux_config uart0_pins_rtscts[] = {
42*4882a593Smuzhiyun 	{ pinmux(3), 2, 6 },
43*4882a593Smuzhiyun 	{ pinmux(3), 2, 7 },
44*4882a593Smuzhiyun };
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun const struct pinmux_config uart1_pins_txrx[] = {
47*4882a593Smuzhiyun 	{ pinmux(4), 2, 6 }, /* UART1_RXD */
48*4882a593Smuzhiyun 	{ pinmux(4), 2, 7 }, /* UART1_TXD */
49*4882a593Smuzhiyun };
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun const struct pinmux_config uart2_pins_txrx[] = {
52*4882a593Smuzhiyun 	{ pinmux(4), 2, 4 }, /* UART2_RXD */
53*4882a593Smuzhiyun 	{ pinmux(4), 2, 5 }, /* UART2_TXD */
54*4882a593Smuzhiyun };
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun const struct pinmux_config uart2_pins_rtscts[] = {
57*4882a593Smuzhiyun 	{ pinmux(0), 4, 6 }, /* UART2_RTS */
58*4882a593Smuzhiyun 	{ pinmux(0), 4, 7 }, /* UART2_CTS */
59*4882a593Smuzhiyun };
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun /* EMAC pin muxer settings*/
62*4882a593Smuzhiyun const struct pinmux_config emac_pins_rmii[] = {
63*4882a593Smuzhiyun 	{ pinmux(14), 8, 2 }, /* RMII_TXD[1] */
64*4882a593Smuzhiyun 	{ pinmux(14), 8, 3 }, /* RMII_TXD[0] */
65*4882a593Smuzhiyun 	{ pinmux(14), 8, 4 }, /* RMII_TXEN */
66*4882a593Smuzhiyun 	{ pinmux(14), 8, 5 }, /* RMII_RXD[1] */
67*4882a593Smuzhiyun 	{ pinmux(14), 8, 6 }, /* RMII_RXD[0] */
68*4882a593Smuzhiyun 	{ pinmux(14), 8, 7 }, /* RMII_RXER */
69*4882a593Smuzhiyun 	{ pinmux(15), 0, 0 }, /* RMII_MHz_50_CLK */
70*4882a593Smuzhiyun 	{ pinmux(15), 8, 1 }, /* RMII_CRS_DV */
71*4882a593Smuzhiyun };
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun const struct pinmux_config emac_pins_mii[] = {
74*4882a593Smuzhiyun 	{ pinmux(2), 8, 1 }, /* MII_TXEN */
75*4882a593Smuzhiyun 	{ pinmux(2), 8, 2 }, /* MII_TXCLK */
76*4882a593Smuzhiyun 	{ pinmux(2), 8, 3 }, /* MII_COL */
77*4882a593Smuzhiyun 	{ pinmux(2), 8, 4 }, /* MII_TXD[3] */
78*4882a593Smuzhiyun 	{ pinmux(2), 8, 5 }, /* MII_TXD[2] */
79*4882a593Smuzhiyun 	{ pinmux(2), 8, 6 }, /* MII_TXD[1] */
80*4882a593Smuzhiyun 	{ pinmux(2), 8, 7 }, /* MII_TXD[0] */
81*4882a593Smuzhiyun 	{ pinmux(3), 8, 0 }, /* MII_RXCLK */
82*4882a593Smuzhiyun 	{ pinmux(3), 8, 1 }, /* MII_RXDV */
83*4882a593Smuzhiyun 	{ pinmux(3), 8, 2 }, /* MII_RXER */
84*4882a593Smuzhiyun 	{ pinmux(3), 8, 3 }, /* MII_CRS */
85*4882a593Smuzhiyun 	{ pinmux(3), 8, 4 }, /* MII_RXD[3] */
86*4882a593Smuzhiyun 	{ pinmux(3), 8, 5 }, /* MII_RXD[2] */
87*4882a593Smuzhiyun 	{ pinmux(3), 8, 6 }, /* MII_RXD[1] */
88*4882a593Smuzhiyun 	{ pinmux(3), 8, 7 }, /* MII_RXD[0] */
89*4882a593Smuzhiyun };
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun const struct pinmux_config emac_pins_mdio[] = {
92*4882a593Smuzhiyun 	{ pinmux(4), 8, 0 }, /* MDIO_CLK */
93*4882a593Smuzhiyun 	{ pinmux(4), 8, 1 }, /* MDIO_D */
94*4882a593Smuzhiyun };
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun /* I2C pin muxer settings */
97*4882a593Smuzhiyun const struct pinmux_config i2c0_pins[] = {
98*4882a593Smuzhiyun 	{ pinmux(4), 2, 2 }, /* I2C0_SCL */
99*4882a593Smuzhiyun 	{ pinmux(4), 2, 3 }, /* I2C0_SDA */
100*4882a593Smuzhiyun };
101*4882a593Smuzhiyun 
102*4882a593Smuzhiyun const struct pinmux_config i2c1_pins[] = {
103*4882a593Smuzhiyun 	{ pinmux(4), 4, 4 }, /* I2C1_SCL */
104*4882a593Smuzhiyun 	{ pinmux(4), 4, 5 }, /* I2C1_SDA */
105*4882a593Smuzhiyun };
106*4882a593Smuzhiyun 
107*4882a593Smuzhiyun /* EMIFA pin muxer settings */
108*4882a593Smuzhiyun const struct pinmux_config emifa_pins_cs2[] = {
109*4882a593Smuzhiyun 	{ pinmux(7), 1, 0 }, /* EMA_CS2 */
110*4882a593Smuzhiyun };
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun const struct pinmux_config emifa_pins_cs3[] = {
113*4882a593Smuzhiyun 	{ pinmux(7), 1, 1 }, /* EMA_CS[3] */
114*4882a593Smuzhiyun };
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun const struct pinmux_config emifa_pins_cs4[] = {
117*4882a593Smuzhiyun 	{ pinmux(7), 1, 2 }, /* EMA_CS[4] */
118*4882a593Smuzhiyun };
119*4882a593Smuzhiyun 
120*4882a593Smuzhiyun const struct pinmux_config emifa_pins_nand[] = {
121*4882a593Smuzhiyun 	{ pinmux(7), 1, 4 },  /* EMA_WE */
122*4882a593Smuzhiyun 	{ pinmux(7), 1, 5 },  /* EMA_OE */
123*4882a593Smuzhiyun 	{ pinmux(9), 1, 0 },  /* EMA_D[7] */
124*4882a593Smuzhiyun 	{ pinmux(9), 1, 1 },  /* EMA_D[6] */
125*4882a593Smuzhiyun 	{ pinmux(9), 1, 2 },  /* EMA_D[5] */
126*4882a593Smuzhiyun 	{ pinmux(9), 1, 3 },  /* EMA_D[4] */
127*4882a593Smuzhiyun 	{ pinmux(9), 1, 4 },  /* EMA_D[3] */
128*4882a593Smuzhiyun 	{ pinmux(9), 1, 5 },  /* EMA_D[2] */
129*4882a593Smuzhiyun 	{ pinmux(9), 1, 6 },  /* EMA_D[1] */
130*4882a593Smuzhiyun 	{ pinmux(9), 1, 7 },  /* EMA_D[0] */
131*4882a593Smuzhiyun 	{ pinmux(12), 1, 5 }, /* EMA_A[2] */
132*4882a593Smuzhiyun 	{ pinmux(12), 1, 6 }, /* EMA_A[1] */
133*4882a593Smuzhiyun };
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun /* NOR pin muxer settings */
136*4882a593Smuzhiyun const struct pinmux_config emifa_pins_nor[] = {
137*4882a593Smuzhiyun 	{ pinmux(5), 1, 6 },  /* EMA_BA[1] */
138*4882a593Smuzhiyun 	{ pinmux(6), 1, 6 },  /* EMA_WAIT[1] */
139*4882a593Smuzhiyun 	{ pinmux(7), 1, 4 },  /* EMA_WE */
140*4882a593Smuzhiyun 	{ pinmux(7), 1, 5 },  /* EMA_OE */
141*4882a593Smuzhiyun 	{ pinmux(8), 1, 0 },  /* EMA_D[15] */
142*4882a593Smuzhiyun 	{ pinmux(8), 1, 1 },  /* EMA_D[14] */
143*4882a593Smuzhiyun 	{ pinmux(8), 1, 2 },  /* EMA_D[13] */
144*4882a593Smuzhiyun 	{ pinmux(8), 1, 3 },  /* EMA_D[12] */
145*4882a593Smuzhiyun 	{ pinmux(8), 1, 4 },  /* EMA_D[11] */
146*4882a593Smuzhiyun 	{ pinmux(8), 1, 5 },  /* EMA_D[10] */
147*4882a593Smuzhiyun 	{ pinmux(8), 1, 6 },  /* EMA_D[9] */
148*4882a593Smuzhiyun 	{ pinmux(8), 1, 7 },  /* EMA_D[8] */
149*4882a593Smuzhiyun 	{ pinmux(9), 1, 0 },  /* EMA_D[7] */
150*4882a593Smuzhiyun 	{ pinmux(9), 1, 1 },  /* EMA_D[6] */
151*4882a593Smuzhiyun 	{ pinmux(9), 1, 2 },  /* EMA_D[5] */
152*4882a593Smuzhiyun 	{ pinmux(9), 1, 3 },  /* EMA_D[4] */
153*4882a593Smuzhiyun 	{ pinmux(9), 1, 4 },  /* EMA_D[3] */
154*4882a593Smuzhiyun 	{ pinmux(9), 1, 5 },  /* EMA_D[2] */
155*4882a593Smuzhiyun 	{ pinmux(9), 1, 6 },  /* EMA_D[1] */
156*4882a593Smuzhiyun 	{ pinmux(9), 1, 7 },  /* EMA_D[0] */
157*4882a593Smuzhiyun 	{ pinmux(10), 1, 1 }, /* EMA_A[22] */
158*4882a593Smuzhiyun 	{ pinmux(10), 1, 2 }, /* EMA_A[21] */
159*4882a593Smuzhiyun 	{ pinmux(10), 1, 3 }, /* EMA_A[20] */
160*4882a593Smuzhiyun 	{ pinmux(10), 1, 4 }, /* EMA_A[19] */
161*4882a593Smuzhiyun 	{ pinmux(10), 1, 5 }, /* EMA_A[18] */
162*4882a593Smuzhiyun 	{ pinmux(10), 1, 6 }, /* EMA_A[17] */
163*4882a593Smuzhiyun 	{ pinmux(10), 1, 7 }, /* EMA_A[16] */
164*4882a593Smuzhiyun 	{ pinmux(11), 1, 0 }, /* EMA_A[15] */
165*4882a593Smuzhiyun 	{ pinmux(11), 1, 1 }, /* EMA_A[14] */
166*4882a593Smuzhiyun 	{ pinmux(11), 1, 2 }, /* EMA_A[13] */
167*4882a593Smuzhiyun 	{ pinmux(11), 1, 3 }, /* EMA_A[12] */
168*4882a593Smuzhiyun 	{ pinmux(11), 1, 4 }, /* EMA_A[11] */
169*4882a593Smuzhiyun 	{ pinmux(11), 1, 5 }, /* EMA_A[10] */
170*4882a593Smuzhiyun 	{ pinmux(11), 1, 6 }, /* EMA_A[9] */
171*4882a593Smuzhiyun 	{ pinmux(11), 1, 7 }, /* EMA_A[8] */
172*4882a593Smuzhiyun 	{ pinmux(12), 1, 0 }, /* EMA_A[7] */
173*4882a593Smuzhiyun 	{ pinmux(12), 1, 1 }, /* EMA_A[6] */
174*4882a593Smuzhiyun 	{ pinmux(12), 1, 2 }, /* EMA_A[5] */
175*4882a593Smuzhiyun 	{ pinmux(12), 1, 3 }, /* EMA_A[4] */
176*4882a593Smuzhiyun 	{ pinmux(12), 1, 4 }, /* EMA_A[3] */
177*4882a593Smuzhiyun 	{ pinmux(12), 1, 5 }, /* EMA_A[2] */
178*4882a593Smuzhiyun 	{ pinmux(12), 1, 6 }, /* EMA_A[1] */
179*4882a593Smuzhiyun 	{ pinmux(12), 1, 7 }, /* EMA_A[0] */
180*4882a593Smuzhiyun };
181*4882a593Smuzhiyun 
182*4882a593Smuzhiyun /* MMC0 pin muxer settings */
183*4882a593Smuzhiyun const struct pinmux_config mmc0_pins[] = {
184*4882a593Smuzhiyun 	{ pinmux(10), 2, 0 },	/* MMCSD0_CLK */
185*4882a593Smuzhiyun 	{ pinmux(10), 2, 1 },	/* MMCSD0_CMD */
186*4882a593Smuzhiyun 	{ pinmux(10), 2, 2 },	/* MMCSD0_DAT_0 */
187*4882a593Smuzhiyun 	{ pinmux(10), 2, 3 },	/* MMCSD0_DAT_1 */
188*4882a593Smuzhiyun 	{ pinmux(10), 2, 4 },	/* MMCSD0_DAT_2 */
189*4882a593Smuzhiyun 	{ pinmux(10), 2, 5 },	/* MMCSD0_DAT_3 */
190*4882a593Smuzhiyun 	/* DA850 supports only 4-bit mode, remaining pins are not configured */
191*4882a593Smuzhiyun };
192