arm: ls1021a: Add sata support on qds and twr board
PATCH v3 1/1 arm: ls1021a: Add sata support on qds and twr board
Freescale ARM-based Layerscape LS102xA contain a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3 specification.
This patch adds SATA feature on ls1021aqds and ls1021atwr boards.
---
v3:
- refactor the framework
- replace hard coding with MICRO
v2:
- rebase to latest git tree
- use micro SATA_ECC_REG_ADDR instead of hard coding
arch/arm/cpu/armv7/ls102xa/Makefile | 1 + arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c | 42 +++++++++++++++++++++++ arch/arm/include/asm/arch-ls102xa/config.h | 15 ++++++++ arch/arm/include/asm/arch-ls102xa/immap_ls102xa.h | 24 +++++++++++++ arch/arm/include/asm/arch-ls102xa/ls102xa_sata.h | 11 ++++++ board/freescale/ls1021aqds/ls1021aqds.c | 12 +++++++ board/freescale/ls1021atwr/ls1021atwr.c | 12 +++++++ 7 files changed, 117 insertions(+) create mode 100644 arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c create mode 100644 arch/arm/include/asm/arch-ls102xa/ls102xa_sata.h
arch/arm/cpu/armv7/ls102xa/Makefile +1 -0
@@ -9,6 +9,7 @@ obj-y += clock.o obj-y += timer.o obj-y += fsl_epu.o +obj-$(CONFIG_SCSI_AHCI_PLAT) += ls102xa_sata.o obj-$(CONFIG_OF_LIBFDT) += fdt.o obj-$(CONFIG_SYS_HAS_SERDES) += fsl_ls1_serdes.o ls102xa_serdes.o obj-$(CONFIG_SPL) += spl.o
arch/arm/cpu/armv7/ls102xa/ls102xa_sata.c new file +42 -0
42 lines not on this page · raw message
arch/arm/include/asm/arch-ls102xa/config.h +15 -0
@@ -79,6 +79,21 @@#define CONFIG_SYS_PCIE2_PHYS_ADDR (CONFIG_SYS_PCIE2_PHYS_BASE + \ CONFIG_SYS_PCIE2_VIRT_ADDR) +/* SATA */ +#define AHCI_BASE_ADDR (CONFIG_SYS_IMMR + 0x02200000) +#define CONFIG_BOARD_LATE_INIT +#define CONFIG_CMD_SCSI +#define CONFIG_LIBATA +#define CONFIG_SCSI_AHCI +#define CONFIG_SCSI_AHCI_PLAT +#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) +#define CONFIG_CMD_FAT +#define CONFIG_DOS_PARTITION +#define CONFIG_SYS_FSL_ERRATUM_A008407 +#ifdef CONFIG_DDR_SPD #define CONFIG_SYS_FSL_DDR_BE #define CONFIG_VERY_BIG_RAM
arch/arm/include/asm/arch-ls102xa/immap_ls102xa.h +24 -0
@@ -397,4 +397,28 @@ struct ccsr_cci400 { u8 res_e004[0x10000 - 0xe004]; }; +/* 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 paxic;/* port AXI config */ +u32 axicc;/* AXI cache control */ +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 */ +};#endif /* __ASM_ARCH_LS102XA_IMMAP_H_ */
arch/arm/include/asm/arch-ls102xa/ls102xa_sata.h new file +11 -0
@@ -0,0 +1,11 @@ +/* +* Copyright 2015 Freescale Semiconductor, Inc. +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#ifndef __FSL_SATA_H_ +#define __FSL_SATA_H_ + +int ls1021a_sata_init (void ); +#endif
board/freescale/ls1021aqds/ls1021aqds.c +12 -0
@@ -13,6 +13,7 @@#include <asm/arch/fsl_serdes.h> #include <asm/arch/ls102xa_stream_id.h> #include <asm/arch/ls102xa_devdis.h> +#include <asm/arch/ls102xa_sata.h> #include <hwconfig.h> #include <mmc.h> #include <fsl_esdhc.h>
@@ -494,6 +495,17 @@ int config_serdes_mux(void)return 0 ; } +#ifdef CONFIG_BOARD_LATE_INIT +int board_late_init (void ) +{ +#ifdef CONFIG_SCSI_AHCI_PLAT +ls1021a_sata_init (); +#endif + +return 0 ; +} +#endif +int misc_init_r (void ) {int conflict_flag;
board/freescale/ls1021atwr/ls1021atwr.c +12 -0
@@ -13,6 +13,7 @@#include <asm/arch/fsl_serdes.h> #include <asm/arch/ls102xa_stream_id.h> #include <asm/arch/ls102xa_devdis.h> +#include <asm/arch/ls102xa_sata.h> #include <hwconfig.h> #include <mmc.h> #include <fsl_esdhc.h>
@@ -651,6 +652,17 @@ int board_init(void)return 0 ; } +#ifdef CONFIG_BOARD_LATE_INIT +int board_late_init (void ) +{ +#ifdef CONFIG_SCSI_AHCI_PLAT +ls1021a_sata_init (); +#endif + +return 0 ; +} +#endif +#if defined(CONFIG_MISC_INIT_R )int misc_init_r (void ) {
Signature · 1 line
2.1.0.27.g96db324
PATCH v3 1/1 arm: ls1021a: Add sata support on qds and twr board
Quoted 5 lines · Tang Yuantian
Freescale ARM-based Layerscape LS102xA contain a SATA controller which comply with the serial ATA 3.0 specification and the AHCI 1.3 specification.
This patch adds SATA feature on ls1021aqds and ls1021atwr boards.
Quoted 8 lines
Signed-off-by Tang Yuantian <[email protected]>---
v3:
- refactor the framework
- replace hard coding with MICRO
v2:
- rebase to latest git tree
- use microSATA_ECC_REG_ADDRinstead of hard coding
Applied to u-boot-fsl-qoriq. Awaiting upstream. Thanks.
York