All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] Cortina Firmware fixes
@ 2021-08-10  5:50 Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 1/6] env: Kconfig: Add default option for PHY_CORTINA Kuldeep Singh
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Kuldeep Singh @ 2021-08-10  5:50 UTC (permalink / raw)
  To: u-boot; +Cc: Rajesh Bhagat, Priyanka Jain, Kuldeep Singh

Cortina firmware currently supports non-tfa boot support and therefore
incorrect firmware address value is obtained. This patchset is an
attempt to fix cortina firmware.

LS2088A-RDB, T2080RDB and T4240RDB are also updated to incorporate
multiple firmware address values by extending a weak function.

Kuldeep Singh (6):
  env: Kconfig: Add default option for PHY_CORTINA
  configs: Migrate CORTINA_FW_ADDR and CORTINA_FW_LENGTH to Kconfig
  net: cortina: Add support for tfa boot in cortina firmware
  board: ls2088ardb: Extend cs4340_get_fw_addr() functionality
  board: t208x: Extend cs4340_get_fw_addr() functionality
  board: T4240rdb: Extend cs4340_get_fw_addr() functionality

 board/freescale/ls2080ardb/ls2080ardb.c       | 38 +++++++++
 board/freescale/t208xrdb/t208xrdb.c           | 20 +++++
 board/freescale/t208xrdb/t208xrdb.h           |  3 +
 board/freescale/t4rdb/t4240rdb.c              | 19 +++++
 board/freescale/t4rdb/t4rdb.h                 |  3 +
 configs/T2080RDB_NAND_defconfig               |  1 +
 configs/T2080RDB_SDCARD_defconfig             |  1 +
 configs/T2080RDB_SPIFLASH_defconfig           |  1 +
 configs/T2080RDB_defconfig                    |  1 +
 configs/T2080RDB_revD_NAND_defconfig          |  1 +
 configs/T2080RDB_revD_SDCARD_defconfig        |  1 +
 configs/T2080RDB_revD_SPIFLASH_defconfig      |  1 +
 configs/T2080RDB_revD_defconfig               |  1 +
 configs/T4240RDB_SDCARD_defconfig             |  1 +
 configs/T4240RDB_defconfig                    |  1 +
 configs/ls2080ardb_SECURE_BOOT_defconfig      |  1 +
 configs/ls2080ardb_defconfig                  |  1 +
 configs/ls2080ardb_nand_defconfig             |  1 +
 configs/ls2081ardb_defconfig                  |  1 +
 configs/ls2088ardb_qspi_SECURE_BOOT_defconfig |  1 +
 configs/ls2088ardb_qspi_defconfig             |  1 +
 drivers/net/phy/Kconfig                       | 10 +++
 drivers/net/phy/cortina.c                     | 79 ++++++++++++++++---
 env/Kconfig                                   |  2 +-
 include/configs/T208xRDB.h                    |  6 --
 include/configs/T4240RDB.h                    |  2 -
 include/configs/ls2080ardb.h                  | 10 ---
 scripts/config_whitelist.txt                  |  2 -
 28 files changed, 179 insertions(+), 31 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/6] env: Kconfig: Add default option for PHY_CORTINA
  2021-08-10  5:50 [PATCH 0/6] Cortina Firmware fixes Kuldeep Singh
@ 2021-08-10  5:50 ` Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 2/6] configs: Migrate CORTINA_FW_ADDR and CORTINA_FW_LENGTH to Kconfig Kuldeep Singh
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Kuldeep Singh @ 2021-08-10  5:50 UTC (permalink / raw)
  To: u-boot; +Cc: Rajesh Bhagat, Priyanka Jain, Kuldeep Singh

Add PHY_CORTINA as default option in SYS_MMC_ENV_DEV Kconfig entry as
PHY_CORTINA require SYS_MMC_ENV_DEV value similar to FMAN_ENET or QE.
This helps in resolving compilation failure.

Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com>
---
 env/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/env/Kconfig b/env/Kconfig
index 67ff172e3a..c0dff1fd81 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -616,7 +616,7 @@ config SYS_RELOC_GD_ENV_ADDR
 config SYS_MMC_ENV_DEV
 	int "mmc device number"
 	depends on ENV_IS_IN_MMC || ENV_IS_IN_FAT || SYS_LS_PPA_FW_IN_MMC || \
-		CMD_MVEBU_BUBT || FMAN_ENET || QE
+		CMD_MVEBU_BUBT || FMAN_ENET || QE || PHY_CORTINA
 	default 0
 	help
 	  MMC device number on the platform where the environment is stored.
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/6] configs: Migrate CORTINA_FW_ADDR and CORTINA_FW_LENGTH to Kconfig
  2021-08-10  5:50 [PATCH 0/6] Cortina Firmware fixes Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 1/6] env: Kconfig: Add default option for PHY_CORTINA Kuldeep Singh
@ 2021-08-10  5:50 ` Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 3/6] net: cortina: Add support for tfa boot in cortina firmware Kuldeep Singh
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Kuldeep Singh @ 2021-08-10  5:50 UTC (permalink / raw)
  To: u-boot; +Cc: Rajesh Bhagat, Priyanka Jain, Kuldeep Singh

