summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards/freescale-mx6-sabresd
diff options
context:
space:
mode:
authorLucas Stach <l.stach@pengutronix.de>2014-02-17 13:04:12 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2014-02-19 11:25:31 +0100
commitd7db7df1879e17d547e123f9a56abeac26aab203 (patch)
treec397a9ea612a218a2c964bcf35c0ffcaac96257d /arch/arm/boards/freescale-mx6-sabresd
parente73419d1a6e80548b1822741cbaea4ddbf1c00d8 (diff)
downloadbarebox-d7db7df1879e17d547e123f9a56abeac26aab203.tar.gz
barebox-d7db7df1879e17d547e123f9a56abeac26aab203.tar.xz
ARM: i.MX6: sabresd: switch to multi-image
Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/boards/freescale-mx6-sabresd')
-rw-r--r--arch/arm/boards/freescale-mx6-sabresd/Makefile3
-rw-r--r--arch/arm/boards/freescale-mx6-sabresd/board.c33
-rw-r--r--arch/arm/boards/freescale-mx6-sabresd/flash-header-mx6-sabresd.imxcfg (renamed from arch/arm/boards/freescale-mx6-sabresd/flash-header.imxcfg)0
-rw-r--r--arch/arm/boards/freescale-mx6-sabresd/lowlevel.c11
4 files changed, 22 insertions, 25 deletions
diff --git a/arch/arm/boards/freescale-mx6-sabresd/Makefile b/arch/arm/boards/freescale-mx6-sabresd/Makefile
index 01c7a259e9..f72c641e17 100644
--- a/arch/arm/boards/freescale-mx6-sabresd/Makefile
+++ b/arch/arm/boards/freescale-mx6-sabresd/Makefile
@@ -1,2 +1,3 @@
-obj-y += board.o
+obj-y += board.o flash-header-mx6-sabresd.dcd.o
+extra-y += flash-header-mx6-sabresd.dcd.S flash-header-mx6-sabresd.dcd
lwl-y += lowlevel.o
diff --git a/arch/arm/boards/freescale-mx6-sabresd/board.c b/arch/arm/boards/freescale-mx6-sabresd/board.c
index c87b555384..4e4ce7a015 100644
--- a/arch/arm/boards/freescale-mx6-sabresd/board.c
+++ b/arch/arm/boards/freescale-mx6-sabresd/board.c
@@ -40,14 +40,6 @@
#define PHY_ID_AR8031 0x004dd074
#define AR_PHY_ID_MASK 0xffffffff
-static int sabresd_mem_init(void)
-{
- arm_add_mem_device("ram0", 0x10000000, SZ_1G);
-
- return 0;
-}
-mem_initcall(sabresd_mem_init);
-
static int ar8031_phy_fixup(struct phy_device *dev)
{
u16 val;
@@ -71,27 +63,21 @@ static int ar8031_phy_fixup(struct phy_device *dev)
return 0;
}
-static void sabresd_phy_reset(void)
-{
- /* Reset AR8031 PHY */
- gpio_direction_output(IMX_GPIO_NR(1, 25) , 0);
- udelay(500);
- gpio_set_value(IMX_GPIO_NR(1, 25), 1);
-}
-
static int sabresd_devices_init(void)
{
+ if (!of_machine_is_compatible("fsl,imx6q-sabresd"))
+ return 0;
+
armlinux_set_architecture(3980);
- devfs_add_partition("disk0", 0, SZ_1M, DEVFS_PARTITION_FIXED, "self0");
- devfs_add_partition("disk0", SZ_1M + SZ_1M, SZ_512K, DEVFS_PARTITION_FIXED, "env0");
return 0;
}
device_initcall(sabresd_devices_init);
static int sabresd_coredevices_init(void)
{
- sabresd_phy_reset();
+ if (!of_machine_is_compatible("fsl,imx6q-sabresd"))
+ return 0;
phy_register_fixup_for_uid(PHY_ID_AR8031, AR_PHY_ID_MASK,
ar8031_phy_fixup);
@@ -102,14 +88,17 @@ static int sabresd_coredevices_init(void)
* Do this before the fec initializes but after our
* gpios are available.
*/
-fs_initcall(sabresd_coredevices_init);
+coredevice_initcall(sabresd_coredevices_init);
-static int sabresd_core_init(void)
+static int sabresd_postcore_init(void)
{
+ if (!of_machine_is_compatible("fsl,imx6q-sabresd"))
+ return 0;
+
imx6_init_lowlevel();
barebox_set_hostname("sabresd");
return 0;
}
-core_initcall(sabresd_core_init);
+postcore_initcall(sabresd_postcore_init);
diff --git a/arch/arm/boards/freescale-mx6-sabresd/flash-header.imxcfg b/arch/arm/boards/freescale-mx6-sabresd/flash-header-mx6-sabresd.imxcfg
index 21f217cdf3..21f217cdf3 100644
--- a/arch/arm/boards/freescale-mx6-sabresd/flash-header.imxcfg
+++ b/arch/arm/boards/freescale-mx6-sabresd/flash-header-mx6-sabresd.imxcfg
diff --git a/arch/arm/boards/freescale-mx6-sabresd/lowlevel.c b/arch/arm/boards/freescale-mx6-sabresd/lowlevel.c
index aec46fd8cc..c8b542aa25 100644
--- a/arch/arm/boards/freescale-mx6-sabresd/lowlevel.c
+++ b/arch/arm/boards/freescale-mx6-sabresd/lowlevel.c
@@ -3,8 +3,15 @@
#include <asm/barebox-arm-head.h>
#include <asm/barebox-arm.h>
-void __naked barebox_arm_reset_vector(void)
+extern char __dtb_imx6q_sabresd_start[];
+
+ENTRY_FUNCTION(start_imx6q_sabresd, r0, r1, r2)
{
+ uint32_t fdt;
+
arm_cpu_lowlevel_init();
- barebox_arm_entry(0x10000000, SZ_1G, 0);
+
+ fdt = (uint32_t)__dtb_imx6q_sabresd_start - get_runtime_offset();
+
+ barebox_arm_entry(0x10000000, SZ_1G, fdt);
}