armv8: fsl-layerscape: Add NXP LS2081A, LS2041A SoC support
The QorIQ LS2081A SoC has eight 64-bit ARM v8 Cortex A72 cores and is built on layerscape architecture. It is 40-pin derivative of LS2084A (non-AIOP personality of LS2088A). So feature-wise it is same as LS2084A. LS2041A is a 4-core personality of LS2081A. Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com> Signed-off-by: Santan Kumar <santan.kumar@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
parent
89a168f776
commit
e809e74799
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2017 NXP
|
||||||
* Copyright 2014-2015 Freescale Semiconductor, Inc.
|
* Copyright 2014-2015 Freescale Semiconductor, Inc.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
@ -98,7 +99,8 @@ static void fix_pcie_mmu_map(void)
|
|||||||
|
|
||||||
/* Fix PCIE base and size for LS2088A */
|
/* Fix PCIE base and size for LS2088A */
|
||||||
if ((ver == SVR_LS2088A) || (ver == SVR_LS2084A) ||
|
if ((ver == SVR_LS2088A) || (ver == SVR_LS2084A) ||
|
||||||
(ver == SVR_LS2048A) || (ver == SVR_LS2044A)) {
|
(ver == SVR_LS2048A) || (ver == SVR_LS2044A) ||
|
||||||
|
(ver == SVR_LS2081A) || (ver == SVR_LS2041A)) {
|
||||||
for (i = 0; i < ARRAY_SIZE(final_map); i++) {
|
for (i = 0; i < ARRAY_SIZE(final_map); i++) {
|
||||||
switch (final_map[i].phys) {
|
switch (final_map[i].phys) {
|
||||||
case CONFIG_SYS_PCIE1_PHYS_ADDR:
|
case CONFIG_SYS_PCIE1_PHYS_ADDR:
|
||||||
|
@ -5,6 +5,7 @@ SoC overview
|
|||||||
3. LS1012A
|
3. LS1012A
|
||||||
4. LS1046A
|
4. LS1046A
|
||||||
5. LS2088A
|
5. LS2088A
|
||||||
|
6. LS2081A
|
||||||
|
|
||||||
LS1043A
|
LS1043A
|
||||||
---------
|
---------
|
||||||
@ -227,3 +228,13 @@ LS2088A SoC has 3 more similar SoC personalities
|
|||||||
|
|
||||||
3)LS2044A, few difference w.r.t. LS2084A:
|
3)LS2044A, few difference w.r.t. LS2084A:
|
||||||
a) Four 64-bit ARM v8 Cortex-A72 CPUs
|
a) Four 64-bit ARM v8 Cortex-A72 CPUs
|
||||||
|
|
||||||
|
LS2081A
|
||||||
|
--------
|
||||||
|
LS2081A is 40-pin derivative of LS2084A.
|
||||||
|
So feature-wise it is same as LS2084A.
|
||||||
|
Refer to LS2084A(LS2088A) section above for details.
|
||||||
|
|
||||||
|
It has one more similar SoC personality
|
||||||
|
1)LS2041A, few difference w.r.t. LS2081A:
|
||||||
|
a) Four 64-bit ARM v8 Cortex-A72 CPUs
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2017 NXP
|
||||||
* Copyright 2014-2015, Freescale Semiconductor
|
* Copyright 2014-2015, Freescale Semiconductor
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
@ -15,6 +16,8 @@ static struct cpu_type cpu_type_list[] = {
|
|||||||
CPU_TYPE_ENTRY(LS2084A, LS2084A, 8),
|
CPU_TYPE_ENTRY(LS2084A, LS2084A, 8),
|
||||||
CPU_TYPE_ENTRY(LS2048A, LS2048A, 4),
|
CPU_TYPE_ENTRY(LS2048A, LS2048A, 4),
|
||||||
CPU_TYPE_ENTRY(LS2044A, LS2044A, 4),
|
CPU_TYPE_ENTRY(LS2044A, LS2044A, 4),
|
||||||
|
CPU_TYPE_ENTRY(LS2081A, LS2081A, 8),
|
||||||
|
CPU_TYPE_ENTRY(LS2041A, LS2041A, 4),
|
||||||
CPU_TYPE_ENTRY(LS1043A, LS1043A, 4),
|
CPU_TYPE_ENTRY(LS1043A, LS1043A, 4),
|
||||||
CPU_TYPE_ENTRY(LS1023A, LS1023A, 2),
|
CPU_TYPE_ENTRY(LS1023A, LS1023A, 2),
|
||||||
CPU_TYPE_ENTRY(LS1046A, LS1046A, 4),
|
CPU_TYPE_ENTRY(LS1046A, LS1046A, 4),
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2017 NXP
|
||||||
* Copyright 2015 Freescale Semiconductor
|
* Copyright 2015 Freescale Semiconductor
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
@ -54,6 +55,8 @@ struct cpu_type {
|
|||||||
#define SVR_LS2084A 0x870910
|
#define SVR_LS2084A 0x870910
|
||||||
#define SVR_LS2048A 0x870920
|
#define SVR_LS2048A 0x870920
|
||||||
#define SVR_LS2044A 0x870930
|
#define SVR_LS2044A 0x870930
|
||||||
|
#define SVR_LS2081A 0x870919
|
||||||
|
#define SVR_LS2041A 0x870915
|
||||||
|
|
||||||
#define SVR_DEV_LS2080A 0x8701
|
#define SVR_DEV_LS2080A 0x8701
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2017 NXP
|
||||||
* Copyright 2014-2015 Freescale Semiconductor, Inc.
|
* Copyright 2014-2015 Freescale Semiconductor, Inc.
|
||||||
* Layerscape PCIe driver
|
* Layerscape PCIe driver
|
||||||
*
|
*
|
||||||
@ -170,7 +171,8 @@ static void ls_pcie_setup_atu(struct ls_pcie *pcie)
|
|||||||
/* Fix the pcie memory map for LS2088A series SoCs */
|
/* Fix the pcie memory map for LS2088A series SoCs */
|
||||||
svr = (svr >> SVR_VAR_PER_SHIFT) & 0xFFFFFE;
|
svr = (svr >> SVR_VAR_PER_SHIFT) & 0xFFFFFE;
|
||||||
if (svr == SVR_LS2088A || svr == SVR_LS2084A ||
|
if (svr == SVR_LS2088A || svr == SVR_LS2084A ||
|
||||||
svr == SVR_LS2048A || svr == SVR_LS2044A) {
|
svr == SVR_LS2048A || svr == SVR_LS2044A ||
|
||||||
|
svr == SVR_LS2081A || svr == SVR_LS2041A) {
|
||||||
if (io)
|
if (io)
|
||||||
io->phys_start = (io->phys_start &
|
io->phys_start = (io->phys_start &
|
||||||
(PCIE_PHYS_SIZE - 1)) +
|
(PCIE_PHYS_SIZE - 1)) +
|
||||||
@ -531,7 +533,8 @@ static int ls_pcie_probe(struct udevice *dev)
|
|||||||
svr = get_svr();
|
svr = get_svr();
|
||||||
svr = (svr >> SVR_VAR_PER_SHIFT) & 0xFFFFFE;
|
svr = (svr >> SVR_VAR_PER_SHIFT) & 0xFFFFFE;
|
||||||
if (svr == SVR_LS2088A || svr == SVR_LS2084A ||
|
if (svr == SVR_LS2088A || svr == SVR_LS2084A ||
|
||||||
svr == SVR_LS2048A || svr == SVR_LS2044A) {
|
svr == SVR_LS2048A || svr == SVR_LS2044A ||
|
||||||
|
svr == SVR_LS2081A || svr == SVR_LS2041A) {
|
||||||
pcie->cfg_res.start = LS2088A_PCIE1_PHYS_ADDR +
|
pcie->cfg_res.start = LS2088A_PCIE1_PHYS_ADDR +
|
||||||
LS2088A_PCIE_PHYS_SIZE * pcie->idx;
|
LS2088A_PCIE_PHYS_SIZE * pcie->idx;
|
||||||
pcie->ctrl = pcie->lut + 0x40000;
|
pcie->ctrl = pcie->lut + 0x40000;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2017 NXP
|
||||||
* Copyright 2014-2015 Freescale Semiconductor, Inc.
|
* Copyright 2014-2015 Freescale Semiconductor, Inc.
|
||||||
* Layerscape PCIe driver
|
* Layerscape PCIe driver
|
||||||
*
|
*
|
||||||
@ -117,6 +118,8 @@
|
|||||||
#define SVR_LS2084A 0x870910
|
#define SVR_LS2084A 0x870910
|
||||||
#define SVR_LS2048A 0x870920
|
#define SVR_LS2048A 0x870920
|
||||||
#define SVR_LS2044A 0x870930
|
#define SVR_LS2044A 0x870930
|
||||||
|
#define SVR_LS2081A 0x870919
|
||||||
|
#define SVR_LS2041A 0x870915
|
||||||
|
|
||||||
/* LS1021a PCIE space */
|
/* LS1021a PCIE space */
|
||||||
#define LS1021_PCIE_SPACE_OFFSET 0x4000000000ULL
|
#define LS1021_PCIE_SPACE_OFFSET 0x4000000000ULL
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
|
* Copyright 2017 NXP
|
||||||
* Copyright 2014-2015 Freescale Semiconductor, Inc.
|
* Copyright 2014-2015 Freescale Semiconductor, Inc.
|
||||||
* Layerscape PCIe driver
|
* Layerscape PCIe driver
|
||||||
*
|
*
|
||||||
@ -82,7 +83,8 @@ static void fdt_pcie_set_msi_map_entry(void *blob, struct ls_pcie *pcie,
|
|||||||
#ifdef CONFIG_FSL_PCIE_COMPAT /* Compatible with older version of dts node */
|
#ifdef CONFIG_FSL_PCIE_COMPAT /* Compatible with older version of dts node */
|
||||||
svr = (get_svr() >> SVR_VAR_PER_SHIFT) & 0xFFFFFE;
|
svr = (get_svr() >> SVR_VAR_PER_SHIFT) & 0xFFFFFE;
|
||||||
if (svr == SVR_LS2088A || svr == SVR_LS2084A ||
|
if (svr == SVR_LS2088A || svr == SVR_LS2084A ||
|
||||||
svr == SVR_LS2048A || svr == SVR_LS2044A)
|
svr == SVR_LS2048A || svr == SVR_LS2044A ||
|
||||||
|
svr == SVR_LS2081A || svr == SVR_LS2041A)
|
||||||
compat = "fsl,ls2088a-pcie";
|
compat = "fsl,ls2088a-pcie";
|
||||||
else
|
else
|
||||||
compat = CONFIG_FSL_PCIE_COMPAT;
|
compat = CONFIG_FSL_PCIE_COMPAT;
|
||||||
@ -217,7 +219,8 @@ static void ft_pcie_ls_setup(void *blob, struct ls_pcie *pcie)
|
|||||||
#ifdef CONFIG_FSL_PCIE_COMPAT /* Compatible with older version of dts node */
|
#ifdef CONFIG_FSL_PCIE_COMPAT /* Compatible with older version of dts node */
|
||||||
svr = (get_svr() >> SVR_VAR_PER_SHIFT) & 0xFFFFFE;
|
svr = (get_svr() >> SVR_VAR_PER_SHIFT) & 0xFFFFFE;
|
||||||
if (svr == SVR_LS2088A || svr == SVR_LS2084A ||
|
if (svr == SVR_LS2088A || svr == SVR_LS2084A ||
|
||||||
svr == SVR_LS2048A || svr == SVR_LS2044A)
|
svr == SVR_LS2048A || svr == SVR_LS2044A ||
|
||||||
|
svr == SVR_LS2081A || svr == SVR_LS2041A)
|
||||||
compat = "fsl,ls2088a-pcie";
|
compat = "fsl,ls2088a-pcie";
|
||||||
else
|
else
|
||||||
compat = CONFIG_FSL_PCIE_COMPAT;
|
compat = CONFIG_FSL_PCIE_COMPAT;
|
||||||
|
Loading…
Reference in New Issue
Block a user