[U-Boot] [PATCH v3 10/11] cpu: Add MPC83xx CPU driver
Simon Glass
sjg at chromium.org
Fri May 25 02:42:15 UTC 2018
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.
[...]
> 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?
Regards,
Simon
More information about the U-Boot
mailing list