Skip to contentSkip to conversation

Renesas ARM based SoC fixes for v3.12

PATCH Superseded Simon Horman 2 participants 7 messages Jul 22, 2013 – Aug 4, 2013

Subsystems (4)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover Renesas ARM based SoC fixes for v3.12

Hi Olof, Hi Arnd,
please consider the following fixes v3.12.

The following changes since commit ad81f0545ef01ea651886dddac4bef6cec930092:

Linux 3.11-rc1 (2013-07-14 15:18:27 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-fixes-for-v3.12

for you to fetch changes up to 93d8a6fbe69a629a7bb37bb546699a5c49963dc5:

ARM: shmobile: r8a7740: Fix TPU clock name (2013-07-19 11:12:35 +0900)

----------------------------------------------------------------
Renesas ARM based SoC fixes for v3.12

* Fix TPU clock name for r8a7740 SoC
* Update romImage to relocate appended DTB
* Thumb fixes

----------------------------------------------------------------
Laurent Pinchart (1):
ARM: shmobile: r8a7740: Fix TPU clock name

Magnus Damm (1):
ARM: shmobile: Update romImage to relocate appended DTB

Tetsuyuki Kobayashi (3):
ARM: shmobile: fix compile error when CONFIG_THUMB2_KERNEL=y
ARM: shmobile: Force ARM mode to compile reset vector for secondary CPUs
ARM: shmobile: Insert align directives before 4 bytes data

 arch/arm/boot/compressed/head-shmobile.S    | 43 ++++++++++++++++++++++++++---
 arch/arm/mach-shmobile/clock-r8a7740.c      |  2 +-
 arch/arm/mach-shmobile/headsmp-scu.S        |  4 ++-
 arch/arm/mach-shmobile/headsmp.S            |  6 +++-
 arch/arm/mach-shmobile/include/mach/zboot.h |  2 --
 arch/arm/mach-shmobile/sleep-sh7372.S       |  2 ++
 6 files changed, 50 insertions(+), 9 deletions(-)
#1 lore raw

PATCH 1/5 ARM: shmobile: Update romImage to relocate appended DTB

From: Magnus Damm <[email protected]>

Instead of relying of MACH_TYPE for board identification, update the romImage code to relocate an appended DTB to the beginning of RAM. This implementation is independent of ARM_APPENDED_DTB, this because it is necessary to copy the DTB to memory so the kernel can access it.

Without this patch Mackerel does not boot via the Mask ROM over USB (r_usb_boot) - this since non-DT boot was broken ages ago in commit:

0ce53cd ARM: mach-shmobile: Use DT_MACHINE for mackerel

---
 arch/arm/boot/compressed/head-shmobile.S    | 43 ++++++++++++++++++++++++++---
 arch/arm/mach-shmobile/include/mach/zboot.h |  2 --
 2 files changed, 39 insertions(+), 6 deletions(-)
arch/arm/boot/compressed/head-shmobile.S +39 -4
index e2d6363..e7f8092 100644
@@ -55,12 +55,47 @@ __tmp_stack:
 __continue:
 #endif /* CONFIG_ZBOOT_ROM_MMC || CONFIG_ZBOOT_ROM_SH_MOBILE_SDHI */
 
-	/* Set board ID necessary for boot */
-	ldr	r7, 1f				@ Set machine type register
-	mov	r8, #0				@ pass null pointer as atag
+	adr	r0, dtb_info
+	ldmia	r0, {r1, r3, r4, r5, r7}
+
+	sub	r0, r0, r1		@ calculate the delta offset
+	add	r5, r5, r0		@ _edata
+
+	ldr	lr, [r5, #0]		@ check if valid DTB is present
+	cmp	lr, r3
+	bne	0f
+
+	add	r9, r7, #31		@ rounded up to a multiple
+	bic	r9, r9, #31		@ ... of 32 bytes
+
+	add	r6, r9, r5		@ copy from _edata
+	add	r9, r9, r4		@ to MEMORY_START
+
+1:	ldmdb	r6!, {r0 - r3, r10 - r12, lr}
+	cmp	r6, r5
+	stmdb	r9!, {r0 - r3, r10 - r12, lr}
+	bhi	1b
+
+	/* Success: Zero board ID, pointer to start of memory for atag/dtb */
+	mov	r7, #0
+	mov	r8, r4
 	b	2f
 
-1 :	.long MACH_TYPE
+	.align	2
+dtb_info:
+	.word	dtb_info
+#ifndef __ARMEB__
+	.word	0xedfe0dd0		@ sig is 0xd00dfeed big endian
+#else
+	.word	0xd00dfeed
+#endif
+	.word	MEMORY_START
+	.word	_edata
+	.word	0x4000			@ maximum DTB size
+0:
+	/* Failure: Zero board ID, NULL atag/dtb */
+	mov 	r7, #0
+	mov	r8, #0			@ pass null pointer as atag
 2 :
 
 #endif /* CONFIG_ZBOOT_ROM */
arch/arm/mach-shmobile/include/mach/zboot.h +0 -2
index f2d8744..c3c4669 100644
@@ -1,7 +1,6 @@
 #ifndef ZBOOT_H
 #define ZBOOT_H
 
-#include <asm/mach-types.h>
 #include <mach/zboot_macros.h>
 
 /**************************************************
@@ -11,7 +10,6 @@
  **************************************************/
 
 #ifdef CONFIG_MACH_MACKEREL
-#define MACH_TYPE	MACH_TYPE_MACKEREL
 #define MEMORY_START	0x40000000
 #include "mach/head-mackerel.txt"
 #else
Signature · 1 line
1.8.2.1
#2 lore raw

PATCH 2/5 ARM: shmobile: fix compile error when CONFIG_THUMB2_KERNEL=y

In reply to Simon Horman

From: Tetsuyuki Kobayashi <[email protected]>

On KZM-A9-GT board (SMP), when CONFIG_THUMB2_KERNEL=y it fails to compile

AS arch/arm/mach-shmobile/headsmp-scu.o
/proj/koba/kernel/arm-soc/arch/arm/mach-shmobile/headsmp-scu.S: Assembler messages:
/proj/koba/kernel/arm-soc/arch/arm/mach-shmobile/headsmp-scu.S:41: Error: shift must be constant -- `bic r2,r2,r3,lsl r1' make[2]: *** [arch/arm/mach-shmobile/headsmp-scu.o] Error 1
make[1]: *** [arch/arm/mach-shmobile] Error 2
make: *** [sub-make] Error 2

Instruction `bic r2,r2,r3,lsl r1' is not supported in thumb mode. This patch split it into 2 instructions.

---
 arch/arm/mach-shmobile/headsmp-scu.S | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
arch/arm/mach-shmobile/headsmp-scu.S +2 -1
index 6f98654..5ce416c 100644
@@ -38,7 +38,8 @@ ENTRY(shmobile_boot_scu)
 	lsl	r1, r1, #3		@ we will shift by cpu_id * 8 bits
 	ldr	r2, [r0, #8]		@ SCU Power Status Register
 	mov	r3, #3
-	bic	r2, r2, r3, lsl r1	@ Clear bits of our CPU (Run Mode)
+	lsl	r3, r3, r1
+	bic	r2, r2, r3		@ Clear bits of our CPU (Run Mode)
 	str	r2, [r0, #8]		@ write back
 
 	b	shmobile_invalidate_start
Signature · 1 line
1.8.2.1
#3 lore raw

PATCH 3/5 ARM: shmobile: Force ARM mode to compile reset vector for secondary CPUs

In reply to Simon Horman

From: Tetsuyuki Kobayashi <[email protected]>

Instructions start from boot vector must be ARM mode.
This patch specify ARM mode explicitly and use 'bx' instruction to be able to change to Thumb mode.

---
 arch/arm/mach-shmobile/headsmp.S | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
arch/arm/mach-shmobile/headsmp.S +4 -1
index 559d1ce..afed58e 100644
@@ -26,10 +26,13 @@ ENDPROC(shmobile_invalidate_start)
  * This will be mapped at address 0 by SBAR register.
  * We need _long_ jump to the physical address.
  */
+	.arm
 	.align  12
 ENTRY(shmobile_boot_vector)
 	ldr     r0, 2f
-	ldr     pc, 1f
+	ldr     r1, 1f
+	bx	r1
+
 ENDPROC(shmobile_boot_vector)
 
 	.globl	shmobile_boot_fn
Signature · 1 line
1.8.2.1
#4 lore raw

PATCH 4/5 ARM: shmobile: Insert align directives before 4 bytes data

In reply to Simon Horman

From: Tetsuyuki Kobayashi <[email protected]>

In thumb2 mode instructions are not align to 4 byte. This patch insert align directives before putting 4 byte data.

---
 arch/arm/mach-shmobile/headsmp-scu.S  | 1 +
 arch/arm/mach-shmobile/headsmp.S      | 1 +
 arch/arm/mach-shmobile/sleep-sh7372.S | 2 ++
 3 files changed, 4 insertions(+)
arch/arm/mach-shmobile/headsmp-scu.S +1 -0
index 5ce416c..0a77488 100644
@@ -46,6 +46,7 @@ ENTRY(shmobile_boot_scu)
 ENDPROC(shmobile_boot_scu)
 
 	.text
+	.align	2
 	.globl	shmobile_scu_base
 shmobile_scu_base:
 	.space	4
arch/arm/mach-shmobile/headsmp.S +1 -0
index afed58e..dfb41df 100644
@@ -35,6 +35,7 @@ ENTRY(shmobile_boot_vector)
 
 ENDPROC(shmobile_boot_vector)
 
+	.align	2
 	.globl	shmobile_boot_fn
 shmobile_boot_fn:
 1:	.space	4
arch/arm/mach-shmobile/sleep-sh7372.S +2 -0
index 53f4840..9782862 100644
@@ -41,6 +41,7 @@
 sh7372_resume_core_standby_sysc:
 	ldr     pc, 1f
 
+	.align	2
 	.globl	sh7372_cpu_resume
 sh7372_cpu_resume:
 1:	.space	4
@@ -96,6 +97,7 @@ sh7372_do_idle_sysc:
 1:
 	b      1b
 
+	.align	2
 kernel_flush:
 	.word v7_flush_dcache_all
 #endif
Signature · 1 line
1.8.2.1
#5 lore raw

PATCH 5/5 ARM: shmobile: r8a7740: Fix TPU clock name

In reply to Simon Horman

From: Laurent Pinchart <[email protected]>

The TPU device is called renesas-tpu-pwm, not renesas_tpu_pwm. Fix the clock name accordingly.

---
 arch/arm/mach-shmobile/clock-r8a7740.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-shmobile/clock-r8a7740.c +1 -1
index de10fd7..f4265e5 100644
@@ -596,7 +596,7 @@ static struct clk_lookup lookups[] = {
 	CLKDEV_DEV_ID("e6bd0000.mmcif",         &mstp_clks[MSTP312]),
 	CLKDEV_DEV_ID("r8a7740-gether",		&mstp_clks[MSTP309]),
 	CLKDEV_DEV_ID("e9a00000.sh-eth",	&mstp_clks[MSTP309]),
-	CLKDEV_DEV_ID("renesas_tpu_pwm",	&mstp_clks[MSTP304]),
+	CLKDEV_DEV_ID("renesas-tpu-pwm",	&mstp_clks[MSTP304]),
 
 	CLKDEV_DEV_ID("sh_mobile_sdhi.2",	&mstp_clks[MSTP415]),
 	CLKDEV_DEV_ID("e6870000.sdhi",          &mstp_clks[MSTP415]),
Signature · 1 line
1.8.2.1
#6 lore raw

cover Renesas ARM based SoC fixes for v3.12

In reply to Simon Horman
Quoted 10 lines · Simon Horman

Hi Olof, Hi Arnd,
please consider the following fixes v3.12.

The following changes since commit ad81f0545ef01ea651886dddac4bef6cec930092:

Linux 3.11-rc1 (2013-07-14 15:18:27 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-fixes-for-v3.12

Pulled.

-Olof