Skip to contentSkip to conversation

armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

PATCH New Gong Qianyu 4 participants 15 messages Feb 22, 2016 – Jul 21, 2016 Arm (32-bit)

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +7 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FSL_LSCH3
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1);
+#endif
+#endif
 }
Signature · 1 line
2.1.0.27.g96db324
#1 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 11 lines

-----Original Message-----
From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Gong Qianyu
Sent: Monday, February 22, 2016 3:35 PM
To: u-boot at lists.denx.de; york sun <[email protected]>; oss at buserror.net
Cc: Qianyu Gong <[email protected]>; Mingkai Hu <[email protected]>
Subject: [U-Boot] [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 6 lines

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

FPGA and NAND access are valid use-case during QSPI boot

So why IFC controller is being disabled from device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c void ft_cpu_setup(void *blob, bd_t *bd) · line 208

Quoted 13 lines
arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)  #ifdef

CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +2 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A

I will suggest to avoid SoC specific defines

--prabhakar

#2 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Hi Prabhakar,

Quoted 27 lines

-----Original Message-----
From: Prabhakar Kushwaha
Sent: Monday, February 22, 2016 7:51 PM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>; oss at buserror.net
Cc: Qianyu Gong <[email protected]>; Mingkai Hu <[email protected]>
Subject: RE: [U-Boot] [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 10 lines

-----Original Message-----
From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Gong Qianyu
Sent: Monday, February 22, 2016 3:35 PM
To: u-boot at lists.denx.de; york sun <[email protected]>; oss at buserror.net
Cc: Qianyu Gong <[email protected]>; Mingkai Hu <[email protected]>
Subject: [U-Boot] [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 6 lines

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

Quoted 4 lines

FPGA and NAND access are valid use-case during QSPI boot

So why IFC controller is being disabled from device tree.

As Mingkai explained, neither FGPA nor NAND is valid when QSPI is enabled on LS1043AQDS.

Quoted 16 lines

arch/arm/cpu/armv8/fsl-layerscape/fdt.c void ft_cpu_setup(void *blob, bd_t *bd) · line 208

Quoted 13 lines
arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)  #ifdef

CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +2 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A

I will suggest to avoid SoC specific defines

Quoted 1 line

--prabhakar

I think only LS1043A needs this fixup for the moment. So if there's any change on new chips, it wouldn't affect them.

Regards,
Qianyu

#3 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

In reply to Gong Qianyu
Quoted 16 lines · Gong Qianyu

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c void ft_cpu_setup(void *blob, bd_t *bd) · line 214

Quoted 10 lines
arch/arm/cpu/armv8/fsl-layerscape/fdt.c +7 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1);
+#endif
+#endif
 }

This muxing is done at runtime, right? It isn't a case of the board hardwiring one or the other? In that case, it should be handled at runtime here as well. At a minimum, allow the user to use hwconfig to choose which they want to be accessible. Ideally there would be something in the device tree to list the reason(s) for a device being disabled, so the OS knows it can regard the device as being enabled if it knows about and enables them all.

-Scott

#4 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Hi Scott,

Quoted 42 lines

-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Tuesday, February 23, 2016 8:12 AM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 16 lines · Gong Qianyu

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)  #ifdef

CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c void ft_cpu_setup(void *blob, bd_t *bd) · line 214

Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/fdt.c +5 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1); #endif #endif
 }

This muxing is done at runtime, right? It isn't a case of the board hardwiring one or the other? In that case, it should be handled at runtime here as well. At a minimum, allow the user to use hwconfig to choose which they want to be accessible. Ideally there would be something in the device tree to list the reason(s) for a device being disabled, so the OS knows it can regard the device as being enabled if it knows about and enables them all.

Quoted 1 line

-Scott

Sorry for the late reply. We have been asking the silicon team for the details of the pin muxing these days.
The conclusion is that all IFC interfaces(cs0/cs1/cs2) are disabled as long as QSPI is enabled on LS1043AQDS board.
As I know, this muxing won't be handled in kernel. Since IFC is disabled in U-Boot, IFC node would better be disabled in kernel as well.
Also in such cases, users have no other choice.

Regards,
Qianyu

#5 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 59 lines

-----Original Message-----
From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Qianyu Gong
Sent: Friday, March 11, 2016 3:49 PM
To: Scott Wood <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [U-Boot] [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Hi Scott,

Quoted 4 lines

-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Tuesday, February 23, 2016 8:12 AM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york

sun

Quoted 29 lines

<[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 23 lines · Gong Qianyu

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)  #ifdef

CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +5 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1); #endif #endif
Quoted 8 lines
Quoted 1 line

}

