All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wenbin Song <wenbin.song@nxp.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v6 2/2] armv8/fsl-layerscape: fdt: fixup LS1043A rev1 MSI node
Date: Wed, 16 Nov 2016 03:52:49 +0000	[thread overview]
Message-ID: <VI1PR0402MB278359C8AF1616D38C922289F1BE0@VI1PR0402MB2783.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <AM4PR0401MB173273ED1D2CFCB18E4C036F9ABC0@AM4PR0401MB1732.eurprd04.prod.outlook.com>

Hi: york

There is  a bit of change for  MSI node of kernel , so I will update this patch on next version and with new comments you mentioned.     

Best Regards
Wenbin Song


> -----Original Message-----
> From: york sun
> Sent: Tuesday, November 15, 2016 5:36 AM
> To: Wenbin Song <wenbin.song@nxp.com>; albert.u.boot at aribaud.net;
> Mingkai Hu <mingkai.hu@nxp.com>; u-boot at lists.denx.de
> Subject: Re: [PATCH v6 2/2] armv8/fsl-layerscape: fdt: fixup LS1043A rev1 MSI
> node
> 
> On 10/31/2016 08:35 PM, Wenbin song wrote:
> > There are two types of msi node in kernel device tree, one is for
> > LS1043A rev1.1 silicon, the other is for rev1.0.
> 
> This doesn't explain the difference between the two versions. I don't see
> comments below either.
> 
> >
> > According to revision number, fixup the msi node.
> >
> > Signed-off-by: Wenbin Song <wenbin.song@nxp.com>
> > Signed-off-by: Mingkai Hu <mingkai.hu@nxp.com>
> > ---
> > Change in v6:
> > 	None
> > Change in v5:
> > 	Fixup the msi node used on rev1.0 when running on rev1.1.
> > ---
> >  arch/arm/cpu/armv8/fsl-layerscape/Kconfig |   3 +
> >  arch/arm/cpu/armv8/fsl-layerscape/fdt.c   | 115
> ++++++++++++++++++++++++++++++
> >  2 files changed, 118 insertions(+)
> >
> > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
> > b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
> > index f415868..34ac867 100644
> > --- a/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
> > +++ b/arch/arm/cpu/armv8/fsl-layerscape/Kconfig
> > @@ -139,4 +139,7 @@ config HAS_FEATURE_GIC4K_ALIGN
> >         bool
> >         default y if ARCH_LS1043A
> >
> > +config HAS_FEATURE_ENHANCED_MSI
> > +       bool
> > +       default y if ARCH_LS1043A
> >  endmenu
> > diff --git a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
> > b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
> > index 9936be1..e87ba19 100644
> > --- a/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
> > +++ b/arch/arm/cpu/armv8/fsl-layerscape/fdt.c
> > @@ -194,6 +194,118 @@ static void fdt_fixup_gic(void *blob)  }  #endif
> >
> > +#ifdef CONFIG_HAS_FEATURE_ENHANCED_MSI static int
> > +_fdt_fixup_msi_subnode(void *blob, int offset, const char *name,
> > +				  int irq_0, int irq_1, int rev)
> > +{
> > +	int err, sub_offset, len;
> > +	u32 tmp[4][3];
> > +
> > +	sub_offset = fdt_subnode_offset(blob, offset, name);
> > +	if (offset < 0) {
> > +		printf("WARNING: fdt_subnode_offset can't find %s: %s\n",
> > +		       name, fdt_strerror(sub_offset));
> > +		return 0;
> > +	}
> > +
> > +	tmp[0][0] = cpu_to_fdt32(0x0);
> > +	tmp[0][1] = cpu_to_fdt32(irq_0);
> > +	tmp[0][2] = cpu_to_fdt32(0x4);
> > +
> > +	if (rev > REV1_0) {
> > +		tmp[1][0] = cpu_to_fdt32(0x0);
> > +		tmp[1][1] = cpu_to_fdt32(irq_1);
> > +		tmp[1][2] = cpu_to_fdt32(0x4);
> > +		tmp[2][0] = cpu_to_fdt32(0x0);
> > +		tmp[2][1] = cpu_to_fdt32(irq_1 + 1);
> > +		tmp[2][2] = cpu_to_fdt32(0x4);
> > +		tmp[3][0] = cpu_to_fdt32(0x0);
> > +		tmp[3][1] = cpu_to_fdt32(irq_1 + 2);
> > +		tmp[3][2] = cpu_to_fdt32(0x4);
> > +		len = sizeof(tmp);
> 
> Looks like you are adding three more interrupts. Some comments here would
> be nice.
> 
> > +	} else {
> > +		len = sizeof(tmp[0]);
> > +	}
> > +
> > +	err = fdt_setprop(blob, sub_offset, "interrupts", tmp, len);
> > +	if (err < 0) {
> > +		printf("WARNING: fdt_setprop can't set %s from
> node %s: %s\n",
> > +		       "interrupts", name, fdt_strerror(err));
> > +		return 0;
> > +	}
> > +
> > +	return 1;
> > +}
> > +
> > +static int _fdt_fixup_pci_msi(void *blob, const char *name, int rev)
> > +{
> > +	int offset, len, err;
> > +	void *p;
> > +	int val;
> > +	u32 tmp[4][8];
> > +
> > +	offset = fdt_path_offset(blob, name);
> > +	if (offset < 0) {
> > +		printf("WARNING: fdt_path_offset can't find path %s: %s\n",
> > +		       name, fdt_strerror(offset));
> > +		return 0;
> > +	}
> > +
> > +	p = (char *)fdt_getprop(blob, offset, "interrupt-map", &len);
> > +	if (!p || len != sizeof(tmp)) {
> 
> Is the length check always accurate here?
> 
> > +		printf("WARNING: fdt_getprop can't get %s from node %s\n",
> > +		       "interrupt-map", name);
> > +		return 0;
> > +	}
> > +
> > +	memcpy((char *)tmp, p, len);
> > +
> > +	val = fdt32_to_cpu(tmp[0][6]);
> > +	if (rev > REV1_0) {
> > +		tmp[1][6] = cpu_to_fdt32(val + 1);
> > +		tmp[2][6] = cpu_to_fdt32(val + 2);
> > +		tmp[3][6] = cpu_to_fdt32(val + 3);
> > +	} else {
> > +		tmp[1][6] = cpu_to_fdt32(val);
> > +		tmp[2][6] = cpu_to_fdt32(val);
> > +		tmp[3][6] = cpu_to_fdt32(val);
> > +	}
> > +
> > +	err = fdt_setprop(blob, offset, "interrupt-map", tmp, sizeof(tmp));
> > +	if (err < 0) {
> > +		printf("WARNING: fdt_setprop can't set %s from
> node %s: %s.\n",
> > +		       "interrupt-map", name, fdt_strerror(err));
> > +		return 0;
> > +	}
> > +	return 1;
> > +}
> > +
> > +/* Fixup msi to v1_0*/
> > +
> 
> This comment is not accurate. You are fixing msi for both 1.0 and 1.1.
> 
> York

  reply	other threads:[~2016-11-16  3:52 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-01  3:22 [U-Boot] [PATCH v6 1/2] armv8/fsl-layerscape: fdt: fixup LS1043A rev1 GIC node Wenbin song
2016-11-01  3:22 ` [U-Boot] [PATCH v6 2/2] armv8/fsl-layerscape: fdt: fixup LS1043A rev1 MSI node Wenbin song
2016-11-14 21:36   ` york sun
2016-11-16  3:52     ` Wenbin Song [this message]
2016-11-14 21:24 ` [U-Boot] [PATCH v6 1/2] armv8/fsl-layerscape: fdt: fixup LS1043A rev1 GIC node york sun
2016-11-16  9:23   ` Wenbin Song
2016-11-16 17:04     ` york sun
2016-11-17  1:14       ` Wenbin Song
2016-12-08 19:06         ` york sun
2016-12-09  9:58           ` Wenbin Song
2016-12-09 15:47             ` york sun
2017-01-04 19:22             ` york sun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=VI1PR0402MB278359C8AF1616D38C922289F1BE0@VI1PR0402MB2783.eurprd04.prod.outlook.com \
    --to=wenbin.song@nxp.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.