Subject: [PATCH v3 9/9] ARM: add initial support for Marvell Berlin SoCs

From: [email-masked] (Sebastian Hesselbarth)
Date: Fri, 08 Nov 2013 09:54:34 +0100

On 11/08/2013 01:58 AM, Jisheng Zhang wrote:
> On Thu, 7 Nov 2013 13:22:35 -0800
> Sebastian Hesselbarth <[email-masked]> wrote:
>> On 11/07/2013 05:20 PM, Arnd Bergmann wrote:
>>> On Thursday 07 November 2013, Sebastian Hesselbarth wrote:
>>>> Actually, IIRC smp_twd does not compile without SMP set, so the above
>>>> should at least be 'HAVE_ARM_TWD if SMP'. If you shrink MULTI_V7 down
>>>> to non-SMP cores, you can disable it and it will fail to compile.
>>>
>>> If there are UP-systems for which TWD is the best clocksource, we should
>>> probably fix the code to allow that configuration. IIRC there were already
>>> patches recently in this area, maybe it's already solved.
>
> The problems is twd is not mandatory in CA9 UP system, so it may not exist.
> However, I got answers from soc people, the BG2CD does configured and enabled
> TWD. so we are lucky and can add HAVE_TWD for BG2CD.

Jisheng,

thanks for backing this up. As I said, I tried it with barebox and TWD
is sufficient for a timer there.

Currently, Linux requires SMP for TWD - but as you confirmed, there are
non-SMP systems with TWD. The build errors below are just from a check
for SMP systems, so if we remove that, TWD should be ready for non-SMP.

I'll see, if I can prepare a patch next week and put it on list.

Sebastian

>> I just tried barebox bootloader to use TWD as timer on berlin2cd and it
>> perfectly works, i.e. with time related commands I can see the timer
>> register decreasing. So the timer is available on this UP SoC.
>
> Yep. It is available.
>
>>
>> As said before, compiling linux without CONFIG_SMP but with
>> CONFIG_HAVE_ARM_TWD gives:
>>
>> warning: (SOC_OMAP5 && ARCH_ROCKCHIP && ARCH_SHMOBILE_MULTI &&
>> MACH_BERLIN_BG2 && MACH_BERLIN_BG2CD) selects HAVE_ARM_TWD which has
>> unmet direct dependencies (SMP)
>>
>> and
>>
>> arch/arm/kernel/smp_twd.c: In function 'twd_local_timer_of_register':
>> arch/arm/kernel/smp_twd.c:391: error: 'setup_max_cpus' undeclared (first
>> use in this function)
>> arch/arm/kernel/smp_twd.c:391: error: (Each undeclared identifier is
>> reported only once
>> arch/arm/kernel/smp_twd.c:391: error: for each function it appears in.)
>> make[1]: *** [arch/arm/kernel/smp_twd.o] Error 1
>>
>> I haven't looked deeper into this, but I guess it will not be hard
>> to make ARM_TWD independent of SMP.