This muxing is done at runtime, right? It isn't a case of the board hardwiring one or the other? In that case, it should be handled at runtime here as well. At a minimum, allow the user to use hwconfig to choose which they want to be accessible. Ideally there would be something in the device tree to list the reason(s) for a device being disabled, so the OS knows it can regard the device as being enabled if it

knows about and enables them all.

Quoted 2 lines

-Scott

Quoted 8 lines

Sorry for the late reply. We have been asking the silicon team for the details of the pin muxing these days.
The conclusion is that all IFC interfaces(cs0/cs1/cs2) are disabled as long as QSPI is enabled on LS1043AQDS board.
As I know, this muxing won't be handled in kernel. Since IFC is disabled in U- Boot, IFC node would better be disabled in kernel as well.
Also in such cases, users have no other choice.

This may not be always true.

In LS1088A, IFC-FPGA is available during QSPI boot.

--prabhakar

#6 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Hi Prabhakar,

Quoted 79 lines

-----Original Message-----
From: Prabhakar Kushwaha
Sent: Monday, March 28, 2016 4:52 PM
To: Qianyu Gong <[email protected]>; Scott Wood <[email protected]>; u- boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: RE: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 60 lines

-----Original Message-----
From: U-Boot [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Qianyu Gong
Sent: Friday, March 11, 2016 3:49 PM
To: Scott Wood <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [U-Boot] [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Hi Scott,

Quoted 4 lines

-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Tuesday, February 23, 2016 8:12 AM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york

sun

Quoted 32 lines

<[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 17 lines · Gong Qianyu

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 #ifdef

CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c void ft_cpu_setup(void *blob, bd_t *bd) · line 214

Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/fdt.c +5 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1); #endif #endif
 }
Quoted 7 lines

This muxing is done at runtime, right? It isn't a case of the board hardwiring one or the other? In that case, it should be handled at runtime here as well. At a minimum, allow the user to use hwconfig to choose which they want to be accessible. Ideally there would be something in the device tree to list the reason(s) for a device being disabled, so the OS knows it can regard the device as being enabled if it

knows about and enables them all.

Quoted 2 lines

-Scott

Quoted 8 lines

Sorry for the late reply. We have been asking the silicon team for the details of the pin muxing these days.
The conclusion is that all IFC interfaces(cs0/cs1/cs2) are disabled as long as QSPI is enabled on LS1043AQDS board.
As I know, this muxing won't be handled in kernel. Since IFC is disabled in U- Boot, IFC node would better be disabled in kernel as well. Also in such cases, users have no other choice.

Quoted 6 lines

This may not be always true.

In LS1088A, IFC-FPGA is available during QSPI boot.

--prabhakar

Yes, you're right. That's why I added "#ifdef CONFIG_LS1043A". So I think it only affects ls1043a so far.

Regards,
Qianyu

#7 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

In reply to Qianyu Gong
Quoted 52 lines · Qianyu Gong

Hi Scott,

Quoted 48 lines

-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Tuesday, February 23, 2016 8:12 AM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI
enabled

Quoted 23 lines · Gong Qianyu

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)  #ifdef

CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +5 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1); #endif
Quoted 2 lines

#endif
}

This muxing is done at runtime, right? It isn't a case of the board hardwiring one
or the other? In that case, it should be handled at runtime here as well.
At a
minimum, allow the user to use hwconfig to choose which they want to be accessible. Ideally there would be something in the device tree to list the reason(s)
for a device being disabled, so the OS knows it can regard the device as being
enabled if it knows about and enables them all.

Quoted 1 line

-Scott

Quoted 10 lines

Sorry for the late reply. We have been asking the silicon team for the details of the pin
muxing these days.
The conclusion is that all IFC interfaces(cs0/cs1/cs2) are disabled as long as QSPI is
enabled on LS1043AQDS board.
As I know, this muxing won't be handled in kernel. Since IFC is disabled in U-Boot,
IFC node would better be disabled in kernel as well.
Also in such cases, users have no other choice.

Why should the user not have a choice to choose IFC over QSPI? Where is the muxing configured?

-Scott

#8 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Hi Scott,

Quoted 70 lines

-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Wednesday, March 30, 2016 4:45 AM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 51 lines · Qianyu Gong

Hi Scott,

Quoted 47 lines

-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Tuesday, February 23, 2016 8:12 AM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 24 lines · Gong Qianyu

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 #ifdef

CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +5 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1); #endif
Quoted 2 lines

#endif
}

This muxing is done at runtime, right? It isn't a case of the board hardwiring one or the other? In that case, it should be handled at runtime here as well.
At a
minimum, allow the user to use hwconfig to choose which they want to be accessible. Ideally there would be something in the device tree to list the reason(s) for a device being disabled, so the OS knows it can regard the device as being enabled if it knows about and enables them all.

Quoted 1 line

-Scott

Quoted 8 lines