Use moveconfig.py script to convert below defines to Kconfig and move
these entries to defconfigs.
    CONFIG_CORTINA_FW_ADDR
    CONFIG_CORTINA_FW_LENGTH

Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com>
---
 configs/T2080RDB_NAND_defconfig               |  1 +
 configs/T2080RDB_SDCARD_defconfig             |  1 +
 configs/T2080RDB_SPIFLASH_defconfig           |  1 +
 configs/T2080RDB_defconfig                    |  1 +
 configs/T2080RDB_revD_NAND_defconfig          |  1 +
 configs/T2080RDB_revD_SDCARD_defconfig        |  1 +
 configs/T2080RDB_revD_SPIFLASH_defconfig      |  1 +
 configs/T2080RDB_revD_defconfig               |  1 +
 configs/T4240RDB_SDCARD_defconfig             |  1 +
 configs/T4240RDB_defconfig                    |  1 +
 configs/ls2080ardb_SECURE_BOOT_defconfig      |  1 +
 configs/ls2080ardb_defconfig                  |  1 +
 configs/ls2080ardb_nand_defconfig             |  1 +
 configs/ls2081ardb_defconfig                  |  1 +
 configs/ls2088ardb_qspi_SECURE_BOOT_defconfig |  1 +
 configs/ls2088ardb_qspi_defconfig             |  1 +
 drivers/net/phy/Kconfig                       | 10 ++++++++++
 include/configs/T208xRDB.h                    |  6 ------
 include/configs/T4240RDB.h                    |  2 --
 include/configs/ls2080ardb.h                  | 10 ----------
 scripts/config_whitelist.txt                  |  2 --
 21 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/configs/T2080RDB_NAND_defconfig b/configs/T2080RDB_NAND_defconfig
index 95a2c778fc..93d8d4ba56 100644
--- a/configs/T2080RDB_NAND_defconfig
+++ b/configs/T2080RDB_NAND_defconfig
@@ -69,6 +69,7 @@ CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
 CONFIG_SYS_CORTINA_FW_IN_NAND=y
+CONFIG_CORTINA_FW_ADDR=0x200000
 CONFIG_PHY_REALTEK=y
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
diff --git a/configs/T2080RDB_SDCARD_defconfig b/configs/T2080RDB_SDCARD_defconfig
index 21d22df4eb..10598804a1 100644
--- a/configs/T2080RDB_SDCARD_defconfig
+++ b/configs/T2080RDB_SDCARD_defconfig
@@ -66,6 +66,7 @@ CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
 CONFIG_SYS_CORTINA_FW_IN_MMC=y
+CONFIG_CORTINA_FW_ADDR=0x114000
 CONFIG_PHY_REALTEK=y
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
diff --git a/configs/T2080RDB_SPIFLASH_defconfig b/configs/T2080RDB_SPIFLASH_defconfig
index 393b6db286..59963fdf37 100644
--- a/configs/T2080RDB_SPIFLASH_defconfig
+++ b/configs/T2080RDB_SPIFLASH_defconfig
@@ -68,6 +68,7 @@ CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
 CONFIG_SYS_CORTINA_FW_IN_SPIFLASH=y
+CONFIG_CORTINA_FW_ADDR=0x120000
 CONFIG_PHY_REALTEK=y
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
diff --git a/configs/T2080RDB_defconfig b/configs/T2080RDB_defconfig
index 24e927c735..466e91743f 100644
--- a/configs/T2080RDB_defconfig
+++ b/configs/T2080RDB_defconfig
@@ -53,6 +53,7 @@ CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0xEFE00000
 CONFIG_PHY_REALTEK=y
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
diff --git a/configs/T2080RDB_revD_NAND_defconfig b/configs/T2080RDB_revD_NAND_defconfig
index 250c2d5e96..f6eeade2a3 100644
--- a/configs/T2080RDB_revD_NAND_defconfig
+++ b/configs/T2080RDB_revD_NAND_defconfig
@@ -70,6 +70,7 @@ CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
 CONFIG_SYS_CORTINA_FW_IN_NAND=y
+CONFIG_CORTINA_FW_ADDR=0x200000
 CONFIG_PHY_REALTEK=y
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
diff --git a/configs/T2080RDB_revD_SDCARD_defconfig b/configs/T2080RDB_revD_SDCARD_defconfig
index d5eea40797..0286610cb0 100644
--- a/configs/T2080RDB_revD_SDCARD_defconfig
+++ b/configs/T2080RDB_revD_SDCARD_defconfig
@@ -67,6 +67,7 @@ CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
 CONFIG_SYS_CORTINA_FW_IN_MMC=y
