Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v9 6/7] arm64: kvm: Set Virtual SError Exception Syndrome for guest
From: Dongjiu Geng @ 2018-01-06 16:02 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1515254577-6460-1-git-send-email-gengdongjiu@huawei.com>

RAS Extension add a VSESR_EL2 register which can provide
the syndrome value reported to software on taking a virtual
SError interrupt exception. This patch supports to specify
this Syndrome.

In the RAS Extensions we can not set all-zero syndrome value
for SError, which means 'RAS error: Uncategorized' instead of
'no valid ISS'. So set it to IMPLEMENTATION DEFINED syndrome
by default.

We also need to support userspace to specify a valid syndrome
value, Because in some case, the recovery is driven by userspace.
This patch can support that userspace specify it.

In the guest/host world switch, restore this value to VSESR_EL2
only when HCR_EL2.VSE is set. This value no need to be saved
because it is stale vale when guest exit.

Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
[Set an impdef ESR for Virtual-SError]
Signed-off-by: James Morse <james.morse@arm.com>
---
 arch/arm64/include/asm/kvm_emulate.h | 10 ++++++++++
 arch/arm64/include/asm/kvm_host.h    |  1 +
 arch/arm64/include/asm/sysreg.h      |  3 +++
 arch/arm64/kvm/guest.c               | 11 ++++++++++-
 arch/arm64/kvm/hyp/switch.c          | 16 ++++++++++++++++
 arch/arm64/kvm/inject_fault.c        | 13 ++++++++++++-
 6 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/include/asm/kvm_emulate.h b/arch/arm64/include/asm/kvm_emulate.h
index 555b28b..73c84d0 100644
--- a/arch/arm64/include/asm/kvm_emulate.h
+++ b/arch/arm64/include/asm/kvm_emulate.h
@@ -155,6 +155,16 @@ static inline u32 kvm_vcpu_get_hsr(const struct kvm_vcpu *vcpu)
 	return vcpu->arch.fault.esr_el2;
 }
 
+static inline u32 kvm_vcpu_get_vsesr(const struct kvm_vcpu *vcpu)
+{
+	return vcpu->arch.fault.vsesr_el2;
+}
+
+static inline void kvm_vcpu_set_vsesr(struct kvm_vcpu *vcpu, unsigned long val)
+{
+	vcpu->arch.fault.vsesr_el2 = val;
+}
+
 static inline int kvm_vcpu_get_condition(const struct kvm_vcpu *vcpu)
 {
 	u32 esr = kvm_vcpu_get_hsr(vcpu);
diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm_host.h
index 769cc58..53d1d81 100644
--- a/arch/arm64/include/asm/kvm_host.h
+++ b/arch/arm64/include/asm/kvm_host.h
@@ -88,6 +88,7 @@ struct kvm_vcpu_fault_info {
 	u32 esr_el2;		/* Hyp Syndrom Register */
 	u64 far_el2;		/* Hyp Fault Address Register */
 	u64 hpfar_el2;		/* Hyp IPA Fault Address Register */
+	u32 vsesr_el2;          /* Virtual SError Exception Syndrome Register */
 };
 
 /*
diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
index 47b967d..3b035cc 100644
--- a/arch/arm64/include/asm/sysreg.h
+++ b/arch/arm64/include/asm/sysreg.h
@@ -86,6 +86,9 @@
 #define REG_PSTATE_PAN_IMM		sys_reg(0, 0, 4, 0, 4)
 #define REG_PSTATE_UAO_IMM		sys_reg(0, 0, 4, 0, 3)
 
+/* virtual SError exception syndrome register */
+#define REG_VSESR_EL2                  sys_reg(3, 4, 5, 2, 3)
+
 #define SET_PSTATE_PAN(x) __emit_inst(0xd5000000 | REG_PSTATE_PAN_IMM |	\
 				      (!!x)<<8 | 0x1f)
 #define SET_PSTATE_UAO(x) __emit_inst(0xd5000000 | REG_PSTATE_UAO_IMM |	\
diff --git a/arch/arm64/kvm/guest.c b/arch/arm64/kvm/guest.c
index 738ae90..ffad42b 100644
--- a/arch/arm64/kvm/guest.c
+++ b/arch/arm64/kvm/guest.c
@@ -279,7 +279,16 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu,
 
 int kvm_arm_set_sei_esr(struct kvm_vcpu *vcpu, u32 *syndrome)
 {
-	return -EINVAL;
+	u64 reg = *syndrome;
+
+	/* inject virtual system Error or asynchronous abort */
+	kvm_inject_vabt(vcpu);
+
+	if (reg)
+		/* set vsesr_el2[24:0] with value that user space specified */
+		kvm_vcpu_set_vsesr(vcpu, reg & ESR_ELx_ISS_MASK);
+
+	return 0;
 }
 
 int __attribute_const__ kvm_target_cpu(void)
diff --git a/arch/arm64/kvm/hyp/switch.c b/arch/arm64/kvm/hyp/switch.c
index fb5a538..7f08a5d 100644
--- a/arch/arm64/kvm/hyp/switch.c
+++ b/arch/arm64/kvm/hyp/switch.c
@@ -67,6 +67,14 @@ static hyp_alternate_select(__activate_traps_arch,
 			    __activate_traps_nvhe, __activate_traps_vhe,
 			    ARM64_HAS_VIRT_HOST_EXTN);
 
+static void __hyp_text __sysreg_set_vsesr(struct kvm_vcpu *vcpu, u64 value)
+{
+	if (cpus_have_const_cap(ARM64_HAS_RAS_EXTN) &&
+			       (value & HCR_VSE))
+		write_sysreg_s(kvm_vcpu_get_vsesr(vcpu), REG_VSESR_EL2);
+}
+
+
 static void __hyp_text __activate_traps(struct kvm_vcpu *vcpu)
 {
 	u64 val;
@@ -86,6 +94,14 @@ static void __hyp_text __activate_traps(struct kvm_vcpu *vcpu)
 		isb();
 	}
 	write_sysreg(val, hcr_el2);
+
+	/*
+	 * If the virtual SError interrupt is taken to EL1 using AArch64,
+	 * then VSESR_EL2 provides the syndrome value reported in ISS field
+	 * of ESR_EL1.
+	 */
+	__sysreg_set_vsesr(vcpu, val);
+
 	/* Trap on AArch32 cp15 c15 accesses (EL1 or EL0) */
 	write_sysreg(1 << 15, hstr_el2);
 	/*
diff --git a/arch/arm64/kvm/inject_fault.c b/arch/arm64/kvm/inject_fault.c
index 3556715..fb94b5e 100644
--- a/arch/arm64/kvm/inject_fault.c
+++ b/arch/arm64/kvm/inject_fault.c
@@ -246,14 +246,25 @@ void kvm_inject_undefined(struct kvm_vcpu *vcpu)
 		inject_undef64(vcpu);
 }
 
+static void pend_guest_serror(struct kvm_vcpu *vcpu, u64 esr)
+{
+	kvm_vcpu_set_vsesr(vcpu, esr);
+	vcpu_set_hcr(vcpu, vcpu_get_hcr(vcpu) | HCR_VSE);
+}
+
 /**
  * kvm_inject_vabt - inject an async abort / SError into the guest
  * @vcpu: The VCPU to receive the exception
  *
  * It is assumed that this code is called from the VCPU thread and that the
  * VCPU therefore is not currently executing guest code.
+ *
+ * Systems with the RAS Extensions specify an imp-def ESR (ISV/IDS = 1) with
+ * the remaining ISS all-zeros so that this error is not interpreted as an
+ * uncatagorized RAS error. Without the RAS Extensions we can't specify an ESR
+ * value, so the CPU generates an imp-def value.
  */
 void kvm_inject_vabt(struct kvm_vcpu *vcpu)
 {
-	vcpu_set_hcr(vcpu, vcpu_get_hcr(vcpu) | HCR_VSE);
+	pend_guest_serror(vcpu, ESR_ELx_ISV);
 }
-- 
1.9.1

^ permalink raw reply related

* [PATCH v9 7/7] arm64: kvm: handle guest SError Interrupt by categorization
From: Dongjiu Geng @ 2018-01-06 16:02 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1515254577-6460-1-git-send-email-gengdongjiu@huawei.com>

If it is not RAS SError, directly inject virtual SError,
which will keep the old way, otherwise firstly let host
ACPI kernel driver to handle it. If the ACPI handling is
failed, KVM continues categorizing errors by the ESR_ELx.

For the recoverable error (UER), it has not been silently
propagated and has not (yet) been architecturally consumed
by the PE, the exception is precise. In order to make it
simple, we temporarily shut down the VM to isolate the error.

Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com>
---
change since v8:
1. Check handle_guest_sei()'s return value
2. Temporarily shut down the VM to isolate the error for the
   recoverable error (UER) 
3. Remove some unused macro definitions
---
 arch/arm64/include/asm/esr.h         | 11 ++++++
 arch/arm64/include/asm/system_misc.h |  1 +
 arch/arm64/kvm/handle_exit.c         | 68 +++++++++++++++++++++++++++++++++---
 arch/arm64/mm/fault.c                | 16 +++++++++
 4 files changed, 92 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/include/asm/esr.h b/arch/arm64/include/asm/esr.h
index 66ed8b6..a751e86 100644
--- a/arch/arm64/include/asm/esr.h
+++ b/arch/arm64/include/asm/esr.h
@@ -102,6 +102,7 @@
 #define ESR_ELx_FSC_ACCESS	(0x08)
 #define ESR_ELx_FSC_FAULT	(0x04)
 #define ESR_ELx_FSC_PERM	(0x0C)
+#define ESR_ELx_FSC_SERROR	(0x11)
 
 /* ISS field definitions for Data Aborts */
 #define ESR_ELx_ISV_SHIFT	(24)
@@ -119,6 +120,16 @@
 #define ESR_ELx_CM_SHIFT	(8)
 #define ESR_ELx_CM 		(UL(1) << ESR_ELx_CM_SHIFT)
 
+/* ISS field definitions for SError interrupt */
+#define ESR_ELx_AET_SHIFT	(10)
+#define ESR_ELx_AET		(UL(0x7) << ESR_ELx_AET_SHIFT)
+/* Restartable error */
+#define ESR_ELx_AET_UEO		(UL(2) << ESR_ELx_AET_SHIFT)
+/* Recoverable error */
+#define ESR_ELx_AET_UER		(UL(3) << ESR_ELx_AET_SHIFT)
+/* Corrected error */
+#define ESR_ELx_AET_CE		(UL(6) << ESR_ELx_AET_SHIFT)
+
 /* ISS field definitions for exceptions taken in to Hyp */
 #define ESR_ELx_CV		(UL(1) << 24)
 #define ESR_ELx_COND_SHIFT	(20)
diff --git a/arch/arm64/include/asm/system_misc.h b/arch/arm64/include/asm/system_misc.h
index 07aa8e3..9ee13ad 100644
--- a/arch/arm64/include/asm/system_misc.h
+++ b/arch/arm64/include/asm/system_misc.h
@@ -57,6 +57,7 @@ void hook_debug_fault_code(int nr, int (*fn)(unsigned long, unsigned int,
 })
 
 int handle_guest_sea(phys_addr_t addr, unsigned int esr);
+int handle_guest_sei(void);
 
 #endif	/* __ASSEMBLY__ */
 
diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c
index 7debb74..5b806d4 100644
--- a/arch/arm64/kvm/handle_exit.c
+++ b/arch/arm64/kvm/handle_exit.c
@@ -28,6 +28,7 @@
 #include <asm/kvm_emulate.h>
 #include <asm/kvm_mmu.h>
 #include <asm/kvm_psci.h>
+#include <asm/system_misc.h>
 
 #define CREATE_TRACE_POINTS
 #include "trace.h"
@@ -178,6 +179,67 @@ static exit_handle_fn kvm_get_exit_handler(struct kvm_vcpu *vcpu)
 	return arm_exit_handlers[hsr_ec];
 }
 
