summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-08-01 17:50:05 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-08-01 17:50:05 +0200
commit33838de7a241242c40f23fa3f95939d29c78544d (patch)
tree3034267f86c43ae67b5791db43d46d145de57ee1 /arch/arm/mach-imx
parent2935411dea8ed1b76e0e42a8f1988ba127c3dc02 (diff)
parentf854b2370efc81bf1b3c5e50d743a6ed71301ae2 (diff)
downloadbarebox-33838de7a241242c40f23fa3f95939d29c78544d.tar.gz
barebox-33838de7a241242c40f23fa3f95939d29c78544d.tar.xz
Merge branch 'for-next/sabrelite'
Conflicts: arch/arm/Makefile
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r--arch/arm/mach-imx/Kconfig15
-rw-r--r--arch/arm/mach-imx/include/mach/barebox.lds.h12
-rw-r--r--arch/arm/mach-imx/include/mach/devices-imx6.h5
-rw-r--r--arch/arm/mach-imx/include/mach/imx-flash-header.h9
-rw-r--r--arch/arm/mach-imx/speed-imx51.c5
-rw-r--r--arch/arm/mach-imx/speed-imx53.c5
-rw-r--r--arch/arm/mach-imx/speed-imx6.c5
7 files changed, 55 insertions, 1 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 9afd6150d9..b488725d7f 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -26,6 +26,7 @@ config ARCH_TEXT_BASE
default 0x97f00000 if MACH_TX51
default 0x4fc00000 if MACH_MX6Q_ARM2
default 0x97f00000 if MACH_CCMX51
+ default 0x4fc00000 if MACH_SABRELITE
config BOARDINFO
default "Eukrea CPUIMX25" if MACH_EUKREA_CPUIMX25
@@ -51,6 +52,7 @@ config BOARDINFO
default "Ka-Ro tx51" if MACH_TX51
default "Freescale i.MX6q armadillo2" if MACH_MX6Q_ARM2
default "ConnectCore i.MX51" if MACH_CCMX51
+ default "Sabre Lite" if MACH_SABRELITE
choice
prompt "Select boot mode"
@@ -100,6 +102,16 @@ config ARCH_IMX_INTERNAL_BOOT_NOR
config ARCH_IMX_INTERNAL_BOOT_ONENAND
bool "OneNAND"
+config ARCH_IMX_INTERNAL_BOOT_SERIAL
+ bool "Serial (read help)"
+ help
+ Normally the first instruction of the barebox image contains a jump
+ to the real start of the image which means that you can start it by
+ jumping to the load address. With serial boot images this is not
+ possible because the first instruction is occupied by a magic for the
+ ROM boot code. You can still start this image as a second stage loader,
+ but you have to add 0x400 to the entry point.
+
endchoice
config NAND_IMX_BOOT
@@ -459,6 +471,9 @@ choice
config MACH_MX6Q_ARM2
bool "Freescale i.MX6q Armadillo2"
+config MACH_SABRELITE
+ bool "Freescale i.MX6 Sabre Lite"
+
endchoice
endif
diff --git a/arch/arm/mach-imx/include/mach/barebox.lds.h b/arch/arm/mach-imx/include/mach/barebox.lds.h
index a2932bd79f..2e60282c6d 100644
--- a/arch/arm/mach-imx/include/mach/barebox.lds.h
+++ b/arch/arm/mach-imx/include/mach/barebox.lds.h
@@ -1,6 +1,16 @@
#ifdef CONFIG_ARCH_IMX_INTERNAL_BOOT
+#ifdef CONFIG_ARCH_IMX_INTERNAL_BOOT_SERIAL
+#define PRE_IMAGE \
+ .pre_image : { \
+ KEEP(*(.flash_header_0x0*)) \
+ KEEP(*(.dcd_entry_0x0*)) \
+ KEEP(*(.image_len_0x0*)) \
+ . = 0x400; \
+ }
+#else
+
#define PRE_IMAGE \
.pre_image : { \
KEEP(*(.flash_header_start*)) \
@@ -19,4 +29,4 @@
. = 0x2000; \
}
#endif
-
+#endif
diff --git a/arch/arm/mach-imx/include/mach/devices-imx6.h b/arch/arm/mach-imx/include/mach/devices-imx6.h
index e4a72accd6..ca063c5459 100644
--- a/arch/arm/mach-imx/include/mach/devices-imx6.h
+++ b/arch/arm/mach-imx/include/mach/devices-imx6.h
@@ -44,3 +44,8 @@ static inline struct device_d *imx6_add_fec(struct fec_platform_data *pdata)
{
return imx_add_fec((void *)MX6_ENET_BASE_ADDR, pdata);
}
+
+static inline struct device_d *imx6_add_spi0(struct spi_imx_master *pdata)
+{
+ return imx_add_spi((void *)MX6_ECSPI1_BASE_ADDR, 0, pdata);
+}
diff --git a/arch/arm/mach-imx/include/mach/imx-flash-header.h b/arch/arm/mach-imx/include/mach/imx-flash-header.h
index ca2fe9f3d3..a51d4736fa 100644
--- a/arch/arm/mach-imx/include/mach/imx-flash-header.h
+++ b/arch/arm/mach-imx/include/mach/imx-flash-header.h
@@ -15,6 +15,11 @@
#define __dcd_entry_section __section(.dcd_entry_0x0100)
#define __image_len_section __section(.image_len_0x0100)
#define FLASH_HEADER_OFFSET 0x0100
+#elif defined(CONFIG_ARCH_IMX_INTERNAL_BOOT_SERIAL)
+ #define __flash_header_section __section(.flash_header_0x0)
+ #define __dcd_entry_section __section(.dcd_entry_0x0)
+ #define __image_len_section __section(.image_len_0x0)
+ #define FLASH_HEADER_OFFSET 0x0
#else
#define __flash_header_section __section(.flash_header_0x0400)
#define __dcd_entry_section __section(.dcd_entry_0x0400)
@@ -34,6 +39,10 @@
#define __dcd_entry_0x0400 __section(.dcd_entry_0x0400)
#define __image_len_0x0400 __section(.image_len_0x0400)
+#define __flash_header_0x0 __section(.flash_header_0x0)
+#define __dcd_entry_0x0 __section(.dcd_entry_0x0)
+#define __image_len_0x0 __section(.image_len_0x0)
+
/*
* NOR is not automatically copied anywhere by the boot ROM
*/
diff --git a/arch/arm/mach-imx/speed-imx51.c b/arch/arm/mach-imx/speed-imx51.c
index 87fbc75313..288fe1a640 100644
--- a/arch/arm/mach-imx/speed-imx51.c
+++ b/arch/arm/mach-imx/speed-imx51.c
@@ -228,6 +228,11 @@ unsigned long imx_get_usbclk(void)
return rate / (prediv * podf);
}
+unsigned long imx_get_cspiclk(void)
+{
+ return 166000000; /* FIXME: bogus value */
+}
+
/*
* Set the divider of the CLKO pin. Returns
* the new divider (which may be smaller
diff --git a/arch/arm/mach-imx/speed-imx53.c b/arch/arm/mach-imx/speed-imx53.c
index 653dae33b6..ede5ffd75b 100644
--- a/arch/arm/mach-imx/speed-imx53.c
+++ b/arch/arm/mach-imx/speed-imx53.c
@@ -217,6 +217,11 @@ unsigned long imx_get_mmcclk(void)
return rate / (prediv * podf);
}
+unsigned long imx_get_cspiclk(void)
+{
+ return 166000000; /* FIXME: bogus value */
+}
+
void imx_dump_clocks(void)
{
printf("pll1: %ld\n", pll1_main_get_rate());
diff --git a/arch/arm/mach-imx/speed-imx6.c b/arch/arm/mach-imx/speed-imx6.c
index 4cc9fdbbc4..df2454532d 100644
--- a/arch/arm/mach-imx/speed-imx6.c
+++ b/arch/arm/mach-imx/speed-imx6.c
@@ -332,6 +332,11 @@ u32 imx_get_fecclk(void)
return __get_ipg_clk();
}
+u32 imx_get_cspiclk(void)
+{
+ return __get_cspi_clk();
+}
+
void imx_dump_clocks(void)
{
u32 freq;