9
0
Fork 0
Commit Graph

33 Commits

Author SHA1 Message Date
Lucas Stach 4f381b1aaa ARM: change signature of barebox_arm_entry
Mostly to make it clear that boarddata needs to be
something we can dereference.

As this is a pretty invasive change, use the opportunity
to make the signature 64bit safe.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-05-05 15:09:09 +02:00
Sascha Hauer 4a53361beb Merge branch 'for-next/iomem'
Conflicts:
	arch/arm/mach-imx/external-nand-boot.c
2014-02-03 09:55:41 +01:00
Sascha Hauer 7ebb5fbb58 ARM: i.MX: external NAND boot: make dtb boarddata work
If we are running from NFC SRAM and we are passed boarddata
containing a devicetree pointer then it point to an address relative
to the NFC SRAM start. First thing we do is to copy the initial
binary to SDRAM and jump there. The devicetree pointer has to be
adjusted by this offset.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-01-31 18:51:53 +01:00
Sascha Hauer 3711a1d8e7 ARM: i.MX: external NAND boot: use image size from image header
When compiling with multiimage support ld_var(_barebox_image_size) only
contains the length of the PBL image, but not including the appended
compressed data. With this patch the image size is read from the barebox
header instead which contains the correct size, either from the linker
or from the fix_size tool.
This makes the external_nand_boot compatible with multiimage support.

Tested on Phytec phyCARD-i.MX27 with and without PBL.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-01-31 18:51:53 +01:00
Sascha Hauer c5b7986089 ARM: i.MX: external NAND boot: pass boarddata
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-01-29 11:31:31 +01:00
Sascha Hauer 35ae916ecf ARM: i.MX: external NAND boot: do not depend on cpu_is_*
With multiboard support the cpu_is_* macros are no longer compile time
generated and do not work in early code, so pass a v1 variable around.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-01-29 11:31:30 +01:00
Sascha Hauer f77e5b9385 ARM: i.MX: external NAND boot: make it work with relocatable PBL
We used to copy the initial binary portion from NFC SRAM to TEXT_BASE
and jumped there. With relocatable PBL TEXT_BASE becomes 0, so this
doesn't work. This is changed to copy the initial binary portion
to the beginning of SDRAM instead.

Tested on Phytec phyCARD-i.MX27 and Karo TX25 with and without
relocatable pbl.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-01-29 11:25:05 +01:00
Alexander Shiyan fb2b6d0d0b ARM: i.MX: external_nand_boot: Use __iomem specifier for memory pointer
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-01-29 10:18:42 +01:00
Sascha Hauer 9399c7444d ARM: i.MX: external NAND boot: create function macro for different SoCs
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-01-23 08:15:43 +01:00
Sascha Hauer f1d83fad06 ARM: i.MX: external NAND boot: factor out a 2k pagesize detection function
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2014-01-23 08:15:43 +01:00
Sascha Hauer fbf502a9c2 ARM: i.MX external NAND boot: Add missing instruction cache invalidate
Before we jump to SDRAM where we just copied our code we have to
invalidate the instruction cache.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-12-03 10:20:00 +01:00
Sascha Hauer ed91fac6e2 ARM: i.MX: External Nand boot: remove ifdefs around SoC functions
The ifdefs around the SoC specific boot_nand_external functions
can be removed when all functions go into their own sections so
that the linker can discard the unused functions.

This also adds a #ifdef BROKEN around the i.MX21 code which currently
does not have the imx21_barebox_entry function.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-07-11 09:53:16 +02:00
Sascha Hauer 3ccb034fa1 ARM: i.MX: External Nand boot: remove ifdefs
Instead of ifdeffing out the correct NFC base address just pass
it to imx_nand_load_image which is called from SoC specific
context anyway.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-07-11 09:53:16 +02:00
Sascha Hauer 09b96768c7 ARM: i.MX: External Nand boot: move pagesize detection into SoC specific code
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-07-11 09:53:16 +02:00
Sascha Hauer 3de30a438a ARM: i.MX: External Nand boot: remove debug command
The debug command does not work with SoC specific entry points.
remove it.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-07-11 09:53:16 +02:00
Sascha Hauer 5a3329f6ad ARM: i.MX: External Nand boot: make 2k support nonoptional
All boards using the external nand boot code autodetect the
pagesize, so make this nonoptional to make the code simpler.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-07-11 09:53:15 +02:00
Sascha Hauer dd9f6d08a2 Merge branch 'for-next/relocate'
Conflicts:
	arch/arm/lib/barebox.lds.S