Sorry for the late reply. We have been asking the silicon team for the details of the pin muxing these days.
The conclusion is that all IFC interfaces(cs0/cs1/cs2) are disabled as long as QSPI is enabled on LS1043AQDS board.
As I know, this muxing won't be handled in kernel. Since IFC is disabled in U-Boot, IFC node would better be disabled in kernel as well.
Also in such cases, users have no other choice.

Quoted 4 lines

Why should the user not have a choice to choose IFC over QSPI? Where is the muxing configured?

-Scott

Because this muxing can't be changed at runtime. Two ways so far to configure it:
1. SW6[1-4] switches on ls1043aqds board.
2. Modify QIXIS board config registers and reset the board.

Regards,
Qianyu

#9 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 77 lines · Qianyu Gong

Hi Scott,

Quoted 75 lines

-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Wednesday, March 30, 2016 4:45 AM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI
enabled

Quoted 51 lines · Qianyu Gong

Hi Scott,

Quoted 47 lines

-----Original Message-----
From: Scott Wood [mailto:oss at buserror.net]
Sent: Tuesday, February 23, 2016 8:12 AM
To: Qianyu Gong <[email protected]>; u-boot at lists.denx.de; york sun <[email protected]>
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 24 lines · Gong Qianyu

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0
index 4e4861d..5bb3048 100644
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 #ifdef

CONFIG_FSL_LSCH3

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +5 -0
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1); #endif
Quoted 2 lines

#endif
}

This muxing is done at runtime, right? It isn't a case of the board hardwiring one or the other? In that case, it should be handled at runtime here as well.
At a
minimum, allow the user to use hwconfig to choose which they want to be accessible. Ideally there would be something in the device tree to list the reason(s) for a device being disabled, so the OS knows it can regard the device as being enabled if it knows about and enables them all.

Quoted 1 line

-Scott

Quoted 8 lines

Sorry for the late reply. We have been asking the silicon team for the details of the pin muxing these days.
The conclusion is that all IFC interfaces(cs0/cs1/cs2) are disabled as long as QSPI is enabled on LS1043AQDS board.
As I know, this muxing won't be handled in kernel. Since IFC is disabled in U-Boot, IFC node would better be disabled in kernel as well.
Also in such cases, users have no other choice.

Why should the user not have a choice to choose IFC over QSPI? Where is the
muxing configured?

Quoted 6 lines
Quoted 1 line

-Scott

Because this muxing can't be changed at runtime. Two ways so far to configure it:
1. SW6[1-4] switches on ls1043aqds board.
2. Modify QIXIS board config registers and reset the board.

These sound like runtime to me -- not compile time.

-Scott

#10 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 1 line · Scott Wood

On Wed, 2016-03-30 at 06:20 +0000, Qianyu Gong wrote:

<snip>

Quoted 8 lines
Quoted 5 lines

Because this muxing can't be changed at runtime. Two ways so far to configure it:
1. SW6[1-4] switches on ls1043aqds board.
2. Modify QIXIS board config registers and reset the board.

These sound like runtime to me -- not compile time.

Qianyu,

If one can change mux by either changing switches, or setting QIXIS registers, you should be able to read those status and run the fixup, agree?

York

#11 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Hi York,

Quoted 23 lines

-----Original Message-----
From: york sun
Sent: Wednesday, July 20, 2016 5:58 AM
To: Scott Wood <[email protected]>; Qianyu Gong <[email protected]>; u- boot at lists.denx.de
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 1 line · Scott Wood

On Wed, 2016-03-30 at 06:20 +0000, Qianyu Gong wrote:

<snip>

Quoted 8 lines
Quoted 5 lines

Because this muxing can't be changed at runtime. Two ways so far to configure it:
1. SW6[1-4] switches on ls1043aqds board.
2. Modify QIXIS board config registers and reset the board.

These sound like runtime to me -- not compile time.

Quoted 6 lines

Qianyu,

If one can change mux by either changing switches, or setting QIXIS registers, you should be able to read those status and run the fixup, agree?

York

Yes, we could read QIXIS registers at runtime. But the current argument is that if we need to build two rcw&U-Boot images to support IFC or QSPI, which is already done on LS1021AQDS and LS1043AQDS. This is made at compile time and I just have no idea to solve the rcw issue. So.. how do you think about it?

Regards,
Qianyu

#12 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 30 lines · Qianyu Gong

Hi York,

Quoted 28 lines

-----Original Message-----
From: york sun
Sent: Wednesday, July 20, 2016 5:58 AM
To: Scott Wood <[email protected]>; Qianyu Gong <[email protected]>; u- boot at lists.denx.de
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 1 line · Scott Wood

On Wed, 2016-03-30 at 06:20 +0000, Qianyu Gong wrote:

<snip>

