arm: Add sata support on Layerscape ARMv8 board
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3 specification.
This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.
---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git tree
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43 ++++++++++++++++++++++ .../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31 ++++++++++++++++ include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)
arch/arm/cpu/armv8/fsl-layerscape/soc.c +43 -0
@@ -6,6 +6,8 @@#include <common.h> #include <fsl_ifc.h> +#include <ahci.h> +#include <scsi.h> #include <asm/arch/soc.h> #include <asm/io.h> #include <asm/global_data.h>
@@ -120,7 +122,44 @@ void fsl_lsch3_early_init_f(void)erratum_a009203 (); } +#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci; + + ccsr_ahci = (void *)CONFIG_SYS_SATA2 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + + ccsr_ahci = (void *)CONFIG_SYS_SATA1 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + +ahci_init ((void __iomem *)CONFIG_SYS_SATA1 ); +scsi_scan (0 ); + +return 0 ; +} +#endif +#elif defined(CONFIG_LS1043A ) +#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci = (void *)CONFIG_SYS_SATA ; + +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->pp2c,AHCI_PORT_PHY_2_CFG ); +out_le32 (&ccsr_ahci->pp3c,AHCI_PORT_PHY_3_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + +ahci_init ((void __iomem *)CONFIG_SYS_SATA ); +scsi_scan (0 ); + +return 0 ; +} +#endif +void fsl_lsch2_early_init_f (void ) {struct ccsr_cci400 *cci = (struct ccsr_cci400 *)CONFIG_SYS_CCI400_ADDR ;
@@ -141,6 +180,10 @@ void fsl_lsch2_early_init_f(void)#ifdef CONFIG_BOARD_LATE_INIT int board_late_init (void ) { +#ifdef CONFIG_SCSI_AHCI_PLAT +sata_init (); +#endif +return 0 ; }#endif
arch/arm/include/asm/arch-fsl-layerscape/immap_lsch3.h +4 -0
@@ -69,6 +69,10 @@#define TZASC_REGION_ATTRIBUTES_0 (x) ((TZASC1_BASE + (x * 0x10000)) + 0x110)#define TZASC_REGION_ID_ACCESS_0 (x) ((TZASC1_BASE + (x * 0x10000)) + 0x114) +/* SATA */ +#define AHCI_BASE_ADDR1 (CONFIG_SYS_IMMR + 0x02200000) +#define AHCI_BASE_ADDR2 (CONFIG_SYS_IMMR + 0x02210000) +/* PCIe */ #define CONFIG_SYS_PCIE1_ADDR (CONFIG_SYS_IMMR + 0x2400000)#define CONFIG_SYS_PCIE2_ADDR (CONFIG_SYS_IMMR + 0x2500000)
arch/arm/include/asm/arch-fsl-layerscape/soc.h +31 -0
@@ -51,6 +51,37 @@ struct cpu_type {#define SVR_SOC_VER (svr) (((svr) >> 8) & SVR_WO_E)#define IS_E_PROCESSOR (svr) (!((svr >> 8) & 0x1)) +/* ahci port register default value */ +#define AHCI_PORT_PHY_1_CFG 0xa003fffe +#define AHCI_PORT_PHY_2_CFG 0x28184d1f +#define AHCI_PORT_PHY_3_CFG 0x0e081509 +#define AHCI_PORT_TRANS_CFG 0x08000025 + +/* AHCI (sata) register map */ +struct ccsr_ahci { +u32 res1[0xa4 /4 ];/* 0x0 - 0xa4 */ +u32 pcfg;/* port config */ +u32 ppcfg;/* port phy1 config */ +u32 pp2c;/* port phy2 config */ +u32 pp3c;/* port phy3 config */ +u32 pp4c;/* port phy4 config */ +u32 pp5c;/* port phy5 config */ +u32 axicc;/* AXI cache control */ +u32 paxic;/* port AXI config */ +u32 axipc;/* AXI PROT control */ +u32 ptc;/* port Trans Config */ +u32 pts;/* port Trans Status */ +u32 plc;/* port link config */ +u32 plc1;/* port link config1 */ +u32 plc2;/* port link config2 */ +u32 pls;/* port link status */ +u32 pls1;/* port link status1 */ +u32 pcmdc;/* port CMD config */ +u32 ppcs;/* port phy control status */ +u32 pberr;/* port 0/1 BIST error */ +u32 cmds;/* port 0/1 CMD status error */ +}; +#ifdef CONFIG_FSL_LSCH3 void fsl_lsch3_early_init_f (void );#elif defined(CONFIG_FSL_LSCH2 )
include/configs/ls1043aqds.h +17 -0
@@ -88,6 +88,23 @@ unsigned long get_board_ddr_clk(void);#define CONFIG_SYS_FSL_PBL_RCW board/freescale/ls1043aqds/ls1043aqds_rcw_sd_ifc.cfg#endif +/* SATA */ +#define CONFIG_LIBATA +#define CONFIG_SCSI_AHCI +#define CONFIG_SCSI_AHCI_PLAT +#define CONFIG_CMD_SCSI +#define CONFIG_CMD_FAT +#define CONFIG_CMD_EXT2 +#define CONFIG_DOS_PARTITION +#define CONFIG_BOARD_LATE_INIT + +#define CONFIG_SYS_SATA AHCI_BASE_ADDR + +#define CONFIG_SYS_SCSI_MAX_SCSI_ID 1 +#define CONFIG_SYS_SCSI_MAX_LUN 1 +#define CONFIG_SYS_SCSI_MAX_DEVICE (CONFIG_SYS_SCSI_MAX_SCSI_ID * \ + CONFIG_SYS_SCSI_MAX_LUN) +/* * IFC Definitions */
include/configs/ls2080aqds.h +18 -0
@@ -40,6 +40,24 @@ unsigned long get_board_ddr_clk(void);#endif #define CONFIG_FSL_DDR_BIST /* enable built-in memory test */ +/* SATA */ +#define CONFIG_LIBATA +#define CONFIG_SCSI_AHCI +#define CONFIG_SCSI_AHCI_PLAT +#define CONFIG_CMD_SCSI +#define CONFIG_CMD_FAT +#define CONFIG_CMD_EXT2 +#define CONFIG_DOS_PARTITION +#define CONFIG_BOARD_LATE_INIT + +#define CONFIG_SYS_SATA1 AHCI_BASE_ADDR1 +#define CONFIG_SYS_SATA2 AHCI_BASE_ADDR2 + +#define CONFIG_SYS_SCSI_MAX_SCSI_ID 1 +#define CONFIG_SYS_SCSI_MAX_LUN 1 +#define CONFIG_SYS_SCSI_MAX_DEVICE (CONFIG_SYS_SCSI_MAX_SCSI_ID * \ + CONFIG_SYS_SCSI_MAX_LUN) +/* undefined CONFIG_FSL_DDR_SYNC_REFRESH for simulator */ #define CONFIG_SYS_NOR0_CSPR_EXT (0x0)
include/configs/ls2080ardb.h +18 -0
@@ -42,6 +42,24 @@ unsigned long get_board_sys_clk(void);#endif #define CONFIG_FSL_DDR_BIST /* enable built-in memory test */ +/* SATA */ +#define CONFIG_LIBATA +#define CONFIG_SCSI_AHCI +#define CONFIG_SCSI_AHCI_PLAT +#define CONFIG_CMD_SCSI +#define CONFIG_CMD_FAT +#define CONFIG_CMD_EXT2 +#define CONFIG_DOS_PARTITION +#define CONFIG_BOARD_LATE_INIT + +#define CONFIG_SYS_SATA1 AHCI_BASE_ADDR1 +#define CONFIG_SYS_SATA2 AHCI_BASE_ADDR2 + +#define CONFIG_SYS_SCSI_MAX_SCSI_ID 1 +#define CONFIG_SYS_SCSI_MAX_LUN 1 +#define CONFIG_SYS_SCSI_MAX_DEVICE (CONFIG_SYS_SCSI_MAX_SCSI_ID * \ + CONFIG_SYS_SCSI_MAX_LUN) +/* undefined CONFIG_FSL_DDR_SYNC_REFRESH for simulator */ #define CONFIG_SYS_NOR0_CSPR_EXT (0x0)
Signature · 1 line
2.1.0.27.g96db324
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Quoted 22 lines · Yuantian.Tang at freescale.com
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3 specification.
This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.Signed-off-by Tang Yuantian <[email protected]>---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git tree
Quoted 7 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43 ++++++++++++++++++++++ .../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31 ++++++++++++++++ include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)
Thanks for the update.
Regards
Sinan Akman
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
In reply to Yuantian.Tang at freescale.comQuoted 44 lines · Yuantian.Tang at freescale.com
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3 specification.
This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.Signed-off-by Tang Yuantian <[email protected]>---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git treearch/arm/cpu/armv8/fsl-layerscape/soc.c | 43 ++++++++++++++++++++++ .../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31 ++++++++++++++++ include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)arch/arm/cpu/armv8/fsl-layerscape/soc.c +2
-0@@ -6,6 +6,8 @@#include <common.h> #include <fsl_ifc.h> +#include <ahci.h> +#include <scsi.h> #include <asm/arch/soc.h> #include <asm/io.h> #include <asm/global_data.h>
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 124
Quoted 3 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +0
-0@@ -120,7 +122,44 @@ void fsl_lsch3_early_init_f(void)erratum_a009203 (); }
Yuantian,
Please help me understand below.
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 132
Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +8
-0+#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci; + + ccsr_ahci = (void *)CONFIG_SYS_SATA2 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG );
You didn't set pp2c or pp3c. Is it because the default values are OK or something else?
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 138
Quoted 6 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +6
-0+ + ccsr_ahci = (void *)CONFIG_SYS_SATA1 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + +ahci_init ((void __iomem *)CONFIG_SYS_SATA1 );
You only call ahci_init() here but not above. Is SATA2 active?
Quoted 14 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +13
-0+scsi_scan (0 ); + +return 0 ; +} +#endif +#elif defined(CONFIG_LS1043A) +#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci = (void *)CONFIG_SYS_SATA ; + +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->pp2c,AHCI_PORT_PHY_2_CFG );
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 162
Quoted 10 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +10
-0+out_le32 (&ccsr_ahci->pp3c,AHCI_PORT_PHY_3_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + +ahci_init ((void __iomem *)CONFIG_SYS_SATA ); +scsi_scan (0 ); + + return 0; +} +#endif +
York
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Hi York,
Please see my explanation inline.
Quoted 64 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Friday, December 04, 2015 12:27 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 21 lines · Yuantian.Tang at freescale.com
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3 specification. This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.
Signed-off-by Tang Yuantian <[email protected]>---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git treeQuoted 1 line
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43++++++++++++++++++++++
Quoted 2 lines
.../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31++++++++++++++++
Quoted 20 lines
include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)arch/arm/cpu/armv8/fsl-layerscape/soc.c +2
-0@@ -6,6 +6,8 @@#include <common.h> #include <fsl_ifc.h> +#include <ahci.h> +#include <scsi.h> #include <asm/arch/soc.h> #include <asm/io.h> #include <asm/global_data.h> arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 124
Quoted 3 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +0
-0@@ -120,7 +122,44 @@ void fsl_lsch3_early_init_f(void)erratum_a009203 (); }Yuantian,
Please help me understand below.
Quoted 12 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 132
Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +8
-0+#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci; + + ccsr_ahci = (void *)CONFIG_SYS_SATA2 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG );You didn't set pp2c or pp3c. Is it because the default values are OK or something else?
Those settings of registers vary from soc to soc. If the default value will be used if the register is not updated explicitly. Speaking of this, I got new information from validation team about giving a new value to PTC register.
So please hold this patch for a while, I will update it in next version.
Quoted 9 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 138
Quoted 6 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +6
-0+ + ccsr_ahci = (void *)CONFIG_SYS_SATA1 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + +ahci_init ((void __iomem *)CONFIG_SYS_SATA1 );You only call
ahci_init()here but not above. Is SATA2 active?
AHCI SATA driver only supports one SATA port. On ls2080a we have two ports, so we have to choice one. In this case I choice the first one which is SATA1.
Regards,
Yuantian
Quoted 27 lines
Quoted 15 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +13
-0+scsi_scan (0 ); + +return 0 ; +} +#endif +#elif defined(CONFIG_LS1043A) +#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci = (void *)CONFIG_SYS_SATA ; + +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->pp2c,AHCI_PORT_PHY_2_CFG );arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 162
Quoted 10 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +10
-0+out_le32 (&ccsr_ahci->pp3c,AHCI_PORT_PHY_3_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + +ahci_init ((void __iomem *)CONFIG_SYS_SATA ); +scsi_scan (0 ); + + return 0; +} +#endif +York
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Quoted 80 lines · On 12/03/2015 06:47 PM, Tang Yuantian-B29983 wrote:
Hi York,
Please see my explanation inline.
Quoted 64 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Friday, December 04, 2015 12:27 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 21 lines · Yuantian.Tang at freescale.com
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3 specification. This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.
Signed-off-by Tang Yuantian <[email protected]>---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git treeQuoted 1 line
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43++++++++++++++++++++++
Quoted 2 lines
.../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31++++++++++++++++
Quoted 20 lines
include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)arch/arm/cpu/armv8/fsl-layerscape/soc.c +2
-0@@ -6,6 +6,8 @@#include <common.h> #include <fsl_ifc.h> +#include <ahci.h> +#include <scsi.h> #include <asm/arch/soc.h> #include <asm/io.h> #include <asm/global_data.h> arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 124
Quoted 3 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +0
-0@@ -120,7 +122,44 @@ void fsl_lsch3_early_init_f(void)erratum_a009203 (); }Yuantian,
Please help me understand below.
Quoted 12 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 132
Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +8
-0+#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci; + + ccsr_ahci = (void *)CONFIG_SYS_SATA2 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG );You didn't set pp2c or pp3c. Is it because the default values are OK or something else?
Quoted 1 line
Those settings of registers vary from soc to soc. If the default value will be used if the register is not updated explicitly.
If you put the macros for each SoC, you probably can use one function for all. You only want to keep them separated if they have not much in common.
Quoted 12 lines
Speaking of this, I got new information from validation team about giving a new value to PTC register. So please hold this patch for a while, I will update it in next version.
Quoted 9 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 138
Quoted 6 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +6
-0+ + ccsr_ahci = (void *)CONFIG_SYS_SATA1 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + +ahci_init ((void __iomem *)CONFIG_SYS_SATA1 );You only call
ahci_init()here but not above. Is SATA2 active?
Quoted 1 line
AHCI SATA driver only supports one SATA port. On ls2080a we have two ports, so we have to choice one. In this case I choice the first one which is SATA1.
This should be put into comment, or README if you have one.
York
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Hi York,
Please see explanation inline.
Quoted 92 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Saturday, December 05, 2015 1:25 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 19 lines · On 12/03/2015 06:47 PM, Tang Yuantian-B29983 wrote:
Hi York,
Please see my explanation inline.
Quoted 15 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Friday, December 04, 2015 12:27 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 4 lines · Yuantian.Tang at freescale.com
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3
specification.
Quoted 62 lines
Quoted 62 lines
Quoted 17 lines
This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.
Signed-off-by Tang Yuantian <[email protected]>---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git treeQuoted 1 line
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43++++++++++++++++++++++
Quoted 2 lines
.../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31++++++++++++++++
Quoted 20 lines
include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)arch/arm/cpu/armv8/fsl-layerscape/soc.c +2
-0@@ -6,6 +6,8 @@#include <common.h> #include <fsl_ifc.h> +#include <ahci.h> +#include <scsi.h> #include <asm/arch/soc.h> #include <asm/io.h> #include <asm/global_data.h> arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 124
Quoted 3 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +0
-0@@ -120,7 +122,44 @@ void fsl_lsch3_early_init_f(void)erratum_a009203 (); }Yuantian,
Please help me understand below.
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 132
Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +8
-0+#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci; + + ccsr_ahci = (void *)CONFIG_SYS_SATA2 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG );You didn't set pp2c or pp3c. Is it because the default values are OK or something else?
Quoted 6 lines
Quoted 1 line
Those settings of registers vary from soc to soc. If the default value will be
used if the register is not updated explicitly.
If you put the macros for each SoC, you probably can use one function for all. You only want to keep them separated if they have not much in common.
I was trying to use one function for all, but I found separating them is better.
Take ls1043a and ls2080a as an example, ls2080a has two controllers, while ls1043a has one.
Ls2080a has two registers that need to be updated while ls1043a has four.
A lot of #ifdef are needed if we unify them, not mention that in the future, changing one of the platforms' register will affect the other. Maybe I am not thinking it through. If you can give me more detail that viable, I can give a try.
Quoted 13 lines
Quoted 1 line
Speaking of this, I got new information from validation team about giving a
new value to PTC register.
Quoted 11 lines
So please hold this patch for a while, I will update it in next version.
Quoted 9 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 138
Quoted 6 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +6
-0+ + ccsr_ahci = (void *)CONFIG_SYS_SATA1 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG ); + +ahci_init ((void __iomem *)CONFIG_SYS_SATA1 );You only call
ahci_init()here but not above. Is SATA2 active?
Quoted 5 lines
Quoted 1 line
AHCI SATA driver only supports one SATA port. On ls2080a we have two
ports, so we have to choice one. In this case I choice the first one which is SATA1.
This should be put into comment, or README if you have one.
This phenomenon is not LS platform specific, that's uboot's issue which needs another patch to fix. I think uboot know that and choice to not fix it because for uboot supporting two sata port is not that significant. It is just like that uboot doesn't support local sata and PCIe sata simutaniously.
If a comment is needed, it would be better to put it in our own README (in this case, ls2080a) document.
Regards,
Yuantian
Quoted 2 lines
York
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Hi Yuantian
Quoted 8 lines · Yuantian Tang
Hi York,
Please see explanation inline.
[...]
I was trying to use one function for all, but I found separating them is better.
Take ls1043a and ls2080a as an example, ls2080a has two controllers, while ls1043a has one.
Ls2080a has two registers that need to be updated while ls1043a has four.
A lot of #ifdef are needed if we unify them, not mention that in the future, changing one of the platforms' register will affect the other.
You might want to take into consideration that in the near future we
will be moving
this to dm. In that respect having all that in one file already will probably make things
much easier. If you consider this, perhaps you will have a different view.
Quoted 9 lines
Maybe I am not thinking it through. If you can give me more detail that viable, I can give a try.
Quoted 5 lines
[...]
ports, so we have to choice one. In this case I choice the first one which is SATA1.This should be put into comment, or README if you have one.
This phenomenon is not LS platform specific, that's uboot's issue which needs another patch to fix. I think uboot know that and choice to not fix it because for uboot supporting two sata port is not that significant.
Again, with dm and reading all the hardware properties from device
tree will
also change this. If both device nodes are enabled we will have to support both
as long as there is no hardware limitation. So I think there is no reason why
having both SATA and PCIe would not be significant. It is just that the current
implementation has this limitation and there is already some timeline for removing
these limitations.
Regards
Sinan Akman
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Hi Sinan,
Quoted 21 lines
-----Original Message-----
From: Sinan Akman [mailto:sinan at writeme.com]
Sent: Monday, December 07, 2015 2:04 PM
To: Tang Yuantian-B29983 <[email protected]>; Sun York-R58495 <[email protected]>
Cc: u-boot at lists.denx.de
Subject: Re: [U-Boot] [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardHi Yuantian
Quoted 5 lines · Yuantian Tang
Hi York,
Please see explanation inline.
[...]
I was trying to use one function for all, but I found separating them isbetter.
Quoted 1 line
Take ls1043a and ls2080a as an example, ls2080a has two controllers, while
ls1043a has one.
Quoted 9 lines
Quoted 2 lines
Ls2080a has two registers that need to be updated while ls1043a has four. A lot of #ifdef are needed if we unify them, not mention that in the future,
changing one of the platforms' register will affect the other.
You might want to take into consideration that in the near future we will be
moving this to dm. In that respect having all that in one file already will probably make things much easier. If you consider this, perhaps you will have a different view.
They are in the same file but different functions.
Quoted 11 lines
Quoted 1 line
Maybe I am not thinking it through. If you can give me more detail that
viable, I can give a try.
Quoted 7 lines
Quoted 6 lines
[...]
ports, so we have to choice one. In this case I choice the first one which is SATA1.This should be put into comment, or README if you have one.
This phenomenon is not LS platform specific, that's uboot's issue which
needs another patch to fix.
Quoted 1 line
I think uboot know that and choice to not fix it because for uboot
Quoted 9 lines
supporting two sata port is not that significant.
Again, with dm and reading all the hardware properties from device tree
will also change this. If both device nodes are enabled we will have to support both as long as there is no hardware limitation. So I think there is no reason why having both SATA and PCIe would not be significant. It is just that the current implementation has this limitation and there is already some timeline for removing these limitations.
I am not seeing what we are arguing here?
Are we talking about if this limitation is important? Please point out what's wrong with this patch.
Regards,
Yuantian
Quoted 2 lines
Regards
Sinan Akman
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Hi Yuantian
Quoted 2 lines · Yuantian Tang
[...]
They are in the same file but different functions.
OK
Quoted 4 lines
Quoted 4 lines
Quoted 1 line
I think uboot know that and choice to not fix it because for uboot
supporting two sata port is not that significant.
[...]
Please point out what's wrong with this patch.
I only expressed my opinion on your view for u-boot's assumption
on supporting two ports. Please don't take it personal.
Regards
Sinan Akman
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
In reply to Yuantian TangQuoted 99 lines · On 12/06/2015 07:09 PM, Tang Yuantian-B29983 wrote:
Hi York,
Please see explanation inline.
Quoted 95 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Saturday, December 05, 2015 1:25 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 19 lines · On 12/03/2015 06:47 PM, Tang Yuantian-B29983 wrote:
Hi York,
Please see my explanation inline.
Quoted 15 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Friday, December 04, 2015 12:27 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 4 lines · Yuantian.Tang at freescale.com
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3
specification.
Quoted 62 lines
Quoted 50 lines
Quoted 17 lines
This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.
Signed-off-by Tang Yuantian <[email protected]>---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git treeQuoted 1 line
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43++++++++++++++++++++++
Quoted 2 lines
.../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31++++++++++++++++
Quoted 20 lines
include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)arch/arm/cpu/armv8/fsl-layerscape/soc.c +2
-0@@ -6,6 +6,8 @@#include <common.h> #include <fsl_ifc.h> +#include <ahci.h> +#include <scsi.h> #include <asm/arch/soc.h> #include <asm/io.h> #include <asm/global_data.h> arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 124
Quoted 3 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +0
-0@@ -120,7 +122,44 @@ void fsl_lsch3_early_init_f(void)erratum_a009203 (); }Yuantian,
Please help me understand below.
Quoted 12 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 132
Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +8
-0+#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci; + + ccsr_ahci = (void *)CONFIG_SYS_SATA2 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG );You didn't set pp2c or pp3c. Is it because the default values are OK or something else?
Quoted 1 line
Those settings of registers vary from soc to soc. If the default value will be
used if the register is not updated explicitly.
Quoted 8 lines
Quoted 3 lines
If you put the macros for each SoC, you probably can use one function for all. You only want to keep them separated if they have not much in common.
I was trying to use one function for all, but I found separating them is better.
Take ls1043a and ls2080a as an example, ls2080a has two controllers, while ls1043a has one.
Ls2080a has two registers that need to be updated while ls1043a has four.
A lot of #ifdef are needed if we unify them, not mention that in the future, changing one of the platforms' register will affect the other. Maybe I am not thinking it through. If you can give me more detail that viable, I can give a try.
Yuantian,
I was thinking to set all registers, including those with default values. Then you can use one function for both. My understand is LS1043 and LS2080 has different default value. It will be easier to update the macros if you need different values, than changing the functions. If we have a new SoC in the same family, you don't have to add another function.
Try it to see if you still have to separate them.
York
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Hi York,
Quoted 127 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Tuesday, December 08, 2015 12:27 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 102 lines · On 12/06/2015 07:09 PM, Tang Yuantian-B29983 wrote:
Hi York,
Please see explanation inline.
Quoted 98 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Saturday, December 05, 2015 1:25 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 19 lines · On 12/03/2015 06:47 PM, Tang Yuantian-B29983 wrote:
Hi York,
Please see my explanation inline.
Quoted 15 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Friday, December 04, 2015 12:27 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 4 lines · Yuantian.Tang at freescale.com
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3
specification.
Quoted 62 lines
Quoted 50 lines
Quoted 17 lines
This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.
Signed-off-by Tang Yuantian <[email protected]>---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git treeQuoted 1 line
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43++++++++++++++++++++++
Quoted 2 lines
.../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31++++++++++++++++
Quoted 20 lines
include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)arch/arm/cpu/armv8/fsl-layerscape/soc.c +2
-0@@ -6,6 +6,8 @@#include <common.h> #include <fsl_ifc.h> +#include <ahci.h> +#include <scsi.h> #include <asm/arch/soc.h> #include <asm/io.h> #include <asm/global_data.h> arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 124
Quoted 3 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +0
-0@@ -120,7 +122,44 @@ void fsl_lsch3_early_init_f(void)erratum_a009203 (); }Yuantian,
Please help me understand below.
Quoted 12 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 132
Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +8
-0+#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci; + + ccsr_ahci = (void *)CONFIG_SYS_SATA2 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG );You didn't set pp2c or pp3c. Is it because the default values are OK or something else?
Quoted 2 lines
Those settings of registers vary from soc to soc. If the default value will be
used if the register is not updated explicitly.
If you put the macros for each SoC, you probably can use one function for
all.
Quoted 3 lines
Quoted 2 lines
You only want to keep them separated if they have not much in common.
I was trying to use one function for all, but I found separating them is
better.
Quoted 1 line
Take ls1043a and ls2080a as an example, ls2080a has two controllers, while
ls1043a has one.
Quoted 2 lines
Ls2080a has two registers that need to be updated while ls1043a has four. A lot of #ifdef are needed if we unify them, not mention that in the future,
changing one of the platforms' register will affect the other.
Quoted 1 line
Maybe I am not thinking it through. If you can give me more detail that
viable, I can give a try.
Yuantian,
Quoted 8 lines
I was thinking to set all registers, including those with default values. Then you can use one function for both. My understand is LS1043 and LS2080 has different default value. It will be easier to update the macros if you need different values, than changing the functions. If we have a new SoC in the same family, you don't have to add another function.
Try it to see if you still have to separate them.
I didn't see any benefit this way.
We have 20 registers to set for each soc in this way. In order to use one function, we have to define 20 micro for each soc too. If the soc's version is upgraded, we may have to redefine the value if the default value is changed.
All what we do is just to make it in one function.
Currently, we just need to set the register that requires to change which only have 4 and 2 registers respectively.
I thank your suggestion complicates things.
Regards,
Yuantian
Quoted 1 line
York
PATCH v5 1/1 arm: Add sata support on Layerscape ARMv8 board
Quoted 135 lines · On 12/07/2015 07:04 PM, Tang Yuantian-B29983 wrote:
Hi York,
Quoted 133 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Tuesday, December 08, 2015 12:27 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 102 lines · On 12/06/2015 07:09 PM, Tang Yuantian-B29983 wrote:
Hi York,
Please see explanation inline.
Quoted 98 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Saturday, December 05, 2015 1:25 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 19 lines · On 12/03/2015 06:47 PM, Tang Yuantian-B29983 wrote:
Hi York,
Please see my explanation inline.
Quoted 15 lines
-----Original Message-----
From: York Sun [mailto:yorksun at freescale.com]
Sent: Friday, December 04, 2015 12:27 AM
To: Tang Yuantian-B29983 <[email protected]>
Cc: u-boot at lists.denx.de; sinan at writeme.com
Subject: Re: [PATCH v5] arm: Add sata support on Layerscape ARMv8 boardQuoted 4 lines · Yuantian.Tang at freescale.com
From: Tang Yuantian <[email protected]>
Freescale ARM-based Layerscape contains a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3
specification.
Quoted 62 lines
Quoted 50 lines
Quoted 17 lines
This patch adds SATA feature on ls2080aqds, ls2080ardb and ls1043aqds boards.
Signed-off-by Tang Yuantian <[email protected]>---
v5:
- re-organize the code
v4:
- rebase to lastest git tree
- add another ARMv8 platform which is ls1043aqds
v3:
- rename ls2085a to ls2080a
- rebase to the latest git tree
- replace the magic number with micro variable
v2:
- rebase to the latest git treeQuoted 1 line
arch/arm/cpu/armv8/fsl-layerscape/soc.c | 43++++++++++++++++++++++
Quoted 2 lines
.../include/asm/arch-fsl-layerscape/immap_lsch3.h | 4 ++ arch/arm/include/asm/arch-fsl-layerscape/soc.h | 31++++++++++++++++
Quoted 20 lines
include/configs/ls1043aqds.h | 17 +++++++++ include/configs/ls2080aqds.h | 18 +++++++++ include/configs/ls2080ardb.h | 18 +++++++++ 6 files changed, 131 insertions(+)arch/arm/cpu/armv8/fsl-layerscape/soc.c +2
-0@@ -6,6 +6,8 @@#include <common.h> #include <fsl_ifc.h> +#include <ahci.h> +#include <scsi.h> #include <asm/arch/soc.h> #include <asm/io.h> #include <asm/global_data.h> arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 124
Quoted 3 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +0
-0@@ -120,7 +122,44 @@ void fsl_lsch3_early_init_f(void)erratum_a009203 (); }Yuantian,
Please help me understand below.
Quoted 12 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c void fsl_lsch3_early_init_f(void) · line 132
Quoted 8 lines
arch/arm/cpu/armv8/fsl-layerscape/soc.c +8
-0+#ifdef CONFIG_SCSI_AHCI_PLAT +int sata_init (void ) +{ +struct ccsr_ahci __iomem *ccsr_ahci; + + ccsr_ahci = (void *)CONFIG_SYS_SATA2 ; +out_le32 (&ccsr_ahci->ppcfg,AHCI_PORT_PHY_1_CFG ); +out_le32 (&ccsr_ahci->ptc,AHCI_PORT_TRANS_CFG );You didn't set pp2c or pp3c. Is it because the default values are OK or something else?
Quoted 2 lines
Those settings of registers vary from soc to soc. If the default value will be
used if the register is not updated explicitly.
If you put the macros for each SoC, you probably can use one function for
all.
Quoted 3 lines
Quoted 2 lines
You only want to keep them separated if they have not much in common.
I was trying to use one function for all, but I found separating them is
better.
Quoted 1 line
Take ls1043a and ls2080a as an example, ls2080a has two controllers, while
ls1043a has one.
Quoted 2 lines
Ls2080a has two registers that need to be updated while ls1043a has four. A lot of #ifdef are needed if we unify them, not mention that in the future,
changing one of the platforms' register will affect the other.
Quoted 1 line
Maybe I am not thinking it through. If you can give me more detail that
viable, I can give a try.
Yuantian,
I was thinking to set all registers, including those with default values. Then you can use one function for both. My understand is LS1043 and LS2080 has different default value. It will be easier to update the macros if you need different values, than changing the functions. If we have a new SoC in the same family, you don't have to add another function.
Quoted 4 lines
Quoted 2 lines
Try it to see if you still have to separate them.
I didn't see any benefit this way.
We have 20 registers to set for each soc in this way. In order to use one function, we have to define 20 micro for each soc too.
20 registers? I didn't see that coming. In that case, you can keep it your way.
York