+CONFIG_CORTINA_FW_ADDR=0x114000
 CONFIG_PHY_REALTEK=y
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
diff --git a/configs/T2080RDB_revD_SPIFLASH_defconfig b/configs/T2080RDB_revD_SPIFLASH_defconfig
index 4d38f4b978..eb073ce4be 100644
--- a/configs/T2080RDB_revD_SPIFLASH_defconfig
+++ b/configs/T2080RDB_revD_SPIFLASH_defconfig
@@ -69,6 +69,7 @@ CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
 CONFIG_SYS_CORTINA_FW_IN_SPIFLASH=y
+CONFIG_CORTINA_FW_ADDR=0x120000
 CONFIG_PHY_REALTEK=y
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
diff --git a/configs/T2080RDB_revD_defconfig b/configs/T2080RDB_revD_defconfig
index 2ecbabf99e..ab7096e520 100644
--- a/configs/T2080RDB_revD_defconfig
+++ b/configs/T2080RDB_revD_defconfig
@@ -54,6 +54,7 @@ CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0xEFE00000
 CONFIG_PHY_REALTEK=y
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
diff --git a/configs/T4240RDB_SDCARD_defconfig b/configs/T4240RDB_SDCARD_defconfig
index 2230e674fc..c1ca2565e2 100644
--- a/configs/T4240RDB_SDCARD_defconfig
+++ b/configs/T4240RDB_SDCARD_defconfig
@@ -57,6 +57,7 @@ CONFIG_SPI_FLASH_SST=y
 CONFIG_PHYLIB=y
 CONFIG_PHYLIB_10G=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0x77f000
 CONFIG_PHY_TERANETICS=y
 CONFIG_PHY_VITESSE=y
 CONFIG_DM_ETH=y
diff --git a/configs/T4240RDB_defconfig b/configs/T4240RDB_defconfig
index abb2137d91..14594b0579 100644
--- a/configs/T4240RDB_defconfig
+++ b/configs/T4240RDB_defconfig
@@ -45,6 +45,7 @@ CONFIG_SPI_FLASH_SST=y
 CONFIG_PHYLIB=y
 CONFIG_PHYLIB_10G=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0xefe00000
 CONFIG_PHY_TERANETICS=y
 CONFIG_PHY_VITESSE=y
 CONFIG_DM_ETH=y
diff --git a/configs/ls2080ardb_SECURE_BOOT_defconfig b/configs/ls2080ardb_SECURE_BOOT_defconfig
index b1477eac14..365ee87bdb 100644
--- a/configs/ls2080ardb_SECURE_BOOT_defconfig
+++ b/configs/ls2080ardb_SECURE_BOOT_defconfig
@@ -47,6 +47,7 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0x580980000
 CONFIG_E1000=y
 CONFIG_MII=y
 CONFIG_NVME=y
diff --git a/configs/ls2080ardb_defconfig b/configs/ls2080ardb_defconfig
index c107bcddad..cb46f4e4bb 100644
--- a/configs/ls2080ardb_defconfig
+++ b/configs/ls2080ardb_defconfig
@@ -50,6 +50,7 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0x580980000
 CONFIG_E1000=y
 CONFIG_MII=y
 CONFIG_NVME=y
diff --git a/configs/ls2080ardb_nand_defconfig b/configs/ls2080ardb_nand_defconfig
index 6615958ae4..d371fa5e69 100644
--- a/configs/ls2080ardb_nand_defconfig
+++ b/configs/ls2080ardb_nand_defconfig
@@ -58,6 +58,7 @@ CONFIG_SYS_FLASH_CFI=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0x980000
 CONFIG_E1000=y
 CONFIG_MII=y
 CONFIG_NVME=y
diff --git a/configs/ls2081ardb_defconfig b/configs/ls2081ardb_defconfig
index da02de270f..26692b2e73 100644
--- a/configs/ls2081ardb_defconfig
+++ b/configs/ls2081ardb_defconfig
@@ -45,6 +45,7 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0x980000
 CONFIG_E1000=y
 CONFIG_MII=y
 CONFIG_NVME=y
diff --git a/configs/ls2088ardb_qspi_SECURE_BOOT_defconfig b/configs/ls2088ardb_qspi_SECURE_BOOT_defconfig
index 0201fce1a7..bd16602413 100644
--- a/configs/ls2088ardb_qspi_SECURE_BOOT_defconfig
+++ b/configs/ls2088ardb_qspi_SECURE_BOOT_defconfig
@@ -44,6 +44,7 @@ CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0x980000
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
 CONFIG_E1000=y
diff --git a/configs/ls2088ardb_qspi_defconfig b/configs/ls2088ardb_qspi_defconfig
index 336a0a7b32..3a426031b9 100644
--- a/configs/ls2088ardb_qspi_defconfig
+++ b/configs/ls2088ardb_qspi_defconfig
@@ -51,6 +51,7 @@ CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
 CONFIG_PHY_CORTINA=y
+CONFIG_CORTINA_FW_ADDR=0x980000
 CONFIG_DM_ETH=y
 CONFIG_DM_MDIO=y
 CONFIG_E1000=y
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 405bf76753..64d5ddf238 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -131,6 +131,16 @@ config SYS_CORTINA_FW_IN_SPIFLASH
 
 endchoice
 
