mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-11-28 22:21:49 +01:00
ARM: uniphier: rework spl_boot_device() and related code
The current implementation has ugly switch statements here and there, and duplicates similar code. Rework it using table lookups for SoC data and reduce code duplication. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
parent
81c847bf38
commit
784548efb2
@ -25,7 +25,7 @@ obj-$(CONFIG_MMC) += mmc-first-dev.o
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
obj-y += soc-info.o
|
obj-y += soc-info.o
|
||||||
obj-y += boot-mode/
|
obj-y += boot-device/
|
||||||
obj-y += clk/
|
obj-y += clk/
|
||||||
obj-y += dram/
|
obj-y += dram/
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include <../drivers/mtd/nand/denali.h>
|
#include <../drivers/mtd/nand/denali.h>
|
||||||
|
|
||||||
#include "boot-mode/boot-device.h"
|
#include "init.h"
|
||||||
|
|
||||||
static void nand_denali_wp_disable(void)
|
static void nand_denali_wp_disable(void)
|
||||||
{
|
{
|
||||||
@ -62,7 +62,7 @@ int board_late_init(void)
|
|||||||
{
|
{
|
||||||
puts("MODE: ");
|
puts("MODE: ");
|
||||||
|
|
||||||
switch (spl_boot_device_raw()) {
|
switch (uniphier_boot_device_raw()) {
|
||||||
case BOOT_DEVICE_MMC1:
|
case BOOT_DEVICE_MMC1:
|
||||||
printf("eMMC Boot\n");
|
printf("eMMC Boot\n");
|
||||||
setenv("bootmode", "emmcboot");
|
setenv("bootmode", "emmcboot");
|
||||||
|
|||||||
19
arch/arm/mach-uniphier/boot-device/Makefile
Normal file
19
arch/arm/mach-uniphier/boot-device/Makefile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
#
|
||||||
|
|
||||||
|
obj-y += boot-device.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_SLD3) += boot-device-sld3.o
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_LD4) += boot-device-ld4.o
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_PRO4) += boot-device-ld4.o
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_SLD8) += boot-device-ld4.o
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_PRO5) += boot-device-pro5.o
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_PXS2) += boot-device-pxs2.o
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_LD6B) += boot-device-pxs2.o
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_LD11) += boot-device-ld11.o
|
||||||
|
obj-$(CONFIG_ARCH_UNIPHIER_LD20) += boot-device-ld11.o
|
||||||
|
|
||||||
|
ifdef CONFIG_SPL_BUILD
|
||||||
|
obj-$(CONFIG_SPL_BOARD_LOAD_IMAGE) += spl_board.o
|
||||||
|
endif
|
||||||
@ -8,12 +8,11 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <spl.h>
|
#include <spl.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
#include "../sg-regs.h"
|
|
||||||
#include "../soc-info.h"
|
|
||||||
#include "boot-device.h"
|
#include "boot-device.h"
|
||||||
|
|
||||||
static struct boot_device_info boot_device_table[] = {
|
const struct uniphier_boot_device uniphier_ld11_boot_device_table[] = {
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 4)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 4)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 4)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 4)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 5)"},
|
||||||
@ -48,48 +47,23 @@ static struct boot_device_info boot_device_table[] = {
|
|||||||
{BOOT_DEVICE_NOR, "NOR (XECS1)"},
|
{BOOT_DEVICE_NOR, "NOR (XECS1)"},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_boot_mode_sel(void)
|
const unsigned uniphier_ld11_boot_device_count =
|
||||||
|
ARRAY_SIZE(uniphier_ld11_boot_device_table);
|
||||||
|
|
||||||
|
int uniphier_ld11_boot_device_is_usb(u32 pinmon)
|
||||||
{
|
{
|
||||||
return (readl(SG_PINMON0) >> 1) & 0x1f;
|
return !!(~pinmon & 0x00000080);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 uniphier_ld20_boot_device(void)
|
int uniphier_ld20_boot_device_is_usb(u32 pinmon)
|
||||||
{
|
{
|
||||||
int boot_mode;
|
return !!(~pinmon & 0x00000780);
|
||||||
u32 usb_boot_mask;
|
|
||||||
|
|
||||||
switch (uniphier_get_soc_id()) {
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_LD11)
|
|
||||||
case UNIPHIER_LD11_ID:
|
|
||||||
usb_boot_mask = 0x00000080;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_LD20)
|
|
||||||
case UNIPHIER_LD20_ID:
|
|
||||||
usb_boot_mask = 0x00000780;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
default:
|
|
||||||
BUG();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (~readl(SG_PINMON0) & usb_boot_mask)
|
unsigned int uniphier_ld11_boot_device_fixup(unsigned int mode)
|
||||||
return BOOT_DEVICE_USB;
|
|
||||||
|
|
||||||
boot_mode = get_boot_mode_sel();
|
|
||||||
|
|
||||||
return boot_device_table[boot_mode].type;
|
|
||||||
}
|
|
||||||
|
|
||||||
void uniphier_ld20_boot_mode_show(void)
|
|
||||||
{
|
{
|
||||||
int mode_sel, i;
|
if (mode == BOOT_DEVICE_MMC1 || mode == BOOT_DEVICE_USB)
|
||||||
|
mode = BOOT_DEVICE_BOARD;
|
||||||
|
|
||||||
mode_sel = get_boot_mode_sel();
|
return mode;
|
||||||
|
|
||||||
puts("Boot Mode Pin:\n");
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
|
|
||||||
printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
|
|
||||||
boot_device_table[i].info);
|
|
||||||
}
|
}
|
||||||
@ -1,5 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
|
* Copyright (C) 2014 Panasonic Corporation
|
||||||
|
* Copyright (C) 2015-2017 Socionext Inc.
|
||||||
|
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
*/
|
*/
|
||||||
@ -7,11 +9,11 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <spl.h>
|
#include <spl.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
#include "../sg-regs.h"
|
|
||||||
#include "boot-device.h"
|
#include "boot-device.h"
|
||||||
|
|
||||||
struct boot_device_info boot_device_table[] = {
|
const struct uniphier_boot_device uniphier_ld4_boot_device_table[] = {
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 4)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 4)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 5)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
|
||||||
@ -46,29 +48,5 @@ struct boot_device_info boot_device_table[] = {
|
|||||||
{BOOT_DEVICE_NOR, "NOR (XECS0)"},
|
{BOOT_DEVICE_NOR, "NOR (XECS0)"},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_boot_mode_sel(void)
|
const unsigned uniphier_ld4_boot_device_count =
|
||||||
{
|
ARRAY_SIZE(uniphier_ld4_boot_device_table);
|
||||||
return (readl(SG_PINMON0) >> 1) & 0x1f;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 uniphier_ld4_boot_device(void)
|
|
||||||
{
|
|
||||||
int boot_mode;
|
|
||||||
|
|
||||||
boot_mode = get_boot_mode_sel();
|
|
||||||
|
|
||||||
return boot_device_table[boot_mode].type;
|
|
||||||
}
|
|
||||||
|
|
||||||
void uniphier_ld4_boot_mode_show(void)
|
|
||||||
{
|
|
||||||
int mode_sel, i;
|
|
||||||
|
|
||||||
mode_sel = get_boot_mode_sel();
|
|
||||||
|
|
||||||
puts("Boot Mode Pin:\n");
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
|
|
||||||
printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
|
|
||||||
boot_device_table[i].info);
|
|
||||||
}
|
|
||||||
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
|
* Copyright (C) 2015-2017 Socionext Inc.
|
||||||
|
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
*/
|
*/
|
||||||
@ -7,11 +8,11 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <spl.h>
|
#include <spl.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
#include "../sg-regs.h"
|
|
||||||
#include "boot-device.h"
|
#include "boot-device.h"
|
||||||
|
|
||||||
static struct boot_device_info boot_device_table[] = {
|
const struct uniphier_boot_device uniphier_pro5_boot_device_table[] = {
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, EraseSize 128KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, EraseSize 128KB, Addr 5)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 16, EraseSize 128KB, Addr 5)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, EraseSize 256KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 1, ECC 8, EraseSize 256KB, Addr 5)"},
|
||||||
@ -44,32 +45,7 @@ static struct boot_device_info boot_device_table[] = {
|
|||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 256KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 256KB, Addr 5)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 256KB, Addr 5)"},
|
||||||
{ /* sentinel */ }
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_boot_mode_sel(void)
|
const unsigned uniphier_pro5_boot_device_count =
|
||||||
{
|
ARRAY_SIZE(uniphier_pro5_boot_device_table);
|
||||||
return (readl(SG_PINMON0) >> 1) & 0x1f;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 uniphier_pro5_boot_device(void)
|
|
||||||
{
|
|
||||||
int boot_mode;
|
|
||||||
|
|
||||||
boot_mode = get_boot_mode_sel();
|
|
||||||
|
|
||||||
return boot_device_table[boot_mode].type;
|
|
||||||
}
|
|
||||||
|
|
||||||
void uniphier_pro5_boot_mode_show(void)
|
|
||||||
{
|
|
||||||
int mode_sel, i;
|
|
||||||
|
|
||||||
mode_sel = get_boot_mode_sel();
|
|
||||||
|
|
||||||
puts("Boot Mode Pin:\n");
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
|
|
||||||
printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
|
|
||||||
boot_device_table[i].info);
|
|
||||||
}
|
|
||||||
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
|
* Copyright (C) 2015-2017 Socionext Inc.
|
||||||
|
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
*/
|
*/
|
||||||
@ -7,11 +8,11 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <spl.h>
|
#include <spl.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
#include "../sg-regs.h"
|
|
||||||
#include "boot-device.h"
|
#include "boot-device.h"
|
||||||
|
|
||||||
static struct boot_device_info boot_device_table[] = {
|
const struct uniphier_boot_device uniphier_pxs2_boot_device_table[] = {
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 4)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 4)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 8, EraseSize 128KB, Addr 5)"},
|
||||||
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
|
{BOOT_DEVICE_NAND, "NAND (Mirror 8, ECC 16, EraseSize 128KB, Addr 5)"},
|
||||||
@ -46,32 +47,18 @@ static struct boot_device_info boot_device_table[] = {
|
|||||||
{BOOT_DEVICE_NONE, "Reserved"},
|
{BOOT_DEVICE_NONE, "Reserved"},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_boot_mode_sel(void)
|
const unsigned uniphier_pxs2_boot_device_count =
|
||||||
|
ARRAY_SIZE(uniphier_pxs2_boot_device_table);
|
||||||
|
|
||||||
|
int uniphier_pxs2_boot_device_is_usb(u32 pinmon)
|
||||||
{
|
{
|
||||||
return (readl(SG_PINMON0) >> 1) & 0x1f;
|
return !!(pinmon & 0x00000040);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 uniphier_pxs2_boot_device(void)
|
unsigned int uniphier_pxs2_boot_device_fixup(unsigned int mode)
|
||||||
{
|
{
|
||||||
int boot_mode;
|
if (mode == BOOT_DEVICE_USB)
|
||||||
|
return BOOT_DEVICE_NOR;
|
||||||
|
|
||||||
if (readl(SG_PINMON0) & BIT(6))
|
return mode;
|
||||||
return BOOT_DEVICE_USB;
|
|
||||||
|
|
||||||
boot_mode = get_boot_mode_sel();
|
|
||||||
|
|
||||||
return boot_device_table[boot_mode].type;
|
|
||||||
}
|
|
||||||
|
|
||||||
void uniphier_pxs2_boot_mode_show(void)
|
|
||||||
{
|
|
||||||
int mode_sel, i;
|
|
||||||
|
|
||||||
mode_sel = get_boot_mode_sel();
|
|
||||||
|
|
||||||
puts("Boot Mode Pin:\n");
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
|
|
||||||
printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
|
|
||||||
boot_device_table[i].info);
|
|
||||||
}
|
}
|
||||||
@ -1,5 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
|
* Copyright (C) 2014 Panasonic Corporation
|
||||||
|
* Copyright (C) 2015-2017 Socionext Inc.
|
||||||
|
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
*/
|
*/
|
||||||
@ -7,11 +9,11 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <spl.h>
|
#include <spl.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
|
||||||
#include "../sg-regs.h"
|
|
||||||
#include "boot-device.h"
|
#include "boot-device.h"
|
||||||
|
|
||||||
static struct boot_device_info boot_device_table[] = {
|
const struct uniphier_boot_device uniphier_sld3_boot_device_table[] = {
|
||||||
{BOOT_DEVICE_NOR, "NOR (XECS0)"},
|
{BOOT_DEVICE_NOR, "NOR (XECS0)"},
|
||||||
{BOOT_DEVICE_NONE, "External Master"},
|
{BOOT_DEVICE_NONE, "External Master"},
|
||||||
{BOOT_DEVICE_NONE, "Reserved"},
|
{BOOT_DEVICE_NONE, "Reserved"},
|
||||||
@ -78,29 +80,5 @@ static struct boot_device_info boot_device_table[] = {
|
|||||||
{BOOT_DEVICE_NONE, "Reserved"},
|
{BOOT_DEVICE_NONE, "Reserved"},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int get_boot_mode_sel(void)
|
const unsigned uniphier_sld3_boot_device_count =
|
||||||
{
|
ARRAY_SIZE(uniphier_sld3_boot_device_table);
|
||||||
return readl(SG_PINMON0) & 0x3f;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 uniphier_sld3_boot_device(void)
|
|
||||||
{
|
|
||||||
int boot_mode;
|
|
||||||
|
|
||||||
boot_mode = get_boot_mode_sel();
|
|
||||||
|
|
||||||
return boot_device_table[boot_mode].type;
|
|
||||||
}
|
|
||||||
|
|
||||||
void uniphier_sld3_boot_mode_show(void)
|
|
||||||
{
|
|
||||||
int mode_sel, i;
|
|
||||||
|
|
||||||
mode_sel = get_boot_mode_sel();
|
|
||||||
|
|
||||||
puts("Boot Mode Pin:\n");
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE(boot_device_table); i++)
|
|
||||||
printf(" %c %02x %s\n", i == mode_sel ? '*' : ' ', i,
|
|
||||||
boot_device_table[i].info);
|
|
||||||
}
|
|
||||||
206
arch/arm/mach-uniphier/boot-device/boot-device.c
Normal file
206
arch/arm/mach-uniphier/boot-device/boot-device.c
Normal file
@ -0,0 +1,206 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2015-2017 Socionext Inc.
|
||||||
|
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <common.h>
|
||||||
|
#include <spl.h>
|
||||||
|
#include <linux/log2.h>
|
||||||
|
|
||||||
|
#include "../init.h"
|
||||||
|
#include "../sbc/sbc-regs.h"
|
||||||
|
#include "../sg-regs.h"
|
||||||
|
#include "../soc-info.h"
|
||||||
|
#include "boot-device.h"
|
||||||
|
|
||||||
|
struct uniphier_boot_device_info {
|
||||||
|
unsigned int soc_id;
|
||||||
|
unsigned int boot_device_sel_shift;
|
||||||
|
const struct uniphier_boot_device *boot_device_table;
|
||||||
|
const unsigned int *boot_device_count;
|
||||||
|
int (*boot_device_is_usb)(u32 pinmon);
|
||||||
|
unsigned int (*boot_device_fixup)(unsigned int mode);
|
||||||
|
};
|
||||||
|
|
||||||
|
static const struct uniphier_boot_device_info uniphier_boot_device_info[] = {
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_SLD3_ID,
|
||||||
|
.boot_device_sel_shift = 0,
|
||||||
|
.boot_device_table = uniphier_sld3_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_sld3_boot_device_count,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_LD4)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_LD4_ID,
|
||||||
|
.boot_device_sel_shift = 1,
|
||||||
|
.boot_device_table = uniphier_ld4_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_ld4_boot_device_count,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_PRO4)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_PRO4_ID,
|
||||||
|
.boot_device_sel_shift = 1,
|
||||||
|
.boot_device_table = uniphier_ld4_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_ld4_boot_device_count,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_SLD8)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_SLD8_ID,
|
||||||
|
.boot_device_sel_shift = 1,
|
||||||
|
.boot_device_table = uniphier_ld4_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_ld4_boot_device_count,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_PRO5_ID,
|
||||||
|
.boot_device_sel_shift = 1,
|
||||||
|
.boot_device_table = uniphier_pro5_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_pro5_boot_device_count,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_PXS2)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_PXS2_ID,
|
||||||
|
.boot_device_sel_shift = 1,
|
||||||
|
.boot_device_table = uniphier_pxs2_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_pxs2_boot_device_count,
|
||||||
|
.boot_device_is_usb = uniphier_pxs2_boot_device_is_usb,
|
||||||
|
.boot_device_fixup = uniphier_pxs2_boot_device_fixup,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_LD6B)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_LD6B_ID,
|
||||||
|
.boot_device_sel_shift = 1,
|
||||||
|
.boot_device_table = uniphier_pxs2_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_pxs2_boot_device_count,
|
||||||
|
.boot_device_is_usb = uniphier_pxs2_boot_device_is_usb,
|
||||||
|
.boot_device_fixup = uniphier_pxs2_boot_device_fixup,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_LD11)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_LD11_ID,
|
||||||
|
.boot_device_sel_shift = 1,
|
||||||
|
.boot_device_table = uniphier_ld11_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_ld11_boot_device_count,
|
||||||
|
.boot_device_is_usb = uniphier_ld11_boot_device_is_usb,
|
||||||
|
.boot_device_fixup = uniphier_ld11_boot_device_fixup,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_ARCH_UNIPHIER_LD20)
|
||||||
|
{
|
||||||
|
.soc_id = UNIPHIER_LD20_ID,
|
||||||
|
.boot_device_sel_shift = 1,
|
||||||
|
.boot_device_table = uniphier_ld11_boot_device_table,
|
||||||
|
.boot_device_count = &uniphier_ld11_boot_device_count,
|
||||||
|
.boot_device_is_usb = uniphier_ld20_boot_device_is_usb,
|
||||||
|
.boot_device_fixup = uniphier_ld11_boot_device_fixup,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
UNIPHIER_DEFINE_SOCDATA_FUNC(uniphier_get_boot_device_info,
|
||||||
|
uniphier_boot_device_info)
|
||||||
|
|
||||||
|
static unsigned int __uniphier_boot_device_raw(
|
||||||
|
const struct uniphier_boot_device_info *info)
|
||||||
|
{
|
||||||
|
u32 pinmon;
|
||||||
|
unsigned int boot_sel;
|
||||||
|
|
||||||
|
if (boot_is_swapped())
|
||||||
|
return BOOT_DEVICE_NOR;
|
||||||
|
|
||||||
|
pinmon = readl(SG_PINMON0);
|
||||||
|
|
||||||
|
if (info->boot_device_is_usb && info->boot_device_is_usb(pinmon))
|
||||||
|
return BOOT_DEVICE_USB;
|
||||||
|
|
||||||
|
boot_sel = pinmon >> info->boot_device_sel_shift;
|
||||||
|
|
||||||
|
BUG_ON(!is_power_of_2(*info->boot_device_count));
|
||||||
|
boot_sel &= *info->boot_device_count - 1;
|
||||||
|
|
||||||
|
return info->boot_device_table[boot_sel].boot_device;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int uniphier_boot_device_raw(void)
|
||||||
|
{
|
||||||
|
const struct uniphier_boot_device_info *info;
|
||||||
|
|
||||||
|
info = uniphier_get_boot_device_info();
|
||||||
|
if (!info) {
|
||||||
|
pr_err("unsupported SoC\n");
|
||||||
|
return BOOT_DEVICE_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return __uniphier_boot_device_raw(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 spl_boot_device(void)
|
||||||
|
{
|
||||||
|
const struct uniphier_boot_device_info *info;
|
||||||
|
u32 raw_mode;
|
||||||
|
|
||||||
|
info = uniphier_get_boot_device_info();
|
||||||
|
if (!info) {
|
||||||
|
pr_err("unsupported SoC\n");
|
||||||
|
return BOOT_DEVICE_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
raw_mode = __uniphier_boot_device_raw(info);
|
||||||
|
|
||||||
|
return info->boot_device_fixup ?
|
||||||
|
info->boot_device_fixup(raw_mode) : raw_mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef CONFIG_SPL_BUILD
|
||||||
|
|
||||||
|
static int do_pinmon(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
|
{
|
||||||
|
const struct uniphier_boot_device_info *info;
|
||||||
|
u32 pinmon;
|
||||||
|
unsigned int boot_device_count, boot_sel;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
info = uniphier_get_boot_device_info();
|
||||||
|
if (!info) {
|
||||||
|
pr_err("unsupported SoC\n");
|
||||||
|
return CMD_RET_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Boot Swap: %s\n\n", boot_is_swapped() ? "ON" : "OFF");
|
||||||
|
|
||||||
|
pinmon = readl(SG_PINMON0);
|
||||||
|
|
||||||
|
if (info->boot_device_is_usb)
|
||||||
|
printf("USB Boot: %s\n\n",
|
||||||
|
info->boot_device_is_usb(pinmon) ? "ON" : "OFF");
|
||||||
|
|
||||||
|
boot_device_count = *info->boot_device_count;
|
||||||
|
|
||||||
|
boot_sel = pinmon >> info->boot_device_sel_shift;
|
||||||
|
boot_sel &= boot_device_count - 1;
|
||||||
|
|
||||||
|
printf("Boot Mode Sel:\n");
|
||||||
|
for (i = 0; i < boot_device_count; i++)
|
||||||
|
printf(" %c %02x %s\n", i == boot_sel ? '*' : ' ', i,
|
||||||
|
info->boot_device_table[i].desc);
|
||||||
|
|
||||||
|
return CMD_RET_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
U_BOOT_CMD(
|
||||||
|
pinmon, 1, 1, do_pinmon,
|
||||||
|
"pin monitor",
|
||||||
|
""
|
||||||
|
);
|
||||||
|
|
||||||
|
#endif /* !CONFIG_SPL_BUILD */
|
||||||
35
arch/arm/mach-uniphier/boot-device/boot-device.h
Normal file
35
arch/arm/mach-uniphier/boot-device/boot-device.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2017 Socionext Inc.
|
||||||
|
* Author: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _UNIPHIER_BOOT_DEVICE_H_
|
||||||
|
#define _UNIPHIER_BOOT_DEVICE_H_
|
||||||
|
|
||||||
|
struct uniphier_boot_device {
|
||||||
|
unsigned int boot_device;
|
||||||
|
const char *desc;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern const struct uniphier_boot_device uniphier_sld3_boot_device_table[];
|
||||||
|
extern const struct uniphier_boot_device uniphier_ld4_boot_device_table[];
|
||||||
|
extern const struct uniphier_boot_device uniphier_pro5_boot_device_table[];
|
||||||
|
extern const struct uniphier_boot_device uniphier_pxs2_boot_device_table[];
|
||||||
|
extern const struct uniphier_boot_device uniphier_ld11_boot_device_table[];
|
||||||
|
|
||||||
|
extern const unsigned int uniphier_sld3_boot_device_count;
|
||||||
|
extern const unsigned int uniphier_ld4_boot_device_count;
|
||||||
|
extern const unsigned int uniphier_pro5_boot_device_count;
|
||||||
|
extern const unsigned int uniphier_pxs2_boot_device_count;
|
||||||
|
extern const unsigned int uniphier_ld11_boot_device_count;
|
||||||
|
|
||||||
|
int uniphier_pxs2_boot_device_is_usb(u32 pinmon);
|
||||||
|
int uniphier_ld11_boot_device_is_usb(u32 pinmon);
|
||||||
|
int uniphier_ld20_boot_device_is_usb(u32 pinmon);
|
||||||
|
|
||||||
|
unsigned int uniphier_pxs2_boot_device_fixup(unsigned int mode);
|
||||||
|
unsigned int uniphier_ld11_boot_device_fixup(unsigned int mode);
|
||||||
|
|
||||||
|
#endif /* _UNIPHIER_BOOT_DEVICE_H_ */
|
||||||
@ -1,21 +0,0 @@
|
|||||||
#
|
|
||||||
# SPDX-License-Identifier: GPL-2.0+
|
|
||||||
#
|
|
||||||
|
|
||||||
obj-y += boot-mode.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_SLD3) += boot-mode-sld3.o
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_LD4) += boot-mode-ld4.o
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_PRO4) += boot-mode-ld4.o
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_SLD8) += boot-mode-ld4.o
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_PRO5) += boot-mode-pro5.o
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_PXS2) += boot-mode-pxs2.o
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_LD6B) += boot-mode-pxs2.o
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_LD11) += boot-mode-ld20.o
|
|
||||||
obj-$(CONFIG_ARCH_UNIPHIER_LD20) += boot-mode-ld20.o
|
|
||||||
|
|
||||||
ifdef CONFIG_SPL_BUILD
|
|
||||||
obj-$(CONFIG_SPL_BOARD_LOAD_IMAGE) += spl_board.o
|
|
||||||
else
|
|
||||||
obj-$(CONFIG_CMD_PINMON) += cmd_pinmon.o
|
|
||||||
endif
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2011-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ASM_BOOT_DEVICE_H_
|
|
||||||
#define _ASM_BOOT_DEVICE_H_
|
|
||||||
|
|
||||||
struct boot_device_info {
|
|
||||||
u32 type;
|
|
||||||
char *info;
|
|
||||||
};
|
|
||||||
|
|
||||||
u32 uniphier_sld3_boot_device(void);
|
|
||||||
u32 uniphier_ld4_boot_device(void);
|
|
||||||
u32 uniphier_pro5_boot_device(void);
|
|
||||||
u32 uniphier_pxs2_boot_device(void);
|
|
||||||
u32 uniphier_ld20_boot_device(void);
|
|
||||||
|
|
||||||
void uniphier_sld3_boot_mode_show(void);
|
|
||||||
void uniphier_ld4_boot_mode_show(void);
|
|
||||||
void uniphier_pro5_boot_mode_show(void);
|
|
||||||
void uniphier_pxs2_boot_mode_show(void);
|
|
||||||
void uniphier_ld20_boot_mode_show(void);
|
|
||||||
|
|
||||||
u32 spl_boot_device_raw(void);
|
|
||||||
|
|
||||||
#endif /* _ASM_BOOT_DEVICE_H_ */
|
|
||||||
@ -1,78 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <common.h>
|
|
||||||
#include <mmc.h>
|
|
||||||
#include <spl.h>
|
|
||||||
#include <linux/errno.h>
|
|
||||||
|
|
||||||
#include "../sbc/sbc-regs.h"
|
|
||||||
#include "../soc-info.h"
|
|
||||||
#include "boot-device.h"
|
|
||||||
|
|
||||||
u32 spl_boot_device_raw(void)
|
|
||||||
{
|
|
||||||
if (boot_is_swapped())
|
|
||||||
return BOOT_DEVICE_NOR;
|
|
||||||
|
|
||||||
switch (uniphier_get_soc_id()) {
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
|
|
||||||
case UNIPHIER_SLD3_ID:
|
|
||||||
return uniphier_sld3_boot_device();
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_LD4) || defined(CONFIG_ARCH_UNIPHIER_PRO4) || \
|
|
||||||
defined(CONFIG_ARCH_UNIPHIER_SLD8)
|
|
||||||
case UNIPHIER_LD4_ID:
|
|
||||||
case UNIPHIER_PRO4_ID:
|
|
||||||
case UNIPHIER_SLD8_ID:
|
|
||||||
return uniphier_ld4_boot_device();
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
|
|
||||||
case UNIPHIER_PRO5_ID:
|
|
||||||
return uniphier_pro5_boot_device();
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_PXS2) || defined(CONFIG_ARCH_UNIPHIER_LD6B)
|
|
||||||
case UNIPHIER_PXS2_ID:
|
|
||||||
case UNIPHIER_LD6B_ID:
|
|
||||||
return uniphier_pxs2_boot_device();
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_LD11) || defined(CONFIG_ARCH_UNIPHIER_LD20)
|
|
||||||
case UNIPHIER_LD11_ID:
|
|
||||||
case UNIPHIER_LD20_ID:
|
|
||||||
return uniphier_ld20_boot_device();
|
|
||||||
#endif
|
|
||||||
default:
|
|
||||||
return BOOT_DEVICE_NONE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 spl_boot_device(void)
|
|
||||||
{
|
|
||||||
u32 mode;
|
|
||||||
|
|
||||||
mode = spl_boot_device_raw();
|
|
||||||
|
|
||||||
switch (uniphier_get_soc_id()) {
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_PXS2) || defined(CONFIG_ARCH_UNIPHIER_LD6B)
|
|
||||||
case UNIPHIER_PXS2_ID:
|
|
||||||
case UNIPHIER_LD6B_ID:
|
|
||||||
if (mode == BOOT_DEVICE_USB)
|
|
||||||
mode = BOOT_DEVICE_NOR;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_LD11) || defined(CONFIG_ARCH_UNIPHIER_LD20)
|
|
||||||
case UNIPHIER_LD11_ID:
|
|
||||||
case UNIPHIER_LD20_ID:
|
|
||||||
if (mode == BOOT_DEVICE_MMC1 || mode == BOOT_DEVICE_USB)
|
|
||||||
mode = BOOT_DEVICE_BOARD;
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return mode;
|
|
||||||
}
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2014-2015 Masahiro Yamada <yamada.masahiro@socionext.com>
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <common.h>
|
|
||||||
|
|
||||||
#include "../sbc/sbc-regs.h"
|
|
||||||
#include "../soc-info.h"
|
|
||||||
#include "boot-device.h"
|
|
||||||
|
|
||||||
static int do_pinmon(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
||||||
{
|
|
||||||
printf("Boot Swap: %s\n\n", boot_is_swapped() ? "ON" : "OFF");
|
|
||||||
|
|
||||||
switch (uniphier_get_soc_id()) {
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_SLD3)
|
|
||||||
case UNIPHIER_SLD3_ID:
|
|
||||||
uniphier_sld3_boot_mode_show();
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_LD4) || defined(CONFIG_ARCH_UNIPHIER_PRO4) || \
|
|
||||||
defined(CONFIG_ARCH_UNIPHIER_SLD8)
|
|
||||||
case UNIPHIER_LD4_ID:
|
|
||||||
case UNIPHIER_PRO4_ID:
|
|
||||||
case UNIPHIER_SLD8_ID:
|
|
||||||
uniphier_ld4_boot_mode_show();
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_PRO5)
|
|
||||||
case UNIPHIER_PRO5_ID:
|
|
||||||
uniphier_pro5_boot_mode_show();
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_PXS2) || defined(CONFIG_ARCH_UNIPHIER_LD6B)
|
|
||||||
case UNIPHIER_PXS2_ID:
|
|
||||||
case UNIPHIER_LD6B_ID:
|
|
||||||
uniphier_pxs2_boot_mode_show();
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_UNIPHIER_LD11) || defined(CONFIG_ARCH_UNIPHIER_LD20)
|
|
||||||
case UNIPHIER_LD11_ID:
|
|
||||||
case UNIPHIER_LD20_ID:
|
|
||||||
uniphier_ld20_boot_mode_show();
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
U_BOOT_CMD(
|
|
||||||
pinmon, 1, 1, do_pinmon,
|
|
||||||
"pin monitor",
|
|
||||||
""
|
|
||||||
);
|
|
||||||
@ -9,7 +9,6 @@
|
|||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
|
||||||
#include "../boot-mode/boot-device.h"
|
|
||||||
#include "../init.h"
|
#include "../init.h"
|
||||||
#include "../sc64-regs.h"
|
#include "../sc64-regs.h"
|
||||||
#include "../sg-regs.h"
|
#include "../sg-regs.h"
|
||||||
@ -18,7 +17,7 @@ void uniphier_ld11_clk_init(void)
|
|||||||
{
|
{
|
||||||
/* if booted from a device other than USB, without stand-by MPU */
|
/* if booted from a device other than USB, without stand-by MPU */
|
||||||
if ((readl(SG_PINMON0) & BIT(27)) &&
|
if ((readl(SG_PINMON0) & BIT(27)) &&
|
||||||
spl_boot_device_raw() != BOOT_DEVICE_USB) {
|
uniphier_boot_device_raw() != BOOT_DEVICE_USB) {
|
||||||
writel(1, SG_ETPHYPSHUT);
|
writel(1, SG_ETPHYPSHUT);
|
||||||
writel(1, SG_ETPHYCNT);
|
writel(1, SG_ETPHYCNT);
|
||||||
|
|
||||||
|
|||||||
@ -120,11 +120,14 @@ void uniphier_pro5_clk_init(void);
|
|||||||
void uniphier_pxs2_clk_init(void);
|
void uniphier_pxs2_clk_init(void);
|
||||||
void uniphier_ld11_clk_init(void);
|
void uniphier_ld11_clk_init(void);
|
||||||
|
|
||||||
|
unsigned int uniphier_boot_device_raw(void);
|
||||||
int uniphier_pin_init(const char *pinconfig_name);
|
int uniphier_pin_init(const char *pinconfig_name);
|
||||||
void uniphier_smp_kick_all_cpus(void);
|
void uniphier_smp_kick_all_cpus(void);
|
||||||
void cci500_init(int nr_slaves);
|
void cci500_init(int nr_slaves);
|
||||||
|
|
||||||
|
#undef pr_warn
|
||||||
#define pr_warn(fmt, args...) printf(fmt, ##args)
|
#define pr_warn(fmt, args...) printf(fmt, ##args)
|
||||||
|
#undef pr_err
|
||||||
#define pr_err(fmt, args...) printf(fmt, ##args)
|
#define pr_err(fmt, args...) printf(fmt, ##args)
|
||||||
|
|
||||||
#endif /* __MACH_INIT_H */
|
#endif /* __MACH_INIT_H */
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user