Skip to content

Commit 275222f

Browse files
dgarskedanielinux
authored andcommitted
CPLD Fixes. Add MRAM support.
1 parent 7b1d180 commit 275222f

1 file changed

Lines changed: 46 additions & 18 deletions

File tree

hal/nxp_t1024.c

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
#define ENABLE_CPLD
5151
#define ENABLE_QE /* QUICC Engine */
5252
#define ENABLE_FMAN
53+
#define ENABLE_MRAM
5354

5455
#if defined(WOLFBOOT_TPM) || defined(TEST_TPM)
5556
#define ENABLE_ESPI /* SPI for TPM */
@@ -692,8 +693,13 @@ enum ifc_amask_sizes {
692693
#define CPLD_OVERRIDE_MUX_EN 0x02 /* PCIE/2.5G-SGMII mux override enable */
693694

694695
#define CPLD_DATA(n) ((volatile uint16_t*)(CPLD_BASE + (n)))
695-
#define CPLD_READ(reg) get16(CPLD_DATA(((reg))))
696-
#define CPLD_WRITE(reg, value) set16(CPLD_DATA((reg), (value)))
696+
#define CPLD_READ(reg) get16(CPLD_DATA(reg))
697+
#define CPLD_WRITE(reg, value) set16(CPLD_DATA(reg), value)
698+
699+
/* MRAM */
700+
#define MRAM_BASE 0xFF800000
701+
#define MRAM_BASE_PHYS_HIGH 0xFULL
702+
697703

698704

699705
/* eSPI */
@@ -1257,7 +1263,7 @@ static int hal_pcie_init(void)
12571263
{
12581264
int ret;
12591265
int bus, i;
1260-
int law_idx = 7;
1266+
int law_idx = 8;
12611267
int tlb_idx = 14; /* next available TLB (after DDR) */
12621268
struct pci_enum_info enum_info;
12631269
uint64_t mem_phys_h, io_phys_h;
@@ -1274,12 +1280,12 @@ static int hal_pcie_init(void)
12741280
cpld_pci, rcw4, srds_prtcl_s1);
12751281
if (srds_prtcl_s1 == 0x95) {
12761282
/* Route Lane B to PCIE */
1277-
set16(CPLD_DATA(PCI_STATUS_ADDR), cpld_pci & ~CPLD_PCIE_SGMII_MUX);
1283+
CPLD_WRITE(PCI_STATUS_ADDR, cpld_pci & ~CPLD_PCIE_SGMII_MUX);
12781284
wolfBoot_printf("Route Lane B->PCIE\n");
12791285
}
12801286
else {
12811287
/* Route Lane B to SGMII */
1282-
set16(CPLD_DATA(PCI_STATUS_ADDR), cpld_pci | CPLD_PCIE_SGMII_MUX);
1288+
CPLD_WRITE(PCI_STATUS_ADDR, cpld_pci | CPLD_PCIE_SGMII_MUX);
12831289
wolfBoot_printf("Route Lane B->SGMII\n");
12841290
}
12851291
cpld_pci = CPLD_READ(PCI_STATUS_ADDR);
@@ -1418,31 +1424,48 @@ static int hal_pcie_init(void)
14181424
}
14191425
#endif
14201426

1421-
#ifdef ENABLE_CPLD
1422-
static void hal_cpld_ifc_init(uint32_t base, uint32_t base_high, uint8_t ifc)
1427+
#if defined(ENABLE_CPLD) || defined(ENABLE_MRAM)
1428+
static void hal_ifc_init(uint8_t ifc, uint32_t base, uint32_t base_high,
1429+
uint32_t port_sz, uint32_t amask)
14231430
{
14241431
/* CPLD IFC Timing Parameters */
14251432
set32(IFC_FTIM0(ifc), (IFC_FTIM0_GPCM_TACSE(14UL) |
1426-
IFC_FTIM0_GPCM_TEADC(14UL) |
1427-
IFC_FTIM0_GPCM_TEAHC(14UL)));
1433+
IFC_FTIM0_GPCM_TEADC(14UL) |
1434+
IFC_FTIM0_GPCM_TEAHC(14UL)));
14281435
set32(IFC_FTIM1(ifc), (IFC_FTIM1_GPCM_TACO(14UL) |
1429-
IFC_FTIM1_GPCM_TRAD(31UL)));
1436+
IFC_FTIM1_GPCM_TRAD(31UL)));
14301437
set32(IFC_FTIM2(ifc), (IFC_FTIM2_GPCM_TCS(14UL) |
1431-
IFC_FTIM2_GPCM_TCH(8UL) |
1432-
IFC_FTIM2_GPCM_TWP(31UL)));
1438+
IFC_FTIM2_GPCM_TCH(8UL) |
1439+
IFC_FTIM2_GPCM_TWP(31UL)));
14331440
set32(IFC_FTIM3(ifc), 0);
14341441

