[RFC PATCH] powerpc, qe: add DTS support for parallel I/O ports

Qiang Zhao qiang.zhao at nxp.com
Thu Apr 9 08:58:24 CEST 2020


On 2020/2/18 17:05, Heiko Schocher <hs at denx.de<mailto:hs at denx.de>> wrote:

> -----Original Message-----

> From: Heiko Schocher <hs at denx.de>

> Sent: 2020年2月18日 17:05

> To: U-Boot Mailing List <u-boot at lists.denx.de>

> Cc: Heiko Schocher <hs at denx.de>; Holger Brunck

> <holger.brunck at ch.abb.com>; Mario Six <mario.six at gdsys.cc>; Qiang Zhao

> <qiang.zhao at nxp.com>; Wolfgang Denk <wd at denx.de>

> Subject: [RFC PATCH] powerpc, qe: add DTS support for parallel I/O ports

>

> add DM support for parallel I/O ports on QUICC Engine Block

>

> Signed-off-by: Heiko Schocher <hs at denx.de<mailto:hs at denx.de>>

> ---

>

>

>  arch/powerpc/cpu/mpc83xx/cpu_init.c |   8 ++

>  arch/powerpc/cpu/mpc83xx/qe_io.c    | 193

> +++++++++++++++++++++++++++-

>  include/fsl_qe.h                    |   3 +

>  3 files changed, 201 insertions(+), 3 deletions(-)

>

> diff --git a/arch/powerpc/cpu/mpc83xx/cpu_init.c

> b/arch/powerpc/cpu/mpc83xx/cpu_init.c

> index af8facad53..cfcc16607c 100644

> --- a/arch/powerpc/cpu/mpc83xx/cpu_init.c

> +++ b/arch/powerpc/cpu/mpc83xx/cpu_init.c



How about mpc85xx?



> @@ -11,6 +11,9 @@

>  #ifdef CONFIG_USB_EHCI_FSL

>  #include <usb/ehci-ci.h>

>  #endif

> +#ifdef CONFIG_QE

> +#include <fsl_qe.h>

> +#endif



If include this headfile, the function declaration for qe_init and qe_reset in this file should be removed as below:

extern void qe_init(uint qe_base);

extern void qe_reset(void);



>

>  #include "lblaw/lblaw.h"

>  #include "elbc/elbc.h"

> @@ -27,6 +30,7 @@ extern void qe_config_iopin(u8 port, u8 pin, int dir,

> extern void qe_init(uint qe_base);  extern void qe_reset(void);

>

> +/**

> + * par_io_of_config_node  config

> + * @dev:     pointer to pinctrl device

> + * @pio:      ofnode of pinconfig property

> + */

> +static int par_io_of_config_node(struct udevice *dev, ofnode pio) {

> +   struct qe_io_platdata      *plat = dev->platdata;

> +   volatile qepio83xx_t        *par_io = plat->base;

> +   const unsigned int *pio_map;

> +   int pio_map_len;

> +

> +   pio_map = ofnode_get_property(pio, "pio-map", &pio_map_len);

> +   if (pio_map == NULL)

> +            return -ENOENT;

> +

> +   pio_map_len /= sizeof(unsigned int);

> +   if ((pio_map_len % 6) != 0) {

> +            printk(KERN_ERR "pio-map format wrong!\n");

> +            return -EINVAL;

> +   }

> +

> +   while (pio_map_len > 0) {

> +            /*

> +            * column pio_map[5] from linux (has_irq) not

> +            * supported in u-boot yet.

> +            */



remove or keep pio_map[5] in uboot dts, which is better?



> +

> +const struct pinctrl_ops par_io_pinctrl_ops = {

> +   .set_state = par_io_pinctrl_set_state, };

> +

> +static const struct udevice_id par_io_pinctrl_match[] = {

> +   { .compatible = "fsl,mpc8360-par_io"},

Why is fsl,mpc8360-par_io, maybe fsl,qe-par-io are more better.



> +   { /* sentinel */ }

> +};

> +

> +U_BOOT_DRIVER(par_io_pinctrl) = {

> +   .name = "par-io-pinctrl",

> +   .id = UCLASS_PINCTRL,

> +   .of_match = of_match_ptr(par_io_pinctrl_match),

> +   .probe = par_io_pinctrl_probe,

> +   .ofdata_to_platdata = qe_io_ofdata_to_platdata,

> +   .platdata_auto_alloc_size = sizeof(struct qe_io_platdata),

> +   .ops = &par_io_pinctrl_ops,

> +#if CONFIG_IS_ENABLED(OF_CONTROL)

> && !CONFIG_IS_ENABLED(OF_PLATDATA)

> +   .flags        = DM_FLAG_PRE_RELOC,

> +#endif

> +};

> +#endif

> diff --git a/include/fsl_qe.h b/include/fsl_qe.h index d4eba82436..cb5c91bdf1

> 100644

> --- a/include/fsl_qe.h

> +++ b/include/fsl_qe.h

> @@ -295,4 +295,7 @@ int u_qe_firmware_resume(const struct qe_firmware

> *firmware,

>                      qe_map_t *qe_immrr);

>  #endif

>

> +#if defined(CONFIG_PINCTRL)

> +int par_io_of_config(struct udevice *dev); #endif

>  #endif /* __QE_H__ */



I don’t find this function is called anywhere.



> --

> 2.24.1



Best Regards

Qiang Zhao




More information about the U-Boot mailing list