public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot
@ 2013-03-25 17:33 York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 02/23] powerpc/mpc85xx: Add definitions for HDBCR registers York Sun
                   ` (21 more replies)
  0 siblings, 22 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Sandeep Singh <sandeep@freescale.com>

The bit positions for FMAN1 freq in RCW is different for B4860.
Also addded a case when FMAN1 frewuency is equal to systembus.

Signed-off-by: Sandeep Singh <Sandeep@freescale.com>
Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/speed.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/powerpc/cpu/mpc85xx/speed.c b/arch/powerpc/cpu/mpc85xx/speed.c
index 297f2ed..9fc7b54 100644
--- a/arch/powerpc/cpu/mpc85xx/speed.c
+++ b/arch/powerpc/cpu/mpc85xx/speed.c
@@ -132,10 +132,15 @@ void get_sys_info (sys_info_t * sysInfo)
 		sysInfo->freqProcessor[cpu] =
 			 freqCC_PLL[cplx_pll] / core_cplx_PLL_div[c_pll_sel];
 	}
+#ifdef CONFIG_PPC_B4860
+#define FM1_CLK_SEL	0xe0000000
+#define FM1_CLK_SHIFT	29
+#else
 #define PME_CLK_SEL	0xe0000000
 #define PME_CLK_SHIFT	29
 #define FM1_CLK_SEL	0x1c000000
 #define FM1_CLK_SHIFT	26
+#endif
 	rcw_tmp = in_be32(&gur->rcwsr[7]);
 
 #ifdef CONFIG_SYS_DPAA_PME
@@ -185,6 +190,9 @@ void get_sys_info (sys_info_t * sysInfo)
 	case 4:
 		sysInfo->freqFMan[0] = freqCC_PLL[3] / 4;
 		break;
+	case 5:
+		sysInfo->freqFMan[0] = sysInfo->freqSystemBus;
+		break;
 	case 6:
 		sysInfo->freqFMan[0] = freqCC_PLL[4] / 2;
 		break;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 02/23] powerpc/mpc85xx: Add definitions for HDBCR registers
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 03/23] powerpc/pcie: add PCIe version 3.x support York Sun
                   ` (20 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Andy Fleming <afleming@freescale.com>

Makes it a bit easier to see if we've properly set them. While
we're in there, modify the accesses to HDBCR0 and HDBCR1  to actually
use those definitions.

Signed-off-by: Andy Fleming <afleming@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/release.S   |    8 ++++----
 arch/powerpc/cpu/mpc85xx/start.S     |    8 ++++----
 arch/powerpc/include/asm/processor.h |   10 ++++++++++
 3 files changed, 18 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/release.S b/arch/powerpc/cpu/mpc85xx/release.S
index 5c4b1e3..0dea871 100644
--- a/arch/powerpc/cpu/mpc85xx/release.S
+++ b/arch/powerpc/cpu/mpc85xx/release.S
@@ -69,9 +69,9 @@ __secondary_start_page:
 #endif
 
 #ifdef CONFIG_SYS_FSL_ERRATUM_CPU_A003999
-	mfspr	r3,977
+	mfspr	r3,SPRN_HDBCR1
 	oris	r3,r3,0x0100
-	mtspr	977,r3
+	mtspr	SPRN_HDBCR1,r3
 #endif
 
 #ifdef CONFIG_SYS_FSL_ERRATUM_A004510
@@ -93,10 +93,10 @@ __secondary_start_page:
 1:	/* Erratum says set bits 55:60 to 001001 */
 	msync
 	isync
-	mfspr	r3,976
+	mfspr	r3,SPRN_HDBCR0
 	li	r4,0x48
 	rlwimi	r3,r4,0,0x1f8
-	mtspr	976,r3
+	mtspr	SPRN_HDBCR0,r3
 	isync
 2:
 #endif
diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
index 3f76ee6..2ce5505 100644
--- a/arch/powerpc/cpu/mpc85xx/start.S
+++ b/arch/powerpc/cpu/mpc85xx/start.S
@@ -116,10 +116,10 @@ _start_e500:
 	/* Erratum says set bits 55:60 to 001001 */
 	msync
 	isync
-	mfspr	r3,976
+	mfspr	r3,SPRN_HDBCR0
 	li	r4,0x48
 	rlwimi	r3,r4,0,0x1f8
-	mtspr	976,r3
+	mtspr	SPRN_HDBCR0,r3
 	isync
 2:
 #endif
@@ -372,9 +372,9 @@ l2_disabled:
 #endif
 
 #ifdef CONFIG_SYS_FSL_ERRATUM_CPU_A003999
-	mfspr	r3,977
+	mfspr	r3,SPRN_HDBCR1
 	oris	r3,r3,0x0100
-	mtspr	977,r3
+	mtspr	SPRN_HDBCR1,r3
 #endif
 
 	/* Enable Branch Prediction */
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
index 8c91f08..1ecf266 100644
--- a/arch/powerpc/include/asm/processor.h
+++ b/arch/powerpc/include/asm/processor.h
@@ -575,6 +575,16 @@
 #define SPRN_MSSSR0	0x3f7
 #endif
 
+#define SPRN_HDBCR0	0x3d0
+#define SPRN_HDBCR1	0x3d1
+#define SPRN_HDBCR2	0x3d2
+#define SPRN_HDBCR3	0x3d3
+#define SPRN_HDBCR4	0x3d4
+#define SPRN_HDBCR5	0x3d5
+#define SPRN_HDBCR6	0x3d6
+#define SPRN_HDBCR7	0x277
+#define SPRN_HDBCR8	0x278
+
 /* Short-hand versions for a number of the above SPRNs */
 
 #define CTR	SPRN_CTR	/* Counter Register */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 03/23] powerpc/pcie: add PCIe version 3.x support
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 02/23] powerpc/mpc85xx: Add definitions for HDBCR registers York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-05-13 18:50   ` Andy Fleming
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 04/23] powerpc/mpc85xx: Update corenet global utility block registers York Sun
                   ` (19 subsequent siblings)
  21 siblings, 1 reply; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Roy ZANG <tie-fei.zang@freescale.com>

T4240 PCIe IP is version 3.0 and has some update comparing previous
QorIQ products.

1.  Move Freescale specific register define
to
arch/powerpc/include/asm/fsl_pci.h
and update the register offset define for T4240.

2. add the status/control register define
use status/control register to judge the link status

3. The original code uses 'Programming Interface' field to judge if PCIE is
EP or RC mode, however, T4240 does not support this functionality.
According to PCIE specification, 'Header Type' offset 0x0e is used to
indicate header type, so for PCIE controller, the patch changes code to
use 'Header Type' field to identify if the PCIE is RC or EP mode.

Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
Signed-off-by: Minghuan Lian <Minghuan.Lian@freescale.com>
---
 arch/powerpc/include/asm/config_mpc85xx.h |    1 +
 arch/powerpc/include/asm/fsl_pci.h        |   35 +++++++++++++++++++++++++++--
 drivers/pci/fsl_pci_init.c                |   20 ++++++++++++-----
 include/pci.h                             |    7 ------
 4 files changed, 48 insertions(+), 15 deletions(-)

diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
index 352e303..3740785 100644
--- a/arch/powerpc/include/asm/config_mpc85xx.h
+++ b/arch/powerpc/include/asm/config_mpc85xx.h
@@ -543,6 +543,7 @@
 #define CONFIG_SYS_FSL_ERRATUM_A_004934
 #define CONFIG_SYS_FSL_ERRATUM_A005871
 #define CONFIG_SYS_CCSRBAR_DEFAULT	0xfe000000
+#define CONFIG_SYS_FSL_PCI_VER_3_X
 
 #elif defined(CONFIG_PPC_B4420)
 #define CONFIG_SYS_PPC64		/* 64-bit core */
diff --git a/arch/powerpc/include/asm/fsl_pci.h b/arch/powerpc/include/asm/fsl_pci.h
index 49bd2bf..0c41361 100644
--- a/arch/powerpc/include/asm/fsl_pci.h
+++ b/arch/powerpc/include/asm/fsl_pci.h
@@ -1,5 +1,5 @@
 /*
- * Copyright 2007,2009-2011 Freescale Semiconductor, Inc.
+ * Copyright 2007,2009-2012 Freescale Semiconductor, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -27,6 +27,34 @@
 
 #define PEX_IP_BLK_REV_2_2	0x02080202
 #define PEX_IP_BLK_REV_2_3	0x02080203
+#define PEX_IP_BLK_REV_3_0	0x02080300
+
+/* Freescale-specific PCI config registers */
+#define FSL_PCI_PBFR		0x44
+
+#ifdef CONFIG_SYS_FSL_PCI_VER_3_X
+/* Currently only the PCIe capability is used, so hardcode the offset.
+ * if more capabilities need to be justified, the capability link method
+ * should be applied here
+ */
+#define FSL_PCIE_CAP_ID		0x70
+#define PCI_DCR		0x78    /* PCIe Device Control Register */
+#define PCI_DSR		0x7a    /* PCIe Device Status Register */
+#define PCI_LSR		0x82    /* PCIe Link Status Register */
+#define PCI_LCR		0x80    /* PCIe Link Control Register */
+#else
+#define FSL_PCIE_CAP_ID		0x4c
+#define PCI_DCR		0x54    /* PCIe Device Control Register */
+#define PCI_DSR		0x56    /* PCIe Device Status Register */
+#define PCI_LSR		0x5e    /* PCIe Link Status Register */
+#define PCI_LCR		0x5c    /* PCIe Link Control Register */
+#endif
+
+#define FSL_PCIE_CFG_RDY	0x4b0
+#define FSL_PROG_IF_AGENT	0x1
+
+#define PCI_LTSSM	0x404   /* PCIe Link Training, Status State Machine */
+#define  PCI_LTSSM_L0	0x16    /* L0 state */
 
 int fsl_setup_hose(struct pci_controller *hose, unsigned long addr);
 int fsl_is_pci_agent(struct pci_controller *hose);
@@ -163,7 +191,10 @@ typedef struct ccsr_pci {
 	u32	perr_cap3;	/* 0xe34 - PCIE Error Capture Register 3 */
 	char	res23[200];
 	u32	pdb_stat;	/* 0xf00 - PCIE Debug Status */
-	char	res24[252];
+	char	res24[16];
+	u32	pex_csr0;	/* 0xf14 - PEX Control/Status register 0*/
+	u32	pex_csr1;	/* 0xf18 - PEX Control/Status register 1*/
+	char	res25[228];
 } ccsr_fsl_pci_t;
 #define PCIE_CONFIG_PC	0x00020000
 #define PCIE_CONFIG_OB_CK	0x00002000
diff --git a/drivers/pci/fsl_pci_init.c b/drivers/pci/fsl_pci_init.c
index 77ac1f7..d881375 100644
--- a/drivers/pci/fsl_pci_init.c
+++ b/drivers/pci/fsl_pci_init.c
@@ -41,12 +41,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #include <asm/io.h>
 #include <asm/fsl_pci.h>
 
-/* Freescale-specific PCI config registers */
-#define FSL_PCI_PBFR		0x44
-#define FSL_PCIE_CAP_ID		0x4c
-#define FSL_PCIE_CFG_RDY	0x4b0
-#define FSL_PROG_IF_AGENT	0x1
-
 #ifndef CONFIG_SYS_PCI_MEMORY_BUS
 #define CONFIG_SYS_PCI_MEMORY_BUS 0
 #endif
@@ -437,6 +431,15 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info)
 	udelay(1);
 #endif
 	if (pcie_cap == PCI_CAP_ID_EXP) {
+		if (block_rev >= PEX_IP_BLK_REV_3_0) {
+#define PEX_CSR0_LTSSM_MASK	0xFC
+#define PEX_CSR0_LTSSM_SHIFT	2
+			ltssm = (in_be32(&pci->pex_csr0)
+				& PEX_CSR0_LTSSM_MASK) >> PEX_CSR0_LTSSM_SHIFT;
+			enabled = (ltssm == 0x11) ? 1 : 0;
+		} else {
+		/* pci_hose_read_config_word(hose, dev, PCI_LTSSM, &ltssm); */
+		/* enabled = ltssm >= PCI_LTSSM_L0; */
 		pci_hose_read_config_word(hose, dev, PCI_LTSSM, &ltssm);
 		enabled = ltssm >= PCI_LTSSM_L0;
 
@@ -469,6 +472,7 @@ void fsl_pci_init(struct pci_controller *hose, struct fsl_pci_info *pci_info)
 					PCI_BASE_ADDRESS_0, pcicsrbar);
 		}
 #endif
+	}
 
 #ifdef CONFIG_SYS_P4080_ERRATUM_PCIE_A003
 		if (enabled == 0) {
@@ -577,6 +581,10 @@ int fsl_is_pci_agent(struct pci_controller *hose)
 		u8 prog_if;
 
 		pci_hose_read_config_byte(hose, dev, PCI_CLASS_PROG, &prog_if);
+		/* Programming Interface (PCI_CLASS_PROG)
+		 * 0 == pci host or pcie root-complex,
+		 * 1 == pci agent or pcie end-point
+		 */
 		return (prog_if == FSL_PROG_IF_AGENT);
 	}
 }
diff --git a/include/pci.h b/include/pci.h
index 15f583f..c0ed553 100644
--- a/include/pci.h
+++ b/include/pci.h
@@ -426,13 +426,6 @@
 #define PCI_MAX_PCI_DEVICES	32
 #define PCI_MAX_PCI_FUNCTIONS	8
 
