Selaa lähdekoodia

[ARM] 5523/1: ep93xx phys offset selection

This patch adds a Kconfig option to select between ep93xx boards which
boot from the SDRAM bank at 0x00000000 (SDCE3/SyncBoot) and those which
boot from 0xc0000000 (SDCE0). This corrects a problem which causes
invalid images to be built for boards which boot from 0xc0000000.

Signed-off-by: Ryan Mallon <ryan@bluewatersys.com>
Acked-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Ryan Mallon 16 vuotta sitten
vanhempi
commit
6cb38c5f5d

+ 32 - 2
arch/arm/mach-ep93xx/Kconfig

@@ -9,18 +9,37 @@ config CRUNCH
 
 
 comment "EP93xx Platforms"
 comment "EP93xx Platforms"
 
 
+choice
+	prompt "EP93xx first SDRAM bank selection"
+	default EP93XX_SDCE3_SYNC_PHYS_OFFSET
+
+config EP93XX_SDCE3_SYNC_PHYS_OFFSET
+	bool "0x00000000 - SDCE3/SyncBoot"
+	help
+	  Select this option if you want support for EP93xx boards with the
+	  first SDRAM bank at 0x00000000
+
+config EP93XX_SDCE0_PHYS_OFFSET
+	bool "0xc0000000 - SDCEO"
+	help
+	  Select this option if you want support for EP93xx boards with the
+	  first SDRAM bank at 0xc0000000
+
+endchoice
+
 config MACH_ADSSPHERE
 config MACH_ADSSPHERE
 	bool "Support ADS Sphere"
 	bool "Support ADS Sphere"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the ADS
 	  Say 'Y' here if you want your kernel to support the ADS
 	  Sphere board.
 	  Sphere board.
 
 
 config MACH_EDB93XX
 config MACH_EDB93XX
 	bool
 	bool
-	default n
 
 
 config MACH_EDB9301
 config MACH_EDB9301
 	bool "Support Cirrus Logic EDB9301"
 	bool "Support Cirrus Logic EDB9301"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	select MACH_EDB93XX
 	select MACH_EDB93XX
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Say 'Y' here if you want your kernel to support the Cirrus
@@ -28,6 +47,7 @@ config MACH_EDB9301
 
 
 config MACH_EDB9302
 config MACH_EDB9302
 	bool "Support Cirrus Logic EDB9302"
 	bool "Support Cirrus Logic EDB9302"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	select MACH_EDB93XX
 	select MACH_EDB93XX
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Say 'Y' here if you want your kernel to support the Cirrus
@@ -35,6 +55,7 @@ config MACH_EDB9302
 
 
 config MACH_EDB9302A
 config MACH_EDB9302A
 	bool "Support Cirrus Logic EDB9302A"
 	bool "Support Cirrus Logic EDB9302A"
+	depends on EP93XX_SDCE0_PHYS_OFFSET
 	select MACH_EDB93XX
 	select MACH_EDB93XX
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Say 'Y' here if you want your kernel to support the Cirrus
@@ -42,6 +63,7 @@ config MACH_EDB9302A
 
 
 config MACH_EDB9307
 config MACH_EDB9307
 	bool "Support Cirrus Logic EDB9307"
 	bool "Support Cirrus Logic EDB9307"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	select MACH_EDB93XX
 	select MACH_EDB93XX
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Say 'Y' here if you want your kernel to support the Cirrus
@@ -49,6 +71,7 @@ config MACH_EDB9307
 
 
 config MACH_EDB9307A
 config MACH_EDB9307A
 	bool "Support Cirrus Logic EDB9307A"
 	bool "Support Cirrus Logic EDB9307A"