+config CORTINA_FW_ADDR
+	hex "Cortina Firmware Address"
+	depends on PHY_CORTINA && !SYS_CORTINA_NO_FW_UPLOAD
+	default 0x0
+
+config CORTINA_FW_LENGTH
+	hex "Cortina Firmware Length"
+	depends on PHY_CORTINA && !SYS_CORTINA_NO_FW_UPLOAD
+	default 0x40000
+
 config PHY_CORTINA_ACCESS
 	bool "Cortina Access Ethernet PHYs support"
 	default y
diff --git a/include/configs/T208xRDB.h b/include/configs/T208xRDB.h
index 63cc5af2c6..601e67c80c 100644
--- a/include/configs/T208xRDB.h
+++ b/include/configs/T208xRDB.h
@@ -479,7 +479,6 @@ unsigned long get_board_ddr_clk(void);
  * env, so we got 0x110000.
  */
 #define CONFIG_SYS_FMAN_FW_ADDR		0x110000
-#define CONFIG_CORTINA_FW_ADDR		0x120000
 
 #elif defined(CONFIG_SDCARD)
 /*
@@ -488,11 +487,9 @@ unsigned long get_board_ddr_clk(void);
  * 0x2000 (16 blocks), 8 + 2048 + 16 = 2072, enlarge it to 2080.
  */
 #define CONFIG_SYS_FMAN_FW_ADDR		(512 * 0x820)
-#define CONFIG_CORTINA_FW_ADDR		(512 * 0x8a0)
 
 #elif defined(CONFIG_MTD_RAW_NAND)
 #define CONFIG_SYS_FMAN_FW_ADDR		(3 * CONFIG_SYS_NAND_BLOCK_SIZE)
-#define CONFIG_CORTINA_FW_ADDR		(4 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
 /*
  * Slave has no ucode locally, it can fetch this from remote. When implementing
@@ -502,17 +499,14 @@ unsigned long get_board_ddr_clk(void);
  * master LAW->the ucode address in master's memory space.
  */
 #define CONFIG_SYS_FMAN_FW_ADDR		0xFFE00000
-#define CONFIG_CORTINA_FW_ADDR		0xFFE10000
 #else
 #define CONFIG_SYS_FMAN_FW_ADDR		0xEFF00000
-#define CONFIG_CORTINA_FW_ADDR		0xEFE00000
 #endif
 #define CONFIG_SYS_QE_FMAN_FW_LENGTH	0x10000
 #define CONFIG_SYS_FDT_PAD		(0x3000 + CONFIG_SYS_QE_FMAN_FW_LENGTH)
 #endif /* CONFIG_NOBQFMAN */
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-#define CONFIG_CORTINA_FW_LENGTH	0x40000
 #define RGMII_PHY1_ADDR		0x01  /* RealTek RTL8211E */
 #define RGMII_PHY2_ADDR		0x02
 #define CORTINA_PHY_ADDR1	0x0c  /* Cortina CS4315 */
diff --git a/include/configs/T4240RDB.h b/include/configs/T4240RDB.h
index 57a39fa970..c796b1d7ed 100644
--- a/include/configs/T4240RDB.h
+++ b/include/configs/T4240RDB.h
@@ -517,8 +517,6 @@ unsigned long get_board_ddr_clk(void);
 #endif /* CONFIG_NOBQFMAN */
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-#define CONFIG_CORTINA_FW_ADDR		0xefe00000
-#define CONFIG_CORTINA_FW_LENGTH	0x40000
 #define SGMII_PHY_ADDR1 0x0
 #define SGMII_PHY_ADDR2 0x1
 #define SGMII_PHY_ADDR3 0x2
diff --git a/include/configs/ls2080ardb.h b/include/configs/ls2080ardb.h
index 49c2cc573b..bfbde1da97 100644
--- a/include/configs/ls2080ardb.h
+++ b/include/configs/ls2080ardb.h
@@ -560,14 +560,6 @@ unsigned long get_board_sys_clk(void);
 #endif
 
 /* MAC/PHY configuration */
-#ifdef CONFIG_FSL_MC_ENET
-#ifdef CONFIG_QSPI_BOOT
-#define CONFIG_CORTINA_FW_ADDR		0x20980000
-#else
-#define CONFIG_CORTINA_FW_ADDR		0x580980000
-#endif
-#define CONFIG_CORTINA_FW_LENGTH	0x40000
-
 #define CORTINA_PHY_ADDR1	0x10
 #define CORTINA_PHY_ADDR2	0x11
 #define CORTINA_PHY_ADDR3	0x12
@@ -577,9 +569,7 @@ unsigned long get_board_sys_clk(void);
 #define AQ_PHY_ADDR3		0x02
 #define AQ_PHY_ADDR4		0x03
 #define AQR405_IRQ_MASK		0x36
