* [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code
@ 2010-09-23 19:49 Albert Aribaud
2010-09-23 19:49 ` [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation Albert Aribaud
` (2 more replies)
0 siblings, 3 replies; 12+ messages in thread
From: Albert Aribaud @ 2010-09-23 19:49 UTC (permalink / raw)
To: u-boot
Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
---
SUMMARY
Device address window mapping code would not run from
FLASH due to cutting access to BOOTCS. Fixed by reordering
code.
Timer initialization would write globals, thus would not
run correctly from FLASH. Fixed by moving the writes to a
later phase in RAM.
PATCHSET HISTORY
V1 Initial submission
V2 Removed useless blank line in config.mk
Fixed typo in config file
Reordered window inits in cpu.c
Added newline at end of timer.c
These patches show 0 error or warning with checkpatch.pl --no-tree
and have been tested on edminiv2.
arch/arm/cpu/arm926ejs/orion5x/cpu.c | 78 +++++++++++++++++++-----------
arch/arm/cpu/arm926ejs/orion5x/timer.c | 6 ++-
arch/arm/include/asm/arch-orion5x/cpu.h | 1 +
3 files changed, 54 insertions(+), 31 deletions(-)
diff --git a/arch/arm/cpu/arm926ejs/orion5x/cpu.c b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
index 260f88b..c36d7bf 100644
--- a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
+++ b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
@@ -77,6 +77,17 @@ unsigned int orion5x_winctrl_calcsize(unsigned int sizeval)
*
* If remap function not used, remap_lo must be set as base
*
+ * NOTES:
+ *
+ * 1) in order to avoid windows with inconsistent control and base values
+ * (which could prevent access to BOOTCS and hence execution from FLASH)
+ * always disable window before writing the base value then reenable it
+ * by writing the control value.
+ *
+ * 2) in order to avoid losing access to BOOTCS when disabling window 7,
+ * first configure window 6 for BOOTCS, then configure window 7 for BOOTCS,
+ * then configure windows 6 for its own target.
+ *
* Reference Documentation:
* Mbus-L to Mbus Bridge Registers Configuration.
* (Sec 25.1 and 25.3 of Datasheet)
@@ -86,57 +97,64 @@ int orion5x_config_adr_windows(void)
struct orion5x_win_registers *winregs =
(struct orion5x_win_registers *)ORION5X_CPU_WIN_BASE;
- /* Window 0: PCIE MEM address space */
- writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCIE_MEM,
- ORION5X_TARGET_PCIE, ORION5X_ATTR_PCIE_MEM,
- ORION5X_WIN_ENABLE), &winregs[0].ctrl);
+/* Disable window 0, configure it for its intended target, enable it. */
+ writel(0, &winregs[0].ctrl);
writel(ORION5X_ADR_PCIE_MEM, &winregs[0].base);
writel(ORION5X_ADR_PCIE_MEM_REMAP_LO, &winregs[0].remap_lo);
writel(ORION5X_ADR_PCIE_MEM_REMAP_HI, &winregs[0].remap_hi);
-
- /* Window 1: PCIE IO address space */
- writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCIE_IO,
- ORION5X_TARGET_PCIE, ORION5X_ATTR_PCIE_IO,
- ORION5X_WIN_ENABLE), &winregs[1].ctrl);
+ writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCIE_MEM,
+ ORION5X_TARGET_PCIE, ORION5X_ATTR_PCIE_MEM,
+ ORION5X_WIN_ENABLE), &winregs[0].ctrl);
+/* Disable window 1, configure it for its intended target, enable it. */
+ writel(0, &winregs[1].ctrl);
writel(ORION5X_ADR_PCIE_IO, &winregs[1].base);
writel(ORION5X_ADR_PCIE_IO_REMAP_LO, &winregs[1].remap_lo);
writel(ORION5X_ADR_PCIE_IO_REMAP_HI, &winregs[1].remap_hi);
-
- /* Window 2: PCI MEM address space */
+ writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCIE_IO,
+ ORION5X_TARGET_PCIE, ORION5X_ATTR_PCIE_IO,
+ ORION5X_WIN_ENABLE), &winregs[1].ctrl);
+/* Disable window 2, configure it for its intended target, enable it. */
+ writel(0, &winregs[2].ctrl);
+ writel(ORION5X_ADR_PCI_MEM, &winregs[2].base);
writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCI_MEM,
ORION5X_TARGET_PCI, ORION5X_ATTR_PCI_MEM,
ORION5X_WIN_ENABLE), &winregs[2].ctrl);
- writel(ORION5X_ADR_PCI_MEM, &winregs[2].base);
-
- /* Window 3: PCI IO address space */
+/* Disable window 3, configure it for its intended target, enable it. */
+ writel(0, &winregs[3].ctrl);
+ writel(ORION5X_ADR_PCI_IO, &winregs[3].base);
writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCI_IO,
ORION5X_TARGET_PCI, ORION5X_ATTR_PCI_IO,
ORION5X_WIN_ENABLE), &winregs[3].ctrl);
- writel(ORION5X_ADR_PCI_IO, &winregs[3].base);
-
- /* Window 4: DEV_CS0 address space */
+/* Disable window 4, configure it for its intended target, enable it. */
+ writel(0, &winregs[4].ctrl);
+ writel(ORION5X_ADR_DEV_CS0, &winregs[4].base);
writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_DEV_CS0,
ORION5X_TARGET_DEVICE, ORION5X_ATTR_DEV_CS0,
ORION5X_WIN_ENABLE), &winregs[4].ctrl);
- writel(ORION5X_ADR_DEV_CS0, &winregs[4].base);
-
- /* Window 5: DEV_CS1 address space */
+/* Disable window 5, configure it for its intended target, enable it. */
+ writel(0, &winregs[5].ctrl);
+ writel(ORION5X_ADR_DEV_CS1, &winregs[5].base);
writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_DEV_CS1,
ORION5X_TARGET_DEVICE, ORION5X_ATTR_DEV_CS1,
ORION5X_WIN_ENABLE), &winregs[5].ctrl);
- writel(ORION5X_ADR_DEV_CS1, &winregs[5].base);
-
- /* Window 6: DEV_CS2 address space */
- writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_DEV_CS2,
- ORION5X_TARGET_DEVICE, ORION5X_ATTR_DEV_CS2,
+/* Disable window 6, configure it for FLASH, enable it. */
+ writel(0, &winregs[6].ctrl);
+ writel(ORION5X_ADR_BOOTROM, &winregs[6].base);
+ writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
+ ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
ORION5X_WIN_ENABLE), &winregs[6].ctrl);
- writel(ORION5X_ADR_DEV_CS2, &winregs[6].base);
-
- /* Window 7: BOOT Memory address space */
+/* Disable window 7, configure it for FLASH, enable it. */
+ writel(0, &winregs[7].ctrl);
+ writel(ORION5X_ADR_BOOTROM, &winregs[7].base);
writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
ORION5X_WIN_ENABLE), &winregs[7].ctrl);
- writel(ORION5X_ADR_BOOTROM, &winregs[7].base);
+/* Disable window 6, configure it for its intended target, enable it. */
+ writel(0, &winregs[6].ctrl);
+ writel(ORION5X_ADR_DEV_CS2, &winregs[6].base);
+ writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_DEV_CS2,
+ ORION5X_TARGET_DEVICE, ORION5X_ATTR_DEV_CS2,
+ ORION5X_WIN_ENABLE), &winregs[6].ctrl);
return 0;
}
@@ -265,6 +283,8 @@ int arch_misc_init(void)
writel(ORION5X_MPP16_23, ORION5X_MPP_BASE+0x50);
writel(ORION5X_GPIO_OUT_ENABLE, ORION5X_GPIO_BASE+0x04);
+ /* initialize timer */
+ timer_init_r();
return 0;
}
#endif /* CONFIG_ARCH_MISC_INIT */
diff --git a/arch/arm/cpu/arm926ejs/orion5x/timer.c b/arch/arm/cpu/arm926ejs/orion5x/timer.c
index 115448f..089ef47 100644
--- a/arch/arm/cpu/arm926ejs/orion5x/timer.c
+++ b/arch/arm/cpu/arm926ejs/orion5x/timer.c
@@ -173,9 +173,11 @@ int timer_init(void)
cntmrctrl |= CTCR_ARM_TIMER_EN(UBOOT_CNTR);
cntmrctrl |= CTCR_ARM_TIMER_AUTO_EN(UBOOT_CNTR);
writel(cntmrctrl, CNTMR_CTRL_REG);
+ return 0;
+}
+void timer_init_r(void)
+{
/* init the timestamp and lastdec value */
reset_timer_masked();
-
- return 0;
}
diff --git a/arch/arm/include/asm/arch-orion5x/cpu.h b/arch/arm/include/asm/arch-orion5x/cpu.h
index 6ce02a9..c84efaf 100644
--- a/arch/arm/include/asm/arch-orion5x/cpu.h
+++ b/arch/arm/include/asm/arch-orion5x/cpu.h
@@ -255,5 +255,6 @@ void reset_cpu(unsigned long ignored);
u32 orion5x_device_id(void);
u32 orion5x_device_rev(void);
unsigned int orion5x_winctrl_calcsize(unsigned int sizeval);
+void timer_init_r(void);
#endif /* __ASSEMBLY__ */
#endif /* _ORION5X_CPU_H */
--
1.7.0.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation
2010-09-23 19:49 [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code Albert Aribaud
@ 2010-09-23 19:49 ` Albert Aribaud
2010-10-11 11:30 ` Wolfgang Denk
2010-09-27 5:52 ` [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code Prafulla Wadaskar
2010-10-11 12:37 ` Wolfgang Denk
2 siblings, 1 reply; 12+ messages in thread
From: Albert Aribaud @ 2010-09-23 19:49 UTC (permalink / raw)
To: u-boot
Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
---
board/LaCie/edminiv2/config.mk | 3 ++-
include/configs/edminiv2.h | 6 ++++++
2 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/board/LaCie/edminiv2/config.mk b/board/LaCie/edminiv2/config.mk
index 3dec1aa..bb444b5 100644
--- a/board/LaCie/edminiv2/config.mk
+++ b/board/LaCie/edminiv2/config.mk
@@ -24,4 +24,5 @@
# MA 02110-1301 USA
#
-TEXT_BASE = 0x00100000
+# with relocation TEXT_BASE now *must* be in FLASH
+TEXT_BASE = 0xfff90000
diff --git a/include/configs/edminiv2.h b/include/configs/edminiv2.h
index ccfc660..e6537fc 100644
--- a/include/configs/edminiv2.h
+++ b/include/configs/edminiv2.h
@@ -223,4 +223,10 @@
#define CONFIG_SYS_RESET_ADDRESS 0xffff0000
#define CONFIG_SYS_MAXARGS 16
+/* additions for new relocation code, must be added to all boards */
+#undef CONFIG_SYS_ARM_WITHOUT_RELOC
+#define CONFIG_SYS_SDRAM_BASE 0
+#define CONFIG_SYS_INIT_SP_ADDR \
+ (CONFIG_SYS_SDRAM_BASE + 0x1000 - CONFIG_SYS_GBL_DATA_SIZE)
+
#endif /* _CONFIG_EDMINIV2_H */
--
1.7.0.4
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code
2010-09-23 19:49 [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code Albert Aribaud
2010-09-23 19:49 ` [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation Albert Aribaud
@ 2010-09-27 5:52 ` Prafulla Wadaskar
2010-09-27 6:34 ` Albert ARIBAUD
2010-10-11 12:37 ` Wolfgang Denk
2 siblings, 1 reply; 12+ messages in thread
From: Prafulla Wadaskar @ 2010-09-27 5:52 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: u-boot-bounces at lists.denx.de
> [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Albert Aribaud
> Sent: Friday, September 24, 2010 1:19 AM
> To: u-boot at lists.denx.de
> Subject: [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix
> relocation-incompatible code
>
>
> Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
> ---
> SUMMARY
>
> Device address window mapping code would not run from
> FLASH due to cutting access to BOOTCS. Fixed by reordering
> code.
>
> Timer initialization would write globals, thus would not
> run correctly from FLASH. Fixed by moving the writes to a
> later phase in RAM.
>
> PATCHSET HISTORY
>
> V1 Initial submission
> V2 Removed useless blank line in config.mk
> Fixed typo in config file
> Reordered window inits in cpu.c
> Added newline at end of timer.c
>
> These patches show 0 error or warning with checkpatch.pl --no-tree
> and have been tested on edminiv2.
>
> arch/arm/cpu/arm926ejs/orion5x/cpu.c | 78
> +++++++++++++++++++-----------
> arch/arm/cpu/arm926ejs/orion5x/timer.c | 6 ++-
> arch/arm/include/asm/arch-orion5x/cpu.h | 1 +
> 3 files changed, 54 insertions(+), 31 deletions(-)
>
> diff --git a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> index 260f88b..c36d7bf 100644
> --- a/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> +++ b/arch/arm/cpu/arm926ejs/orion5x/cpu.c
> @@ -77,6 +77,17 @@ unsigned int
> orion5x_winctrl_calcsize(unsigned int sizeval)
> *
> * If remap function not used, remap_lo must be set as base
> *
> + * NOTES:
> + *
> + * 1) in order to avoid windows with inconsistent control
> and base values
> + * (which could prevent access to BOOTCS and hence
> execution from FLASH)
> + * always disable window before writing the base value
> then reenable it
> + * by writing the control value.
> + *
> + * 2) in order to avoid losing access to BOOTCS when
> disabling window 7,
> + * first configure window 6 for BOOTCS, then configure
> window 7 for BOOTCS,
> + * then configure windows 6 for its own target.
> + *
> * Reference Documentation:
> * Mbus-L to Mbus Bridge Registers Configuration.
> * (Sec 25.1 and 25.3 of Datasheet)
> @@ -86,57 +97,64 @@ int orion5x_config_adr_windows(void)
> struct orion5x_win_registers *winregs =
> (struct orion5x_win_registers *)ORION5X_CPU_WIN_BASE;
>
> - /* Window 0: PCIE MEM address space */
> - writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCIE_MEM,
> - ORION5X_TARGET_PCIE, ORION5X_ATTR_PCIE_MEM,
> - ORION5X_WIN_ENABLE), &winregs[0].ctrl);
> +/* Disable window 0, configure it for its intended target,
> enable it. */
> + writel(0, &winregs[0].ctrl);
> writel(ORION5X_ADR_PCIE_MEM, &winregs[0].base);
> writel(ORION5X_ADR_PCIE_MEM_REMAP_LO, &winregs[0].remap_lo);
> writel(ORION5X_ADR_PCIE_MEM_REMAP_HI, &winregs[0].remap_hi);
> -
> - /* Window 1: PCIE IO address space */
> - writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCIE_IO,
> - ORION5X_TARGET_PCIE, ORION5X_ATTR_PCIE_IO,
> - ORION5X_WIN_ENABLE), &winregs[1].ctrl);
> + writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCIE_MEM,
> + ORION5X_TARGET_PCIE, ORION5X_ATTR_PCIE_MEM,
> + ORION5X_WIN_ENABLE), &winregs[0].ctrl);
> +/* Disable window 1, configure it for its intended target,
> enable it. */
> + writel(0, &winregs[1].ctrl);
> writel(ORION5X_ADR_PCIE_IO, &winregs[1].base);
> writel(ORION5X_ADR_PCIE_IO_REMAP_LO, &winregs[1].remap_lo);
> writel(ORION5X_ADR_PCIE_IO_REMAP_HI, &winregs[1].remap_hi);
> -
> - /* Window 2: PCI MEM address space */
> + writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCIE_IO,
> + ORION5X_TARGET_PCIE, ORION5X_ATTR_PCIE_IO,
> + ORION5X_WIN_ENABLE), &winregs[1].ctrl);
> +/* Disable window 2, configure it for its intended target,
> enable it. */
> + writel(0, &winregs[2].ctrl);
> + writel(ORION5X_ADR_PCI_MEM, &winregs[2].base);
> writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCI_MEM,
> ORION5X_TARGET_PCI, ORION5X_ATTR_PCI_MEM,
> ORION5X_WIN_ENABLE), &winregs[2].ctrl);
> - writel(ORION5X_ADR_PCI_MEM, &winregs[2].base);
> -
> - /* Window 3: PCI IO address space */
> +/* Disable window 3, configure it for its intended target,
> enable it. */
> + writel(0, &winregs[3].ctrl);
> + writel(ORION5X_ADR_PCI_IO, &winregs[3].base);
> writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_PCI_IO,
> ORION5X_TARGET_PCI, ORION5X_ATTR_PCI_IO,
> ORION5X_WIN_ENABLE), &winregs[3].ctrl);
> - writel(ORION5X_ADR_PCI_IO, &winregs[3].base);
> -
> - /* Window 4: DEV_CS0 address space */
> +/* Disable window 4, configure it for its intended target,
> enable it. */
> + writel(0, &winregs[4].ctrl);
> + writel(ORION5X_ADR_DEV_CS0, &winregs[4].base);
> writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_DEV_CS0,
> ORION5X_TARGET_DEVICE, ORION5X_ATTR_DEV_CS0,
> ORION5X_WIN_ENABLE), &winregs[4].ctrl);
> - writel(ORION5X_ADR_DEV_CS0, &winregs[4].base);
> -
> - /* Window 5: DEV_CS1 address space */
> +/* Disable window 5, configure it for its intended target,
> enable it. */
> + writel(0, &winregs[5].ctrl);
> + writel(ORION5X_ADR_DEV_CS1, &winregs[5].base);
> writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_DEV_CS1,
> ORION5X_TARGET_DEVICE, ORION5X_ATTR_DEV_CS1,
> ORION5X_WIN_ENABLE), &winregs[5].ctrl);
> - writel(ORION5X_ADR_DEV_CS1, &winregs[5].base);
> -
> - /* Window 6: DEV_CS2 address space */
> - writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_DEV_CS2,
> - ORION5X_TARGET_DEVICE, ORION5X_ATTR_DEV_CS2,
> +/* Disable window 6, configure it for FLASH, enable it. */
> + writel(0, &winregs[6].ctrl);
> + writel(ORION5X_ADR_BOOTROM, &winregs[6].base);
> + writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
> + ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
> ORION5X_WIN_ENABLE), &winregs[6].ctrl);
> - writel(ORION5X_ADR_DEV_CS2, &winregs[6].base);
> -
> - /* Window 7: BOOT Memory address space */
> +/* Disable window 7, configure it for FLASH, enable it. */
> + writel(0, &winregs[7].ctrl);
> + writel(ORION5X_ADR_BOOTROM, &winregs[7].base);
> writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
> ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
> ORION5X_WIN_ENABLE), &winregs[7].ctrl);
> - writel(ORION5X_ADR_BOOTROM, &winregs[7].base);
> +/* Disable window 6, configure it for its intended target,
> enable it. */
> + writel(0, &winregs[6].ctrl);
This conflicts with above win6 configuration.
If done purposely then pls provide comments.
Regards..
Prafulla . .
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code
2010-09-27 5:52 ` [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code Prafulla Wadaskar
@ 2010-09-27 6:34 ` Albert ARIBAUD
2010-09-27 6:36 ` Prafulla Wadaskar
0 siblings, 1 reply; 12+ messages in thread
From: Albert ARIBAUD @ 2010-09-27 6:34 UTC (permalink / raw)
To: u-boot
Le 27/09/2010 07:52, Prafulla Wadaskar a ?crit :
>> + * NOTES:
>> + * 2) in order to avoid losing access to BOOTCS when
>> disabling window 7,
>> + * first configure window 6 for BOOTCS, then configure
>> window 7 for BOOTCS,
>> + * then configure windows 6 for its own target.
>> +/* Disable window 6, configure it for FLASH, enable it. */
>> + writel(0,&winregs[6].ctrl);
>> + writel(ORION5X_ADR_BOOTROM,&winregs[6].base);
>> + writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
>> + ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
>> ORION5X_WIN_ENABLE),&winregs[6].ctrl);
>> - writel(ORION5X_ADR_DEV_CS2,&winregs[6].base);
>> -
>> - /* Window 7: BOOT Memory address space */
>> +/* Disable window 7, configure it for FLASH, enable it. */
>> + writel(0,&winregs[7].ctrl);
>> + writel(ORION5X_ADR_BOOTROM,&winregs[7].base);
>> writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
>> ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
>> ORION5X_WIN_ENABLE),&winregs[7].ctrl);
>> - writel(ORION5X_ADR_BOOTROM,&winregs[7].base);
>> +/* Disable window 6, configure it for its intended target,
>> enable it. */
>> + writel(0,&winregs[6].ctrl);
>
> This conflicts with above win6 configuration.
> If done purposely then pls provide comments.
>
> Regards..
> Prafulla . .
Er... The comment *is* there, right before the sequence.
Amicalement,
--
Albert.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code
2010-09-27 6:34 ` Albert ARIBAUD
@ 2010-09-27 6:36 ` Prafulla Wadaskar
2010-09-27 6:47 ` Albert ARIBAUD
0 siblings, 1 reply; 12+ messages in thread
From: Prafulla Wadaskar @ 2010-09-27 6:36 UTC (permalink / raw)
To: u-boot
> -----Original Message-----
> From: Albert ARIBAUD [mailto:albert.aribaud at free.fr]
> Sent: Monday, September 27, 2010 12:05 PM
> To: Prafulla Wadaskar
> Cc: u-boot at lists.denx.de; Ashish Karkare; Prabhanjan Sarnaik
> Subject: Re: [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix
> relocation-incompatible code
>
> Le 27/09/2010 07:52, Prafulla Wadaskar a ?crit :
>
> >> + * NOTES:
>
> >> + * 2) in order to avoid losing access to BOOTCS when
> >> disabling window 7,
> >> + * first configure window 6 for BOOTCS, then configure
> >> window 7 for BOOTCS,
> >> + * then configure windows 6 for its own target.
>
> >> +/* Disable window 6, configure it for FLASH, enable it. */
> >> + writel(0,&winregs[6].ctrl);
> >> + writel(ORION5X_ADR_BOOTROM,&winregs[6].base);
> >> + writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
> >> + ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
> >> ORION5X_WIN_ENABLE),&winregs[6].ctrl);
> >> - writel(ORION5X_ADR_DEV_CS2,&winregs[6].base);
> >> -
> >> - /* Window 7: BOOT Memory address space */
> >> +/* Disable window 7, configure it for FLASH, enable it. */
> >> + writel(0,&winregs[7].ctrl);
> >> + writel(ORION5X_ADR_BOOTROM,&winregs[7].base);
> >> writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
> >> ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
> >> ORION5X_WIN_ENABLE),&winregs[7].ctrl);
> >> - writel(ORION5X_ADR_BOOTROM,&winregs[7].base);
> >> +/* Disable window 6, configure it for its intended target,
> >> enable it. */
> >> + writel(0,&winregs[6].ctrl);
> >
> > This conflicts with above win6 configuration.
> > If done purposely then pls provide comments.
> >
> > Regards..
> > Prafulla . .
>
> Er... The comment *is* there, right before the sequence.
Why do you need to configure win6 twice?
Regards..
Prafulla . .
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code
2010-09-27 6:36 ` Prafulla Wadaskar
@ 2010-09-27 6:47 ` Albert ARIBAUD
0 siblings, 0 replies; 12+ messages in thread
From: Albert ARIBAUD @ 2010-09-27 6:47 UTC (permalink / raw)
To: u-boot
Le 27/09/2010 08:36, Prafulla Wadaskar a ?crit :
>
>
>> -----Original Message-----
>> From: Albert ARIBAUD [mailto:albert.aribaud at free.fr]
>> Sent: Monday, September 27, 2010 12:05 PM
>> To: Prafulla Wadaskar
>> Cc: u-boot at lists.denx.de; Ashish Karkare; Prabhanjan Sarnaik
>> Subject: Re: [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix
>> relocation-incompatible code
>>
>> Le 27/09/2010 07:52, Prafulla Wadaskar a ?crit :
>>
>>>> + * NOTES:
>>
>>>> + * 2) in order to avoid losing access to BOOTCS when
>>>> disabling window 7,
>>>> + * first configure window 6 for BOOTCS, then configure
>>>> window 7 for BOOTCS,
>>>> + * then configure windows 6 for its own target.
>>
>>>> +/* Disable window 6, configure it for FLASH, enable it. */
>>>> + writel(0,&winregs[6].ctrl);
>>>> + writel(ORION5X_ADR_BOOTROM,&winregs[6].base);
>>>> + writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
>>>> + ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
>>>> ORION5X_WIN_ENABLE),&winregs[6].ctrl);
>>>> - writel(ORION5X_ADR_DEV_CS2,&winregs[6].base);
>>>> -
>>>> - /* Window 7: BOOT Memory address space */
>>>> +/* Disable window 7, configure it for FLASH, enable it. */
>>>> + writel(0,&winregs[7].ctrl);
>>>> + writel(ORION5X_ADR_BOOTROM,&winregs[7].base);
>>>> writel(ORION5X_CPU_WIN_CTRL_DATA(ORION5X_SZ_BOOTROM,
>>>> ORION5X_TARGET_DEVICE, ORION5X_ATTR_BOOTROM,
>>>> ORION5X_WIN_ENABLE),&winregs[7].ctrl);
>>>> - writel(ORION5X_ADR_BOOTROM,&winregs[7].base);
>>>> +/* Disable window 6, configure it for its intended target,
>>>> enable it. */
>>>> + writel(0,&winregs[6].ctrl);
>>>
>>> This conflicts with above win6 configuration.
>>> If done purposely then pls provide comments.
>>>
>>> Regards..
>>> Prafulla . .
>>
>> Er... The comment *is* there, right before the sequence.
>
> Why do you need to configure win6 twice?
Because if I don't set a window beside 7 to access BOOTCS, then
reconfiguring window 7 (BOOTCs, i.e. FLASH) leaves the system with no
access to BOOT CS thus no access to FLASH thus no way to continue
executing this code, which runs from FLASH.
Thus I chose window 6 (I could have chosen any other, of course) and set
it up for flash so that code can still run while reconfiguring window 7;
then window 6 must, and can safely, be reconfigured for its own target.
(This issue of FLASH access does not happen on designs where boot is
from NAND, of course; but the fix would be harmless even on these)
> Regards..
> Prafulla . .
Amicalement,
--
Albert.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation
2010-09-23 19:49 ` [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation Albert Aribaud
@ 2010-10-11 11:30 ` Wolfgang Denk
2010-10-11 11:42 ` Albert ARIBAUD
0 siblings, 1 reply; 12+ messages in thread
From: Wolfgang Denk @ 2010-10-11 11:30 UTC (permalink / raw)
To: u-boot
Dear Albert Aribaud,
In message <1285271364-21302-2-git-send-email-albert.aribaud@free.fr> you wrote:
>
> Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
> ---
> board/LaCie/edminiv2/config.mk | 3 ++-
> include/configs/edminiv2.h | 6 ++++++
> 2 files changed, 8 insertions(+), 1 deletions(-)
Is it correct to assume this patch has been obsoleted by the recent
"[ELF_RELOC] [PATCH V3 2/2] edminiv2: add support for ELF" submission?
If yes, then how about the other part of this series, "[PATCH V2 1/2]
[NEXT] orion5x: fix relocation-incompatible c..." ?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Very ugly or very beautiful women should be flattered on their
understanding, and mediocre ones on their beauty.
-- Philip Earl of Chesterfield
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation
2010-10-11 11:30 ` Wolfgang Denk
@ 2010-10-11 11:42 ` Albert ARIBAUD
2010-10-11 11:47 ` Albert ARIBAUD
2010-10-11 12:30 ` Wolfgang Denk
0 siblings, 2 replies; 12+ messages in thread
From: Albert ARIBAUD @ 2010-10-11 11:42 UTC (permalink / raw)
To: u-boot
Le 11/10/2010 13:30, Wolfgang Denk a ?crit :
> Dear Albert Aribaud,
>
> In message<1285271364-21302-2-git-send-email-albert.aribaud@free.fr> you wrote:
>>
>> Signed-off-by: Albert Aribaud<albert.aribaud@free.fr>
>> ---
>> board/LaCie/edminiv2/config.mk | 3 ++-
>> include/configs/edminiv2.h | 6 ++++++
>> 2 files changed, 8 insertions(+), 1 deletions(-)
>
> Is it correct to assume this patch has been obsoleted by the recent
> "[ELF_RELOC] [PATCH V3 2/2] edminiv2: add support for ELF" submission?
Yes, it is correct.
> If yes, then how about the other part of this series, "[PATCH V2 1/2]
> [NEXT] orion5x: fix relocation-incompatible c..." ?
I'd forgotten this one -- somehow I thought it was already applied since
it was a fix made above Heiko's GOT relocation patches before they were
merged from next to master.
So yes, it is needed for relocation, but it is not ELF specific. It
should thus go to the arm master branch, and the ELF branch should be
based at or above it.
Apologies for missing this.
> Best regards,
>
> Wolfgang Denk
Amicalement,
--
Albert.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation
2010-10-11 11:42 ` Albert ARIBAUD
@ 2010-10-11 11:47 ` Albert ARIBAUD
2010-10-11 12:29 ` Wolfgang Denk
2010-10-11 12:30 ` Wolfgang Denk
1 sibling, 1 reply; 12+ messages in thread
From: Albert ARIBAUD @ 2010-10-11 11:47 UTC (permalink / raw)
To: u-boot
Le 11/10/2010 13:42, Albert ARIBAUD a ?crit :
> So yes, it is needed for relocation, but it is not ELF specific. It
> should thus go to the arm master branch, and the ELF branch should be
> based at or above it.
BTW: do you want me to resubmit it formally as a standalone patch?
Amicalement,
--
Albert.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation
2010-10-11 11:47 ` Albert ARIBAUD
@ 2010-10-11 12:29 ` Wolfgang Denk
0 siblings, 0 replies; 12+ messages in thread
From: Wolfgang Denk @ 2010-10-11 12:29 UTC (permalink / raw)
To: u-boot
Dear Albert ARIBAUD,
In message <4CB2F968.8040901@free.fr> you wrote:
> Le 11/10/2010 13:42, Albert ARIBAUD a =E9crit :
>
> > So yes, it is needed for relocation, but it is not ELF specific. It
> > should thus go to the arm master branch, and the ELF branch should be
> > based at or above it.
>
> BTW: do you want me to resubmit it formally as a standalone patch?
No, thanks, not needed.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
After a heated argument on some trivial matter Nancy [Astor] . . .
shouted, ``If I were your wife I would put poison in your coffee!''
Whereupon Winston Churchill with equal heat and sincerity answered,
``And if I were your husband I would drink it.''
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation
2010-10-11 11:42 ` Albert ARIBAUD
2010-10-11 11:47 ` Albert ARIBAUD
@ 2010-10-11 12:30 ` Wolfgang Denk
1 sibling, 0 replies; 12+ messages in thread
From: Wolfgang Denk @ 2010-10-11 12:30 UTC (permalink / raw)
To: u-boot
Dear Albert ARIBAUD,
In message <4CB2F82F.2090803@free.fr> you wrote:
>
> > If yes, then how about the other part of this series, "[PATCH V2 1/2]
> > [NEXT] orion5x: fix relocation-incompatible c..." ?
>
> I'd forgotten this one -- somehow I thought it was already applied since
> it was a fix made above Heiko's GOT relocation patches before they were
> merged from next to master.
>
> So yes, it is needed for relocation, but it is not ELF specific. It
> should thus go to the arm master branch, and the ELF branch should be
> based at or above it.
OK, will do.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
What is mind? No matter. What is matter? Never mind.
-- Thomas Hewitt Key, 1799-1875
^ permalink raw reply [flat|nested] 12+ messages in thread
* [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code
2010-09-23 19:49 [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code Albert Aribaud
2010-09-23 19:49 ` [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation Albert Aribaud
2010-09-27 5:52 ` [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code Prafulla Wadaskar
@ 2010-10-11 12:37 ` Wolfgang Denk
2 siblings, 0 replies; 12+ messages in thread
From: Wolfgang Denk @ 2010-10-11 12:37 UTC (permalink / raw)
To: u-boot
Dear Albert Aribaud,
In message <1285271364-21302-1-git-send-email-albert.aribaud@free.fr> you wrote:
>
> Signed-off-by: Albert Aribaud <albert.aribaud@free.fr>
> ---
> SUMMARY
>
> Device address window mapping code would not run from
> FLASH due to cutting access to BOOTCS. Fixed by reordering
> code.
>
> Timer initialization would write globals, thus would not
> run correctly from FLASH. Fixed by moving the writes to a
> later phase in RAM.
>
> PATCHSET HISTORY
>
> V1 Initial submission
> V2 Removed useless blank line in config.mk
> Fixed typo in config file
> Reordered window inits in cpu.c
> Added newline at end of timer.c
>
> These patches show 0 error or warning with checkpatch.pl --no-tree
> and have been tested on edminiv2.
>
> arch/arm/cpu/arm926ejs/orion5x/cpu.c | 78 +++++++++++++++++++-----------
> arch/arm/cpu/arm926ejs/orion5x/timer.c | 6 ++-
> arch/arm/include/asm/arch-orion5x/cpu.h | 1 +
> 3 files changed, 54 insertions(+), 31 deletions(-)
Applied to "u-boot-arm" repo, "master" branch.
"elf_reloc"-Branch rebased against master.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The world is coming to an end -- save your buffers!
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2010-10-11 12:37 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-23 19:49 [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code Albert Aribaud
2010-09-23 19:49 ` [U-Boot] [PATCH V2 2/2] [NEXT] edminiv2: enable relocation Albert Aribaud
2010-10-11 11:30 ` Wolfgang Denk
2010-10-11 11:42 ` Albert ARIBAUD
2010-10-11 11:47 ` Albert ARIBAUD
2010-10-11 12:29 ` Wolfgang Denk
2010-10-11 12:30 ` Wolfgang Denk
2010-09-27 5:52 ` [U-Boot] [PATCH V2 1/2] [NEXT] orion5x: fix relocation-incompatible code Prafulla Wadaskar
2010-09-27 6:34 ` Albert ARIBAUD
2010-09-27 6:36 ` Prafulla Wadaskar
2010-09-27 6:47 ` Albert ARIBAUD
2010-10-11 12:37 ` Wolfgang Denk
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox