[U-Boot] [PATCH v3 10/11] cpu: Add MPC83xx CPU driver
Mario Six
mario.six at gdsys.cc
Mon Jun 25 09:34:38 UTC 2018
Hi Simon,
On Fri, May 25, 2018 at 4:42 AM, Simon Glass <sjg at chromium.org> wrote:
> Hi Mario,
>
> On 24 May 2018 at 02:42, Mario Six <mario.six at gdsys.cc> wrote:
>> Add a CPU driver for the MPC83xx architecture.
>>
>> Signed-off-by: Mario Six <mario.six at gdsys.cc>
>>
>> ---
>>
>> v2 -> v3:
>> * Added driver files to MAINTAINERS
>>
>> v1 -> v2:
>> * Removed cpu_print_info
>> * Fixed CPU info printing
>> * Removed usage of uclass_{first,next}_device_compat
>> * Removed printing of reset status
>>
>> ---
>> MAINTAINERS | 2 +
>> arch/powerpc/cpu/mpc83xx/cpu.c | 2 +
>> arch/powerpc/cpu/mpc83xx/cpu_init.c | 2 +
>> arch/powerpc/include/asm/processor.h | 2 +
>> drivers/cpu/Kconfig | 7 +
>> drivers/cpu/Makefile | 1 +
>> drivers/cpu/mpc83xx_cpu.c | 265 +++++++++++++++++++++++++++++++++++
>> drivers/cpu/mpc83xx_cpu.h | 172 +++++++++++++++++++++++
>> include/cpu.h | 1 +
>> 9 files changed, 454 insertions(+)
>> create mode 100644 drivers/cpu/mpc83xx_cpu.c
>> create mode 100644 drivers/cpu/mpc83xx_cpu.h
>>
>> diff --git a/MAINTAINERS b/MAINTAINERS
>> index f03cfcc73b0..11965be1402 100644
>> --- a/MAINTAINERS
>> +++ b/MAINTAINERS
>> @@ -475,6 +475,8 @@ F: drivers/clk/mpc83xx_clk.c
>> F: drivers/clk/mpc83xx_clk.h
>> F: include/dt-bindings/clk/mpc83xx-clk.h
>> F: drivers/timer/mpc83xx_timer.c
>> +F: drivers/cpu/mpc83xx_cpu.c
>> +F: drivers/cpu/mpc83xx_cpu.h
>> F: arch/powerpc/cpu/mpc83xx/
>> F: arch/powerpc/include/asm/arch-mpc83xx/
>>
>> diff --git a/arch/powerpc/cpu/mpc83xx/cpu.c b/arch/powerpc/cpu/mpc83xx/cpu.c
>> index ffb42415feb..b29f271e9bc 100644
>> --- a/arch/powerpc/cpu/mpc83xx/cpu.c
>> +++ b/arch/powerpc/cpu/mpc83xx/cpu.c
>> @@ -25,6 +25,7 @@
>>
>> DECLARE_GLOBAL_DATA_PTR;
>>
>> +#ifndef CONFIG_CPU_MPC83XX
>> int checkcpu(void)
>> {
>> volatile immap_t *immr;
>> @@ -114,6 +115,7 @@ int checkcpu(void)
>>
>> return 0;
>> }
>> +#endif
>>
>> #ifndef CONFIG_SYSRESET
>> int
>> diff --git a/arch/powerpc/cpu/mpc83xx/cpu_init.c b/arch/powerpc/cpu/mpc83xx/cpu_init.c
>> index fcac9f63a81..1555205e069 100644
>> --- a/arch/powerpc/cpu/mpc83xx/cpu_init.c
>> +++ b/arch/powerpc/cpu/mpc83xx/cpu_init.c
>> @@ -464,6 +464,7 @@ static int print_83xx_arb_event(int force)
>> }
>> #endif /* CONFIG_DISPLAY_AER_xxxx */
>>
>> +#ifndef CONFIG_CPU_MPC83XX
>> /*
>> * Figure out the cause of the reset
>> */
>> @@ -505,3 +506,4 @@ int prt_83xx_rsr(void)
>>
>> return 0;
>> }
>> +#endif
>> diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
>> index 6fbe8c46b31..f97ce48cc27 100644
>> --- a/arch/powerpc/include/asm/processor.h
>> +++ b/arch/powerpc/include/asm/processor.h
>> @@ -1325,7 +1325,9 @@ void ll_puts(const char *);
>> /* In misc.c */
>> void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
>>
>> +#ifndef CONFIG_CPU_MPC83XX
>> int prt_83xx_rsr(void);
>> +#endif
>>
>> #endif /* ndef ASSEMBLY*/
>>
>> diff --git a/drivers/cpu/Kconfig b/drivers/cpu/Kconfig
>> index 0d1424d38e9..d4052005e24 100644
>> --- a/drivers/cpu/Kconfig
>> +++ b/drivers/cpu/Kconfig
>> @@ -6,3 +6,10 @@ config CPU
>> multiple CPUs, then normally have to be set up in U-Boot so that
>> they can work correctly in the OS. This provides a framework for
>> finding out information about available CPUs and making changes.
>> +
>> +config CPU_MPC83XX
>> + bool "Enable MPC83xx CPU driver"
>> + depends on CPU
>> + select CLK_MPC83XX
>> + help
>> + Support CPU cores for SoCs of the MPC83xx series.
>> diff --git a/drivers/cpu/Makefile b/drivers/cpu/Makefile
>> index db515f6f177..29d7da42fad 100644
>> --- a/drivers/cpu/Makefile
>> +++ b/drivers/cpu/Makefile
>> @@ -7,3 +7,4 @@
>> obj-$(CONFIG_CPU) += cpu-uclass.o
>>
>> obj-$(CONFIG_ARCH_BMIPS) += bmips_cpu.o
>> +obj-$(CONFIG_CPU_MPC83XX) += mpc83xx_cpu.o
>> diff --git a/drivers/cpu/mpc83xx_cpu.c b/drivers/cpu/mpc83xx_cpu.c
>> new file mode 100644
>> index 00000000000..550a7ad89f1
>> --- /dev/null
>> +++ b/drivers/cpu/mpc83xx_cpu.c
>> @@ -0,0 +1,265 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/*
>> + * (C) Copyright 2018
>> + * Mario Six, Guntermann & Drunck GmbH, mario.six at gdsys.cc
>> + */
>> +
>> +#include <common.h>
>> +#include <dm.h>
>> +#include <cpu.h>
>> +#include <clk.h>
>> +#include <asm/immap_83xx.h>
>> +
>> +#include "mpc83xx_cpu.h"
>> +
>> +struct mpc83xx_cpu_priv {
>> + struct mpc83xx_cpu_info info;
>> +};
>> +
>> +int checkcpu(void)
>> +{
>> + struct udevice *cpu;
>> +
>> + for (uclass_first_device(UCLASS_CPU, &cpu);
>> + cpu;
>> + uclass_next_device(&cpu)) {
>> + }
>
> Can you please create a function in the CPU uclass to do this in a
> separate patch? (probe all CPUs). It should return an error if
> something goes wrong, but not print anything.
>
> Then you can call it here.
>
OK, will add a function like that in v4.
> [...]
>
>> diff --git a/include/cpu.h b/include/cpu.h
>> index 5cc7c5abd72..e1de356b543 100644
>> --- a/include/cpu.h
>> +++ b/include/cpu.h
>> @@ -43,6 +43,7 @@ enum {
>> struct cpu_info {
>> ulong cpu_freq;
>> ulong features;
>> + void *specific_info;
>
> Did you mean to add that?
>
No, that was a development artifact; thanks for noticing!
> Regards,
> Simon
Best regards,
Mario
More information about the U-Boot
mailing list