-
 #define CONFIG_ETHPRIME		"DPMAC1@xgmii"
-#endif
 
 #include <asm/fsl_secure_boot.h>
 
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index dc7806012b..66f03ded77 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -190,8 +190,6 @@ CONFIG_CONS_SCIF1
 CONFIG_CONS_SCIF2
 CONFIG_CONS_SCIF4
 CONFIG_CON_ROT
-CONFIG_CORTINA_FW_ADDR
-CONFIG_CORTINA_FW_LENGTH
 CONFIG_CPLD_BR_PRELIM
 CONFIG_CPLD_OR_PRELIM
 CONFIG_CPM2
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/6] net: cortina: Add support for tfa boot in cortina firmware
  2021-08-10  5:50 [PATCH 0/6] Cortina Firmware fixes Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 1/6] env: Kconfig: Add default option for PHY_CORTINA Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 2/6] configs: Migrate CORTINA_FW_ADDR and CORTINA_FW_LENGTH to Kconfig Kuldeep Singh
@ 2021-08-10  5:50 ` Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 4/6] board: ls2088ardb: Extend cs4340_get_fw_addr() functionality Kuldeep Singh
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Kuldeep Singh @ 2021-08-10  5:50 UTC (permalink / raw)
  To: u-boot; +Cc: Rajesh Bhagat, Priyanka Jain, Kuldeep Singh

Add support for boards supporting TFA boot separately in cortina
firmware. Please note, a weak function is defined to retrieve firmware
address values as CONFIG_CORTINA_FW_ADDR is now defined in defconfig and
can only have one possible value defined. This weak function will help
in overwrting the values to get proper addresses as per boot source.

Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com>
---
 drivers/net/phy/cortina.c | 79 ++++++++++++++++++++++++++++++++++-----
 1 file changed, 69 insertions(+), 10 deletions(-)

diff --git a/drivers/net/phy/cortina.c b/drivers/net/phy/cortina.c
index b381a431fd..2ac0295245 100644
--- a/drivers/net/phy/cortina.c
+++ b/drivers/net/phy/cortina.c
@@ -17,12 +17,11 @@
 #include <linux/err.h>
 #include <phy.h>
 #include <cortina.h>
-#ifdef CONFIG_SYS_CORTINA_FW_IN_NAND
 #include <nand.h>
-#elif defined(CONFIG_SYS_CORTINA_FW_IN_SPIFLASH)
 #include <spi_flash.h>
-#elif defined(CONFIG_SYS_CORTINA_FW_IN_MMC)
 #include <mmc.h>
+#ifdef CONFIG_ARM64
+#include <asm/arch/cpu.h>
 #endif
 
 #ifndef CONFIG_PHYLIB_10G
@@ -124,6 +123,11 @@ struct cortina_reg_config cortina_reg_cfg[] = {
 	{VILLA_LINE_SDS_COMMON_STX0_TX_OUTPUT_CTRLB, 0xc01E},
 };
 
+__weak ulong *cs4340_get_fw_addr(void)
+{
+	return (ulong *)CONFIG_CORTINA_FW_ADDR;
+}
+
 void cs4340_upload_firmware(struct phy_device *phydev)
 {
 	char line_temp[0x50] = {0};
@@ -132,22 +136,76 @@ void cs4340_upload_firmware(struct phy_device *phydev)
 	int i, line_cnt = 0, column_cnt = 0;
 	struct cortina_reg_config fw_temp;
 	char *addr = NULL;
+	ulong cortina_fw_addr = (ulong)cs4340_get_fw_addr();
+
+#ifdef CONFIG_TFABOOT
+	enum boot_src src = get_boot_src();
+
+	if (src == BOOT_SOURCE_IFC_NOR) {
+		addr = (char *)cortina_fw_addr;
+	} else if (src == BOOT_SOURCE_IFC_NAND) {
+		int ret;
+		size_t fw_length = CONFIG_CORTINA_FW_LENGTH;
+
+		addr = malloc(CONFIG_CORTINA_FW_LENGTH);
+		ret = nand_read(get_nand_dev_by_index(0),
+					   (loff_t)cortina_fw_addr,	&fw_length, (u_char *)addr);
+		if (ret == -EUCLEAN) {
+			printf("NAND read of Cortina firmware at 0x%lx failed %d\n",
+				   cortina_fw_addr, ret);
+		}
+	} else if (src == BOOT_SOURCE_QSPI_NOR) {
+		int ret;
+		struct spi_flash *ucode_flash;
 
+		addr = malloc(CONFIG_CORTINA_FW_LENGTH);
+		ucode_flash = spi_flash_probe(CONFIG_ENV_SPI_BUS, CONFIG_ENV_SPI_CS,
+									 CONFIG_ENV_SPI_MAX_HZ, CONFIG_ENV_SPI_MODE);
+		if (!ucode_flash) {
+			puts("SF: probe for Cortina ucode failed\n");
+		} else {
+			ret = spi_flash_read(ucode_flash, cortina_fw_addr,
+								CONFIG_CORTINA_FW_LENGTH, addr);
+			if (ret)
+				puts("SF: read for Cortina ucode failed\n");
+			spi_flash_free(ucode_flash);
+		}
+	} else if (src == BOOT_SOURCE_SD_MMC) {
+		int dev = CONFIG_SYS_MMC_ENV_DEV;
+		u32 cnt = CONFIG_CORTINA_FW_LENGTH / 512;
+		u32 blk = cortina_fw_addr / 512;
+		struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
+
+		if (!mmc) {
+			puts("Failed to find MMC device for Cortina ucode\n");
+		} else {
+			addr = malloc(CONFIG_CORTINA_FW_LENGTH);
+			printf("MMC read: dev # %u, block # %u, count %u ...\n",
+				  dev, blk, cnt);
+			mmc_init(mmc);
+#ifdef CONFIG_BLK
+			(void)blk_dread(mmc_get_blk_desc(mmc), blk, cnt, addr);
+#else
+			(void)mmc->block_dev.block_read(&mmc->block_dev, blk, cnt, addr);
+#endif
+		}
+	}
+#else /* CONFIG_TFABOOT */
 #if defined(CONFIG_SYS_CORTINA_FW_IN_NOR) || \
 	defined(CONFIG_SYS_CORTINA_FW_IN_REMOTE)
 
-	addr = (char *)CONFIG_CORTINA_FW_ADDR;
+	addr = (char *)cortina_fw_addr;
 #elif defined(CONFIG_SYS_CORTINA_FW_IN_NAND)
 	int ret;
 	size_t fw_length = CONFIG_CORTINA_FW_LENGTH;
 
 	addr = malloc(CONFIG_CORTINA_FW_LENGTH);
 	ret = nand_read(get_nand_dev_by_index(0),
-			(loff_t)CONFIG_CORTINA_FW_ADDR,
+			(loff_t)cortina_fw_addr,
 			&fw_length, (u_char *)addr);
 	if (ret == -EUCLEAN) {
-		printf("NAND read of Cortina firmware at 0x%x failed %d\n",
-		       CONFIG_CORTINA_FW_ADDR, ret);
+		printf("NAND read of Cortina firmware at 0x%lx failed %d\n",
+		       cortina_fw_addr, ret);
 	}
 #elif defined(CONFIG_SYS_CORTINA_FW_IN_SPIFLASH)
 	int ret;
@@ -159,7 +217,7 @@ void cs4340_upload_firmware(struct phy_device *phydev)
 	if (!ucode_flash) {
 		puts("SF: probe for Cortina ucode failed\n");
 	} else {
-		ret = spi_flash_read(ucode_flash, CONFIG_CORTINA_FW_ADDR,
+		ret = spi_flash_read(ucode_flash, cortina_fw_addr,
 				     CONFIG_CORTINA_FW_LENGTH, addr);
 		if (ret)
 			puts("SF: read for Cortina ucode failed\n");
@@ -168,7 +226,7 @@ void cs4340_upload_firmware(struct phy_device *phydev)
 #elif defined(CONFIG_SYS_CORTINA_FW_IN_MMC)
 	int dev = CONFIG_SYS_MMC_ENV_DEV;
 	u32 cnt = CONFIG_CORTINA_FW_LENGTH / 512;
-	u32 blk = CONFIG_CORTINA_FW_ADDR / 512;
+	u32 blk = cortina_fw_addr / 512;
 	struct mmc *mmc = find_mmc_device(CONFIG_SYS_MMC_ENV_DEV);
 
 	if (!mmc) {
@@ -186,6 +244,7 @@ void cs4340_upload_firmware(struct phy_device *phydev)
 						addr);
 #endif
 	}
+#endif
 #endif
 
 	while (*addr != 'Q') {
@@ -195,7 +254,7 @@ void cs4340_upload_firmware(struct phy_device *phydev)
 			line_temp[i++] = *addr++;
 			if (0x50 < i) {
 				printf("Not found Cortina PHY ucode at 0x%p\n",
-				       (char *)CONFIG_CORTINA_FW_ADDR);
+				       (char *)cortina_fw_addr);
 				return;
 			}
 		}
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/6] board: ls2088ardb: Extend cs4340_get_fw_addr() functionality
  2021-08-10  5:50 [PATCH 0/6] Cortina Firmware fixes Kuldeep Singh
                   ` (2 preceding siblings ...)
  2021-08-10  5:50 ` [PATCH 3/6] net: cortina: Add support for tfa boot in cortina firmware Kuldeep Singh
@ 2021-08-10  5:50 ` Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 5/6] board: t208x: " Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 6/6] board: T4240rdb: " Kuldeep Singh
  5 siblings, 0 replies; 7+ messages in thread