2013-04-04 14:20:42 +02:00
Sascha Hauer 1512479a6e ARM: i.MX: Add bbu handler for external NAND boot
The external NAND boot code currently does not handle bad blocks
correctly on 2k NAND flashes. This patch adds a barebox_update
handler for external NAND boot which embeds a Bad block table in
the flashed image. The boot code will skip bad blocks found in
this bad block table then.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-03-12 11:04:33 +01:00
Sascha Hauer 6e2a07e32a ARM: i.MX: external nand boot: check for bad blocks
The i.MX external NAND boot code checks for a bad block every
page, which is wrong. Instead, check for a bad block at the
beginning of each block.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-03-12 10:21:14 +01:00
Sascha Hauer 019712525a ARM boards: Use accessor functions to access linker variables
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-03-07 12:38:01 +01:00
Sascha Hauer 94466be718 ARM i.MX: Fix booting from NOR when external nand boot is enabled
We cannot jump to SDRAM unconditionally in imx*_barebox_boot_nand_external.
When we really boot from NOR flash the binary is not yet copied to SDRAM.
Instead, let the return value of imx_barebox_boot_nand_external() indicate
whether we really boot from NAND and only jump to SDRAM in this case.
Otherwise just continue to the normal SoC specific entry.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-02-26 11:00:25 +01:00
Sascha Hauer f2a8e35898 ARM i.MX boards: switch to barebox_arm_entry
Most i.MX boards can use the imx*_barebox_entry functions. The remaining
(i.MX21, i.MX6) use hardcoded base addresses.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-02-04 15:52:39 +01:00
Sascha Hauer cf4271ee12 ARM i.MX: prepare external nand boot for SoC specific entry
i.MX will get SoC specific entry points for barebox. To find the
correct one we have to call these from the SoC specific
imx*_barebox_boot_nand_external functions.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-02-04 15:52:38 +01:00
Sascha Hauer 6e45abe47e ARM i.MX: Add a common NAND entry for external boot mode
The pattern for i.MX boards starting in external NAND boot mode is always
the same:

- Check if we are running in NFC address space, if not call
  board_init_lowlevel_return()
- copy binary to link address
- execute relocated binary
- call imx_nand_load_image()

Add a common function for this to make the board code easier.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2013-01-20 16:53:46 +01:00
Sascha Hauer b1b76f6027 ARM i.MX: get rid of imx-regs.h
- remove now unused __REG definitions
- include individual SoC register files instead of imx-regs.h
- move IMX_GPIO_NR to generic.h
- finally remove imx-regs.h

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-10-17 20:22:02 +02:00
Sascha Hauer 4c53af062b ARM i.MX: remove unused improperly prefixed register defines
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-10-17 20:22:02 +02:00
Sascha Hauer d089e3caa5 ARM i.MX external nand boot: Use SoC specific base addresses
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-10-17 20:22:02 +02:00
Sascha Hauer dc9d70e239 ARM i.MX35: Cleanup remaining unprefixed registers
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-10-17 20:22:02 +02:00
Sascha Hauer 1092bde80c ARM i.MX25: Cleanup remaining unprefixed registers
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-10-17 20:22:01 +02:00
Sascha Hauer a8c6359667 ARM i.MX31: Cleanup remaining unprefixed registers
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-10-17 20:22:01 +02:00
Sascha Hauer 1d609aceae ARM i.MX27: give register base addresses a proper MX27_ prefix
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-10-04 15:19:53 +02:00
Sascha Hauer 77322aa896 Treewide: remove address of the Free Software Foundation
The FSF address has changed in the past. Instead of updating it
each time the address changes, just drop it completely treewide.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-09-17 10:57:41 +02:00
Sascha Hauer 1c01f8c273 ARM i.MX: rename internal-nand-boot.c to external-nand-boot.c
Because that's what it is.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
2012-07-25 09:27:28 +02:00