xref: /openbmc/u-boot/board/creative/xfi3/spl_boot.c (revision e8f80a5a)
1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
2aa04fef4SMarek Vasut /*
3aa04fef4SMarek Vasut  * Creative ZEN X-Fi3 setup
4aa04fef4SMarek Vasut  *
5aa04fef4SMarek Vasut  * Copyright (C) 2013 Marek Vasut <marex@denx.de>
6aa04fef4SMarek Vasut  */
7aa04fef4SMarek Vasut 
8aa04fef4SMarek Vasut #include <common.h>
9aa04fef4SMarek Vasut #include <config.h>
10aa04fef4SMarek Vasut #include <asm/io.h>
11aa04fef4SMarek Vasut #include <asm/arch/iomux-mx23.h>
12aa04fef4SMarek Vasut #include <asm/arch/imx-regs.h>
13aa04fef4SMarek Vasut #include <asm/arch/sys_proto.h>
14aa04fef4SMarek Vasut 
15aa04fef4SMarek Vasut #define	MUX_CONFIG_EMI	(MXS_PAD_1V8 | MXS_PAD_12MA | MXS_PAD_PULLUP)
16aa04fef4SMarek Vasut #define	MUX_CONFIG_SSP	(MXS_PAD_3V3 | MXS_PAD_8MA | MXS_PAD_PULLUP)
17aa04fef4SMarek Vasut #define	MUX_CONFIG_LCD	(MXS_PAD_3V3 | MXS_PAD_4MA | MXS_PAD_NOPULL)
18aa04fef4SMarek Vasut 
19aa04fef4SMarek Vasut const iomux_cfg_t iomux_setup[] = {
20aa04fef4SMarek Vasut 	/* EMI */
21aa04fef4SMarek Vasut 	MX23_PAD_EMI_D00__EMI_D00 | MUX_CONFIG_EMI,
22aa04fef4SMarek Vasut 	MX23_PAD_EMI_D01__EMI_D01 | MUX_CONFIG_EMI,
23aa04fef4SMarek Vasut 	MX23_PAD_EMI_D02__EMI_D02 | MUX_CONFIG_EMI,
24aa04fef4SMarek Vasut 	MX23_PAD_EMI_D03__EMI_D03 | MUX_CONFIG_EMI,
25aa04fef4SMarek Vasut 	MX23_PAD_EMI_D04__EMI_D04 | MUX_CONFIG_EMI,
26aa04fef4SMarek Vasut 	MX23_PAD_EMI_D05__EMI_D05 | MUX_CONFIG_EMI,
27aa04fef4SMarek Vasut 	MX23_PAD_EMI_D06__EMI_D06 | MUX_CONFIG_EMI,
28aa04fef4SMarek Vasut 	MX23_PAD_EMI_D07__EMI_D07 | MUX_CONFIG_EMI,
29aa04fef4SMarek Vasut 	MX23_PAD_EMI_D08__EMI_D08 | MUX_CONFIG_EMI,
30aa04fef4SMarek Vasut 	MX23_PAD_EMI_D09__EMI_D09 | MUX_CONFIG_EMI,
31aa04fef4SMarek Vasut 	MX23_PAD_EMI_D10__EMI_D10 | MUX_CONFIG_EMI,
32aa04fef4SMarek Vasut 	MX23_PAD_EMI_D11__EMI_D11 | MUX_CONFIG_EMI,
33aa04fef4SMarek Vasut 	MX23_PAD_EMI_D12__EMI_D12 | MUX_CONFIG_EMI,
34aa04fef4SMarek Vasut 	MX23_PAD_EMI_D13__EMI_D13 | MUX_CONFIG_EMI,
35aa04fef4SMarek Vasut 	MX23_PAD_EMI_D14__EMI_D14 | MUX_CONFIG_EMI,
36aa04fef4SMarek Vasut 	MX23_PAD_EMI_D15__EMI_D15 | MUX_CONFIG_EMI,
37aa04fef4SMarek Vasut 	MX23_PAD_EMI_DQM0__EMI_DQM0 | MUX_CONFIG_EMI,
38aa04fef4SMarek Vasut 	MX23_PAD_EMI_DQM1__EMI_DQM1 | MUX_CONFIG_EMI,
39aa04fef4SMarek Vasut 	MX23_PAD_EMI_DQS0__EMI_DQS0 | MUX_CONFIG_EMI,
40aa04fef4SMarek Vasut 	MX23_PAD_EMI_DQS1__EMI_DQS1 | MUX_CONFIG_EMI,
41aa04fef4SMarek Vasut 	MX23_PAD_EMI_CLK__EMI_CLK | MUX_CONFIG_EMI,
42aa04fef4SMarek Vasut 	MX23_PAD_EMI_CLKN__EMI_CLKN | MUX_CONFIG_EMI,
43aa04fef4SMarek Vasut 
44aa04fef4SMarek Vasut 	MX23_PAD_EMI_A00__EMI_A00 | MUX_CONFIG_EMI,
45aa04fef4SMarek Vasut 	MX23_PAD_EMI_A01__EMI_A01 | MUX_CONFIG_EMI,
46aa04fef4SMarek Vasut 	MX23_PAD_EMI_A02__EMI_A02 | MUX_CONFIG_EMI,
47aa04fef4SMarek Vasut 	MX23_PAD_EMI_A03__EMI_A03 | MUX_CONFIG_EMI,
48aa04fef4SMarek Vasut 	MX23_PAD_EMI_A04__EMI_A04 | MUX_CONFIG_EMI,
49aa04fef4SMarek Vasut 	MX23_PAD_EMI_A05__EMI_A05 | MUX_CONFIG_EMI,
50aa04fef4SMarek Vasut 	MX23_PAD_EMI_A06__EMI_A06 | MUX_CONFIG_EMI,
51aa04fef4SMarek Vasut 	MX23_PAD_EMI_A07__EMI_A07 | MUX_CONFIG_EMI,
52aa04fef4SMarek Vasut 	MX23_PAD_EMI_A08__EMI_A08 | MUX_CONFIG_EMI,
53aa04fef4SMarek Vasut 	MX23_PAD_EMI_A09__EMI_A09 | MUX_CONFIG_EMI,
54aa04fef4SMarek Vasut 	MX23_PAD_EMI_A10__EMI_A10 | MUX_CONFIG_EMI,
55aa04fef4SMarek Vasut 	MX23_PAD_EMI_A11__EMI_A11 | MUX_CONFIG_EMI,
56aa04fef4SMarek Vasut 	MX23_PAD_EMI_A12__EMI_A12 | MUX_CONFIG_EMI,
57aa04fef4SMarek Vasut 	MX23_PAD_EMI_BA0__EMI_BA0 | MUX_CONFIG_EMI,
58aa04fef4SMarek Vasut 	MX23_PAD_EMI_BA1__EMI_BA1 | MUX_CONFIG_EMI,
59aa04fef4SMarek Vasut 
60aa04fef4SMarek Vasut 	MX23_PAD_EMI_CASN__EMI_CASN | MUX_CONFIG_EMI,
61aa04fef4SMarek Vasut 	MX23_PAD_EMI_CE0N__EMI_CE0N | MUX_CONFIG_EMI,
62aa04fef4SMarek Vasut 	MX23_PAD_EMI_CE1N__EMI_CE1N | MUX_CONFIG_EMI,
63aa04fef4SMarek Vasut 	MX23_PAD_EMI_CKE__EMI_CKE | MUX_CONFIG_EMI,
64aa04fef4SMarek Vasut 	MX23_PAD_EMI_RASN__EMI_RASN | MUX_CONFIG_EMI,
65aa04fef4SMarek Vasut 	MX23_PAD_EMI_WEN__EMI_WEN | MUX_CONFIG_EMI,
66aa04fef4SMarek Vasut 
67aa04fef4SMarek Vasut 	MX23_PAD_LCD_D00__LCD_D00 | MUX_CONFIG_LCD,
68aa04fef4SMarek Vasut 	MX23_PAD_LCD_D01__LCD_D01 | MUX_CONFIG_LCD,
69aa04fef4SMarek Vasut 	MX23_PAD_LCD_D02__LCD_D02 | MUX_CONFIG_LCD,
70aa04fef4SMarek Vasut 	MX23_PAD_LCD_D03__LCD_D03 | MUX_CONFIG_LCD,
71aa04fef4SMarek Vasut 	MX23_PAD_LCD_D04__LCD_D04 | MUX_CONFIG_LCD,
72aa04fef4SMarek Vasut 	MX23_PAD_LCD_D05__LCD_D05 | MUX_CONFIG_LCD,
73aa04fef4SMarek Vasut 	MX23_PAD_LCD_D06__LCD_D06 | MUX_CONFIG_LCD,
74aa04fef4SMarek Vasut 	MX23_PAD_LCD_D07__LCD_D07 | MUX_CONFIG_LCD,
75aa04fef4SMarek Vasut 	MX23_PAD_LCD_D08__LCD_D08 | MUX_CONFIG_LCD,
76aa04fef4SMarek Vasut 	MX23_PAD_LCD_D09__LCD_D09 | MUX_CONFIG_LCD,
77aa04fef4SMarek Vasut 	MX23_PAD_LCD_D10__LCD_D10 | MUX_CONFIG_LCD,
78aa04fef4SMarek Vasut 	MX23_PAD_LCD_D11__LCD_D11 | MUX_CONFIG_LCD,
79aa04fef4SMarek Vasut 	MX23_PAD_LCD_D12__LCD_D12 | MUX_CONFIG_LCD,
80aa04fef4SMarek Vasut 	MX23_PAD_LCD_D13__LCD_D13 | MUX_CONFIG_LCD,
81aa04fef4SMarek Vasut 	MX23_PAD_LCD_D14__LCD_D14 | MUX_CONFIG_LCD,
82aa04fef4SMarek Vasut 	MX23_PAD_LCD_D15__LCD_D15 | MUX_CONFIG_LCD,
83aa04fef4SMarek Vasut 	MX23_PAD_LCD_D16__LCD_D16 | MUX_CONFIG_LCD,
84aa04fef4SMarek Vasut 	MX23_PAD_LCD_D17__LCD_D17 | MUX_CONFIG_LCD,
85aa04fef4SMarek Vasut 	MX23_PAD_LCD_RESET__LCD_RESET | MUX_CONFIG_LCD,
86aa04fef4SMarek Vasut 	MX23_PAD_LCD_RS__LCD_RS | MUX_CONFIG_LCD,
87aa04fef4SMarek Vasut 	MX23_PAD_LCD_WR__LCD_WR | MUX_CONFIG_LCD,
88aa04fef4SMarek Vasut 	MX23_PAD_LCD_CS__LCD_CS | MUX_CONFIG_LCD,
89aa04fef4SMarek Vasut 	MX23_PAD_LCD_ENABLE__LCD_ENABLE | MUX_CONFIG_LCD,
90aa04fef4SMarek Vasut 	MX23_PAD_LCD_VSYNC__LCD_VSYNC | MUX_CONFIG_LCD,
91aa04fef4SMarek Vasut 
92aa04fef4SMarek Vasut 	MX23_PAD_SSP1_CMD__SSP1_CMD | MUX_CONFIG_SSP,
93aa04fef4SMarek Vasut 	MX23_PAD_SSP1_DETECT__GPIO_2_1 | MUX_CONFIG_SSP,
94aa04fef4SMarek Vasut 	MX23_PAD_SSP1_DATA0__SSP1_DATA0 | MUX_CONFIG_SSP,
95aa04fef4SMarek Vasut 	MX23_PAD_SSP1_DATA1__SSP1_DATA1 | MUX_CONFIG_SSP,
96aa04fef4SMarek Vasut 	MX23_PAD_SSP1_DATA2__SSP1_DATA2 | MUX_CONFIG_SSP,
97aa04fef4SMarek Vasut 	MX23_PAD_SSP1_DATA3__SSP1_DATA3 | MUX_CONFIG_SSP,
98aa04fef4SMarek Vasut 	MX23_PAD_SSP1_SCK__SSP1_SCK | MUX_CONFIG_SSP,
99aa04fef4SMarek Vasut 	MX23_PAD_GPMI_D07__GPIO_0_7 | MUX_CONFIG_SSP,
100aa04fef4SMarek Vasut 
101aa04fef4SMarek Vasut 	MX23_PAD_GPMI_D00__SSP2_DATA0 | MUX_CONFIG_SSP,
102aa04fef4SMarek Vasut 	MX23_PAD_GPMI_D01__SSP2_DATA1 | MUX_CONFIG_SSP,
103aa04fef4SMarek Vasut 	MX23_PAD_GPMI_D02__SSP2_DATA2 | MUX_CONFIG_SSP,
104aa04fef4SMarek Vasut 	MX23_PAD_GPMI_D03__SSP2_DATA3 | MUX_CONFIG_SSP,
105aa04fef4SMarek Vasut 	MX23_PAD_GPMI_RDY1__SSP2_CMD | MUX_CONFIG_SSP,
106aa04fef4SMarek Vasut 	MX23_PAD_GPMI_WRN__SSP2_SCK | MUX_CONFIG_SSP,
107aa04fef4SMarek Vasut 
108aa04fef4SMarek Vasut 	/* PWM -- FIXME */
109aa04fef4SMarek Vasut 	MX23_PAD_PWM2__GPIO_1_28 | MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_PULLUP,
110aa04fef4SMarek Vasut };
111aa04fef4SMarek Vasut 
mxs_adjust_memory_params(uint32_t * dram_vals)112aa04fef4SMarek Vasut void mxs_adjust_memory_params(uint32_t *dram_vals)
113aa04fef4SMarek Vasut {
114aa04fef4SMarek Vasut 	/* mDDR configuration values */
115aa04fef4SMarek Vasut 	const uint32_t regs[] = {
116aa04fef4SMarek Vasut 		0x01010001, 0x00010000, 0x01000000, 0x00000001,
117aa04fef4SMarek Vasut 		0x00010101, 0x00000001, 0x00010000, 0x01000001,
118aa04fef4SMarek Vasut 		0x01010000, 0x00000001, 0x07000200, 0x04070203,
119aa04fef4SMarek Vasut 		0x02020002, 0x06070a02, 0x0d000201, 0x0305000d,
120aa04fef4SMarek Vasut 		0x02080800, 0x19330f0a, 0x1f1f1c00, 0x020a1313,
121aa04fef4SMarek Vasut 		0x03061323, 0x0000000a, 0x00080008, 0x00200020,
122aa04fef4SMarek Vasut 		0x00200020, 0x00200020, 0x000003f7, 0x00000000,
123aa04fef4SMarek Vasut 		0x00000000, 0x00000000, 0x00000020, 0x00000000,
124aa04fef4SMarek Vasut 		0x001023cd, 0x20410010, 0x00006665, 0x00000000,
125aa04fef4SMarek Vasut 		0x00000101, 0x00000001, 0x00000000, 0x00000000,
126aa04fef4SMarek Vasut 	};
127aa04fef4SMarek Vasut 	memcpy(dram_vals, regs, sizeof(regs));
128aa04fef4SMarek Vasut }
129aa04fef4SMarek Vasut 
board_init_ll(const uint32_t arg,const uint32_t * resptr)130aa04fef4SMarek Vasut void board_init_ll(const uint32_t arg, const uint32_t *resptr)
131aa04fef4SMarek Vasut {
132aa04fef4SMarek Vasut 	mxs_common_spl_init(arg, resptr, iomux_setup, ARRAY_SIZE(iomux_setup));
133aa04fef4SMarek Vasut }
134