From: Kuldeep Singh @ 2021-08-10  5:50 UTC (permalink / raw)
  To: u-boot; +Cc: Rajesh Bhagat, Priyanka Jain, Kuldeep Singh

LS2088A-RDB supports TFA boot source and has 2 nor banks(default and
altbank) and QSPI as boot source. The corresponding defconfig can only
have one entry defined and therefore, extend cs4340_get_fw_addr()
function to overwrite firmware address which will be later used in
cortina firmware.

Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com>
---
 board/freescale/ls2080ardb/ls2080ardb.c | 38 +++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/board/freescale/ls2080ardb/ls2080ardb.c b/board/freescale/ls2080ardb/ls2080ardb.c
index 6504cf768f..e8722f20c1 100644
--- a/board/freescale/ls2080ardb/ls2080ardb.c
+++ b/board/freescale/ls2080ardb/ls2080ardb.c
@@ -33,6 +33,9 @@
 #endif
 #include "../common/vid.h"
 
+#define CORTINA_FW_ADDR_IFCNOR			0x580980000
+#define CORTINA_FW_ADDR_IFCNOR_ALTBANK	0x584980000
+#define CORTINA_FW_ADDR_QSPI			0x980000
 #define PIN_MUX_SEL_SDHC	0x00
 #define PIN_MUX_SEL_DSPI	0x0a
 