+	depends on EP93XX_SDCE0_PHYS_OFFSET
 	select MACH_EDB93XX
 	select MACH_EDB93XX
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Say 'Y' here if you want your kernel to support the Cirrus
@@ -56,6 +79,7 @@ config MACH_EDB9307A
 
 
 config MACH_EDB9312
 config MACH_EDB9312
 	bool "Support Cirrus Logic EDB9312"
 	bool "Support Cirrus Logic EDB9312"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	select MACH_EDB93XX
 	select MACH_EDB93XX
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Say 'Y' here if you want your kernel to support the Cirrus
@@ -63,6 +87,7 @@ config MACH_EDB9312
 
 
 config MACH_EDB9315
 config MACH_EDB9315
 	bool "Support Cirrus Logic EDB9315"
 	bool "Support Cirrus Logic EDB9315"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	select MACH_EDB93XX
 	select MACH_EDB93XX
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Say 'Y' here if you want your kernel to support the Cirrus
@@ -70,12 +95,14 @@ config MACH_EDB9315
 
 
 config MACH_EDB9315A
 config MACH_EDB9315A
 	bool "Support Cirrus Logic EDB9315A"
 	bool "Support Cirrus Logic EDB9315A"
+	depends on EP93XX_SDCE0_PHYS_OFFSET
 	select MACH_EDB93XX
 	select MACH_EDB93XX
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Say 'Y' here if you want your kernel to support the Cirrus
 	  Logic EDB9315A Evaluation Board.
 	  Logic EDB9315A Evaluation Board.
 
 
 config MACH_GESBC9312
 config MACH_GESBC9312
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	bool "Support Glomation GESBC-9312-sx"
 	bool "Support Glomation GESBC-9312-sx"
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the Glomation
 	  Say 'Y' here if you want your kernel to support the Glomation
@@ -83,10 +110,10 @@ config MACH_GESBC9312
 
 
 config MACH_MICRO9
 config MACH_MICRO9
 	bool
 	bool
-	default n
 
 
 config MACH_MICRO9H
 config MACH_MICRO9H
 	bool "Support Contec Hypercontrol Micro9-H"
 	bool "Support Contec Hypercontrol Micro9-H"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	select MACH_MICRO9
 	select MACH_MICRO9
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the
 	  Say 'Y' here if you want your kernel to support the
@@ -94,6 +121,7 @@ config MACH_MICRO9H
 
 
 config MACH_MICRO9M
 config MACH_MICRO9M
 	bool "Support Contec Hypercontrol Micro9-M"
 	bool "Support Contec Hypercontrol Micro9-M"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	select MACH_MICRO9
 	select MACH_MICRO9
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the
 	  Say 'Y' here if you want your kernel to support the
@@ -101,6 +129,7 @@ config MACH_MICRO9M
 
 
 config MACH_MICRO9L
 config MACH_MICRO9L
 	bool "Support Contec Hypercontrol Micro9-L"
 	bool "Support Contec Hypercontrol Micro9-L"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	select MACH_MICRO9
 	select MACH_MICRO9
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the
 	  Say 'Y' here if you want your kernel to support the
@@ -108,6 +137,7 @@ config MACH_MICRO9L
 
 
 config MACH_TS72XX
 config MACH_TS72XX
 	bool "Support Technologic Systems TS-72xx SBC"
 	bool "Support Technologic Systems TS-72xx SBC"
+	depends on EP93XX_SDCE3_SYNC_PHYS_OFFSET
 	help
 	help
 	  Say 'Y' here if you want your kernel to support the
 	  Say 'Y' here if you want your kernel to support the
 	  Technologic Systems TS-72xx board.
 	  Technologic Systems TS-72xx board.

+ 5 - 2
arch/arm/mach-ep93xx/Makefile.boot

@@ -1,2 +1,5 @@
-   zreladdr-y	:= 0x00008000
-params_phys-y	:= 0x00000100
+   zreladdr-$(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)	:= 0x00008000
+params_phys-$(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)	:= 0x00000100
+
+   zreladdr-$(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)		:= 0xc0008000
+params_phys-$(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)		:= 0xc0000100

+ 6 - 0
arch/arm/mach-ep93xx/include/mach/memory.h

@@ -5,6 +5,12 @@
 #ifndef __ASM_ARCH_MEMORY_H
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
 
 
+#if defined(CONFIG_EP93XX_SDCE3_SYNC_PHYS_OFFSET)
 #define PHYS_OFFSET		UL(0x00000000)
 #define PHYS_OFFSET		UL(0x00000000)
+#elif defined(CONFIG_EP93XX_SDCE0_PHYS_OFFSET)
+#define PHYS_OFFSET		UL(0xc0000000)
+#else
+#error "Kconfig bug: No EP93xx PHYS_OFFSET set"
+#endif
 
 
 #endif
 #endif