diff options
Diffstat (limited to 'arch/powerpc/include')
| -rw-r--r-- | arch/powerpc/include/asm/fsl_ddr_dimm_params.h | 3 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_ddr_sdram.h | 3 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_fman.h | 212 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_law.h | 3 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_liodn.h | 142 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_portals.h | 59 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_serdes.h | 11 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/immap_85xx.h | 219 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/processor.h | 1 | 
9 files changed, 629 insertions, 24 deletions
diff --git a/arch/powerpc/include/asm/fsl_ddr_dimm_params.h b/arch/powerpc/include/asm/fsl_ddr_dimm_params.h index 55923e09b..be8260277 100644 --- a/arch/powerpc/include/asm/fsl_ddr_dimm_params.h +++ b/arch/powerpc/include/asm/fsl_ddr_dimm_params.h @@ -81,6 +81,9 @@ typedef struct dimm_params_s {  	unsigned int tRTP_ps;	/* byte 38, spd->trtp */  	unsigned int tDQSQ_max_ps;	/* byte 44, spd->tdqsq */  	unsigned int tQHS_ps;	/* byte 45, spd->tqhs */ + +	/* DDR3 RDIMM */ +	unsigned char rcw[16];	/* Register Control Word 0-15 */  } dimm_params_t;  extern unsigned int ddr_compute_dimm_parameters( diff --git a/arch/powerpc/include/asm/fsl_ddr_sdram.h b/arch/powerpc/include/asm/fsl_ddr_sdram.h index 02920dbfd..d576eb85e 100644 --- a/arch/powerpc/include/asm/fsl_ddr_sdram.h +++ b/arch/powerpc/include/asm/fsl_ddr_sdram.h @@ -119,6 +119,7 @@ typedef struct fsl_ddr_cfg_regs_s {  	unsigned int ddr_sr_cntr;  	unsigned int ddr_sdram_rcw_1;  	unsigned int ddr_sdram_rcw_2; +	unsigned int ddr_eor;  } fsl_ddr_cfg_regs_t;  typedef struct memctl_options_partial_s { @@ -156,6 +157,7 @@ typedef struct memctl_options_s {  	unsigned int memctl_interleaving;  	unsigned int memctl_interleaving_mode;  	unsigned int ba_intlv_ctl; +	unsigned int addr_hash;  	/* Operational mode parameters */  	unsigned int ECC_mode;	 /* Use ECC? */ @@ -172,6 +174,7 @@ typedef struct memctl_options_s {  	unsigned int OTF_burst_chop_en;  	/* mirrior DIMMs for DDR3 */  	unsigned int mirrored_dimm; +	unsigned int quad_rank_present;  	/* Global Timing Parameters */  	unsigned int cas_latency_override; diff --git a/arch/powerpc/include/asm/fsl_fman.h b/arch/powerpc/include/asm/fsl_fman.h new file mode 100644 index 000000000..6c01ffc41 --- /dev/null +++ b/arch/powerpc/include/asm/fsl_fman.h @@ -0,0 +1,212 @@ +/* + * MPC85xx Internal Memory Map + * + * Copyright 2010 Freescale Semiconductor, Inc. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __FSL_FMAN_H__ +#define __FSL_FMAN_H__ + +#include <asm/types.h> + +typedef struct fm_bmi_common { +	u32	fmbm_init;	/* BMI initialization */ +	u32	fmbm_cfg1;	/* BMI configuration1 */ +	u32	fmbm_cfg2;	/* BMI configuration2 */ +	u32	res0[0x5]; +	u32	fmbm_ievr;	/* interrupt event register */ +	u32	fmbm_ier;	/* interrupt enable register */ +	u32	fmbm_ifr;	/* interrupt force register */ +	u32	res1[0x5]; +	u32	fmbm_arb[0x8];	/* BMI arbitration */ +	u32	res2[0x28]; +	u32	fmbm_gde;	/* global debug enable */ +	u32	fmbm_pp[0x3f];	/* BMI port parameters */ +	u32	res3; +	u32	fmbm_pfs[0x3f];	/* BMI port FIFO size */ +	u32	res4; +	u32	fmbm_ppid[0x3f];/* port partition ID */ +} fm_bmi_common_t; + +typedef struct fm_qmi_common { +	u32	fmqm_gc;	/* general configuration register */ +	u32	res0; +	u32	fmqm_eie;	/* error interrupt event register */ +	u32	fmqm_eien;	/* error interrupt enable register */ +	u32	fmqm_eif;	/* error interrupt force register */ +	u32	fmqm_ie;	/* interrupt event register */ +	u32	fmqm_ien;	/* interrupt enable register */ +	u32	fmqm_if;	/* interrupt force register */ +	u32	fmqm_gs;	/* global status register */ +	u32	fmqm_ts;	/* task status register */ +	u32	fmqm_etfc;	/* enqueue total frame counter */ +	u32	fmqm_dtfc;	/* dequeue total frame counter */ +	u32	fmqm_dc0;	/* dequeue counter 0 */ +	u32	fmqm_dc1;	/* dequeue counter 1 */ +	u32	fmqm_dc2;	/* dequeue counter 2 */ +	u32	fmqm_dc3;	/* dequeue counter 3 */ +	u32	fmqm_dfnoc;	/* dequeue FQID not override counter */ +	u32	fmqm_dfcc;	/* dequeue FQID from context counter */ +	u32	fmqm_dffc;	/* dequeue FQID from FD counter */ +	u32	fmqm_dcc;	/* dequeue confirm counter */ +	u32	res1[0xc]; +	u32	fmqm_dtrc;	/* debug trap configuration register */ +	u32	fmqm_efddd;	/* enqueue frame descriptor dynamic debug */ +	u32	res3[0x2]; +	u32	res4[0xdc];	/* missing debug regs */ +} fm_qmi_common_t; + +typedef struct fm_bmi { +	u8	res[1024]; +} fm_bmi_t; + +typedef struct fm_qmi { +	u8	res[1024]; +} fm_qmi_t; + +typedef struct fm_parser { +	u8	res[1024]; +} fm_parser_t; + +typedef struct fm_policer { +	u8	res[4*1024]; +} fm_policer_t; + +typedef struct fm_keygen { +	u8	res[4*1024]; +} fm_keygen_t; + +typedef struct fm_dma { +	u32	fmdmsr;		/* status register */ +	u32	fmdmmr;		/* mode register */ +	u32	fmdmtr;		/* bus threshold register */ +	u32	fmdmhy;		/* bus hysteresis register */ +	u32	fmdmsetr;	/* SOS emergency threshold register */ +	u32	fmdmtah;	/* transfer bus address high register */ +	u32	fmdmtal;	/* transfer bus address low register */ +	u32	fmdmtcid;	/* transfer bus communication ID register */ +	u32	fmdmra;		/* DMA bus internal ram address register */ +	u32	fmdmrd;		/* DMA bus internal ram data register */ +	u32	res0[0xb]; +	u32	fmdmdcr;	/* debug counter */ +	u32	fmdmemsr;	/* emrgency smoother register */ +	u32	res1; +	u32	fmdmplr[32];	/* FM DMA PID-LIODN # register */ +	u32	res[0x3c8]; +} fm_dma_t; + +typedef struct fm_fpm { +	u32	fpmtnc;		/* TNUM control */ +	u32	fpmprc;		/* Port_ID control */ +	u32	res0; +	u32	fpmflc;		/* flush control */ +	u32	fpmdis1;	/* dispatch thresholds1 */ +	u32	fpmdis2;	/* dispatch thresholds2 */ +	u32	fmepi;		/* error pending interrupts */ +	u32	fmrie;		/* rams interrupt enable */ +	u32	fpmfcevent[0x4];/* FMan controller event 0-3 */ +	u32	res1[0x4]; +	u32	fpmfcmask[0x4];	/* FMan controller mask 0-3 */ +	u32	res2[0x4]; +	u32	fpmtsc1;	/* timestamp control1 */ +	u32	fpmtsc2;	/* timestamp control2 */ +	u32	fpmtsp;		/* time stamp */ +	u32	fpmtsf;		/* time stamp fraction */ +	u32	fpmrcr;		/* rams control and event */ +	u32	res3[0x3]; +	u32	fpmdrd[0x4];	/* data_ram data 0-3 */ +	u32	res4[0xc]; +	u32	fpmdra;		/* data ram access */ +	u32	fm_ip_rev_1;	/* IP block revision 1 */ +	u32	fm_ip_rev_2;	/* IP block revision 2 */ +	u32	fmrstc;		/* reset command */ +	u32	fmcld;		/* classifier debug control */ +	u32	fmnpi;		/* normal pending interrupts */ +	u32	res5; +	u32	fmnee;		/* event and enable */ +	u32	fpmcev[0x4];	/* CPU event 0-3 */ +	u32	res6[0x4]; +	u32	fmfp_ps[0x40];	/* port status */ +	u32	res7[0x260]; +	u32	fpmts[0x80];	/* task status */ +	u32	res8[0xa0]; +} fm_fpm_t; + +typedef struct fm_imem { +	u8	res[4*1024]; +} fm_imem_t; + +typedef struct fm_soft_parser { +	u8	res[4*1024]; +} fm_soft_parser_t; + +typedef struct fm_dtesc { +	u8	res[4*1024]; +} fm_dtsec_t; + +typedef struct fm_mdio { +	u8	res[4*1024]; +} fm_mdio_t; + +typedef struct fm_10gec { +	u8	res[4*1024]; +} fm_10gec_t; + +typedef struct fm_10gec_mdio { +	u8	res[4*1024]; +} fm_10gec_mdio_t; + +typedef struct fm_1588 { +	u8	res[4*1024]; +} fm_1588_t; + +typedef struct ccsr_fman { +	u8			muram[0x80000]; +	fm_bmi_common_t		fm_bmi_common; +	fm_qmi_common_t		fm_qmi_common; +	u8			res0[2048]; +	struct { +		fm_bmi_t	fm_bmi; +		fm_qmi_t	fm_qmi; +		fm_parser_t	fm_parser; +		u8		res[1024]; +	} port[63]; +	fm_policer_t		fm_policer; +	fm_keygen_t		fm_keygen; +	fm_dma_t		fm_dma; +	fm_fpm_t		fm_fpm; +	fm_imem_t		fm_imem; +	u8			res1[8*1024]; +	fm_soft_parser_t	fm_soft_parser; +	u8			res2[96*1024]; +	struct { +		fm_dtsec_t	fm_dtesc; +		fm_mdio_t	fm_mdio; +	} mac[4]; +	u8			res3[32*1024]; +	fm_10gec_t		fm_10gec; +	fm_10gec_mdio_t		fm_10gec_mdio; +	u8			res4[48*1024]; +	fm_1588_t		fm_1588; +	u8			res5[4*1024]; +} ccsr_fman_t; + +#endif /*__FSL_FMAN_H__*/ diff --git a/arch/powerpc/include/asm/fsl_law.h b/arch/powerpc/include/asm/fsl_law.h index 12ba1a6a0..0e255ffce 100644 --- a/arch/powerpc/include/asm/fsl_law.h +++ b/arch/powerpc/include/asm/fsl_law.h @@ -1,5 +1,5 @@  /* - * Copyright 2008-2009 Freescale Semiconductor, Inc. + * Copyright 2008-2010 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 @@ -54,6 +54,7 @@ enum law_trgt_if {  	LAW_TRGT_IF_PCIE_1 = 0x00,  	LAW_TRGT_IF_PCIE_2 = 0x01,  	LAW_TRGT_IF_PCIE_3 = 0x02, +	LAW_TRGT_IF_PCIE_4 = 0x03,  	LAW_TRGT_IF_RIO_1 = 0x08,  	LAW_TRGT_IF_RIO_2 = 0x09, diff --git a/arch/powerpc/include/asm/fsl_liodn.h b/arch/powerpc/include/asm/fsl_liodn.h new file mode 100644 index 000000000..acdc99aee --- /dev/null +++ b/arch/powerpc/include/asm/fsl_liodn.h @@ -0,0 +1,142 @@ +/* + * Copyright 2009-2010 Freescale Semiconductor, Inc. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _FSL_LIODN_H_ +#define _FSL_LIODN_H_ + +#include <asm/types.h> + +struct liodn_id_table { +	const char * compat; +	u32 id[2]; +	u8 num_ids; +	phys_addr_t compat_offset; +	unsigned long reg_offset; +}; + +extern u32 get_ppid_liodn(int ppid_tbl_idx, int ppid); +extern void set_liodns(void); +extern void fdt_fixup_liodn(void *blob); + +#define SET_LIODN_BASE_1(idA) \ +	{ .id = { idA }, .num_ids = 1, } + +#define SET_LIODN_BASE_2(idA, idB) \ +	{ .id = { idA, idB }, .num_ids = 2 } + +#define SET_LIODN_ENTRY_1(name, idA, off, compatoff) \ +	{ .compat = name, \ +	  .id = { idA }, .num_ids = 1, \ +	  .reg_offset = off + CONFIG_SYS_CCSRBAR, \ +	  .compat_offset = compatoff + CONFIG_SYS_CCSRBAR_PHYS, \ +	} + +#define SET_LIODN_ENTRY_2(name, idA, idB, off, compatoff) \ +	{ .compat = name, \ +	  .id = { idA, idB }, .num_ids = 2, \ +	  .reg_offset = off + CONFIG_SYS_CCSRBAR, \ +	  .compat_offset = compatoff + CONFIG_SYS_CCSRBAR_PHYS, \ +	} + +#define SET_GUTS_LIODN(compat, liodn, name, compatoff) \ +	SET_LIODN_ENTRY_1(compat, liodn, \ +		offsetof(ccsr_gur_t, name) + CONFIG_SYS_MPC85xx_GUTS_OFFSET, \ +		compatoff) + +#define SET_USB_LIODN(usbNum, compat, liodn) \ +	SET_GUTS_LIODN(compat, liodn, usb##usbNum##liodnr,\ +		CONFIG_SYS_MPC85xx_USB##usbNum##_OFFSET) + +#define SET_SATA_LIODN(sataNum, liodn) \ +	SET_GUTS_LIODN("fsl,pq-sata-v2", liodn, sata##sataNum##liodnr,\ +		CONFIG_SYS_MPC85xx_SATA##sataNum##_OFFSET) + +#define SET_PCI_LIODN(pciNum, liodn) \ +	SET_GUTS_LIODN("fsl,p4080-pcie", liodn, pex##pciNum##liodnr,\ +		CONFIG_SYS_MPC85xx_PCIE##pciNum##_OFFSET) + +/* reg nodes for DMA start @ 0x300 */ +#define SET_DMA_LIODN(dmaNum, liodn) \ +	SET_GUTS_LIODN("fsl,eloplus-dma", liodn, dma##dmaNum##liodnr,\ +		CONFIG_SYS_MPC85xx_DMA##dmaNum##_OFFSET + 0x300) + +#define SET_SDHC_LIODN(sdhcNum, liodn) \ +	SET_GUTS_LIODN("fsl,esdhc", liodn, sdmmc##sdhcNum##liodnr,\ +		CONFIG_SYS_MPC85xx_ESDHC_OFFSET) + +#define SET_QMAN_LIODN(liodn) \ +	SET_LIODN_ENTRY_1("fsl,qman", liodn, offsetof(ccsr_qman_t, liodnr) + \ +		CONFIG_SYS_FSL_CORENET_QMAN_OFFSET, \ +		CONFIG_SYS_FSL_CORENET_QMAN_OFFSET) + +#define SET_BMAN_LIODN(liodn) \ +	SET_LIODN_ENTRY_1("fsl,bman", liodn, offsetof(ccsr_bman_t, liodnr) + \ +		CONFIG_SYS_FSL_CORENET_BMAN_OFFSET, \ +		CONFIG_SYS_FSL_CORENET_BMAN_OFFSET) + +#define SET_PME_LIODN(liodn) \ +	SET_LIODN_ENTRY_1("fsl,pme", liodn, offsetof(ccsr_pme_t, liodnr) + \ +		CONFIG_SYS_FSL_CORENET_PME_OFFSET, \ +		CONFIG_SYS_FSL_CORENET_PME_OFFSET) + +/* -1 from portID due to how immap has the registers */ +#define FM_PPID_RX_PORT_OFFSET(fmNum, portID) \ +	CONFIG_SYS_FSL_FM##fmNum##_OFFSET + \ +	offsetof(struct ccsr_fman, fm_bmi_common.fmbm_ppid[portID - 1]) + +/* enetNum is 0, 1, 2... so we + 8 for 1g to get to HW Port ID */ +#define SET_FMAN_RX_1G_LIODN(fmNum, enetNum, liodn) \ +	SET_LIODN_ENTRY_1("fsl,fman-port-1g-rx", liodn, \ +		FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 8), \ +		CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_1G_OFFSET) \ + +/* enetNum is 0, 1, 2... so we + 16 for 10g to get to HW Port ID */ +#define SET_FMAN_RX_10G_LIODN(fmNum, enetNum, liodn) \ +	SET_LIODN_ENTRY_1("fsl,fman-port-10g-rx", liodn, \ +		FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 16), \ +		CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_10G_OFFSET) \ + +#define SET_SEC_JQ_LIODN_ENTRY(jqNum, liodnA, liodnB) \ +	SET_LIODN_ENTRY_2("fsl,sec4.0-job-queue", liodnA, liodnB,\ +		offsetof(ccsr_sec_t, jqliodnr[jqNum].ls) + \ +		CONFIG_SYS_FSL_SEC_OFFSET, \ +		CONFIG_SYS_FSL_SEC_OFFSET + 0x1000 + 0x1000 * jqNum) + +/* This is a bit evil since we treat rtic param as both a string & hex value */ +#define SET_SEC_RTIC_LIODN_ENTRY(rtic, liodnA) \ +	SET_LIODN_ENTRY_1("fsl,sec4.0-rtic-memory", \ +		liodnA,	\ +		offsetof(ccsr_sec_t, rticliodnr[0x##rtic-0xa].ls) + \ +		CONFIG_SYS_FSL_SEC_OFFSET, \ +		CONFIG_SYS_FSL_SEC_OFFSET + 0x6100 + 0x20 * (0x##rtic-0xa)) + +#define SET_SEC_DECO_LIODN_ENTRY(num, liodnA, liodnB) \ +	SET_LIODN_ENTRY_2(NULL, liodnA, liodnB, \ +		offsetof(ccsr_sec_t, decoliodnr[num].ls) + \ +		CONFIG_SYS_FSL_SEC_OFFSET, 0) + +extern struct liodn_id_table liodn_tbl[], liodn_bases[], sec_liodn_tbl[]; +extern struct liodn_id_table fman1_liodn_tbl[], fman2_liodn_tbl[]; +extern int liodn_tbl_sz, sec_liodn_tbl_sz; +extern int fman1_liodn_tbl_sz, fman2_liodn_tbl_sz; + +#endif diff --git a/arch/powerpc/include/asm/fsl_portals.h b/arch/powerpc/include/asm/fsl_portals.h new file mode 100644 index 000000000..cb32927a8 --- /dev/null +++ b/arch/powerpc/include/asm/fsl_portals.h @@ -0,0 +1,59 @@ +/* + * Copyright 2009-2010 Freescale Semiconductor, Inc. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _FSL_PORTALS_H_ +#define _FSL_PORTALS_H_ + +/* entries must be in order and contiguous */ +enum fsl_dpaa_dev { +	FSL_HW_PORTAL_SEC, +#ifdef CONFIG_SYS_DPAA_FMAN +	FSL_HW_PORTAL_FMAN1, +#if (CONFIG_SYS_NUM_FMAN == 2) +	FSL_HW_PORTAL_FMAN2, +#endif +#endif +#ifdef CONFIG_SYS_DPAA_PME +	FSL_HW_PORTAL_PME, +#endif +}; + +struct qportal_info { +	u16	dliodn;	/* DQRR LIODN */ +	u16	fliodn;	/* frame data LIODN */ +	u16	liodn_offset; +	u8	sdest; +}; + +#define SET_QP_INFO(dqrr, fdata, off, dest) \ +	{ .dliodn = dqrr, .fliodn = fdata, .liodn_offset = off, .sdest = dest } + +extern int get_dpaa_liodn(enum fsl_dpaa_dev dpaa_dev, +			  u32 *liodns, int liodn_offset); +extern void setup_portals(void); +extern void fdt_fixup_qportals(void *blob); + +extern struct qportal_info qp_info[]; +extern void fdt_portal(void *blob, const char *compat, const char *container, +			u64 addr, u32 size); + +#endif diff --git a/arch/powerpc/include/asm/fsl_serdes.h b/arch/powerpc/include/asm/fsl_serdes.h index c7877b91a..85518eb6e 100644 --- a/arch/powerpc/include/asm/fsl_serdes.h +++ b/arch/powerpc/include/asm/fsl_serdes.h @@ -32,8 +32,15 @@ enum srds_prtcl {  	SATA2,  	SRIO1,  	SRIO2, -	SGMII_FM1, -	SGMII_FM2, +	SGMII_FM1_DTSEC1, +	SGMII_FM1_DTSEC2, +	SGMII_FM1_DTSEC3, +	SGMII_FM1_DTSEC4, +	SGMII_FM1_DTSEC5, +	SGMII_FM2_DTSEC1, +	SGMII_FM2_DTSEC2, +	SGMII_FM2_DTSEC3, +	SGMII_FM2_DTSEC4,  	SGMII_TSEC1,  	SGMII_TSEC2,  	SGMII_TSEC3, diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index b1d219b7a..c1382c8c5 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -32,6 +32,7 @@  #include <asm/fsl_dma.h>  #include <asm/fsl_i2c.h>  #include <asm/fsl_lbc.h> +#include <asm/fsl_fman.h>  typedef struct ccsr_local {  	u32	ccsrbarh;	/* CCSR Base Addr High */ @@ -172,7 +173,17 @@ typedef struct ccsr_ddr {  	u32	ddr_sr_cntr;		/* self refresh counter */  	u32	ddr_sdram_rcw_1;	/* Control Words 1 */  	u32	ddr_sdram_rcw_2;	/* Control Words 2 */ -	u8	res8_1b[2456]; +	u8	reg_1ab[8]; +	u32	ddr_wrlvl_cntl_2;	/* write leveling control 2 */ +	u32	ddr_wrlvl_cntl_3;	/* write leveling control 3 */ +	u8	res8_1b[104]; +	u32	sdram_mode_3;		/* SDRAM Mode Configuration 3 */ +	u32	sdram_mode_4;		/* SDRAM Mode Configuration 4 */ +	u32	sdram_mode_5;		/* SDRAM Mode Configuration 5 */ +	u32	sdram_mode_6;		/* SDRAM Mode Configuration 6 */ +	u32	sdram_mode_7;		/* SDRAM Mode Configuration 7 */ +	u32	sdram_mode_8;		/* SDRAM Mode Configuration 8 */ +	u8	res8_1ba[0x908];  	u32	ddr_dsr1;		/* Debug Status 1 */  	u32	ddr_dsr2;		/* Debug Status 2 */  	u32	ddr_cdr1;		/* Control Driver 1 */ @@ -180,7 +191,21 @@ typedef struct ccsr_ddr {  	u8	res8_1c[200];  	u32	ip_rev1;		/* IP Block Revision 1 */  	u32	ip_rev2;		/* IP Block Revision 2 */ -	u8	res8_2[512]; +	u32	eor;			/* Enhanced Optimization Register */ +	u8	res8_2[252]; +	u32	mtcr;			/* Memory Test Control Register */ +	u8	res8_3[28]; +	u32	mtp1;			/* Memory Test Pattern 1 */ +	u32	mtp2;			/* Memory Test Pattern 2 */ +	u32	mtp3;			/* Memory Test Pattern 3 */ +	u32	mtp4;			/* Memory Test Pattern 4 */ +	u32	mtp5;			/* Memory Test Pattern 5 */ +	u32	mtp6;			/* Memory Test Pattern 6 */ +	u32	mtp7;			/* Memory Test Pattern 7 */ +	u32	mtp8;			/* Memory Test Pattern 8 */ +	u32	mtp9;			/* Memory Test Pattern 9 */ +	u32	mtp10;			/* Memory Test Pattern 10 */ +	u8	res8_4[184];  	u32	data_err_inject_hi;	/* Data Path Err Injection Mask High */  	u32	data_err_inject_lo;	/* Data Path Err Injection Mask Low */  	u32	ecc_err_inject;		/* Data Path Err Injection Mask ECC */ @@ -218,6 +243,9 @@ typedef struct ccsr_ddr {  	u8	res12[184];  } ccsr_ddr_t; +#define DDR_EOR_RD_BDW_OPT_DIS	0x80000000 /* Read BDW Opt. disable */ +#define DDR_EOR_ADDR_HASH_EN	0x40000000 /* Address hash enabled */ +  /* I2C Registers */  typedef struct ccsr_i2c {  	struct fsl_i2c	i2c[1]; @@ -732,6 +760,8 @@ typedef struct ccsr_pic {  	u32	eoi;		/* End Of IRQ */  	u8	res9[3916];  	u32	frr;		/* Feature Reporting */ +#define MPC85xx_PICFRR_NCPU_MASK	0x00001f00 +#define MPC85xx_PICFRR_NCPU_SHIFT	8  	u8	res10[28];  	u32	gcr;		/* Global Configuration */  #define MPC85xx_PICGCR_RST	0x80000000 @@ -1609,6 +1639,7 @@ typedef struct ccsr_gur {  #define FSL_CORENET_DEVDISR_PCIE1	0x80000000  #define FSL_CORENET_DEVDISR_PCIE2	0x40000000  #define FSL_CORENET_DEVDISR_PCIE3	0x20000000 +#define FSL_CORENET_DEVDISR_PCIE4	0x10000000  #define FSL_CORENET_DEVDISR_RMU		0x08000000  #define FSL_CORENET_DEVDISR_SRIO1	0x04000000  #define FSL_CORENET_DEVDISR_SRIO2	0x02000000 @@ -1618,6 +1649,8 @@ typedef struct ccsr_gur {  #define FSL_CORENET_DEVDISR_DDR2	0x00080000  #define FSL_CORENET_DEVDISR_DBG		0x00010000  #define FSL_CORENET_DEVDISR_NAL		0x00008000 +#define FSL_CORENET_DEVDISR_SATA1	0x00004000 +#define FSL_CORENET_DEVDISR_SATA2	0x00002000  #define FSL_CORENET_DEVDISR_ELBC	0x00001000  #define FSL_CORENET_DEVDISR_USB1	0x00000800  #define FSL_CORENET_DEVDISR_USB2	0x00000400 @@ -1638,12 +1671,14 @@ typedef struct ccsr_gur {  #define FSL_CORENET_DEVDISR2_DTSEC1_2	0x00400000  #define FSL_CORENET_DEVDISR2_DTSEC1_3	0x00200000  #define FSL_CORENET_DEVDISR2_DTSEC1_4	0x00100000 +#define FSL_CORENET_DEVDISR2_DTSEC1_5	0x00080000  #define FSL_CORENET_DEVDISR2_FM2	0x00020000  #define FSL_CORENET_DEVDISR2_10GEC2	0x00010000  #define FSL_CORENET_DEVDISR2_DTSEC2_1	0x00008000  #define FSL_CORENET_DEVDISR2_DTSEC2_2	0x00004000  #define FSL_CORENET_DEVDISR2_DTSEC2_3	0x00002000  #define FSL_CORENET_DEVDISR2_DTSEC2_4	0x00001000 +#define FSL_CORENET_NUM_DEVDISR		2  	u8	res7[8];  	u32	powmgtcsr;	/* Power management status & control */  	u8	res8[12]; @@ -1672,9 +1707,18 @@ typedef struct ccsr_gur {  #define FSL_CORENET_RCWSR5_DDR_SYNC		0x00000080  #define FSL_CORENET_RCWSR5_DDR_SYNC_SHIFT		 7  #define FSL_CORENET_RCWSR5_SRDS_EN		0x00002000 +#define FSL_CORENET_RCWSRn_SRDS_LPD_B2		0x3c000000 /* bits 162..165 */ +#define FSL_CORENET_RCWSRn_SRDS_LPD_B3		0x003c0000 /* bits 170..173 */  #define FSL_CORENET_RCWSR7_MCK_TO_PLAT_RAT	0x00400000  #define FSL_CORENET_RCWSR8_HOST_AGT_B1		0x00e00000  #define FSL_CORENET_RCWSR8_HOST_AGT_B2		0x00100000 +#define FSL_CORENET_RCWSR11_EC1			0x00c00000 /* bits 360..361 */ +#define FSL_CORENET_RCWSR11_EC1_FM1_DTSEC1	0x00000000 +#define FSL_CORENET_RCWSR11_EC1_FM1_USB1	0x00800000 +#define FSL_CORENET_RCWSR11_EC2			0x001c0000 /* bits 363..365 */ +#define FSL_CORENET_RCWSR11_EC2_FM2_DTSEC1	0x00000000 +#define FSL_CORENET_RCWSR11_EC2_FM1_DTSEC2	0x00080000 +#define FSL_CORENET_RCWSR11_EC2_USB2		0x00100000  	u8	res18[192];  	u32	scratchrw[4];	/* Scratch Read/Write */  	u8	res19[240]; @@ -1698,10 +1742,15 @@ typedef struct ccsr_gur {  	u32	sdmmc2liodnr;	/* SD/MMC 2 LIODN */  	u32	sdmmc3liodnr;	/* SD/MMC 3 LIODN */  	u32	sdmmc4liodnr;	/* SD/MMC 4 LIODN */ -	u32	rmuliodnr;	/* RIO Message Unit LIODN */ -	u32	rduliodnr;	/* RIO Doorbell Unit LIODN */ -	u32	rpwuliodnr;	/* RIO Port Write Unit LIODN */ -	u8	res22[52]; +	u32	rio1maintliodnr;/* RIO 1 Maintenance LIODN */ +	u32	rio2maintliodnr;/* RIO 2 Maintenance LIODN */ +	u32	rio3maintliodnr;/* RIO 3 Maintenance LIODN */ +	u32	rio4maintliodnr;/* RIO 4 Maintenance LIODN */ +	u32	sata1liodnr;	/* SATA 1 LIODN */ +	u32	sata2liodnr;	/* SATA 2 LIODN */ +	u32	sata3liodnr;	/* SATA 3 LIODN */ +	u32	sata4liodnr;	/* SATA 4 LIODN */ +	u8	res22[32];  	u32	dma1liodnr;	/* DMA 1 LIODN */  	u32	dma2liodnr;	/* DMA 2 LIODN */  	u32	dma3liodnr;	/* DMA 3 LIODN */ @@ -1736,6 +1785,12 @@ typedef struct ccsr_gur {  	u8	res37[380];  } ccsr_gur_t; +/* + * On p4080 we have an LIODN for msg unit (rmu) but not maintenance + * everything after has RMan thus msg unit LIODN is used for maintenance + */ +#define rmuliodnr rio1maintliodnr +  typedef struct ccsr_clk {  	u32	clkc0csr;	/* Core 0 Clock control/status */  	u8	res1[0x1c]; @@ -2004,38 +2059,125 @@ enum {  /* Security Engine Block (MS = Most Sig., LS = Least Sig.) */  #if CONFIG_SYS_FSL_SEC_COMPAT >= 4  typedef struct ccsr_sec { -	u8	res1[0xfa0]; +	u32	res0; +	u32	mcfgr;		/* Master CFG Register */ +	u8	res1[0x8]; +	struct { +		u32	ms;	/* Job Ring LIODN Register, MS */ +		u32	ls;	/* Job Ring LIODN Register, LS */ +	} jqliodnr[4]; +	u8	res2[0x30]; +	struct { +		u32	ms;	/* RTIC LIODN Register, MS */ +		u32	ls;	/* RTIC LIODN Register, LS */ +	} rticliodnr[4]; +	u8	res3[0x1c]; +	u32	decorr;		/* DECO Request Register */ +	struct { +		u32	ms;	/* DECO LIODN Register, MS */ +		u32	ls;	/* DECO LIODN Register, LS */ +	} decoliodnr[5]; +	u8	res4[0x58]; +	u32	dar;		/* DECO Avail Register */ +	u32	drr;		/* DECO Reset Register */ +	u8	res5[0xe78];  	u32	crnr_ms;	/* CHA Revision Number Register, MS */  	u32	crnr_ls;	/* CHA Revision Number Register, LS */  	u32	ctpr_ms;	/* Compile Time Parameters Register, MS */ -#define SEC_CTPR_MS_AXI_LIODN		0x08000000 -#define SEC_CTPR_MS_QI			0x02000000  	u32	ctpr_ls;	/* Compile Time Parameters Register, LS */ -	u8	res2[0x10]; +	u8	res6[0x10];  	u32	far_ms;		/* Fault Address Register, MS */  	u32	far_ls;		/* Fault Address Register, LS */  	u32	falr;		/* Fault Address LIODN Register */  	u32	fadr;		/* Fault Address Detail Register */ -	u8	res3[0x4]; +	u8	res7[0x4];  	u32	csta;		/* CAAM Status Register */ -	u8	res4[0x8]; +	u8	res8[0x8];  	u32	rvid;		/* Run Time Integrity Checking Version ID Reg.*/ -#define SEC_RVID_MA			0x0f000000  	u32	ccbvid;		/* CHA Cluster Block Version ID Register */  	u32	chavid_ms;	/* CHA Version ID Register, MS */  	u32	chavid_ls;	/* CHA Version ID Register, LS */  	u32	chanum_ms;	/* CHA Number Register, MS */ +	u32	chanum_ls;	/* CHA Number Register, LS */ +	u32	secvid_ms;	/* SEC Version ID Register, MS */ +	u32	secvid_ls;	/* SEC Version ID Register, LS */ +	u8	res9[0x6020]; +	u32	qilcr_ms;	/* Queue Interface LIODN CFG Register, MS */ +	u32	qilcr_ls;	/* Queue Interface LIODN CFG Register, LS */ +	u8	res10[0x8fd8]; +} ccsr_sec_t; + +#define SEC_CTPR_MS_AXI_LIODN		0x08000000 +#define SEC_CTPR_MS_QI			0x02000000 +#define SEC_RVID_MA			0x0f000000  #define SEC_CHANUM_MS_JQNUM_MASK	0xf0000000  #define SEC_CHANUM_MS_JQNUM_SHIFT	28  #define SEC_CHANUM_MS_DECONUM_MASK	0x0f000000  #define SEC_CHANUM_MS_DECONUM_SHIFT	24 -	u32	chanum_ls;	/* CHA Number Register, LS */ -	u32	caamvid_ms;	/* CAAM Version ID Register, MS */ -	u32	caamvid_ls;	/* CAAM Version ID Register, LS */ -	u8	res5[0xf000]; -} ccsr_sec_t;  #endif +typedef struct ccsr_qman { +	struct { +		u32	qcsp_lio_cfg;	/* 0x0 - SW Portal n LIO cfg */ +		u32	qcsp_io_cfg;	/* 0x4 - SW Portal n IO cfg */ +		u32	res; +		u32	qcsp_dd_cfg;	/* 0xc - SW Portal n Dynamic Debug cfg */ +	} qcsp[32]; + +	/* Not actually reserved, but irrelevant to u-boot */ +	u8	res[0xbf8 - 0x200]; +	u32	ip_rev_1; +	u32	ip_rev_2; +	u32	fqd_bare;	/* FQD Extended Base Addr Register */ +	u32	fqd_bar;	/* FQD Base Addr Register */ +	u8	res1[0x8]; +	u32	fqd_ar;		/* FQD Attributes Register */ +	u8	res2[0xc]; +	u32	pfdr_bare;	/* PFDR Extended Base Addr Register */ +	u32	pfdr_bar;	/* PFDR Base Addr Register */ +	u8	res3[0x8]; +	u32	pfdr_ar;	/* PFDR Attributes Register */ +	u8	res4[0x4c]; +	u32	qcsp_bare;	/* QCSP Extended Base Addr Register */ +	u32	qcsp_bar;	/* QCSP Base Addr Register */ +	u8	res5[0x78]; +	u32	ci_sched_cfg;	/* Initiator Scheduling Configuration */ +	u32	srcidr;		/* Source ID Register */ +	u32	liodnr;		/* LIODN Register */ +	u8	res6[4]; +	u32	ci_rlm_cfg;	/* Initiator Read Latency Monitor Cfg */ +	u32	ci_rlm_avg;	/* Initiator Read Latency Monitor Avg */ +	u8	res7[0x2e8]; +} ccsr_qman_t; + +typedef struct ccsr_bman { +	/* Not actually reserved, but irrelevant to u-boot */ +	u8	res[0xbf8]; +	u32	ip_rev_1; +	u32	ip_rev_2; +	u32	fbpr_bare;	/* FBPR Extended Base Addr Register */ +	u32	fbpr_bar;	/* FBPR Base Addr Register */ +	u8	res1[0x8]; +	u32	fbpr_ar;	/* FBPR Attributes Register */ +	u8	res2[0xf0]; +	u32	srcidr;		/* Source ID Register */ +	u32	liodnr;		/* LIODN Register */ +	u8	res7[0x2f4]; +} ccsr_bman_t; + +typedef struct ccsr_pme { +	u8	res0[0x804]; +	u32	liodnbr;	/* LIODN Base Register */ +	u8	res1[0x1f8]; +	u32	srcidr;		/* Source ID Register */ +	u8	res2[8]; +	u32	liodnr;		/* LIODN Register */ +	u8	res3[0x1e8]; +	u32	pm_ip_rev_1;	/* PME IP Block Revision Reg 1*/ +	u32	pm_ip_rev_2;	/* PME IP Block Revision Reg 1*/ +	u8	res4[0x400]; +} ccsr_pme_t; +  #ifdef CONFIG_FSL_CORENET  #define CONFIG_SYS_FSL_CORENET_CCM_OFFSET	0x0000  #define CONFIG_SYS_MPC85xx_DDR_OFFSET		0x8000 @@ -2044,16 +2186,41 @@ typedef struct ccsr_sec {  #define CONFIG_SYS_FSL_CORENET_RCPM_OFFSET	0xE2000  #define CONFIG_SYS_FSL_CORENET_SERDES_OFFSET	0xEA000  #define CONFIG_SYS_FSL_CPC_OFFSET		0x10000 -#define CONFIG_SYS_MPC85xx_DMA_OFFSET		0x100000 +#define CONFIG_SYS_MPC85xx_DMA1_OFFSET		0x100000 +#define CONFIG_SYS_MPC85xx_DMA2_OFFSET		0x101000 +#define CONFIG_SYS_MPC85xx_DMA_OFFSET		CONFIG_SYS_MPC85xx_DMA1_OFFSET  #define CONFIG_SYS_MPC85xx_ESPI_OFFSET		0x110000  #define CONFIG_SYS_MPC85xx_ESDHC_OFFSET		0x114000  #define CONFIG_SYS_MPC85xx_LBC_OFFSET		0x124000  #define CONFIG_SYS_MPC85xx_GPIO_OFFSET		0x130000 -#define CONFIG_SYS_MPC85xx_USB_OFFSET		0x210000 +#define CONFIG_SYS_MPC85xx_PCIE1_OFFSET		0x200000 +#define CONFIG_SYS_MPC85xx_PCIE2_OFFSET		0x201000 +#define CONFIG_SYS_MPC85xx_PCIE3_OFFSET		0x202000 +#define CONFIG_SYS_MPC85xx_PCIE4_OFFSET		0x203000 +#define CONFIG_SYS_MPC85xx_USB1_OFFSET		0x210000 +#define CONFIG_SYS_MPC85xx_USB2_OFFSET		0x211000 +#define CONFIG_SYS_MPC85xx_USB_OFFSET		CONFIG_SYS_MPC85xx_USB1_OFFSET +#define CONFIG_SYS_MPC85xx_SATA1_OFFSET		0x220000 +#define CONFIG_SYS_MPC85xx_SATA2_OFFSET		0x221000  #define CONFIG_SYS_FSL_SEC_OFFSET		0x300000 +#define CONFIG_SYS_FSL_CORENET_PME_OFFSET	0x316000  #define CONFIG_SYS_FSL_CORENET_QMAN_OFFSET	0x318000  #define CONFIG_SYS_FSL_CORENET_BMAN_OFFSET	0x31a000 -#define CONFIG_SYS_TSEC1_OFFSET			0x4e0000 /* FM1@DTSEC0 */ +#define CONFIG_SYS_FSL_FM1_OFFSET		0x400000 +#define CONFIG_SYS_FSL_FM1_RX0_1G_OFFSET	0x488000 +#define CONFIG_SYS_FSL_FM1_RX1_1G_OFFSET	0x489000 +#define CONFIG_SYS_FSL_FM1_RX2_1G_OFFSET	0x48a000 +#define CONFIG_SYS_FSL_FM1_RX3_1G_OFFSET	0x48b000 +#define CONFIG_SYS_FSL_FM1_RX4_1G_OFFSET	0x48c000 +#define CONFIG_SYS_FSL_FM1_RX0_10G_OFFSET	0x490000 +#define CONFIG_SYS_FSL_FM1_DTSEC1_OFFSET	0x4e0000 +#define CONFIG_SYS_FSL_FM2_OFFSET		0x500000 +#define CONFIG_SYS_FSL_FM2_RX0_1G_OFFSET	0x588000 +#define CONFIG_SYS_FSL_FM2_RX1_1G_OFFSET	0x589000 +#define CONFIG_SYS_FSL_FM2_RX2_1G_OFFSET	0x58a000 +#define CONFIG_SYS_FSL_FM2_RX3_1G_OFFSET	0x58b000 +#define CONFIG_SYS_FSL_FM2_RX4_1G_OFFSET	0x58c000 +#define CONFIG_SYS_FSL_FM2_RX0_10G_OFFSET	0x590000  #else  #define CONFIG_SYS_MPC85xx_ECM_OFFSET		0x0000  #define CONFIG_SYS_MPC85xx_DDR_OFFSET		0x2000 @@ -2098,6 +2265,8 @@ typedef struct ccsr_sec {  	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_CORENET_QMAN_OFFSET)  #define CONFIG_SYS_FSL_CORENET_BMAN_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_CORENET_BMAN_OFFSET) +#define CONFIG_SYS_FSL_CORENET_PME_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_CORENET_PME_OFFSET)  #define CONFIG_SYS_MPC85xx_GUTS_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_GUTS_OFFSET)  #define CONFIG_SYS_FSL_CORENET_CCM_ADDR \ @@ -2146,6 +2315,12 @@ typedef struct ccsr_sec {  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_USB_OFFSET)  #define CONFIG_SYS_FSL_SEC_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_SEC_OFFSET) +#define CONFIG_SYS_FSL_FM1_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_FM1_OFFSET) +#define CONFIG_SYS_FSL_FM1_DTSEC1_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_FM1_DTSEC1_OFFSET) +#define CONFIG_SYS_FSL_FM2_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_FM2_OFFSET)  #define CONFIG_SYS_PCI1_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCI1_OFFSET) @@ -2157,6 +2332,8 @@ typedef struct ccsr_sec {  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE2_OFFSET)  #define CONFIG_SYS_PCIE3_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE3_OFFSET) +#define CONFIG_SYS_PCIE4_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE4_OFFSET)  #define TSEC_BASE_ADDR		(CONFIG_SYS_IMMR + CONFIG_SYS_TSEC1_OFFSET)  #define MDIO_BASE_ADDR		(CONFIG_SYS_IMMR + CONFIG_SYS_MDIO1_OFFSET) diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h index 89f283a6c..84a1e2ec0 100644 --- a/arch/powerpc/include/asm/processor.h +++ b/arch/powerpc/include/asm/processor.h @@ -495,6 +495,7 @@  #define   L1CSR1_ICFI		0x00000002	/* Instruction Cache Flash Invalidate */  #define   L1CSR1_ICE		0x00000001	/* Instruction Cache Enable */  #define SPRN_L1CSR2	0x25e	/* L1 Data Cache Control and Status Register 2 */ +#define   L1CSR2_DCWS		0x40000000	/* Data Cache Write Shadow */  #define SPRN_L2CSR0	0x3f9	/* L2 Data Cache Control and Status Register 0 */  #define   L2CSR0_L2E		0x80000000	/* L2 Cache Enable */  #define   L2CSR0_L2PE		0x40000000	/* L2 Cache Parity/ECC Enable */  |