@@ -235,6 +238,41 @@ int config_board_mux(int ctrl_type)
 	return 0;
 }
 
+ulong *cs4340_get_fw_addr(void)
+{
+#ifdef CONFIG_TFABOOT
+	struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
+	u32 svr = gur_in32(&gur->svr);
+#endif
+	ulong cortina_fw_addr = CONFIG_CORTINA_FW_ADDR;
+
+#ifdef CONFIG_TFABOOT
+	/* LS2088A TFA boot */
+	if (SVR_SOC_VER(svr) == SVR_LS2088A) {
+		enum boot_src src = get_boot_src();
+		u8 sw;
+
+		switch (src) {
+		case BOOT_SOURCE_IFC_NOR:
+			sw = QIXIS_READ(brdcfg[0]);
+			sw = (sw & 0x0f);
+			if (sw == 0)
+				cortina_fw_addr = CORTINA_FW_ADDR_IFCNOR;
+			else if (sw == 4)
+				cortina_fw_addr = CORTINA_FW_ADDR_IFCNOR_ALTBANK;
+			break;
+		case BOOT_SOURCE_QSPI_NOR:
+			/* Only one bank in QSPI */
+			cortina_fw_addr = CORTINA_FW_ADDR_QSPI;
+			break;
+		default:
+			printf("WARNING: Boot source not found\n");
+		}
+	}
+#endif
+	return (ulong *)cortina_fw_addr;
+}
+
 int board_init(void)
 {
 #ifdef CONFIG_FSL_MC_ENET
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/6] board: t208x: Extend cs4340_get_fw_addr() functionality
  2021-08-10  5:50 [PATCH 0/6] Cortina Firmware fixes Kuldeep Singh
                   ` (3 preceding siblings ...)
  2021-08-10  5:50 ` [PATCH 4/6] board: ls2088ardb: Extend cs4340_get_fw_addr() functionality Kuldeep Singh
@ 2021-08-10  5:50 ` Kuldeep Singh
  2021-08-10  5:50 ` [PATCH 6/6] board: T4240rdb: " Kuldeep Singh
  5 siblings, 0 replies; 7+ messages in thread
From: Kuldeep Singh @ 2021-08-10  5:50 UTC (permalink / raw)
  To: u-boot; +Cc: Rajesh Bhagat, Priyanka Jain, Kuldeep Singh

T2080RDB supports booting from 2 nor banks(default and altbank). The
corresponding defconfig can only have one entry defined and therefore,
extend cs4340_get_fw_addr() function to overwrite firmware address which
will be later used in cortina firmware.

Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com>
---
 board/freescale/t208xrdb/t208xrdb.c | 20 ++++++++++++++++++++
 board/freescale/t208xrdb/t208xrdb.h |  3 +++
 2 files changed, 23 insertions(+)

diff --git a/board/freescale/t208xrdb/t208xrdb.c b/board/freescale/t208xrdb/t208xrdb.c
index 1f0cdee0b8..2f61bfcb37 100644
--- a/board/freescale/t208xrdb/t208xrdb.c
+++ b/board/freescale/t208xrdb/t208xrdb.c
@@ -158,3 +158,23 @@ int ft_board_setup(void *blob, struct bd_info *bd)
 
 	return 0;
 }
+
+ulong *cs4340_get_fw_addr(void)
+{
+	ulong cortina_fw_addr = CONFIG_CORTINA_FW_ADDR;
+
+#ifdef CONFIG_SYS_CORTINA_FW_IN_NOR
+	u8 reg;
+
+	reg = CPLD_READ(flash_csr);
+	if (!(reg & CPLD_BOOT_SEL)) {
+		reg = ((reg & CPLD_LBMAP_MASK) >> CPLD_LBMAP_SHIFT);
+		if (reg == 0)
+			cortina_fw_addr = CORTINA_FW_ADDR_IFCNOR;
+		else if (reg == 4)
+			cortina_fw_addr = CORTINA_FW_ADDR_IFCNOR_ALTBANK;
+	}
+#endif
+
+	return (ulong *)cortina_fw_addr;
+}
diff --git a/board/freescale/t208xrdb/t208xrdb.h b/board/freescale/t208xrdb/t208xrdb.h
index edbc860c9d..26998898e8 100644
--- a/board/freescale/t208xrdb/t208xrdb.h
+++ b/board/freescale/t208xrdb/t208xrdb.h
@@ -7,6 +7,9 @@
 #ifndef __CORENET_DS_H__
 #define __CORENET_DS_H__
 
