mirror of
https://xff.cz/git/u-boot/
synced 2025-09-02 17:22:22 +02:00
pci/layerscape: add support for LS1043A PCIe LUT register access
The endian and base address of PEX LUT register region is different between Chassis 2 and Chassis 3, so move the base address definition to chassis specific header file and add pex_lut_* functions to access LUT register. Signed-off-by: Mingkai Hu <Mingkai.Hu@freescale.com> Signed-off-by: Gong Qianyu <Qianyu.Gong@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
@@ -50,6 +50,7 @@
|
|||||||
#define CONFIG_SYS_FSL_CCSR_SCFG_LE
|
#define CONFIG_SYS_FSL_CCSR_SCFG_LE
|
||||||
#define CONFIG_SYS_FSL_ESDHC_LE
|
#define CONFIG_SYS_FSL_ESDHC_LE
|
||||||
#define CONFIG_SYS_FSL_IFC_LE
|
#define CONFIG_SYS_FSL_IFC_LE
|
||||||
|
#define CONFIG_SYS_FSL_PEX_LUT_LE
|
||||||
|
|
||||||
#define CONFIG_SYS_MEMAC_LITTLE_ENDIAN
|
#define CONFIG_SYS_MEMAC_LITTLE_ENDIAN
|
||||||
|
|
||||||
@@ -119,6 +120,7 @@
|
|||||||
#define CONFIG_SYS_FSL_WDOG_BE
|
#define CONFIG_SYS_FSL_WDOG_BE
|
||||||
#define CONFIG_SYS_FSL_DSPI_BE
|
#define CONFIG_SYS_FSL_DSPI_BE
|
||||||
#define CONFIG_SYS_FSL_QSPI_BE
|
#define CONFIG_SYS_FSL_QSPI_BE
|
||||||
|
#define CONFIG_SYS_FSL_PEX_LUT_BE
|
||||||
|
|
||||||
#define QE_MURAM_SIZE 0x6000UL
|
#define QE_MURAM_SIZE 0x6000UL
|
||||||
#define MAX_QE_RISC 1
|
#define MAX_QE_RISC 1
|
||||||
|
@@ -60,6 +60,10 @@
|
|||||||
#define CONFIG_SYS_PCIE1_PHYS_ADDR 0x4000000000ULL
|
#define CONFIG_SYS_PCIE1_PHYS_ADDR 0x4000000000ULL
|
||||||
#define CONFIG_SYS_PCIE2_PHYS_ADDR 0x4800000000ULL
|
#define CONFIG_SYS_PCIE2_PHYS_ADDR 0x4800000000ULL
|
||||||
#define CONFIG_SYS_PCIE3_PHYS_ADDR 0x5000000000ULL
|
#define CONFIG_SYS_PCIE3_PHYS_ADDR 0x5000000000ULL
|
||||||
|
/* LUT registers */
|
||||||
|
#define PCIE_LUT_BASE 0x10000
|
||||||
|
#define PCIE_LUT_LCTRL0 0x7F8
|
||||||
|
#define PCIE_LUT_DBG 0x7FC
|
||||||
|
|
||||||
/* TZ Address Space Controller Definitions */
|
/* TZ Address Space Controller Definitions */
|
||||||
#define TZASC1_BASE 0x01100000 /* as per CCSR map. */
|
#define TZASC1_BASE 0x01100000 /* as per CCSR map. */
|
||||||
|
@@ -78,6 +78,10 @@
|
|||||||
#define CONFIG_SYS_PCIE2_PHYS_ADDR 0x1200000000ULL
|
#define CONFIG_SYS_PCIE2_PHYS_ADDR 0x1200000000ULL
|
||||||
#define CONFIG_SYS_PCIE3_PHYS_ADDR 0x1400000000ULL
|
#define CONFIG_SYS_PCIE3_PHYS_ADDR 0x1400000000ULL
|
||||||
#define CONFIG_SYS_PCIE4_PHYS_ADDR 0x1600000000ULL
|
#define CONFIG_SYS_PCIE4_PHYS_ADDR 0x1600000000ULL
|
||||||
|
/* LUT registers */
|
||||||
|
#define PCIE_LUT_BASE 0x80000
|
||||||
|
#define PCIE_LUT_LCTRL0 0x7F8
|
||||||
|
#define PCIE_LUT_DBG 0x7FC
|
||||||
|
|
||||||
/* Device Configuration */
|
/* Device Configuration */
|
||||||
#define DCFG_BASE 0x01e00000
|
#define DCFG_BASE 0x01e00000
|
||||||
|
@@ -23,6 +23,14 @@
|
|||||||
#define scfg_out32(a, v) out_be32(a, v)
|
#define scfg_out32(a, v) out_be32(a, v)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYS_FSL_PEX_LUT_LE
|
||||||
|
#define pex_lut_in32(a) in_le32(a)
|
||||||
|
#define pex_lut_out32(a, v) out_le32(a, v)
|
||||||
|
#elif defined(CONFIG_SYS_FSL_PEX_LUT_BE)
|
||||||
|
#define pex_lut_in32(a) in_be32(a)
|
||||||
|
#define pex_lut_out32(a, v) out_be32(a, v)
|
||||||
|
#endif
|
||||||
|
|
||||||
struct cpu_type {
|
struct cpu_type {
|
||||||
char name[15];
|
char name[15];
|
||||||
u32 soc_ver;
|
u32 soc_ver;
|
||||||
|
@@ -11,8 +11,9 @@
|
|||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#ifdef CONFIG_FSL_LAYERSCAPE
|
#ifndef CONFIG_LS102XA
|
||||||
#include <asm/arch/fdt.h>
|
#include <asm/arch/fdt.h>
|
||||||
|
#include <asm/arch/soc.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_SYS_PCI_MEMORY_BUS
|
#ifndef CONFIG_SYS_PCI_MEMORY_BUS
|
||||||
@@ -57,11 +58,6 @@
|
|||||||
#define PCIE_ATU_FUNC(x) (((x) & 0x7) << 16)
|
#define PCIE_ATU_FUNC(x) (((x) & 0x7) << 16)
|
||||||
#define PCIE_ATU_UPPER_TARGET 0x91C
|
#define PCIE_ATU_UPPER_TARGET 0x91C
|
||||||
|
|
||||||
/* LUT registers */
|
|
||||||
#define PCIE_LUT_BASE 0x80000
|
|
||||||
#define PCIE_LUT_LCTRL0 0x7F8
|
|
||||||
#define PCIE_LUT_DBG 0x7FC
|
|
||||||
|
|
||||||
#define PCIE_DBI_RO_WR_EN 0x8bc
|
#define PCIE_DBI_RO_WR_EN 0x8bc
|
||||||
|
|
||||||
#define PCIE_LINK_CAP 0x7c
|
#define PCIE_LINK_CAP 0x7c
|
||||||
@@ -162,7 +158,7 @@ static int ls_pcie_link_state(struct ls_pcie *pcie)
|
|||||||
{
|
{
|
||||||
u32 state;
|
u32 state;
|
||||||
|
|
||||||
state = readl(pcie->dbi + PCIE_LUT_BASE + PCIE_LUT_DBG) &
|
state = pex_lut_in32(pcie->dbi + PCIE_LUT_BASE + PCIE_LUT_DBG) &
|
||||||
LTSSM_STATE_MASK;
|
LTSSM_STATE_MASK;
|
||||||
if (state < LTSSM_PCIE_L0) {
|
if (state < LTSSM_PCIE_L0) {
|
||||||
debug("....PCIe link error. LTSSM=0x%02x.\n", state);
|
debug("....PCIe link error. LTSSM=0x%02x.\n", state);
|
||||||
@@ -466,16 +462,20 @@ static void ls_pcie_setup_ep(struct ls_pcie *pcie, struct ls_pcie_info *info)
|
|||||||
|
|
||||||
for (pf = 0; pf < PCIE_PF_NUM; pf++) {
|
for (pf = 0; pf < PCIE_PF_NUM; pf++) {
|
||||||
for (vf = 0; vf <= PCIE_VF_NUM; vf++) {
|
for (vf = 0; vf <= PCIE_VF_NUM; vf++) {
|
||||||
|
#ifndef CONFIG_LS102XA
|
||||||
writel(PCIE_LCTRL0_VAL(pf, vf),
|
writel(PCIE_LCTRL0_VAL(pf, vf),
|
||||||
pcie->dbi + PCIE_LUT_BASE +
|
pcie->dbi + PCIE_LUT_BASE +
|
||||||
PCIE_LUT_LCTRL0);
|
PCIE_LUT_LCTRL0);
|
||||||
|
#endif
|
||||||
ls_pcie_ep_setup_bars(pcie->dbi);
|
ls_pcie_ep_setup_bars(pcie->dbi);
|
||||||
ls_pcie_ep_setup_atu(pcie, info);
|
ls_pcie_ep_setup_atu(pcie, info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Disable CFG2 */
|
/* Disable CFG2 */
|
||||||
|
#ifndef CONFIG_LS102XA
|
||||||
writel(0, pcie->dbi + PCIE_LUT_BASE + PCIE_LUT_LCTRL0);
|
writel(0, pcie->dbi + PCIE_LUT_BASE + PCIE_LUT_LCTRL0);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
ls_pcie_ep_setup_bars(pcie->dbi + PCIE_NO_SRIOV_BAR_BASE);
|
ls_pcie_ep_setup_bars(pcie->dbi + PCIE_NO_SRIOV_BAR_BASE);
|
||||||
ls_pcie_ep_setup_atu(pcie, info);
|
ls_pcie_ep_setup_atu(pcie, info);
|
||||||
|
Reference in New Issue
Block a user