* [RFC PATCH V2 4/4] arm64: mm: implement get_user_pages_fast
From: Catalin Marinas @ 2014-02-11 15:48 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1391703531-12845-5-git-send-email-steve.capper@linaro.org>
On Thu, Feb 06, 2014 at 04:18:51PM +0000, Steve Capper wrote:
> An implementation of get_user_pages_fast for arm64. It is based on the
> arm implementation (it has the added ability to walk huge puds) which
> is loosely on the PowerPC implementation. We disable interrupts in the
> walker to prevent the call_rcu_sched pagetable freeing code from
> running under us.
>
> We also explicitly fire an IPI in the Transparent HugePage splitting
> case to prevent splits from interfering with the fast_gup walker.
> As THP splits are relatively rare, this should not have a noticable
> overhead.
>
> Signed-off-by: Steve Capper <steve.capper@linaro.org>
> ---
> arch/arm64/include/asm/pgtable.h | 4 +
> arch/arm64/mm/Makefile | 2 +-
> arch/arm64/mm/gup.c | 297 +++++++++++++++++++++++++++++++++++++++
Why don't you make a generic gup.c implementation and let architectures
select it? I don't see much arm64-specific code in here.
--
Catalin
^ permalink raw reply
* [PATCH 06/11] ARM: mvebu: add Armada 380/385 support to the system-controller driver
From: Gregory CLEMENT @ 2014-02-11 15:50 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20140211153005.GY8533@titan.lakedaemon.net>
On 11/02/2014 16:30, Jason Cooper wrote:
> On Tue, Feb 11, 2014 at 04:24:36PM +0100, Thomas Petazzoni wrote:
>> Grant,
>>
>> On Tue, 11 Feb 2014 14:22:04 +0000, Grant Likely wrote:
>>
>>>>> + }, {
>>>>> + /*
>>>>> + * As far as RSTOUTn and System soft reset registers
>>>>> + * are concerned, Armada 38x is similar to Armada
>>>>> + * 370/XP
>>>>> + */
>>>>> + .compatible = "marvell,armada-380-system-controller",
>>>>> + .data = (void *) &armada_370_xp_system_controller,
>>>
>>> However, this would not be the right thing to do. The better solution
>>> is to put the following into the .dts file:
>>>
>>> compatible = "marvell,armada-380-system-controller","marvell,armada-370-system-controller"
>>>
>>> So that the kernel has the option to override the 370 version if an
>>> errata or extra feature support ever needs to be added.
>>
>> Ah, right true. Makes sense. We are going to update our patch set to
>> take this suggestion into account, and resubmit a v2 with this. This
>> way, we don't need new to introduce in drivers new compatible strings
>> for the clocksource driver, the mbus driver and the system-controller
>> driver.
>>
>> Thanks Grant for your suggestion.
>>
>> Jason, are you ok with this?
>
> Yes. Thanks Grant for clearing this up. And thanks guys for tolerating
> my "This doesn't look right, but I'm having trouble explaining how"
> moment :)
Great, with this solution we have the better of the two options:
the ability to deal with different behaviors of the IP without
having to update the dts and no code added in the drivers files.
>
> thx,
>
> Jason.
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
^ permalink raw reply
* ohci-/ehci-platform: Change compatible string to ?hci-platform
From: Hans de Goede @ 2014-02-11 15:54 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1635726.gc3dEs0zOi@wuerfel>
Hi,
On 02/11/2014 04:43 PM, Arnd Bergmann wrote:
> On Tuesday 11 February 2014 10:27:12 Alan Stern wrote:
>>
>> It might even be a good idea to change the "xhci-platform" string to
>> match, it that doesn't cause too much trouble.
>
> The original xhci binding was contributed by Al Cooper, but I don't
> see any dts files using it. I agree that xhci-generic is a better
> name than xhci-platform, and I think we should make that the recommended
> string. If Al or someone thinks the xhci-generic string might already
> be used in production devices, we should however allow both names
> in the binding and in the driver.
I can live with generic as pre/post fix. Looking at what seems to
be the common trend I believe it should be a pre-fix and nost a post-fix
though.
The common way to build a compatible string seems to be:
vendor,soc_model-function. We have a few deviations from this in the
usb bindings, but ie the interrupt-controller bindings use this
structure for the compatible strings everywhere.
So since generic has no vendor, we fill just the soc_model-function
part leading to:
generic-ohci
generic-ehci
And possible also:
generic-uhci
generic-xhci
So I'm going to respin my 2 fixup patches to move from ?hci-platform
to generic-?hci.
Regards,
Hans
^ permalink raw reply
* [PATCH v2] ARM: asm: rename logical shift macros push pull into lspush lspull
From: Dave Martin @ 2014-02-11 15:54 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <alpine.LFD.2.11.1402101607120.17677@knanqh.ubzr>
On Mon, Feb 10, 2014 at 04:30:01PM -0500, Nicolas Pitre wrote:
> On Mon, 10 Feb 2014, Victor Kamensky wrote:
>
> > Renames logical shift macros, 'push' and 'pull', defined in
> > arch/arm/include/asm/assembler.h, into 'lspush' and 'lspull'.
>
> I don't have any fundamental objection to the idea, except maybe for the
> actual names. I just can't come up with anything better though.
For consistency with the get_byte_ stuff, how about:
push -> towards_byte_0
pull -> from_byte_0
That may make the purpose a little clearer, too.
(Assuming I've got them the right way around...)
Cheers
---Dave
> Therefore...
>
> Acked-by: Nicolas Pitre <nico@linaro.org>
>
> > That eliminates name conflict between 'push' logical shift macro
> > and 'push' instruction mnemonic. That allows assembler.h to be
> > included in .S files that use 'push' instruction.
> >
> > Suggested-by: Will Deacon <will.deacon@arm.com>
> > Signed-off-by: Victor Kamensky <victor.kamensky@linaro.org>
> > ---
> > arch/arm/include/asm/assembler.h | 8 +-
> > arch/arm/lib/copy_template.S | 36 +++----
> > arch/arm/lib/csumpartialcopygeneric.S | 96 ++++++++---------
> > arch/arm/lib/io-readsl.S | 12 +--
> > arch/arm/lib/io-writesl.S | 12 +--
> > arch/arm/lib/memmove.S | 36 +++----
> > arch/arm/lib/uaccess.S | 192 +++++++++++++++++-----------------
> > 7 files changed, 196 insertions(+), 196 deletions(-)
> >
> > diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h
> > index 5c22851..380ac4f 100644
> > --- a/arch/arm/include/asm/assembler.h
> > +++ b/arch/arm/include/asm/assembler.h
> > @@ -30,8 +30,8 @@
> > * Endian independent macros for shifting bytes within registers.
> > */
> > #ifndef __ARMEB__
> > -#define pull lsr
> > -#define push lsl
> > +#define lspull lsr
> > +#define lspush lsl
> > #define get_byte_0 lsl #0
> > #define get_byte_1 lsr #8
> > #define get_byte_2 lsr #16
> > @@ -41,8 +41,8 @@
> > #define put_byte_2 lsl #16
> > #define put_byte_3 lsl #24
> > #else
> > -#define pull lsl
> > -#define push lsr
> > +#define lspull lsl
> > +#define lspush lsr
> > #define get_byte_0 lsr #24
> > #define get_byte_1 lsr #16
> > #define get_byte_2 lsr #8
> > diff --git a/arch/arm/lib/copy_template.S b/arch/arm/lib/copy_template.S
> > index 805e3f8..3bc8eb8 100644
> > --- a/arch/arm/lib/copy_template.S
> > +++ b/arch/arm/lib/copy_template.S
> > @@ -197,24 +197,24 @@
> >
> > 12: PLD( pld [r1, #124] )
> > 13: ldr4w r1, r4, r5, r6, r7, abort=19f
> > - mov r3, lr, pull #\pull
> > + mov r3, lr, lspull #\pull
> > subs r2, r2, #32
> > ldr4w r1, r8, r9, ip, lr, abort=19f
> > - orr r3, r3, r4, push #\push
> > - mov r4, r4, pull #\pull
> > - orr r4, r4, r5, push #\push
> > - mov r5, r5, pull #\pull
> > - orr r5, r5, r6, push #\push
> > - mov r6, r6, pull #\pull
> > - orr r6, r6, r7, push #\push
> > - mov r7, r7, pull #\pull
> > - orr r7, r7, r8, push #\push
> > - mov r8, r8, pull #\pull
> > - orr r8, r8, r9, push #\push
> > - mov r9, r9, pull #\pull
> > - orr r9, r9, ip, push #\push
> > - mov ip, ip, pull #\pull
> > - orr ip, ip, lr, push #\push
> > + orr r3, r3, r4, lspush #\push
> > + mov r4, r4, lspull #\pull
> > + orr r4, r4, r5, lspush #\push
> > + mov r5, r5, lspull #\pull
> > + orr r5, r5, r6, lspush #\push
> > + mov r6, r6, lspull #\pull
> > + orr r6, r6, r7, lspush #\push
> > + mov r7, r7, lspull #\pull
> > + orr r7, r7, r8, lspush #\push
> > + mov r8, r8, lspull #\pull
> > + orr r8, r8, r9, lspush #\push
> > + mov r9, r9, lspull #\pull
> > + orr r9, r9, ip, lspush #\push
> > + mov ip, ip, lspull #\pull
> > + orr ip, ip, lr, lspush #\push
> > str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f
> > bge 12b
> > PLD( cmn r2, #96 )
> > @@ -225,10 +225,10 @@
> > 14: ands ip, r2, #28
> > beq 16f
> >
> > -15: mov r3, lr, pull #\pull
> > +15: mov r3, lr, lspull #\pull
> > ldr1w r1, lr, abort=21f
> > subs ip, ip, #4
> > - orr r3, r3, lr, push #\push
> > + orr r3, r3, lr, lspush #\push
> > str1w r0, r3, abort=21f
> > bgt 15b
> > CALGN( cmp r2, #0 )
> > diff --git a/arch/arm/lib/csumpartialcopygeneric.S b/arch/arm/lib/csumpartialcopygeneric.S
> > index d620a5f..d6e742d 100644
> > --- a/arch/arm/lib/csumpartialcopygeneric.S
> > +++ b/arch/arm/lib/csumpartialcopygeneric.S
> > @@ -141,7 +141,7 @@ FN_ENTRY
> > tst len, #2
> > mov r5, r4, get_byte_0
> > beq .Lexit
> > - adcs sum, sum, r4, push #16
> > + adcs sum, sum, r4, lspush #16
> > strb r5, [dst], #1
> > mov r5, r4, get_byte_1
> > strb r5, [dst], #1
> > @@ -171,23 +171,23 @@ FN_ENTRY
> > cmp ip, #2
> > beq .Lsrc2_aligned
> > bhi .Lsrc3_aligned
> > - mov r4, r5, pull #8 @ C = 0
> > + mov r4, r5, lspull #8 @ C = 0
> > bics ip, len, #15
> > beq 2f
> > 1: load4l r5, r6, r7, r8
> > - orr r4, r4, r5, push #24
> > - mov r5, r5, pull #8
> > - orr r5, r5, r6, push #24
> > - mov r6, r6, pull #8
> > - orr r6, r6, r7, push #24
> > - mov r7, r7, pull #8
> > - orr r7, r7, r8, push #24
> > + orr r4, r4, r5, lspush #24
> > + mov r5, r5, lspull #8
> > + orr r5, r5, r6, lspush #24
> > + mov r6, r6, lspull #8
> > + orr r6, r6, r7, lspush #24
> > + mov r7, r7, lspull #8
> > + orr r7, r7, r8, lspush #24
> > stmia dst!, {r4, r5, r6, r7}
> > adcs sum, sum, r4
> > adcs sum, sum, r5
> > adcs sum, sum, r6
> > adcs sum, sum, r7
> > - mov r4, r8, pull #8
> > + mov r4, r8, lspull #8
> > sub ip, ip, #16
> > teq ip, #0
> > bne 1b
> > @@ -196,50 +196,50 @@ FN_ENTRY
> > tst ip, #8
> > beq 3f
> > load2l r5, r6
> > - orr r4, r4, r5, push #24
> > - mov r5, r5, pull #8
> > - orr r5, r5, r6, push #24
> > + orr r4, r4, r5, lspush #24
> > + mov r5, r5, lspull #8
> > + orr r5, r5, r6, lspush #24
> > stmia dst!, {r4, r5}
> > adcs sum, sum, r4
> > adcs sum, sum, r5
> > - mov r4, r6, pull #8
> > + mov r4, r6, lspull #8
> > tst ip, #4
> > beq 4f
> > 3: load1l r5
> > - orr r4, r4, r5, push #24
> > + orr r4, r4, r5, lspush #24
> > str r4, [dst], #4
> > adcs sum, sum, r4
> > - mov r4, r5, pull #8
> > + mov r4, r5, lspull #8
> > 4: ands len, len, #3
> > beq .Ldone
> > mov r5, r4, get_byte_0
> > tst len, #2
> > beq .Lexit
> > - adcs sum, sum, r4, push #16
> > + adcs sum, sum, r4, lspush #16
> > strb r5, [dst], #1
> > mov r5, r4, get_byte_1
> > strb r5, [dst], #1
> > mov r5, r4, get_byte_2
> > b .Lexit
> >
> > -.Lsrc2_aligned: mov r4, r5, pull #16
> > +.Lsrc2_aligned: mov r4, r5, lspull #16
> > adds sum, sum, #0
> > bics ip, len, #15
> > beq 2f
> > 1: load4l r5, r6, r7, r8
> > - orr r4, r4, r5, push #16
> > - mov r5, r5, pull #16
> > - orr r5, r5, r6, push #16
> > - mov r6, r6, pull #16
> > - orr r6, r6, r7, push #16
> > - mov r7, r7, pull #16
> > - orr r7, r7, r8, push #16
> > + orr r4, r4, r5, lspush #16
> > + mov r5, r5, lspull #16
> > + orr r5, r5, r6, lspush #16
> > + mov r6, r6, lspull #16
> > + orr r6, r6, r7, lspush #16
> > + mov r7, r7, lspull #16
> > + orr r7, r7, r8, lspush #16
> > stmia dst!, {r4, r5, r6, r7}
> > adcs sum, sum, r4
> > adcs sum, sum, r5
> > adcs sum, sum, r6
> > adcs sum, sum, r7
> > - mov r4, r8, pull #16
> > + mov r4, r8, lspull #16
> > sub ip, ip, #16
> > teq ip, #0
> > bne 1b
> > @@ -248,20 +248,20 @@ FN_ENTRY
> > tst ip, #8
> > beq 3f
> > load2l r5, r6
> > - orr r4, r4, r5, push #16
> > - mov r5, r5, pull #16
> > - orr r5, r5, r6, push #16
> > + orr r4, r4, r5, lspush #16
> > + mov r5, r5, lspull #16
> > + orr r5, r5, r6, lspush #16
> > stmia dst!, {r4, r5}
> > adcs sum, sum, r4
> > adcs sum, sum, r5
> > - mov r4, r6, pull #16
> > + mov r4, r6, lspull #16
> > tst ip, #4
> > beq 4f
> > 3: load1l r5
> > - orr r4, r4, r5, push #16
> > + orr r4, r4, r5, lspush #16
> > str r4, [dst], #4
> > adcs sum, sum, r4
> > - mov r4, r5, pull #16
> > + mov r4, r5, lspull #16
> > 4: ands len, len, #3
> > beq .Ldone
> > mov r5, r4, get_byte_0
> > @@ -276,24 +276,24 @@ FN_ENTRY
> > load1b r5
> > b .Lexit
> >
> > -.Lsrc3_aligned: mov r4, r5, pull #24
> > +.Lsrc3_aligned: mov r4, r5, lspull #24
> > adds sum, sum, #0
> > bics ip, len, #15
> > beq 2f
> > 1: load4l r5, r6, r7, r8
> > - orr r4, r4, r5, push #8
> > - mov r5, r5, pull #24
> > - orr r5, r5, r6, push #8
> > - mov r6, r6, pull #24
> > - orr r6, r6, r7, push #8
> > - mov r7, r7, pull #24
> > - orr r7, r7, r8, push #8
> > + orr r4, r4, r5, lspush #8
> > + mov r5, r5, lspull #24
> > + orr r5, r5, r6, lspush #8
> > + mov r6, r6, lspull #24
> > + orr r6, r6, r7, lspush #8
> > + mov r7, r7, lspull #24
> > + orr r7, r7, r8, lspush #8
> > stmia dst!, {r4, r5, r6, r7}
> > adcs sum, sum, r4
> > adcs sum, sum, r5
> > adcs sum, sum, r6
> > adcs sum, sum, r7
> > - mov r4, r8, pull #24
> > + mov r4, r8, lspull #24
> > sub ip, ip, #16
> > teq ip, #0
> > bne 1b
> > @@ -302,20 +302,20 @@ FN_ENTRY
> > tst ip, #8
> > beq 3f
> > load2l r5, r6
> > - orr r4, r4, r5, push #8
> > - mov r5, r5, pull #24
> > - orr r5, r5, r6, push #8
> > + orr r4, r4, r5, lspush #8
> > + mov r5, r5, lspull #24
> > + orr r5, r5, r6, lspush #8
> > stmia dst!, {r4, r5}
> > adcs sum, sum, r4
> > adcs sum, sum, r5
> > - mov r4, r6, pull #24
> > + mov r4, r6, lspull #24
> > tst ip, #4
> > beq 4f
> > 3: load1l r5
> > - orr r4, r4, r5, push #8
> > + orr r4, r4, r5, lspush #8
> > str r4, [dst], #4
> > adcs sum, sum, r4
> > - mov r4, r5, pull #24
> > + mov r4, r5, lspull #24
> > 4: ands len, len, #3
> > beq .Ldone
> > mov r5, r4, get_byte_0
> > @@ -326,7 +326,7 @@ FN_ENTRY
> > load1l r4
> > mov r5, r4, get_byte_0
> > strb r5, [dst], #1
> > - adcs sum, sum, r4, push #24
> > + adcs sum, sum, r4, lspush #24
> > mov r5, r4, get_byte_1
> > b .Lexit
> > FN_EXIT
> > diff --git a/arch/arm/lib/io-readsl.S b/arch/arm/lib/io-readsl.S
> > index 5fb97e7..7a74309 100644
> > --- a/arch/arm/lib/io-readsl.S
> > +++ b/arch/arm/lib/io-readsl.S
> > @@ -47,25 +47,25 @@ ENTRY(__raw_readsl)
> > strb ip, [r1], #1
> >
> > 4: subs r2, r2, #1
> > - mov ip, r3, pull #24
> > + mov ip, r3, lspull #24
> > ldrne r3, [r0]
> > - orrne ip, ip, r3, push #8
> > + orrne ip, ip, r3, lspush #8
> > strne ip, [r1], #4
> > bne 4b
> > b 8f
> >
> > 5: subs r2, r2, #1
> > - mov ip, r3, pull #16
> > + mov ip, r3, lspull #16
> > ldrne r3, [r0]
> > - orrne ip, ip, r3, push #16
> > + orrne ip, ip, r3, lspush #16
> > strne ip, [r1], #4
> > bne 5b
> > b 7f
> >
> > 6: subs r2, r2, #1
> > - mov ip, r3, pull #8
> > + mov ip, r3, lspull #8
> > ldrne r3, [r0]
> > - orrne ip, ip, r3, push #24
> > + orrne ip, ip, r3, lspush #24
> > strne ip, [r1], #4
> > bne 6b
> >
> > diff --git a/arch/arm/lib/io-writesl.S b/arch/arm/lib/io-writesl.S
> > index 8d3b781..d0d104a 100644
> > --- a/arch/arm/lib/io-writesl.S
> > +++ b/arch/arm/lib/io-writesl.S
> > @@ -41,26 +41,26 @@ ENTRY(__raw_writesl)
> > blt 5f
> > bgt 6f
> >
> > -4: mov ip, r3, pull #16
> > +4: mov ip, r3, lspull #16
> > ldr r3, [r1], #4
> > subs r2, r2, #1
> > - orr ip, ip, r3, push #16
> > + orr ip, ip, r3, lspush #16
> > str ip, [r0]
> > bne 4b
> > mov pc, lr
> >
> > -5: mov ip, r3, pull #8
> > +5: mov ip, r3, lspull #8
> > ldr r3, [r1], #4
> > subs r2, r2, #1
> > - orr ip, ip, r3, push #24
> > + orr ip, ip, r3, lspush #24
> > str ip, [r0]
> > bne 5b
> > mov pc, lr
> >
> > -6: mov ip, r3, pull #24
> > +6: mov ip, r3, lspull #24
> > ldr r3, [r1], #4
> > subs r2, r2, #1
> > - orr ip, ip, r3, push #8
> > + orr ip, ip, r3, lspush #8
> > str ip, [r0]
> > bne 6b
> > mov pc, lr
> > diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S
> > index 938fc14..d1fc0c0 100644
> > --- a/arch/arm/lib/memmove.S
> > +++ b/arch/arm/lib/memmove.S
> > @@ -147,24 +147,24 @@ ENTRY(memmove)
> >
> > 12: PLD( pld [r1, #-128] )
> > 13: ldmdb r1!, {r7, r8, r9, ip}
> > - mov lr, r3, push #\push
> > + mov lr, r3, lspush #\push
> > subs r2, r2, #32
> > ldmdb r1!, {r3, r4, r5, r6}
> > - orr lr, lr, ip, pull #\pull
> > - mov ip, ip, push #\push
> > - orr ip, ip, r9, pull #\pull
> > - mov r9, r9, push #\push
> > - orr r9, r9, r8, pull #\pull
> > - mov r8, r8, push #\push
> > - orr r8, r8, r7, pull #\pull
> > - mov r7, r7, push #\push
> > - orr r7, r7, r6, pull #\pull
> > - mov r6, r6, push #\push
> > - orr r6, r6, r5, pull #\pull
> > - mov r5, r5, push #\push
> > - orr r5, r5, r4, pull #\pull
> > - mov r4, r4, push #\push
> > - orr r4, r4, r3, pull #\pull
> > + orr lr, lr, ip, lspull #\pull
> > + mov ip, ip, lspush #\push
> > + orr ip, ip, r9, lspull #\pull
> > + mov r9, r9, lspush #\push
> > + orr r9, r9, r8, lspull #\pull
> > + mov r8, r8, lspush #\push
> > + orr r8, r8, r7, lspull #\pull
> > + mov r7, r7, lspush #\push
> > + orr r7, r7, r6, lspull #\pull
> > + mov r6, r6, lspush #\push
> > + orr r6, r6, r5, lspull #\pull
> > + mov r5, r5, lspush #\push
> > + orr r5, r5, r4, lspull #\pull
> > + mov r4, r4, lspush #\push
> > + orr r4, r4, r3, lspull #\pull
> > stmdb r0!, {r4 - r9, ip, lr}
> > bge 12b
> > PLD( cmn r2, #96 )
> > @@ -175,10 +175,10 @@ ENTRY(memmove)
> > 14: ands ip, r2, #28
> > beq 16f
> >
> > -15: mov lr, r3, push #\push
> > +15: mov lr, r3, lspush #\push
> > ldr r3, [r1, #-4]!
> > subs ip, ip, #4
> > - orr lr, lr, r3, pull #\pull
> > + orr lr, lr, r3, lspull #\pull
> > str lr, [r0, #-4]!
> > bgt 15b
> > CALGN( cmp r2, #0 )
> > diff --git a/arch/arm/lib/uaccess.S b/arch/arm/lib/uaccess.S
> > index 5c908b1..e505209 100644
> > --- a/arch/arm/lib/uaccess.S
> > +++ b/arch/arm/lib/uaccess.S
> > @@ -117,9 +117,9 @@ USER( TUSER( strgtb) r3, [r0], #1) @ May fault
> > .Lc2u_1fupi: subs r2, r2, #4
> > addmi ip, r2, #4
> > bmi .Lc2u_1nowords
> > - mov r3, r7, pull #8
> > + mov r3, r7, lspull #8
> > ldr r7, [r1], #4
> > - orr r3, r3, r7, push #24
> > + orr r3, r3, r7, lspush #24
> > USER( TUSER( str) r3, [r0], #4) @ May fault
> > mov ip, r0, lsl #32 - PAGE_SHIFT
> > rsb ip, ip, #0
> > @@ -131,30 +131,30 @@ USER( TUSER( str) r3, [r0], #4) @ May fault
> > subs ip, ip, #16
> > blt .Lc2u_1rem8lp
> >
> > -.Lc2u_1cpy8lp: mov r3, r7, pull #8
> > +.Lc2u_1cpy8lp: mov r3, r7, lspull #8
> > ldmia r1!, {r4 - r7}
> > subs ip, ip, #16
> > - orr r3, r3, r4, push #24
> > - mov r4, r4, pull #8
> > - orr r4, r4, r5, push #24
> > - mov r5, r5, pull #8
> > - orr r5, r5, r6, push #24
> > - mov r6, r6, pull #8
> > - orr r6, r6, r7, push #24
> > + orr r3, r3, r4, lspush #24
> > + mov r4, r4, lspull #8
> > + orr r4, r4, r5, lspush #24
> > + mov r5, r5, lspull #8
> > + orr r5, r5, r6, lspush #24
> > + mov r6, r6, lspull #8
> > + orr r6, r6, r7, lspush #24
> > stmia r0!, {r3 - r6} @ Shouldnt fault
> > bpl .Lc2u_1cpy8lp
> >
> > .Lc2u_1rem8lp: tst ip, #8
> > - movne r3, r7, pull #8
> > + movne r3, r7, lspull #8
> > ldmneia r1!, {r4, r7}
> > - orrne r3, r3, r4, push #24
> > - movne r4, r4, pull #8
> > - orrne r4, r4, r7, push #24
> > + orrne r3, r3, r4, lspush #24
> > + movne r4, r4, lspull #8
> > + orrne r4, r4, r7, lspush #24
> > stmneia r0!, {r3 - r4} @ Shouldnt fault
> > tst ip, #4
> > - movne r3, r7, pull #8
> > + movne r3, r7, lspull #8
> > ldrne r7, [r1], #4
> > - orrne r3, r3, r7, push #24
> > + orrne r3, r3, r7, lspush #24
> > TUSER( strne) r3, [r0], #4 @ Shouldnt fault
> > ands ip, ip, #3
> > beq .Lc2u_1fupi
> > @@ -172,9 +172,9 @@ USER( TUSER( strgtb) r3, [r0], #1) @ May fault
> > .Lc2u_2fupi: subs r2, r2, #4
> > addmi ip, r2, #4
> > bmi .Lc2u_2nowords
> > - mov r3, r7, pull #16
> > + mov r3, r7, lspull #16
> > ldr r7, [r1], #4
> > - orr r3, r3, r7, push #16
> > + orr r3, r3, r7, lspush #16
> > USER( TUSER( str) r3, [r0], #4) @ May fault
> > mov ip, r0, lsl #32 - PAGE_SHIFT
> > rsb ip, ip, #0
> > @@ -186,30 +186,30 @@ USER( TUSER( str) r3, [r0], #4) @ May fault
> > subs ip, ip, #16
> > blt .Lc2u_2rem8lp
> >
> > -.Lc2u_2cpy8lp: mov r3, r7, pull #16
> > +.Lc2u_2cpy8lp: mov r3, r7, lspull #16
> > ldmia r1!, {r4 - r7}
> > subs ip, ip, #16
> > - orr r3, r3, r4, push #16
> > - mov r4, r4, pull #16
> > - orr r4, r4, r5, push #16
> > - mov r5, r5, pull #16
> > - orr r5, r5, r6, push #16
> > - mov r6, r6, pull #16
> > - orr r6, r6, r7, push #16
> > + orr r3, r3, r4, lspush #16
> > + mov r4, r4, lspull #16
> > + orr r4, r4, r5, lspush #16
> > + mov r5, r5, lspull #16
> > + orr r5, r5, r6, lspush #16
> > + mov r6, r6, lspull #16
> > + orr r6, r6, r7, lspush #16
> > stmia r0!, {r3 - r6} @ Shouldnt fault
> > bpl .Lc2u_2cpy8lp
> >
> > .Lc2u_2rem8lp: tst ip, #8
> > - movne r3, r7, pull #16
> > + movne r3, r7, lspull #16
> > ldmneia r1!, {r4, r7}
> > - orrne r3, r3, r4, push #16
> > - movne r4, r4, pull #16
> > - orrne r4, r4, r7, push #16
> > + orrne r3, r3, r4, lspush #16
> > + movne r4, r4, lspull #16
> > + orrne r4, r4, r7, lspush #16
> > stmneia r0!, {r3 - r4} @ Shouldnt fault
> > tst ip, #4
> > - movne r3, r7, pull #16
> > + movne r3, r7, lspull #16
> > ldrne r7, [r1], #4
> > - orrne r3, r3, r7, push #16
> > + orrne r3, r3, r7, lspush #16
> > TUSER( strne) r3, [r0], #4 @ Shouldnt fault
> > ands ip, ip, #3
> > beq .Lc2u_2fupi
> > @@ -227,9 +227,9 @@ USER( TUSER( strgtb) r3, [r0], #1) @ May fault
> > .Lc2u_3fupi: subs r2, r2, #4
> > addmi ip, r2, #4
> > bmi .Lc2u_3nowords
> > - mov r3, r7, pull #24
> > + mov r3, r7, lspull #24
> > ldr r7, [r1], #4
> > - orr r3, r3, r7, push #8
> > + orr r3, r3, r7, lspush #8
> > USER( TUSER( str) r3, [r0], #4) @ May fault
> > mov ip, r0, lsl #32 - PAGE_SHIFT
> > rsb ip, ip, #0
> > @@ -241,30 +241,30 @@ USER( TUSER( str) r3, [r0], #4) @ May fault
> > subs ip, ip, #16
> > blt .Lc2u_3rem8lp
> >
> > -.Lc2u_3cpy8lp: mov r3, r7, pull #24
> > +.Lc2u_3cpy8lp: mov r3, r7, lspull #24
> > ldmia r1!, {r4 - r7}
> > subs ip, ip, #16
> > - orr r3, r3, r4, push #8
> > - mov r4, r4, pull #24
> > - orr r4, r4, r5, push #8
> > - mov r5, r5, pull #24
> > - orr r5, r5, r6, push #8
> > - mov r6, r6, pull #24
> > - orr r6, r6, r7, push #8
> > + orr r3, r3, r4, lspush #8
> > + mov r4, r4, lspull #24
> > + orr r4, r4, r5, lspush #8
> > + mov r5, r5, lspull #24
> > + orr r5, r5, r6, lspush #8
> > + mov r6, r6, lspull #24
> > + orr r6, r6, r7, lspush #8
> > stmia r0!, {r3 - r6} @ Shouldnt fault
> > bpl .Lc2u_3cpy8lp
> >
> > .Lc2u_3rem8lp: tst ip, #8
> > - movne r3, r7, pull #24
> > + movne r3, r7, lspull #24
> > ldmneia r1!, {r4, r7}
> > - orrne r3, r3, r4, push #8
> > - movne r4, r4, pull #24
> > - orrne r4, r4, r7, push #8
> > + orrne r3, r3, r4, lspush #8
> > + movne r4, r4, lspull #24
> > + orrne r4, r4, r7, lspush #8
> > stmneia r0!, {r3 - r4} @ Shouldnt fault
> > tst ip, #4
> > - movne r3, r7, pull #24
> > + movne r3, r7, lspull #24
> > ldrne r7, [r1], #4
> > - orrne r3, r3, r7, push #8
> > + orrne r3, r3, r7, lspush #8
> > TUSER( strne) r3, [r0], #4 @ Shouldnt fault
> > ands ip, ip, #3
> > beq .Lc2u_3fupi
> > @@ -382,9 +382,9 @@ USER( TUSER( ldr) r7, [r1], #4) @ May fault
> > .Lcfu_1fupi: subs r2, r2, #4
> > addmi ip, r2, #4
> > bmi .Lcfu_1nowords
> > - mov r3, r7, pull #8
> > + mov r3, r7, lspull #8
> > USER( TUSER( ldr) r7, [r1], #4) @ May fault
> > - orr r3, r3, r7, push #24
> > + orr r3, r3, r7, lspush #24
> > str r3, [r0], #4
> > mov ip, r1, lsl #32 - PAGE_SHIFT
> > rsb ip, ip, #0
> > @@ -396,30 +396,30 @@ USER( TUSER( ldr) r7, [r1], #4) @ May fault
> > subs ip, ip, #16
> > blt .Lcfu_1rem8lp
> >
> > -.Lcfu_1cpy8lp: mov r3, r7, pull #8
> > +.Lcfu_1cpy8lp: mov r3, r7, lspull #8
> > ldmia r1!, {r4 - r7} @ Shouldnt fault
> > subs ip, ip, #16
> > - orr r3, r3, r4, push #24
> > - mov r4, r4, pull #8
> > - orr r4, r4, r5, push #24
> > - mov r5, r5, pull #8
> > - orr r5, r5, r6, push #24
> > - mov r6, r6, pull #8
> > - orr r6, r6, r7, push #24
> > + orr r3, r3, r4, lspush #24
> > + mov r4, r4, lspull #8
> > + orr r4, r4, r5, lspush #24
> > + mov r5, r5, lspull #8
> > + orr r5, r5, r6, lspush #24
> > + mov r6, r6, lspull #8
> > + orr r6, r6, r7, lspush #24
> > stmia r0!, {r3 - r6}
> > bpl .Lcfu_1cpy8lp
> >
> > .Lcfu_1rem8lp: tst ip, #8
> > - movne r3, r7, pull #8
> > + movne r3, r7, lspull #8
> > ldmneia r1!, {r4, r7} @ Shouldnt fault
> > - orrne r3, r3, r4, push #24
> > - movne r4, r4, pull #8
> > - orrne r4, r4, r7, push #24
> > + orrne r3, r3, r4, lspush #24
> > + movne r4, r4, lspull #8
> > + orrne r4, r4, r7, lspush #24
> > stmneia r0!, {r3 - r4}
> > tst ip, #4
> > - movne r3, r7, pull #8
> > + movne r3, r7, lspull #8
> > USER( TUSER( ldrne) r7, [r1], #4) @ May fault
> > - orrne r3, r3, r7, push #24
> > + orrne r3, r3, r7, lspush #24
> > strne r3, [r0], #4
> > ands ip, ip, #3
> > beq .Lcfu_1fupi
> > @@ -437,9 +437,9 @@ USER( TUSER( ldrne) r7, [r1], #4) @ May fault
> > .Lcfu_2fupi: subs r2, r2, #4
> > addmi ip, r2, #4
> > bmi .Lcfu_2nowords
> > - mov r3, r7, pull #16
> > + mov r3, r7, lspull #16
> > USER( TUSER( ldr) r7, [r1], #4) @ May fault
> > - orr r3, r3, r7, push #16
> > + orr r3, r3, r7, lspush #16
> > str r3, [r0], #4
> > mov ip, r1, lsl #32 - PAGE_SHIFT
> > rsb ip, ip, #0
> > @@ -452,30 +452,30 @@ USER( TUSER( ldr) r7, [r1], #4) @ May fault
> > blt .Lcfu_2rem8lp
> >
> >
> > -.Lcfu_2cpy8lp: mov r3, r7, pull #16
> > +.Lcfu_2cpy8lp: mov r3, r7, lspull #16
> > ldmia r1!, {r4 - r7} @ Shouldnt fault
> > subs ip, ip, #16
> > - orr r3, r3, r4, push #16
> > - mov r4, r4, pull #16
> > - orr r4, r4, r5, push #16
> > - mov r5, r5, pull #16
> > - orr r5, r5, r6, push #16
> > - mov r6, r6, pull #16
> > - orr r6, r6, r7, push #16
> > + orr r3, r3, r4, lspush #16
> > + mov r4, r4, lspull #16
> > + orr r4, r4, r5, lspush #16
> > + mov r5, r5, lspull #16
> > + orr r5, r5, r6, lspush #16
> > + mov r6, r6, lspull #16
> > + orr r6, r6, r7, lspush #16
> > stmia r0!, {r3 - r6}
> > bpl .Lcfu_2cpy8lp
> >
> > .Lcfu_2rem8lp: tst ip, #8
> > - movne r3, r7, pull #16
> > + movne r3, r7, lspull #16
> > ldmneia r1!, {r4, r7} @ Shouldnt fault
> > - orrne r3, r3, r4, push #16
> > - movne r4, r4, pull #16
> > - orrne r4, r4, r7, push #16
> > + orrne r3, r3, r4, lspush #16
> > + movne r4, r4, lspull #16
> > + orrne r4, r4, r7, lspush #16
> > stmneia r0!, {r3 - r4}
> > tst ip, #4
> > - movne r3, r7, pull #16
> > + movne r3, r7, lspull #16
> > USER( TUSER( ldrne) r7, [r1], #4) @ May fault
> > - orrne r3, r3, r7, push #16
> > + orrne r3, r3, r7, lspush #16
> > strne r3, [r0], #4
> > ands ip, ip, #3
> > beq .Lcfu_2fupi
> > @@ -493,9 +493,9 @@ USER( TUSER( ldrgtb) r3, [r1], #0) @ May fault
> > .Lcfu_3fupi: subs r2, r2, #4
> > addmi ip, r2, #4
> > bmi .Lcfu_3nowords
> > - mov r3, r7, pull #24
> > + mov r3, r7, lspull #24
> > USER( TUSER( ldr) r7, [r1], #4) @ May fault
> > - orr r3, r3, r7, push #8
> > + orr r3, r3, r7, lspush #8
> > str r3, [r0], #4
> > mov ip, r1, lsl #32 - PAGE_SHIFT
> > rsb ip, ip, #0
> > @@ -507,30 +507,30 @@ USER( TUSER( ldr) r7, [r1], #4) @ May fault
> > subs ip, ip, #16
> > blt .Lcfu_3rem8lp
> >
> > -.Lcfu_3cpy8lp: mov r3, r7, pull #24
> > +.Lcfu_3cpy8lp: mov r3, r7, lspull #24
> > ldmia r1!, {r4 - r7} @ Shouldnt fault
> > - orr r3, r3, r4, push #8
> > - mov r4, r4, pull #24
> > - orr r4, r4, r5, push #8
> > - mov r5, r5, pull #24
> > - orr r5, r5, r6, push #8
> > - mov r6, r6, pull #24
> > - orr r6, r6, r7, push #8
> > + orr r3, r3, r4, lspush #8
> > + mov r4, r4, lspull #24
> > + orr r4, r4, r5, lspush #8
> > + mov r5, r5, lspull #24
> > + orr r5, r5, r6, lspush #8
> > + mov r6, r6, lspull #24
> > + orr r6, r6, r7, lspush #8
> > stmia r0!, {r3 - r6}
> > subs ip, ip, #16
> > bpl .Lcfu_3cpy8lp
> >
> > .Lcfu_3rem8lp: tst ip, #8
> > - movne r3, r7, pull #24
> > + movne r3, r7, lspull #24
> > ldmneia r1!, {r4, r7} @ Shouldnt fault
> > - orrne r3, r3, r4, push #8
> > - movne r4, r4, pull #24
> > - orrne r4, r4, r7, push #8
> > + orrne r3, r3, r4, lspush #8
> > + movne r4, r4, lspull #24
> > + orrne r4, r4, r7, lspush #8
> > stmneia r0!, {r3 - r4}
> > tst ip, #4
> > - movne r3, r7, pull #24
> > + movne r3, r7, lspull #24
> > USER( TUSER( ldrne) r7, [r1], #4) @ May fault
> > - orrne r3, r3, r7, push #8
> > + orrne r3, r3, r7, lspush #8
> > strne r3, [r0], #4
> > ands ip, ip, #3
> > beq .Lcfu_3fupi
> > --
> > 1.8.1.4
> >
>
> _______________________________________________
> linaro-kernel mailing list
> linaro-kernel at lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-kernel
^ permalink raw reply
* [PATCH 0/2] Armada 375/38x MBus support
From: Ezequiel Garcia @ 2014-02-11 15:55 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392060298-27094-1-git-send-email-ezequiel.garcia@free-electrons.com>
On Mon, Feb 10, 2014 at 04:24:56PM -0300, Ezequiel Garcia wrote:
> As part of the submission of the Armada 375/38x initial support, these
> two small patches add MBus support.
>
> You will find that despite the MBus support being identical for the whole
> SoC family: Armada 370/XP/375 and 38x, we have per-SoC compatible for each
> of them.
>
> Such decision is being currently discussed; see:
>
> http://www.spinics.net/lists/arm-kernel/msg306480.html
>
These patches are not required, so please omit them entirely.
The new agreement [1] is to add SoC-specific compatible strings and also
declare the nodes as compatibles with the already supported SoC,
whenever appropriate.
For instance, the devicetrees for Armada 375 would have this mbus node:
mbus {
compatible = "marvell,armada375-mbus", "marvell,armada370-mbus"
}
And therefore, we don't need any changes in the driver for now.
[1] http://www.spinics.net/lists/arm-kernel/msg306727.html
--
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
^ permalink raw reply
* [PATCH v2] ARM: asm: rename logical shift macros push pull into lspush lspull
From: Dave Martin @ 2014-02-11 15:59 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20140211155437.GC3035@e103592.cambridge.arm.com>
On Tue, Feb 11, 2014 at 03:54:37PM +0000, Dave Martin wrote:
> On Mon, Feb 10, 2014 at 04:30:01PM -0500, Nicolas Pitre wrote:
> > On Mon, 10 Feb 2014, Victor Kamensky wrote:
> >
> > > Renames logical shift macros, 'push' and 'pull', defined in
> > > arch/arm/include/asm/assembler.h, into 'lspush' and 'lspull'.
> >
> > I don't have any fundamental objection to the idea, except maybe for the
> > actual names. I just can't come up with anything better though.
>
> For consistency with the get_byte_ stuff, how about:
>
> push -> towards_byte_0
> pull -> from_byte_0
>
> That may make the purpose a little clearer, too.
>
> (Assuming I've got them the right way around...)
(Actually, I did get it the wrong way round by the look of it.
But you get the general idea.)
Cheers
---Dave
^ permalink raw reply
* [PATCH 0/2] Marvell Armada 375 and 38x timer support
From: Ezequiel Garcia @ 2014-02-11 16:03 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392059274-26965-1-git-send-email-ezequiel.garcia@free-electrons.com>
Daniel,
On Mon, Feb 10, 2014 at 04:07:52PM -0300, Ezequiel Garcia wrote:
>
> This small series adds support for the two new Marvell ARM SoCs:
> the Armada 375 and Armada 38x.
>
Please omit these patches entirely, we don't need them.
The new agreement [1] is to add SoC-specific compatible strings and also
declare the nodes as compatibles with the already supported SoC,
whenever appropriate.
[..]
> The A375 SoC timer is modeled matching the A370 timer, while the
> A38x SoC timer is modeled matching the AXP timer.
>
So, as per the statement above, the devicetree for Armada 375 and
Armada 38x would have these timer nodes, respectively:
timer {
compatible = "marvell,armada-375-timer", "marvell,armada-370-timer"
}
timer {
compatible = "marvell,armada-380-timer", "marvell,armada-xp-timer"
}
(Because the Armada 375 timer uses the provided parent clock, whereas the
Armada 380 timer uses the fixed 25 MHz clock).
Therefore, we don't need any changes in the clocksource driver for now.
[1] http://www.spinics.net/lists/arm-kernel/msg306727.html
--
Ezequiel Garc?a, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
^ permalink raw reply
* [PATCH] phy-core: Don't allow building phy-core as a module
From: Hans de Goede @ 2014-02-11 16:03 UTC (permalink / raw)
To: linux-arm-kernel
include/phy/phy.h has stub code in there for when building without the
phy-core enabled. This is useful for generic drivers such as ahci-platform,
ehci-platoform and ohci-platform which have support for driving an optional
phy passed to them through the devicetree.
Since on some boards this phy functionality is not needed, being able to
disable the phy subsystem without needing a lot of #ifdef magic in the
driver using it is quite useful.
However this breaks when the module using the phy subsystem is build-in and
the phy-core is not, which leads to the build failing with missing symbol
errors in the linking stage of the zImage.
Which leads to gems such as this being added to the Kconfig for achi_platform:
depends on GENERIC_PHY || !GENERIC_PHY
Rather then duplicating this code in a lot of places using the phy-core,
I believe it is better to simply not allow the phy-core to be built as a
module. The phy core is quite small and has no external dependencies, so
always building it in when enabling it should not be an issue.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/phy/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index 6070c99..6e336b4 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -5,7 +5,7 @@
menu "PHY Subsystem"
config GENERIC_PHY
- tristate "PHY Core"
+ bool "PHY Core"
help
Generic PHY support.
--
1.8.5.3
^ permalink raw reply related
* [RFC PATCH V2 3/4] arm64: mm: Enable HAVE_RCU_TABLE_FREE logic
From: Steve Capper @ 2014-02-11 16:08 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20140211154229.GF3748@arm.com>
On Tue, Feb 11, 2014 at 03:42:29PM +0000, Catalin Marinas wrote:
> Hi Steve,
>
> On Thu, Feb 06, 2014 at 04:18:50PM +0000, Steve Capper wrote:
> > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> > index 6d4dd22..129bd6a 100644
> > --- a/arch/arm64/Kconfig
> > +++ b/arch/arm64/Kconfig
> > @@ -28,6 +28,7 @@ config ARM64
> > select HAVE_HW_BREAKPOINT if PERF_EVENTS
> > select HAVE_MEMBLOCK
> > select HAVE_PERF_EVENTS
> > + select HAVE_RCU_TABLE_FREE
> > select IRQ_DOMAIN
> > select MODULES_USE_ELF_RELA
> > select NO_BOOTMEM
> > diff --git a/arch/arm64/include/asm/tlb.h b/arch/arm64/include/asm/tlb.h
> > index 717031a..8999823 100644
> > --- a/arch/arm64/include/asm/tlb.h
> > +++ b/arch/arm64/include/asm/tlb.h
> > @@ -27,12 +27,33 @@
> >
> > #define MMU_GATHER_BUNDLE 8
> >
> > +static inline void __tlb_remove_table(void *_table)
> > +{
> > + free_page_and_swap_cache((struct page *)_table);
> > +}
>
> I think you can reduce your patch to just the above (and a linux/swap.h
> include) after the arm64 conversion to generic mmu_gather below.
>
> I cc'ed Peter Z for a sanity check, some of the code is close to
> https://lkml.org/lkml/2011/3/7/302, only that it's under arch/arm64.
>
> And, of course, it needs a lot more testing.
Okay, cheers Catalin, I'll give that a go.
Cheers,
--
Steve
^ permalink raw reply
* [RFC PATCH V2 4/4] arm64: mm: implement get_user_pages_fast
From: Steve Capper @ 2014-02-11 16:13 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20140211154859.GG3748@arm.com>
On Tue, Feb 11, 2014 at 03:48:59PM +0000, Catalin Marinas wrote:
> On Thu, Feb 06, 2014 at 04:18:51PM +0000, Steve Capper wrote:
> > An implementation of get_user_pages_fast for arm64. It is based on the
> > arm implementation (it has the added ability to walk huge puds) which
> > is loosely on the PowerPC implementation. We disable interrupts in the
> > walker to prevent the call_rcu_sched pagetable freeing code from
> > running under us.
> >
> > We also explicitly fire an IPI in the Transparent HugePage splitting
> > case to prevent splits from interfering with the fast_gup walker.
> > As THP splits are relatively rare, this should not have a noticable
> > overhead.
> >
> > Signed-off-by: Steve Capper <steve.capper@linaro.org>
> > ---
> > arch/arm64/include/asm/pgtable.h | 4 +
> > arch/arm64/mm/Makefile | 2 +-
> > arch/arm64/mm/gup.c | 297 +++++++++++++++++++++++++++++++++++++++
>
> Why don't you make a generic gup.c implementation and let architectures
> select it? I don't see much arm64-specific code in here.
Certainly ARM and ARM64 will happily share the code and other
architectures use basically the same technique in most places so could
probably make use of a tweaked version.
I'll generalise gup.c in the next revision of this series.
Cheers,
--
Steve
^ permalink raw reply
* Re: [PATCH] video: imxfb: Use regulator API with LCD class for powering
From: Alexander Shiyan @ 2014-02-11 16:21 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <52FA2170.3040900@ti.com>
???????, 11 ??????? 2014, 15:11 +02:00 ?? Tomi Valkeinen <tomi.valkeinen@ti.com>:
> On 11/02/14 04:43, Shawn Guo wrote:
> > Acked-by: Shawn Guo <shawn.guo@linaro.org>
>
> Thanks. Queued for 3.15.
Thanks.
Tomi, can you additionally apply patch from Denis Carikli to allow
have DT-only kernels with i.MX FB driver?
http://www.spinics.net/lists/arm-kernel/msg302499.html
---
^ permalink raw reply
* [RFC/PATCH v2] ARM: vDSO gettimeofday using generic timer architecture
From: Nathan Lynch @ 2014-02-11 16:23 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20140211104553.GD8693@mudshark.cambridge.arm.com>
On 02/11/2014 04:45 AM, Will Deacon wrote:
> On Mon, Feb 10, 2014 at 11:57:19PM +0000, Nathan Lynch wrote:
>>
>> Right, this stuff doesn't appear to be necessary. Removed the vmap,
>> get_page, and ClearPageReserved calls for v3.
>
> Can you make the corresponding change for arm64 too, please?
Yes, will do.
>>>> +static long clock_gettime_fallback(clockid_t _clkid, struct timespec *_ts)
>>>> +{
>>>> + register struct timespec *ts asm("r1") = _ts;
>>>> + register clockid_t clkid asm("r0") = _clkid;
>>>> + register long ret asm ("r0");
>>>> + register long nr asm("r7") = __NR_clock_gettime;
>>>> +
>>>> + asm("swi #0" : "=r" (ret) : "r" (clkid), "r" (ts), "r" (nr) : "memory");
>
> Might be worth making this volatile, rather than depend on the use of ret.
Okay.
> Also, placing both _clkid and ret into "r0" worries me slightly -- is GCC
> smart enough to realise that writing to ret kills _clkid?
I pretty much lifted this from an example in the GCC manual:
register int *p1 asm ("r0") = ...;
register int *p2 asm ("r1") = ...;
register int *result asm ("r0");
asm ("sysint" : "=r" (result) : "0" (p1), "r" (p2));
http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Extended-Asm.html
I guess it doesn't directly answer your concern, but it's an indication
that GCC developers have this use case in mind.
^ permalink raw reply
* [PATCH 0/8] of_find_matching_node/of_match_node -> of_find_matching_node_and_match
From: Josh Cartwright @ 2014-02-11 16:23 UTC (permalink / raw)
To: linux-arm-kernel
This patchset updates users of the of_find_matching_node()/of_match_node() pair
to leverage of_find_matching_node_and_match(), which only requires one walk
through the match table. This functionality was added by Stephen Warren[1], and
landed in v3.8.
Cc: Stephen Warren <swarren@nvidia.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
1: 50c8af4cf9 (of: introduce for_each_matching_node_and_match())
Josh Cartwright (8):
bus: arm-cci: make use of of_find_matching_node_and_match
bus: mvebu-mbus: make use of of_find_matching_node_and_match
ARM: at91: make use of of_find_matching_node_and_match
ARM: mvebu: make use of of_find_matching_node_and_match
ARM: prima2: make use of of_find_matching_node_and_match
ARM: l2x0: make use of of_find_matching_node_and_match
C6X: make use of of_find_matching_node_and_match
cpufreq: ppc: make use of of_find_matching_node_and_match
arch/arm/mach-at91/setup.c | 16 ++++------------
arch/arm/mach-mvebu/system-controller.c | 9 ++++-----
arch/arm/mach-prima2/l2x0.c | 7 ++++---
arch/arm/mm/cache-l2x0.c | 5 +++--
arch/c6x/platforms/plldata.c | 7 +++----
drivers/bus/arm-cci.c | 5 +++--
drivers/bus/mvebu-mbus.c | 3 +--
drivers/cpufreq/ppc-corenet-cpufreq.c | 3 +--
8 files changed, 23 insertions(+), 32 deletions(-)
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply
* [PATCH 1/8] bus: arm-cci: make use of of_find_matching_node_and_match
From: Josh Cartwright @ 2014-02-11 16:23 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392135847-30791-1-git-send-email-joshc@codeaurora.org>
Instead of the of_find_matching_node()/of_match_node() pair, which requires two
iterations through the match table, make use of of_find_matching_node_and_match(),
which only iterates through the table once.
This also has the side effect of fixing the following following error hit
during randconfig testing:
drivers/bus/arm-cci.c: In function ?cci_probe?:
drivers/bus/arm-cci.c:976:49: warning: dereferencing ?void *? pointer [enabled by default]
cci_config = of_match_node(arm_cci_matches, np)->data;
^
drivers/bus/arm-cci.c:976:49: error: request for member ?data? in something not a structure or union
Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
---
drivers/bus/arm-cci.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c
index 962fd35..e249cdb2 100644
--- a/drivers/bus/arm-cci.c
+++ b/drivers/bus/arm-cci.c
@@ -962,6 +962,7 @@ static const struct of_device_id arm_cci_ctrl_if_matches[] = {
static int cci_probe(void)
{
+ const struct of_device_id *match;
struct cci_nb_ports const *cci_config;
int ret, i, nb_ace = 0, nb_ace_lite = 0;
struct device_node *np, *cp;
@@ -969,11 +970,11 @@ static int cci_probe(void)
const char *match_str;
bool is_ace;
- np = of_find_matching_node(NULL, arm_cci_matches);
+ np = of_find_matching_node_and_match(NULL, arm_cci_matches, &match);
if (!np)
return -ENODEV;
- cci_config = of_match_node(arm_cci_matches, np)->data;
+ cci_config = match->data;
if (!cci_config)
return -ENODEV;
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related
* [PATCH 2/8] bus: mvebu-mbus: make use of of_find_matching_node_and_match
From: Josh Cartwright @ 2014-02-11 16:24 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392135847-30791-1-git-send-email-joshc@codeaurora.org>
Instead of the of_find_matching_node()/of_match_node() pair, which requires two
iterations through the match table, make use of of_find_matching_node_and_match(),
which only iterates through the table once.
Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
---
drivers/bus/mvebu-mbus.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
index 725c461..31f2c80 100644
--- a/drivers/bus/mvebu-mbus.c
+++ b/drivers/bus/mvebu-mbus.c
@@ -890,13 +890,12 @@ int __init mvebu_mbus_dt_init(void)
const __be32 *prop;
int ret;
- np = of_find_matching_node(NULL, of_mvebu_mbus_ids);
+ np = of_find_matching_node_and_match(NULL, of_mvebu_mbus_ids, &of_id);
if (!np) {
pr_err("could not find a matching SoC family\n");
return -ENODEV;
}
- of_id = of_match_node(of_mvebu_mbus_ids, np);
mbus_state.soc = of_id->data;
prop = of_get_property(np, "controller", NULL);
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related
* [PATCH 3/8] ARM: at91: make use of of_find_matching_node_and_match
From: Josh Cartwright @ 2014-02-11 16:24 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392135847-30791-1-git-send-email-joshc@codeaurora.org>
Instead of the of_find_matching_node()/of_match_node() pair, which requires two
iterations through the match table, make use of of_find_matching_node_and_match(),
which only iterates through the table once.
While we're here, mark the rtsc id table const.
Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
---
arch/arm/mach-at91/setup.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/arch/arm/mach-at91/setup.c b/arch/arm/mach-at91/setup.c
index f7ca97b..e884de8 100644
--- a/arch/arm/mach-at91/setup.c
+++ b/arch/arm/mach-at91/setup.c
@@ -352,7 +352,7 @@ void __init at91_ioremap_matrix(u32 base_addr)
}
#if defined(CONFIG_OF)
-static struct of_device_id rstc_ids[] = {
+static const struct of_device_id rstc_ids[] = {
{ .compatible = "atmel,at91sam9260-rstc", .data = at91sam9_alt_restart },
{ .compatible = "atmel,at91sam9g45-rstc", .data = at91sam9g45_restart },
{ /*sentinel*/ }
@@ -363,7 +363,7 @@ static void at91_dt_rstc(void)
struct device_node *np;
const struct of_device_id *of_id;
- np = of_find_matching_node(NULL, rstc_ids);
+ np = of_find_matching_node_and_match(NULL, rstc_ids, &of_id);
if (!np)
panic("unable to find compatible rstc node in dtb\n");
@@ -371,10 +371,6 @@ static void at91_dt_rstc(void)
if (!at91_rstc_base)
panic("unable to map rstc cpu registers\n");
- of_id = of_match_node(rstc_ids, np);
- if (!of_id)
- panic("AT91: rtsc no restart function available\n");
-
arm_pm_restart = of_id->data;
of_node_put(np);
@@ -392,7 +388,7 @@ static void at91_dt_ramc(void)
struct device_node *np;
const struct of_device_id *of_id;
- np = of_find_matching_node(NULL, ramc_ids);
+ np = of_find_matching_node_and_match(NULL, ramc_ids, &of_id);
if (!np)
panic("unable to find compatible ram controller node in dtb\n");
@@ -402,11 +398,7 @@ static void at91_dt_ramc(void)
/* the controller may have 2 banks */
at91_ramc_base[1] = of_iomap(np, 1);
- of_id = of_match_node(ramc_ids, np);
- if (!of_id)
- pr_warn("AT91: ramc no standby function available\n");
- else
- at91_pm_set_standby(of_id->data);
+ at91_pm_set_standby(of_id->data);
of_node_put(np);
}
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related
* [PATCH 4/8] ARM: mvebu: make use of of_find_matching_node_and_match
From: Josh Cartwright @ 2014-02-11 16:24 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392135847-30791-1-git-send-email-joshc@codeaurora.org>
Instead of the of_find_matching_node()/of_match_node() pair, which requires two
iterations through the match table, make use of of_find_matching_node_and_match(),
which only iterates through the table once.
While we're here, mark the of_system_controller table const.
Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
---
arch/arm/mach-mvebu/system-controller.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/arch/arm/mach-mvebu/system-controller.c b/arch/arm/mach-mvebu/system-controller.c
index a7fb89a..e6e300a 100644
--- a/arch/arm/mach-mvebu/system-controller.c
+++ b/arch/arm/mach-mvebu/system-controller.c
@@ -54,7 +54,7 @@ static const struct mvebu_system_controller orion_system_controller = {
.system_soft_reset = 0x1,
};
-static struct of_device_id of_system_controller_table[] = {
+static const struct of_device_id of_system_controller_table[] = {
{
.compatible = "marvell,orion-system-controller",
.data = (void *) &orion_system_controller,
@@ -90,13 +90,12 @@ void mvebu_restart(enum reboot_mode mode, const char *cmd)
static int __init mvebu_system_controller_init(void)
{
+ const struct of_device_id *match;
struct device_node *np;
- np = of_find_matching_node(NULL, of_system_controller_table);
+ np = of_find_matching_node_and_match(NULL, of_system_controller_table,
+ &match);
if (np) {
- const struct of_device_id *match =
- of_match_node(of_system_controller_table, np);
- BUG_ON(!match);
system_controller_base = of_iomap(np, 0);
mvebu_sc = (struct mvebu_system_controller *)match->data;
of_node_put(np);
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related
* [PATCH 5/8] ARM: prima2: make use of of_find_matching_node_and_match
From: Josh Cartwright @ 2014-02-11 16:24 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392135847-30791-1-git-send-email-joshc@codeaurora.org>
Instead of the of_find_matching_node()/of_match_node() pair, which requires two
iterations through the match table, make use of of_find_matching_node_and_match(),
which only iterates through the table once.
While we're here, mark the prima2_l2x0 table const.
Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
---
arch/arm/mach-prima2/l2x0.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/arm/mach-prima2/l2x0.c b/arch/arm/mach-prima2/l2x0.c
index cbcbe9c..982b0b6 100644
--- a/arch/arm/mach-prima2/l2x0.c
+++ b/arch/arm/mach-prima2/l2x0.c
@@ -28,7 +28,7 @@ static struct l2x0_aux marco_l2x0_aux __initconst = {
.mask = L2X0_AUX_CTRL_MASK,
};
-static struct of_device_id sirf_l2x0_ids[] __initconst = {
+static const struct of_device_id sirf_l2x0_ids[] __initconst = {
{ .compatible = "sirf,prima2-pl310-cache", .data = &prima2_l2x0_aux, },
{ .compatible = "sirf,marco-pl310-cache", .data = &marco_l2x0_aux, },
{},
@@ -36,12 +36,13 @@ static struct of_device_id sirf_l2x0_ids[] __initconst = {
static int __init sirfsoc_l2x0_init(void)
{
+ const struct of_device_id *match;
struct device_node *np;
const struct l2x0_aux *aux;
- np = of_find_matching_node(NULL, sirf_l2x0_ids);
+ np = of_find_matching_node_and_match(NULL, sirf_l2x0_ids, &match);
if (np) {
- aux = of_match_node(sirf_l2x0_ids, np)->data;
+ aux = match->data;
return l2x0_of_init(aux->val, aux->mask);
}
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related
* [PATCH 6/8] ARM: l2x0: make use of of_find_matching_node_and_match
From: Josh Cartwright @ 2014-02-11 16:24 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392135847-30791-1-git-send-email-joshc@codeaurora.org>
Instead of the of_find_matching_node()/of_match_node() pair, which requires two
iterations through the match table, make use of of_find_matching_node_and_match(),
which only iterates through the table once.
Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
---
arch/arm/mm/cache-l2x0.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
index 7abde2c..e35fff3 100644
--- a/arch/arm/mm/cache-l2x0.c
+++ b/arch/arm/mm/cache-l2x0.c
@@ -970,11 +970,12 @@ static const struct of_device_id l2x0_ids[] __initconst = {
int __init l2x0_of_init(u32 aux_val, u32 aux_mask)
{
+ const struct of_device_id *match;
struct device_node *np;
const struct l2x0_of_data *data;
struct resource res;
- np = of_find_matching_node(NULL, l2x0_ids);
+ np = of_find_matching_node_and_match(NULL, l2x0_ids, &match);
if (!np)
return -ENODEV;
@@ -987,7 +988,7 @@ int __init l2x0_of_init(u32 aux_val, u32 aux_mask)
l2x0_saved_regs.phy_base = res.start;
- data = of_match_node(l2x0_ids, np)->data;
+ data = match->data;
/* L2 configuration can only be changed if the cache is disabled */
if (!(readl_relaxed(l2x0_base + L2X0_CTRL) & L2X0_CTRL_EN)) {
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related
* [PATCH v2] clk: respect the clock dependencies in of_clk_init
From: Thomas Petazzoni @ 2014-02-11 16:32 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392054179-28830-1-git-send-email-gregory.clement@free-electrons.com>
Hello,
On Mon, 10 Feb 2014 18:42:59 +0100, Gregory CLEMENT wrote:
> Until now the clock providers were initialized in the order found in
> the device tree. This led to have the dependencies between the clocks
> not respected: children clocks could be initialized before their
> parent clocks.
>
> Instead of forcing each platform to manage its own initialization order,
> this patch adds this work inside the framework itself.
>
> Using the data of the device tree the of_clk_init function now delayed
> the initialization of a clock provider if its parent provider was not
> ready yet.
>
> The strict dependency check (all parents of a given clk must be
> initialized) was added by Boris BREZILLON
>
> Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
> ---
>
> Since the v1, I have merged the strict dependency check from Boris.
> And of course tested on my Armada 370 and Armada XP based board
>
> drivers/clk/clk.c | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
> 1 file changed, 106 insertions(+), 3 deletions(-)
Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
On the newly proposed Armada 375 platform.
Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply
* [PATCH v2 0/2] ohci-/ehci-platform: Change compatible string to generic-?hci
From: Hans de Goede @ 2014-02-11 16:35 UTC (permalink / raw)
To: linux-arm-kernel
Hi Greg,
And here is v2 of my ohci-/ehci-platform fixes for the regression of USB
support on various ARM boards I caused in linux-next.
As expected some people still did not like the ?hci-platform compatible
string I went for in v1, hence this v2. The good news is it seems everyone
seems to be able to live with generic-?hci as compatible now, so it seems this
issue is finally settled.
Please add these 2 patches to your usb-next tree, as said in the cover-letter
of v1, I'm fine with you squashing these into the first 2 patches of my
original series, but if you want them separate to preserve history that is
fine too.
Thanks & Regards,
Hans
^ permalink raw reply
* [PATCH v2 1/2] ohci-platform: Change compatible string from usb-ohci to generic-ohci
From: Hans de Goede @ 2014-02-11 16:35 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392136529-5060-1-git-send-email-hdegoede@redhat.com>
The initial versions of the devicetree enablement patches for ohci-platform
used "ohci-platform" as compatible string. However this was disliked by various
reviewers because the platform bus is a Linux invention and devicetree is
supposed to be OS agnostic. After much discussion I gave up and went with
the generic usb-ohci as requested.
In retro-spect I should have chosen something different, the dts files for many
existing boards already claim to be compatible with "usb-ohci", ie they have:
compatible = "ti,ohci-omap3", "usb-ohci";
In theory this should not be a problem since the "ti,ohci-omap3" entry takes
presedence, but in practice using a conflicting compatible string is an issue,
because it makes which driver gets used depend on driver registration order.
This patch changes the compatible string claimed by ohci-platform to
"generic-ohci", avoiding the driver registration / module loading ordering
problems.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
Documentation/devicetree/bindings/usb/usb-ohci.txt | 4 ++--
drivers/usb/host/ohci-platform.c | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/Documentation/devicetree/bindings/usb/usb-ohci.txt b/Documentation/devicetree/bindings/usb/usb-ohci.txt
index 6933b0c..45f67d9 100644
--- a/Documentation/devicetree/bindings/usb/usb-ohci.txt
+++ b/Documentation/devicetree/bindings/usb/usb-ohci.txt
@@ -1,7 +1,7 @@
USB OHCI controllers
Required properties:
-- compatible : "usb-ohci"
+- compatible : "generic-ohci"
- reg : ohci controller register range (address and length)
- interrupts : ohci controller interrupt
@@ -16,7 +16,7 @@ Optional properties:
Example:
ohci0: usb at 01c14400 {
- compatible = "allwinner,sun4i-a10-ohci", "usb-ohci";
+ compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
reg = <0x01c14400 0x100>;
interrupts = <64>;
clocks = <&usb_clk 6>, <&ahb_gates 2>;
diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c
index e2c28fd..b6ca0b2 100644
--- a/drivers/usb/host/ohci-platform.c
+++ b/drivers/usb/host/ohci-platform.c
@@ -319,7 +319,7 @@ static int ohci_platform_resume(struct device *dev)
#endif /* CONFIG_PM */
static const struct of_device_id ohci_platform_ids[] = {
- { .compatible = "usb-ohci", },
+ { .compatible = "generic-ohci", },
{ }
};
MODULE_DEVICE_TABLE(of, ohci_platform_ids);
--
1.8.5.3
^ permalink raw reply related
* [PATCH v2 2/2] ehci-platform: Change compatible string from usb-ehci to generic-ehci
From: Hans de Goede @ 2014-02-11 16:35 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392136529-5060-1-git-send-email-hdegoede@redhat.com>
The initial versions of the devicetree enablement patches for ehci-platform
used "ehci-platform" as compatible string. However this was disliked by various
reviewers because the platform bus is a Linux invention and devicetree is
supposed to be OS agnostic. After much discussion I gave up, added a:
"depends on !PPC_OF" to Kconfig to avoid a known conflict with PPC-OF platforms
and went with the generic usb-ehci as requested.
In retro-spect I should have chosen something different, the dts files for many
existing boards already claim to be compatible with "usb-ehci", ie they have:
compatible = "ti,ehci-omap", "usb-ehci";
In theory this should not be a problem since the "ti,ehci-omap" entry takes
presedence, but in practice using a conflicting compatible string is an issue,
because it makes which driver gets used depend on driver registration order.
This patch changes the compatible string claimed by ehci-platform to
"generic-ehci", avoiding the driver registration / module loading ordering
problems, and removes the "depends on !PPC_OF" workaround.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
Documentation/devicetree/bindings/usb/usb-ehci.txt | 4 ++--
drivers/usb/host/Kconfig | 1 -
drivers/usb/host/ehci-platform.c | 2 +-
3 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/Documentation/devicetree/bindings/usb/usb-ehci.txt b/Documentation/devicetree/bindings/usb/usb-ehci.txt
index 2c1aeeb..ff151ec 100644
--- a/Documentation/devicetree/bindings/usb/usb-ehci.txt
+++ b/Documentation/devicetree/bindings/usb/usb-ehci.txt
@@ -1,7 +1,7 @@
USB EHCI controllers
Required properties:
- - compatible : should be "usb-ehci".
+ - compatible : should be "generic-ehci".
- reg : should contain at least address and length of the standard EHCI
register set for the device. Optional platform-dependent registers
(debug-port or other) can be also specified here, but only after
@@ -27,7 +27,7 @@ Example (Sequoia 440EPx):
Example (Allwinner sun4i A10 SoC):
ehci0: usb at 01c14000 {
- compatible = "allwinner,sun4i-a10-ehci", "usb-ehci";
+ compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
reg = <0x01c14000 0x100>;
interrupts = <39>;
clocks = <&ahb_gates 1>;
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index e28cbe0..a9707da 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -255,7 +255,6 @@ config USB_EHCI_ATH79
config USB_EHCI_HCD_PLATFORM
tristate "Generic EHCI driver for a platform device"
- depends on !PPC_OF
default n
---help---
Adds an EHCI host driver for a generic platform device, which
diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
index 8fde649..1178730 100644
--- a/drivers/usb/host/ehci-platform.c
+++ b/drivers/usb/host/ehci-platform.c
@@ -333,7 +333,7 @@ static int ehci_platform_resume(struct device *dev)
static const struct of_device_id vt8500_ehci_ids[] = {
{ .compatible = "via,vt8500-ehci", },
{ .compatible = "wm,prizm-ehci", },
- { .compatible = "usb-ehci", },
+ { .compatible = "generic-ehci", },
{}
};
MODULE_DEVICE_TABLE(of, vt8500_ehci_ids);
--
1.8.5.3
^ permalink raw reply related
* [PATCH 2/8] bus: mvebu-mbus: make use of of_find_matching_node_and_match
From: Jason Cooper @ 2014-02-11 16:39 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392135847-30791-3-git-send-email-joshc@codeaurora.org>
On Tue, Feb 11, 2014 at 10:24:00AM -0600, Josh Cartwright wrote:
> Instead of the of_find_matching_node()/of_match_node() pair, which requires two
> iterations through the match table, make use of of_find_matching_node_and_match(),
> which only iterates through the table once.
>
> Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
> ---
> drivers/bus/mvebu-mbus.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
Acked-by: Jason Cooper <jason@lakedaemon.net>
thx,
Jason.
^ permalink raw reply
* [PATCH 4/8] ARM: mvebu: make use of of_find_matching_node_and_match
From: Thomas Petazzoni @ 2014-02-11 16:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1392135847-30791-5-git-send-email-joshc@codeaurora.org>
Dear Josh Cartwright,
On Tue, 11 Feb 2014 10:24:02 -0600, Josh Cartwright wrote:
> Instead of the of_find_matching_node()/of_match_node() pair, which requires two
> iterations through the match table, make use of of_find_matching_node_and_match(),
> which only iterates through the table once.
>
> While we're here, mark the of_system_controller table const.
>
> Signed-off-by: Josh Cartwright <joshc@codeaurora.org>
> ---
> arch/arm/mach-mvebu/system-controller.c | 9 ++++-----
> 1 file changed, 4 insertions(+), 5 deletions(-)
Reviewed-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox