|
|
|
/*
|
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>
13 years ago
|
|
|
* Copyright 2009-2012 Freescale Semiconductor, Inc.
|
|
|
|
*
|
|
|
|
* This file is derived from arch/powerpc/cpu/mpc85xx/cpu.c and
|
|
|
|
* arch/powerpc/cpu/mpc86xx/cpu.c. Basically this file contains
|
|
|
|
* cpu specific common code for 85xx/86xx processors.
|
|
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
#include <common.h>
|
|
|
|
#include <command.h>
|
|
|
|
#include <tsec.h>
|
|
|
|
#include <fm_eth.h>
|
|
|
|
#include <netdev.h>
|
|
|
|
#include <asm/cache.h>
|
|
|
|
#include <asm/io.h>
|
|
|
|
#include <vsc9953.h>
|
|
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
|
|
static struct cpu_type cpu_type_list[] = {
|
|
|
|
#if defined(CONFIG_MPC85xx)
|
|
|
|
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),
|
|
|
|
CPU_TYPE_ENTRY(8547, 8547, 1),
|
|
|
|
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),
|
|
|
|
CPU_TYPE_ENTRY(P1010, P1010, 1),
|
|
|
|
CPU_TYPE_ENTRY(P1011, P1011, 1),
|
|
|
|
CPU_TYPE_ENTRY(P1012, P1012, 1),
|
|
|
|
CPU_TYPE_ENTRY(P1013, P1013, 1),
|
|
|
|
CPU_TYPE_ENTRY(P1014, P1014, 1),
|
|
|
|
CPU_TYPE_ENTRY(P1017, P1017, 1),
|
|
|
|
CPU_TYPE_ENTRY(P1020, P1020, 2),
|
|
|
|
CPU_TYPE_ENTRY(P1021, P1021, 2),
|
|
|
|
CPU_TYPE_ENTRY(P1022, P1022, 2),
|
|
|
|
CPU_TYPE_ENTRY(P1023, P1023, 2),
|
|
|
|
CPU_TYPE_ENTRY(P1024, P1024, 2),
|
|
|
|
CPU_TYPE_ENTRY(P1025, P1025, 2),
|
|
|
|
CPU_TYPE_ENTRY(P2010, P2010, 1),
|
|
|
|
CPU_TYPE_ENTRY(P2020, P2020, 2),
|
|
|
|
CPU_TYPE_ENTRY(P2040, P2040, 4),
|
|
|
|
CPU_TYPE_ENTRY(P2041, P2041, 4),
|
|
|
|
CPU_TYPE_ENTRY(P3041, P3041, 4),
|
|
|
|
CPU_TYPE_ENTRY(P4040, P4040, 4),
|
|
|
|
CPU_TYPE_ENTRY(P4080, P4080, 8),
|
|
|
|
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>
12 years ago
|
|
|
CPU_TYPE_ENTRY(P5021, P5021, 2),
|
|
|
|
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(T4080, T4080, 4),
|
powerpc/mpc85xx: Add B4860 and variant SoCs
Add support for Freescale B4860 and variant SoCs. Features of B4860 are
(incomplete list):
Six fully-programmable StarCore SC3900 FVP subsystems, divided into three
clusters-each core runs up to 1.2 GHz, with an architecture highly
optimized for wireless base station applications
Four dual-thread e6500 Power Architecture processors organized in one
cluster-each core runs up to 1.8 GHz
Two DDR3/3L controllers for high-speed, industry-standard memory interface
each runs at up to 1866.67 MHz
MAPLE-B3 hardware acceleration-for forward error correction schemes
including Turbo or Viterbi decoding, Turbo encoding and rate matching,
MIMO MMSE equalization scheme, matrix operations, CRC insertion and
check, DFT/iDFT and FFT/iFFT calculations, PUSCH/PDSCH acceleration,
and UMTS chip rate acceleration
CoreNet fabric that fully supports coherency using MESI protocol between
the e6500 cores, SC3900 FVP cores, memories and external interfaces.
CoreNet fabric interconnect runs at 667 MHz and supports coherent and
non-coherent out of order transactions with prioritization and
bandwidth allocation amongst CoreNet endpoints.
Data Path Acceleration Architecture, which includes the following:
Frame Manager (FMan), which supports in-line packet parsing and general
classification to enable policing and QoS-based packet distribution
Queue Manager (QMan) and Buffer Manager (BMan), which allow offloading
of queue management, task management, load distribution, flow ordering,
buffer management, and allocation tasks from the cores
Security engine (SEC 5.3)-crypto-acceleration for protocols such as
IPsec, SSL, and 802.16
RapidIO manager (RMAN) - Support SRIO types 8, 9, 10, and 11 (inbound and
outbound). Supports types 5, 6 (outbound only)
Large internal cache memory with snooping and stashing capabilities for
bandwidth saving and high utilization of processor elements. The
9856-Kbyte internal memory space includes the following:
32 Kbyte L1 ICache per e6500/SC3900 core
32 Kbyte L1 DCache per e6500/SC3900 core
2048 Kbyte unified L2 cache for each SC3900 FVP cluster
2048 Kbyte unified L2 cache for the e6500 cluster
Two 512 Kbyte shared L3 CoreNet platform caches (CPC)
Sixteen 10-GHz SerDes lanes serving:
Two Serial RapidIO interfaces. Each supports up to 4 lanes and a total
of up to 8 lanes
Up to 8-lanes Common Public Radio Interface (CPRI) controller for glue-
less antenna connection
Two 10-Gbit Ethernet controllers (10GEC)
Six 1G/2.5-Gbit Ethernet controllers for network communications
PCI Express controller
Debug (Aurora)
Two OCeaN DMAs
Various system peripherals
182 32-bit timers
Signed-off-by: York Sun <yorksun@freescale.com>
Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
12 years ago
|
|
|
CPU_TYPE_ENTRY(B4860, B4860, 0),
|
|
|
|
CPU_TYPE_ENTRY(G4860, G4860, 0),
|
|
|
|
CPU_TYPE_ENTRY(B4440, B4440, 0),
|
|
|
|
CPU_TYPE_ENTRY(B4460, B4460, 0),
|
powerpc/mpc85xx: Add B4860 and variant SoCs
Add support for Freescale B4860 and variant SoCs. Features of B4860 are
(incomplete list):
Six fully-programmable StarCore SC3900 FVP subsystems, divided into three
clusters-each core runs up to 1.2 GHz, with an architecture highly
optimized for wireless base station applications
Four dual-thread e6500 Power Architecture processors organized in one
cluster-each core runs up to 1.8 GHz
Two DDR3/3L controllers for high-speed, industry-standard memory interface
each runs at up to 1866.67 MHz
MAPLE-B3 hardware acceleration-for forward error correction schemes
including Turbo or Viterbi decoding, Turbo encoding and rate matching,
MIMO MMSE equalization scheme, matrix operations, CRC insertion and
check, DFT/iDFT and FFT/iFFT calculations, PUSCH/PDSCH acceleration,
and UMTS chip rate acceleration
CoreNet fabric that fully supports coherency using MESI protocol between
the e6500 cores, SC3900 FVP cores, memories and external interfaces.
CoreNet fabric interconnect runs at 667 MHz and supports coherent and
non-coherent out of order transactions with prioritization and
bandwidth allocation amongst CoreNet endpoints.
Data Path Acceleration Architecture, which includes the following:
Frame Manager (FMan), which supports in-line packet parsing and general
classification to enable policing and QoS-based packet distribution
Queue Manager (QMan) and Buffer Manager (BMan), which allow offloading
of queue management, task management, load distribution, flow ordering,
buffer management, and allocation tasks from the cores
Security engine (SEC 5.3)-crypto-acceleration for protocols such as
IPsec, SSL, and 802.16
RapidIO manager (RMAN) - Support SRIO types 8, 9, 10, and 11 (inbound and
outbound). Supports types 5, 6 (outbound only)
Large internal cache memory with snooping and stashing capabilities for
bandwidth saving and high utilization of processor elements. The
9856-Kbyte internal memory space includes the following:
32 Kbyte L1 ICache per e6500/SC3900 core
32 Kbyte L1 DCache per e6500/SC3900 core
2048 Kbyte unified L2 cache for each SC3900 FVP cluster
2048 Kbyte unified L2 cache for the e6500 cluster
Two 512 Kbyte shared L3 CoreNet platform caches (CPC)
Sixteen 10-GHz SerDes lanes serving:
Two Serial RapidIO interfaces. Each supports up to 4 lanes and a total
of up to 8 lanes
Up to 8-lanes Common Public Radio Interface (CPRI) controller for glue-
less antenna connection
Two 10-Gbit Ethernet controllers (10GEC)
Six 1G/2.5-Gbit Ethernet controllers for network communications
PCI Express controller
Debug (Aurora)
Two OCeaN DMAs
Various system peripherals
182 32-bit timers
Signed-off-by: York Sun <yorksun@freescale.com>
Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Signed-off-by: Roy Zang <tie-fei.zang@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
12 years ago
|
|
|
CPU_TYPE_ENTRY(G4440, G4440, 0),
|
|
|
|
CPU_TYPE_ENTRY(B4420, B4420, 0),
|
|
|
|
CPU_TYPE_ENTRY(B4220, B4220, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1040, T1040, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1041, T1041, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1042, T1042, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1020, T1020, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1021, T1021, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1022, T1022, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1024, T1024, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1023, T1023, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1014, T1014, 0),
|
|
|
|
CPU_TYPE_ENTRY(T1013, T1013, 0),
|
|
|
|
CPU_TYPE_ENTRY(T2080, T2080, 0),
|
|
|
|
CPU_TYPE_ENTRY(T2081, T2081, 0),
|
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>
13 years ago
|
|
|
CPU_TYPE_ENTRY(BSC9130, 9130, 1),
|
|
|
|
CPU_TYPE_ENTRY(BSC9131, 9131, 1),
|
powerpc/mpc85xx: Add BSC9132/BSC9232 processor support
The BSC9132 is a highly integrated device that targets the evolving
Microcell, Picocell, and Enterprise-Femto base station market subsegments.
The BSC9132 device combines Power Architecture e500 and DSP StarCore SC3850
core technologies with MAPLE-B2P baseband acceleration processing elements
to address the need for a high performance, low cost, integrated solution
that handles all required processing layers without the need for an
external device except for an RF transceiver or, in a Micro base station
configuration, a host device that handles the L3/L4 and handover between
sectors.
The BSC9132 SoC includes the following function and features:
- Power Architecture subsystem including two e500 processors with
512-Kbyte shared L2 cache
- Two StarCore SC3850 DSP subsystems, each with a 512-Kbyte private L2
cache
- 32 Kbyte of shared M3 memory
- The Multi Accelerator Platform Engine for Pico BaseStation Baseband
Processing (MAPLE-B2P)
- Two DDR3/3L memory interfaces with 32-bit data width (40 bits including
ECC), up to 1333 MHz data rate
- Dedicated security engine featuring trusted boot
- Two DMA controllers
- OCNDMA with four bidirectional channels
- SysDMA with sixteen bidirectional channels
- Interfaces
- Four-lane SerDes PHY
- PCI Express controller complies with the PEX Specification-Rev 2.0
- Two Common Public Radio Interface (CPRI) controller lanes
- 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 four industry
standard JESD207/four custom ADI RF interfaces
- ADI lanes support both full duplex FDD support & half duplex TDD
- Universal Subscriber Identity Module (USIM) interface that
facilitates communication to SIM cards or Eurochip pre-paid phone
cards
- Two DUART, two eSPI, and two I2C controllers
- Integrated Flash memory controller (IFC)
- GPIO
- Sixteen 32-bit timers
Signed-off-by: Naveen Burmi <NaveenBurmi@freescale.com>
Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
Signed-off-by: Prabhakar Kushwaha <prabhakar@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
12 years ago
|
|
|
CPU_TYPE_ENTRY(BSC9132, 9132, 2),
|
|
|
|
CPU_TYPE_ENTRY(BSC9232, 9232, 2),
|
|
|
|
CPU_TYPE_ENTRY(C291, C291, 1),
|
|
|
|
CPU_TYPE_ENTRY(C292, C292, 1),
|
|
|
|
CPU_TYPE_ENTRY(C293, C293, 1),
|
|
|
|
#elif defined(CONFIG_MPC86xx)
|
|
|
|
CPU_TYPE_ENTRY(8610, 8610, 1),
|
|
|
|
CPU_TYPE_ENTRY(8641, 8641, 2),
|
|
|
|
CPU_TYPE_ENTRY(8641D, 8641D, 2),
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
|
|
|
|
#ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2
|
|
|
|
static inline u32 init_type(u32 cluster, int init_id)
|
|
|
|
{
|
|
|
|
ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
|
|
|
u32 idx = (cluster >> (init_id * 8)) & TP_CLUSTER_INIT_MASK;
|
|
|
|
u32 type = in_be32(&gur->tp_ityp[idx]);
|
|
|
|
|
|
|
|
if (type & TP_ITYP_AV)
|
|
|
|
return type;
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
u32 compute_ppc_cpumask(void)
|
|
|
|
{
|
|
|
|
ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
|
|
|
int i = 0, count = 0;
|
|
|
|
u32 cluster, type, mask = 0;
|
|
|
|
|
|
|
|
do {
|
|
|
|
int j;
|
|
|
|
cluster = in_be32(&gur->tp_cluster[i].lower);
|
|
|
|
for (j = 0; j < TP_INIT_PER_CLUSTER; j++) {
|
|
|
|
type = init_type(cluster, j);
|
|
|
|
if (type) {
|
|
|
|
if (TP_ITYP_TYPE(type) == TP_ITYP_TYPE_PPC)
|
|
|
|
mask |= 1 << count;
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
i++;
|
|
|
|
} while ((cluster & TP_CLUSTER_EOC) != TP_CLUSTER_EOC);
|
|
|
|
|
|
|
|
return mask;
|
|
|
|
}
|
|
|
|
|
powerpc/mpc85xx: Add DSP side awareness for Freescale Heterogeneous SoCs
The code provides framework for heterogeneous multicore chips based on StarCore
and Power Architecture which are chasis-2 compliant, like B4860 and B4420
It will make u-boot recognize all non-ppc cores and peripherals like
SC3900/DSP CPUs, MAPLE, CPRI and print their configuration in u-boot logs.
Example boot logs of B4860QDS:
U-Boot 2015.01-00232-geef6e36-dirty (Jan 19 2015 - 11:58:45)
CPU0: B4860E, Version: 2.2, (0x86880022)
Core: e6500, Version: 2.0, (0x80400120)
Clock Configuration:
CPU0:1600 MHz, CPU1:1600 MHz, CPU2:1600 MHz, CPU3:1600 MHz,
DSP CPU0:1200 MHz, DSP CPU1:1200 MHz, DSP CPU2:1200 MHz, DSP CPU3:1200 MHz,
DSP CPU4:1200 MHz, DSP CPU5:1200 MHz,
CCB:666.667 MHz,
DDR:933.333 MHz (1866.667 MT/s data rate) (Asynchronous), IFC:166.667 MHz
CPRI:600 MHz
MAPLE:600 MHz, MAPLE-ULB:800 MHz, MAPLE-eTVPE:1000 MHz
FMAN1: 666.667 MHz
QMAN: 333.333 MHz
Top level changes include:
(1) Top level CONFIG to identify HETEROGENUOUS clusters
(2) CONFIGS for SC3900/DSP components
(3) Global structures like "cpu_type" and "MPC85xx_SYS_INFO"
updated for dsp cores and other components
(3) APIs to get DSP num cores and their Mask like:
cpu_dsp_mask, cpu_num_dspcores etc same as that of PowerPC
(5) Code to fetch and print SC cores and other heterogenous
device's frequencies
(6) README added for the same
Signed-off-by: Shaveta Leekha <shaveta@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years ago
|
|
|
#ifdef CONFIG_HETROGENOUS_CLUSTERS
|
|
|
|
u32 compute_dsp_cpumask(void)
|
|
|
|
{
|
|
|
|
ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
|
|
|
int i = CONFIG_DSP_CLUSTER_START, count = 0;
|
|
|
|
u32 cluster, type, dsp_mask = 0;
|
|
|
|
|
|
|
|
do {
|
|
|
|
int j;
|
|
|
|
cluster = in_be32(&gur->tp_cluster[i].lower);
|
|
|
|
for (j = 0; j < TP_INIT_PER_CLUSTER; j++) {
|
|
|
|
type = init_type(cluster, j);
|
|
|
|
if (type) {
|
|
|
|
if (TP_ITYP_TYPE(type) == TP_ITYP_TYPE_SC)
|
|
|
|
dsp_mask |= 1 << count;
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
i++;
|
|
|
|
} while ((cluster & TP_CLUSTER_EOC) != TP_CLUSTER_EOC);
|
|
|
|
|
|
|
|
return dsp_mask;
|
|
|
|
}
|
|
|
|
|
|
|
|
int fsl_qoriq_dsp_core_to_cluster(unsigned int core)
|
|
|
|
{
|
|
|
|
ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
|
|
|
int count = 0, i = CONFIG_DSP_CLUSTER_START;
|
|
|
|
u32 cluster;
|
|
|
|
|
|
|
|
do {
|
|
|
|
int j;
|
|
|
|
cluster = in_be32(&gur->tp_cluster[i].lower);
|
|
|
|
for (j = 0; j < TP_INIT_PER_CLUSTER; j++) {
|
|
|
|
if (init_type(cluster, j)) {
|
|
|
|
if (count == core)
|
|
|
|
return i;
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
i++;
|
|
|
|
} while ((cluster & TP_CLUSTER_EOC) != TP_CLUSTER_EOC);
|
|
|
|
|
|
|
|
return -1; /* cannot identify the cluster */
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
int fsl_qoriq_core_to_cluster(unsigned int core)
|
|
|
|
{
|
|
|
|
ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
|
|
|
int i = 0, count = 0;
|
|
|
|
u32 cluster;
|
|
|
|
|
|
|
|
do {
|
|
|
|
int j;
|
|
|
|
cluster = in_be32(&gur->tp_cluster[i].lower);
|
|
|
|
for (j = 0; j < TP_INIT_PER_CLUSTER; j++) {
|
|
|
|
if (init_type(cluster, j)) {
|
|
|
|
if (count == core)
|
|
|
|
return i;
|
|
|
|
count++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
i++;
|
|
|
|
} while ((cluster & TP_CLUSTER_EOC) != TP_CLUSTER_EOC);
|
|
|
|
|
|
|
|
return -1; /* cannot identify the cluster */
|
|
|
|
}
|
|
|
|
|
|
|
|
#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
|
|
|
|
#define fsl_qoriq_core_to_cluster(x) x
|
|
|
|
#endif /* CONFIG_SYS_FSL_QORIQ_CHASSIS2 */
|
|
|
|
|
|
|
|
static struct cpu_type cpu_type_unknown = CPU_TYPE_ENTRY(Unknown, Unknown, 0);
|
|
|
|
|
|
|
|
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];
|
|
|
|
}
|
|
|
|
return &cpu_type_unknown;
|
|
|
|
}
|
|
|
|
|
|
|
|
#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.
|
|
|
|
*/
|
|
|
|
__weak u32 cpu_mask(void)
|
|
|
|
{
|
|
|
|
ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR;
|
|
|
|
struct cpu_type *cpu = gd->arch.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;
|
|
|
|
|
|
|
|
if (cpu->num_cores == 0)
|
|
|
|
return compute_ppc_cpumask();
|
|
|
|
|
|
|
|
return cpu->mask;
|
|
|
|
}
|
|
|
|
|
powerpc/mpc85xx: Add DSP side awareness for Freescale Heterogeneous SoCs
The code provides framework for heterogeneous multicore chips based on StarCore
and Power Architecture which are chasis-2 compliant, like B4860 and B4420
It will make u-boot recognize all non-ppc cores and peripherals like
SC3900/DSP CPUs, MAPLE, CPRI and print their configuration in u-boot logs.
Example boot logs of B4860QDS:
U-Boot 2015.01-00232-geef6e36-dirty (Jan 19 2015 - 11:58:45)
CPU0: B4860E, Version: 2.2, (0x86880022)
Core: e6500, Version: 2.0, (0x80400120)
Clock Configuration:
CPU0:1600 MHz, CPU1:1600 MHz, CPU2:1600 MHz, CPU3:1600 MHz,
DSP CPU0:1200 MHz, DSP CPU1:1200 MHz, DSP CPU2:1200 MHz, DSP CPU3:1200 MHz,
DSP CPU4:1200 MHz, DSP CPU5:1200 MHz,
CCB:666.667 MHz,
DDR:933.333 MHz (1866.667 MT/s data rate) (Asynchronous), IFC:166.667 MHz
CPRI:600 MHz
MAPLE:600 MHz, MAPLE-ULB:800 MHz, MAPLE-eTVPE:1000 MHz
FMAN1: 666.667 MHz
QMAN: 333.333 MHz
Top level changes include:
(1) Top level CONFIG to identify HETEROGENUOUS clusters
(2) CONFIGS for SC3900/DSP components
(3) Global structures like "cpu_type" and "MPC85xx_SYS_INFO"
updated for dsp cores and other components
(3) APIs to get DSP num cores and their Mask like:
cpu_dsp_mask, cpu_num_dspcores etc same as that of PowerPC
(5) Code to fetch and print SC cores and other heterogenous
device's frequencies
(6) README added for the same
Signed-off-by: Shaveta Leekha <shaveta@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years ago
|
|
|
#ifdef CONFIG_HETROGENOUS_CLUSTERS
|
|
|
|
__weak u32 cpu_dsp_mask(void)
|
|
|
|
{
|
|
|
|
ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR;
|
|
|
|
struct cpu_type *cpu = gd->arch.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;
|
|
|
|
|
|
|
|
if (cpu->dsp_num_cores == 0)
|
|
|
|
return compute_dsp_cpumask();
|
|
|
|
|
|
|
|
return cpu->dsp_mask;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
powerpc/mpc85xx: Add DSP side awareness for Freescale Heterogeneous SoCs
The code provides framework for heterogeneous multicore chips based on StarCore
and Power Architecture which are chasis-2 compliant, like B4860 and B4420
It will make u-boot recognize all non-ppc cores and peripherals like
SC3900/DSP CPUs, MAPLE, CPRI and print their configuration in u-boot logs.
Example boot logs of B4860QDS:
U-Boot 2015.01-00232-geef6e36-dirty (Jan 19 2015 - 11:58:45)
CPU0: B4860E, Version: 2.2, (0x86880022)
Core: e6500, Version: 2.0, (0x80400120)
Clock Configuration:
CPU0:1600 MHz, CPU1:1600 MHz, CPU2:1600 MHz, CPU3:1600 MHz,
DSP CPU0:1200 MHz, DSP CPU1:1200 MHz, DSP CPU2:1200 MHz, DSP CPU3:1200 MHz,
DSP CPU4:1200 MHz, DSP CPU5:1200 MHz,
CCB:666.667 MHz,
DDR:933.333 MHz (1866.667 MT/s data rate) (Asynchronous), IFC:166.667 MHz
CPRI:600 MHz
MAPLE:600 MHz, MAPLE-ULB:800 MHz, MAPLE-eTVPE:1000 MHz
FMAN1: 666.667 MHz
QMAN: 333.333 MHz
Top level changes include:
(1) Top level CONFIG to identify HETEROGENUOUS clusters
(2) CONFIGS for SC3900/DSP components
(3) Global structures like "cpu_type" and "MPC85xx_SYS_INFO"
updated for dsp cores and other components
(3) APIs to get DSP num cores and their Mask like:
cpu_dsp_mask, cpu_num_dspcores etc same as that of PowerPC
(5) Code to fetch and print SC cores and other heterogenous
device's frequencies
(6) README added for the same
Signed-off-by: Shaveta Leekha <shaveta@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years ago
|
|
|
* Return the number of SC/DSP cores on this SOC.
|
|
|
|
*/
|
|
|
|
__weak int cpu_num_dspcores(void)
|
|
|
|
{
|
|
|
|
struct cpu_type *cpu = gd->arch.cpu;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Report # of cores in terms of the cpu_mask if we haven't
|
|
|
|
* figured out how many there are yet
|
|
|
|
*/
|
|
|
|
if (cpu->dsp_num_cores == 0)
|
|
|
|
return hweight32(cpu_dsp_mask());
|
|
|
|
|
|
|
|
return cpu->dsp_num_cores;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Return the number of PPC cores on this SOC.
|
|
|
|
*/
|
|
|
|
__weak int cpu_numcores(void)
|
|
|
|
{
|
|
|
|
struct cpu_type *cpu = gd->arch.cpu;
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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());
|
|
|
|
|
|
|
|
return cpu->num_cores;
|
|
|
|
}
|
|
|
|
|
powerpc/mpc85xx: Add DSP side awareness for Freescale Heterogeneous SoCs
The code provides framework for heterogeneous multicore chips based on StarCore
and Power Architecture which are chasis-2 compliant, like B4860 and B4420
It will make u-boot recognize all non-ppc cores and peripherals like
SC3900/DSP CPUs, MAPLE, CPRI and print their configuration in u-boot logs.
Example boot logs of B4860QDS:
U-Boot 2015.01-00232-geef6e36-dirty (Jan 19 2015 - 11:58:45)
CPU0: B4860E, Version: 2.2, (0x86880022)
Core: e6500, Version: 2.0, (0x80400120)
Clock Configuration:
CPU0:1600 MHz, CPU1:1600 MHz, CPU2:1600 MHz, CPU3:1600 MHz,
DSP CPU0:1200 MHz, DSP CPU1:1200 MHz, DSP CPU2:1200 MHz, DSP CPU3:1200 MHz,
DSP CPU4:1200 MHz, DSP CPU5:1200 MHz,
CCB:666.667 MHz,
DDR:933.333 MHz (1866.667 MT/s data rate) (Asynchronous), IFC:166.667 MHz
CPRI:600 MHz
MAPLE:600 MHz, MAPLE-ULB:800 MHz, MAPLE-eTVPE:1000 MHz
FMAN1: 666.667 MHz
QMAN: 333.333 MHz
Top level changes include:
(1) Top level CONFIG to identify HETEROGENUOUS clusters
(2) CONFIGS for SC3900/DSP components
(3) Global structures like "cpu_type" and "MPC85xx_SYS_INFO"
updated for dsp cores and other components
(3) APIs to get DSP num cores and their Mask like:
cpu_dsp_mask, cpu_num_dspcores etc same as that of PowerPC
(5) Code to fetch and print SC cores and other heterogenous
device's frequencies
(6) README added for the same
Signed-off-by: Shaveta Leekha <shaveta@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years ago
|
|
|
|
|
|
|
/*
|
|
|
|
* 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)
|
|
|
|
{
|
|
|
|
return !!((1 << core) & cpu_mask());
|
|
|
|
}
|
|
|
|
|
|
|
|
int arch_cpu_init(void)
|
|
|
|
{
|
|
|
|
uint svr;
|
|
|
|
uint ver;
|
|
|
|
|
|
|
|
svr = get_svr();
|
|
|
|
ver = SVR_SOC_VER(svr);
|
|
|
|
|
|
|
|
gd->arch.cpu = identify_cpu(ver);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Once in memory, compute mask & # cores once and save them off */
|
|
|
|
int fixup_cpu(void)
|
|
|
|
{
|
|
|
|
struct cpu_type *cpu = gd->arch.cpu;
|
|
|
|
|
|
|
|
if (cpu->num_cores == 0) {
|
|
|
|
cpu->mask = cpu_mask();
|
|
|
|
cpu->num_cores = cpu_numcores();
|
|
|
|
}
|
|
|
|
|
powerpc/mpc85xx: Add DSP side awareness for Freescale Heterogeneous SoCs
The code provides framework for heterogeneous multicore chips based on StarCore
and Power Architecture which are chasis-2 compliant, like B4860 and B4420
It will make u-boot recognize all non-ppc cores and peripherals like
SC3900/DSP CPUs, MAPLE, CPRI and print their configuration in u-boot logs.
Example boot logs of B4860QDS:
U-Boot 2015.01-00232-geef6e36-dirty (Jan 19 2015 - 11:58:45)
CPU0: B4860E, Version: 2.2, (0x86880022)
Core: e6500, Version: 2.0, (0x80400120)
Clock Configuration:
CPU0:1600 MHz, CPU1:1600 MHz, CPU2:1600 MHz, CPU3:1600 MHz,
DSP CPU0:1200 MHz, DSP CPU1:1200 MHz, DSP CPU2:1200 MHz, DSP CPU3:1200 MHz,
DSP CPU4:1200 MHz, DSP CPU5:1200 MHz,
CCB:666.667 MHz,
DDR:933.333 MHz (1866.667 MT/s data rate) (Asynchronous), IFC:166.667 MHz
CPRI:600 MHz
MAPLE:600 MHz, MAPLE-ULB:800 MHz, MAPLE-eTVPE:1000 MHz
FMAN1: 666.667 MHz
QMAN: 333.333 MHz
Top level changes include:
(1) Top level CONFIG to identify HETEROGENUOUS clusters
(2) CONFIGS for SC3900/DSP components
(3) Global structures like "cpu_type" and "MPC85xx_SYS_INFO"
updated for dsp cores and other components
(3) APIs to get DSP num cores and their Mask like:
cpu_dsp_mask, cpu_num_dspcores etc same as that of PowerPC
(5) Code to fetch and print SC cores and other heterogenous
device's frequencies
(6) README added for the same
Signed-off-by: Shaveta Leekha <shaveta@freescale.com>
Reviewed-by: York Sun <yorksun@freescale.com>
10 years ago
|
|
|
#ifdef CONFIG_HETROGENOUS_CLUSTERS
|
|
|
|
if (cpu->dsp_num_cores == 0) {
|
|
|
|
cpu->dsp_mask = cpu_dsp_mask();
|
|
|
|
cpu->dsp_num_cores = cpu_num_dspcores();
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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
|
|
|
|
|
|
|
|
#ifdef CONFIG_FMAN_ENET
|
|
|
|
fm_standard_init(bis);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifdef CONFIG_VSC9953
|
|
|
|
vsc9953_init(bis);
|
|
|
|
#endif
|
|
|
|
return 0;
|
|
|
|
}
|