Quoted 8 lines
Quoted 5 lines

Because this muxing can't be changed at runtime. Two ways so far to configure it:
1. SW6[1-4] switches on ls1043aqds board.
2. Modify QIXIS board config registers and reset the board.

These sound like runtime to me -- not compile time.

Qianyu,

If one can change mux by either changing switches, or setting QIXIS registers, you should be able to read those status and run the fixup, agree?

Quoted 7 lines
Quoted 1 line

York

Yes, we could read QIXIS registers at runtime. But the current argument is that if we need to build two rcw&U-Boot images to support IFC or QSPI, which is already done on LS1021AQDS and LS1043AQDS. This is made at compile time and I just have no idea to solve the rcw issue. So.. how do you think about it?

Having different SPL builds is not ideal, but that's what we have. Without introducing another mechanism, we cannot concatenate SPL with different RCW files.

On the other side, if condition can be detected at run time, please do so, even when the condition only applies to one of SPL boot method. We should reduce compile option as much as we can so we have less options to test.

York

#13 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Hi York,

Quoted 53 lines

-----Original Message-----
From: york sun
Sent: Thursday, July 21, 2016 5:25 AM
To: Qianyu Gong <[email protected]>; Scott Wood <[email protected]>; u- boot at lists.denx.de
Cc: Mingkai Hu <[email protected]>; Huan Wang <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 27 lines · Qianyu Gong

Hi York,

Quoted 25 lines

-----Original Message-----
From: york sun
Sent: Wednesday, July 20, 2016 5:58 AM
To: Scott Wood <[email protected]>; Qianyu Gong <[email protected]>; u- boot at lists.denx.de
Cc: Mingkai Hu <[email protected]>
Subject: Re: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

Quoted 1 line · Scott Wood

On Wed, 2016-03-30 at 06:20 +0000, Qianyu Gong wrote:

<snip>

Quoted 8 lines
Quoted 5 lines

Because this muxing can't be changed at runtime. Two ways so far to configure it:
1. SW6[1-4] switches on ls1043aqds board.
2. Modify QIXIS board config registers and reset the board.

These sound like runtime to me -- not compile time.

Qianyu,

Quoted 8 lines
Quoted 4 lines

If one can change mux by either changing switches, or setting QIXIS registers, you should be able to read those status and run the fixup, agree?

York

Yes, we could read QIXIS registers at runtime. But the current argument is that if we need to build two rcw&U-Boot images to support IFC or QSPI, which is already done on LS1021AQDS and LS1043AQDS. This is

made at compile time and I just have no idea to solve the rcw issue.

Quoted 2 lines

So.. how do you think about it?

Having different SPL builds is not ideal, but that's what we have. Without introducing another mechanism, we cannot concatenate SPL with different RCW files.

Quoted 5 lines

On the other side, if condition can be detected at run time, please do so, even when the condition only applies to one of SPL boot method. We should reduce compile option as much as we can so we have less options to test.

York

OK, thanks. I'll have a try.
Since the muxing is board-specific, I'd also like to move it to ft_board_setup().

Regards,
Qianyu

#14 lore raw

PATCH 1/1 armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

In reply to Gong Qianyu

Hi all,

Any comments about this patch? Thanks!

Regards,
Qianyu

Quoted 36 lines

-----Original Message-----
From: Gong Qianyu [mailto:Qianyu.Gong at nxp.com]
Sent: Monday, February 22, 2016 6:05 PM
To: u-boot at lists.denx.de; york sun <[email protected]>; oss at buserror.net
Cc: Mingkai Hu <[email protected]>; Qianyu Gong <[email protected]>
Subject: [PATCH] armv8/fsl-layerscape: add IFC fixup for LS1043A with QSPI enabled

QSPI and IFC are pin-multiplexed on LS1043A. So if QSPI is enabled, IFC should be disabled.
But just disable IFC driver in LS1043A Linux is not enough because mdio-mux will access IFC address space -- actually it accesses FPGA which is connected to IFC CS3. So disable the whole IFC node in Linux device tree.

arch/arm/cpu/armv8/fsl- renamed from arch/arm/cpu/armv8/fsl-layerscape/fdt.c +0 -0

layerscape/fdt.c
index 4e4861d..5bb3048 100644

arch/arm/cpu/armv8/fsl-layerscape/fdt.c +7 -1
@@ -204,4 +204,11 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 #ifdef CONFIG_FSL_LSCH3
 	fdt_fixup_smmu(blob);
 #endif
+
+#ifdef CONFIG_LS1043A
+#ifdef CONFIG_FSL_QSPI
+	do_fixup_by_compat(blob, "fsl,ifc",
+			   "status", "disabled", 8 + 1, 1);
+#endif
+#endif
 }
--

2.1.0.27.g96db324