-#define PCI_DCR		0x54    /* PCIe Device Control Register */
-#define PCI_DSR		0x56    /* PCIe Device Status Register */
-#define PCI_LSR		0x5e    /* PCIe Link Status Register */
-#define PCI_LCR		0x5c    /* PCIe Link Control Register */
-#define PCI_LTSSM	0x404   /* PCIe Link Training, Status State Machine */
-#define  PCI_LTSSM_L0	0x16    /* L0 state */
-
 /* Include the ID list */
 
 #include <pci_ids.h>
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 04/23] powerpc/mpc85xx: Update corenet global utility block registers
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 02/23] powerpc/mpc85xx: Add definitions for HDBCR registers York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 03/23] powerpc/pcie: add PCIe version 3.x support York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 05/23] powerpc/t4240qds: Fix SPI flash type York Sun
                   ` (18 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

Fix ccsr_gur for corenet platform. Remove non-exist registers. Add fuse
status register.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 arch/powerpc/include/asm/immap_85xx.h |   21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h
index 4eb3f79..8bc047b 100644
--- a/arch/powerpc/include/asm/immap_85xx.h
+++ b/arch/powerpc/include/asm/immap_85xx.h
@@ -1676,18 +1676,17 @@ typedef struct cpc_corenet {
 /* Global Utilities Block */
 #ifdef CONFIG_FSL_CORENET
 typedef struct ccsr_gur {
-	u32	porsr1;		/* POR status */
-	u8	res1[28];
+	u32	porsr1;		/* POR status 1 */
+	u32	porsr2;		/* POR status 2 */
+	u8	res_008[0x20-0x8];
 	u32	gpporcr1;	/* General-purpose POR configuration */
-	u8	res2[12];
-	u32	gpiocr;		/* GPIO control */
-	u8	res3[12];
-	u32	gpoutdr;	/* General-purpose output data */
-	u8	res4[12];
-	u32	gpindr;		/* General-purpose input data */
-	u8	res5[12];
-	u32	alt_pmuxcr;	/* Alt function signal multiplex control */
-	u8	res6[12];
+	u32	gpporcr2;	/* General-purpose POR configuration 2 */
+	u32	dcfg_fusesr;	/* Fuse status register */
+#define FSL_CORENET_DCFG_FUSESR_VID_SHIFT	25
+#define FSL_CORENET_DCFG_FUSESR_VID_MASK	0x1F
+#define FSL_CORENET_DCFG_FUSESR_ALTVID_SHIFT	20
+#define FSL_CORENET_DCFG_FUSESR_ALTVID_MASK	0x1F
+	u8	res_02c[0x70-0x2c];
 	u32	devdisr;	/* Device disable control */
 	u32	devdisr2;	/* Device disable control 2 */
 	u32	devdisr3;	/* Device disable control 3 */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 05/23] powerpc/t4240qds: Fix SPI flash type
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (2 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 04/23] powerpc/mpc85xx: Update corenet global utility block registers York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 06/23] e6500: Move L1 enablement after L2 enablement York Sun
                   ` (17 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Shaohui Xie <Shaohui.Xie@freescale.com>

T4240QDS uses a SST instead of SPANSION SPI flash.

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
---
 include/configs/t4qds.h |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/configs/t4qds.h b/include/configs/t4qds.h
index 2c665b8..fb8863b 100644
--- a/include/configs/t4qds.h
+++ b/include/configs/t4qds.h
@@ -504,7 +504,7 @@ unsigned long get_board_ddr_clk(void);
  */
 #define CONFIG_FSL_ESPI
 #define CONFIG_SPI_FLASH
-#define CONFIG_SPI_FLASH_SPANSION
+#define CONFIG_SPI_FLASH_SST
 #define CONFIG_CMD_SF
 #define CONFIG_SF_DEFAULT_SPEED         10000000
 #define CONFIG_SF_DEFAULT_MODE          0
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 06/23] e6500: Move L1 enablement after L2 enablement
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (3 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 05/23] powerpc/t4240qds: Fix SPI flash type York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 07/23] T4/serdes: fix the serdes clock frequency display York Sun
                   ` (16 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Andy Fleming <afleming@freescale.com>

The L1 D-cache on e6500 is write-through. This means that it's not
considered a good idea to have the L1 up and running if the L2 is
disabled. We don't actually *use* the L1 until after the L2 is
brought up on e6500, so go ahead and move the L1 enablement after
that code is done.

Signed-off-by: Andy Fleming <afleming@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/start.S |   94 +++++++++++++++++++-------------------
 1 file changed, 47 insertions(+), 47 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
index 2ce5505..5542d0a 100644
--- a/arch/powerpc/cpu/mpc85xx/start.S
+++ b/arch/powerpc/cpu/mpc85xx/start.S
@@ -173,52 +173,6 @@ l2_disabled:
 	mfspr	r1,DBSR
 	mtspr	DBSR,r1		/* Clear all valid bits */
 
-	/*
-	 *	Enable L1 Caches early
-	 *
-	 */
-
-#ifdef CONFIG_SYS_CACHE_STASHING
-	/* set stash id to (coreID) * 2 + 32 + L1 CT (0) */
-	li	r2,(32 + 0)
-	mtspr	L1CSR2,r2
-#endif
-
-	/* Enable/invalidate the I-Cache */
-	lis	r2,(L1CSR1_ICFI|L1CSR1_ICLFR)@h
-	ori	r2,r2,(L1CSR1_ICFI|L1CSR1_ICLFR)@l
-	mtspr	SPRN_L1CSR1,r2
-1:
-	mfspr	r3,SPRN_L1CSR1
-	and.	r1,r3,r2
-	bne	1b
-
-	lis	r3,(L1CSR1_CPE|L1CSR1_ICE)@h
-	ori	r3,r3,(L1CSR1_CPE|L1CSR1_ICE)@l
-	mtspr	SPRN_L1CSR1,r3
-	isync
-2:
-	mfspr	r3,SPRN_L1CSR1
-	andi.	r1,r3,L1CSR1_ICE at l
-	beq	2b
-
-	/* Enable/invalidate the D-Cache */
-	lis	r2,(L1CSR0_DCFI|L1CSR0_DCLFR)@h
-	ori	r2,r2,(L1CSR0_DCFI|L1CSR0_DCLFR)@l
-	mtspr	SPRN_L1CSR0,r2
-1:
-	mfspr	r3,SPRN_L1CSR0
-	and.	r1,r3,r2
-	bne	1b
-
-	lis	r3,(L1CSR0_CPE|L1CSR0_DCE)@h
-	ori	r3,r3,(L1CSR0_CPE|L1CSR0_DCE)@l
-	mtspr	SPRN_L1CSR0,r3
-	isync
-2:
-	mfspr	r3,SPRN_L1CSR0
-	andi.	r1,r3,L1CSR0_DCE at l
-	beq	2b
 
 	.macro	create_tlb1_entry esel ts tsize epn wimg rpn perm phy_high scratch
 	lis	\scratch, FSL_BOOKE_MAS0(1, \esel, 0)@h
@@ -782,11 +736,57 @@ enable_l2_cluster_l2:
 	bne	1b
 	lis	r4, L2CSR0_L2E at h
 	sync
-	stw	r4, 0(r3)	/* eanble L2 */
+	stw	r4, 0(r3)	/* enable L2 */
 delete_ccsr_l2_tlb:
 	delete_tlb0_entry 0, CONFIG_SYS_CCSRBAR + 0xC20000, MAS2_I|MAS2_G, r3
 #endif
 
+	/*
+	 * Enable the L1. On e6500, this has to be done
+	 * after the L2 is up.
+	 */
+
+#ifdef CONFIG_SYS_CACHE_STASHING
+	/* set stash id to (coreID) * 2 + 32 + L1 CT (0) */
+	li	r2,(32 + 0)
+	mtspr	L1CSR2,r2
+#endif
+
+	/* Enable/invalidate the I-Cache */
+	lis	r2,(L1CSR1_ICFI|L1CSR1_ICLFR)@h
+	ori	r2,r2,(L1CSR1_ICFI|L1CSR1_ICLFR)@l
+	mtspr	SPRN_L1CSR1,r2
+1:
+	mfspr	r3,SPRN_L1CSR1
+	and.	r1,r3,r2
+	bne	1b
+
+	lis	r3,(L1CSR1_CPE|L1CSR1_ICE)@h
+	ori	r3,r3,(L1CSR1_CPE|L1CSR1_ICE)@l
+	mtspr	SPRN_L1CSR1,r3
+	isync
+2:
+	mfspr	r3,SPRN_L1CSR1
+	andi.	r1,r3,L1CSR1_ICE at l
+	beq	2b
+
+	/* Enable/invalidate the D-Cache */
+	lis	r2,(L1CSR0_DCFI|L1CSR0_DCLFR)@h
+	ori	r2,r2,(L1CSR0_DCFI|L1CSR0_DCLFR)@l
+	mtspr	SPRN_L1CSR0,r2
+1:
+	mfspr	r3,SPRN_L1CSR0
+	and.	r1,r3,r2
+	bne	1b
+
+	lis	r3,(L1CSR0_CPE|L1CSR0_DCE)@h
+	ori	r3,r3,(L1CSR0_CPE|L1CSR0_DCE)@l
+	mtspr	SPRN_L1CSR0,r3
+	isync
+2:
+	mfspr	r3,SPRN_L1CSR0
+	andi.	r1,r3,L1CSR0_DCE at l
+	beq	2b
 #ifdef CONFIG_SYS_FSL_ERRATUM_A004510
 #define DCSR_LAWBARH0	(CONFIG_SYS_CCSRBAR + 0x1000)
 #define LAW_SIZE_1M	0x13
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 07/23] T4/serdes: fix the serdes clock frequency display
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (4 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 06/23] e6500: Move L1 enablement after L2 enablement York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 08/23] powerpc/t4240qds: fix XAUI card PHY address York Sun
                   ` (15 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Roy Zang <tie-fei.zang@freescale.com>

Reverse the bit sequence to display serdes clock frequency correctly.
The correct bit maps in BRDCFG2 are
0	1	2	3	4	5	6	7
S1RATE[1:0]	S2RATE[1:0] 	S3RATE[1:0] 	S4RATE[1:0]

Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
---
 board/freescale/t4qds/t4qds.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/board/freescale/t4qds/t4qds.c b/board/freescale/t4qds/t4qds.c
index 3c95f3f..e8c6998 100644
--- a/board/freescale/t4qds/t4qds.c
+++ b/board/freescale/t4qds/t4qds.c
@@ -110,7 +110,7 @@ int checkboard(void)
 	for (i = 0; i < MAX_SERDES; i++) {
 		static const char *freq[] = {
 			"100", "125", "156.25", "161.1328125"};
-		unsigned int clock = (sw >> (2 * i)) & 3;
+		unsigned int clock = (sw >> (6 - 2 * i)) & 3;
 
 		printf("SERDES%u=%sMHz ", i+1, freq[clock]);
 	}
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 08/23] powerpc/t4240qds: fix XAUI card PHY address
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (5 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 07/23] T4/serdes: fix the serdes clock frequency display York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 09/23] Fman/t4240: some fix for 10G XAUI York Sun
                   ` (14 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Shaohui Xie <Shaohui.Xie@freescale.com>

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
---
 include/configs/t4qds.h |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/include/configs/t4qds.h b/include/configs/t4qds.h
index fb8863b..c5110c2 100644
--- a/include/configs/t4qds.h
+++ b/include/configs/t4qds.h
@@ -646,10 +646,10 @@ unsigned long get_board_ddr_clk(void);
 #define XFI_CARD_PORT3_PHY_ADDR	0x3
 #define XFI_CARD_PORT4_PHY_ADDR	0x4
 #define QSGMII_CARD_PHY_ADDR	0x5
-#define FM1_10GEC1_PHY_ADDR	0x6
-#define FM1_10GEC2_PHY_ADDR	0x7
-#define FM2_10GEC1_PHY_ADDR	0x8
-#define FM2_10GEC2_PHY_ADDR	0x9
+#define FM1_10GEC1_PHY_ADDR	0x0
+#define FM1_10GEC2_PHY_ADDR	0x1
+#define FM2_10GEC1_PHY_ADDR	0x2
+#define FM2_10GEC2_PHY_ADDR	0x3
 #endif
 
 #ifdef CONFIG_PCI
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 09/23] Fman/t4240: some fix for 10G XAUI
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (6 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 08/23] powerpc/t4240qds: fix XAUI card PHY address York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 10/23] T4/SerDes: correct the SATA index York Sun
                   ` (13 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Shaohui Xie <Shaohui.Xie@freescale.com>

1. fix 10G mac offset by plus 8;
2. add second 10G port info for FM1 & FM2 when init ethernet info;
3. fix 10G lanes name to match lane protocol table;

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
---
 drivers/net/fm/eth.c   |    2 ++
 drivers/net/fm/init.c  |    6 ++++++
 drivers/net/fm/t4240.c |   14 ++++++++++----
 include/fm_eth.h       |    4 ++--
 4 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/drivers/net/fm/eth.c b/drivers/net/fm/eth.c
index 54b142f..9b139ee 100644
--- a/drivers/net/fm/eth.c
+++ b/drivers/net/fm/eth.c
@@ -568,6 +568,8 @@ static int fm_eth_init_mac(struct fm_eth *fm_eth, struct ccsr_fman *reg)
 	num = fm_eth->num;
 
 #ifdef CONFIG_SYS_FMAN_V3
+	if (fm_eth->type == FM_ETH_10G_E)
+		num += 8;
 	base = &reg->memac[num].fm_memac;
 	phyregs = &reg->memac[num].fm_memac_mdio;
 #else
diff --git a/drivers/net/fm/init.c b/drivers/net/fm/init.c
index ae389b8..d12ec9b 100644
--- a/drivers/net/fm/init.c
+++ b/drivers/net/fm/init.c
@@ -74,9 +74,15 @@ struct fm_eth_info fm_info[] = {
 #if (CONFIG_SYS_NUM_FM1_10GEC >= 1)
 	FM_TGEC_INFO_INITIALIZER(1, 1),
 #endif
+#if (CONFIG_SYS_NUM_FM1_10GEC >= 2)
+	FM_TGEC_INFO_INITIALIZER(1, 2),
+#endif
 #if (CONFIG_SYS_NUM_FM2_10GEC >= 1)
 	FM_TGEC_INFO_INITIALIZER(2, 1),
 #endif
+#if (CONFIG_SYS_NUM_FM2_10GEC >= 2)
+	FM_TGEC_INFO_INITIALIZER(2, 2),
+#endif
 };
 
 int fm_standard_init(bd_t *bis)
diff --git a/drivers/net/fm/t4240.c b/drivers/net/fm/t4240.c
index 48c530c..275395f 100644
--- a/drivers/net/fm/t4240.c
+++ b/drivers/net/fm/t4240.c
@@ -70,12 +70,18 @@ phy_interface_t fman_port_enet_if(enum fm_port port)
 	if (is_device_disabled(port))
 		return PHY_INTERFACE_MODE_NONE;
 
-	if ((port == FM1_10GEC1 || port == FM1_10GEC2)
-			&& (is_serdes_configured(XAUI_FM1)))
+	if ((port == FM1_10GEC1 || port == FM1_10GEC2) &&
+	    ((is_serdes_configured(XAUI_FM1_MAC9))	||
+	     (is_serdes_configured(XAUI_FM1_MAC10))	||
+	     (is_serdes_configured(XFI_FM1_MAC9))	||
+	     (is_serdes_configured(XFI_FM1_MAC10))))
 		return PHY_INTERFACE_MODE_XGMII;
 
-	if ((port == FM2_10GEC1 || port == FM2_10GEC2)
-			&& (is_serdes_configured(XAUI_FM2)))
+	if ((port == FM2_10GEC1 || port == FM2_10GEC2) &&
+	    ((is_serdes_configured(XAUI_FM2_MAC9))	||
+	     (is_serdes_configured(XAUI_FM2_MAC10))	||
+	     (is_serdes_configured(XFI_FM2_MAC9))	||
+	     (is_serdes_configured(XFI_FM2_MAC10))))
 		return PHY_INTERFACE_MODE_XGMII;
 
 #define FSL_CORENET_RCWSR13_EC1			0x60000000 /* bits 417..418 */
diff --git a/include/fm_eth.h b/include/fm_eth.h
index 495765b..8fcf172 100644
--- a/include/fm_eth.h
+++ b/include/fm_eth.h
@@ -88,7 +88,7 @@ enum fm_eth_type {
 
 #define FM_TGEC_INFO_INITIALIZER(idx, n) \
 {									\
-	FM_ETH_INFO_INITIALIZER(idx, CONFIG_SYS_FM1_TGEC_MDIO_ADDR)	\
+	FM_ETH_INFO_INITIALIZER(idx, CONFIG_SYS_FM2_TGEC_MDIO_ADDR)	\
 	.index		= idx,						\
 	.num		= n - 1,					\
 	.type		= FM_ETH_10G_E,					\
@@ -96,7 +96,7 @@ enum fm_eth_type {
 	.rx_port_id	= RX_PORT_10G_BASE + n - 1,			\
 	.tx_port_id	= TX_PORT_10G_BASE + n - 1,			\
 	.compat_offset	= CONFIG_SYS_FSL_FM##idx##_OFFSET +		\
-				offsetof(struct ccsr_fman, memac[n-1]),\
+				offsetof(struct ccsr_fman, memac[n-1+8]),\
 }
 #else
 #define FM_DTSEC_INFO_INITIALIZER(idx, n) \
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 10/23] T4/SerDes: correct the SATA index
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (7 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 09/23] Fman/t4240: some fix for 10G XAUI York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 11/23] powerpc/t4240qds: Update DDR timing table York Sun
                   ` (12 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Roy Zang <tie-fei.zang@freescale.com>

Lane H on SerDes4 should be SATA2 instead of SATA1

Signed-off-by: Jerry Huang <Chang-Ming.Huang@freescale.com>
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/t4240_serdes.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/t4240_serdes.c b/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
index 102defa..530f159 100644
--- a/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
+++ b/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
@@ -180,8 +180,8 @@ static struct serdes_config serdes4_cfg_tbl[] = {
 	{4, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, PCIE4, PCIE4}},
 	{6, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2}},
 	{8, {PCIE3, PCIE3, PCIE3, PCIE3, SRIO2, SRIO2, SRIO2, SRIO2}},
-	{10, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, SATA1, SATA1}},
-	{12, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SATA1, SATA1}},
+	{10, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, SATA1, SATA2} },
+	{12, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SATA1, SATA2} },
 	{14, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2}},
 	{16, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, SRIO2, SRIO2}},
 	{18, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, AURORA, AURORA}},
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 11/23] powerpc/t4240qds: Update DDR timing table
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (8 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 10/23] T4/SerDes: correct the SATA index York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 12/23] powerpc/mpc8xxx: Fix DDR 3-way interleaving York Sun
                   ` (11 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

Update the timing table to support more rank density, based on the theory
that similar density DIMMs have similar clock adjust and write level start
timing. Update the timing for 1600 and 1866 MT/s. Tested with Micron
MT18JSF1G72AZ-1G9E1 DIMMs, iDIMM M3CN-4GMJ3C0C-M92.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 board/freescale/t4qds/ddr.c |   56 ++++++++++++++++++++++++++-----------------
 1 file changed, 34 insertions(+), 22 deletions(-)

diff --git a/board/freescale/t4qds/ddr.c b/board/freescale/t4qds/ddr.c
index 692616a..058d625 100644
--- a/board/freescale/t4qds/ddr.c
+++ b/board/freescale/t4qds/ddr.c
@@ -19,6 +19,7 @@ DECLARE_GLOBAL_DATA_PTR;
 struct board_specific_parameters {
 	u32 n_ranks;
 	u32 datarate_mhz_high;
+	u32 rank_gb;
 	u32 clk_adjust;
 	u32 wrlvl_start;
 	u32 wrlvl_ctl_2;
@@ -36,16 +37,19 @@ struct board_specific_parameters {
 static const struct board_specific_parameters udimm0[] = {
 	/*
 	 * memory controller 0
-	 *   num|  hi|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
-	 * ranks| mhz|adjst| start |   ctl2    |  ctl3  |      |delay |
+	 *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
+	 * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay |
 	 */
-	{2,  1350,    5,     7, 0x0809090b, 0x0c0c0d09,   0xff,    2,  0},
-	{2,  1666,    5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
-	{2,  2140,    5,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
-	{1,  1350,    5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
-	{1,  1700,    5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
-	{1,  1900,    4,     8, 0x080a0a0c, 0x0e0e0f0a,   0xff,    2,  0},
-	{1,  2140,    4,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
+	{2,  1350, 4, 4,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
+	{2,  1350, 0, 5,     7, 0x0709090b, 0x0c0c0d09,   0xff,    2,  0},
+	{2,  1666, 4, 4,     8, 0x080a0a0d, 0x0d10100b,   0xff,    2,  0},
+	{2,  1666, 0, 5,     7, 0x080a0a0c, 0x0d0d0e0a,   0xff,    2,  0},
+	{2,  1900, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0},
+	{2,  2140, 0, 4,     8, 0x090a0b0e, 0x0f11120c,   0xff,    2,  0},
+	{1,  1350, 0, 5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
+	{1,  1700, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
+	{1,  1900, 0, 4,     8, 0x080a0a0c, 0x0e0e0f0a,   0xff,    2,  0},
+	{1,  2140, 0, 4,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
 	{}
 };
 
@@ -61,19 +65,19 @@ static const struct board_specific_parameters *udimms[] = {
 static const struct board_specific_parameters rdimm0[] = {
 	/*
 	 * memory controller 0
-	 *   num|  hi|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
-	 * ranks| mhz|adjst| start |   ctl2    |  ctl3  |      |delay |
+	 *   num|  hi| rank|  clk| wrlvl |   wrlvl   |  wrlvl | cpo  |wrdata|2T
+	 * ranks| mhz| GB  |adjst| start |   ctl2    |  ctl3  |      |delay |
 	 */
-	{4,  1350,    5,     9, 0x08070605, 0x07080805,   0xff,    2,  0},
-	{4,  1666,    5,     8, 0x08070605, 0x07080805,   0xff,    2,  0},
-	{4,  2140,    5,     8, 0x08070605, 0x07081805,   0xff,    2,  0},
-	{2,  1350,    5,     7, 0x0809090b, 0x0c0c0d09,   0xff,    2,  0},
-	{2,  1666,    5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
-	{2,  2140,    5,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
-	{1,  1350,    5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
-	{1,  1700,    5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
-	{1,  1900,    4,     8, 0x080a0a0c, 0x0e0e0f0a,   0xff,    2,  0},
-	{1,  2140,    4,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
+	{4,  1350, 0, 5,     9, 0x08070605, 0x07080805,   0xff,    2,  0},
+	{4,  1666, 0, 5,     8, 0x08070605, 0x07080805,   0xff,    2,  0},
+	{4,  2140, 0, 5,     8, 0x08070605, 0x07081805,   0xff,    2,  0},
+	{2,  1350, 0, 5,     7, 0x0809090b, 0x0c0c0d09,   0xff,    2,  0},
+	{2,  1666, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
+	{2,  2140, 0, 5,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
+	{1,  1350, 0, 5,     8, 0x0809090b, 0x0c0c0d0a,   0xff,    2,  0},
+	{1,  1700, 0, 5,     8, 0x080a0a0c, 0x0c0d0e0a,   0xff,    2,  0},
+	{1,  1900, 0, 4,     8, 0x080a0a0c, 0x0e0e0f0a,   0xff,    2,  0},
+	{1,  2140, 0, 4,     8, 0x090a0b0c, 0x0e0f100b,   0xff,    2,  0},
 	{}
 };
 
@@ -113,7 +117,8 @@ void fsl_ddr_board_options(memctl_options_t *popts,
 	 */
 	ddr_freq = get_ddr_freq(0) / 1000000;
 	while (pbsp->datarate_mhz_high) {
-		if (pbsp->n_ranks == pdimm->n_ranks) {
+		if (pbsp->n_ranks == pdimm->n_ranks &&
+		    (pdimm->rank_density >> 30) >= pbsp->rank_gb) {
 			if (ddr_freq <= pbsp->datarate_mhz_high) {
 				popts->cpo_override = pbsp->cpo;
 				popts->write_data_delay =
@@ -146,6 +151,13 @@ void fsl_ddr_board_options(memctl_options_t *popts,
 		panic("DIMM is not supported by this board");
 	}
 found:
+	debug("Found timing match: n_ranks %d, data rate %d, rank_gb %d\n"
+		"\tclk_adjust %d, wrlvl_start %d, wrlvl_ctrl_2 0x%x, "
+		"wrlvl_ctrl_3 0x%x\n",
+		pbsp->n_ranks, pbsp->datarate_mhz_high, pbsp->rank_gb,
+		pbsp->clk_adjust, pbsp->wrlvl_start, pbsp->wrlvl_ctl_2,
+		pbsp->wrlvl_ctl_3);
+
 	/*
 	 * Factors to consider for half-strength driver enable:
 	 *	- number of DIMMs installed
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 12/23] powerpc/mpc8xxx: Fix DDR 3-way interleaving
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (9 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 11/23] powerpc/t4240qds: Update DDR timing table York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 13/23] powerpc/mpc85xx: Fix portal setup York Sun
                   ` (10 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

Should check if interleaving is enabled before using interleaving mode.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 arch/powerpc/cpu/mpc8xxx/ddr/main.c |   19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/cpu/mpc8xxx/ddr/main.c b/arch/powerpc/cpu/mpc8xxx/ddr/main.c
index 5311a26..1a8d593 100644
--- a/arch/powerpc/cpu/mpc8xxx/ddr/main.c
+++ b/arch/powerpc/cpu/mpc8xxx/ddr/main.c
@@ -541,14 +541,17 @@ phys_size_t fsl_ddr_sdram(void)
 		total_memory = fsl_ddr_compute(&info, STEP_GET_SPD, 0);
 
 	/* setup 3-way interleaving before enabling DDRC */
-	switch (info.memctl_opts[0].memctl_interleaving_mode) {
-	case FSL_DDR_3WAY_1KB_INTERLEAVING:
-	case FSL_DDR_3WAY_4KB_INTERLEAVING:
-	case FSL_DDR_3WAY_8KB_INTERLEAVING:
-		fsl_ddr_set_intl3r(info.memctl_opts[0].memctl_interleaving_mode);
-		break;
-	default:
-		break;
+	if (info.memctl_opts[0].memctl_interleaving) {
+		switch (info.memctl_opts[0].memctl_interleaving_mode) {
+		case FSL_DDR_3WAY_1KB_INTERLEAVING:
+		case FSL_DDR_3WAY_4KB_INTERLEAVING:
+		case FSL_DDR_3WAY_8KB_INTERLEAVING:
+			fsl_ddr_set_intl3r(
+				info.memctl_opts[0].memctl_interleaving_mode);
+			break;
+		default:
+			break;
+		}
 	}
 
 	/* Program configuration registers. */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 13/23] powerpc/mpc85xx: Fix portal setup
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (10 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 12/23] powerpc/mpc8xxx: Fix DDR 3-way interleaving York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 14/23] powerpc/t4240qds: Add voltage ID support York Sun
                   ` (9 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

Missing nodes of crypto, pme, etc in device tree is not a fatal error.
Setting up the qman portal should skip the missing node and continue
to finish the rest.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/portals.c |   36 ++++++++++++++++++++++--------------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/portals.c b/arch/powerpc/cpu/mpc85xx/portals.c
index b59ef69..a4e555e 100644
--- a/arch/powerpc/cpu/mpc85xx/portals.c
+++ b/arch/powerpc/cpu/mpc85xx/portals.c
@@ -130,24 +130,32 @@ static int fdt_qportal(void *blob, int off, int id, char *name,
 
 	childoff = fdt_subnode_offset(blob, off, name);
 	if (create) {
-		if (childoff <= 0)
-			childoff = fdt_add_subnode(blob, off, name);
+		char handle[64], *p;
 
-		if (childoff > 0) {
-			char handle[64], *p;
+		strncpy(handle, name, sizeof(handle));
+		p = strchr(handle, '@');
+		if (!strncmp(name, "fman", 4)) {
+			*p = *(p + 1);
+			p++;
+		}
+		*p = '\0';
 
-			strncpy(handle, name, sizeof(handle));
-			p = strchr(handle, '@');
-			if (!strncmp(name, "fman", 4)) {
-				*p = *(p + 1);
-				p++;
-			}
-			*p = '\0';
+		dev_off = fdt_path_offset(blob, handle);
+		/* skip this node if alias is not found */
+		if (dev_off == -FDT_ERR_BADPATH)
+			return 0;
+		if (dev_off < 0)
+			return dev_off;
 
-			dev_off = fdt_path_offset(blob, handle);
-			if (dev_off < 0)
-				return dev_off;
+		if (childoff <= 0)
+			childoff = fdt_add_subnode(blob, off, name);
 
+		/* need to update the dev_off after adding a subnode */
+		dev_off = fdt_path_offset(blob, handle);
+		if (dev_off < 0)
+			return dev_off;
+
+		if (childoff > 0) {
 			dev_handle = fdt_get_phandle(blob, dev_off);
 			if (dev_handle <= 0) {
 				dev_handle = fdt_alloc_phandle(blob);
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 14/23] powerpc/t4240qds: Add voltage ID support
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (11 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 13/23] powerpc/mpc85xx: Fix portal setup York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 15/23] T4/USB: Add USB 2.0 UTMI dual phy support York Sun
                   ` (8 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

T4240 has voltage ID fuse. Read the fuse and configure the voltage
correctly. Core voltage has higher tolerance on over side than below.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 board/freescale/t4qds/t4qds.c |  229 +++++++++++++++++++++++++++++++++++++++++
 include/configs/t4qds.h       |   12 ++-
 2 files changed, 239 insertions(+), 2 deletions(-)

diff --git a/board/freescale/t4qds/t4qds.c b/board/freescale/t4qds/t4qds.c
index e8c6998..a9cea0c 100644
--- a/board/freescale/t4qds/t4qds.c
+++ b/board/freescale/t4qds/t4qds.c
@@ -132,6 +132,228 @@ int select_i2c_ch_pca9547(u8 ch)
 	return 0;
 }
 
+/*
+ * read_voltage from sensor on I2C bus
+ * We use average of 4 readings, waiting for 532us befor another reading
+ */
+#define NUM_READINGS	4	/* prefer to be power of 2 for efficiency */
+#define WAIT_FOR_ADC	532	/* wait for 532 microseconds for ADC */
+
+static inline int read_voltage(void)
+{
+	int i, ret, voltage_read = 0;
+	u16 vol_mon;
+
+	for (i = 0; i < NUM_READINGS; i++) {
+		ret = i2c_read(I2C_VOL_MONITOR_ADDR,
+			I2C_VOL_MONITOR_BUS_V_OFFSET, 1, (void *)&vol_mon, 2);
+		if (ret) {
+			printf("VID: failed to read core voltage\n");
+			return ret;
+		}
+		if (vol_mon & I2C_VOL_MONITOR_BUS_V_OVF) {
+			printf("VID: Core voltage sensor error\n");
+			return -1;
+		}
+		debug("VID: bus voltage reads 0x%04x\n", vol_mon);
+		/* LSB = 4mv */
+		voltage_read += (vol_mon >> I2C_VOL_MONITOR_BUS_V_SHIFT) * 4;
+		udelay(WAIT_FOR_ADC);
+	}
+	/* calculate the average */
+	voltage_read /= NUM_READINGS;
+
+	return voltage_read;
+}
+
+/*
+ * We need to calculate how long before the voltage starts to drop or increase
+ * It returns with the loop count. Each loop takes several readings (532us)
+ */
+static inline int wait_for_voltage_change(int vdd_last)
+{
+	int timeout, vdd_current;
+
+	vdd_current = read_voltage();
+	/* wait until voltage starts to drop */
+	for (timeout = 0; abs(vdd_last - vdd_current) <= 4 &&
+		timeout < 100; timeout++) {
+		vdd_current = read_voltage();
+	}
+	if (timeout >= 100) {
+		printf("VID: Voltage adjustment timeout\n");
+		return -1;
+	}
+	return timeout;
+}
+
+/*
+ * argument 'wait' is the time we know the voltage difference can be measured
+ * this function keeps reading the voltage until it is stable
+ */
+static inline int wait_for_voltage_stable(int wait)
+{
+	int timeout, vdd_current, vdd_last;
+
+	vdd_last = read_voltage();
+	udelay(wait * NUM_READINGS * WAIT_FOR_ADC);
+	/* wait until voltage is stable */
+	vdd_current = read_voltage();
+	for (timeout = 0; abs(vdd_last - vdd_current) >= 4 &&
+		timeout < 100; timeout++) {
+		vdd_last = vdd_current;
+		udelay(wait * NUM_READINGS * WAIT_FOR_ADC);
+		vdd_current = read_voltage();
+	}
+	if (timeout >= 100) {
+		printf("VID: Voltage adjustment timeout\n");
+		return -1;
+	}
+
+	return vdd_current;
+}
+
+static inline int set_voltage(u8 vid)
+{
+	int wait, vdd_last;
+
+	vdd_last = read_voltage();
+	QIXIS_WRITE(brdcfg[6], vid);
+	wait = wait_for_voltage_change(vdd_last);
+	if (wait < 0)
+		return -1;
+	debug("VID: Waited %d us\n", wait * NUM_READINGS * WAIT_FOR_ADC);
+	wait = wait ? wait : 1;
+
+	vdd_last = wait_for_voltage_stable(wait);
+	if (vdd_last < 0)
+		return -1;
+	debug("VID: Current voltage is %d mV\n", vdd_last);
+
+	return vdd_last;
+}
+
+
+static int adjust_vdd(void)
+{
+	int re_enable = disable_interrupts();
+	ccsr_gur_t __iomem *gur =
+		(void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+	u32 fusesr;
+	u8 vid, vid_current;
+	int vdd_target, vdd_current, vdd_last;
+	int ret;
+	static const uint16_t vdd[32] = {
+		0,	/* unused */
+		9875,	/* 0.9875V */
+		9750,
+		9625,
+		9500,
+		9375,
+		9250,
+		9125,
+		9000,
+		8875,
+		8750,
+		8625,
+		8500,
+		8375,
+		8250,
+		8125,
+		10000,	/* 1.0000V */
+		10125,
+		10250,
+		10375,
+		10500,
+		10625,
+		10750,
+		10875,
+		11000,
+		0,	/* reserved */
+	};
+	struct vdd_drive {
+		u8 vid;
+		unsigned voltage;
+	};
+
+	ret = select_i2c_ch_pca9547(I2C_MUX_CH_VOL_MONITOR);
+	if (ret) {
+		debug("VID: I2c failed to switch channel\n");
+		ret = -1;
+		goto exit;
+	}
+
+	/* get the voltage ID from fuse status register */
+	fusesr = in_be32(&gur->dcfg_fusesr);
+	vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_VID_SHIFT) &
+		FSL_CORENET_DCFG_FUSESR_VID_MASK;
+	if (vid == FSL_CORENET_DCFG_FUSESR_VID_MASK) {
+		vid = (fusesr >> FSL_CORENET_DCFG_FUSESR_ALTVID_SHIFT) &
+			FSL_CORENET_DCFG_FUSESR_ALTVID_MASK;
+	}
+	vdd_target = vdd[vid];
+	if (vdd_target == 0) {
+		debug("VID: VID not used\n");
+		ret = 0;
+		goto exit;
+	} else {
+		/* round up and divice by 10 to get a value in mV */
+		vdd_target = DIV_ROUND_UP(vdd_target, 10);
+		debug("VID: vid = %d mV\n", vdd_target);
+	}
+
+	/*
+	 * Check current board VID setting
+	 * Voltage regulator support output to 6.250mv step
+	 * The highes voltage allowed for this board is (vid=0x40) 1.21250V
+	 * the lowest is (vid=0x7f) 0.81875V
+	 */
+	vid_current =  QIXIS_READ(brdcfg[6]);
+	vdd_current = 121250 - (vid_current - 0x40) * 625;
+	debug("VID: Current vid setting is (0x%x) %d mV\n",
+	      vid_current, vdd_current/100);
+
+	/*
+	 * Read voltage monitor to check real voltage.
+	 * Voltage monitor LSB is 4mv.
+	 */
+	vdd_last = read_voltage();
+	if (vdd_last < 0) {
+		printf("VID: Could not read voltage sensor abort VID adjustment\n");
+		ret = -1;
+		goto exit;
+	}
+	debug("VID: Core voltage is at %d mV\n", vdd_last);
+	/*
+	 * Adjust voltage to@or 8mV above target.
+	 * Each step of adjustment is 6.25mV.
+	 * Stepping down too fast may cause over current.
+	 */
+	while (vdd_last > 0 && vid_current < 0x80 &&
+		vdd_last > (vdd_target + 8)) {
+		vid_current++;
+		vdd_last = set_voltage(vid_current);
+	}
+	/*
+	 * Check if we need to step up
+	 * This happens when board voltage switch was set too low
+	 */
+	while (vdd_last > 0 && vid_current >= 0x40 &&
+		vdd_last < vdd_target + 2) {
+		vid_current--;
+		vdd_last = set_voltage(vid_current);
+	}
+	if (vdd_last > 0)
+		printf("VID: Core voltage %d mV\n", vdd_last);
+	else
+		ret = -1;
+
+exit:
+	if (re_enable)
+		enable_interrupts();
+	return ret;
+}
+
 /* Configure Crossbar switches for Front-Side SerDes Ports */
 int config_frontside_crossbar_vsc3316(void)
 {
@@ -285,6 +507,13 @@ int board_early_init_r(void)
 	/* Disable remote I2C connectoin */
 	QIXIS_WRITE(brdcfg[5], BRDCFG5_RESET);
 
+	/*
+	 * Adjust core voltage according to voltage ID
+	 * This function changes I2C mux to channel 2.
+	 */
+	if (adjust_vdd())
+		printf("Warning: Adjusting core voltage failed.\n");
+
 	/* Configure board SERDES ports crossbar */
 	config_frontside_crossbar_vsc3316();
 	config_backside_crossbar_mux();
diff --git a/include/configs/t4qds.h b/include/configs/t4qds.h
index c5110c2..dbaa7ea 100644
--- a/include/configs/t4qds.h
+++ b/include/configs/t4qds.h
@@ -444,11 +444,19 @@ unsigned long get_board_ddr_clk(void);
 #define I2C_MUX_PCA_ADDR_PRI		0x77 /* I2C bus multiplexer,primary */
 #define I2C_MUX_PCA_ADDR_SEC		0x76 /* I2C bus multiplexer,secondary */
 
-/* VSC Crossbar switches */
-#define CONFIG_VSC_CROSSBAR
 #define I2C_MUX_CH_DEFAULT	0x8
+#define I2C_MUX_CH_VOL_MONITOR	0xa
 #define I2C_MUX_CH_VSC3316_FS	0xc
 #define I2C_MUX_CH_VSC3316_BS	0xd
+
+/* Voltage monitor on channel 2*/
+#define I2C_VOL_MONITOR_ADDR		0x40
+#define I2C_VOL_MONITOR_BUS_V_OFFSET	0x2
+#define I2C_VOL_MONITOR_BUS_V_OVF	0x1
+#define I2C_VOL_MONITOR_BUS_V_SHIFT	3
+
+/* VSC Crossbar switches */
+#define CONFIG_VSC_CROSSBAR
 #define VSC3316_FSM_TX_ADDR	0x70
 #define VSC3316_FSM_RX_ADDR	0x71
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 15/23] T4/USB: Add USB 2.0 UTMI dual phy support
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (12 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 14/23] powerpc/t4240qds: Add voltage ID support York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-05-09  0:17   ` Andy Fleming
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 16/23] T4/serdes: fix the actual serdes clock frequency York Sun
                   ` (7 subsequent siblings)
  21 siblings, 1 reply; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Roy Zang <tie-fei.zang@freescale.com>

T4240 internal UTMI phy is different comparing to previous UTMI PHY
in P3041.
This patch adds USB 2.0 UTMI Dual PHY new memory map and enable it for
T4240.
The phy timing is very sensitive and moving the phy enable code to
cpu_init.c will not work.

Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
---
 arch/powerpc/include/asm/config_mpc85xx.h |    3 +--
 arch/powerpc/include/asm/immap_85xx.h     |   41 +++++++++++++++++++++++++++++
 drivers/usb/host/ehci-fsl.c               |   21 +++++++++++++++
 3 files changed, 63 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
index 3740785..ca235dc 100644
--- a/arch/powerpc/include/asm/config_mpc85xx.h
+++ b/arch/powerpc/include/asm/config_mpc85xx.h
@@ -536,8 +536,7 @@
 #define CONFIG_SYS_FSL_SRIO_MAX_PORTS	2
 #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM	9
 #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM	5
-#define CONFIG_SYS_FSL_USB1_PHY_ENABLE
-#define CONFIG_SYS_FSL_USB2_PHY_ENABLE
+#define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
 #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
 #define CONFIG_SYS_FSL_ERRATUM_A004468
 #define CONFIG_SYS_FSL_ERRATUM_A_004934
diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h
index 8bc047b..29ee38f 100644
--- a/arch/powerpc/include/asm/immap_85xx.h
+++ b/arch/powerpc/include/asm/immap_85xx.h
@@ -2828,12 +2828,53 @@ typedef struct ccsr_pme {
 	u8	res4[0x400];
 } ccsr_pme_t;
 
+#ifdef CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
+struct ccsr_usb_port_ctrl {
+	u32	ctrl;
+	u32	drvvbuscfg;
+	u32	pwrfltcfg;
+	u32	sts;
+	u8	res_14[0xc];
+	u32	bistcfg;
+	u32	biststs;
+	u32	abistcfg;
+	u32	abiststs;
+	u8	res_30[0x10];
+	u32	xcvrprg;
+	u32	anaprg;
+	u32	anadrv;
+	u32	anasts;
+};
+
+struct ccsr_usb_phy {
+	u32	id;
+	struct  ccsr_usb_port_ctrl port1;
+	u8	res_50[0xc];
+	u32	tvr;
+	u32	pllprg[4];
+	u8	res_70[0x4];
+	u32	anaccfg;
+	u32	dbg;
+	u8	res_7c[0x4];
+	struct  ccsr_usb_port_ctrl port2;
+	u8	res_dc[0x334];
+} ccsr_usb_phy_t;
+
+#define CONFIG_SYS_FSL_USB_CTRL_PHY_EN (1 << 0)
+#define CONFIG_SYS_FSL_USB_DRVVBUS_CR_EN (1 << 1)
+#define CONFIG_SYS_FSL_USB_PWRFLT_CR_EN (1 << 1)
+#define CONFIG_SYS_FSL_USB_PLLPRG2_PHY2_CLK_EN (1 << 0)
+#define CONFIG_SYS_FSL_USB_PLLPRG2_PHY1_CLK_EN (1 << 1)
+#define CONFIG_SYS_FSL_USB_PLLPRG2_MFI (5 << 16)
+#define CONFIG_SYS_FSL_USB_PLLPRG2_PLL_EN (1 << 21)
+#else
 typedef struct ccsr_usb_phy {
 	u8	res0[0x18];
 	u32	usb_enable_override;
 	u8	res[0xe4];
 } ccsr_usb_phy_t;
 #define CONFIG_SYS_FSL_USB_ENABLE_OVERRIDE 1
+#endif
 
 #ifdef CONFIG_SYS_FSL_RAID_ENGINE
 struct ccsr_raide {
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
index f54b408..77c41f3 100644
--- a/drivers/usb/host/ehci-fsl.c
+++ b/drivers/usb/host/ehci-fsl.c
@@ -89,6 +89,27 @@ int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor)
 
 	if (!strcmp(phy_type, "utmi")) {
 #if defined(CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY)
+#if defined(CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE)
+		ccsr_usb_phy_t *usb_phy =
+			(void *)CONFIG_SYS_MPC85xx_USB1_PHY_ADDR;
+		setbits_be32(&usb_phy->pllprg[1],
+			     CONFIG_SYS_FSL_USB_PLLPRG2_PHY2_CLK_EN	|
+			     CONFIG_SYS_FSL_USB_PLLPRG2_PHY1_CLK_EN	|
+			     CONFIG_SYS_FSL_USB_PLLPRG2_MFI		|
+			     CONFIG_SYS_FSL_USB_PLLPRG2_PLL_EN);
+		setbits_be32(&usb_phy->port1.ctrl,
+			     CONFIG_SYS_FSL_USB_CTRL_PHY_EN);
+		setbits_be32(&usb_phy->port1.drvvbuscfg,
+			     CONFIG_SYS_FSL_USB_DRVVBUS_CR_EN);
+		setbits_be32(&usb_phy->port1.pwrfltcfg,
+			     CONFIG_SYS_FSL_USB_PWRFLT_CR_EN);
+		setbits_be32(&usb_phy->port2.ctrl,
+			     CONFIG_SYS_FSL_USB_CTRL_PHY_EN);
+		setbits_be32(&usb_phy->port2.drvvbuscfg,
+			     CONFIG_SYS_FSL_USB_DRVVBUS_CR_EN);
+		setbits_be32(&usb_phy->port2.pwrfltcfg,
+			     CONFIG_SYS_FSL_USB_PWRFLT_CR_EN);
+#endif
 		setbits_be32(&ehci->control, PHY_CLK_SEL_UTMI);
 		setbits_be32(&ehci->control, UTMI_PHY_EN);
 		udelay(1000); /* delay required for PHY Clk to appear */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 16/23] T4/serdes: fix the actual serdes clock frequency
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (13 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 15/23] T4/USB: Add USB 2.0 UTMI dual phy support York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 17/23] powerpc/85xx: add missing QMAN frequency calculation York Sun
                   ` (6 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Roy Zang <tie-fei.zang@freescale.com>

The correct bit maps in BRDCFG2 are
0	1	2	3	4	5	6	7
S1RATE[1:0]	S2RATE[1:0] 	S3RATE[1:0] 	S4RATE[1:0]

Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
---
 board/freescale/t4qds/t4qds.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/board/freescale/t4qds/t4qds.c b/board/freescale/t4qds/t4qds.c
index a9cea0c..a84218c 100644
--- a/board/freescale/t4qds/t4qds.c
+++ b/board/freescale/t4qds/t4qds.c
@@ -586,7 +586,7 @@ int misc_init_r(void)
 
 	sw = QIXIS_READ(brdcfg[2]);
 	for (i = 0; i < MAX_SERDES; i++) {
-		unsigned int clock = (sw >> (2 * i)) & 3;
+		unsigned int clock = (sw >> (6 - 2 * i)) & 3;
 		switch (clock) {
 		case 0:
 			actual[i] = SRDS_PLLCR0_RFCK_SEL_100;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 17/23] powerpc/85xx: add missing QMAN frequency calculation
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (14 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 16/23] T4/serdes: fix the actual serdes clock frequency York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-05-07 23:04   ` Andy Fleming
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 18/23] powerpc/corenet2: Print SerDes protocol in decimal York Sun
                   ` (5 subsequent siblings)
  21 siblings, 1 reply; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

From: Shaohui Xie <Shaohui.Xie@freescale.com>

When CONFIG_SYS_FSL_QORIQ_CHASSIS2 is not defined, QMAN frequency will not
be initialized, and QMAN will have a wrong frequency display.

Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/speed.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/powerpc/cpu/mpc85xx/speed.c b/arch/powerpc/cpu/mpc85xx/speed.c
index 9fc7b54..f00b1ab 100644
--- a/arch/powerpc/cpu/mpc85xx/speed.c
+++ b/arch/powerpc/cpu/mpc85xx/speed.c
@@ -293,6 +293,10 @@ void get_sys_info (sys_info_t * sysInfo)
 #endif
 #endif
 
+#ifdef CONFIG_SYS_DPAA_QBMAN
+	sysInfo->freqQMAN = sysInfo->freqSystemBus / 2;
+#endif
+
 #endif /* CONFIG_SYS_FSL_QORIQ_CHASSIS2 */
 
 #else /* CONFIG_FSL_CORENET */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 18/23] powerpc/corenet2: Print SerDes protocol in decimal
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (15 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 17/23] powerpc/85xx: add missing QMAN frequency calculation York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 19/23] powerpc/mpc85xx: Fix PIR parsing for chassis2 York Sun
                   ` (4 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

Use decimal and hexadecimal for protocol numbers. It helps to match with
SoC user manual.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c b/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c
index 01dcdf6..93eca76 100644
--- a/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c
+++ b/arch/powerpc/cpu/mpc85xx/fsl_corenet2_serdes.c
@@ -164,7 +164,7 @@ u64 serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift)
 	}
 
 	cfg >>= sd_prctl_shift;
-	printf("Using SERDES%d Protocol: 0x%x\n", sd + 1, cfg);
+	printf("Using SERDES%d Protocol: %d (0x%x)\n", sd + 1, cfg, cfg);
 	if (!is_serdes_prtcl_valid(sd, cfg))
 		printf("SERDES%d[PRTCL] = 0x%x is not valid\n", sd + 1, cfg);
 
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 19/23] powerpc/mpc85xx: Fix PIR parsing for chassis2
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (16 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 18/23] powerpc/corenet2: Print SerDes protocol in decimal York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 20/23] powerpc/t4240: Fix SerDes protocol arrays with const prefix York Sun
                   ` (3 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

The PIR parsing algorithm we used is not only for E6500. It applies to all
SoCs with chassis 2.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/release.S |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/release.S b/arch/powerpc/cpu/mpc85xx/release.S
index 0dea871..467ea10 100644
--- a/arch/powerpc/cpu/mpc85xx/release.S
+++ b/arch/powerpc/cpu/mpc85xx/release.S
@@ -159,9 +159,9 @@ __secondary_start_page:
 	 * we cannot access it yet before setting up a new TLB
 	 */
 	mfspr	r0,SPRN_PIR
-#if	defined(CONFIG_E6500)
+#ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
 /*
- * PIR definition for E6500
+ * PIR definition for Chassis 2
  * 0-17 Reserved (logic 0s)
  * 8-19 CHIP_ID,    2'b00      - SoC 1
  *                  all others - reserved
@@ -187,7 +187,7 @@ __secondary_start_page:
 	slwi	r8,r4,6	/* spin table is padded to 64 byte */
 	add	r10,r3,r8
 
-#ifdef CONFIG_E6500
+#ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
 	mfspr	r0,SPRN_PIR
 	/*
 	 * core 0 thread 0: pir reset value 0x00, new pir 0
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 20/23] powerpc/t4240: Fix SerDes protocol arrays with const prefix
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (17 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 19/23] powerpc/mpc85xx: Fix PIR parsing for chassis2 York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 21/23] powerpc/mpc85xx: Add T4160 SoC York Sun
                   ` (2 subsequent siblings)
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

Protocols are constants. Fix arrays with const prefix.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/t4240_serdes.c |   14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/t4240_serdes.c b/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
index 530f159..1316ed9 100644
--- a/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
+++ b/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
@@ -31,7 +31,7 @@ struct serdes_config {
 	u8 lanes[SRDS_MAX_LANES];
 };
 
-static struct serdes_config serdes1_cfg_tbl[] = {
+static const struct serdes_config serdes1_cfg_tbl[] = {
 	/* SerDes 1 */
 	{1, {XAUI_FM1_MAC9, XAUI_FM1_MAC9,
 		XAUI_FM1_MAC9, XAUI_FM1_MAC9,
@@ -66,7 +66,7 @@ static struct serdes_config serdes1_cfg_tbl[] = {
 		NONE, NONE, QSGMII_FM1_A, NONE}},
 	{}
 };
-static struct serdes_config serdes2_cfg_tbl[] = {
+static const struct serdes_config serdes2_cfg_tbl[] = {
 	/* SerDes 2 */
 	{1, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
 		XAUI_FM2_MAC9, XAUI_FM2_MAC9,
@@ -150,7 +150,7 @@ static struct serdes_config serdes2_cfg_tbl[] = {
 		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4}},
 	{}
 };
-static struct serdes_config serdes3_cfg_tbl[] = {
+static const struct serdes_config serdes3_cfg_tbl[] = {
 	/* SerDes 3 */
 	{2, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1}},
 	{4, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2}},
@@ -174,7 +174,7 @@ static struct serdes_config serdes3_cfg_tbl[] = {
 		SRIO1, SRIO1, SRIO1, SRIO1}},
 	{}
 };
-static struct serdes_config serdes4_cfg_tbl[] = {
+static const struct serdes_config serdes4_cfg_tbl[] = {
 	/* SerDes 4 */
 	{2, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3, PCIE3}},
 	{4, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, PCIE4, PCIE4}},
@@ -187,7 +187,7 @@ static struct serdes_config serdes4_cfg_tbl[] = {
 	{18, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, AURORA, AURORA}},
 	{}
 };
-static struct serdes_config *serdes_cfg_tbl[] = {
+static const struct serdes_config *serdes_cfg_tbl[] = {
 	serdes1_cfg_tbl,
 	serdes2_cfg_tbl,
 	serdes3_cfg_tbl,
@@ -196,7 +196,7 @@ static struct serdes_config *serdes_cfg_tbl[] = {
 
 enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
 {
-	struct serdes_config *ptr;
+	const struct serdes_config *ptr;
 
 	if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
 		return 0;
@@ -213,7 +213,7 @@ enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
 int is_serdes_prtcl_valid(int serdes, u32 prtcl)
 {
 	int i;
-	struct serdes_config *ptr;
+	const struct serdes_config *ptr;
 
 	if (serdes >= ARRAY_SIZE(serdes_cfg_tbl))
 		return 0;
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 21/23] powerpc/mpc85xx: Add T4160 SoC
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (18 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 20/23] powerpc/t4240: Fix SerDes protocol arrays with const prefix York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 22/23] powerpc/t4240qds: Move SoC define into boards.cfg York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 23/23] powerpc: Add T4160QDS York Sun
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

T4160 SoC is low power version of T4240. The T4160 combines eight dual
threaded Power Architecture e6500 cores and two memory complexes (CoreNet
platform cache and DDR3 memory controller) with the same high-performance
datapath acceleration, networking, and peripheral bus interfaces.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 arch/powerpc/cpu/mpc85xx/Makefile         |    3 +
 arch/powerpc/cpu/mpc85xx/t4240_serdes.c   |  132 +++++++++++++++++++++++++++++
 arch/powerpc/cpu/mpc8xxx/cpu.c            |    1 +
 arch/powerpc/include/asm/config_mpc85xx.h |   33 ++++++++
 arch/powerpc/include/asm/immap_85xx.h     |    4 +-
 arch/powerpc/include/asm/processor.h      |    1 +
 drivers/net/fm/Makefile                   |    1 +
 7 files changed, 173 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/cpu/mpc85xx/Makefile b/arch/powerpc/cpu/mpc85xx/Makefile
index 6776c85..6e5aec2 100644
--- a/arch/powerpc/cpu/mpc85xx/Makefile
+++ b/arch/powerpc/cpu/mpc85xx/Makefile
@@ -83,6 +83,7 @@ COBJS-$(CONFIG_PPC_P4080)	+= ddr-gen3.o
 COBJS-$(CONFIG_PPC_P5020)	+= ddr-gen3.o
 COBJS-$(CONFIG_PPC_P5040)	+= ddr-gen3.o
 COBJS-$(CONFIG_PPC_T4240)	+= ddr-gen3.o
+COBJS-$(CONFIG_PPC_T4160)	+= ddr-gen3.o
 COBJS-$(CONFIG_PPC_B4420)	+= ddr-gen3.o
 COBJS-$(CONFIG_PPC_B4860)	+= ddr-gen3.o
 COBJS-$(CONFIG_BSC9131)		+= ddr-gen3.o
@@ -102,6 +103,7 @@ COBJS-$(CONFIG_PPC_P4080) += p4080_ids.o
 COBJS-$(CONFIG_PPC_P5020) += p5020_ids.o
 COBJS-$(CONFIG_PPC_P5040) += p5040_ids.o
 COBJS-$(CONFIG_PPC_T4240) += t4240_ids.o
+COBJS-$(CONFIG_PPC_T4160) += t4240_ids.o
 COBJS-$(CONFIG_PPC_B4420) += b4860_ids.o
 COBJS-$(CONFIG_PPC_B4860) += b4860_ids.o
 
@@ -137,6 +139,7 @@ COBJS-$(CONFIG_PPC_P4080) += p4080_serdes.o
 COBJS-$(CONFIG_PPC_P5020) += p5020_serdes.o
 COBJS-$(CONFIG_PPC_P5040) += p5040_serdes.o
 COBJS-$(CONFIG_PPC_T4240) += t4240_serdes.o
+COBJS-$(CONFIG_PPC_T4160) += t4240_serdes.o
 COBJS-$(CONFIG_PPC_B4420) += b4860_serdes.o
 COBJS-$(CONFIG_PPC_B4860) += b4860_serdes.o
 COBJS-$(CONFIG_BSC9132) += bsc9132_serdes.o
diff --git a/arch/powerpc/cpu/mpc85xx/t4240_serdes.c b/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
index 1316ed9..c001780 100644
--- a/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
+++ b/arch/powerpc/cpu/mpc85xx/t4240_serdes.c
@@ -31,6 +31,7 @@ struct serdes_config {
 	u8 lanes[SRDS_MAX_LANES];
 };
 
+#ifdef CONFIG_PPC_T4240
 static const struct serdes_config serdes1_cfg_tbl[] = {
 	/* SerDes 1 */
 	{1, {XAUI_FM1_MAC9, XAUI_FM1_MAC9,
@@ -187,6 +188,137 @@ static const struct serdes_config serdes4_cfg_tbl[] = {
 	{18, {PCIE3, PCIE3, PCIE3, PCIE3, AURORA, AURORA, AURORA, AURORA}},
 	{}
 };
+#elif defined(CONFIG_PPC_T4160)
+static const struct serdes_config serdes1_cfg_tbl[] = {
+	/* SerDes 1 */
+	{1, {XAUI_FM1_MAC9, XAUI_FM1_MAC9,
+		XAUI_FM1_MAC9, XAUI_FM1_MAC9,
+		XAUI_FM1_MAC10, XAUI_FM1_MAC10,
+		XAUI_FM1_MAC10, XAUI_FM1_MAC10} },
+	{2, {HIGIG_FM1_MAC9, HIGIG_FM1_MAC9,
+		HIGIG_FM1_MAC9, HIGIG_FM1_MAC9,
+		HIGIG_FM1_MAC10, HIGIG_FM1_MAC10,
+		HIGIG_FM1_MAC10, HIGIG_FM1_MAC10} },
+	{4, {HIGIG_FM1_MAC9, HIGIG_FM1_MAC9,
+		HIGIG_FM1_MAC9, HIGIG_FM1_MAC9,
+		HIGIG_FM1_MAC10, HIGIG_FM1_MAC10,
+		HIGIG_FM1_MAC10, HIGIG_FM1_MAC10} },
+	{28, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
+		SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
+		SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
+		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} },
+	{36, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,
+		SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC9,
+		SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
+		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4} },
+	{38, {NONE, NONE, QSGMII_FM1_B, NONE,
+		NONE, NONE, QSGMII_FM1_A, NONE} },
+	{}
+};
+static const struct serdes_config serdes2_cfg_tbl[] = {
+	/* SerDes 2 */
+	{7, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
+		XAUI_FM2_MAC9, XAUI_FM2_MAC9,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
+	{13, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
+		XAUI_FM2_MAC9, XAUI_FM2_MAC9,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
+	{16, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
+	{22, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
+	{25, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
+	{26, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		NONE, NONE} },
+	{28, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
+		SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
+	{36, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
+		SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
+	{38, {NONE, NONE, QSGMII_FM2_B, NONE,
+		NONE, QSGMII_FM1_A, NONE, NONE} },
+	{40, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
+		SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
+		NONE, QSGMII_FM1_A, NONE, NONE} },
+	{46, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
+		SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
+		NONE, QSGMII_FM1_A, NONE, NONE} },
+	{48, {SGMII_FM2_DTSEC5, SGMII_FM2_DTSEC6,
+		SGMII_FM2_DTSEC10, SGMII_FM2_DTSEC9,
+		NONE, QSGMII_FM1_A, NONE, NONE} },
+	{50, {XAUI_FM2_MAC9, XAUI_FM2_MAC9,
+		XAUI_FM2_MAC9, XAUI_FM2_MAC9,
+		NONE, NONE, NONE, NONE} },
+	{52, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		NONE, NONE, NONE, NONE} },
+	{54, {HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		HIGIG_FM2_MAC9, HIGIG_FM2_MAC9,
+		NONE, NONE, NONE, NONE} },
+	{56, {NONE, XFI_FM1_MAC10,
+		XFI_FM2_MAC10, NONE,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		SGMII_FM2_DTSEC3, SGMII_FM2_DTSEC4} },
+	{57, {NONE, XFI_FM1_MAC10,
+		XFI_FM2_MAC10, NONE,
+		SGMII_FM2_DTSEC1, SGMII_FM2_DTSEC2,
+		NONE, NONE} },
+	{}
+};
+static const struct serdes_config serdes3_cfg_tbl[] = {
+	/* SerDes 3 */
+	{2, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} },
+	{4, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2} },
+	{6, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1} },
+	{8, {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, NONE, NONE, NONE} },
+	{9, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
+		INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN} },
+	{10, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
+		INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN} },
+	{12, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
+		PCIE2, PCIE2, PCIE2, PCIE2} },
+	{14, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
+		PCIE2, PCIE2, PCIE2, PCIE2} },
+	{16, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
+		SRIO1, SRIO1, SRIO1, SRIO1} },
+	{17, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
+		SRIO1, SRIO1, SRIO1, SRIO1} },
+	{19, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
+		SRIO1, SRIO1, SRIO1, SRIO1} },
+	{20, {INTERLAKEN, INTERLAKEN, INTERLAKEN, INTERLAKEN,
+			NONE, NONE, NONE, NONE} },
+	{}
+};
+static const struct serdes_config serdes4_cfg_tbl[] = {
+	/* SerDes 4 */
+	{4, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, PCIE4, PCIE4, PCIE4} },
+	{6, {SRIO2, SRIO2, SRIO2, SRIO2, SRIO2, SRIO2, SRIO2, SRIO2} },
+	{8, {SRIO2, SRIO2, SRIO2, SRIO2, SRIO2, SRIO2, SRIO2, SRIO2} },
+	{10, {PCIE3, PCIE3, PCIE3, PCIE3, SATA1, SATA1, SATA2, SATA2} },
+	{12, {AURORA, AURORA, AURORA, AURORA, SATA1, SATA1, SATA2, SATA2} },
+	{14, {AURORA, AURORA, AURORA, AURORA, SRIO2, SRIO2, SRIO2, SRIO2} },
+	{16, {AURORA, AURORA, AURORA, AURORA, SRIO2, SRIO2, SRIO2, SRIO2} },
+	{18, {AURORA, AURORA, AURORA, AURORA, AURORA, AURORA, AURORA, AURORA} },
+	{}
+}
+;
+#else
+#error "Need to define SerDes protocol"
+#endif
 static const struct serdes_config *serdes_cfg_tbl[] = {
 	serdes1_cfg_tbl,
 	serdes2_cfg_tbl,
diff --git a/arch/powerpc/cpu/mpc8xxx/cpu.c b/arch/powerpc/cpu/mpc8xxx/cpu.c
index 39525fb..0087cd0 100644
--- a/arch/powerpc/cpu/mpc8xxx/cpu.c
+++ b/arch/powerpc/cpu/mpc8xxx/cpu.c
@@ -77,6 +77,7 @@ static struct cpu_type cpu_type_list[] = {
 	CPU_TYPE_ENTRY(P5040, P5040, 4),
 	CPU_TYPE_ENTRY(T4240, T4240, 0),
 	CPU_TYPE_ENTRY(T4120, T4120, 0),
+	CPU_TYPE_ENTRY(T4160, T4160, 0),
 	CPU_TYPE_ENTRY(B4860, B4860, 0),
 	CPU_TYPE_ENTRY(G4860, G4860, 0),
 	CPU_TYPE_ENTRY(G4060, G4060, 0),
diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h
index ca235dc..5def364 100644
--- a/arch/powerpc/include/asm/config_mpc85xx.h
+++ b/arch/powerpc/include/asm/config_mpc85xx.h
@@ -544,6 +544,39 @@
 #define CONFIG_SYS_CCSRBAR_DEFAULT	0xfe000000
 #define CONFIG_SYS_FSL_PCI_VER_3_X
 
+#elif defined(CONFIG_PPC_T4160)
+#define CONFIG_SYS_PPC64		/* 64-bit core */
+#define CONFIG_FSL_CORENET		/* Freescale CoreNet platform */
+#define CONFIG_SYS_FSL_QORIQ_CHASSIS2	/* Freescale Chassis generation 2 */
+#define CONFIG_SYS_FSL_QMAN_V3		/* QMAN version 3 */
+#define CONFIG_MAX_CPUS			8
+#define CONFIG_SYS_FSL_NUM_CC_PLLS	5
+#define CONFIG_SYS_FSL_NUM_LAWS		32
+#define CONFIG_SYS_FSL_SRDS_3
+#define CONFIG_SYS_FSL_SRDS_4
+#define CONFIG_SYS_FSL_SEC_COMPAT	4
+#define CONFIG_SYS_NUM_FMAN		2
+#define CONFIG_SYS_NUM_FM1_DTSEC	7
+#define CONFIG_SYS_NUM_FM1_10GEC	1
+#define CONFIG_SYS_NUM_FM2_DTSEC	7
+#define CONFIG_SYS_NUM_FM2_10GEC	1
+#define CONFIG_NUM_DDR_CONTROLLERS	2
+#define CONFIG_SYS_FSL_DDR_VER		FSL_DDR_VER_4_7
+#define CONFIG_SYS_FMAN_V3
+#define CONFIG_SYS_FM_MURAM_SIZE	0x60000
+#define CONFIG_SYS_FSL_TBCLK_DIV	16
+#define CONFIG_SYS_FSL_PCIE_COMPAT	"fsl,qoriq-pcie-v3.0"
+#define CONFIG_SYS_FSL_SRIO_MAX_PORTS	2
+#define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM	9
+#define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM	5
+#define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
+#define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
+#define CONFIG_SYS_FSL_ERRATUM_A004468
+#define CONFIG_SYS_FSL_ERRATUM_A_004934
+#define CONFIG_SYS_FSL_ERRATUM_A005871
+#define CONFIG_SYS_CCSRBAR_DEFAULT	0xfe000000
+#define CONFIG_SYS_FSL_PCI_VER_3_X
+
 #elif defined(CONFIG_PPC_B4420)
 #define CONFIG_SYS_PPC64		/* 64-bit core */
 #define CONFIG_FSL_CORENET		/* Freescale CoreNet platform */
diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h
index 29ee38f..0cada07 100644
--- a/arch/powerpc/include/asm/immap_85xx.h
+++ b/arch/powerpc/include/asm/immap_85xx.h
@@ -1830,7 +1830,7 @@ typedef struct ccsr_gur {
 #ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
 #define FSL_CORENET_RCWSR0_MEM_PLL_RAT_SHIFT	16
 #define FSL_CORENET_RCWSR0_MEM_PLL_RAT_MASK	0x3f
-#if defined(CONFIG_PPC_T4240)
+#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
 #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL		0xfc000000
 #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT	26
 #define FSL_CORENET2_RCWSR4_SRDS2_PRTCL		0x00fe0000
@@ -1898,7 +1898,7 @@ typedef struct ccsr_gur {
 #define FSL_CORENET_RCWSR11_EC2_FM2_DTSEC5_MII          0x00100000
 #define FSL_CORENET_RCWSR11_EC2_FM2_DTSEC5_NONE         0x00180000
 #endif
-#if defined(CONFIG_PPC_T4240)
+#if defined(CONFIG_PPC_T4240) || defined(CONFIG_PPC_T4160)
 #define FSL_CORENET_RCWSR13_EC1			0x60000000 /* bits 417..418 */
 #define FSL_CORENET_RCWSR13_EC1_FM2_DTSEC5_RGMII	0x00000000
 #define FSL_CORENET_RCWSR13_EC1_FM2_GPIO		0x40000000
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h
index 1ecf266..5c0c438 100644
--- a/arch/powerpc/include/asm/processor.h
+++ b/arch/powerpc/include/asm/processor.h
@@ -1109,6 +1109,7 @@
 #define SVR_P5040	0x820400
 #define SVR_T4240	0x824000
 #define SVR_T4120	0x824001
+#define SVR_T4160	0x824100
 #define SVR_B4860	0X868000
 #define SVR_G4860	0x868001
 #define SVR_G4060	0x868003
diff --git a/drivers/net/fm/Makefile b/drivers/net/fm/Makefile
index f191c79..9aaa828 100644
--- a/drivers/net/fm/Makefile
+++ b/drivers/net/fm/Makefile
@@ -46,6 +46,7 @@ COBJS-$(CONFIG_PPC_P4080) += p4080.o
 COBJS-$(CONFIG_PPC_P5020) += p5020.o
 COBJS-$(CONFIG_PPC_P5040) += p5040.o
 COBJS-$(CONFIG_PPC_T4240) += t4240.o
+COBJS-$(CONFIG_PPC_T4160) += t4240.o
 COBJS-$(CONFIG_PPC_B4420) += b4860.o
 COBJS-$(CONFIG_PPC_B4860) += b4860.o
 endif
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 22/23] powerpc/t4240qds: Move SoC define into boards.cfg
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (19 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 21/23] powerpc/mpc85xx: Add T4160 SoC York Sun
@ 2013-03-25 17:33 ` York Sun
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 23/23] powerpc: Add T4160QDS York Sun
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

Separate CONFIG_PPC_T4240 from board config file. Prepare to add more SoC
variants supported on the same board.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 boards.cfg                 |    6 +++---
 include/configs/T4240QDS.h |    1 -
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/boards.cfg b/boards.cfg
index ee68fdd..9d458e6 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -884,9 +884,9 @@ BSC9132QDS_SPIFLASH_DDRCLK133 powerpc    mpc85xx     bsc9132qds          freesca
 stxgp3                       powerpc     mpc85xx     stxgp3              stx
 stxssa                       powerpc     mpc85xx     stxssa              stx            -           stxssa
 stxssa_4M                    powerpc     mpc85xx     stxssa              stx            -           stxssa:STXSSA_4M
-T4240QDS                     powerpc     mpc85xx     t4qds               freescale
-T4240QDS_SDCARD              powerpc     mpc85xx     t4qds               freescale	-           T4240QDS:RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF80000
-T4240QDS_SPIFLASH            powerpc     mpc85xx     t4qds               freescale	-           T4240QDS:RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
+T4240QDS                     powerpc     mpc85xx     t4qds               freescale      -           T4240QDS:PPC_T4240
+T4240QDS_SDCARD              powerpc     mpc85xx     t4qds               freescale	-           T4240QDS:PPC_T4240,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF80000
+T4240QDS_SPIFLASH            powerpc     mpc85xx     t4qds               freescale	-           T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
 B4860QDS                     powerpc     mpc85xx     b4860qds            freescale      -           B4860QDS:PPC_B4860
 B4860QDS_NAND		     powerpc     mpc85xx     b4860qds            freescale      -           B4860QDS:PPC_B4860,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF80000
 B4860QDS_SPIFLASH            powerpc     mpc85xx     b4860qds            freescale	-           B4860QDS:PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
diff --git a/include/configs/T4240QDS.h b/include/configs/T4240QDS.h
index 76b3ca6..6dd5c0d 100644
--- a/include/configs/T4240QDS.h
+++ b/include/configs/T4240QDS.h
@@ -25,7 +25,6 @@
  */
 #define CONFIG_T4240QDS
 #define CONFIG_PHYS_64BIT
-#define CONFIG_PPC_T4240
 
 #define CONFIG_FSL_SATA_V2
 #define CONFIG_PCIE4
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 23/23] powerpc: Add T4160QDS
  2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
                   ` (20 preceding siblings ...)
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 22/23] powerpc/t4240qds: Move SoC define into boards.cfg York Sun
@ 2013-03-25 17:33 ` York Sun
  21 siblings, 0 replies; 30+ messages in thread
From: York Sun @ 2013-03-25 17:33 UTC (permalink / raw)
  To: u-boot

T4160QDS shares the same platform as T4240QDS. T4160 is a low power
version of T4240, with eight e6500 cores, two DDR3 controllers, and
slightly different SerDes protocols.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 boards.cfg              |    3 +++
 include/configs/t4qds.h |   15 ++++++++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/boards.cfg b/boards.cfg
index 9d458e6..024a29e 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -887,6 +887,9 @@ stxssa_4M                    powerpc     mpc85xx     stxssa              stx
 T4240QDS                     powerpc     mpc85xx     t4qds               freescale      -           T4240QDS:PPC_T4240
 T4240QDS_SDCARD              powerpc     mpc85xx     t4qds               freescale	-           T4240QDS:PPC_T4240,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF80000
 T4240QDS_SPIFLASH            powerpc     mpc85xx     t4qds               freescale	-           T4240QDS:PPC_T4240,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
+T4160QDS                     powerpc     mpc85xx     t4qds               freescale      -           T4240QDS:PPC_T4160
+T4160QDS_SDCARD              powerpc     mpc85xx     t4qds               freescale	-           T4240QDS:PPC_T4160,RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF80000
+T4160QDS_SPIFLASH            powerpc     mpc85xx     t4qds               freescale	-           T4240QDS:PPC_T4160,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
 B4860QDS                     powerpc     mpc85xx     b4860qds            freescale      -           B4860QDS:PPC_B4860
 B4860QDS_NAND		     powerpc     mpc85xx     b4860qds            freescale      -           B4860QDS:PPC_B4860,RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF80000
 B4860QDS_SPIFLASH            powerpc     mpc85xx     b4860qds            freescale	-           B4860QDS:PPC_B4860,RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF80000
diff --git a/include/configs/t4qds.h b/include/configs/t4qds.h
index dbaa7ea..a8346f0 100644
--- a/include/configs/t4qds.h
+++ b/include/configs/t4qds.h
@@ -791,8 +791,21 @@ unsigned long get_board_ddr_clk(void);
 
 #define __USB_PHY_TYPE	utmi
 
+/*
+ * T4240 has 3 DDR controllers. Default to 3way_4KB interleaving. It can be
+ * 3way_1KB, 3way_4KB, 3way_8KB. T4160 has 2 DDR controllers. Default to
+ * cacheline interleaving. It can be cacheline, page, bank, superbank.
+ * See doc/README.fsl-ddr for details.
+ */
+#ifdef CONFIG_PPC_T4240
+#define CTRL_INTLV_PREFERED 3way_4KB
+#else
+#define CTRL_INTLV_PREFERED cacheline
+#endif
+
 #define	CONFIG_EXTRA_ENV_SETTINGS				\
-	"hwconfig=fsl_ddr:ctlr_intlv=3way_4KB,"		\
+	"hwconfig=fsl_ddr:"					\
+	"ctlr_intlv=" __stringify(CTRL_INTLV_PREFERED) ","	\
 	"bank_intlv=auto;"					\
 	"usb1:dr_mode=host,phy_type=" __stringify(__USB_PHY_TYPE) "\0"\
 	"netdev=eth0\0"						\
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 17/23] powerpc/85xx: add missing QMAN frequency calculation
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 17/23] powerpc/85xx: add missing QMAN frequency calculation York Sun
@ 2013-05-07 23:04   ` Andy Fleming
  2013-05-07 23:18     ` York Sun
  0 siblings, 1 reply; 30+ messages in thread
From: Andy Fleming @ 2013-05-07 23:04 UTC (permalink / raw)
  To: u-boot

On Mon, Mar 25, 2013 at 12:33 PM, York Sun <yorksun@freescale.com> wrote:

> From: Shaohui Xie <Shaohui.Xie@freescale.com>
>
> When CONFIG_SYS_FSL_QORIQ_CHASSIS2 is not defined, QMAN frequency will not
> be initialized, and QMAN will have a wrong frequency display.
>
> Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
> ---
>  arch/powerpc/cpu/mpc85xx/speed.c |    4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/arch/powerpc/cpu/mpc85xx/speed.c
> b/arch/powerpc/cpu/mpc85xx/speed.c
> index 9fc7b54..f00b1ab 100644
> --- a/arch/powerpc/cpu/mpc85xx/speed.c
> +++ b/arch/powerpc/cpu/mpc85xx/speed.c
> @@ -293,6 +293,10 @@ void get_sys_info (sys_info_t * sysInfo)
>  #endif
>  #endif
>
> +#ifdef CONFIG_SYS_DPAA_QBMAN
> +       sysInfo->freqQMAN = sysInfo->freqSystemBus / 2;
> +#endif
> +
>


Can we just move the original copy of the above lines out of the #ifdef? I
don't see any reason to do it the same way in two places.

Andy

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 17/23] powerpc/85xx: add missing QMAN frequency calculation
  2013-05-07 23:04   ` Andy Fleming
@ 2013-05-07 23:18     ` York Sun
  2013-05-09  0:40       ` Fleming Andy-AFLEMING
  0 siblings, 1 reply; 30+ messages in thread
From: York Sun @ 2013-05-07 23:18 UTC (permalink / raw)
  To: u-boot

On 05/07/2013 04:04 PM, Andy Fleming wrote:
> 
> 
> 
> On Mon, Mar 25, 2013 at 12:33 PM, York Sun <yorksun@freescale.com
> <mailto:yorksun@freescale.com>> wrote:
> 
>     From: Shaohui Xie <Shaohui.Xie@freescale.com
>     <mailto:Shaohui.Xie@freescale.com>>
> 
>     When CONFIG_SYS_FSL_QORIQ_CHASSIS2 is not defined, QMAN frequency
>     will not
>     be initialized, and QMAN will have a wrong frequency display.
> 
>     Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com
>     <mailto:Shaohui.Xie@freescale.com>>
>     ---
>      arch/powerpc/cpu/mpc85xx/speed.c |    4 ++++
>      1 file changed, 4 insertions(+)
> 
>     diff --git a/arch/powerpc/cpu/mpc85xx/speed.c
>     b/arch/powerpc/cpu/mpc85xx/speed.c
>     index 9fc7b54..f00b1ab 100644
>     --- a/arch/powerpc/cpu/mpc85xx/speed.c
>     +++ b/arch/powerpc/cpu/mpc85xx/speed.c
>     @@ -293,6 +293,10 @@ void get_sys_info (sys_info_t * sysInfo)
>      #endif
>      #endif
> 
>     +#ifdef CONFIG_SYS_DPAA_QBMAN
>     +       sysInfo->freqQMAN = sysInfo->freqSystemBus / 2;
>     +#endif
>     +
> 
> 
> 
> Can we just move the original copy of the above lines out of the #ifdef?
> I don't see any reason to do it the same way in two places.
> 
>
You mean delete #ifdef? It will have a compiling error, won't it? See
include/e500.h, the freqQMAN is withing #ifdef.

York

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 15/23] T4/USB: Add USB 2.0 UTMI dual phy support
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 15/23] T4/USB: Add USB 2.0 UTMI dual phy support York Sun
@ 2013-05-09  0:17   ` Andy Fleming
  0 siblings, 0 replies; 30+ messages in thread
From: Andy Fleming @ 2013-05-09  0:17 UTC (permalink / raw)
  To: u-boot

On Mon, Mar 25, 2013 at 12:33 PM, York Sun <yorksun@freescale.com> wrote:

> From: Roy Zang <tie-fei.zang@freescale.com>
>
> T4240 internal UTMI phy is different comparing to previous UTMI PHY
> in P3041.
> This patch adds USB 2.0 UTMI Dual PHY new memory map and enable it for
> T4240.
> The phy timing is very sensitive and moving the phy enable code to
> cpu_init.c will not work.
>
> Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
> ---
>  arch/powerpc/include/asm/config_mpc85xx.h |    3 +--
>  arch/powerpc/include/asm/immap_85xx.h     |   41
> +++++++++++++++++++++++++++++
>  drivers/usb/host/ehci-fsl.c               |   21 +++++++++++++++
>  3 files changed, 63 insertions(+), 2 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/config_mpc85xx.h
> b/arch/powerpc/include/asm/config_mpc85xx.h
> index 3740785..ca235dc 100644
> --- a/arch/powerpc/include/asm/config_mpc85xx.h
> +++ b/arch/powerpc/include/asm/config_mpc85xx.h
> @@ -536,8 +536,7 @@
>  #define CONFIG_SYS_FSL_SRIO_MAX_PORTS  2
>  #define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9
>  #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5
> -#define CONFIG_SYS_FSL_USB1_PHY_ENABLE
> -#define CONFIG_SYS_FSL_USB2_PHY_ENABLE
> +#define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
>  #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY
>  #define CONFIG_SYS_FSL_ERRATUM_A004468
>  #define CONFIG_SYS_FSL_ERRATUM_A_004934
> diff --git a/arch/powerpc/include/asm/immap_85xx.h
> b/arch/powerpc/include/asm/immap_85xx.h
> index 8bc047b..29ee38f 100644
> --- a/arch/powerpc/include/asm/immap_85xx.h
> +++ b/arch/powerpc/include/asm/immap_85xx.h
> @@ -2828,12 +2828,53 @@ typedef struct ccsr_pme {
>         u8      res4[0x400];
>  } ccsr_pme_t;
>
> +#ifdef CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE
> +struct ccsr_usb_port_ctrl {
> +       u32     ctrl;
> +       u32     drvvbuscfg;
> +       u32     pwrfltcfg;
> +       u32     sts;
> +       u8      res_14[0xc];
> +       u32     bistcfg;
> +       u32     biststs;
> +       u32     abistcfg;
> +       u32     abiststs;
> +       u8      res_30[0x10];
> +       u32     xcvrprg;
> +       u32     anaprg;
> +       u32     anadrv;
> +       u32     anasts;
> +};
> +
> +struct ccsr_usb_phy {
> +       u32     id;
> +       struct  ccsr_usb_port_ctrl port1;
> +       u8      res_50[0xc];
> +       u32     tvr;
> +       u32     pllprg[4];
> +       u8      res_70[0x4];
> +       u32     anaccfg;
> +       u32     dbg;
> +       u8      res_7c[0x4];
> +       struct  ccsr_usb_port_ctrl port2;
> +       u8      res_dc[0x334];
> +} ccsr_usb_phy_t;
>


I get a build error whenever the code attempts to use ccsr_usb_phy_t. Was
this even build-tested? Am I going to find a later patch that fixes this?
Am I running into a compiler version thing, where it's ok to do struct foo
{ } foo_t, without "typedef" before? My impression is that's just for C++...

I'm going to add "typedef" before this struct, and apply the patch, but
please be more careful.

Andy

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 17/23] powerpc/85xx: add missing QMAN frequency calculation
  2013-05-07 23:18     ` York Sun
@ 2013-05-09  0:40       ` Fleming Andy-AFLEMING
  0 siblings, 0 replies; 30+ messages in thread
From: Fleming Andy-AFLEMING @ 2013-05-09  0:40 UTC (permalink / raw)
  To: u-boot

Ah, ok, makes sense.

On May 7, 2013, at 18:18, "sun york-R58495" <R58495@freescale.com> wrote:

> On 05/07/2013 04:04 PM, Andy Fleming wrote:
>> 
>> 
>> 
>> On Mon, Mar 25, 2013 at 12:33 PM, York Sun <yorksun@freescale.com
>> <mailto:yorksun@freescale.com>> wrote:
>> 
>>    From: Shaohui Xie <Shaohui.Xie@freescale.com
>>    <mailto:Shaohui.Xie@freescale.com>>
>> 
>>    When CONFIG_SYS_FSL_QORIQ_CHASSIS2 is not defined, QMAN frequency
>>    will not
>>    be initialized, and QMAN will have a wrong frequency display.
>> 
>>    Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com
>>    <mailto:Shaohui.Xie@freescale.com>>
>>    ---
>>     arch/powerpc/cpu/mpc85xx/speed.c |    4 ++++
>>     1 file changed, 4 insertions(+)
>> 
>>    diff --git a/arch/powerpc/cpu/mpc85xx/speed.c
>>    b/arch/powerpc/cpu/mpc85xx/speed.c
>>    index 9fc7b54..f00b1ab 100644
>>    --- a/arch/powerpc/cpu/mpc85xx/speed.c
>>    +++ b/arch/powerpc/cpu/mpc85xx/speed.c
>>    @@ -293,6 +293,10 @@ void get_sys_info (sys_info_t * sysInfo)
>>     #endif
>>     #endif
>> 
>>    +#ifdef CONFIG_SYS_DPAA_QBMAN
>>    +       sysInfo->freqQMAN = sysInfo->freqSystemBus / 2;
>>    +#endif
>>    +
>> 
>> 
>> 
>> Can we just move the original copy of the above lines out of the #ifdef?
>> I don't see any reason to do it the same way in two places.
> You mean delete #ifdef? It will have a compiling error, won't it? See
> include/e500.h, the freqQMAN is withing #ifdef.
> 
> York
> 

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 03/23] powerpc/pcie: add PCIe version 3.x support
  2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 03/23] powerpc/pcie: add PCIe version 3.x support York Sun
@ 2013-05-13 18:50   ` Andy Fleming
  2013-05-13 19:25     ` York Sun
  0 siblings, 1 reply; 30+ messages in thread
From: Andy Fleming @ 2013-05-13 18:50 UTC (permalink / raw)
  To: u-boot

This patch causes all sorts of problems. I'm NACKing it for now. Please
make sure none of these changes break 83xx before re-submitting.


On Mon, Mar 25, 2013 at 12:33 PM, York Sun <yorksun@freescale.com> wrote:

> From: Roy ZANG <tie-fei.zang@freescale.com>
>
> T4240 PCIe IP is version 3.0 and has some update comparing previous
> QorIQ products.
>
> 1.  Move Freescale specific register define
> to
> arch/powerpc/include/asm/fsl_pci.h
> and update the register offset define for T4240.
>
> 2. add the status/control register define
> use status/control register to judge the link status
>
> 3. The original code uses 'Programming Interface' field to judge if PCIE is
> EP or RC mode, however, T4240 does not support this functionality.
> According to PCIE specification, 'Header Type' offset 0x0e is used to
> indicate header type, so for PCIE controller, the patch changes code to
> use 'Header Type' field to identify if the PCIE is RC or EP mode.
>
> Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
> Signed-off-by: Minghuan Lian <Minghuan.Lian@freescale.com>
> ---
>  arch/powerpc/include/asm/config_mpc85xx.h |    1 +
>  arch/powerpc/include/asm/fsl_pci.h        |   35
> +++++++++++++++++++++++++++--
>  drivers/pci/fsl_pci_init.c                |   20 ++++++++++++-----
>  include/pci.h                             |    7 ------
>  4 files changed, 48 insertions(+), 15 deletions(-)
>
>
[...]


> index 15f583f..c0ed553 100644
> --- a/include/pci.h
> +++ b/include/pci.h
> @@ -426,13 +426,6 @@
>  #define PCI_MAX_PCI_DEVICES    32
>  #define PCI_MAX_PCI_FUNCTIONS  8
>
> -#define PCI_DCR                0x54    /* PCIe Device Control Register */
> -#define PCI_DSR                0x56    /* PCIe Device Status Register */
> -#define PCI_LSR                0x5e    /* PCIe Link Status Register */
> -#define PCI_LCR                0x5c    /* PCIe Link Control Register */
> -#define PCI_LTSSM      0x404   /* PCIe Link Training, Status State
> Machine */
> -#define  PCI_LTSSM_L0  0x16    /* L0 state */
>


These were being used by 83xx as well, and are now unavailable. Please
devise a solution that works for all of our platforms.

Andy

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 03/23] powerpc/pcie: add PCIe version 3.x support
  2013-05-13 18:50   ` Andy Fleming
@ 2013-05-13 19:25     ` York Sun
  2013-05-13 22:49       ` Andy Fleming
  0 siblings, 1 reply; 30+ messages in thread
From: York Sun @ 2013-05-13 19:25 UTC (permalink / raw)
  To: u-boot

Andy,

I think I caught this issue and asked Roy to submit another patch to fix
it http://patchwork.ozlabs.org/patch/230825/

York

On 05/13/2013 11:50 AM, Andy Fleming wrote:
> This patch causes all sorts of problems. I'm NACKing it for now. Please
> make sure none of these changes break 83xx before re-submitting.
> 
> 
> On Mon, Mar 25, 2013 at 12:33 PM, York Sun <yorksun@freescale.com
> <mailto:yorksun@freescale.com>> wrote:
> 
>     From: Roy ZANG <tie-fei.zang@freescale.com
>     <mailto:tie-fei.zang@freescale.com>>
> 
>     T4240 PCIe IP is version 3.0 and has some update comparing previous
>     QorIQ products.
> 
>     1.  Move Freescale specific register define
>     to
>     arch/powerpc/include/asm/fsl_pci.h
>     and update the register offset define for T4240.
> 
>     2. add the status/control register define
>     use status/control register to judge the link status
> 
>     3. The original code uses 'Programming Interface' field to judge if
>     PCIE is
>     EP or RC mode, however, T4240 does not support this functionality.
>     According to PCIE specification, 'Header Type' offset 0x0e is used to
>     indicate header type, so for PCIE controller, the patch changes code to
>     use 'Header Type' field to identify if the PCIE is RC or EP mode.
> 
>     Signed-off-by: Roy Zang <tie-fei.zang@freescale.com
>     <mailto:tie-fei.zang@freescale.com>>
>     Signed-off-by: Minghuan Lian <Minghuan.Lian@freescale.com
>     <mailto:Minghuan.Lian@freescale.com>>
>     ---
>      arch/powerpc/include/asm/config_mpc85xx.h |    1 +
>      arch/powerpc/include/asm/fsl_pci.h        |   35
>     +++++++++++++++++++++++++++--
>      drivers/pci/fsl_pci_init.c                |   20 ++++++++++++-----
>      include/pci.h                             |    7 ------
>      4 files changed, 48 insertions(+), 15 deletions(-)
> 
> 
> [...] 
>  
> 
>     index 15f583f..c0ed553 100644
>     --- a/include/pci.h
>     +++ b/include/pci.h
>     @@ -426,13 +426,6 @@
>      #define PCI_MAX_PCI_DEVICES    32
>      #define PCI_MAX_PCI_FUNCTIONS  8
> 
>     -#define PCI_DCR                0x54    /* PCIe Device Control
>     Register */
>     -#define PCI_DSR                0x56    /* PCIe Device Status
>     Register */
>     -#define PCI_LSR                0x5e    /* PCIe Link Status Register */
>     -#define PCI_LCR                0x5c    /* PCIe Link Control Register */
>     -#define PCI_LTSSM      0x404   /* PCIe Link Training, Status State
>     Machine */
>     -#define  PCI_LTSSM_L0  0x16    /* L0 state */
> 
> 
> 
> These were being used by 83xx as well, and are now unavailable. Please
> devise a solution that works for all of our platforms.
> 
> Andy

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [U-Boot] [Patch v2, batch 2 03/23] powerpc/pcie: add PCIe version 3.x support
  2013-05-13 19:25     ` York Sun
@ 2013-05-13 22:49       ` Andy Fleming
  0 siblings, 0 replies; 30+ messages in thread
From: Andy Fleming @ 2013-05-13 22:49 UTC (permalink / raw)
  To: u-boot

On Mon, May 13, 2013 at 2:25 PM, York Sun <yorksun@freescale.com> wrote:

> Andy,
>
> I think I caught this issue and asked Roy to submit another patch to fix
> it http://patchwork.ozlabs.org/patch/230825/



We can't do it that way. I can't apply a patch which is known to break the
build -- it breaks bisectability. Roy, please submit a new patch which
works correctly for all platforms

However, the linked patch looks very much like a temporary workaround.
Clearly, 83xx needs some of the same definitions as 85xx, and making 2
copies isn't the solution. Somehow, they need to share the definitions. I'm
not entirely clear on why 83xx has its own pci code, but it's very
misleading to call the 85xx PCI code "fsl_pci", and leave out 83xx, even
though it shares some of the same code. Please propose a solution which
acknowledges and accommodates this shared functionality.

Andy

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2013-05-13 22:49 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-25 17:33 [U-Boot] [Patch v2, batch 2 01/23] powerpc/B4860: Corrected FMAN1 operating frequency print at u-boot York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 02/23] powerpc/mpc85xx: Add definitions for HDBCR registers York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 03/23] powerpc/pcie: add PCIe version 3.x support York Sun
2013-05-13 18:50   ` Andy Fleming
2013-05-13 19:25     ` York Sun
2013-05-13 22:49       ` Andy Fleming
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 04/23] powerpc/mpc85xx: Update corenet global utility block registers York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 05/23] powerpc/t4240qds: Fix SPI flash type York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 06/23] e6500: Move L1 enablement after L2 enablement York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 07/23] T4/serdes: fix the serdes clock frequency display York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 08/23] powerpc/t4240qds: fix XAUI card PHY address York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 09/23] Fman/t4240: some fix for 10G XAUI York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 10/23] T4/SerDes: correct the SATA index York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 11/23] powerpc/t4240qds: Update DDR timing table York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 12/23] powerpc/mpc8xxx: Fix DDR 3-way interleaving York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 13/23] powerpc/mpc85xx: Fix portal setup York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 14/23] powerpc/t4240qds: Add voltage ID support York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 15/23] T4/USB: Add USB 2.0 UTMI dual phy support York Sun
2013-05-09  0:17   ` Andy Fleming
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 16/23] T4/serdes: fix the actual serdes clock frequency York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 17/23] powerpc/85xx: add missing QMAN frequency calculation York Sun
2013-05-07 23:04   ` Andy Fleming
2013-05-07 23:18     ` York Sun
2013-05-09  0:40       ` Fleming Andy-AFLEMING
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 18/23] powerpc/corenet2: Print SerDes protocol in decimal York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 19/23] powerpc/mpc85xx: Fix PIR parsing for chassis2 York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 20/23] powerpc/t4240: Fix SerDes protocol arrays with const prefix York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 21/23] powerpc/mpc85xx: Add T4160 SoC York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 22/23] powerpc/t4240qds: Move SoC define into boards.cfg York Sun
2013-03-25 17:33 ` [U-Boot] [Patch v2, batch 2 23/23] powerpc: Add T4160QDS York Sun

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox