[U-Boot] [PATCH] fsl_qman: Implement device tree fixup for QBMan on ARM processors

Scott Wood oss at buserror.net
Wed Oct 26 19:58:31 CEST 2016


On Wed, 2016-10-26 at 10:01 -0400, Roy Pledge wrote:
> Add support for device tree fixup for the DPAA1 QBMan nodes in ARM platforms
> 
> Signed-off-by: Roy Pledge <roy.pledge at nxp.com>
> ---
>  arch/arm/cpu/armv8/fsl-layerscape/fdt.c            |   89
> ++++++++++++++++++++
>  .../arm/cpu/armv8/fsl-layerscape/fsl_lsch2_speed.c |    3 +
>  .../include/asm/arch-fsl-layerscape/immap_lsch2.h  |    2 +
>  include/configs/ls1043a_common.h                   |    2 +
>  4 files changed, 96 insertions(+)
> 
> diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
> b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
> index 1a8321b..aedf0e7 100644
> --- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
> +++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
> @@ -25,6 +25,8 @@
>  #ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
>  #include <asm/armv8/sec_firmware.h>
>  #endif
> +#include <asm/io.h>
> +#include <asm/arch/speed.h>
>  
>  int fdt_fixup_phy_connection(void *blob, int offset, phy_interface_t phyc)
>  {
> @@ -32,6 +34,80 @@ int fdt_fixup_phy_connection(void *blob, int offset,
> phy_interface_t phyc)
>  					 phy_string_for_interface(phyc));
>  }
>  
> +#if defined(CONFIG_SYS_DPAA_QBMAN)
> +
> +#define BMAN_IP_REV_1 0xBF8
> +#define BMAN_IP_REV_2 0xBFC
> +void fdt_fixup_bportals(void *blob)
> +{
> +	int off, err;
> +	unsigned int maj, min;
> +	unsigned int ip_cfg;
> +
> +	u32 rev_1 = in_be32(CONFIG_SYS_FSL_BMAN_ADDR + BMAN_IP_REV_1);
> +	u32 rev_2 = in_be32(CONFIG_SYS_FSL_BMAN_ADDR + BMAN_IP_REV_2);
> +	char compat[64];
> +	int compat_len;
> +
> +	maj = (rev_1 >> 8) & 0xff;
> +	min = rev_1 & 0xff;
> +
> +	ip_cfg = rev_2 & 0xff;
> +
> +	compat_len = sprintf(compat, "fsl,bman-portal-%u.%u.%u",
> +			     maj, min, ip_cfg) + 1;
> +	compat_len += sprintf(compat + compat_len, "fsl,bman-portal") + 1;
> +
> +	off = fdt_node_offset_by_compatible(blob, -1, "fsl,bman-portal");
> +	while (off != -FDT_ERR_NOTFOUND) {
> +		err = fdt_setprop(blob, off, "compatible", compat,
> compat_len);
> +		if (err < 0) {
> +			printf("ERROR: unable to create props for %s:
> %s\n",
> +			       fdt_get_name(blob, off, NULL),
> +			       fdt_strerror(err));
> +			return;
> +		}
> +
> +		off = fdt_node_offset_by_compatible(blob, off,
> +						    "fsl,bman-portal");
> +	}
> +}

Please share code with PPC rather than duplicating it.

-Scott



More information about the U-Boot mailing list