+#define CORTINA_FW_ADDR_IFCNOR				0xefe00000
+#define CORTINA_FW_ADDR_IFCNOR_ALTBANK		0xebe00000
+
 void fdt_fixup_board_enet(void *blob);
 void pci_of_setup(void *blob, struct bd_info *bd);
 void fdt_fixup_board_fman_ethernet(void *blob);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 6/6] board: T4240rdb: Extend cs4340_get_fw_addr() functionality
  2021-08-10  5:50 [PATCH 0/6] Cortina Firmware fixes Kuldeep Singh
                   ` (4 preceding siblings ...)
  2021-08-10  5:50 ` [PATCH 5/6] board: t208x: " Kuldeep Singh
@ 2021-08-10  5:50 ` Kuldeep Singh
  5 siblings, 0 replies; 7+ messages in thread
From: Kuldeep Singh @ 2021-08-10  5:50 UTC (permalink / raw)
  To: u-boot; +Cc: Rajesh Bhagat, Priyanka Jain, Kuldeep Singh

T4240RDB supports booting from 2 nor banks(default and altbank). The
corresponding defconfig can only have one entry defined and therefore,
extend cs4340_get_fw_addr() function to overwrite firmware address which
will be later used in cortina firmware.

Signed-off-by: Kuldeep Singh <kuldeep.singh@nxp.com>
---
 board/freescale/t4rdb/t4240rdb.c | 19 +++++++++++++++++++
 board/freescale/t4rdb/t4rdb.h    |  3 +++
 2 files changed, 22 insertions(+)

diff --git a/board/freescale/t4rdb/t4240rdb.c b/board/freescale/t4rdb/t4240rdb.c
index 6ab35ca918..20ce7523e5 100644
--- a/board/freescale/t4rdb/t4240rdb.c
+++ b/board/freescale/t4rdb/t4240rdb.c
@@ -151,3 +151,22 @@ void board_detail(void)
 		break;
 	}
 }
+
+ulong *cs4340_get_fw_addr(void)
+{
+	ulong cortina_fw_addr = CONFIG_CORTINA_FW_ADDR;
+
+#ifdef CONFIG_SYS_CORTINA_FW_IN_NOR
+	u8 sw;
+
+	sw = CPLD_READ(vbank);
+	sw = sw & CPLD_BANK_SEL_MASK;
+
+	if (sw == 0)
+		cortina_fw_addr = CORTINA_FW_ADDR_IFCNOR;
+	else if (sw == 4)
+		cortina_fw_addr = CORTINA_FW_ADDR_IFCNOR_ALTBANK;
+#endif
+
+	return (ulong *)cortina_fw_addr;
+}
diff --git a/board/freescale/t4rdb/t4rdb.h b/board/freescale/t4rdb/t4rdb.h
index 3f1fa7bbd2..06779f552f 100644
--- a/board/freescale/t4rdb/t4rdb.h
+++ b/board/freescale/t4rdb/t4rdb.h
@@ -11,6 +11,9 @@
 #define CONFIG_SYS_NUM_FM1_DTSEC	4
 #define CONFIG_SYS_NUM_FM2_DTSEC	4
 
+#define CORTINA_FW_ADDR_IFCNOR				0xefe00000
+#define CORTINA_FW_ADDR_IFCNOR_ALTBANK		0xebf00000
+
 void fdt_fixup_board_enet(void *blob);
 void pci_of_setup(void *blob, struct bd_info *bd);
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-08-10  5:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-10  5:50 [PATCH 0/6] Cortina Firmware fixes Kuldeep Singh
2021-08-10  5:50 ` [PATCH 1/6] env: Kconfig: Add default option for PHY_CORTINA Kuldeep Singh
2021-08-10  5:50 ` [PATCH 2/6] configs: Migrate CORTINA_FW_ADDR and CORTINA_FW_LENGTH to Kconfig Kuldeep Singh
2021-08-10  5:50 ` [PATCH 3/6] net: cortina: Add support for tfa boot in cortina firmware Kuldeep Singh
2021-08-10  5:50 ` [PATCH 4/6] board: ls2088ardb: Extend cs4340_get_fw_addr() functionality Kuldeep Singh
2021-08-10  5:50 ` [PATCH 5/6] board: t208x: " Kuldeep Singh
2021-08-10  5:50 ` [PATCH 6/6] board: T4240rdb: " Kuldeep Singh

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.