From 509356224b25f5cf19be36176878a659c050fcb8 Mon Sep 17 00:00:00 2001 From: Stuart Yoder Date: Thu, 3 Dec 2015 15:14:04 -0600 Subject: [PATCH 1/7] driver: net: fsl-mc: remove MC firmware version check The MC version numbers provide no meaningful information about binary interface compatibility, so remove the check which refuses to start the MC unless a specific version is found. Version checking is supposed to be done at the individual object level, and individual drivers are responsible for their own version checking. Signed-off-by: Stuart Yoder Acked-by: Prabhakar Kushwaha Reviewed-by: York Sun --- drivers/net/fsl-mc/mc.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/drivers/net/fsl-mc/mc.c b/drivers/net/fsl-mc/mc.c index e1a02d1f3d..bac4610fd9 100644 --- a/drivers/net/fsl-mc/mc.c +++ b/drivers/net/fsl-mc/mc.c @@ -541,19 +541,6 @@ int mc_init(u64 mc_fw_addr, u64 mc_dpc_addr) goto out; } - if (MC_VER_MAJOR != mc_ver_info.major) { - printf("fsl-mc: ERROR: Firmware major version mismatch (found: %d, expected: %d)\n", - mc_ver_info.major, MC_VER_MAJOR); - printf("fsl-mc: Update the Management Complex firmware\n"); - - error = -ENODEV; - goto out; - } - - if (MC_VER_MINOR != mc_ver_info.minor) - printf("fsl-mc: WARNING: Firmware minor version mismatch (found: %d, expected: %d)\n", - mc_ver_info.minor, MC_VER_MINOR); - printf("fsl-mc: Management Complex booted (version: %d.%d.%d, boot status: %#x)\n", mc_ver_info.major, mc_ver_info.minor, mc_ver_info.revision, reg_gsr & GSR_FS_MASK); From 862d9296dd11ec2901dbb1b290262eaed4d85690 Mon Sep 17 00:00:00 2001 From: Mingkai Hu Date: Mon, 7 Dec 2015 16:58:52 +0800 Subject: [PATCH 2/7] armv8/ls1043a: remove print info Remove verbose message for FMan port. Signed-off-by: Mingkai Hu [York Sun: Added commit message] Reviewed-by: York Sun --- drivers/net/fm/ls1043.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/net/fm/ls1043.c b/drivers/net/fm/ls1043.c index cf2cc95a3a..93ba318bf5 100644 --- a/drivers/net/fm/ls1043.c +++ b/drivers/net/fm/ls1043.c @@ -54,11 +54,8 @@ phy_interface_t fman_port_enet_if(enum fm_port port) struct ccsr_gur *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); u32 rcwsr13 = in_be32(&gur->rcwsr[13]); - if (is_device_disabled(port)) { - printf("%s:%d: port(%d) is disabled\n", __func__, - __LINE__, port); + if (is_device_disabled(port)) return PHY_INTERFACE_MODE_NONE; - } if ((port == FM1_10GEC1) && (is_serdes_configured(XFI_FM1_MAC9))) return PHY_INTERFACE_MODE_XGMII; @@ -69,15 +66,11 @@ phy_interface_t fman_port_enet_if(enum fm_port port) if (port == FM1_DTSEC3) if ((rcwsr13 & FSL_CHASSIS2_RCWSR13_EC1) == FSL_CHASSIS2_RCWSR13_EC1_DTSEC3_RGMII) { - printf("%s:%d: port(FM1_DTSEC3) is OK\n", - __func__, __LINE__); return PHY_INTERFACE_MODE_RGMII; } if (port == FM1_DTSEC4) if ((rcwsr13 & FSL_CHASSIS2_RCWSR13_EC2) == FSL_CHASSIS2_RCWSR13_EC2_DTSEC4_RGMII) { - printf("%s:%d: port(FM1_DTSEC4) is OK\n", - __func__, __LINE__); return PHY_INTERFACE_MODE_RGMII; } From 2949ae521200ae5758ae395a364fcb4e85f899c0 Mon Sep 17 00:00:00 2001 From: Mingkai Hu Date: Mon, 7 Dec 2015 16:58:53 +0800 Subject: [PATCH 3/7] armv8/fsl_lsch2: fix DCSR_DCFG address Signed-off-by: Mingkai Hu Reviewed-by: York Sun --- arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h index e7def3ac4a..65a785cd28 100644 --- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h +++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h @@ -11,7 +11,7 @@ #define CONFIG_SYS_IMMR 0x01000000 #define CONFIG_SYS_DCSRBAR 0x20000000 -#define CONFIG_SYS_DCSR_DCFG_ADDR (CONFIG_SYS_DCSRBAR + 0x00220000) +#define CONFIG_SYS_DCSR_DCFG_ADDR (CONFIG_SYS_DCSRBAR + 0x00140000) #define CONFIG_SYS_FSL_DDR_ADDR (CONFIG_SYS_IMMR + 0x00080000) #define CONFIG_SYS_CCI400_ADDR (CONFIG_SYS_IMMR + 0x00180000) From 0d6faf2bd0d12642e8b2c428d62c285f4ee28b9d Mon Sep 17 00:00:00 2001 From: Mingkai Hu Date: Mon, 7 Dec 2015 16:58:54 +0800 Subject: [PATCH 4/7] armv8/ls1043a: Implement workaround for PEX erratum A009929 Consecutive write transactions from core to PCI express outbound path hangs after 25 to 30 transactions depending on core freq. This erratum enable the mbist clock through COP register setting. Signed-off-by: Mingkai Hu Reviewed-by: York Sun --- arch/arm/cpu/armv8/fsl-layerscape/soc.c | 16 ++++++++++++++++ .../arm/include/asm/arch-fsl-layerscape/config.h | 1 + .../asm/arch-fsl-layerscape/immap_lsch2.h | 1 + 3 files changed, 18 insertions(+) diff --git a/arch/arm/cpu/armv8/fsl-layerscape/soc.c b/arch/arm/cpu/armv8/fsl-layerscape/soc.c index 984eaf903e..23d6b73e3d 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/soc.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/soc.c @@ -197,6 +197,19 @@ int sata_init(void) } #endif +static void erratum_a009929(void) +{ +#ifdef CONFIG_SYS_FSL_ERRATUM_A009929 + struct ccsr_gur *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR; + u32 __iomem *dcsr_cop_ccp = (void *)CONFIG_SYS_DCSR_COP_CCP_ADDR; + u32 rstrqmr1 = gur_in32(&gur->rstrqmr1); + + rstrqmr1 |= 0x00000400; + gur_out32(&gur->rstrqmr1, rstrqmr1); + writel(0x01000000, dcsr_cop_ccp); +#endif +} + void fsl_lsch2_early_init_f(void) { struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR; @@ -216,6 +229,9 @@ void fsl_lsch2_early_init_f(void) */ out_le32(&cci->slave[4].snoop_ctrl, CCI400_DVM_MESSAGE_REQ_EN | CCI400_SNOOP_REQ_EN); + + /* Erratum */ + erratum_a009929(); } #endif diff --git a/arch/arm/include/asm/arch-fsl-layerscape/config.h b/arch/arm/include/asm/arch-fsl-layerscape/config.h index 6e5224ea1c..49b113dc59 100644 --- a/arch/arm/include/asm/arch-fsl-layerscape/config.h +++ b/arch/arm/include/asm/arch-fsl-layerscape/config.h @@ -166,6 +166,7 @@ #define GICD_BASE 0x01401000 #define GICC_BASE 0x01402000 +#define CONFIG_SYS_FSL_ERRATUM_A009929 #else #error SoC not defined #endif diff --git a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h index 65a785cd28..21b803ff0f 100644 --- a/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h +++ b/arch/arm/include/asm/arch-fsl-layerscape/immap_lsch2.h @@ -12,6 +12,7 @@ #define CONFIG_SYS_IMMR 0x01000000 #define CONFIG_SYS_DCSRBAR 0x20000000 #define CONFIG_SYS_DCSR_DCFG_ADDR (CONFIG_SYS_DCSRBAR + 0x00140000) +#define CONFIG_SYS_DCSR_COP_CCP_ADDR (CONFIG_SYS_DCSRBAR + 0x02008040) #define CONFIG_SYS_FSL_DDR_ADDR (CONFIG_SYS_IMMR + 0x00080000) #define CONFIG_SYS_CCI400_ADDR (CONFIG_SYS_IMMR + 0x00180000) From e2f019d78396bdedc4c5b3022c61b03fb2651585 Mon Sep 17 00:00:00 2001 From: Mingkai Hu Date: Mon, 7 Dec 2015 16:58:55 +0800 Subject: [PATCH 5/7] armv8/ls1043ardb/rcw: change core frequency to 1600MHz Change RCW for SD boot and NAND boot. Signed-off-by: Mingkai Hu Reviewed-by: York Sun --- board/freescale/ls1043ardb/ls1043ardb_rcw_nand.cfg | 4 ++-- board/freescale/ls1043ardb/ls1043ardb_rcw_sd.cfg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/board/freescale/ls1043ardb/ls1043ardb_rcw_nand.cfg b/board/freescale/ls1043ardb/ls1043ardb_rcw_nand.cfg index 935ffc0102..d87058b7ef 100644 --- a/board/freescale/ls1043ardb/ls1043ardb_rcw_nand.cfg +++ b/board/freescale/ls1043ardb/ls1043ardb_rcw_nand.cfg @@ -1,7 +1,7 @@ #PBL preamble and RCW header aa55aa55 01ee0100 # serdes protocol -0810000f 0c000000 00000000 00000000 -14550002 80004012 e0106000 61002000 +08100010 0a000000 00000000 00000000 +14550002 80004012 e0106000 c1002000 00000000 00000000 00000000 00038800 00000000 00001100 00000096 00000001 diff --git a/board/freescale/ls1043ardb/ls1043ardb_rcw_sd.cfg b/board/freescale/ls1043ardb/ls1043ardb_rcw_sd.cfg index 28cd95859d..e2ee34b7df 100644 --- a/board/freescale/ls1043ardb/ls1043ardb_rcw_sd.cfg +++ b/board/freescale/ls1043ardb/ls1043ardb_rcw_sd.cfg @@ -1,7 +1,7 @@ #PBL preamble and RCW header aa55aa55 01ee0100 # RCW -0810000f 0c000000 00000000 00000000 -14550002 80004012 60040000 61002000 +08100010 0a000000 00000000 00000000 +14550002 80004012 60040000 c1002000 00000000 00000000 00000000 00038800 00000000 00001100 00000096 00000001 From 1c5c6a5761ace1f26862382438e4b3b850aa065d Mon Sep 17 00:00:00 2001 From: Mingkai Hu Date: Mon, 7 Dec 2015 16:58:56 +0800 Subject: [PATCH 6/7] armv8/ls1043aqds/rcw: change core frequency to 1600MHz Change RCW for SD boot and NAND boot. Signed-off-by: Mingkai Hu Reviewed-by: York Sun --- board/freescale/ls1043aqds/ls1043aqds_rcw_nand.cfg | 4 ++-- board/freescale/ls1043aqds/ls1043aqds_rcw_sd_ifc.cfg | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/board/freescale/ls1043aqds/ls1043aqds_rcw_nand.cfg b/board/freescale/ls1043aqds/ls1043aqds_rcw_nand.cfg index 935ffc0102..d87058b7ef 100644 --- a/board/freescale/ls1043aqds/ls1043aqds_rcw_nand.cfg +++ b/board/freescale/ls1043aqds/ls1043aqds_rcw_nand.cfg @@ -1,7 +1,7 @@ #PBL preamble and RCW header aa55aa55 01ee0100 # serdes protocol -0810000f 0c000000 00000000 00000000 -14550002 80004012 e0106000 61002000 +08100010 0a000000 00000000 00000000 +14550002 80004012 e0106000 c1002000 00000000 00000000 00000000 00038800 00000000 00001100 00000096 00000001 diff --git a/board/freescale/ls1043aqds/ls1043aqds_rcw_sd_ifc.cfg b/board/freescale/ls1043aqds/ls1043aqds_rcw_sd_ifc.cfg index 17a5dd0259..b6b5e0b101 100644 --- a/board/freescale/ls1043aqds/ls1043aqds_rcw_sd_ifc.cfg +++ b/board/freescale/ls1043aqds/ls1043aqds_rcw_sd_ifc.cfg @@ -2,7 +2,7 @@ aa55aa55 01ee0100 # RCW # Enable IFC; disable QSPI -0810000f 0c000000 00000000 00000000 -14550002 80004012 60040000 61002000 +08100010 0a000000 00000000 00000000 +14550002 80004012 60040000 c1002000 00000000 00000000 00000000 00038800 00000000 00001100 00000096 00000001 From ea1332ceb4698b199387b517e640705f93263161 Mon Sep 17 00:00:00 2001 From: Shaohui Xie Date: Fri, 4 Dec 2015 10:22:03 +0800 Subject: [PATCH 7/7] net: fm: disables unused FM1-DTSEC1 MAC node in DTS We don't disable unused FM1-DTSEC1 MAC node in FMAN v2 since it is used by MDIO. For FMAN v3, MDIO uses dedicated controller, so we can disable unused FM1-DTSEC1 MAC node to avoid being probed in Linux. Signed-off-by: Shaohui Xie [York Sun: revised commit message] Reviewed-by: York Sun --- drivers/net/fm/init.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/fm/init.c b/drivers/net/fm/init.c index 3a1de59fd8..7e312f1517 100644 --- a/drivers/net/fm/init.c +++ b/drivers/net/fm/init.c @@ -242,8 +242,10 @@ int ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop) int off; uint32_t ph; phys_addr_t paddr = CONFIG_SYS_CCSRBAR_PHYS + info->compat_offset; +#ifndef CONFIG_SYS_FMAN_V3 u64 dtsec1_addr = (u64)CONFIG_SYS_CCSRBAR_PHYS + CONFIG_SYS_FSL_FM1_DTSEC1_OFFSET; +#endif off = fdt_node_offset_by_compat_reg(blob, prop, paddr); if (off == -FDT_ERR_NOTFOUND) @@ -295,8 +297,10 @@ int ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop) /* board code might have caused offset to change */ off = fdt_node_offset_by_compat_reg(blob, prop, paddr); +#ifndef CONFIG_SYS_FMAN_V3 /* Don't disable FM1-DTSEC1 MAC as its used for MDIO */ if (paddr != dtsec1_addr) +#endif fdt_status_disabled(blob, off); /* disable the MAC node */ /* disable the fsl,dpa-ethernet node that points to the MAC */