Skip to content

Commit d7782d0

Browse files
committed
Merge branch 'master' of git://git.denx.de/u-boot-mpc85xx
2 parents 6be6b6b + e491181 commit d7782d0

File tree

31 files changed

+578
-327
lines changed

31 files changed

+578
-327
lines changed

arch/powerpc/cpu/mpc85xx/cmd_errata.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
299299
#ifdef CONFIG_SYS_FSL_ERRATUM_A007212
300300
check_erratum_a007212();
301301
#endif
302+
#ifdef CONFIG_SYS_FSL_ERRATUM_A005434
303+
puts("Work-around for Erratum A-005434 enabled\n");
304+
#endif
302305

303306
return 0;
304307
}

arch/powerpc/cpu/mpc8xxx/cpu.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ static struct cpu_type cpu_type_list[] = {
6767
CPU_TYPE_ENTRY(G4860, G4860, 0),
6868
CPU_TYPE_ENTRY(G4060, G4060, 0),
6969
CPU_TYPE_ENTRY(B4440, B4440, 0),
70+
CPU_TYPE_ENTRY(B4460, B4460, 0),
7071
CPU_TYPE_ENTRY(G4440, G4440, 0),
7172
CPU_TYPE_ENTRY(B4420, B4420, 0),
7273
CPU_TYPE_ENTRY(B4220, B4220, 0),

arch/powerpc/include/asm/config_mpc85xx.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,9 @@
247247
#define CONFIG_SYS_FSL_ERRATUM_ELBC_A001
248248
#define CONFIG_SYS_FSL_ERRATUM_ESDHC111
249249
#define CONFIG_SYS_FSL_ERRATUM_A005125
250+
#ifndef CONFIG_USB_MAX_CONTROLLER_COUNT
250251
#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
252+
#endif
251253

252254
#elif defined(CONFIG_P1021)
253255
#define CONFIG_MAX_CPUS 2
@@ -591,6 +593,7 @@
591593
#define CONFIG_SYS_FSL_ESDHC_P1010_BROKEN_SDCLK
592594
#define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v2.2"
593595
#define CONFIG_SYS_FSL_ERRATUM_A005125
596+
#define CONFIG_SYS_FSL_ERRATUM_A005434
594597
#define CONFIG_SYS_FSL_ERRATUM_I2C_A004447
595598
#define CONFIG_SYS_FSL_A004447_SVR_REV 0x11
596599
#define CONFIG_ESDHC_HC_BLK_ADDR

arch/powerpc/include/asm/processor.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,6 +1117,7 @@
11171117
#define SVR_C293 0x850030
11181118
#define SVR_B4860 0X868000
11191119
#define SVR_G4860 0x868001
1120+
#define SVR_B4460 0x868003
11201121
#define SVR_G4060 0x868003
11211122
#define SVR_B4440 0x868100
11221123
#define SVR_G4440 0x868101

board/freescale/common/sys_eeprom.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
/* some boards with non-256-bytes EEPROM have special define */
2222
/* for MAX_NUM_PORTS in board-specific file */
2323
#ifndef MAX_NUM_PORTS
24-
#define MAX_NUM_PORTS 23
24+
#define MAX_NUM_PORTS 16
2525
#endif
2626
#define NXID_VERSION 1
2727
#endif
@@ -58,8 +58,9 @@ static struct __attribute__ ((__packed__)) eeprom {
5858
u8 res_1[21]; /* 0x2b - 0x3f Reserved */
5959
u8 mac_count; /* 0x40 Number of MAC addresses */
6060
u8 mac_flag; /* 0x41 MAC table flags */
61-
u8 mac[MAX_NUM_PORTS][6]; /* 0x42 - x MAC addresses */
62-
u32 crc; /* x+1 CRC32 checksum */
61+
u8 mac[MAX_NUM_PORTS][6]; /* 0x42 - 0xa1 MAC addresses */
62+
u8 res_2[90]; /* 0xa2 - 0xfb Reserved */
63+
u32 crc; /* 0xfc - 0xff CRC32 checksum */
6364
#endif
6465
} e;
6566

board/freescale/p1_p2_rdb/Makefile

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,27 @@
44
# SPDX-License-Identifier: GPL-2.0+
55
#
66

7+
MINIMAL=
8+
9+
ifdef CONFIG_SPL_BUILD
10+
ifdef CONFIG_SPL_INIT_MINIMAL
11+
MINIMAL=y
12+
endif
13+
endif
14+
15+
ifdef MINIMAL
16+
17+
obj-y += spl_minimal.o tlb.o law.o
18+
19+
else
20+
ifdef CONFIG_SPL_BUILD
21+
obj-y += spl.o
22+
else
723
obj-y += p1_p2_rdb.o
24+
obj-$(CONFIG_PCI) += pci.o
25+
endif
826
obj-y += ddr.o
927
obj-y += law.o
10-
obj-$(CONFIG_PCI) += pci.o
1128
obj-y += tlb.o
29+
30+
endif

board/freescale/p1_p2_rdb/ddr.c

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -180,27 +180,22 @@ fsl_ddr_cfg_regs_t ddr_cfg_regs_800 = {
180180

181181
phys_size_t fixed_sdram (void)
182182
{
183-
char buf[32];
184183
fsl_ddr_cfg_regs_t ddr_cfg_regs;
185184
size_t ddr_size;
186185
struct cpu_type *cpu;
187186
ulong ddr_freq, ddr_freq_mhz;
188187

189188
cpu = gd->arch.cpu;
190-
/* P1020 and it's derivatives support max 32bit DDR width */
191-
if (cpu->soc_ver == SVR_P1020 || cpu->soc_ver == SVR_P1011) {
192-
ddr_size = (CONFIG_SYS_SDRAM_SIZE * 1024 * 1024 / 2);
193-
} else {
194-
ddr_size = CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
195-
}
189+
190+
ddr_size = CONFIG_SYS_SDRAM_SIZE * 1024 * 1024;
191+
196192
#if defined(CONFIG_SYS_RAMBOOT)
197193
return ddr_size;
198194
#endif
199195
ddr_freq = get_ddr_freq(0);
200196
ddr_freq_mhz = ddr_freq / 1000000;
201197

202-
printf("Configuring DDR for %s MT/s data rate\n",
203-
strmhz(buf, ddr_freq));
198+
printf("Configuring DDR for %ld T/s data rate\n", ddr_freq);
204199

205200
if(ddr_freq_mhz <= 400)
206201
memcpy(&ddr_cfg_regs, &ddr_cfg_regs_400, sizeof(ddr_cfg_regs));
@@ -211,8 +206,7 @@ phys_size_t fixed_sdram (void)
211206
else if(ddr_freq_mhz <= 800)
212207
memcpy(&ddr_cfg_regs, &ddr_cfg_regs_800, sizeof(ddr_cfg_regs));
213208
else
214-
panic("Unsupported DDR data rate %s MT/s data rate\n",
215-
strmhz(buf, ddr_freq));
209+
panic("Unsupported DDR data rate %ld T/s\n", ddr_freq);
216210

217211
/* P1020 and it's derivatives support max 32bit DDR width */
218212
if (cpu->soc_ver == SVR_P1020 || cpu->soc_ver == SVR_P1011) {

board/freescale/p1_p2_rdb/spl.c

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
/*
2+
* Copyright 2013 Freescale Semiconductor, Inc.
3+
*
4+
* SPDX-License-Identifier: GPL-2.0+
5+
*/
6+
7+
#include <common.h>
8+
#include <ns16550.h>
9+
#include <malloc.h>
10+
#include <mmc.h>
11+
#include <nand.h>
12+
#include <i2c.h>
13+
#include <fsl_esdhc.h>
14+
#include <spi_flash.h>
15+
16+
DECLARE_GLOBAL_DATA_PTR;
17+
18+
#define SYSCLK_MASK 0x00200000
19+
#define BOARDREV_MASK 0x10100000
20+
21+
#define SYSCLK_66 66666666
22+
#define SYSCLK_100 100000000
23+
24+
unsigned long get_board_sys_clk(ulong dummy)
25+
{
26+
ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
27+
u32 val_gpdat, sysclk_gpio;
28+
29+
val_gpdat = in_be32(&pgpio->gpdat);
30+
sysclk_gpio = val_gpdat & SYSCLK_MASK;
31+
32+
if (sysclk_gpio == 0)
33+
return SYSCLK_66;
34+
else
35+
return SYSCLK_100;
36+
37+
return 0;
38+
}
39+
40+
phys_size_t get_effective_memsize(void)
41+
{
42+
return CONFIG_SYS_L2_SIZE;
43+
}
44+
45+
void board_init_f(ulong bootflag)
46+
{
47+
u32 plat_ratio, bus_clk;
48+
ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
49+
50+
console_init_f();
51+
52+
/* Set pmuxcr to allow both i2c1 and i2c2 */
53+
setbits_be32(&gur->pmuxcr, in_be32(&gur->pmuxcr) | 0x1000);
54+
setbits_be32(&gur->pmuxcr,
55+
in_be32(&gur->pmuxcr) | MPC85xx_PMUXCR_SD_DATA);
56+
57+
/* Read back the register to synchronize the write. */
58+
in_be32(&gur->pmuxcr);
59+
60+
#ifdef CONFIG_SPL_SPI_BOOT
61+
clrbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_SD_DATA);
62+
#endif
63+
64+
/* initialize selected port with appropriate baud rate */
65+
plat_ratio = in_be32(&gur->porpllsr) & MPC85xx_PORPLLSR_PLAT_RATIO;
66+
plat_ratio >>= 1;
67+
bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
68+
gd->bus_clk = bus_clk;
69+
70+
NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
71+
bus_clk / 16 / CONFIG_BAUDRATE);
72+
#ifdef CONFIG_SPL_MMC_BOOT
73+
puts("\nSD boot...\n");
74+
#elif defined(CONFIG_SPL_SPI_BOOT)
75+
puts("\nSPI Flash boot...\n");
76+
#endif
77+
78+
/* copy code to RAM and jump to it - this should not return */
79+
/* NOTE - code has to be copied out of NAND buffer before
80+
* other blocks can be read.
81+
*/
82+
relocate_code(CONFIG_SPL_RELOC_STACK, 0, CONFIG_SPL_RELOC_TEXT_BASE);
83+
}
84+
85+
void board_init_r(gd_t *gd, ulong dest_addr)
86+
{
87+
/* Pointer is writable since we allocated a register for it */
88+
gd = (gd_t *)CONFIG_SPL_GD_ADDR;
89+
bd_t *bd;
90+
91+
memset(gd, 0, sizeof(gd_t));
92+
bd = (bd_t *)(CONFIG_SPL_GD_ADDR + sizeof(gd_t));
93+
memset(bd, 0, sizeof(bd_t));
94+
gd->bd = bd;
95+
bd->bi_memstart = CONFIG_SYS_INIT_L2_ADDR;
96+
bd->bi_memsize = CONFIG_SYS_L2_SIZE;
97+
98+
probecpu();
99+
get_clocks();
100+
mem_malloc_init(CONFIG_SPL_RELOC_MALLOC_ADDR,
101+
CONFIG_SPL_RELOC_MALLOC_SIZE);
102+
103+
#ifdef CONFIG_SPL_MMC_BOOT
104+
mmc_initialize(bd);
105+
#endif
106+
/* relocate environment function pointers etc. */
107+
#ifdef CONFIG_SPL_NAND_BOOT
108+
nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
109+
(uchar *)CONFIG_ENV_ADDR);
110+
#endif
111+
#ifdef CONFIG_SPL_NAND_BOOT
112+
nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
113+
(uchar *)CONFIG_ENV_ADDR);
114+
#endif
115+
#ifdef CONFIG_SPL_MMC_BOOT
116+
mmc_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
117+
(uchar *)CONFIG_ENV_ADDR);
118+
#endif
119+
#ifdef CONFIG_SPL_SPI_BOOT
120+
spi_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
121+
(uchar *)CONFIG_ENV_ADDR);
122+
#endif
123+
124+
gd->env_addr = (ulong)(CONFIG_ENV_ADDR);
125+
gd->env_valid = 1;
126+
127+
gd->ram_size = initdram(0);
128+
#ifdef CONFIG_SPL_NAND_BOOT
129+
puts("Tertiary program loader running in sram...");
130+
#else
131+
puts("Second program loader running in sram...\n");
132+
#endif
133+
134+
#ifdef CONFIG_SPL_MMC_BOOT
135+
mmc_boot();
136+
#elif defined(CONFIG_SPL_SPI_BOOT)
137+
spi_boot();
138+
#elif defined(CONFIG_SPL_NAND_BOOT)
139+
nand_boot();
140+
#endif
141+
}
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/*
2+
* Copyright 2011 Freescale Semiconductor, Inc.
3+
*
4+
* SPDX-License-Identifier: GPL-2.0+
5+
*/
6+
7+
#include <common.h>
8+
#include <ns16550.h>
9+
#include <asm/io.h>
10+
#include <nand.h>
11+
#include <linux/compiler.h>
12+
#include <asm/fsl_law.h>
13+
#include <fsl_ddr_sdram.h>
14+
#include <asm/global_data.h>
15+
16+
DECLARE_GLOBAL_DATA_PTR;
17+
#define SYSCLK_MASK 0x00200000
18+
#define BOARDREV_MASK 0x10100000
19+
20+
#define SYSCLK_66 66666666
21+
#define SYSCLK_100 100000000
22+
23+
unsigned long get_board_sys_clk(ulong dummy)
24+
{
25+
ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
26+
u32 val_gpdat, sysclk_gpio;
27+
28+
val_gpdat = in_be32(&pgpio->gpdat);
29+
sysclk_gpio = val_gpdat & SYSCLK_MASK;
30+
31+
if (sysclk_gpio == 0)
32+
return SYSCLK_66;
33+
else
34+
return SYSCLK_100;
35+
36+
return 0;
37+
}
38+
39+
void board_init_f(ulong bootflag)
40+
{
41+
u32 plat_ratio;
42+
ccsr_gur_t *gur = (void *)CONFIG_SYS_MPC85xx_GUTS_ADDR;
43+
44+
#if defined(CONFIG_SYS_NAND_BR_PRELIM) && defined(CONFIG_SYS_NAND_OR_PRELIM)
45+
set_lbc_br(0, CONFIG_SYS_NAND_BR_PRELIM);
46+
set_lbc_or(0, CONFIG_SYS_NAND_OR_PRELIM);
47+
#endif
48+
49+
/* initialize selected port with appropriate baud rate */
50+
plat_ratio = in_be32(&gur->porpllsr) & MPC85xx_PORPLLSR_PLAT_RATIO;
51+
plat_ratio >>= 1;
52+
gd->bus_clk = CONFIG_SYS_CLK_FREQ * plat_ratio;
53+
54+
NS16550_init((NS16550_t)CONFIG_SYS_NS16550_COM1,
55+
gd->bus_clk / 16 / CONFIG_BAUDRATE);
56+
57+
puts("\nNAND boot... ");
58+
59+
/* copy code to RAM and jump to it - this should not return */
60+
/* NOTE - code has to be copied out of NAND buffer before
61+
* other blocks can be read.
62+
*/
63+
relocate_code(CONFIG_SPL_RELOC_STACK, 0, CONFIG_SPL_RELOC_TEXT_BASE);
64+
}
65+
66+
void board_init_r(gd_t *gd, ulong dest_addr)
67+
{
68+
puts("\nSecond program loader running in sram...");
69+
nand_boot();
70+
}
71+
72+
void putc(char c)
73+
{
74+
if (c == '\n')
75+
NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, '\r');
76+
77+
NS16550_putc((NS16550_t)CONFIG_SYS_NS16550_COM1, c);
78+
}
79+
80+
void puts(const char *str)
81+
{
82+
while (*str)
83+
putc(*str++);
84+
}

0 commit comments

Comments
 (0)