2009-07-31 15:37:45 +09:00
|
|
|
/*
|
powerpc/mpc85xx:Add BSC9131/BSC9130/BSC9231 Processor Support
- BSC9131 is integrated device that targets Femto base station market.
It combines Power Architecture e500v2 and DSP StarCore SC3850 core
technologies with MAPLE-B2F baseband acceleration processing elements.
- BSC9130 is exactly same as BSC9131 except that the max e500v2
core and DSP core frequencies are 800M(these are 1G in case of 9131).
- BSC9231 is similar to BSC9131 except no MAPLE
The BSC9131 SoC includes the following function and features:
. Power Architecture subsystem including a e500 processor with 256-Kbyte shared
L2 cache
. StarCore SC3850 DSP subsystem with a 512-Kbyte private L2 cache
. The Multi Accelerator Platform Engine for Femto BaseStation Baseband
Processing (MAPLE-B2F)
. A multi-standard baseband algorithm accelerator for Channel Decoding/Encoding,
Fourier Transforms, UMTS chip rate processing, LTE UP/DL Channel processing,
and CRC algorithms
. Consists of accelerators for Convolution, Filtering, Turbo Encoding,
Turbo Decoding, Viterbi decoding, Chiprate processing, and Matrix Inversion
operations
. DDR3/3L memory interface with 32-bit data width without ECC and 16-bit with
ECC, up to 400-MHz clock/800 MHz data rate
. Dedicated security engine featuring trusted boot
. DMA controller
. OCNDMA with four bidirectional channels
. Interfaces
. Two triple-speed Gigabit Ethernet controllers featuring network acceleration
including IEEE 1588. v2 hardware support and virtualization (eTSEC)
. eTSEC 1 supports RGMII/RMII
. eTSEC 2 supports RGMII
. High-speed USB 2.0 host and device controller with ULPI interface
. Enhanced secure digital (SD/MMC) host controller (eSDHC)
. Antenna interface controller (AIC), supporting three industry standard
JESD207/three custom ADI RF interfaces (two dual port and one single port)
and three MAXIM's MaxPHY serial interfaces
. ADI lanes support both full duplex FDD support and half duplex TDD support
. Universal Subscriber Identity Module (USIM) interface that facilitates
communication to SIM cards or Eurochip pre-paid phone cards
. TDM with one TDM port
. Two DUART, four eSPI, and two I2C controllers
. Integrated Flash memory controller (IFC)
. TDM with 256 channels
. GPIO
. Sixteen 32-bit timers
The DSP portion of the SoC consists of DSP core (SC3850) and various
accelerators pertaining to DSP operations.
This patch takes care of code pertaining to power side functionality only.
Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com>
Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
Signed-off-by: Akhil Goyal <Akhil.Goyal@freescale.com>
Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
Signed-off-by: Rajan Srivastava <rajan.srivastava@freescale.com>
Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
2012-04-25 05:16:49 +09:00
|
|
|
* Copyright 2009-2012 Freescale Semiconductor, Inc.
|
2009-07-31 15:37:45 +09:00
|
|
|
*
|
2010-04-15 23:07:28 +09:00
|
|
|
* This file is derived from arch/powerpc/cpu/mpc85xx/cpu.c and
|
|
|
|
* arch/powerpc/cpu/mpc86xx/cpu.c. Basically this file contains
|
2010-04-13 12:28:09 +09:00
|
|
|
* cpu specific common code for 85xx/86xx processors.
|
2009-07-31 15:37:45 +09:00
|
|
|
* 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
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
#include <common.h>
|
|
|
|
#include <command.h>
|
|
|
|
#include <tsec.h>
|
2011-04-13 22:37:44 +09:00
|
|
|
#include <fm_eth.h>
|
2009-07-31 15:37:45 +09:00
|
|
|
#include <netdev.h>
|
|
|
|
#include <asm/cache.h>
|
|
|
|
#include <asm/io.h>
|
|
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
|
|
struct cpu_type cpu_type_list [] = {
|
|
|
|
#if defined(CONFIG_MPC85xx)
|
2009-07-31 15:38:14 +09:00
|
|
|
CPU_TYPE_ENTRY(8533, 8533, 1),
|
|
|
|
CPU_TYPE_ENTRY(8535, 8535, 1),
|
|
|
|
CPU_TYPE_ENTRY(8536, 8536, 1),
|
|
|
|
CPU_TYPE_ENTRY(8540, 8540, 1),
|
|
|
|
CPU_TYPE_ENTRY(8541, 8541, 1),
|
|
|
|
CPU_TYPE_ENTRY(8543, 8543, 1),
|
|
|
|
CPU_TYPE_ENTRY(8544, 8544, 1),
|
|
|
|
CPU_TYPE_ENTRY(8545, 8545, 1),
|
2012-07-07 07:10:33 +09:00
|
|
|
CPU_TYPE_ENTRY(8547, 8547, 1),
|
2009-07-31 15:38:14 +09:00
|
|
|
CPU_TYPE_ENTRY(8548, 8548, 1),
|
|
|
|
CPU_TYPE_ENTRY(8555, 8555, 1),
|
|
|
|
CPU_TYPE_ENTRY(8560, 8560, 1),
|
|
|
|
CPU_TYPE_ENTRY(8567, 8567, 1),
|
|
|
|
CPU_TYPE_ENTRY(8568, 8568, 1),
|
|
|
|
CPU_TYPE_ENTRY(8569, 8569, 1),
|
|
|
|
CPU_TYPE_ENTRY(8572, 8572, 2),
|
2011-01-14 01:09:27 +09:00
|
|
|
CPU_TYPE_ENTRY(P1010, P1010, 1),
|
2009-08-20 22:27:45 +09:00
|
|
|
CPU_TYPE_ENTRY(P1011, P1011, 1),
|
2010-03-31 13:06:53 +09:00
|
|
|
CPU_TYPE_ENTRY(P1012, P1012, 1),
|
|
|
|
CPU_TYPE_ENTRY(P1013, P1013, 1),
|
2011-01-14 01:10:05 +09:00
|
|
|
CPU_TYPE_ENTRY(P1014, P1014, 1),
|
2011-02-04 13:14:19 +09:00
|
|
|
CPU_TYPE_ENTRY(P1017, P1017, 1),
|
2009-07-31 15:38:27 +09:00
|
|
|
CPU_TYPE_ENTRY(P1020, P1020, 2),
|
2010-03-31 13:06:53 +09:00
|
|
|
CPU_TYPE_ENTRY(P1021, P1021, 2),
|
|
|
|
CPU_TYPE_ENTRY(P1022, P1022, 2),
|
2011-02-04 13:14:19 +09:00
|
|
|
CPU_TYPE_ENTRY(P1023, P1023, 2),
|
2011-02-06 04:45:07 +09:00
|
|
|
CPU_TYPE_ENTRY(P1024, P1024, 2),
|
|
|
|
CPU_TYPE_ENTRY(P1025, P1025, 2),
|
2009-08-20 22:27:45 +09:00
|
|
|
CPU_TYPE_ENTRY(P2010, P2010, 1),
|
|
|
|
CPU_TYPE_ENTRY(P2020, P2020, 2),
|
2010-06-02 00:29:11 +09:00
|
|
|
CPU_TYPE_ENTRY(P2040, P2040, 4),
|
2011-05-13 15:16:07 +09:00
|
|
|
CPU_TYPE_ENTRY(P2041, P2041, 4),
|
2010-01-28 01:26:46 +09:00
|
|
|
CPU_TYPE_ENTRY(P3041, P3041, 4),
|
2009-03-19 16:39:17 +09:00
|
|
|
CPU_TYPE_ENTRY(P4040, P4040, 4),
|
|
|
|
CPU_TYPE_ENTRY(P4080, P4080, 8),
|
2009-10-22 03:32:58 +09:00
|
|
|
CPU_TYPE_ENTRY(P5010, P5010, 1),
|
|
|
|
CPU_TYPE_ENTRY(P5020, P5020, 2),
|
powerpc/85xx: Add P5040 processor support
Add support for the Freescale P5040 SOC, which is similar to the P5020.
Features of the P5040 are:
Four P5040 single-threaded e5500 cores built
Up to 2.4 GHz with 64-bit ISA support
Three levels of instruction: user, supervisor, hypervisor
CoreNet platform cache (CPC)
2.0 MB configures as dual 1 MB blocks hierarchical interconnect fabric
Two 64-bit DDR3/3L SDRAM memory controllers with ECC and interleaving
support Up to 1600MT/s
Memory pre-fetch engine
DPAA incorporating acceleration for the following functions
Packet parsing, classification, and distribution (FMAN)
Queue management for scheduling, packet sequencing and
congestion management (QMAN)
Hardware buffer management for buffer allocation and
de-allocation (BMAN)
Cryptography acceleration (SEC 5.2) at up to 40 Gbps SerDes
20 lanes at up to 5 Gbps
Supports SGMII, XAUI, PCIe rev1.1/2.0, SATA Ethernet interfaces
Two 10 Gbps Ethernet MACs
Ten 1 Gbps Ethernet MACs
High-speed peripheral interfaces
Two PCI Express 2.0/3.0 controllers
Additional peripheral interfaces
Two serial ATA (SATA 2.0) controllers
Two high-speed USB 2.0 controllers with integrated PHY
Enhanced secure digital host controller (SD/MMC/eMMC)
Enhanced serial peripheral interface (eSPI)
Two I2C controllers
Four UARTs
Integrated flash controller supporting NAND and NOR flash
DMA
Dual four channel
Support for hardware virtualization and partitioning enforcement
Extra privileged level for hypervisor support
QorIQ Trust Architecture 1.1
Secure boot, secure debug, tamper detection, volatile key storage
Signed-off-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
2012-10-05 20:09:19 +09:00
|
|
|
CPU_TYPE_ENTRY(P5021, P5021, 2),
|
|
|
|
CPU_TYPE_ENTRY(P5040, P5040, 4),
|
powerpc/mpc85xx:Add BSC9131/BSC9130/BSC9231 Processor Support
- BSC9131 is integrated device that targets Femto base station market.
It combines Power Architecture e500v2 and DSP StarCore SC3850 core
technologies with MAPLE-B2F baseband acceleration processing elements.
- BSC9130 is exactly same as BSC9131 except that the max e500v2
core and DSP core frequencies are 800M(these are 1G in case of 9131).
- BSC9231 is similar to BSC9131 except no MAPLE
The BSC9131 SoC includes the following function and features:
. Power Architecture subsystem including a e500 processor with 256-Kbyte shared
L2 cache
. StarCore SC3850 DSP subsystem with a 512-Kbyte private L2 cache
. The Multi Accelerator Platform Engine for Femto BaseStation Baseband
Processing (MAPLE-B2F)
. A multi-standard baseband algorithm accelerator for Channel Decoding/Encoding,
Fourier Transforms, UMTS chip rate processing, LTE UP/DL Channel processing,
and CRC algorithms
. Consists of accelerators for Convolution, Filtering, Turbo Encoding,
Turbo Decoding, Viterbi decoding, Chiprate processing, and Matrix Inversion
operations
. DDR3/3L memory interface with 32-bit data width without ECC and 16-bit with
ECC, up to 400-MHz clock/800 MHz data rate
. Dedicated security engine featuring trusted boot
. DMA controller
. OCNDMA with four bidirectional channels
. Interfaces
. Two triple-speed Gigabit Ethernet controllers featuring network acceleration
including IEEE 1588. v2 hardware support and virtualization (eTSEC)
. eTSEC 1 supports RGMII/RMII
. eTSEC 2 supports RGMII
. High-speed USB 2.0 host and device controller with ULPI interface
. Enhanced secure digital (SD/MMC) host controller (eSDHC)
. Antenna interface controller (AIC), supporting three industry standard
JESD207/three custom ADI RF interfaces (two dual port and one single port)
and three MAXIM's MaxPHY serial interfaces
. ADI lanes support both full duplex FDD support and half duplex TDD support
. Universal Subscriber Identity Module (USIM) interface that facilitates
communication to SIM cards or Eurochip pre-paid phone cards
. TDM with one TDM port
. Two DUART, four eSPI, and two I2C controllers
. Integrated Flash memory controller (IFC)
. TDM with 256 channels
. GPIO
. Sixteen 32-bit timers
The DSP portion of the SoC consists of DSP core (SC3850) and various
accelerators pertaining to DSP operations.
This patch takes care of code pertaining to power side functionality only.
Signed-off-by: Ramneek Mehresh <ramneek.mehresh@freescale.com>
Signed-off-by: Priyanka Jain <Priyanka.Jain@freescale.com>
Signed-off-by: Akhil Goyal <Akhil.Goyal@freescale.com>
Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
Signed-off-by: Rajan Srivastava <rajan.srivastava@freescale.com>
Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
2012-04-25 05:16:49 +09:00
|
|
|
CPU_TYPE_ENTRY(BSC9130, 9130, 1),
|
|
|
|
CPU_TYPE_ENTRY(BSC9131, 9131, 1),
|
2009-07-31 15:37:45 +09:00
|
|
|
#elif defined(CONFIG_MPC86xx)
|
2009-07-31 15:38:14 +09:00
|
|
|
CPU_TYPE_ENTRY(8610, 8610, 1),
|
|
|
|
CPU_TYPE_ENTRY(8641, 8641, 2),
|
|
|
|
CPU_TYPE_ENTRY(8641D, 8641D, 2),
|
2009-07-31 15:37:45 +09:00
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
2012-08-17 17:20:22 +09:00
|
|
|
#ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
|
|
|
|
u32 compute_ppc_cpumask(void)
|
|
|
|
{
|
|
|
|
ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
|
|
|
int i = 0, count = 0;
|
|
|
|
u32 cluster, mask = 0;
|
|
|
|
|
|
|
|
do {
|
|
|
|
int j;
|
|
|
|
cluster = in_be32(&gur->tp_cluster[i++].lower);
|
|
|
|
for (j = 0; j < 4; j++) {
|
|
|
|
u32 idx = (cluster >> (j*8)) & TP_CLUSTER_INIT_MASK;
|
|
|
|
u32 type = in_be32(&gur->tp_ityp[idx]);
|
|
|
|
|
|
|
|
if (type & TP_ITYP_AV) {
|
|
|
|
if (TP_ITYP_TYPE(type) == TP_ITYP_TYPE_PPC)
|
|
|
|
mask |= 1 << count;
|
|
|
|
}
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
} while ((cluster & TP_CLUSTER_EOC) != TP_CLUSTER_EOC);
|
|
|
|
|
|
|
|
return mask;
|
|
|
|
}
|
|
|
|
#else /* CONFIG_SYS_FSL_QORIQ_CHASSIS2 */
|
|
|
|
/*
|
|
|
|
* Before chassis genenration 2, the cpumask should be hard-coded.
|
|
|
|
* In case of cpu type unknown or cpumask unset, use 1 as fail save.
|
|
|
|
*/
|
|
|
|
#define compute_ppc_cpumask() 1
|
|
|
|
#endif /* CONFIG_SYS_FSL_QORIQ_CHASSIS2 */
|
|
|
|
|
|
|
|
struct cpu_type cpu_type_unknown = CPU_TYPE_ENTRY(Unknown, Unknown, 0);
|
2009-09-02 17:05:21 +09:00
|
|
|
|
2009-07-31 15:37:45 +09:00
|
|
|
struct cpu_type *identify_cpu(u32 ver)
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
for (i = 0; i < ARRAY_SIZE(cpu_type_list); i++) {
|
|
|
|
if (cpu_type_list[i].soc_ver == ver)
|
|
|
|
return &cpu_type_list[i];
|
|
|
|
}
|
2009-09-02 17:05:21 +09:00
|
|
|
return &cpu_type_unknown;
|
2009-07-31 15:37:45 +09:00
|
|
|
}
|
|
|
|
|
2011-08-06 06:15:24 +09:00
|
|
|
#define MPC8xxx_PICFRR_NCPU_MASK 0x00001f00
|
|
|
|
#define MPC8xxx_PICFRR_NCPU_SHIFT 8
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return a 32-bit mask indicating which cores are present on this SOC.
|
|
|
|
*/
|
|
|
|
u32 cpu_mask()
|
|
|
|
{
|
|
|
|
ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR;
|
|
|
|
struct cpu_type *cpu = gd->cpu;
|
|
|
|
|
|
|
|
/* better to query feature reporting register than just assume 1 */
|
|
|
|
if (cpu == &cpu_type_unknown)
|
|
|
|
return ((in_be32(&pic->frr) & MPC8xxx_PICFRR_NCPU_MASK) >>
|
|
|
|
MPC8xxx_PICFRR_NCPU_SHIFT) + 1;
|
|
|
|
|
2012-08-17 17:20:22 +09:00
|
|
|
if (cpu->num_cores == 0)
|
|
|
|
return compute_ppc_cpumask();
|
|
|
|
|
2011-08-06 06:15:24 +09:00
|
|
|
return cpu->mask;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return the number of cores on this SOC.
|
|
|
|
*/
|
2009-07-31 15:38:14 +09:00
|
|
|
int cpu_numcores() {
|
2010-07-15 09:47:29 +09:00
|
|
|
struct cpu_type *cpu = gd->cpu;
|
|
|
|
|
2012-08-17 17:20:22 +09:00
|
|
|
/*
|
|
|
|
* Report # of cores in terms of the cpu_mask if we haven't
|
|
|
|
* figured out how many there are yet
|
|
|
|
*/
|
|
|
|
if (cpu->num_cores == 0)
|
|
|
|
return hweight32(cpu_mask());
|
2010-07-15 09:47:29 +09:00
|
|
|
|
2009-07-31 15:38:14 +09:00
|
|
|
return cpu->num_cores;
|
|
|
|
}
|
|
|
|
|
2011-08-06 06:15:24 +09:00
|
|
|
/*
|
|
|
|
* Check if the given core ID is valid
|
|
|
|
*
|
|
|
|
* Returns zero if it isn't, 1 if it is.
|
|
|
|
*/
|
|
|
|
int is_core_valid(unsigned int core)
|
|
|
|
{
|
2012-08-17 17:20:22 +09:00
|
|
|
return !!((1 << core) & cpu_mask());
|
2011-08-06 06:15:24 +09:00
|
|
|
}
|
|
|
|
|
2009-07-31 15:38:14 +09:00
|
|
|
int probecpu (void)
|
|
|
|
{
|
|
|
|
uint svr;
|
|
|
|
uint ver;
|
|
|
|
|
|
|
|
svr = get_svr();
|
|
|
|
ver = SVR_SOC_VER(svr);
|
|
|
|
|
|
|
|
gd->cpu = identify_cpu(ver);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2012-08-17 17:20:22 +09:00
|
|
|
/* Once in memory, compute mask & # cores once and save them off */
|
|
|
|
int fixup_cpu(void)
|
|
|
|
{
|
|
|
|
struct cpu_type *cpu = gd->cpu;
|
|
|
|
|
|
|
|
if (cpu->num_cores == 0) {
|
|
|
|
cpu->mask = cpu_mask();
|
|
|
|
cpu->num_cores = cpu_numcores();
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2009-07-31 15:37:45 +09:00
|
|
|
/*
|
|
|
|
* Initializes on-chip ethernet controllers.
|
|
|
|
* to override, implement board_eth_init()
|
|
|
|
*/
|
|
|
|
int cpu_eth_init(bd_t *bis)
|
|
|
|
{
|
|
|
|
#if defined(CONFIG_ETHER_ON_FCC)
|
|
|
|
fec_initialize(bis);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(CONFIG_UEC_ETH)
|
|
|
|
uec_standard_init(bis);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_MPC85XX_FEC)
|
|
|
|
tsec_standard_init(bis);
|
|
|
|
#endif
|
|
|
|
|
2011-04-13 22:37:44 +09:00
|
|
|
#ifdef CONFIG_FMAN_ENET
|
|
|
|
fm_standard_init(bis);
|
|
|
|
#endif
|
2009-07-31 15:37:45 +09:00
|
|
|
return 0;
|
|
|
|
}
|