14351442
/* CPLD IFC Definitions (CS2) */
14361443
set32(IFC_CSPR_EXT(ifc), base_high);
14371444
set32(IFC_CSPR(ifc), (IFC_CSPR_PHYS_ADDR(base) |
1438-
IFC_CSPR_PORT_SIZE_16 |
1439-
IFC_CSPR_MSEL_GPCM |
1440-
IFC_CSPR_V));
1441-
set32(IFC_AMASK(ifc), IFC_AMASK_64KB);
1445+
port_sz |
1446+
IFC_CSPR_MSEL_GPCM |
1447+
IFC_CSPR_V));
1448+
set32(IFC_AMASK(ifc), amask);
14421449
set32(IFC_CSOR(ifc), 0);
14431450
}
14441451
#endif
14451452

1453+
#ifdef ENABLE_MRAM
1454+
static void hal_mram_init(void)
1455+
{
1456+
/* MRAM IFC Timing Parameters */
1457+
hal_ifc_init(1, MRAM_BASE, MRAM_BASE_PHYS_HIGH,
1458+
IFC_CSPR_PORT_SIZE_8, IFC_AMASK_1MB);
1459+
1460+
/* MRAM IFC 1 - LAW 7, TLB 1.4 */
1461+
set_law(7, MRAM_BASE_PHYS_HIGH, MRAM_BASE, LAW_TRGT_IFC, LAW_SIZE_1MB, 1);
1462+
set_tlb(1, 4, MRAM_BASE,
1463+
MRAM_BASE, MRAM_BASE_PHYS_HIGH,
1464+
(MAS3_SX | MAS3_SW | MAS3_SR),
1465+
(MAS2_I | MAS2_G), 0, BOOKE_PAGESZ_1M, 1);
1466+
}
1467+
#endif
1468+
14461469
#if defined(ENABLE_CPLD) && defined(DEBUG)
14471470
void hal_cpld_dump(void)
14481471
{
@@ -1470,15 +1493,17 @@ static void hal_cpld_init(void)
14701493
uint32_t reg;
14711494

14721495
/* CPLD (APU) IFC 2 - LAW 2, TLB 1.11 */
1473-
hal_cpld_ifc_init(CPLD_BASE, CPLD_BASE_PHYS_HIGH, 2);
1496+
hal_ifc_init(2, CPLD_BASE, CPLD_BASE_PHYS_HIGH,
1497+
IFC_CSPR_PORT_SIZE_16, IFC_AMASK_64KB);
14741498
set_law(2, CPLD_BASE_PHYS_HIGH, CPLD_BASE, LAW_TRGT_IFC, LAW_SIZE_64KB, 1);
14751499
set_tlb(1, 11, CPLD_BASE,
14761500
CPLD_BASE, CPLD_BASE_PHYS_HIGH,
14771501
(MAS3_SX | MAS3_SW | MAS3_SR),
14781502
(MAS2_I | MAS2_G), 0, BOOKE_PAGESZ_256K, 1);
14791503

14801504
/* CPLD (MPU) IFC 3 - LAW 6, TLB 1.10 */
1481-
hal_cpld_ifc_init(CPLD_MPU_BASE, CPLD_MPU_BASE_PHYS_HIGH, 3);
1505+
hal_ifc_init(3, CPLD_MPU_BASE, CPLD_MPU_BASE_PHYS_HIGH,
1506+
IFC_CSPR_PORT_SIZE_16, IFC_AMASK_64KB);
14821507
set_law(6, CPLD_MPU_BASE_PHYS_HIGH, CPLD_MPU_BASE, LAW_TRGT_IFC,
14831508
LAW_SIZE_64KB, 1);
14841509
set_tlb(1, 10, CPLD_MPU_BASE,
@@ -2032,6 +2057,9 @@ void hal_init(void)
20322057
hal_liodn_init();
20332058
hal_flash_init();
20342059
hal_cpld_init();
2060+
#ifdef ENABLE_MRAM
2061+
hal_mram_init();
2062+
#endif
20352063
#ifdef ENABLE_PCIE
20362064
if (hal_pcie_init() != 0) {
20372065
wolfBoot_printf("PCIe: init failed!\n");

0 commit comments

Comments
 (0)