Commit c2cde27d58cfa0b09b8ed4577fa313fdfaa57660
Committed by
Stefano Babic
1 parent
90fb985863
Exists in
master
and in
50 other branches
mx6: titanium: Move BSP code to barco board directory
Since the titanium board is not a Freescale board, move its BSP code from the freescale board directory to the newly created barco board directory. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Peter Korsgaard <peter.korsgaard@barco.com> Cc: Stefano Babic <sbabic@denx.de> Acked-by: Peter Korsgaard <peter.korsgaard@barco.com>
Showing 7 changed files with 500 additions and 500 deletions Side-by-side Diff
board/barco/titanium/Makefile
board/barco/titanium/imximage.cfg
1 | +/* | |
2 | + * Projectiondesign AS | |
3 | + * Derived from ./board/freescale/mx6qsabrelite/imximage.cfg | |
4 | + * | |
5 | + * Copyright (C) 2011 Freescale Semiconductor, Inc. | |
6 | + * Jason Liu <r64343@freescale.com> | |
7 | + * | |
8 | + * SPDX-License-Identifier: GPL-2.0+ | |
9 | + * | |
10 | + * Refer docs/README.imxmage for more details about how-to configure | |
11 | + * and create imximage boot image | |
12 | + * | |
13 | + * The syntax is taken as close as possible with the kwbimage | |
14 | + */ | |
15 | + | |
16 | +/* image version */ | |
17 | + | |
18 | +IMAGE_VERSION 2 | |
19 | + | |
20 | +/* | |
21 | + * Boot Device : one of | |
22 | + * sd, nand | |
23 | + */ | |
24 | +BOOT_FROM nand | |
25 | + | |
26 | +/* | |
27 | + * Device Configuration Data (DCD) | |
28 | + * | |
29 | + * Each entry must have the format: | |
30 | + * Addr-type Address Value | |
31 | + * | |
32 | + * where: | |
33 | + * Addr-type register length (1,2 or 4 bytes) | |
34 | + * Address absolute address of the register | |
35 | + * value value to be stored in the register | |
36 | + */ | |
37 | + | |
38 | +#define __ASSEMBLY__ | |
39 | +#include <config.h> | |
40 | +#include "asm/arch/mx6-ddr.h" | |
41 | +#include "asm/arch/iomux.h" | |
42 | +#include "asm/arch/crm_regs.h" | |
43 | + | |
44 | +DATA 4, MX6_IOM_DRAM_SDQS0, 0x00000030 | |
45 | +DATA 4, MX6_IOM_DRAM_SDQS1, 0x00000030 | |
46 | +DATA 4, MX6_IOM_DRAM_SDQS2, 0x00000030 | |
47 | +DATA 4, MX6_IOM_DRAM_SDQS3, 0x00000030 | |
48 | +DATA 4, MX6_IOM_DRAM_SDQS4, 0x00000030 | |
49 | +DATA 4, MX6_IOM_DRAM_SDQS5, 0x00000030 | |
50 | +DATA 4, MX6_IOM_DRAM_SDQS6, 0x00000030 | |
51 | +DATA 4, MX6_IOM_DRAM_SDQS7, 0x00000030 | |
52 | + | |
53 | +DATA 4, MX6_IOM_DRAM_DQM0, 0x00020030 | |
54 | +DATA 4, MX6_IOM_DRAM_DQM1, 0x00020030 | |
55 | +DATA 4, MX6_IOM_DRAM_DQM2, 0x00020030 | |
56 | +DATA 4, MX6_IOM_DRAM_DQM3, 0x00020030 | |
57 | +DATA 4, MX6_IOM_DRAM_DQM4, 0x00020030 | |
58 | +DATA 4, MX6_IOM_DRAM_DQM5, 0x00020030 | |
59 | +DATA 4, MX6_IOM_DRAM_DQM6, 0x00020030 | |
60 | +DATA 4, MX6_IOM_DRAM_DQM7, 0x00020030 | |
61 | + | |
62 | +DATA 4, MX6_IOM_DRAM_CAS, 0x00020030 | |
63 | +DATA 4, MX6_IOM_DRAM_RAS, 0x00020030 | |
64 | +DATA 4, MX6_IOM_DRAM_SDCLK_0, 0x00020030 | |
65 | +DATA 4, MX6_IOM_DRAM_SDCLK_1, 0x00020030 | |
66 | + | |
67 | +DATA 4, MX6_IOM_DRAM_RESET, 0x00020030 | |
68 | +DATA 4, MX6_IOM_DRAM_SDCKE0, 0x00003000 | |
69 | +DATA 4, MX6_IOM_DRAM_SDCKE1, 0x00003000 | |
70 | + | |
71 | +DATA 4, MX6_IOM_DRAM_SDBA2, 0x00000000 | |
72 | + | |
73 | +DATA 4, MX6_IOM_DRAM_SDODT0, 0x00003030 | |
74 | +DATA 4, MX6_IOM_DRAM_SDODT1, 0x00003030 | |
75 | + | |
76 | +DATA 4, MX6_IOM_GRP_B0DS, 0x00000030 | |
77 | +DATA 4, MX6_IOM_GRP_B1DS, 0x00000030 | |
78 | +DATA 4, MX6_IOM_GRP_B2DS, 0x00000030 | |
79 | +DATA 4, MX6_IOM_GRP_B3DS, 0x00000030 | |
80 | +DATA 4, MX6_IOM_GRP_B4DS, 0x00000030 | |
81 | +DATA 4, MX6_IOM_GRP_B5DS, 0x00000030 | |
82 | +DATA 4, MX6_IOM_GRP_B6DS, 0x00000030 | |
83 | +DATA 4, MX6_IOM_GRP_B7DS, 0x00000030 | |
84 | +DATA 4, MX6_IOM_GRP_ADDDS, 0x00000030 | |
85 | + | |
86 | +/* (differential input) */ | |
87 | +DATA 4, MX6_IOM_DDRMODE_CTL, 0x00020000 | |
88 | +/* disable ddr pullups */ | |
89 | +DATA 4, MX6_IOM_GRP_DDRPKE, 0x00000000 | |
90 | +/* (differential input) */ | |
91 | +DATA 4, MX6_IOM_GRP_DDRMODE, 0x00020000 | |
92 | +/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */ | |
93 | +DATA 4, MX6_IOM_GRP_CTLDS, 0x00000030 | |
94 | +/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */ | |
95 | +DATA 4, MX6_IOM_GRP_DDR_TYPE, 0x000C0000 | |
96 | + | |
97 | +/* Read data DQ Byte0-3 delay */ | |
98 | +DATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333 | |
99 | +DATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333 | |
100 | +DATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333 | |
101 | +DATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333 | |
102 | +DATA 4, MX6_MMDC_P1_MPRDDQBY0DL, 0x33333333 | |
103 | +DATA 4, MX6_MMDC_P1_MPRDDQBY1DL, 0x33333333 | |
104 | +DATA 4, MX6_MMDC_P1_MPRDDQBY2DL, 0x33333333 | |
105 | +DATA 4, MX6_MMDC_P1_MPRDDQBY3DL, 0x33333333 | |
106 | + | |
107 | +/* | |
108 | + * MDMISC mirroring interleaved (row/bank/col) | |
109 | + */ | |
110 | +DATA 4, MX6_MMDC_P0_MDMISC, 0x00081740 | |
111 | + | |
112 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x00008000 | |
113 | +DATA 4, MX6_MMDC_P0_MDCFG0, 0x555A7975 | |
114 | +DATA 4, MX6_MMDC_P0_MDCFG1, 0xFF538E64 | |
115 | +DATA 4, MX6_MMDC_P0_MDCFG2, 0x01FF00DB | |
116 | +DATA 4, MX6_MMDC_P0_MDRWD, 0x000026D2 | |
117 | +DATA 4, MX6_MMDC_P0_MDOR, 0x005B0E21 | |
118 | +DATA 4, MX6_MMDC_P0_MDOTC, 0x09444040 | |
119 | +DATA 4, MX6_MMDC_P0_MDPDC, 0x00025576 | |
120 | +DATA 4, MX6_MMDC_P0_MDASP, 0x00000017 | |
121 | +DATA 4, MX6_MMDC_P0_MDCTL, 0x83190000 | |
122 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x04088032 | |
123 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x0408803A | |
124 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x00008033 | |
125 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x0000803B | |
126 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x00428031 | |
127 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x00428039 | |
128 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x09408030 | |
129 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x09408038 | |
130 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x04008040 | |
131 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x04008048 | |
132 | +DATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xA1380003 | |
133 | +DATA 4, MX6_MMDC_P1_MPZQHWCTRL, 0xA1380003 | |
134 | +DATA 4, MX6_MMDC_P0_MDREF, 0x00005800 | |
135 | +DATA 4, MX6_MMDC_P0_MPODTCTRL, 0x00022227 | |
136 | +DATA 4, MX6_MMDC_P1_MPODTCTRL, 0x00022227 | |
137 | +DATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x434B0350 | |
138 | +DATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x034C0359 | |
139 | +DATA 4, MX6_MMDC_P1_MPDGCTRL0, 0x434B0350 | |
140 | +DATA 4, MX6_MMDC_P1_MPDGCTRL1, 0x03650348 | |
141 | +DATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x4436383B | |
142 | +DATA 4, MX6_MMDC_P1_MPRDDLCTL, 0x39393341 | |
143 | +DATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x35373933 | |
144 | +DATA 4, MX6_MMDC_P1_MPWRDLCTL, 0x48254A36 | |
145 | +DATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x001F001F | |
146 | +DATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x001F001F | |
147 | +DATA 4, MX6_MMDC_P1_MPWLDECTRL0, 0x00440044 | |
148 | +DATA 4, MX6_MMDC_P1_MPWLDECTRL1, 0x00440044 | |
149 | +DATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800 | |
150 | +DATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800 | |
151 | +DATA 4, MX6_MMDC_P0_MDSCR, 0x00000000 | |
152 | +DATA 4, MX6_MMDC_P0_MAPSR, 0x00011006 | |
153 | + | |
154 | +/* set the default clock gate to save power */ | |
155 | +DATA 4, CCM_CCGR0, 0x00C03F3F | |
156 | +DATA 4, CCM_CCGR1, 0x0030FC03 | |
157 | +DATA 4, CCM_CCGR2, 0x0FFFC000 | |
158 | +DATA 4, CCM_CCGR3, 0x3FF00000 | |
159 | +DATA 4, CCM_CCGR4, 0xFFFFF300 /* enable NAND/GPMI/BCH clocks */ | |
160 | +DATA 4, CCM_CCGR5, 0x0F0000C3 | |
161 | +DATA 4, CCM_CCGR6, 0x000003FF | |
162 | + | |
163 | +/* enable AXI cache for VDOA/VPU/IPU */ | |
164 | +DATA 4, MX6_IOMUXC_GPR4, 0xF00000CF | |
165 | +/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */ | |
166 | +DATA 4, MX6_IOMUXC_GPR6, 0x007F007F | |
167 | +DATA 4, MX6_IOMUXC_GPR7, 0x007F007F |
board/barco/titanium/titanium.c
1 | +/* | |
2 | + * Copyright (C) 2013 Stefan Roese <sr@denx.de> | |
3 | + * | |
4 | + * SPDX-License-Identifier: GPL-2.0+ | |
5 | + */ | |
6 | + | |
7 | +#include <common.h> | |
8 | +#include <asm/io.h> | |
9 | +#include <asm/arch/clock.h> | |
10 | +#include <asm/arch/imx-regs.h> | |
11 | +#include <asm/arch/iomux.h> | |
12 | +#include <asm/arch/mx6q_pins.h> | |
13 | +#include <asm/arch/crm_regs.h> | |
14 | +#include <asm/arch/sys_proto.h> | |
15 | +#include <asm/gpio.h> | |
16 | +#include <asm/imx-common/iomux-v3.h> | |
17 | +#include <asm/imx-common/mxc_i2c.h> | |
18 | +#include <asm/imx-common/boot_mode.h> | |
19 | +#include <mmc.h> | |
20 | +#include <fsl_esdhc.h> | |
21 | +#include <micrel.h> | |
22 | +#include <miiphy.h> | |
23 | +#include <netdev.h> | |
24 | + | |
25 | +DECLARE_GLOBAL_DATA_PTR; | |
26 | + | |
27 | +#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ | |
28 | + PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS) | |
29 | + | |
30 | +#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_LOW | \ | |
31 | + PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS) | |
32 | + | |
33 | +#define ENET_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ | |
34 | + PAD_CTL_DSE_40ohm | PAD_CTL_HYS) | |
35 | + | |
36 | +#define I2C_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ | |
37 | + PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \ | |
38 | + PAD_CTL_ODE | PAD_CTL_SRE_FAST) | |
39 | + | |
40 | +int dram_init(void) | |
41 | +{ | |
42 | + gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE); | |
43 | + | |
44 | + return 0; | |
45 | +} | |
46 | + | |
47 | +iomux_v3_cfg_t const uart1_pads[] = { | |
48 | + MX6_PAD_SD3_DAT6__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
49 | + MX6_PAD_SD3_DAT7__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
50 | +}; | |
51 | + | |
52 | +iomux_v3_cfg_t const uart2_pads[] = { | |
53 | + MX6_PAD_EIM_D26__UART2_TXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
54 | + MX6_PAD_EIM_D27__UART2_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
55 | +}; | |
56 | + | |
57 | +iomux_v3_cfg_t const uart4_pads[] = { | |
58 | + MX6_PAD_CSI0_DAT12__UART4_TXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
59 | + MX6_PAD_CSI0_DAT13__UART4_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
60 | +}; | |
61 | + | |
62 | +#define PC MUX_PAD_CTRL(I2C_PAD_CTRL) | |
63 | + | |
64 | +struct i2c_pads_info i2c_pad_info0 = { | |
65 | + .scl = { | |
66 | + .i2c_mode = MX6_PAD_CSI0_DAT9__I2C1_SCL | PC, | |
67 | + .gpio_mode = MX6_PAD_CSI0_DAT9__GPIO_5_27 | PC, | |
68 | + .gp = IMX_GPIO_NR(5, 27) | |
69 | + }, | |
70 | + .sda = { | |
71 | + .i2c_mode = MX6_PAD_CSI0_DAT8__I2C1_SDA | PC, | |
72 | + .gpio_mode = MX6_PAD_CSI0_DAT8__GPIO_5_26 | PC, | |
73 | + .gp = IMX_GPIO_NR(5, 26) | |
74 | + } | |
75 | +}; | |
76 | + | |
77 | +struct i2c_pads_info i2c_pad_info2 = { | |
78 | + .scl = { | |
79 | + .i2c_mode = MX6_PAD_GPIO_3__I2C3_SCL | PC, | |
80 | + .gpio_mode = MX6_PAD_GPIO_3__GPIO_1_3 | PC, | |
81 | + .gp = IMX_GPIO_NR(1, 3) | |
82 | + }, | |
83 | + .sda = { | |
84 | + .i2c_mode = MX6_PAD_GPIO_16__I2C3_SDA | PC, | |
85 | + .gpio_mode = MX6_PAD_GPIO_16__GPIO_7_11 | PC, | |
86 | + .gp = IMX_GPIO_NR(7, 11) | |
87 | + } | |
88 | +}; | |
89 | + | |
90 | +iomux_v3_cfg_t const usdhc3_pads[] = { | |
91 | + MX6_PAD_SD3_CLK__USDHC3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
92 | + MX6_PAD_SD3_CMD__USDHC3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
93 | + MX6_PAD_SD3_DAT0__USDHC3_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
94 | + MX6_PAD_SD3_DAT1__USDHC3_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
95 | + MX6_PAD_SD3_DAT2__USDHC3_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
96 | + MX6_PAD_SD3_DAT3__USDHC3_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
97 | + MX6_PAD_SD3_DAT5__GPIO_7_0 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */ | |
98 | +}; | |
99 | + | |
100 | +iomux_v3_cfg_t const enet_pads1[] = { | |
101 | + MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
102 | + MX6_PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
103 | + MX6_PAD_RGMII_TXC__ENET_RGMII_TXC | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
104 | + MX6_PAD_RGMII_TD0__ENET_RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
105 | + MX6_PAD_RGMII_TD1__ENET_RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
106 | + MX6_PAD_RGMII_TD2__ENET_RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
107 | + MX6_PAD_RGMII_TD3__ENET_RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
108 | + MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
109 | + MX6_PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
110 | + /* pin 35 - 1 (PHY_AD2) on reset */ | |
111 | + MX6_PAD_RGMII_RXC__GPIO_6_30 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
112 | + /* pin 32 - 1 - (MODE0) all */ | |
113 | + MX6_PAD_RGMII_RD0__GPIO_6_25 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
114 | + /* pin 31 - 1 - (MODE1) all */ | |
115 | + MX6_PAD_RGMII_RD1__GPIO_6_27 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
116 | + /* pin 28 - 1 - (MODE2) all */ | |
117 | + MX6_PAD_RGMII_RD2__GPIO_6_28 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
118 | + /* pin 27 - 1 - (MODE3) all */ | |
119 | + MX6_PAD_RGMII_RD3__GPIO_6_29 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
120 | + /* pin 33 - 1 - (CLK125_EN) 125Mhz clockout enabled */ | |
121 | + MX6_PAD_RGMII_RX_CTL__GPIO_6_24 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
122 | + /* pin 42 PHY nRST */ | |
123 | + MX6_PAD_EIM_D23__GPIO_3_23 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
124 | +}; | |
125 | + | |
126 | +iomux_v3_cfg_t const enet_pads2[] = { | |
127 | + MX6_PAD_RGMII_RXC__ENET_RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
128 | + MX6_PAD_RGMII_RD0__ENET_RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
129 | + MX6_PAD_RGMII_RD1__ENET_RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
130 | + MX6_PAD_RGMII_RD2__ENET_RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
131 | + MX6_PAD_RGMII_RD3__ENET_RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
132 | + MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
133 | +}; | |
134 | + | |
135 | +iomux_v3_cfg_t nfc_pads[] = { | |
136 | + MX6_PAD_NANDF_CLE__RAWNAND_CLE | MUX_PAD_CTRL(NO_PAD_CTRL), | |
137 | + MX6_PAD_NANDF_ALE__RAWNAND_ALE | MUX_PAD_CTRL(NO_PAD_CTRL), | |
138 | + MX6_PAD_NANDF_WP_B__RAWNAND_RESETN | MUX_PAD_CTRL(NO_PAD_CTRL), | |
139 | + MX6_PAD_NANDF_RB0__RAWNAND_READY0 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
140 | + MX6_PAD_NANDF_CS0__RAWNAND_CE0N | MUX_PAD_CTRL(NO_PAD_CTRL), | |
141 | + MX6_PAD_NANDF_CS1__RAWNAND_CE1N | MUX_PAD_CTRL(NO_PAD_CTRL), | |
142 | + MX6_PAD_NANDF_CS2__RAWNAND_CE2N | MUX_PAD_CTRL(NO_PAD_CTRL), | |
143 | + MX6_PAD_NANDF_CS3__RAWNAND_CE3N | MUX_PAD_CTRL(NO_PAD_CTRL), | |
144 | + MX6_PAD_SD4_CMD__RAWNAND_RDN | MUX_PAD_CTRL(NO_PAD_CTRL), | |
145 | + MX6_PAD_SD4_CLK__RAWNAND_WRN | MUX_PAD_CTRL(NO_PAD_CTRL), | |
146 | + MX6_PAD_NANDF_D0__RAWNAND_D0 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
147 | + MX6_PAD_NANDF_D1__RAWNAND_D1 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
148 | + MX6_PAD_NANDF_D2__RAWNAND_D2 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
149 | + MX6_PAD_NANDF_D3__RAWNAND_D3 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
150 | + MX6_PAD_NANDF_D4__RAWNAND_D4 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
151 | + MX6_PAD_NANDF_D5__RAWNAND_D5 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
152 | + MX6_PAD_NANDF_D6__RAWNAND_D6 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
153 | + MX6_PAD_NANDF_D7__RAWNAND_D7 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
154 | + MX6_PAD_SD4_DAT0__RAWNAND_DQS | MUX_PAD_CTRL(NO_PAD_CTRL), | |
155 | +}; | |
156 | + | |
157 | +static void setup_gpmi_nand(void) | |
158 | +{ | |
159 | + struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; | |
160 | + | |
161 | + /* config gpmi nand iomux */ | |
162 | + imx_iomux_v3_setup_multiple_pads(nfc_pads, | |
163 | + ARRAY_SIZE(nfc_pads)); | |
164 | + | |
165 | + /* config gpmi and bch clock to 100 MHz */ | |
166 | + clrsetbits_le32(&mxc_ccm->cs2cdr, | |
167 | + MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK | | |
168 | + MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK | | |
169 | + MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK, | |
170 | + MXC_CCM_CS2CDR_ENFC_CLK_PODF(0) | | |
171 | + MXC_CCM_CS2CDR_ENFC_CLK_PRED(3) | | |
172 | + MXC_CCM_CS2CDR_ENFC_CLK_SEL(3)); | |
173 | + | |
174 | + /* enable gpmi and bch clock gating */ | |
175 | + setbits_le32(&mxc_ccm->CCGR4, | |
176 | + MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK | | |
177 | + MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK | | |
178 | + MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK | | |
179 | + MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK | | |
180 | + MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET); | |
181 | + | |
182 | + /* enable apbh clock gating */ | |
183 | + setbits_le32(&mxc_ccm->CCGR0, MXC_CCM_CCGR0_APBHDMA_MASK); | |
184 | +} | |
185 | + | |
186 | +static void setup_iomux_enet(void) | |
187 | +{ | |
188 | + gpio_direction_output(IMX_GPIO_NR(3, 23), 0); | |
189 | + gpio_direction_output(IMX_GPIO_NR(6, 30), 1); | |
190 | + gpio_direction_output(IMX_GPIO_NR(6, 25), 1); | |
191 | + gpio_direction_output(IMX_GPIO_NR(6, 27), 1); | |
192 | + gpio_direction_output(IMX_GPIO_NR(6, 28), 1); | |
193 | + gpio_direction_output(IMX_GPIO_NR(6, 29), 1); | |
194 | + imx_iomux_v3_setup_multiple_pads(enet_pads1, ARRAY_SIZE(enet_pads1)); | |
195 | + gpio_direction_output(IMX_GPIO_NR(6, 24), 1); | |
196 | + | |
197 | + /* Need delay 10ms according to KSZ9021 spec */ | |
198 | + udelay(1000 * 10); | |
199 | + gpio_set_value(IMX_GPIO_NR(3, 23), 1); | |
200 | + | |
201 | + imx_iomux_v3_setup_multiple_pads(enet_pads2, ARRAY_SIZE(enet_pads2)); | |
202 | +} | |
203 | + | |
204 | +static void setup_iomux_uart(void) | |
205 | +{ | |
206 | + imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); | |
207 | + imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads)); | |
208 | + imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads)); | |
209 | +} | |
210 | + | |
211 | +#ifdef CONFIG_USB_EHCI_MX6 | |
212 | +int board_ehci_hcd_init(int port) | |
213 | +{ | |
214 | + return 0; | |
215 | +} | |
216 | + | |
217 | +#endif | |
218 | + | |
219 | +#ifdef CONFIG_FSL_ESDHC | |
220 | +struct fsl_esdhc_cfg usdhc_cfg[1] = { | |
221 | + { USDHC3_BASE_ADDR }, | |
222 | +}; | |
223 | + | |
224 | +int board_mmc_getcd(struct mmc *mmc) | |
225 | +{ | |
226 | + struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv; | |
227 | + | |
228 | + if (cfg->esdhc_base == USDHC3_BASE_ADDR) { | |
229 | + gpio_direction_input(IMX_GPIO_NR(7, 0)); | |
230 | + return !gpio_get_value(IMX_GPIO_NR(7, 0)); | |
231 | + } | |
232 | + | |
233 | + return 0; | |
234 | +} | |
235 | + | |
236 | +int board_mmc_init(bd_t *bis) | |
237 | +{ | |
238 | + /* | |
239 | + * Only one USDHC controller on titianium | |
240 | + */ | |
241 | + imx_iomux_v3_setup_multiple_pads(usdhc3_pads, ARRAY_SIZE(usdhc3_pads)); | |
242 | + usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK); | |
243 | + | |
244 | + return fsl_esdhc_initialize(bis, &usdhc_cfg[0]); | |
245 | +} | |
246 | +#endif | |
247 | + | |
248 | +int board_phy_config(struct phy_device *phydev) | |
249 | +{ | |
250 | + /* min rx data delay */ | |
251 | + ksz9021_phy_extended_write(phydev, | |
252 | + MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW, 0x0); | |
253 | + /* min tx data delay */ | |
254 | + ksz9021_phy_extended_write(phydev, | |
255 | + MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW, 0x0); | |
256 | + /* max rx/tx clock delay, min rx/tx control */ | |
257 | + ksz9021_phy_extended_write(phydev, | |
258 | + MII_KSZ9021_EXT_RGMII_CLOCK_SKEW, 0xf0f0); | |
259 | + if (phydev->drv->config) | |
260 | + phydev->drv->config(phydev); | |
261 | + | |
262 | + return 0; | |
263 | +} | |
264 | + | |
265 | +int board_eth_init(bd_t *bis) | |
266 | +{ | |
267 | + int ret; | |
268 | + | |
269 | + setup_iomux_enet(); | |
270 | + | |
271 | + ret = cpu_eth_init(bis); | |
272 | + if (ret) | |
273 | + printf("FEC MXC: %s:failed\n", __func__); | |
274 | + | |
275 | + return ret; | |
276 | +} | |
277 | + | |
278 | +int board_early_init_f(void) | |
279 | +{ | |
280 | + setup_iomux_uart(); | |
281 | + | |
282 | + return 0; | |
283 | +} | |
284 | + | |
285 | +int board_init(void) | |
286 | +{ | |
287 | + /* address of boot parameters */ | |
288 | + gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; | |
289 | + | |
290 | + setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info0); | |
291 | + setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2); | |
292 | + | |
293 | + setup_gpmi_nand(); | |
294 | + | |
295 | + return 0; | |
296 | +} | |
297 | + | |
298 | +int checkboard(void) | |
299 | +{ | |
300 | + puts("Board: Titanium\n"); | |
301 | + | |
302 | + return 0; | |
303 | +} | |
304 | + | |
305 | +#ifdef CONFIG_CMD_BMODE | |
306 | +static const struct boot_mode board_boot_modes[] = { | |
307 | + /* NAND */ | |
308 | + { "nand", MAKE_CFGVAL(0x80, 0x02, 0x00, 0x00) }, | |
309 | + /* 4 bit bus width */ | |
310 | + { "mmc0", MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00) }, | |
311 | + { "mmc1", MAKE_CFGVAL(0x40, 0x38, 0x00, 0x00) }, | |
312 | + { NULL, 0 }, | |
313 | +}; | |
314 | +#endif | |
315 | + | |
316 | +int misc_init_r(void) | |
317 | +{ | |
318 | +#ifdef CONFIG_CMD_BMODE | |
319 | + add_board_boot_modes(board_boot_modes); | |
320 | +#endif | |
321 | + | |
322 | + return 0; | |
323 | +} |
board/freescale/titanium/Makefile
board/freescale/titanium/imximage.cfg
1 | -/* | |
2 | - * Projectiondesign AS | |
3 | - * Derived from ./board/freescale/mx6qsabrelite/imximage.cfg | |
4 | - * | |
5 | - * Copyright (C) 2011 Freescale Semiconductor, Inc. | |
6 | - * Jason Liu <r64343@freescale.com> | |
7 | - * | |
8 | - * SPDX-License-Identifier: GPL-2.0+ | |
9 | - * | |
10 | - * Refer docs/README.imxmage for more details about how-to configure | |
11 | - * and create imximage boot image | |
12 | - * | |
13 | - * The syntax is taken as close as possible with the kwbimage | |
14 | - */ | |
15 | - | |
16 | -/* image version */ | |
17 | - | |
18 | -IMAGE_VERSION 2 | |
19 | - | |
20 | -/* | |
21 | - * Boot Device : one of | |
22 | - * sd, nand | |
23 | - */ | |
24 | -BOOT_FROM nand | |
25 | - | |
26 | -/* | |
27 | - * Device Configuration Data (DCD) | |
28 | - * | |
29 | - * Each entry must have the format: | |
30 | - * Addr-type Address Value | |
31 | - * | |
32 | - * where: | |
33 | - * Addr-type register length (1,2 or 4 bytes) | |
34 | - * Address absolute address of the register | |
35 | - * value value to be stored in the register | |
36 | - */ | |
37 | - | |
38 | -#define __ASSEMBLY__ | |
39 | -#include <config.h> | |
40 | -#include "asm/arch/mx6-ddr.h" | |
41 | -#include "asm/arch/iomux.h" | |
42 | -#include "asm/arch/crm_regs.h" | |
43 | - | |
44 | -DATA 4, MX6_IOM_DRAM_SDQS0, 0x00000030 | |
45 | -DATA 4, MX6_IOM_DRAM_SDQS1, 0x00000030 | |
46 | -DATA 4, MX6_IOM_DRAM_SDQS2, 0x00000030 | |
47 | -DATA 4, MX6_IOM_DRAM_SDQS3, 0x00000030 | |
48 | -DATA 4, MX6_IOM_DRAM_SDQS4, 0x00000030 | |
49 | -DATA 4, MX6_IOM_DRAM_SDQS5, 0x00000030 | |
50 | -DATA 4, MX6_IOM_DRAM_SDQS6, 0x00000030 | |
51 | -DATA 4, MX6_IOM_DRAM_SDQS7, 0x00000030 | |
52 | - | |
53 | -DATA 4, MX6_IOM_DRAM_DQM0, 0x00020030 | |
54 | -DATA 4, MX6_IOM_DRAM_DQM1, 0x00020030 | |
55 | -DATA 4, MX6_IOM_DRAM_DQM2, 0x00020030 | |
56 | -DATA 4, MX6_IOM_DRAM_DQM3, 0x00020030 | |
57 | -DATA 4, MX6_IOM_DRAM_DQM4, 0x00020030 | |
58 | -DATA 4, MX6_IOM_DRAM_DQM5, 0x00020030 | |
59 | -DATA 4, MX6_IOM_DRAM_DQM6, 0x00020030 | |
60 | -DATA 4, MX6_IOM_DRAM_DQM7, 0x00020030 | |
61 | - | |
62 | -DATA 4, MX6_IOM_DRAM_CAS, 0x00020030 | |
63 | -DATA 4, MX6_IOM_DRAM_RAS, 0x00020030 | |
64 | -DATA 4, MX6_IOM_DRAM_SDCLK_0, 0x00020030 | |
65 | -DATA 4, MX6_IOM_DRAM_SDCLK_1, 0x00020030 | |
66 | - | |
67 | -DATA 4, MX6_IOM_DRAM_RESET, 0x00020030 | |
68 | -DATA 4, MX6_IOM_DRAM_SDCKE0, 0x00003000 | |
69 | -DATA 4, MX6_IOM_DRAM_SDCKE1, 0x00003000 | |
70 | - | |
71 | -DATA 4, MX6_IOM_DRAM_SDBA2, 0x00000000 | |
72 | - | |
73 | -DATA 4, MX6_IOM_DRAM_SDODT0, 0x00003030 | |
74 | -DATA 4, MX6_IOM_DRAM_SDODT1, 0x00003030 | |
75 | - | |
76 | -DATA 4, MX6_IOM_GRP_B0DS, 0x00000030 | |
77 | -DATA 4, MX6_IOM_GRP_B1DS, 0x00000030 | |
78 | -DATA 4, MX6_IOM_GRP_B2DS, 0x00000030 | |
79 | -DATA 4, MX6_IOM_GRP_B3DS, 0x00000030 | |
80 | -DATA 4, MX6_IOM_GRP_B4DS, 0x00000030 | |
81 | -DATA 4, MX6_IOM_GRP_B5DS, 0x00000030 | |
82 | -DATA 4, MX6_IOM_GRP_B6DS, 0x00000030 | |
83 | -DATA 4, MX6_IOM_GRP_B7DS, 0x00000030 | |
84 | -DATA 4, MX6_IOM_GRP_ADDDS, 0x00000030 | |
85 | - | |
86 | -/* (differential input) */ | |
87 | -DATA 4, MX6_IOM_DDRMODE_CTL, 0x00020000 | |
88 | -/* disable ddr pullups */ | |
89 | -DATA 4, MX6_IOM_GRP_DDRPKE, 0x00000000 | |
90 | -/* (differential input) */ | |
91 | -DATA 4, MX6_IOM_GRP_DDRMODE, 0x00020000 | |
92 | -/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */ | |
93 | -DATA 4, MX6_IOM_GRP_CTLDS, 0x00000030 | |
94 | -/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */ | |
95 | -DATA 4, MX6_IOM_GRP_DDR_TYPE, 0x000C0000 | |
96 | - | |
97 | -/* Read data DQ Byte0-3 delay */ | |
98 | -DATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333 | |
99 | -DATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333 | |
100 | -DATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333 | |
101 | -DATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333 | |
102 | -DATA 4, MX6_MMDC_P1_MPRDDQBY0DL, 0x33333333 | |
103 | -DATA 4, MX6_MMDC_P1_MPRDDQBY1DL, 0x33333333 | |
104 | -DATA 4, MX6_MMDC_P1_MPRDDQBY2DL, 0x33333333 | |
105 | -DATA 4, MX6_MMDC_P1_MPRDDQBY3DL, 0x33333333 | |
106 | - | |
107 | -/* | |
108 | - * MDMISC mirroring interleaved (row/bank/col) | |
109 | - */ | |
110 | -DATA 4, MX6_MMDC_P0_MDMISC, 0x00081740 | |
111 | - | |
112 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x00008000 | |
113 | -DATA 4, MX6_MMDC_P0_MDCFG0, 0x555A7975 | |
114 | -DATA 4, MX6_MMDC_P0_MDCFG1, 0xFF538E64 | |
115 | -DATA 4, MX6_MMDC_P0_MDCFG2, 0x01FF00DB | |
116 | -DATA 4, MX6_MMDC_P0_MDRWD, 0x000026D2 | |
117 | -DATA 4, MX6_MMDC_P0_MDOR, 0x005B0E21 | |
118 | -DATA 4, MX6_MMDC_P0_MDOTC, 0x09444040 | |
119 | -DATA 4, MX6_MMDC_P0_MDPDC, 0x00025576 | |
120 | -DATA 4, MX6_MMDC_P0_MDASP, 0x00000017 | |
121 | -DATA 4, MX6_MMDC_P0_MDCTL, 0x83190000 | |
122 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x04088032 | |
123 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x0408803A | |
124 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x00008033 | |
125 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x0000803B | |
126 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x00428031 | |
127 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x00428039 | |
128 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x09408030 | |
129 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x09408038 | |
130 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x04008040 | |
131 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x04008048 | |
132 | -DATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xA1380003 | |
133 | -DATA 4, MX6_MMDC_P1_MPZQHWCTRL, 0xA1380003 | |
134 | -DATA 4, MX6_MMDC_P0_MDREF, 0x00005800 | |
135 | -DATA 4, MX6_MMDC_P0_MPODTCTRL, 0x00022227 | |
136 | -DATA 4, MX6_MMDC_P1_MPODTCTRL, 0x00022227 | |
137 | -DATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x434B0350 | |
138 | -DATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x034C0359 | |
139 | -DATA 4, MX6_MMDC_P1_MPDGCTRL0, 0x434B0350 | |
140 | -DATA 4, MX6_MMDC_P1_MPDGCTRL1, 0x03650348 | |
141 | -DATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x4436383B | |
142 | -DATA 4, MX6_MMDC_P1_MPRDDLCTL, 0x39393341 | |
143 | -DATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x35373933 | |
144 | -DATA 4, MX6_MMDC_P1_MPWRDLCTL, 0x48254A36 | |
145 | -DATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x001F001F | |
146 | -DATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x001F001F | |
147 | -DATA 4, MX6_MMDC_P1_MPWLDECTRL0, 0x00440044 | |
148 | -DATA 4, MX6_MMDC_P1_MPWLDECTRL1, 0x00440044 | |
149 | -DATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800 | |
150 | -DATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800 | |
151 | -DATA 4, MX6_MMDC_P0_MDSCR, 0x00000000 | |
152 | -DATA 4, MX6_MMDC_P0_MAPSR, 0x00011006 | |
153 | - | |
154 | -/* set the default clock gate to save power */ | |
155 | -DATA 4, CCM_CCGR0, 0x00C03F3F | |
156 | -DATA 4, CCM_CCGR1, 0x0030FC03 | |
157 | -DATA 4, CCM_CCGR2, 0x0FFFC000 | |
158 | -DATA 4, CCM_CCGR3, 0x3FF00000 | |
159 | -DATA 4, CCM_CCGR4, 0xFFFFF300 /* enable NAND/GPMI/BCH clocks */ | |
160 | -DATA 4, CCM_CCGR5, 0x0F0000C3 | |
161 | -DATA 4, CCM_CCGR6, 0x000003FF | |
162 | - | |
163 | -/* enable AXI cache for VDOA/VPU/IPU */ | |
164 | -DATA 4, MX6_IOMUXC_GPR4, 0xF00000CF | |
165 | -/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */ | |
166 | -DATA 4, MX6_IOMUXC_GPR6, 0x007F007F | |
167 | -DATA 4, MX6_IOMUXC_GPR7, 0x007F007F |
board/freescale/titanium/titanium.c
1 | -/* | |
2 | - * Copyright (C) 2013 Stefan Roese <sr@denx.de> | |
3 | - * | |
4 | - * SPDX-License-Identifier: GPL-2.0+ | |
5 | - */ | |
6 | - | |
7 | -#include <common.h> | |
8 | -#include <asm/io.h> | |
9 | -#include <asm/arch/clock.h> | |
10 | -#include <asm/arch/imx-regs.h> | |
11 | -#include <asm/arch/iomux.h> | |
12 | -#include <asm/arch/mx6q_pins.h> | |
13 | -#include <asm/arch/crm_regs.h> | |
14 | -#include <asm/arch/sys_proto.h> | |
15 | -#include <asm/gpio.h> | |
16 | -#include <asm/imx-common/iomux-v3.h> | |
17 | -#include <asm/imx-common/mxc_i2c.h> | |
18 | -#include <asm/imx-common/boot_mode.h> | |
19 | -#include <mmc.h> | |
20 | -#include <fsl_esdhc.h> | |
21 | -#include <micrel.h> | |
22 | -#include <miiphy.h> | |
23 | -#include <netdev.h> | |
24 | - | |
25 | -DECLARE_GLOBAL_DATA_PTR; | |
26 | - | |
27 | -#define UART_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ | |
28 | - PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS) | |
29 | - | |
30 | -#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_LOW | \ | |
31 | - PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST | PAD_CTL_HYS) | |
32 | - | |
33 | -#define ENET_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ | |
34 | - PAD_CTL_DSE_40ohm | PAD_CTL_HYS) | |
35 | - | |
36 | -#define I2C_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \ | |
37 | - PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \ | |
38 | - PAD_CTL_ODE | PAD_CTL_SRE_FAST) | |
39 | - | |
40 | -int dram_init(void) | |
41 | -{ | |
42 | - gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE); | |
43 | - | |
44 | - return 0; | |
45 | -} | |
46 | - | |
47 | -iomux_v3_cfg_t const uart1_pads[] = { | |
48 | - MX6_PAD_SD3_DAT6__UART1_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
49 | - MX6_PAD_SD3_DAT7__UART1_TXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
50 | -}; | |
51 | - | |
52 | -iomux_v3_cfg_t const uart2_pads[] = { | |
53 | - MX6_PAD_EIM_D26__UART2_TXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
54 | - MX6_PAD_EIM_D27__UART2_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
55 | -}; | |
56 | - | |
57 | -iomux_v3_cfg_t const uart4_pads[] = { | |
58 | - MX6_PAD_CSI0_DAT12__UART4_TXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
59 | - MX6_PAD_CSI0_DAT13__UART4_RXD | MUX_PAD_CTRL(UART_PAD_CTRL), | |
60 | -}; | |
61 | - | |
62 | -#define PC MUX_PAD_CTRL(I2C_PAD_CTRL) | |
63 | - | |
64 | -struct i2c_pads_info i2c_pad_info0 = { | |
65 | - .scl = { | |
66 | - .i2c_mode = MX6_PAD_CSI0_DAT9__I2C1_SCL | PC, | |
67 | - .gpio_mode = MX6_PAD_CSI0_DAT9__GPIO_5_27 | PC, | |
68 | - .gp = IMX_GPIO_NR(5, 27) | |
69 | - }, | |
70 | - .sda = { | |
71 | - .i2c_mode = MX6_PAD_CSI0_DAT8__I2C1_SDA | PC, | |
72 | - .gpio_mode = MX6_PAD_CSI0_DAT8__GPIO_5_26 | PC, | |
73 | - .gp = IMX_GPIO_NR(5, 26) | |
74 | - } | |
75 | -}; | |
76 | - | |
77 | -struct i2c_pads_info i2c_pad_info2 = { | |
78 | - .scl = { | |
79 | - .i2c_mode = MX6_PAD_GPIO_3__I2C3_SCL | PC, | |
80 | - .gpio_mode = MX6_PAD_GPIO_3__GPIO_1_3 | PC, | |
81 | - .gp = IMX_GPIO_NR(1, 3) | |
82 | - }, | |
83 | - .sda = { | |
84 | - .i2c_mode = MX6_PAD_GPIO_16__I2C3_SDA | PC, | |
85 | - .gpio_mode = MX6_PAD_GPIO_16__GPIO_7_11 | PC, | |
86 | - .gp = IMX_GPIO_NR(7, 11) | |
87 | - } | |
88 | -}; | |
89 | - | |
90 | -iomux_v3_cfg_t const usdhc3_pads[] = { | |
91 | - MX6_PAD_SD3_CLK__USDHC3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
92 | - MX6_PAD_SD3_CMD__USDHC3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
93 | - MX6_PAD_SD3_DAT0__USDHC3_DAT0 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
94 | - MX6_PAD_SD3_DAT1__USDHC3_DAT1 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
95 | - MX6_PAD_SD3_DAT2__USDHC3_DAT2 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
96 | - MX6_PAD_SD3_DAT3__USDHC3_DAT3 | MUX_PAD_CTRL(USDHC_PAD_CTRL), | |
97 | - MX6_PAD_SD3_DAT5__GPIO_7_0 | MUX_PAD_CTRL(NO_PAD_CTRL), /* CD */ | |
98 | -}; | |
99 | - | |
100 | -iomux_v3_cfg_t const enet_pads1[] = { | |
101 | - MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
102 | - MX6_PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
103 | - MX6_PAD_RGMII_TXC__ENET_RGMII_TXC | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
104 | - MX6_PAD_RGMII_TD0__ENET_RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
105 | - MX6_PAD_RGMII_TD1__ENET_RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
106 | - MX6_PAD_RGMII_TD2__ENET_RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
107 | - MX6_PAD_RGMII_TD3__ENET_RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
108 | - MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
109 | - MX6_PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
110 | - /* pin 35 - 1 (PHY_AD2) on reset */ | |
111 | - MX6_PAD_RGMII_RXC__GPIO_6_30 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
112 | - /* pin 32 - 1 - (MODE0) all */ | |
113 | - MX6_PAD_RGMII_RD0__GPIO_6_25 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
114 | - /* pin 31 - 1 - (MODE1) all */ | |
115 | - MX6_PAD_RGMII_RD1__GPIO_6_27 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
116 | - /* pin 28 - 1 - (MODE2) all */ | |
117 | - MX6_PAD_RGMII_RD2__GPIO_6_28 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
118 | - /* pin 27 - 1 - (MODE3) all */ | |
119 | - MX6_PAD_RGMII_RD3__GPIO_6_29 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
120 | - /* pin 33 - 1 - (CLK125_EN) 125Mhz clockout enabled */ | |
121 | - MX6_PAD_RGMII_RX_CTL__GPIO_6_24 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
122 | - /* pin 42 PHY nRST */ | |
123 | - MX6_PAD_EIM_D23__GPIO_3_23 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
124 | -}; | |
125 | - | |
126 | -iomux_v3_cfg_t const enet_pads2[] = { | |
127 | - MX6_PAD_RGMII_RXC__ENET_RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
128 | - MX6_PAD_RGMII_RD0__ENET_RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
129 | - MX6_PAD_RGMII_RD1__ENET_RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
130 | - MX6_PAD_RGMII_RD2__ENET_RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
131 | - MX6_PAD_RGMII_RD3__ENET_RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
132 | - MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL), | |
133 | -}; | |
134 | - | |
135 | -iomux_v3_cfg_t nfc_pads[] = { | |
136 | - MX6_PAD_NANDF_CLE__RAWNAND_CLE | MUX_PAD_CTRL(NO_PAD_CTRL), | |
137 | - MX6_PAD_NANDF_ALE__RAWNAND_ALE | MUX_PAD_CTRL(NO_PAD_CTRL), | |
138 | - MX6_PAD_NANDF_WP_B__RAWNAND_RESETN | MUX_PAD_CTRL(NO_PAD_CTRL), | |
139 | - MX6_PAD_NANDF_RB0__RAWNAND_READY0 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
140 | - MX6_PAD_NANDF_CS0__RAWNAND_CE0N | MUX_PAD_CTRL(NO_PAD_CTRL), | |
141 | - MX6_PAD_NANDF_CS1__RAWNAND_CE1N | MUX_PAD_CTRL(NO_PAD_CTRL), | |
142 | - MX6_PAD_NANDF_CS2__RAWNAND_CE2N | MUX_PAD_CTRL(NO_PAD_CTRL), | |
143 | - MX6_PAD_NANDF_CS3__RAWNAND_CE3N | MUX_PAD_CTRL(NO_PAD_CTRL), | |
144 | - MX6_PAD_SD4_CMD__RAWNAND_RDN | MUX_PAD_CTRL(NO_PAD_CTRL), | |
145 | - MX6_PAD_SD4_CLK__RAWNAND_WRN | MUX_PAD_CTRL(NO_PAD_CTRL), | |
146 | - MX6_PAD_NANDF_D0__RAWNAND_D0 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
147 | - MX6_PAD_NANDF_D1__RAWNAND_D1 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
148 | - MX6_PAD_NANDF_D2__RAWNAND_D2 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
149 | - MX6_PAD_NANDF_D3__RAWNAND_D3 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
150 | - MX6_PAD_NANDF_D4__RAWNAND_D4 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
151 | - MX6_PAD_NANDF_D5__RAWNAND_D5 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
152 | - MX6_PAD_NANDF_D6__RAWNAND_D6 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
153 | - MX6_PAD_NANDF_D7__RAWNAND_D7 | MUX_PAD_CTRL(NO_PAD_CTRL), | |
154 | - MX6_PAD_SD4_DAT0__RAWNAND_DQS | MUX_PAD_CTRL(NO_PAD_CTRL), | |
155 | -}; | |
156 | - | |
157 | -static void setup_gpmi_nand(void) | |
158 | -{ | |
159 | - struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; | |
160 | - | |
161 | - /* config gpmi nand iomux */ | |
162 | - imx_iomux_v3_setup_multiple_pads(nfc_pads, | |
163 | - ARRAY_SIZE(nfc_pads)); | |
164 | - | |
165 | - /* config gpmi and bch clock to 100 MHz */ | |
166 | - clrsetbits_le32(&mxc_ccm->cs2cdr, | |
167 | - MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK | | |
168 | - MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK | | |
169 | - MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK, | |
170 | - MXC_CCM_CS2CDR_ENFC_CLK_PODF(0) | | |
171 | - MXC_CCM_CS2CDR_ENFC_CLK_PRED(3) | | |
172 | - MXC_CCM_CS2CDR_ENFC_CLK_SEL(3)); | |
173 | - | |
174 | - /* enable gpmi and bch clock gating */ | |
175 | - setbits_le32(&mxc_ccm->CCGR4, | |
176 | - MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK | | |
177 | - MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK | | |
178 | - MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK | | |
179 | - MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK | | |
180 | - MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET); | |
181 | - | |
182 | - /* enable apbh clock gating */ | |
183 | - setbits_le32(&mxc_ccm->CCGR0, MXC_CCM_CCGR0_APBHDMA_MASK); | |
184 | -} | |
185 | - | |
186 | -static void setup_iomux_enet(void) | |
187 | -{ | |
188 | - gpio_direction_output(IMX_GPIO_NR(3, 23), 0); | |
189 | - gpio_direction_output(IMX_GPIO_NR(6, 30), 1); | |
190 | - gpio_direction_output(IMX_GPIO_NR(6, 25), 1); | |
191 | - gpio_direction_output(IMX_GPIO_NR(6, 27), 1); | |
192 | - gpio_direction_output(IMX_GPIO_NR(6, 28), 1); | |
193 | - gpio_direction_output(IMX_GPIO_NR(6, 29), 1); | |
194 | - imx_iomux_v3_setup_multiple_pads(enet_pads1, ARRAY_SIZE(enet_pads1)); | |
195 | - gpio_direction_output(IMX_GPIO_NR(6, 24), 1); | |
196 | - | |
197 | - /* Need delay 10ms according to KSZ9021 spec */ | |
198 | - udelay(1000 * 10); | |
199 | - gpio_set_value(IMX_GPIO_NR(3, 23), 1); | |
200 | - | |
201 | - imx_iomux_v3_setup_multiple_pads(enet_pads2, ARRAY_SIZE(enet_pads2)); | |
202 | -} | |
203 | - | |
204 | -static void setup_iomux_uart(void) | |
205 | -{ | |
206 | - imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); | |
207 | - imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads)); | |
208 | - imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads)); | |
209 | -} | |
210 | - | |
211 | -#ifdef CONFIG_USB_EHCI_MX6 | |
212 | -int board_ehci_hcd_init(int port) | |
213 | -{ | |
214 | - return 0; | |
215 | -} | |
216 | - | |
217 | -#endif | |
218 | - | |
219 | -#ifdef CONFIG_FSL_ESDHC | |
220 | -struct fsl_esdhc_cfg usdhc_cfg[1] = { | |
221 | - { USDHC3_BASE_ADDR }, | |
222 | -}; | |
223 | - | |
224 | -int board_mmc_getcd(struct mmc *mmc) | |
225 | -{ | |
226 | - struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv; | |
227 | - | |
228 | - if (cfg->esdhc_base == USDHC3_BASE_ADDR) { | |
229 | - gpio_direction_input(IMX_GPIO_NR(7, 0)); | |
230 | - return !gpio_get_value(IMX_GPIO_NR(7, 0)); | |
231 | - } | |
232 | - | |
233 | - return 0; | |
234 | -} | |
235 | - | |
236 | -int board_mmc_init(bd_t *bis) | |
237 | -{ | |
238 | - /* | |
239 | - * Only one USDHC controller on titianium | |
240 | - */ | |
241 | - imx_iomux_v3_setup_multiple_pads(usdhc3_pads, ARRAY_SIZE(usdhc3_pads)); | |
242 | - usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK); | |
243 | - | |
244 | - return fsl_esdhc_initialize(bis, &usdhc_cfg[0]); | |
245 | -} | |
246 | -#endif | |
247 | - | |
248 | -int board_phy_config(struct phy_device *phydev) | |
249 | -{ | |
250 | - /* min rx data delay */ | |
251 | - ksz9021_phy_extended_write(phydev, | |
252 | - MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW, 0x0); | |
253 | - /* min tx data delay */ | |
254 | - ksz9021_phy_extended_write(phydev, | |
255 | - MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW, 0x0); | |
256 | - /* max rx/tx clock delay, min rx/tx control */ | |
257 | - ksz9021_phy_extended_write(phydev, | |
258 | - MII_KSZ9021_EXT_RGMII_CLOCK_SKEW, 0xf0f0); | |
259 | - if (phydev->drv->config) | |
260 | - phydev->drv->config(phydev); | |
261 | - | |
262 | - return 0; | |
263 | -} | |
264 | - | |
265 | -int board_eth_init(bd_t *bis) | |
266 | -{ | |
267 | - int ret; | |
268 | - | |
269 | - setup_iomux_enet(); | |
270 | - | |
271 | - ret = cpu_eth_init(bis); | |
272 | - if (ret) | |
273 | - printf("FEC MXC: %s:failed\n", __func__); | |
274 | - | |
275 | - return ret; | |
276 | -} | |
277 | - | |
278 | -int board_early_init_f(void) | |
279 | -{ | |
280 | - setup_iomux_uart(); | |
281 | - | |
282 | - return 0; | |
283 | -} | |
284 | - | |
285 | -int board_init(void) | |
286 | -{ | |
287 | - /* address of boot parameters */ | |
288 | - gd->bd->bi_boot_params = PHYS_SDRAM + 0x100; | |
289 | - | |
290 | - setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info0); | |
291 | - setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2); | |
292 | - | |
293 | - setup_gpmi_nand(); | |
294 | - | |
295 | - return 0; | |
296 | -} | |
297 | - | |
298 | -int checkboard(void) | |
299 | -{ | |
300 | - puts("Board: Titanium\n"); | |
301 | - | |
302 | - return 0; | |
303 | -} | |
304 | - | |
305 | -#ifdef CONFIG_CMD_BMODE | |
306 | -static const struct boot_mode board_boot_modes[] = { | |
307 | - /* NAND */ | |
308 | - { "nand", MAKE_CFGVAL(0x80, 0x02, 0x00, 0x00) }, | |
309 | - /* 4 bit bus width */ | |
310 | - { "mmc0", MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00) }, | |
311 | - { "mmc1", MAKE_CFGVAL(0x40, 0x38, 0x00, 0x00) }, | |
312 | - { NULL, 0 }, | |
313 | -}; | |
314 | -#endif | |
315 | - | |
316 | -int misc_init_r(void) | |
317 | -{ | |
318 | -#ifdef CONFIG_CMD_BMODE | |
319 | - add_board_boot_modes(board_boot_modes); | |
320 | -#endif | |
321 | - | |
322 | - return 0; | |
323 | -} |
boards.cfg
... | ... | @@ -302,7 +302,7 @@ |
302 | 302 | Active arm armv7 mx6 freescale mx6sabresd mx6dlsabresd mx6sabresd:IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL Fabio Estevam <fabio.estevam@freescale.com> |
303 | 303 | Active arm armv7 mx6 freescale mx6sabresd mx6qsabresd mx6sabresd:IMX_CONFIG=board/freescale/imx/ddr/mx6q_4x_mt41j128.cfg,MX6Q Fabio Estevam <fabio.estevam@freescale.com> |
304 | 304 | Active arm armv7 mx6 freescale mx6slevk mx6slevk mx6slevk:IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL Fabio Estevam <fabio.estevam@freescale.com> |
305 | -Active arm armv7 mx6 freescale titanium titanium titanium:IMX_CONFIG=board/freescale/titanium/imximage.cfg Stefan Roese <sr@denx.de> | |
305 | +Active arm armv7 mx6 barco titanium titanium titanium:IMX_CONFIG=board/barco/titanium/imximage.cfg Stefan Roese <sr@denx.de> | |
306 | 306 | Active arm armv7 omap3 - overo omap3_overo - Steve Sakoman <sakoman@gmail.com> |
307 | 307 | Active arm armv7 omap3 - pandora omap3_pandora - Grazvydas Ignotas <notasas@gmail.com> |
308 | 308 | Active arm armv7 omap3 8dtech eco5pk eco5pk - Raphael Assenat <raph@8d.com> |