+/**
+ * kvm_handle_guest_sei - handles SError interrupt or asynchronous aborts
+ * @vcpu:	the VCPU pointer
+ * @run:        access to the kvm_run structure for results
+ *
+ * For RAS SError interrupt, firstly let host kernel handle it. If handling
+ * failed, then categorize the error by the ESR
+ */
+static int kvm_handle_guest_sei(struct kvm_vcpu *vcpu, struct kvm_run *run)
+{
+	unsigned int esr = kvm_vcpu_get_hsr(vcpu);
+	bool impdef_syndrome =  esr & ESR_ELx_ISV;	/* aka IDS */
+	unsigned int aet = esr & ESR_ELx_AET;
+
+	/*
+	 * This is not RAS SError
+	 */
+	if (!cpus_have_const_cap(ARM64_HAS_RAS_EXTN)) {
+		kvm_inject_vabt(vcpu);
+		return 1;
+	}
+
+	/* For RAS the host kernel may handle this abort. */
+	if (!handle_guest_sei())
+		return 1;
+
+	/*
+	 * In below two conditions, it will directly inject the
+	 * virtual SError:
+	 * 1. The Syndrome is IMPLEMENTATION DEFINED
+	 * 2. It is Uncategorized SEI
+	 */
+	if (impdef_syndrome ||
+		((esr & ESR_ELx_FSC) != ESR_ELx_FSC_SERROR)) {
+		kvm_inject_vabt(vcpu);
+		return 1;
+	}
+
+	switch (aet) {
+	case ESR_ELx_AET_CE:	/* corrected error */
+	case ESR_ELx_AET_UEO:	/* restartable error, not yet consumed */
+		return 1;	/* continue processing the guest exit */
+	case ESR_ELx_AET_UER:	/* recoverable error */
+		/*
+		 * the exception is precise, not been silently propagated
+		 * and not been consumed by the CPU, temporarily shut down
+		 * the VM to isolated the error, hope not touch it again.
+		 */
+		run->exit_reason = KVM_EXIT_EXCEPTION;
+		return 0;
+	default:
+		/*
+		 * Until now, the CPU supports RAS, SError interrupt is fatal
+		 * and host does not successfully handle it.
+		 */
+		panic("This Asynchronous SError interrupt is dangerous, panic");
+	}
+
+	return 0;
+}
+
 /*
  * Return > 0 to return to guest, < 0 on error, 0 (and set exit_reason) on
  * proper exit to userspace.
@@ -201,8 +263,7 @@ int handle_exit(struct kvm_vcpu *vcpu, struct kvm_run *run,
 			*vcpu_pc(vcpu) -= adj;
 		}
 
-		kvm_inject_vabt(vcpu);
-		return 1;
+		return kvm_handle_guest_sei(vcpu, run);
 	}
 
 	exception_index = ARM_EXCEPTION_CODE(exception_index);
@@ -211,8 +272,7 @@ int handle_exit(struct kvm_vcpu *vcpu, struct kvm_run *run,
 	case ARM_EXCEPTION_IRQ:
 		return 1;
 	case ARM_EXCEPTION_EL1_SERROR:
-		kvm_inject_vabt(vcpu);
-		return 1;
+		return kvm_handle_guest_sei(vcpu, run);
 	case ARM_EXCEPTION_TRAP:
 		/*
 		 * See ARM ARM B1.14.1: "Hyp traps on instructions
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index b64958b..8560672 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -728,6 +728,22 @@ int handle_guest_sea(phys_addr_t addr, unsigned int esr)
 }
 
 /*
+ * Handle SError interrupt that occurred in guest OS.
+ *
+ * The return value will be zero if the SEI was successfully handled
+ * and non-zero if handling is failed.
+ */
+int handle_guest_sei(void)
+{
+	int ret = -ENOENT;
+
+	if (IS_ENABLED(CONFIG_ACPI_APEI_SEI))
+		ret = ghes_notify_sei();
+
+	return ret;
+}
+
+/*
  * Dispatch a data abort to the relevant handler.
  */
 asmlinkage void __exception do_mem_abort(unsigned long addr, unsigned int esr,
-- 
1.9.1

^ permalink raw reply related

* [PATCH] [media] exynos4-is: make array 'cmd' static, shrinks object size
From: Colin King @ 2018-01-06 16:03 UTC (permalink / raw)
  To: linux-arm-kernel

From: Colin Ian King <colin.king@canonical.com>

Don't populate the const read-only array 'cmd' on the stack but instead
make it static. Makes the object code smaller by 38 bytes:

Before:
   text	   data	    bss	    dec	    hex	filename
   4950	    868	      0	   5818	   16ba	fimc-is-regs.o

After:
   text	   data	    bss	    dec	    hex	filename
   4824	    956	      0	   5780	   1694	fimc-is-regs.o

(gcc version 7.2.0 x86_64)

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 drivers/media/platform/exynos4-is/fimc-is-regs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/exynos4-is/fimc-is-regs.c b/drivers/media/platform/exynos4-is/fimc-is-regs.c
index cfe4406a83ff..e0e291066037 100644
--- a/drivers/media/platform/exynos4-is/fimc-is-regs.c
+++ b/drivers/media/platform/exynos4-is/fimc-is-regs.c
@@ -159,7 +159,7 @@ void fimc_is_hw_load_setfile(struct fimc_is *is)
 
 int fimc_is_hw_change_mode(struct fimc_is *is)
 {
-	const u8 cmd[] = {
+	static const u8 cmd[] = {
 		HIC_PREVIEW_STILL, HIC_PREVIEW_VIDEO,
 		HIC_CAPTURE_STILL, HIC_CAPTURE_VIDEO,
 	};
-- 
2.15.1

^ permalink raw reply related

* [PATCH 1/2] ARM: Add BTB invalidation on switch_mm for Brahma-B15
From: Florian Fainelli @ 2018-01-06 18:48 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180106120907.26701-2-marc.zyngier@arm.com>

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 arch/arm/include/asm/cputype.h | 4 ++++
 arch/arm/mm/proc-v7.S          | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arm/include/asm/cputype.h b/arch/arm/include/asm/cputype.h
index cb546425da8a..48bf5639214a 100644
--- a/arch/arm/include/asm/cputype.h
+++ b/arch/arm/include/asm/cputype.h
@@ -62,6 +62,7 @@
 	((mpidr >> (MPIDR_LEVEL_BITS * level)) & MPIDR_LEVEL_MASK)
 
 #define ARM_CPU_IMP_ARM			0x41
+#define ARM_CPU_IMP_BRCM		0x42
 #define ARM_CPU_IMP_DEC			0x44
 #define ARM_CPU_IMP_INTEL		0x69
 
@@ -82,6 +83,9 @@
 /* DEC implemented cores */
 #define ARM_CPU_PART_SA1100		0x4400a110
 
+/* Broadcom implemented cores */
+#define ARM_CPU_PART_BRAHMA_B15		0x420000f0
+
 /* Intel implemented cores */
 #define ARM_CPU_PART_SA1110		0x6900b110
 #define ARM_CPU_REV_SA1110_A0		0
diff --git a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
index 47c1ae4e3041..0cf3e497f988 100644
--- a/arch/arm/mm/proc-v7.S
+++ b/arch/arm/mm/proc-v7.S
@@ -159,7 +159,7 @@ ENDPROC(cpu_v7_do_resume)
 #endif
 
 /*
- * Cortex-A8/A12/A15/A17 that require a BTB invalidation on switch_mm
+ * Cortex-A8/A12/A15/A17, Brahma-B15 that require a BTB invalidation on switch_mm
  */
 	globl_equ	cpu_v7_btbinv_proc_init,	cpu_v7_proc_init
 	globl_equ	cpu_v7_btbinv_proc_fin,		cpu_v7_proc_fin
@@ -678,7 +678,7 @@ __v7_ca15mp_proc_info:
 __v7_b15mp_proc_info:
 	.long	0x420f00f0
 	.long	0xff0ffff0
-	__v7_proc __v7_b15mp_proc_info, __v7_b15mp_setup, cache_fns = b15_cache_fns
+	__v7_proc __v7_b15mp_proc_info, __v7_b15mp_setup, cache_fns = b15_cache_fns, proc_fns = v7_btbinv_processor_functions
 	.size	__v7_b15mp_proc_info, . - __v7_b15mp_proc_info
 
 	/*
-- 
2.14.1

^ permalink raw reply related

* [PATCH 2/2] ARM: Invalidate BTB on fatal signal for Brahma-B15
From: Florian Fainelli @ 2018-01-06 18:49 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180106120907.26701-3-marc.zyngier@arm.com>

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
---
 arch/arm/mm/fault.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index 1a1c2638f528..fd840a7483aa 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -188,6 +188,7 @@ __do_user_fault(struct task_struct *tsk, unsigned long addr,
 	case ARM_CPU_PART_CORTEX_A12:
 	case ARM_CPU_PART_CORTEX_A15:
 	case ARM_CPU_PART_CORTEX_A17:
+	case ARM_CPU_PART_BRAHMA_B15:
 		write_sysreg(0, BPIALL);
 		break;
 	}
-- 
2.14.1

^ permalink raw reply related

* [PATCH 0/3] ARM branch predictor hardening
From: Florian Fainelli @ 2018-01-06 18:50 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180106120907.26701-1-marc.zyngier@arm.com>

Hi Marc,

Le 01/06/18 ? 04:09, Marc Zyngier a ?crit?:
> This small series implements some basic BP hardening by invalidating
> the BTB on CPUs that are known to be susceptible to aliasing attacks.
> 
> These patches are closely modelled against what we do on arm64,
> although simpler as we can rely on an architected instruction to
> perform the invalidation.
> 
> The first patch reuses the Cortex-A8 BTB invalidation in switch_mm and
> generalises it to be used on all affected CPUs. The second perform the
> same invalidation on fatal signal delivery. The last one nukes it on
> guest exit, and results in some major surgery (kudos to Dimitris
> Papastamos who came up with the magic vector decoding sequence).
> 
> Note that that M-class CPUs are not affected and for R-class cores,
> the mitigation doesn't make much sense since we do not enforce
> user/kernel isolation.

Broadcom's Brahma-B15 CPUs are also affected, I can either send an
incremental patch on top of this series once it lands in, or since it
looks like you are going to respin a v2, feel free to incorporate the
changes I sent as replies to patch 1 and 2.

What about P4JB and Krait, should they also be covered?

Even though I am assuming -stable maintainers will quickly pick those
changes, should there be an explicit mention of CVE-2017-5715?


Thanks!

> 
> Marc Zyngier (3):
>   arm: Add BTB invalidation on switch_mm for Cortex-A9, A12, A15 and A17
>   arm: Invalidate BTB on fatal signal for Cortex A8, A9, A12, A15 and
>     A17
>   arm: KVM: Invalidate BTB on guest exit
> 
>  arch/arm/include/asm/cp15.h  |  2 ++
>  arch/arm/kvm/hyp/hyp-entry.S | 74 +++++++++++++++++++++++++++++++++++++-------
>  arch/arm/mm/fault.c          | 11 +++++++
>  arch/arm/mm/proc-v7-2level.S |  4 +--
>  arch/arm/mm/proc-v7-3level.S |  6 ++++
>  arch/arm/mm/proc-v7.S        | 32 +++++++++----------
>  6 files changed, 100 insertions(+), 29 deletions(-)
> 


-- 
Florian

^ permalink raw reply

* [PATCH v2 0/2] ARM: davinici: move watchdog restart from mach to drivers
From: David Lechner @ 2018-01-07  3:10 UTC (permalink / raw)
  To: linux-arm-kernel

This series moves the watchdog restart code from arch/arm/mach-davinci
to drivers/watchdog.

Tested working on LEGO MINDSTORMS EV3 (TI AM1808 processor).

v2 changes:
* rebased on linux-davinci/master (fixed conflict with clock.h)

There is also still the unresolved question from Sekhar:

> Hi Wim,
> 
> How do you want to handle this series? Patch 2/2 definitely needs to go
> through my tree as it will clash with other code I am queuing.
> 
> I can either take 1/2 also through ARM-SoC with your ack (preferred) or
> if you give me an immutable commit/tag over v4.15-rc1, I can merge that
> to preserve bisect-ability.

David Lechner (2):
  watchdog: davinci_wdt: add restart function
  ARM: davinci: remove watchdog reset

 arch/arm/mach-davinci/board-da830-evm.c     |  1 -
 arch/arm/mach-davinci/board-da850-evm.c     |  1 -
 arch/arm/mach-davinci/board-dm355-evm.c     |  1 -
 arch/arm/mach-davinci/board-dm355-leopard.c |  1 -
 arch/arm/mach-davinci/board-dm365-evm.c     |  1 -
 arch/arm/mach-davinci/board-dm644x-evm.c    |  1 -
 arch/arm/mach-davinci/board-dm646x-evm.c    |  2 -
 arch/arm/mach-davinci/board-mityomapl138.c  |  1 -
 arch/arm/mach-davinci/board-neuros-osd2.c   |  1 -
 arch/arm/mach-davinci/board-omapl138-hawk.c |  1 -
 arch/arm/mach-davinci/board-sffsdr.c        |  1 -
 arch/arm/mach-davinci/clock.h               |  3 --
 arch/arm/mach-davinci/da8xx-dt.c            |  1 -
 arch/arm/mach-davinci/devices-da8xx.c       | 13 -------
 arch/arm/mach-davinci/devices.c             |  7 +---
 arch/arm/mach-davinci/include/mach/common.h |  1 -
 arch/arm/mach-davinci/include/mach/da8xx.h  |  1 -
 arch/arm/mach-davinci/time.c                | 57 -----------------------------
 drivers/watchdog/davinci_wdt.c              | 38 +++++++++++++++++++
 19 files changed, 39 insertions(+), 94 deletions(-)

-- 
2.7.4

^ permalink raw reply

* [PATCH v2 1/2] watchdog: davinci_wdt: add restart function
From: David Lechner @ 2018-01-07  3:10 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1515294615-5473-1-git-send-email-david@lechnology.com>

This adds a restart function to the davinci watchdog timer driver.

This is copied from arch/arm/mach-davinci/time.c and will allow us to
remove the code from there.

Signed-off-by: David Lechner <david@lechnology.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
---
 drivers/watchdog/davinci_wdt.c | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/drivers/watchdog/davinci_wdt.c b/drivers/watchdog/davinci_wdt.c
index 2f46487..3e4c592 100644
--- a/drivers/watchdog/davinci_wdt.c
+++ b/drivers/watchdog/davinci_wdt.c
@@ -140,6 +140,42 @@ static unsigned int davinci_wdt_get_timeleft(struct watchdog_device *wdd)
 	return wdd->timeout - timer_counter;
 }
 
+static int davinci_wdt_restart(struct watchdog_device *wdd,
+			       unsigned long action, void *data)
+{
+	struct davinci_wdt_device *davinci_wdt = watchdog_get_drvdata(wdd);
+	u32 tgcr, wdtcr;
+
+	/* disable, internal clock source */
+	iowrite32(0, davinci_wdt->base + TCR);
+
+	/* reset timer, set mode to 64-bit watchdog, and unreset */
+	tgcr = 0;
+	iowrite32(tgcr, davinci_wdt->base + TGCR);
+	tgcr = TIMMODE_64BIT_WDOG | TIM12RS_UNRESET | TIM34RS_UNRESET;
+	iowrite32(tgcr, davinci_wdt->base + TGCR);
+
+	/* clear counter and period regs */
+	iowrite32(0, davinci_wdt->base + TIM12);
+	iowrite32(0, davinci_wdt->base + TIM34);
+	iowrite32(0, davinci_wdt->base + PRD12);
+	iowrite32(0, davinci_wdt->base + PRD34);
+
+	/* put watchdog in pre-active state */
+	wdtcr = WDKEY_SEQ0 | WDEN;
+	iowrite32(wdtcr, davinci_wdt->base + WDTCR);
+
+	/* put watchdog in active state */
+	wdtcr = WDKEY_SEQ1 | WDEN;
+	iowrite32(wdtcr, davinci_wdt->base + WDTCR);
+
+	/* write an invalid value to the WDKEY field to trigger a restart */
+	wdtcr = 0x00004000;
+	iowrite32(wdtcr, davinci_wdt->base + WDTCR);
+
+	return 0;
+}
+
 static const struct watchdog_info davinci_wdt_info = {
 	.options = WDIOF_KEEPALIVEPING,
 	.identity = "DaVinci/Keystone Watchdog",
@@ -151,6 +187,7 @@ static const struct watchdog_ops davinci_wdt_ops = {
 	.stop		= davinci_wdt_ping,
 	.ping		= davinci_wdt_ping,
 	.get_timeleft	= davinci_wdt_get_timeleft,
+	.restart	= davinci_wdt_restart,
 };
 
 static int davinci_wdt_probe(struct platform_device *pdev)
@@ -195,6 +232,7 @@ static int davinci_wdt_probe(struct platform_device *pdev)
 
 	watchdog_set_drvdata(wdd, davinci_wdt);
 	watchdog_set_nowayout(wdd, 1);
+	watchdog_set_restart_priority(wdd, 128);
 
 	wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	davinci_wdt->base = devm_ioremap_resource(dev, wdt_mem);
-- 
2.7.4

^ permalink raw reply related

* [PATCH v2 2/2] ARM: davinci: remove watchdog reset
From: David Lechner @ 2018-01-07  3:10 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1515294615-5473-1-git-send-email-david@lechnology.com>

This removes the watchdog reset code. The reset has been moved to
drivers/watchdog/davinci_wdt.c. The watchdog driver registers the reset
with the kernel so defining a reset for each machine is no longer needed.

Signed-off-by: David Lechner <david@lechnology.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
---
 arch/arm/mach-davinci/board-da830-evm.c     |  1 -
 arch/arm/mach-davinci/board-da850-evm.c     |  1 -
 arch/arm/mach-davinci/board-dm355-evm.c     |  1 -
 arch/arm/mach-davinci/board-dm355-leopard.c |  1 -
 arch/arm/mach-davinci/board-dm365-evm.c     |  1 -
 arch/arm/mach-davinci/board-dm644x-evm.c    |  1 -
 arch/arm/mach-davinci/board-dm646x-evm.c    |  2 -
 arch/arm/mach-davinci/board-mityomapl138.c  |  1 -
 arch/arm/mach-davinci/board-neuros-osd2.c   |  1 -
 arch/arm/mach-davinci/board-omapl138-hawk.c |  1 -
 arch/arm/mach-davinci/board-sffsdr.c        |  1 -
 arch/arm/mach-davinci/clock.h               |  3 --
 arch/arm/mach-davinci/da8xx-dt.c            |  1 -
 arch/arm/mach-davinci/devices-da8xx.c       | 13 -------
 arch/arm/mach-davinci/devices.c             |  7 +---
 arch/arm/mach-davinci/include/mach/common.h |  1 -
 arch/arm/mach-davinci/include/mach/da8xx.h  |  1 -
 arch/arm/mach-davinci/time.c                | 57 -----------------------------
 18 files changed, 1 insertion(+), 94 deletions(-)

diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index f673cd7..a58bfca 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -642,5 +642,4 @@ MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
 	.init_machine	= da830_evm_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= da8xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index cbde003..6039ec1 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -1485,6 +1485,5 @@ MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
 	.init_machine	= da850_evm_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= da8xx_restart,
 	.reserve	= da8xx_rproc_reserve_cma,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c
index 62e7bc3..d60d998 100644
--- a/arch/arm/mach-davinci/board-dm355-evm.c
+++ b/arch/arm/mach-davinci/board-dm355-evm.c
@@ -420,5 +420,4 @@ MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
 	.init_machine = dm355_evm_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= davinci_restart,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c
index be99724..1e7e9b8 100644
--- a/arch/arm/mach-davinci/board-dm355-leopard.c
+++ b/arch/arm/mach-davinci/board-dm355-leopard.c
@@ -275,5 +275,4 @@ MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
 	.init_machine = dm355_leopard_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= davinci_restart,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index e75741f..17b2c29 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -778,6 +778,5 @@ MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
 	.init_machine	= dm365_evm_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= davinci_restart,
 MACHINE_END
 
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c
index b07c9b1..5e1afc2 100644
--- a/arch/arm/mach-davinci/board-dm644x-evm.c
+++ b/arch/arm/mach-davinci/board-dm644x-evm.c
@@ -821,5 +821,4 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
 	.init_machine = davinci_evm_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= davinci_restart,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c
index cb0a41e..003bbe5 100644
--- a/arch/arm/mach-davinci/board-dm646x-evm.c
+++ b/arch/arm/mach-davinci/board-dm646x-evm.c
@@ -801,7 +801,6 @@ MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
 	.init_machine = evm_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= davinci_restart,
 MACHINE_END
 
 MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
@@ -812,6 +811,5 @@ MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
 	.init_machine = evm_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= davinci_restart,
 MACHINE_END
 
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index b73ce7b..0b23cf3 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -574,5 +574,4 @@ MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
 	.init_machine	= mityomapl138_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= da8xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c
index 0c02aaa..1e27baa 100644
--- a/arch/arm/mach-davinci/board-neuros-osd2.c
+++ b/arch/arm/mach-davinci/board-neuros-osd2.c
@@ -231,5 +231,4 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
 	.init_machine = davinci_ntosd2_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= davinci_restart,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
index a3e7807..88ab45c 100644
--- a/arch/arm/mach-davinci/board-omapl138-hawk.c
+++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
@@ -338,6 +338,5 @@ MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
 	.init_machine	= omapl138_hawk_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= da8xx_restart,
 	.reserve	= da8xx_rproc_reserve_cma,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c
index d85accf..1f02d4e 100644
--- a/arch/arm/mach-davinci/board-sffsdr.c
+++ b/arch/arm/mach-davinci/board-sffsdr.c
@@ -154,5 +154,4 @@ MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
 	.init_machine = davinci_sffsdr_init,
 	.init_late	= davinci_init_late,
 	.dma_zone_size	= SZ_128M,
-	.restart	= davinci_restart,
 MACHINE_END
diff --git a/arch/arm/mach-davinci/clock.h b/arch/arm/mach-davinci/clock.h
index fa2b837..d7894d5 100644
--- a/arch/arm/mach-davinci/clock.h
+++ b/arch/arm/mach-davinci/clock.h
@@ -135,9 +135,6 @@ int davinci_clk_reset(struct clk *clk, bool reset);
 void davinci_clk_enable(struct clk *clk);
 void davinci_clk_disable(struct clk *clk);
 
-extern struct platform_device davinci_wdt_device;
-extern void davinci_watchdog_reset(struct platform_device *);
-
 #endif
 
 #endif
diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
index f06db67..779e8ce 100644
--- a/arch/arm/mach-davinci/da8xx-dt.c
+++ b/arch/arm/mach-davinci/da8xx-dt.c
@@ -100,7 +100,6 @@ DT_MACHINE_START(DA850_DT, "Generic DA850/OMAP-L138/AM18x")
 	.init_machine	= da850_init_machine,
 	.dt_compat	= da850_boards_compat,
 	.init_late	= davinci_init_late,
-	.restart	= da8xx_restart,
 MACHINE_END
 
 #endif
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index e1c40e7..fe5e15a 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -371,19 +371,6 @@ static struct platform_device da8xx_wdt_device = {
 	.resource	= da8xx_watchdog_resources,
 };
 
-void da8xx_restart(enum reboot_mode mode, const char *cmd)
-{
-	struct device *dev;
-
-	dev = bus_find_device_by_name(&platform_bus_type, NULL, "davinci-wdt");
-	if (!dev) {
-		pr_err("%s: failed to find watchdog device\n", __func__);
-		return;
-	}
-
-	davinci_watchdog_reset(to_platform_device(dev));
-}
-
 int __init da8xx_register_watchdog(void)
 {
 	return platform_device_register(&da8xx_wdt_device);
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index 3ae70f2..0edda40 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -282,18 +282,13 @@ static struct resource wdt_resources[] = {
 	},
 };
 
-struct platform_device davinci_wdt_device = {
+static struct platform_device davinci_wdt_device = {
 	.name		= "davinci-wdt",
 	.id		= -1,
 	.num_resources	= ARRAY_SIZE(wdt_resources),
 	.resource	= wdt_resources,
 };
 
-void davinci_restart(enum reboot_mode mode, const char *cmd)
-{
-	davinci_watchdog_reset(&davinci_wdt_device);
-}
-
 int davinci_init_wdt(void)
 {
 	return platform_device_register(&davinci_wdt_device);
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index 433a008..19b9346 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -81,7 +81,6 @@ extern struct davinci_soc_info davinci_soc_info;
 
 extern void davinci_common_init(const struct davinci_soc_info *soc_info);
 extern void davinci_init_ide(void);
-void davinci_restart(enum reboot_mode mode, const char *cmd);
 void davinci_init_late(void);
 
 #ifdef CONFIG_DAVINCI_RESET_CLOCKS
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index 93ff156..751d2ac 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -118,7 +118,6 @@ int da850_register_vpif_display
 			(struct vpif_display_config *display_config);
 int da850_register_vpif_capture
 			(struct vpif_capture_config *capture_config);
-void da8xx_restart(enum reboot_mode mode, const char *cmd);
 void da8xx_rproc_reserve_cma(void);
 int da8xx_register_rproc(void);
 int da850_register_gpio(void);
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 034f865..1bb991a 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -80,13 +80,6 @@ enum {
 #define TGCR_UNRESET                 0x1
 #define TGCR_RESET_MASK              0x3
 
-#define WDTCR_WDEN_SHIFT             14
-#define WDTCR_WDEN_DISABLE           0x0
-#define WDTCR_WDEN_ENABLE            0x1
-#define WDTCR_WDKEY_SHIFT            16
-#define WDTCR_WDKEY_SEQ0             0xa5c6
-#define WDTCR_WDKEY_SEQ1             0xda7e
-
 struct timer_s {
 	char *name;
 	unsigned int id;
@@ -409,53 +402,3 @@ void __init davinci_timer_init(void)
 	for (i=0; i< ARRAY_SIZE(timers); i++)
 		timer32_config(&timers[i]);
 }
-
-/* reset board using watchdog timer */
-void davinci_watchdog_reset(struct platform_device *pdev)
-{
-	u32 tgcr, wdtcr;
-	void __iomem *base;
-	struct clk *wd_clk;
-
-	base = ioremap(pdev->resource[0].start, SZ_4K);
-	if (WARN_ON(!base))
-		return;
-
-	wd_clk = clk_get(&pdev->dev, NULL);
-	if (WARN_ON(IS_ERR(wd_clk)))
-		return;
-	clk_prepare_enable(wd_clk);
-
-	/* disable, internal clock source */
-	__raw_writel(0, base + TCR);
-
-	/* reset timer, set mode to 64-bit watchdog, and unreset */
-	tgcr = 0;
-	__raw_writel(tgcr, base + TGCR);
-	tgcr = TGCR_TIMMODE_64BIT_WDOG << TGCR_TIMMODE_SHIFT;
-	tgcr |= (TGCR_UNRESET << TGCR_TIM12RS_SHIFT) |
-		(TGCR_UNRESET << TGCR_TIM34RS_SHIFT);
-	__raw_writel(tgcr, base + TGCR);
-
-	/* clear counter and period regs */
-	__raw_writel(0, base + TIM12);
-	__raw_writel(0, base + TIM34);
-	__raw_writel(0, base + PRD12);
-	__raw_writel(0, base + PRD34);
-
-	/* put watchdog in pre-active state */
-	wdtcr = __raw_readl(base + WDTCR);
-	wdtcr = (WDTCR_WDKEY_SEQ0 << WDTCR_WDKEY_SHIFT) |
-		(WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT);
-	__raw_writel(wdtcr, base + WDTCR);
-
-	/* put watchdog in active state */
-	wdtcr = (WDTCR_WDKEY_SEQ1 << WDTCR_WDKEY_SHIFT) |
-		(WDTCR_WDEN_ENABLE << WDTCR_WDEN_SHIFT);
-	__raw_writel(wdtcr, base + WDTCR);
-
-	/* write an invalid value to the WDKEY field to trigger
-	 * a watchdog reset */
-	wdtcr = 0x00004000;
-	__raw_writel(wdtcr, base + WDTCR);
-}
-- 
2.7.4

^ permalink raw reply related

* [PATCH 0/3] ARM: da8xx: remove con_id from USB clocks
From: David Lechner @ 2018-01-07  3:19 UTC (permalink / raw)
  To: linux-arm-kernel

This series removes unnecessary con_ids on da8xx USB clocks in preparation
of adding device tree support for clocks on this platform.

Note: this is a resend  of "USB: musb: da8xx: remove clock con_id" and
"USB: ohci: da8xx: remove clk con_id". I sent them before I realized that
things break if you don't also remove the con_id when registering the
clkdev. :-/

David Lechner (3):
  USB: musb: da8xx: remove clock con_id
  USB: ohci: da8xx: remove clk con_id
  ARM: da8xx: remove con_id from USB clocks

 arch/arm/mach-davinci/da830.c | 4 ++--
 arch/arm/mach-davinci/da850.c | 4 ++--
 drivers/usb/host/ohci-da8xx.c | 2 +-
 drivers/usb/musb/da8xx.c      | 2 +-
 4 files changed, 6 insertions(+), 6 deletions(-)

-- 
2.7.4

^ permalink raw reply

* [PATCH 1/3] USB: musb: da8xx: remove clock con_id
From: David Lechner @ 2018-01-07  3:19 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1515295192-17883-1-git-send-email-david@lechnology.com>

There is only one clock for the DA8xx MUSB device, so we don't need the
con_id, so remove it. This way we don't have to add an unnecessary
property to the device tree bindings for the clock.

Signed-off-by: David Lechner <david@lechnology.com>
---
 drivers/usb/musb/da8xx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c
index 6c036de..b8295ce 100644
--- a/drivers/usb/musb/da8xx.c
+++ b/drivers/usb/musb/da8xx.c
@@ -520,7 +520,7 @@ static int da8xx_probe(struct platform_device *pdev)
 	if (!glue)
 		return -ENOMEM;
 
-	clk = devm_clk_get(&pdev->dev, "usb20");
+	clk = devm_clk_get(&pdev->dev, NULL);
 	if (IS_ERR(clk)) {
 		dev_err(&pdev->dev, "failed to get clock\n");
 		return PTR_ERR(clk);
-- 
2.7.4

^ permalink raw reply related

* [PATCH 2/3] USB: ohci: da8xx: remove clk con_id
From: David Lechner @ 2018-01-07  3:19 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1515295192-17883-1-git-send-email-david@lechnology.com>

The ohci-da8xx device only has one clock, so a con_id is not needed, so
remove it. This way we don't have to add an unnecessary property to the
device tree bindings for the clock.

Signed-off-by: David Lechner <david@lechnology.com>
---
 drivers/usb/host/ohci-da8xx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/host/ohci-da8xx.c b/drivers/usb/host/ohci-da8xx.c
index 0c507a0..a55cbba 100644
--- a/drivers/usb/host/ohci-da8xx.c
+++ b/drivers/usb/host/ohci-da8xx.c
@@ -413,7 +413,7 @@ static int ohci_da8xx_probe(struct platform_device *pdev)
 	da8xx_ohci = to_da8xx_ohci(hcd);
 	da8xx_ohci->hcd = hcd;
 
-	da8xx_ohci->usb11_clk = devm_clk_get(&pdev->dev, "usb11");
+	da8xx_ohci->usb11_clk = devm_clk_get(&pdev->dev, NULL);
 	if (IS_ERR(da8xx_ohci->usb11_clk)) {
 		error = PTR_ERR(da8xx_ohci->usb11_clk);
 		if (error != -EPROBE_DEFER)
-- 
2.7.4

^ permalink raw reply related

* [PATCH 3/3] ARM: da8xx: remove con_id from USB clocks
From: David Lechner @ 2018-01-07  3:19 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <1515295192-17883-1-git-send-email-david@lechnology.com>

There is only one clock each for "musb-da8xx" and "ohci-da8xx", so we
do not the the con_id. Removing them  will also prevent needing an
unnecessary device tree property when device tree bindings are added
for clocks.

Signed-off-by: David Lechner <david@lechnology.com>
---
 arch/arm/mach-davinci/da830.c | 4 ++--
 arch/arm/mach-davinci/da850.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index ed0b700..57ab18c 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -417,7 +417,7 @@ static struct clk_lookup da830_clks[] = {
 	CLK("davinci-mcasp.0",	NULL,		&mcasp0_clk),
 	CLK("davinci-mcasp.1",	NULL,		&mcasp1_clk),
 	CLK("davinci-mcasp.2",	NULL,		&mcasp2_clk),
-	CLK("musb-da8xx",	"usb20",	&usb20_clk),
+	CLK("musb-da8xx",	NULL,		&usb20_clk),
 	CLK("cppi41-dmaengine",	NULL,		&cppi41_clk),
 	CLK(NULL,		"aemif",	&aemif_clk),
 	CLK(NULL,		"aintc",	&aintc_clk),
@@ -426,7 +426,7 @@ static struct clk_lookup da830_clks[] = {
 	CLK("davinci_mdio.0",   "fck",          &emac_clk),
 	CLK(NULL,		"gpio",		&gpio_clk),
 	CLK("i2c_davinci.2",	NULL,		&i2c1_clk),
-	CLK("ohci-da8xx",	"usb11",	&usb11_clk),
+	CLK("ohci-da8xx",	NULL,	&usb11_clk),
 	CLK(NULL,		"emif3",	&emif3_clk),
 	CLK(NULL,		"arm",		&arm_clk),
 	CLK(NULL,		"rmii",		&rmii_clk),
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index 04a58a3..aa37cbd 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -563,8 +563,8 @@ static struct clk_lookup da850_clks[] = {
 	CLK("da830-mmc.1",	NULL,		&mmcsd1_clk),
 	CLK("ti-aemif",		NULL,		&aemif_clk),
 	CLK("davinci-nand.0",	"aemif",	&aemif_nand_clk),
-	CLK("ohci-da8xx",	"usb11",	&usb11_clk),
-	CLK("musb-da8xx",	"usb20",	&usb20_clk),
+	CLK("ohci-da8xx",	NULL,		&usb11_clk),
+	CLK("musb-da8xx",	NULL,		&usb20_clk),
 	CLK("cppi41-dmaengine",	NULL,		&cppi41_clk),
 	CLK("spi_davinci.0",	NULL,		&spi0_clk),
 	CLK("spi_davinci.1",	NULL,		&spi1_clk),
-- 
2.7.4

^ permalink raw reply related

* [PATCH 3/7] ARM: dts: imx6ull: add additional pinfunc defines for i.MX 6ULL
From: Stefan Agner @ 2018-01-07  9:52 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180105164930.qomk75eo7vzyglvn@rob-hp-laptop>

On 2018-01-05 17:49, Rob Herring wrote:
> On Tue, Jan 02, 2018 at 05:42:19PM +0100, Stefan Agner wrote:
>> From: Bai Ping <ping.bai@nxp.com>
>>
>> On i.MX 6ULL, the pin MUX and CTRL register of BOOT_MODEx and TAMPERx
>> pins are available through IOMUXC_SNVS. Add additional pinfunc defines.
>>
>> Signed-off-by: Bai Ping <ping.bai@nxp.com>
>> Signed-off-by: Stefan Agner <stefan@agner.ch>
>> ---
>>  arch/arm/boot/dts/imx6ull-pinfunc-snvs.h | 29 +++++++++++++++++++++++++++++
>>  arch/arm/boot/dts/imx6ull.dtsi           |  1 +
>>  2 files changed, 30 insertions(+)
>>  create mode 100644 arch/arm/boot/dts/imx6ull-pinfunc-snvs.h
>>
>> diff --git a/arch/arm/boot/dts/imx6ull-pinfunc-snvs.h b/arch/arm/boot/dts/imx6ull-pinfunc-snvs.h
>> new file mode 100644
>> index 000000000000..da3f412e4269
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/imx6ull-pinfunc-snvs.h
>> @@ -0,0 +1,29 @@
>> +/*
>> + * Copyright (C) 2016 Freescale Semiconductor, Inc.
> 
> It's 2018 now.
> 

I don't think you are supposed to chance copyright year unless you
change it significantly.

At least that article suggests so:
https://www.copyrightlaws.com/copyright-notice-year/

I took that patch from the downstream NXP kernel, so I guess 2016 was
the year of first publication...

>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
> 
> Use SPDX. With that,

Agreed.

> 
> Reviewed-by: Rob Herring <robh@kernel.org>

--
Stefan

^ permalink raw reply

* [PATCH] ARM: dts: exynos: fix RTC interrupt for exynos5410
From: Krzysztof Kozlowski @ 2018-01-07 10:05 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20171221213020.3080361-1-arnd@arndb.de>

On Thu, Dec 21, 2017 at 10:30:07PM +0100, Arnd Bergmann wrote:
> According to the comment added to exynos_dt_pmu_match[] in commit
> 8b283c025443 ("ARM: exynos4/5: convert pmu wakeup to stacked domains"),
> the RTC is not able to wake up the system through the PMU on Exynos5410,
> unlike Exynos5420.
> 
> However, when the RTC DT node got added, it was a straight copy of
> the Exynos5420 node, which now causes a warning from dtc.
> 
> This removes the incorrect interrupt-parent, which should get the
> interrupt working and avoid the warning.
> 
> Fixes: e1e146b1b062 ("ARM: dts: exynos: Add RTC and I2C to Exynos5410")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  arch/arm/boot/dts/exynos5410.dtsi | 1 -
>  1 file changed, 1 deletion(-)
>

I reverted my commit [1] and applied yours. What is interesting... RTC
works fine in any combination (so even routing interrupts through
non-interrupt-controller PMU).

Best regards,
Krzysztof


[1] https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git/commit/?h=next/dt&id=6737b081409a4373e9d02c75aea7b916481e31b5

^ permalink raw reply

* [PATCH] Revert "ARM: dts: exynos: Add missing interrupt-controller properties to Exynos5410 PMU"
From: Krzysztof Kozlowski @ 2018-01-07 10:17 UTC (permalink / raw)
  To: linux-arm-kernel

This reverts commit 6737b081409a4373e9d02c75aea7b916481e31b5.

Unlike on Exynos5420-family, on Exynos5410 the PMU is not an interrupt
controller so it should not handle interrupts of RTC.  The DTC warning
(addressed by mentioned commit) should be fixed by not routing RTC
interrupts to PMU.

Reported-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/boot/dts/exynos5410.dtsi | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/arch/arm/boot/dts/exynos5410.dtsi b/arch/arm/boot/dts/exynos5410.dtsi
index 375b73015ee4..83641ad0d8f2 100644
--- a/arch/arm/boot/dts/exynos5410.dtsi
+++ b/arch/arm/boot/dts/exynos5410.dtsi
@@ -72,9 +72,6 @@
 			clock-names = "clkout16";
 			clocks = <&fin_pll>;
 			#clock-cells = <1>;
-			interrupt-controller;
-			#interrupt-cells = <3>;
-			interrupt-parent = <&gic>;
 		};
 
 		clock: clock-controller at 10010000 {
-- 
2.11.0

^ permalink raw reply related

* soc: imx: gpcv2: removing and probing fails
From: Stefan Agner @ 2018-01-07 10:48 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Andrew,

I noticed that the driver fails when removing and probing again. As far
as I can see due to duplicate add of the platform devices.

As far as I can tell the driver should register the remove callback and
do a platform_device_unregister on the newly created platform devices.
However, as far as I can tell we don't hold on to a reference to them...
I guess we could keep references in imx_gpcv2_probe, but maybe there is
an easier way?

This can be reproduced by using:
CONFIG_DEBUG_TEST_DRIVER_REMOVE=y

The full stack trace:

[    0.673113] ------------[ cut here ]------------
[    0.676786] WARNING: CPU: 0 PID: 1 at fs/sysfs/dir.c:31
sysfs_warn_dup+0x64/0x74
[    0.686186] sysfs: cannot create duplicate filename
'/devices/platform/soc/30000000.aips-bus/303a0000.gpc/imx7-pgc-domain.1'
[    0.698594] Modules linked in:
[    0.700783] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
4.15.0-rc3-00027-g3b196a7dd3bd-dirty #220
[    0.711659] Hardware name: Freescale i.MX7 Dual (Device Tree)
[    0.716746] [<8010f55c>] (unwind_backtrace) from [<8010b8e4>]
(show_stack+0x10/0x14)
[    0.726785] [<8010b8e4>] (show_stack) from [<80830124>]
(dump_stack+0x88/0x9c)
[    0.735813] [<80830124>] (dump_stack) from [<8011e58c>]
(__warn+0xdc/0xf4)
[    0.742232] [<8011e58c>] (__warn) from [<8011e5dc>]
(warn_slowpath_fmt+0x38/0x48)
[    0.752034] [<8011e5dc>] (warn_slowpath_fmt) from [<80276600>]
(sysfs_warn_dup+0x64/0x74)
[    0.762167] [<80276600>] (sysfs_warn_dup) from [<802766d8>]
(sysfs_create_dir_ns+0x84/0x90)
[    0.772513] [<802766d8>] (sysfs_create_dir_ns) from [<80834660>]
(kobject_add_internal+0xb4/0x30c)
[    0.783562] [<80834660>] (kobject_add_internal) from [<80834904>]
(kobject_add+0x4c/0x9c)
[    0.793846] [<80834904>] (kobject_add) from [<8050bdd0>]
(device_add+0xe0/0x594)
[    0.803418] [<8050bdd0>] (device_add) from [<80510178>]
(platform_device_add+0x110/0x224)
[    0.813805] [<80510178>] (platform_device_add) from [<8049bfa0>]
(imx_gpcv2_probe+0xdc/0x1f8)
[    0.824592] [<8049bfa0>] (imx_gpcv2_probe) from [<80510364>]
(platform_drv_probe+0x50/0xac)
[    0.835264] [<80510364>] (platform_drv_probe) from [<8050e9ac>]
(driver_probe_device+0x1b4/0x3c8)
[    0.846525] [<8050e9ac>] (driver_probe_device) from [<8050ec64>]
(__driver_attach+0xa4/0xa8)
[    0.857356] [<8050ec64>] (__driver_attach) from [<8050cd88>]
(bus_for_each_dev+0x4c/0x9c)
[    0.867935] [<8050cd88>] (bus_for_each_dev) from [<8050df40>]
(bus_add_driver+0x188/0x20c)
[    0.878650] [<8050df40>] (bus_add_driver) from [<8050f554>]
(driver_register+0x78/0xf4)
[    0.889101] [<8050f554>] (driver_register) from [<80101a5c>]
(do_one_initcall+0x44/0x168)
[    0.899733] [<80101a5c>] (do_one_initcall) from [<80c00db8>]
(kernel_init_freeable+0x14c/0x1d8)
[    0.910899] [<80c00db8>] (kernel_init_freeable) from [<80842638>]
(kernel_init+0x8/0x10c)
[    0.921529] [<80842638>] (kernel_init) from [<80107988>]
(ret_from_fork+0x14/0x2c)
[    0.931569] ---[ end trace 27014f64d1c1710e ]---
[    0.935967] ------------[ cut here ]------------
[    0.940537] WARNING: CPU: 0 PID: 1 at lib/kobject.c:240
kobject_add_internal+0x278/0x30c
[    0.951181] kobject_add_internal failed for imx7-pgc-domain.1 with
-EEXIST, don't try to register things with the same name in the same
directory.
[    0.966666] Modules linked in:
[    0.969363] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W       
4.15.0-rc3-00027-g3b196a7dd3bd-dirty #220
[    0.981886] Hardware name: Freescale i.MX7 Dual (Device Tree)
[    0.987266] [<8010f55c>] (unwind_backtrace) from [<8010b8e4>]
(show_stack+0x10/0x14)
[    0.997423] [<8010b8e4>] (show_stack) from [<80830124>]
(dump_stack+0x88/0x9c)
[    1.006649] [<80830124>] (dump_stack) from [<8011e58c>]
(__warn+0xdc/0xf4)
[    1.013159] [<8011e58c>] (__warn) from [<8011e5dc>]
(warn_slowpath_fmt+0x38/0x48)
[    1.022994] [<8011e5dc>] (warn_slowpath_fmt) from [<80834824>]
(kobject_add_internal+0x278/0x30c)
[    1.033847] [<80834824>] (kobject_add_internal) from [<80834904>]
(kobject_add+0x4c/0x9c)
[    1.043990] [<80834904>] (kobject_add) from [<8050bdd0>]
(device_add+0xe0/0x594)
[    1.053333] [<8050bdd0>] (device_add) from [<80510178>]
(platform_device_add+0x110/0x224)
[    1.063508] [<80510178>] (platform_device_add) from [<8049bfa0>]
(imx_gpcv2_probe+0xdc/0x1f8)
[    1.074202] [<8049bfa0>] (imx_gpcv2_probe) from [<80510364>]
(platform_drv_probe+0x50/0xac)
[    1.084735] [<80510364>] (platform_drv_probe) from [<8050e9ac>]
(driver_probe_device+0x1b4/0x3c8)
[    1.095818] [<8050e9ac>] (driver_probe_device) from [<8050ec64>]
(__driver_attach+0xa4/0xa8)
[    1.106556] [<8050ec64>] (__driver_attach) from [<8050cd88>]
(bus_for_each_dev+0x4c/0x9c)
[    1.117104] [<8050cd88>] (bus_for_each_dev) from [<8050df40>]
(bus_add_driver+0x188/0x20c)
[    1.127752] [<8050df40>] (bus_add_driver) from [<8050f554>]
(driver_register+0x78/0xf4)
[    1.138150] [<8050f554>] (driver_register) from [<80101a5c>]
(do_one_initcall+0x44/0x168)
[    1.148780] [<80101a5c>] (do_one_initcall) from [<80c00db8>]
(kernel_init_freeable+0x14c/0x1d8)
[    1.159946] [<80c00db8>] (kernel_init_freeable) from [<80842638>]
(kernel_init+0x8/0x10c)
[    1.170577] [<80842638>] (kernel_init) from [<80107988>]
(ret_from_fork+0x14/0x2c)
[    1.180607] ---[ end trace 27014f64d1c1710f ]---
[    1.185014] ------------[ cut here ]------------
[    1.189571] Kernel BUG at 5168736d [verbose debug info unavailable]
[    1.195868] Internal error: Oops - BUG: 0 [#1] SMP ARM
[    1.200985] Modules linked in:
[    1.203978] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W       
4.15.0-rc3-00027-g3b196a7dd3bd-dirty #220
[    1.216449] Hardware name: Freescale i.MX7 Dual (Device Tree)
[    1.221768] PC is at kfree+0xfc/0x140
[    1.225376] LR is at platform_device_release+0x10/0x34
[    1.230510] pc : [<801fd494>]    lr : [<8050ff50>]    psr: 40000013
[    1.236804] sp : ac079df0  ip : 00000000  fp : ffffffef
[    1.242008] r10: ac225400  r9 : ac225000  r8 : 80d23fa0
[    1.247201] r7 : af770d04  r6 : 00000000  r5 : ac225410  r4 :
ac225410
[    1.253741] r3 : af794494  r2 : af794480  r1 : a0000013  r0 :
80d241a0
[    1.260252] Flags: nZcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM 
Segment none
[    1.267425] Control: 10c5387d  Table: 8000406a  DAC: 00000051
[    1.273163] Process swapper/0 (pid: 1, stack limit = 0x7ec51c00)
[    1.279174] Stack: (0xac079df0 to 0xac07a000)
[    1.283497] 9de0:                                     ac225410
ac225418 ac225410 ac225410
[    1.293629] 9e00: ac225410 00000000 af770d04 8050ff50 ac225418
80509c4c ac225418 80d2a744
[    1.302856] 9e20: ac2a68c0 80834038 80aa8500 af770d04 af770de8
ac11fa10 80aa8500 8049c078
[    1.312114] 9e40: 00000000 00000000 ac32d180 00000001 80b40a88
ac11fa10 fffffffe 80d24010
[    1.321543] 9e60: fffffdfb 80d24010 80daef28 00000000 00000000
80510364 ac11fa10 00000000
[    1.331081] 9e80: 80daef24 00000000 80d24010 8050e9ac af770b0c
00000000 000000d7 ac11fa10
[    1.340735] 9ea0: 80d24010 ac11fa44 00000000 000000d7 80c5b83c
80c6c578 00000000 8050ec64
[    1.350475] 9ec0: 00000000 80d24010 8050ebc0 8050cd88 ac041758
ac114ab4 80d24010 ac2a3400
[    1.360365] 9ee0: 80d2ab20 8050df40 80afeb04 80c35e1c 80d24010
80d24010 00000000 80c35e4c
[    1.370388] 9f00: 80d58600 8050f554 ffffe000 00000000 80c35e4c
80101a5c 80b949dc 000000d7
[    1.380600] 9f20: 00000000 8013a238 00000000 80b1d70c 00000006
00000006 80aada0c 00000000
[    1.390896] 9f40: 80ab6b90 80aada80 affffc8a affffc92 00000000
00000007 80d58600 80c5b830
[    1.401286] 9f60: 00000007 80d58600 80c5b834 80d58600 000000d7
80c00db8 00000006 00000006
[    1.411792] 9f80: 00000000 80c005b0 00000000 80842630 00000000
00000000 00000000 00000000
[    1.422343] 9fa0: 00000000 80842638 00000000 80107988 00000000
00000000 00000000 00000000
[    1.432895] 9fc0: 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000
[    1.443458] 9fe0: 00000000 00000000 00000000 00000000 00000013
00000000 bf73ffff 4c5eafe0
[    1.454043] [<801fd494>] (kfree) from [<8050ff50>]
(platform_device_release+0x10/0x34)
[    1.464336] [<8050ff50>] (platform_device_release) from [<80509c4c>]
(device_release+0x2c/0x90)
[    1.475435] [<80509c4c>] (device_release) from [<80834038>]
(kobject_put+0x94/0xe4)
[    1.485474] [<80834038>] (kobject_put) from [<8049c078>]
(imx_gpcv2_probe+0x1b4/0x1f8)
[    1.495784] [<8049c078>] (imx_gpcv2_probe) from [<80510364>]
(platform_drv_probe+0x50/0xac)
[    1.506544] [<80510364>] (platform_drv_probe) from [<8050e9ac>]
(driver_probe_device+0x1b4/0x3c8)
[    1.517844] [<8050e9ac>] (driver_probe_device) from [<8050ec64>]
(__driver_attach+0xa4/0xa8)
[    1.528708] [<8050ec64>] (__driver_attach) from [<8050cd88>]
(bus_for_each_dev+0x4c/0x9c)
[    1.539313] [<8050cd88>] (bus_for_each_dev) from [<8050df40>]
(bus_add_driver+0x188/0x20c)
[    1.550011] [<8050df40>] (bus_add_driver) from [<8050f554>]
(driver_register+0x78/0xf4)
[    1.560449] [<8050f554>] (driver_register) from [<80101a5c>]
(do_one_initcall+0x44/0x168)
[    1.571073] [<80101a5c>] (do_one_initcall) from [<80c00db8>]
(kernel_init_freeable+0x14c/0x1d8)
[    1.582239] [<80c00db8>] (kernel_init_freeable) from [<80842638>]
(kernel_init+0x8/0x10c)
[    1.592874] [<80842638>] (kernel_init) from [<80107988>]
(ret_from_fork+0x14/0x2c)
[    1.602885] Code: 1a000003 e5923014 e3130001 1a000000 (e7f001f2)
[    1.608796] ---[ end trace 27014f64d1c17110 ]---
[    1.613635] Kernel panic - not syncing: Attempted to kill init!
exitcode=0x0000000b
[    1.613635]
[    1.627569] ---[ end Kernel panic - not syncing: Attempted to kill
init! exitcode=0x0000000b
[    1.627569]

--
Stefan

^ permalink raw reply

* [GIT PULL 0/4] ARM: exynos: Second pull for v4.16
From: Krzysztof Kozlowski @ 2018-01-07 11:36 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

Last round of updates for v4.16. Two tags based on previous.

Best regards,
Krzysztof

^ permalink raw reply

* [GIT PULL 3/4] soc: samsung: Stuff for v4.16
From: Krzysztof Kozlowski @ 2018-01-07 11:36 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180107113625.15488-1-krzk@kernel.org>


The following changes since commit 4fbd8d194f06c8a3fd2af1ce560ddb31f7ec8323:

  Linux 4.15-rc1 (2017-11-26 16:01:47 -0800)

are available in the git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git tags/samsung-drivers-4.16-2

for you to fetch changes up to 06512c539ff1d6d008d5e8ab9d6f5f6405972f53:

  soc: samsung: Add SPDX license identifiers (2018-01-03 18:45:15 +0100)

----------------------------------------------------------------
Samsung soc drivers changes for v4.16

Add SPDX license identifiers.

----------------------------------------------------------------
Krzysztof Kozlowski (1):
      soc: samsung: Add SPDX license identifiers

 drivers/soc/samsung/Kconfig          |  1 +
 drivers/soc/samsung/Makefile         |  1 +
 drivers/soc/samsung/exynos-pmu.c     | 16 ++++++----------
 drivers/soc/samsung/exynos-pmu.h     |  5 +----
 drivers/soc/samsung/exynos3250-pmu.c | 16 ++++++----------
 drivers/soc/samsung/exynos4-pmu.c    | 16 ++++++----------
 drivers/soc/samsung/exynos5250-pmu.c | 16 ++++++----------
 drivers/soc/samsung/exynos5420-pmu.c | 16 ++++++----------
 drivers/soc/samsung/pm_domains.c     | 24 ++++++++++--------------
 9 files changed, 43 insertions(+), 68 deletions(-)

^ permalink raw reply

* [GIT PULL 1/4] ARM: dts: exynos: Stuff for v4.16, 2nd round
From: Krzysztof Kozlowski @ 2018-01-07 11:36 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180107113625.15488-1-krzk@kernel.org>

Hi,

On top of previous pull request.

Best regards,
Krzysztof


The following changes since commit 3be1ecf291df8191f5ea395d363acc8fa029b5fd:

  ARM: dts: exynos: Use lower case hex addresses in node unit addresses (2017-12-18 18:15:51 +0100)

are available in the git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git tags/samsung-dt-4.16-2

for you to fetch changes up to 5628a8ca14149ba4226e3bdce3a04c3b688435ad:

  ARM: dts: exynos: fix RTC interrupt for exynos5410 (2018-01-07 11:15:59 +0100)

----------------------------------------------------------------
Samsung DTS ARM changes for 4.16, part 2

1. Add SPDX license identifiers.
2. Properly fix DTC warning for PMU/RTC interrupts on Exynos5410.

----------------------------------------------------------------
Arnd Bergmann (1):
      ARM: dts: exynos: fix RTC interrupt for exynos5410

Krzysztof Kozlowski (5):
      ARM: dts: exynos: Add SPDX license identifiers
      ARM: dts: s3c24xx: Add SPDX license identifiers
      ARM: dts: s3c64xx: Add SPDX license identifiers
      ARM: dts: s5pv210: Add SPDX license identifiers
      Revert "ARM: dts: exynos: Add missing interrupt-controller properties to Exynos5410 PMU"

 arch/arm/boot/dts/exynos3250-artik5-eval.dts       | 5 +----
 arch/arm/boot/dts/exynos3250-artik5.dtsi           | 5 +----
 arch/arm/boot/dts/exynos3250-monk.dts              | 5 +----
 arch/arm/boot/dts/exynos3250-pinctrl.dtsi          | 7 ++-----
 arch/arm/boot/dts/exynos3250-rinato.dts            | 5 +----
 arch/arm/boot/dts/exynos3250.dtsi                  | 5 +----
 arch/arm/boot/dts/exynos4-cpu-thermal.dtsi         | 6 +-----
 arch/arm/boot/dts/exynos4.dtsi                     | 5 +----
 arch/arm/boot/dts/exynos4210-origen.dts            | 7 ++-----
 arch/arm/boot/dts/exynos4210-pinctrl.dtsi          | 7 ++-----
 arch/arm/boot/dts/exynos4210-smdkv310.dts          | 7 ++-----
 arch/arm/boot/dts/exynos4210-trats.dts             | 7 ++-----
 arch/arm/boot/dts/exynos4210-universal_c210.dts    | 7 ++-----
 arch/arm/boot/dts/exynos4210.dtsi                  | 7 ++-----
 arch/arm/boot/dts/exynos4412-itop-elite.dts        | 5 +----
 arch/arm/boot/dts/exynos4412-itop-scp-core.dtsi    | 5 +----
 arch/arm/boot/dts/exynos4412-odroid-common.dtsi    | 5 +----
 arch/arm/boot/dts/exynos4412-odroidu3.dts          | 7 ++-----
 arch/arm/boot/dts/exynos4412-odroidx.dts           | 7 ++-----
 arch/arm/boot/dts/exynos4412-odroidx2.dts          | 7 ++-----
 arch/arm/boot/dts/exynos4412-origen.dts            | 7 ++-----
 arch/arm/boot/dts/exynos4412-pinctrl.dtsi          | 7 ++-----
 arch/arm/boot/dts/exynos4412-ppmu-common.dtsi      | 5 +----
 arch/arm/boot/dts/exynos4412-prime.dtsi            | 5 +----
 arch/arm/boot/dts/exynos4412-smdk4412.dts          | 7 ++-----
 arch/arm/boot/dts/exynos4412.dtsi                  | 7 ++-----
 arch/arm/boot/dts/exynos5.dtsi                     | 5 +----
 arch/arm/boot/dts/exynos5250-arndale.dts           | 5 +----
 arch/arm/boot/dts/exynos5250-pinctrl.dtsi          | 7 ++-----
 arch/arm/boot/dts/exynos5250-smdk5250.dts          | 5 +----
 arch/arm/boot/dts/exynos5250-snow-common.dtsi      | 5 +----
 arch/arm/boot/dts/exynos5250-snow-rev5.dts         | 5 +----
 arch/arm/boot/dts/exynos5250-snow.dts              | 5 +----
 arch/arm/boot/dts/exynos5250-spring.dts            | 5 +----
 arch/arm/boot/dts/exynos5250.dtsi                  | 7 ++-----
 arch/arm/boot/dts/exynos5260-pinctrl.dtsi          | 7 ++-----
 arch/arm/boot/dts/exynos5260-xyref5260.dts         | 7 ++-----
 arch/arm/boot/dts/exynos5260.dtsi                  | 7 ++-----
 arch/arm/boot/dts/exynos5410-odroidxu.dts          | 5 +----
 arch/arm/boot/dts/exynos5410-pinctrl.dtsi          | 5 +----
 arch/arm/boot/dts/exynos5410-smdk5410.dts          | 7 ++-----
 arch/arm/boot/dts/exynos5410.dtsi                  | 9 +--------
 arch/arm/boot/dts/exynos5420-arndale-octa.dts      | 7 ++-----
 arch/arm/boot/dts/exynos5420-cpus.dtsi             | 5 +----
 arch/arm/boot/dts/exynos5420-peach-pit.dts         | 5 +----
 arch/arm/boot/dts/exynos5420-pinctrl.dtsi          | 7 ++-----
 arch/arm/boot/dts/exynos5420-smdk5420.dts          | 7 ++-----
 arch/arm/boot/dts/exynos5420-tmu-sensor-conf.dtsi  | 6 +-----
 arch/arm/boot/dts/exynos5420-trip-points.dtsi      | 6 +-----
 arch/arm/boot/dts/exynos5420.dtsi                  | 5 +----
 arch/arm/boot/dts/exynos5422-cpus.dtsi             | 5 +----
 arch/arm/boot/dts/exynos5422-odroid-core.dtsi      | 7 ++-----
 arch/arm/boot/dts/exynos5422-odroidhc1.dts         | 7 ++-----
 arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi  | 7 ++-----
 arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi | 7 ++-----
 arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts    | 7 ++-----
 arch/arm/boot/dts/exynos5422-odroidxu3.dts         | 7 ++-----
 arch/arm/boot/dts/exynos5422-odroidxu4.dts         | 7 ++-----
 arch/arm/boot/dts/exynos5440-sd5v1.dts             | 7 ++-----
 arch/arm/boot/dts/exynos5440-ssdk5440.dts          | 7 ++-----
 arch/arm/boot/dts/exynos5440-tmu-sensor-conf.dtsi  | 6 +-----
 arch/arm/boot/dts/exynos5440-trip-points.dtsi      | 6 +-----
 arch/arm/boot/dts/exynos5440.dtsi                  | 7 ++-----
 arch/arm/boot/dts/exynos54xx-odroidxu-leds.dtsi    | 7 ++-----
 arch/arm/boot/dts/exynos54xx.dtsi                  | 5 +----
 arch/arm/boot/dts/s3c2416-pinctrl.dtsi             | 5 +----
 arch/arm/boot/dts/s3c2416-smdk2416.dts             | 5 +----
 arch/arm/boot/dts/s3c2416.dtsi                     | 5 +----
 arch/arm/boot/dts/s3c24xx.dtsi                     | 5 +----
 arch/arm/boot/dts/s3c6400.dtsi                     | 7 ++-----
 arch/arm/boot/dts/s3c6410-mini6410.dts             | 7 ++-----
 arch/arm/boot/dts/s3c6410-smdk6410.dts             | 7 ++-----
 arch/arm/boot/dts/s3c6410.dtsi                     | 7 ++-----
 arch/arm/boot/dts/s3c64xx-pinctrl.dtsi             | 5 +----
 arch/arm/boot/dts/s3c64xx.dtsi                     | 5 +----
 arch/arm/boot/dts/s5pv210-aquila.dts               | 5 +----
 arch/arm/boot/dts/s5pv210-goni.dts                 | 5 +----
 arch/arm/boot/dts/s5pv210-pinctrl.dtsi             | 5 +----
 arch/arm/boot/dts/s5pv210-smdkc110.dts             | 5 +----
 arch/arm/boot/dts/s5pv210-smdkv210.dts             | 5 +----
 arch/arm/boot/dts/s5pv210-torbreck.dts             | 5 +----
 arch/arm/boot/dts/s5pv210.dtsi                     | 7 ++-----
 82 files changed, 121 insertions(+), 376 deletions(-)

^ permalink raw reply

* [GIT PULL 2/4] arm64: dts: exynos: Stuff for v4.16, 2nd round
From: Krzysztof Kozlowski @ 2018-01-07 11:36 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180107113625.15488-1-krzk@kernel.org>

Hi,

On top of previous pull request.

Best regards,
Krzysztof


The following changes since commit 3808354701090723b53c73afaccfcafdeb8a5bfe:

  arm64: dts: exynos: Increase bus frequency for MHL chip (2017-12-04 17:51:10 +0100)

are available in the git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git tags/samsung-dt64-4.16-2

for you to fetch changes up to 45fef752126603d591754befa63d0a800492eb6c:

  arm64: dts: exynos: Add SPDX license identifiers (2018-01-03 18:16:35 +0100)

----------------------------------------------------------------
Samsung DTS ARM64 changes for v4.16, part 2

1. Fix DTC warnings around unit addresses.
2. Add SPDX license identifiers.

----------------------------------------------------------------
Krzysztof Kozlowski (3):
      arm64: dts: exynos: Use lower case hex addresses in node unit addresses
      arm64: dts: exynos: Fix typo in MSCL clock controller unit address of Exynos5433
      arm64: dts: exynos: Add SPDX license identifiers

 arch/arm64/boot/dts/exynos/exynos5433-bus.dtsi            |  5 +----
 arch/arm64/boot/dts/exynos/exynos5433-pinctrl.dtsi        |  5 +----
 arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi     |  5 +----
 arch/arm64/boot/dts/exynos/exynos5433-tm2.dts             |  5 +----
 arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts            |  5 +----
 .../boot/dts/exynos/exynos5433-tmu-g3d-sensor-conf.dtsi   |  5 +----
 .../arm64/boot/dts/exynos/exynos5433-tmu-sensor-conf.dtsi |  5 +----
 arch/arm64/boot/dts/exynos/exynos5433-tmu.dtsi            |  5 +----
 arch/arm64/boot/dts/exynos/exynos5433.dtsi                | 15 ++++++---------
 arch/arm64/boot/dts/exynos/exynos7-espresso.dts           |  7 ++-----
 arch/arm64/boot/dts/exynos/exynos7-pinctrl.dtsi           |  7 ++-----
 arch/arm64/boot/dts/exynos/exynos7-tmu-sensor-conf.dtsi   |  6 +-----
 arch/arm64/boot/dts/exynos/exynos7-trip-points.dtsi       |  6 +-----
 arch/arm64/boot/dts/exynos/exynos7.dtsi                   |  9 +++------
 14 files changed, 23 insertions(+), 67 deletions(-)

^ permalink raw reply

* [GIT PULL 4/4] ARM: exynos/samsung: Stuff for v4.16
From: Krzysztof Kozlowski @ 2018-01-07 11:36 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180107113625.15488-1-krzk@kernel.org>


The following changes since commit 4fbd8d194f06c8a3fd2af1ce560ddb31f7ec8323:

  Linux 4.15-rc1 (2017-11-26 16:01:47 -0800)

are available in the git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git tags/samsung-soc-4.16-2

for you to fetch changes up to 4490e3c688d9e409a98189a6ea08bc2823d452e2:

  ARM: SAMSUNG: Add SPDX license identifiers (2018-01-03 18:43:13 +0100)

----------------------------------------------------------------
Samsung mach/soc changes for v4.16

Add SPDX license identifiers.

----------------------------------------------------------------
Krzysztof Kozlowski (5):
      ARM: EXYNOS: Add SPDX license identifiers
      ARM: S3C24XX: Add SPDX license identifiers
      ARM: S3C64XX: Add SPDX license identifiers
      ARM: S5PV210: Add SPDX license identifiers
      ARM: SAMSUNG: Add SPDX license identifiers

 arch/arm/mach-exynos/Kconfig                       |  4 +--
 arch/arm/mach-exynos/Makefile                      |  4 +--
 arch/arm/mach-exynos/common.h                      |  5 +--
 arch/arm/mach-exynos/exynos-smc.S                  |  5 +--
 arch/arm/mach-exynos/exynos.c                      | 16 ++++-----
 arch/arm/mach-exynos/firmware.c                    | 14 +++-----
 arch/arm/mach-exynos/headsmp.S                     |  6 +---
 arch/arm/mach-exynos/include/mach/map.h            |  7 ++--
 arch/arm/mach-exynos/mcpm-exynos.c                 | 17 +++-------
 arch/arm/mach-exynos/platsmp.c                     | 21 +++++-------
 arch/arm/mach-exynos/pm.c                          | 24 ++++++-------
 arch/arm/mach-exynos/sleep.S                       | 11 +-----
 arch/arm/mach-exynos/smc.h                         |  5 +--
 arch/arm/mach-exynos/suspend.c                     | 24 ++++++-------
 arch/arm/mach-s3c24xx/Kconfig                      |  4 +--
 arch/arm/mach-s3c24xx/Makefile                     |  4 +--
 arch/arm/mach-s3c24xx/Makefile.boot                |  2 ++
 arch/arm/mach-s3c24xx/anubis.h                     |  7 ++--
 arch/arm/mach-s3c24xx/bast-ide.c                   | 17 ++++------
 arch/arm/mach-s3c24xx/bast-irq.c                   | 28 ++++------------
 arch/arm/mach-s3c24xx/bast.h                       |  7 ++--
 arch/arm/mach-s3c24xx/common-smdk.c                | 21 +++++-------
 arch/arm/mach-s3c24xx/common-smdk.h                |  7 ++--
 arch/arm/mach-s3c24xx/common.c                     | 29 ++++------------
 arch/arm/mach-s3c24xx/common.h                     |  5 +--
 arch/arm/mach-s3c24xx/cpufreq-utils.c              | 18 ++++------
 arch/arm/mach-s3c24xx/fb-core.h                    |  5 +--
 arch/arm/mach-s3c24xx/gta02.h                      |  7 ++--
 arch/arm/mach-s3c24xx/h1940-bluetooth.c            | 16 +++------
 arch/arm/mach-s3c24xx/h1940.h                      |  7 ++--
 arch/arm/mach-s3c24xx/include/mach/dma.h           | 10 ++----
 arch/arm/mach-s3c24xx/include/mach/fb.h            |  1 +
 arch/arm/mach-s3c24xx/include/mach/gpio-samsung.h  |  7 ++--
 arch/arm/mach-s3c24xx/include/mach/hardware.h      |  7 ++--
 arch/arm/mach-s3c24xx/include/mach/irqs.h          | 10 ++----
 arch/arm/mach-s3c24xx/include/mach/map.h           | 10 ++----
 arch/arm/mach-s3c24xx/include/mach/pm-core.h       |  9 ++---
 arch/arm/mach-s3c24xx/include/mach/regs-clock.h    | 10 ++----
 arch/arm/mach-s3c24xx/include/mach/regs-gpio.h     | 10 ++----
 arch/arm/mach-s3c24xx/include/mach/regs-irq.h      | 10 ++----
 arch/arm/mach-s3c24xx/include/mach/regs-lcd.h      | 11 ++----
 .../mach-s3c24xx/include/mach/regs-s3c2443-clock.h | 10 ++----
 arch/arm/mach-s3c24xx/include/mach/rtc-core.h      |  7 ++--
 arch/arm/mach-s3c24xx/include/mach/s3c2412.h       |  5 +--
 arch/arm/mach-s3c24xx/iotiming-s3c2410.c           | 18 ++++------
 arch/arm/mach-s3c24xx/iotiming-s3c2412.c           | 18 ++++------
 arch/arm/mach-s3c24xx/irq-pm.c                     | 19 ++++-------
 arch/arm/mach-s3c24xx/mach-amlm5900.c              | 35 +++++--------------
 arch/arm/mach-s3c24xx/mach-anubis.c                | 15 +++------
 arch/arm/mach-s3c24xx/mach-at2440evb.c             | 21 +++++-------
 arch/arm/mach-s3c24xx/mach-bast.c                  | 17 ++++------
 arch/arm/mach-s3c24xx/mach-gta02.c                 | 33 +++++-------------
 arch/arm/mach-s3c24xx/mach-h1940.c                 | 17 ++++------
 arch/arm/mach-s3c24xx/mach-jive.c                  | 17 ++++------
 arch/arm/mach-s3c24xx/mach-mini2440.c              | 23 +++++--------
 arch/arm/mach-s3c24xx/mach-n30.c                   | 27 +++++++--------
 arch/arm/mach-s3c24xx/mach-nexcoder.c              | 22 +++++-------
 arch/arm/mach-s3c24xx/mach-osiris-dvs.c            | 19 ++++-------
 arch/arm/mach-s3c24xx/mach-osiris.c                | 14 +++-----
 arch/arm/mach-s3c24xx/mach-otom.c                  | 13 +++-----
 arch/arm/mach-s3c24xx/mach-qt2410.c                | 27 +++------------
 arch/arm/mach-s3c24xx/mach-rx1950.c                | 17 ++++------
 arch/arm/mach-s3c24xx/mach-rx3715.c                | 18 ++++------
 arch/arm/mach-s3c24xx/mach-s3c2416-dt.c            | 28 +++++++---------
 arch/arm/mach-s3c24xx/mach-smdk2410.c              | 39 ++++++----------------
 arch/arm/mach-s3c24xx/mach-smdk2413.c              | 19 ++++-------
 arch/arm/mach-s3c24xx/mach-smdk2416.c              | 18 ++++------
 arch/arm/mach-s3c24xx/mach-smdk2440.c              | 23 +++++--------
 arch/arm/mach-s3c24xx/mach-smdk2443.c              | 22 +++++-------
 arch/arm/mach-s3c24xx/mach-tct_hammer.c            | 33 +++++-------------
 arch/arm/mach-s3c24xx/mach-vr1000.c                | 19 ++++-------
 arch/arm/mach-s3c24xx/mach-vstms.c                 | 15 +++------
 arch/arm/mach-s3c24xx/nand-core.h                  |  7 ++--
 arch/arm/mach-s3c24xx/osiris.h                     |  7 ++--
 arch/arm/mach-s3c24xx/otom.h                       |  7 ++--
 arch/arm/mach-s3c24xx/pll-s3c2410.c                | 30 +++++------------
 arch/arm/mach-s3c24xx/pll-s3c2440-12000000.c       | 20 +++++------
 arch/arm/mach-s3c24xx/pll-s3c2440-16934400.c       | 20 +++++------
 arch/arm/mach-s3c24xx/pm-h1940.S                   | 19 ++---------
 arch/arm/mach-s3c24xx/pm-s3c2410.c                 | 27 ++++-----------
 arch/arm/mach-s3c24xx/pm-s3c2412.c                 | 17 ++++------
 arch/arm/mach-s3c24xx/pm-s3c2416.c                 | 17 ++++------
 arch/arm/mach-s3c24xx/pm.c                         | 39 +++++++---------------
 arch/arm/mach-s3c24xx/regs-dsc.h                   |  7 ++--
 arch/arm/mach-s3c24xx/regs-mem.h                   |  5 +--
 arch/arm/mach-s3c24xx/s3c2410.c                    | 17 ++++------
 arch/arm/mach-s3c24xx/s3c2412-power.h              |  5 +--
 arch/arm/mach-s3c24xx/s3c2412.c                    | 16 ++++-----
 arch/arm/mach-s3c24xx/s3c2416.c                    | 31 +++++------------
 arch/arm/mach-s3c24xx/s3c2440.c                    | 17 ++++------
 arch/arm/mach-s3c24xx/s3c2442.c                    | 29 ++++------------
 arch/arm/mach-s3c24xx/s3c2443.c                    | 17 ++++------
 arch/arm/mach-s3c24xx/s3c244x.c                    | 17 ++++------
 arch/arm/mach-s3c24xx/setup-camif.c                | 14 +++-----
 arch/arm/mach-s3c24xx/setup-i2c.c                  | 17 ++++------
 arch/arm/mach-s3c24xx/setup-sdhci-gpio.c           | 21 +++++-------
 arch/arm/mach-s3c24xx/setup-spi.c                  | 16 ++++-----
 arch/arm/mach-s3c24xx/setup-ts.c                   | 17 ++++------
 arch/arm/mach-s3c24xx/simtec-audio.c               | 19 ++++-------
 arch/arm/mach-s3c24xx/simtec-nor.c                 | 19 ++++-------
 arch/arm/mach-s3c24xx/simtec-pm.c                  | 21 +++++-------
 arch/arm/mach-s3c24xx/simtec-usb.c                 | 21 +++++-------
 arch/arm/mach-s3c24xx/simtec.h                     | 10 ++----
 arch/arm/mach-s3c24xx/sleep-s3c2410.S              | 20 ++---------
 arch/arm/mach-s3c24xx/sleep-s3c2412.S              | 20 ++---------
 arch/arm/mach-s3c24xx/sleep.S                      | 20 ++---------
 arch/arm/mach-s3c24xx/spi-core.h                   |  5 +--
 arch/arm/mach-s3c24xx/vr1000.h                     | 11 ++----
 arch/arm/mach-s3c64xx/Kconfig                      |  5 +--
 arch/arm/mach-s3c64xx/Makefile                     |  4 +--
 arch/arm/mach-s3c64xx/ata-core.h                   |  7 ++--
 arch/arm/mach-s3c64xx/backlight.h                  |  5 +--
 arch/arm/mach-s3c64xx/common.c                     | 26 ++++++---------
 arch/arm/mach-s3c64xx/common.h                     |  5 +--
 arch/arm/mach-s3c64xx/cpuidle.c                    | 15 +++------
 arch/arm/mach-s3c64xx/crag6410.h                   |  5 +--
 arch/arm/mach-s3c64xx/dev-audio.c                  | 13 +++-----
 arch/arm/mach-s3c64xx/dev-backlight.c              | 16 ++++-----
 arch/arm/mach-s3c64xx/dev-uart.c                   | 22 +++++-------
 arch/arm/mach-s3c64xx/include/mach/gpio-samsung.h  |  7 ++--
 arch/arm/mach-s3c64xx/include/mach/hardware.h      |  1 +
 arch/arm/mach-s3c64xx/include/mach/map.h           | 10 ++----
 arch/arm/mach-s3c64xx/include/mach/pm-core.h       |  8 ++---
 arch/arm/mach-s3c64xx/include/mach/regs-clock.h    | 10 ++----
 arch/arm/mach-s3c64xx/include/mach/regs-irq.h      | 10 ++----
 arch/arm/mach-s3c64xx/irq-pm.c                     | 21 +++++-------
 arch/arm/mach-s3c64xx/irq-uart.h                   |  7 ++--
 arch/arm/mach-s3c64xx/mach-anw6410.c               | 22 +++++-------
 arch/arm/mach-s3c64xx/mach-crag6410-module.c       | 15 ++++-----
 arch/arm/mach-s3c64xx/mach-crag6410.c              | 19 ++++-------
 arch/arm/mach-s3c64xx/mach-hmt.c                   | 14 +++-----
 arch/arm/mach-s3c64xx/mach-mini6410.c              | 20 ++++-------
 arch/arm/mach-s3c64xx/mach-ncp.c                   | 13 ++------
 arch/arm/mach-s3c64xx/mach-real6410.c              | 20 ++++-------
 arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c            | 14 +++-----
 arch/arm/mach-s3c64xx/mach-smartq.c                | 13 ++------
 arch/arm/mach-s3c64xx/mach-smartq.h                |  6 +---
 arch/arm/mach-s3c64xx/mach-smartq5.c               | 13 ++------
 arch/arm/mach-s3c64xx/mach-smartq7.c               | 13 ++------
 arch/arm/mach-s3c64xx/mach-smdk6400.c              | 15 +++------
 arch/arm/mach-s3c64xx/mach-smdk6410.c              | 18 ++++------
 arch/arm/mach-s3c64xx/onenand-core.h               |  7 ++--
 arch/arm/mach-s3c64xx/pl080.c                      | 14 +++-----
 arch/arm/mach-s3c64xx/pm.c                         | 21 +++++-------
 arch/arm/mach-s3c64xx/regs-modem.h                 |  7 ++--
 arch/arm/mach-s3c64xx/regs-srom.h                  |  7 ++--
 arch/arm/mach-s3c64xx/s3c6400.c                    | 15 +++------
 arch/arm/mach-s3c64xx/s3c6410.c                    | 17 ++++------
 arch/arm/mach-s3c64xx/setup-fb-24bpp.c             | 21 +++++-------
 arch/arm/mach-s3c64xx/setup-i2c0.c                 | 21 +++++-------
 arch/arm/mach-s3c64xx/setup-i2c1.c                 | 21 +++++-------
 arch/arm/mach-s3c64xx/setup-ide.c                  | 17 ++++------
 arch/arm/mach-s3c64xx/setup-keypad.c               | 17 ++++------
 arch/arm/mach-s3c64xx/setup-sdhci-gpio.c           | 19 ++++-------
 arch/arm/mach-s3c64xx/setup-spi.c                  | 13 +++-----
 arch/arm/mach-s3c64xx/setup-usb-phy.c              | 14 +++-----
 arch/arm/mach-s3c64xx/sleep.S                      |  7 ++--
 arch/arm/mach-s3c64xx/watchdog-reset.h             |  7 ++--
 arch/arm/mach-s5pv210/Kconfig                      |  4 +--
 arch/arm/mach-s5pv210/Makefile                     |  4 +--
 arch/arm/mach-s5pv210/common.h                     |  5 +--
 arch/arm/mach-s5pv210/pm.c                         | 25 ++++++--------
 arch/arm/mach-s5pv210/regs-clock.h                 |  7 ++--
 arch/arm/mach-s5pv210/s5pv210.c                    | 18 ++++------
 arch/arm/mach-s5pv210/sleep.S                      |  6 +---
 arch/arm/plat-samsung/Kconfig                      |  4 +--
 arch/arm/plat-samsung/Makefile                     |  4 +--
 arch/arm/plat-samsung/adc.c                        | 19 ++++-------
 arch/arm/plat-samsung/cpu.c                        | 17 ++++------
 arch/arm/plat-samsung/dev-uart.c                   | 21 +++++-------
 arch/arm/plat-samsung/devs.c                       | 17 ++++------
 arch/arm/plat-samsung/gpio-samsung.c               | 26 ++++++---------
 arch/arm/plat-samsung/include/plat/adc-core.h      | 10 ++----
 arch/arm/plat-samsung/include/plat/adc.h           | 10 ++----
 arch/arm/plat-samsung/include/plat/cpu-freq-core.h | 10 ++----
 arch/arm/plat-samsung/include/plat/cpu-freq.h      | 10 ++----
 arch/arm/plat-samsung/include/plat/cpu.h           | 10 ++----
 arch/arm/plat-samsung/include/plat/devs.h          | 10 ++----
 arch/arm/plat-samsung/include/plat/fb-s3c2410.h    |  8 ++---
 arch/arm/plat-samsung/include/plat/fb.h            | 10 ++----
 .../plat-samsung/include/plat/gpio-cfg-helpers.h   | 10 ++----
 arch/arm/plat-samsung/include/plat/gpio-cfg.h      | 10 ++----
 arch/arm/plat-samsung/include/plat/gpio-core.h     | 10 ++----
 arch/arm/plat-samsung/include/plat/iic-core.h      | 10 ++----
 arch/arm/plat-samsung/include/plat/keypad.h        |  6 +---
 arch/arm/plat-samsung/include/plat/map-base.h      | 10 ++----
 arch/arm/plat-samsung/include/plat/map-s3c.h       | 10 ++----
 arch/arm/plat-samsung/include/plat/map-s5p.h       | 10 ++----
 arch/arm/plat-samsung/include/plat/pm-common.h     |  7 ++--
 arch/arm/plat-samsung/include/plat/pm.h            | 10 ++----
 arch/arm/plat-samsung/include/plat/pwm-core.h      |  5 +--
 arch/arm/plat-samsung/include/plat/regs-adc.h      | 10 ++----
 arch/arm/plat-samsung/include/plat/regs-irqtype.h  |  8 ++---
 arch/arm/plat-samsung/include/plat/regs-spi.h      | 10 ++----
 arch/arm/plat-samsung/include/plat/regs-udc.h      | 11 ++----
 arch/arm/plat-samsung/include/plat/samsung-time.h  | 10 ++----
 arch/arm/plat-samsung/include/plat/sdhci.h         | 10 ++----
 arch/arm/plat-samsung/include/plat/usb-phy.h       |  6 +---
 arch/arm/plat-samsung/include/plat/wakeup-mask.h   | 11 ++----
 arch/arm/plat-samsung/init.c                       | 19 ++++-------
 arch/arm/plat-samsung/platformdata.c               | 15 +++------
 arch/arm/plat-samsung/pm-check.c                   | 22 +++++-------
 arch/arm/plat-samsung/pm-common.c                  | 24 ++++++-------
 arch/arm/plat-samsung/pm-debug.c                   | 24 ++++++-------
 arch/arm/plat-samsung/pm-gpio.c                    | 22 +++++-------
 arch/arm/plat-samsung/pm.c                         | 21 +++++-------
 arch/arm/plat-samsung/wakeup-mask.c                | 15 +++------
 arch/arm/plat-samsung/watchdog-reset.c             | 21 +++++-------
 208 files changed, 962 insertions(+), 1999 deletions(-)

^ permalink raw reply

* [PATCH v2 1/6] ARM: at91: add TCB registers definitions
From: Philippe Ombredanne @ 2018-01-07 11:59 UTC (permalink / raw)
  To: linux-arm-kernel
In-Reply-To: <20180105143006.5369-2-alexandre.belloni@free-electrons.com>

On Fri, Jan 5, 2018 at 3:30 PM, Alexandre Belloni
<alexandre.belloni@free-electrons.com> wrote:
> Add registers and bits definitions for the timer counter blocks found on
> Atmel ARM SoCs.
>
> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> ---
>  include/soc/at91/atmel_tcb.h | 229 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 229 insertions(+)
>  create mode 100644 include/soc/at91/atmel_tcb.h
>
> diff --git a/include/soc/at91/atmel_tcb.h b/include/soc/at91/atmel_tcb.h
> new file mode 100644
> index 000000000000..f48e60f8ab92
> --- /dev/null
> +++ b/include/soc/at91/atmel_tcb.h
> @@ -0,0 +1,229 @@
> +/*
> + * Copyright (C) 2016 Atmel
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License version 2 as published by
> + * the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful, but WITHOUT
> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
> + * more details.
> + *
> + * You should have received a copy of the GNU General Public License along with
> + * this program.  If not, see <http://www.gnu.org/licenses/>.
> + */

Alexandre,
Would you mind using SPDx tags here like you did in
/drivers/clocksource/timer-atmel-tcb.c ?
Thanks!
-- 
Cordially
Philippe Ombredanne

^ permalink raw reply

* [PATCH] Revert "ARM: dts: bcm283x: Fix DTC warnings about missing phy-cells"
From: Stefan Wahren @ 2018-01-07 13:36 UTC (permalink / raw)
  To: linux-arm-kernel

This reverts commit 014d6da6cb2525d7f48fb08c705cb130cc7b5f4a.

The DT clean up could trigger an endless deferred probe of DWC2 USB driver
on the Raspberry Pi 2/3. So revert the change until we fixed the probing
issue.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
---

Hi Arnd,
hi Olof,
i hope this has a chance to get into 4.15.

 arch/arm/boot/dts/bcm283x.dtsi | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index dcde93c..013431e 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -639,6 +639,5 @@
 
 	usbphy: phy {
 		compatible = "usb-nop-xceiv";
-		#phy-cells = <0>;
 	};
 };
-- 
2.7.4

^ permalink raw reply related

* [PATCH] soc: imx: gpc: de-register power domains only if initialized
From: Stefan Agner @ 2018-01-07 13:49 UTC (permalink / raw)
  To: linux-arm-kernel

If power domain information are missing in the device tree, no
power domains get initialized. However, imx_gpc_remove tries to
remove power domains always in the old DT binding case. Only
remove power domains when imx_gpc_probe initialized them in
first place.

Fixes: 721cabf6c660 ("soc: imx: move PGC handling to a new GPC driver")
Cc: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
 drivers/soc/imx/gpc.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/soc/imx/gpc.c b/drivers/soc/imx/gpc.c
index 53f7275d6cbd..62bb724726d9 100644
--- a/drivers/soc/imx/gpc.c
+++ b/drivers/soc/imx/gpc.c
@@ -470,13 +470,21 @@ static int imx_gpc_probe(struct platform_device *pdev)
 
 static int imx_gpc_remove(struct platform_device *pdev)
 {
+	struct device_node *pgc_node;
 	int ret;
 
+	pgc_node = of_get_child_by_name(pdev->dev.of_node, "pgc");
+
+	/* bail out if DT too old and doesn't provide the necessary info */
+	if (!of_property_read_bool(pdev->dev.of_node, "#power-domain-cells") &&
+	    !pgc_node)
+		return 0;
+
 	/*
 	 * If the old DT binding is used the toplevel driver needs to
 	 * de-register the power domains
 	 */
-	if (!of_get_child_by_name(pdev->dev.of_node, "pgc")) {
+	if (!pgc_node) {
 		of_genpd_del_provider(pdev->dev.of_node);
 
 		ret = pm_genpd_remove(&imx_gpc_domains[GPC_PGC_DOMAIN_PU].base);
-- 
2.15.1

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox