Commit 629d6b32d6b9452b852fe79a195cca5b897fcad3
Committed by
York Sun
1 parent
82a55c1ef8
Exists in
master
and in
50 other branches
powerpc/mpc85xx: Add T2080/T2081 SoC support
Add support for Freescale T2080/T2081 SoC. T2080 includes the following functions and features: - Four dual-threads 64-bit Power architecture e6500 cores, up to 1.8GHz - 2MB L2 cache and 512KB CoreNet platform cache (CPC) - Hierarchical interconnect fabric - One 32-/64-bit DDR3/3L SDRAM memory controllers with ECC and interleaving - Data Path Acceleration Architecture (DPAA) incorporating acceleration - 16 SerDes lanes up to 10.3125 GHz - 8 mEMACs for network interfaces (four 1Gbps MACs and four 10Gbps/1Gbps MACs) - High-speed peripheral interfaces - Four PCI Express controllers (two PCIe 2.0 and two PCIe 3.0 with SR-IOV) - Two Serial RapidIO 2.0 controllers/ports running at up to 5 GHz - 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/SDHC/SDXC/eMMC) - Enhanced serial peripheral interface (eSPI) - Four I2C controllers - Four 2-pin UARTs or two 4-pin UARTs - Integrated Flash Controller supporting NAND and NOR flash - Three eight-channel DMA engines - Support for hardware virtualization and partitioning enforcement - QorIQ Platform's Trust Architecture 2.0 Differences between T2080 and T2081: Feature T2080 T2081 1G Ethernet numbers: 8 6 10G Ethernet numbers: 4 2 SerDes lanes: 16 8 Serial RapidIO,RMan: 2 no SATA Controller: 2 no Aurora: yes no SoC Package: 896-pins 780-pins Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> Acked-by: York Sun <yorksun@freescale.com>
Showing 10 changed files with 512 additions and 1 deletions Side-by-side Diff
- arch/powerpc/cpu/mpc85xx/Makefile
- arch/powerpc/cpu/mpc85xx/speed.c
- arch/powerpc/cpu/mpc85xx/t2080_ids.c
- arch/powerpc/cpu/mpc85xx/t2080_serdes.c
- arch/powerpc/cpu/mpc8xxx/cpu.c
- arch/powerpc/include/asm/config_mpc85xx.h
- arch/powerpc/include/asm/immap_85xx.h
- arch/powerpc/include/asm/processor.h
- drivers/net/fm/Makefile
- drivers/net/fm/t2080.c
arch/powerpc/cpu/mpc85xx/Makefile
... | ... | @@ -50,6 +50,8 @@ |
50 | 50 | obj-$(CONFIG_PPC_T1042) += t1040_ids.o |
51 | 51 | obj-$(CONFIG_PPC_T1020) += t1040_ids.o |
52 | 52 | obj-$(CONFIG_PPC_T1022) += t1040_ids.o |
53 | +obj-$(CONFIG_PPC_T2080) += t2080_ids.o | |
54 | +obj-$(CONFIG_PPC_T2081) += t2080_ids.o | |
53 | 55 | |
54 | 56 | |
55 | 57 | obj-$(CONFIG_QE) += qe_io.o |
... | ... | @@ -93,6 +95,8 @@ |
93 | 95 | obj-$(CONFIG_PPC_T1042) += t1040_serdes.o |
94 | 96 | obj-$(CONFIG_PPC_T1020) += t1040_serdes.o |
95 | 97 | obj-$(CONFIG_PPC_T1022) += t1040_serdes.o |
98 | +obj-$(CONFIG_PPC_T2080) += t2080_serdes.o | |
99 | +obj-$(CONFIG_PPC_T2081) += t2080_serdes.o | |
96 | 100 | |
97 | 101 | obj-y += cpu.o |
98 | 102 | obj-y += cpu_init.o |
arch/powerpc/cpu/mpc85xx/speed.c
... | ... | @@ -122,7 +122,7 @@ |
122 | 122 | sys_info->freq_processor[cpu] = |
123 | 123 | freq_c_pll[cplx_pll] / core_cplx_pll_div[c_pll_sel]; |
124 | 124 | } |
125 | -#ifdef CONFIG_PPC_B4860 | |
125 | +#if defined(CONFIG_PPC_B4860) || defined(CONFIG_PPC_T2080) | |
126 | 126 | #define FM1_CLK_SEL 0xe0000000 |
127 | 127 | #define FM1_CLK_SHIFT 29 |
128 | 128 | #else |
arch/powerpc/cpu/mpc85xx/t2080_ids.c
1 | +/* | |
2 | + * Copyright 2013 Freescale Semiconductor, Inc. | |
3 | + * | |
4 | + * SPDX-License-Identifier: GPL-2.0+ | |
5 | + */ | |
6 | + | |
7 | +#include <common.h> | |
8 | +#include <asm/fsl_portals.h> | |
9 | +#include <asm/fsl_liodn.h> | |
10 | + | |
11 | +#ifdef CONFIG_SYS_DPAA_QBMAN | |
12 | +struct qportal_info qp_info[CONFIG_SYS_QMAN_NUM_PORTALS] = { | |
13 | + /* dqrr liodn, frame data liodn, liodn off, sdest */ | |
14 | + SET_QP_INFO(1, 27, 1, 0), | |
15 | + SET_QP_INFO(2, 28, 1, 0), | |
16 | + SET_QP_INFO(3, 29, 1, 1), | |
17 | + SET_QP_INFO(4, 30, 1, 1), | |
18 | + SET_QP_INFO(5, 31, 1, 2), | |
19 | + SET_QP_INFO(6, 32, 1, 2), | |
20 | + SET_QP_INFO(7, 33, 1, 3), | |
21 | + SET_QP_INFO(8, 34, 1, 3), | |
22 | + SET_QP_INFO(9, 35, 1, 0), | |
23 | + SET_QP_INFO(10, 36, 1, 0), | |
24 | + SET_QP_INFO(11, 37, 1, 1), | |
25 | + SET_QP_INFO(12, 38, 1, 1), | |
26 | + SET_QP_INFO(13, 39, 1, 2), | |
27 | + SET_QP_INFO(14, 40, 1, 2), | |
28 | + SET_QP_INFO(15, 41, 1, 3), | |
29 | + SET_QP_INFO(16, 42, 1, 3), | |
30 | + SET_QP_INFO(17, 43, 1, 0), | |
31 | + SET_QP_INFO(18, 44, 1, 0), | |
32 | +}; | |
33 | +#endif | |
34 | + | |
35 | +#ifdef CONFIG_SYS_SRIO | |
36 | +struct srio_liodn_id_table srio_liodn_tbl[] = { | |
37 | + SET_SRIO_LIODN_BASE(1, 307), | |
38 | + SET_SRIO_LIODN_BASE(2, 387), | |
39 | +}; | |
40 | +int srio_liodn_tbl_sz = ARRAY_SIZE(srio_liodn_tbl); | |
41 | +#endif | |
42 | + | |
43 | +struct liodn_id_table liodn_tbl[] = { | |
44 | +#ifdef CONFIG_SYS_DPAA_QBMAN | |
45 | + SET_QMAN_LIODN(62), | |
46 | + SET_BMAN_LIODN(63), | |
47 | +#endif | |
48 | + | |
49 | + SET_SDHC_LIODN(1, 552), | |
50 | + | |
51 | + SET_PME_LIODN(117), | |
52 | + | |
53 | + SET_USB_LIODN(1, "fsl-usb2-mph", 553), | |
54 | + SET_USB_LIODN(2, "fsl-usb2-dr", 554), | |
55 | + | |
56 | + SET_SATA_LIODN(1, 555), | |
57 | + SET_SATA_LIODN(2, 556), | |
58 | + | |
59 | + SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 1, 148), | |
60 | + SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 2, 228), | |
61 | + SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 3, 308), | |
62 | + SET_PCI_LIODN_BASE(CONFIG_SYS_FSL_PCIE_COMPAT, 4, 388), | |
63 | + | |
64 | + SET_DMA_LIODN(1, 147), | |
65 | + SET_DMA_LIODN(2, 227), | |
66 | + SET_DMA_LIODN(3, 226), | |
67 | + | |
68 | + SET_GUTS_LIODN("fsl,rapidio-delta", 199, rio1liodnr, 0), | |
69 | + SET_GUTS_LIODN(NULL, 200, rio2liodnr, 0), | |
70 | + SET_GUTS_LIODN(NULL, 201, rio1maintliodnr, 0), | |
71 | + SET_GUTS_LIODN(NULL, 202, rio2maintliodnr, 0), | |
72 | + | |
73 | +#ifdef CONFIG_SYS_PMAN | |
74 | + SET_PMAN_LIODN(1, 513), | |
75 | + SET_PMAN_LIODN(2, 514), | |
76 | + SET_PMAN_LIODN(3, 515), | |
77 | +#endif | |
78 | + | |
79 | + /* SET_NEXUS_LIODN(557), -- not yet implemented */ | |
80 | +}; | |
81 | +int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl); | |
82 | + | |
83 | +#ifdef CONFIG_SYS_DPAA_FMAN | |
84 | +struct liodn_id_table fman1_liodn_tbl[] = { | |
85 | + SET_FMAN_RX_1G_LIODN(1, 0, 88), | |
86 | + SET_FMAN_RX_1G_LIODN(1, 1, 89), | |
87 | + SET_FMAN_RX_1G_LIODN(1, 2, 90), | |
88 | + SET_FMAN_RX_1G_LIODN(1, 3, 91), | |
89 | + SET_FMAN_RX_1G_LIODN(1, 4, 92), | |
90 | + SET_FMAN_RX_1G_LIODN(1, 5, 93), | |
91 | + SET_FMAN_RX_10G_LIODN(1, 0, 94), | |
92 | + SET_FMAN_RX_10G_LIODN(1, 1, 95), | |
93 | +}; | |
94 | +int fman1_liodn_tbl_sz = ARRAY_SIZE(fman1_liodn_tbl); | |
95 | +#endif | |
96 | + | |
97 | +struct liodn_id_table sec_liodn_tbl[] = { | |
98 | + SET_SEC_JR_LIODN_ENTRY(0, 454, 458), | |
99 | + SET_SEC_JR_LIODN_ENTRY(1, 455, 459), | |
100 | + SET_SEC_JR_LIODN_ENTRY(2, 456, 460), | |
101 | + SET_SEC_JR_LIODN_ENTRY(3, 457, 461), | |
102 | + SET_SEC_RTIC_LIODN_ENTRY(a, 453), | |
103 | + SET_SEC_RTIC_LIODN_ENTRY(b, 549), | |
104 | + SET_SEC_RTIC_LIODN_ENTRY(c, 550), | |
105 | + SET_SEC_RTIC_LIODN_ENTRY(d, 551), | |
106 | + SET_SEC_DECO_LIODN_ENTRY(0, 541, 610), | |
107 | + SET_SEC_DECO_LIODN_ENTRY(1, 542, 611), | |
108 | + SET_SEC_DECO_LIODN_ENTRY(2, 543, 612), | |
109 | + SET_SEC_DECO_LIODN_ENTRY(3, 544, 613), | |
110 | + SET_SEC_DECO_LIODN_ENTRY(4, 545, 614), | |
111 | + SET_SEC_DECO_LIODN_ENTRY(5, 546, 615), | |
112 | + SET_SEC_DECO_LIODN_ENTRY(6, 547, 616), | |
113 | + SET_SEC_DECO_LIODN_ENTRY(7, 548, 617), | |
114 | +}; | |
115 | +int sec_liodn_tbl_sz = ARRAY_SIZE(sec_liodn_tbl); | |
116 | + | |
117 | +#ifdef CONFIG_SYS_DPAA_RMAN | |
118 | +struct liodn_id_table rman_liodn_tbl[] = { | |
119 | + /* Set RMan block 0-3 liodn offset */ | |
120 | + SET_RMAN_LIODN(0, 6), | |
121 | + SET_RMAN_LIODN(1, 7), | |
122 | + SET_RMAN_LIODN(2, 8), | |
123 | + SET_RMAN_LIODN(3, 9), | |
124 | +}; | |
125 | +int rman_liodn_tbl_sz = ARRAY_SIZE(rman_liodn_tbl); | |
126 | +#endif | |
127 | + | |
128 | +struct liodn_id_table liodn_bases[] = { | |
129 | +#ifdef CONFIG_SYS_DPAA_DCE | |
130 | + [FSL_HW_PORTAL_DCE] = SET_LIODN_BASE_2(618, 694), | |
131 | +#endif | |
132 | + [FSL_HW_PORTAL_SEC] = SET_LIODN_BASE_2(462, 558), | |
133 | +#ifdef CONFIG_SYS_DPAA_FMAN | |
134 | + [FSL_HW_PORTAL_FMAN1] = SET_LIODN_BASE_1(973), | |
135 | +#endif | |
136 | +#ifdef CONFIG_SYS_DPAA_PME | |
137 | + [FSL_HW_PORTAL_PME] = SET_LIODN_BASE_2(770, 846), | |
138 | +#endif | |
139 | +#ifdef CONFIG_SYS_DPAA_RMAN | |
140 | + [FSL_HW_PORTAL_RMAN] = SET_LIODN_BASE_1(922), | |
141 | +#endif | |
142 | +}; |
arch/powerpc/cpu/mpc85xx/t2080_serdes.c
1 | +/* | |
2 | + * Copyright 2013 Freescale Semiconductor, Inc. | |
3 | + * | |
4 | + * Shengzhou Liu <Shengzhou.Liu@freescale.com> | |
5 | + * | |
6 | + * SPDX-License-Identifier: GPL-2.0+ | |
7 | + */ | |
8 | + | |
9 | +#include <common.h> | |
10 | +#include <asm/fsl_serdes.h> | |
11 | +#include <asm/processor.h> | |
12 | +#include "fsl_corenet2_serdes.h" | |
13 | + | |
14 | +struct serdes_config { | |
15 | + u32 protocol; | |
16 | + u8 lanes[SRDS_MAX_LANES]; | |
17 | +}; | |
18 | + | |
19 | +static const struct serdes_config serdes1_cfg_tbl[] = { | |
20 | + /* SerDes 1 */ | |
21 | + {0x6E, {XFI_FM1_MAC9, XFI_FM1_MAC10, | |
22 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
23 | + PCIE4, PCIE4, SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
24 | + {0xBC, {PCIE3, PCIE3, SGMII_FM1_DTSEC1, | |
25 | + SGMII_FM1_DTSEC2, PCIE4, PCIE4, PCIE4, PCIE4} }, | |
26 | + {0xC8, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
27 | + SGMII_FM1_DTSEC2, PCIE4, PCIE4, | |
28 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
29 | + {0xD6, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
30 | + SGMII_FM1_DTSEC2, PCIE4, PCIE4, | |
31 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
32 | + {0xDE, {PCIE3, PCIE3, PCIE3, PCIE3, | |
33 | + PCIE4, PCIE1, PCIE2, SGMII_FM1_DTSEC6} }, | |
34 | + {0xE0, {PCIE3, PCIE3, PCIE3, PCIE3, PCIE4, | |
35 | + PCIE1, SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
36 | + {0xF2, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
37 | + SGMII_FM1_DTSEC2, PCIE4, PCIE1, PCIE2, SGMII_FM1_DTSEC6} }, | |
38 | + {0xF8, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
39 | + SGMII_FM1_DTSEC2, PCIE4, PCIE1, PCIE2, SGMII_FM1_DTSEC6} }, | |
40 | + {0xFA, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
41 | + SGMII_FM1_DTSEC2, PCIE4, PCIE1, | |
42 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
43 | + {0x6C, {XFI_FM1_MAC9, XFI_FM1_MAC10, | |
44 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
45 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
46 | +#if defined(CONFIG_PPC_T2080) | |
47 | + {0x1C, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
48 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
49 | + SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, | |
50 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
51 | + {0x95, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
52 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
53 | + SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, | |
54 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
55 | + {0xA2, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
56 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
57 | + SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, | |
58 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
59 | + {0x94, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
60 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
61 | + SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, | |
62 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
63 | + {0x51, {XAUI_FM1_MAC9, XAUI_FM1_MAC9, | |
64 | + XAUI_FM1_MAC9, XAUI_FM1_MAC9, | |
65 | + PCIE4, SGMII_FM1_DTSEC4, | |
66 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
67 | + {0x5F, {HIGIG_FM1_MAC9, HIGIG_FM1_MAC9, | |
68 | + HIGIG_FM1_MAC9, HIGIG_FM1_MAC9, | |
69 | + PCIE4, SGMII_FM1_DTSEC4, | |
70 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
71 | + {0x65, {HIGIG_FM1_MAC9, HIGIG_FM1_MAC9, | |
72 | + HIGIG_FM1_MAC9, HIGIG_FM1_MAC9, | |
73 | + PCIE4, SGMII_FM1_DTSEC4, | |
74 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
75 | + {0x6B, {XFI_FM1_MAC9, XFI_FM1_MAC10, | |
76 | + XFI_FM1_MAC1, XFI_FM1_MAC2, | |
77 | + PCIE4, SGMII_FM1_DTSEC4, | |
78 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
79 | + {0x6D, {XFI_FM1_MAC9, XFI_FM1_MAC10, | |
80 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
81 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
82 | + {0x71, {XFI_FM1_MAC9, XFI_FM1_MAC10, | |
83 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, PCIE4, | |
84 | + SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
85 | + {0xA6, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
86 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, PCIE4, | |
87 | + PCIE4, SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
88 | + {0x8E, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
89 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, PCIE4, | |
90 | + PCIE4, SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
91 | + {0x8F, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
92 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, PCIE4, | |
93 | + PCIE4, SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
94 | + {0x82, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
95 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
96 | + PCIE4, PCIE4, SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
97 | + {0x83, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
98 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
99 | + PCIE4, PCIE4, SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
100 | + {0xA4, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
101 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
102 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
103 | + {0x96, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
104 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
105 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
106 | + {0x8A, {SGMII_FM1_DTSEC9, SGMII_FM1_DTSEC10, | |
107 | + SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, | |
108 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
109 | + {0x67, {XFI_FM1_MAC9, XFI_FM1_MAC10, | |
110 | + XFI_FM1_MAC1, XFI_FM1_MAC2, | |
111 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
112 | + {0xAB, {PCIE3, PCIE3, PCIE3, PCIE3, | |
113 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
114 | + {0xDA, {PCIE3, PCIE3, PCIE3, PCIE3, | |
115 | + PCIE3, PCIE3, PCIE3, PCIE3} }, | |
116 | + {0xD9, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
117 | + SGMII_FM1_DTSEC2, PCIE4, SGMII_FM1_DTSEC4, | |
118 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
119 | + {0xD3, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
120 | + SGMII_FM1_DTSEC2, PCIE4, SGMII_FM1_DTSEC4, | |
121 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
122 | + {0xCB, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
123 | + SGMII_FM1_DTSEC2, PCIE4, SGMII_FM1_DTSEC4, | |
124 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
125 | + {0xD8, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
126 | + SGMII_FM1_DTSEC2, PCIE4, SGMII_FM1_DTSEC4, | |
127 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
128 | + {0x66, {XFI_FM1_MAC9, XFI_FM1_MAC10, | |
129 | + XFI_FM1_MAC1, XFI_FM1_MAC2, | |
130 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
131 | + | |
132 | +#elif defined(CONFIG_PPC_T2081) | |
133 | + {0xAA, {PCIE3, PCIE3, PCIE3, PCIE3, | |
134 | + PCIE4, PCIE4, PCIE4, PCIE4} }, | |
135 | + {0xCA, {PCIE3, SGMII_FM1_DTSEC10, SGMII_FM1_DTSEC1, | |
136 | + SGMII_FM1_DTSEC2, PCIE4, SGMII_FM1_DTSEC4, | |
137 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
138 | + {0x70, {XFI_FM1_MAC9, XFI_FM1_MAC10, SGMII_FM1_DTSEC1, | |
139 | + SGMII_FM1_DTSEC2, PCIE4, SGMII_FM1_DTSEC4, | |
140 | + SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6} }, | |
141 | +#endif | |
142 | + {} | |
143 | +}; | |
144 | + | |
145 | +#ifndef CONFIG_PPC_T2081 | |
146 | +static const struct serdes_config serdes2_cfg_tbl[] = { | |
147 | + /* SerDes 2 */ | |
148 | + {0x1F, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2} }, | |
149 | + {0x16, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, SATA1, SATA2} }, | |
150 | + {0x01, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} }, | |
151 | + {0x29, {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1} }, | |
152 | + {0x2D, {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1} }, | |
153 | + {0x15, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, SATA1, SATA2} }, | |
154 | + {0x18, {PCIE1, PCIE1, PCIE1, PCIE1, AURORA, AURORA, SATA1, SATA2} }, | |
155 | + {0x02, {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1} }, | |
156 | + {0x36, {SRIO2, SRIO2, SRIO2, SRIO2, AURORA, AURORA, SATA1, SATA2} }, | |
157 | + {} | |
158 | +}; | |
159 | +#endif | |
160 | + | |
161 | +static const struct serdes_config *serdes_cfg_tbl[] = { | |
162 | + serdes1_cfg_tbl, | |
163 | +#ifndef CONFIG_PPC_T2081 | |
164 | + serdes2_cfg_tbl, | |
165 | +#endif | |
166 | +}; | |
167 | + | |
168 | +enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane) | |
169 | +{ | |
170 | + const struct serdes_config *ptr; | |
171 | + | |
172 | + if (serdes >= ARRAY_SIZE(serdes_cfg_tbl)) | |
173 | + return 0; | |
174 | + | |
175 | + ptr = serdes_cfg_tbl[serdes]; | |
176 | + while (ptr->protocol) { | |
177 | + if (ptr->protocol == cfg) | |
178 | + return ptr->lanes[lane]; | |
179 | + ptr++; | |
180 | + } | |
181 | + return 0; | |
182 | +} | |
183 | + | |
184 | +int is_serdes_prtcl_valid(int serdes, u32 prtcl) | |
185 | +{ | |
186 | + int i; | |
187 | + const struct serdes_config *ptr; | |
188 | + | |
189 | + if (serdes >= ARRAY_SIZE(serdes_cfg_tbl)) | |
190 | + return 0; | |
191 | + | |
192 | + ptr = serdes_cfg_tbl[serdes]; | |
193 | + while (ptr->protocol) { | |
194 | + if (ptr->protocol == prtcl) | |
195 | + break; | |
196 | + ptr++; | |
197 | + } | |
198 | + | |
199 | + if (!ptr->protocol) | |
200 | + return 0; | |
201 | + | |
202 | + for (i = 0; i < SRDS_MAX_LANES; i++) { | |
203 | + if (ptr->lanes[i] != NONE) | |
204 | + return 1; | |
205 | + } | |
206 | + | |
207 | + return 0; | |
208 | +} |
arch/powerpc/cpu/mpc8xxx/cpu.c
... | ... | @@ -75,6 +75,8 @@ |
75 | 75 | CPU_TYPE_ENTRY(T1020, T1020, 0), |
76 | 76 | CPU_TYPE_ENTRY(T1021, T1021, 0), |
77 | 77 | CPU_TYPE_ENTRY(T1022, T1022, 0), |
78 | + CPU_TYPE_ENTRY(T2080, T2080, 0), | |
79 | + CPU_TYPE_ENTRY(T2081, T2081, 0), | |
78 | 80 | CPU_TYPE_ENTRY(BSC9130, 9130, 1), |
79 | 81 | CPU_TYPE_ENTRY(BSC9131, 9131, 1), |
80 | 82 | CPU_TYPE_ENTRY(BSC9132, 9132, 2), |
arch/powerpc/include/asm/config_mpc85xx.h
... | ... | @@ -718,6 +718,50 @@ |
718 | 718 | #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY |
719 | 719 | #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 |
720 | 720 | |
721 | +#elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081) | |
722 | +#define CONFIG_E6500 | |
723 | +#define CONFIG_SYS_PPC64 /* 64-bit core */ | |
724 | +#define CONFIG_FSL_CORENET /* Freescale CoreNet platform */ | |
725 | +#define CONFIG_SYS_FSL_QORIQ_CHASSIS2 /* Freescale Chassis generation 2 */ | |
726 | +#define CONFIG_SYS_FSL_CORES_PER_CLUSTER 4 | |
727 | +#define CONFIG_SYS_FSL_NUM_CC_PLLS 2 | |
728 | +#define CONFIG_SYS_FSL_QMAN_V3 | |
729 | +#define CONFIG_MAX_CPUS 4 | |
730 | +#define CONFIG_SYS_FSL_NUM_LAWS 32 | |
731 | +#define CONFIG_SYS_FSL_SEC_COMPAT 4 | |
732 | +#define CONFIG_SYS_NUM_FMAN 1 | |
733 | +#define CONFIG_SYS_FSL_CLUSTER_CLOCKS { 1, 4, 4, 4 } | |
734 | +#define CONFIG_SYS_FSL_SRDS_1 | |
735 | +#define CONFIG_SYS_FSL_PCI_VER_3_X | |
736 | +#if defined(CONFIG_PPC_T2080) | |
737 | +#define CONFIG_SYS_NUM_FM1_DTSEC 8 | |
738 | +#define CONFIG_SYS_NUM_FM1_10GEC 4 | |
739 | +#define CONFIG_SYS_FSL_SRDS_2 | |
740 | +#define CONFIG_SYS_FSL_SRIO_LIODN | |
741 | +#define CONFIG_SYS_FSL_SRIO_MAX_PORTS 2 | |
742 | +#define CONFIG_SYS_FSL_SRIO_OB_WIN_NUM 9 | |
743 | +#define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM 5 | |
744 | +#elif defined(CONFIG_PPC_T2081) | |
745 | +#define CONFIG_SYS_NUM_FM1_DTSEC 6 | |
746 | +#define CONFIG_SYS_NUM_FM1_10GEC 2 | |
747 | +#endif | |
748 | +#define CONFIG_SYS_FSL_NUM_USB_CTRLS 2 | |
749 | +#define CONFIG_NUM_DDR_CONTROLLERS 1 | |
750 | +#define CONFIG_PME_PLAT_CLK_DIV 1 | |
751 | +#define CONFIG_SYS_PME_CLK CONFIG_PME_PLAT_CLK_DIV | |
752 | +#define CONFIG_SYS_FM1_CLK 0 | |
753 | +#define CONFIG_SYS_FSL_DDR_VER FSL_DDR_VER_4_7 | |
754 | +#define CONFIG_SYS_FSL_IFC_BANK_COUNT 8 | |
755 | +#define CONFIG_SYS_FMAN_V3 | |
756 | +#define CONFIG_SYS_FM_MURAM_SIZE 0x28000 | |
757 | +#define CONFIG_SYS_FSL_TBCLK_DIV 16 | |
758 | +#define CONFIG_SYS_FSL_PCIE_COMPAT "fsl,qoriq-pcie-v3.0" | |
759 | +#define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE | |
760 | +#define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY | |
761 | +#define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe000000 | |
762 | +#define CONFIG_SYS_FSL_SFP_VER_3_0 | |
763 | +#define CONFIG_SYS_FSL_ISBC_VER 2 | |
764 | + | |
721 | 765 | #elif defined(CONFIG_PPC_C29X) |
722 | 766 | #define CONFIG_MAX_CPUS 1 |
723 | 767 | #define CONFIG_FSL_SDHC_V2_3 |
arch/powerpc/include/asm/immap_85xx.h
... | ... | @@ -1759,6 +1759,12 @@ |
1759 | 1759 | #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT 24 |
1760 | 1760 | #define FSL_CORENET2_RCWSR4_SRDS2_PRTCL 0x00fe0000 |
1761 | 1761 | #define FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT 17 |
1762 | +#elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081) | |
1763 | +#define FSL_CORENET2_RCWSR4_SRDS1_PRTCL 0xff000000 | |
1764 | +#define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT 24 | |
1765 | +#define FSL_CORENET2_RCWSR4_SRDS2_PRTCL 0x00ff0000 | |
1766 | +#define FSL_CORENET2_RCWSR4_SRDS2_PRTCL_SHIFT 16 | |
1767 | +#define FSL_CORENET_RCWSR6_BOOT_LOC 0x0f800000 | |
1762 | 1768 | #endif |
1763 | 1769 | #define FSL_CORENET2_RCWSR5_SRDS_PLL_PD_S1_PLL1 0x00800000 |
1764 | 1770 | #define FSL_CORENET2_RCWSR5_SRDS_PLL_PD_S1_PLL2 0x00400000 |
... | ... | @@ -1822,6 +1828,15 @@ |
1822 | 1828 | #define FSL_CORENET_RCWSR13_EC2_FM1_DTSEC6_RGMII 0x08000000 |
1823 | 1829 | #define FSL_CORENET_RCWSR13_EC2_FM1_GPIO 0x10000000 |
1824 | 1830 | #endif |
1831 | +#if defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081) | |
1832 | +#define FSL_CORENET_RCWSR13_EC1 0x60000000 /* bits 417..418 */ | |
1833 | +#define FSL_CORENET_RCWSR13_EC1_DTSEC3_RGMII 0x00000000 | |
1834 | +#define FSL_CORENET_RCWSR13_EC1_GPIO 0x40000000 | |
1835 | +#define FSL_CORENET_RCWSR13_EC2 0x18000000 /* bits 419..420 */ | |
1836 | +#define FSL_CORENET_RCWSR13_EC2_DTSEC4_RGMII 0x00000000 | |
1837 | +#define FSL_CORENET_RCWSR13_EC2_DTSEC10_RGMII 0x08000000 | |
1838 | +#define FSL_CORENET_RCWSR13_EC2_GPIO 0x10000000 | |
1839 | +#endif | |
1825 | 1840 | u8 res18[192]; |
1826 | 1841 | u32 scratchrw[4]; /* Scratch Read/Write */ |
1827 | 1842 | u8 res19[240]; |
... | ... | @@ -2818,6 +2833,7 @@ |
2818 | 2833 | #define CONFIG_SYS_FSL_CPC_OFFSET 0x10000 |
2819 | 2834 | #define CONFIG_SYS_MPC85xx_DMA1_OFFSET 0x100000 |
2820 | 2835 | #define CONFIG_SYS_MPC85xx_DMA2_OFFSET 0x101000 |
2836 | +#define CONFIG_SYS_MPC85xx_DMA3_OFFSET 0x102000 | |
2821 | 2837 | #define CONFIG_SYS_MPC85xx_DMA_OFFSET CONFIG_SYS_MPC85xx_DMA1_OFFSET |
2822 | 2838 | #define CONFIG_SYS_MPC85xx_ESPI_OFFSET 0x110000 |
2823 | 2839 | #define CONFIG_SYS_MPC85xx_ESDHC_OFFSET 0x114000 |
arch/powerpc/include/asm/processor.h
drivers/net/fm/Makefile
... | ... | @@ -28,6 +28,8 @@ |
28 | 28 | obj-$(CONFIG_PPC_T1042) += t1040.o |
29 | 29 | obj-$(CONFIG_PPC_T1020) += t1040.o |
30 | 30 | obj-$(CONFIG_PPC_T1022) += t1040.o |
31 | +obj-$(CONFIG_PPC_T2080) += t2080.o | |
32 | +obj-$(CONFIG_PPC_T2081) += t2080.o | |
31 | 33 | obj-$(CONFIG_PPC_T4240) += t4240.o |
32 | 34 | obj-$(CONFIG_PPC_T4160) += t4240.o |
33 | 35 | obj-$(CONFIG_PPC_B4420) += b4860.o |
drivers/net/fm/t2080.c
1 | +/* | |
2 | + * Copyright 2012 Freescale Semiconductor, Inc. | |
3 | + * | |
4 | + * Shengzhou Liu <Shengzhou.Liu@freescale.com> | |
5 | + * | |
6 | + * SPDX-License-Identifier: GPL-2.0+ | |
7 | + */ | |
8 | + | |
9 | +#include <common.h> | |
10 | +#include <phy.h> | |
11 | +#include <fm_eth.h> | |
12 | +#include <asm/immap_85xx.h> | |
13 | +#include <asm/fsl_serdes.h> | |
14 | + | |
15 | +u32 port_to_devdisr[] = { | |
16 | + [FM1_DTSEC1] = FSL_CORENET_DEVDISR2_DTSEC1_1, | |
17 | + [FM1_DTSEC2] = FSL_CORENET_DEVDISR2_DTSEC1_2, | |
18 | + [FM1_DTSEC3] = FSL_CORENET_DEVDISR2_DTSEC1_3, | |
19 | + [FM1_DTSEC4] = FSL_CORENET_DEVDISR2_DTSEC1_4, | |
20 | + [FM1_DTSEC5] = FSL_CORENET_DEVDISR2_DTSEC1_5, | |
21 | + [FM1_DTSEC6] = FSL_CORENET_DEVDISR2_DTSEC1_6, | |
22 | + [FM1_DTSEC9] = FSL_CORENET_DEVDISR2_DTSEC1_9, | |
23 | + [FM1_DTSEC10] = FSL_CORENET_DEVDISR2_DTSEC1_10, | |
24 | + [FM1_10GEC1] = FSL_CORENET_DEVDISR2_10GEC1_1, | |
25 | + [FM1_10GEC2] = FSL_CORENET_DEVDISR2_10GEC1_2, | |
26 | + [FM1_10GEC3] = FSL_CORENET_DEVDISR2_10GEC1_3, | |
27 | + [FM1_10GEC4] = FSL_CORENET_DEVDISR2_10GEC1_4, | |
28 | +}; | |
29 | + | |
30 | +static int is_device_disabled(enum fm_port port) | |
31 | +{ | |
32 | + ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); | |
33 | + u32 devdisr2 = in_be32(&gur->devdisr2); | |
34 | + | |
35 | + return port_to_devdisr[port] & devdisr2; | |
36 | +} | |
37 | + | |
38 | +void fman_disable_port(enum fm_port port) | |
39 | +{ | |
40 | + ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); | |
41 | + | |
42 | + setbits_be32(&gur->devdisr2, port_to_devdisr[port]); | |
43 | +} | |
44 | + | |
45 | +phy_interface_t fman_port_enet_if(enum fm_port port) | |
46 | +{ | |
47 | + ccsr_gur_t *gur = (void __iomem *)(CONFIG_SYS_MPC85xx_GUTS_ADDR); | |
48 | + u32 rcwsr13 = in_be32(&gur->rcwsr[13]); | |
49 | + | |
50 | + if (is_device_disabled(port)) | |
51 | + return PHY_INTERFACE_MODE_NONE; | |
52 | + | |
53 | + if ((port == FM1_10GEC1 || port == FM1_10GEC2 || | |
54 | + port == FM1_10GEC3 || port == FM1_10GEC4) && | |
55 | + ((is_serdes_configured(XAUI_FM1_MAC9)) || | |
56 | + (is_serdes_configured(XFI_FM1_MAC1)) || | |
57 | + (is_serdes_configured(XFI_FM1_MAC2)) || | |
58 | + (is_serdes_configured(XFI_FM1_MAC9)) || | |
59 | + (is_serdes_configured(XFI_FM1_MAC10)))) | |
60 | + return PHY_INTERFACE_MODE_XGMII; | |
61 | + | |
62 | + if ((port == FM1_DTSEC3) && ((rcwsr13 & FSL_CORENET_RCWSR13_EC1) == | |
63 | + FSL_CORENET_RCWSR13_EC1_DTSEC3_RGMII)) | |
64 | + return PHY_INTERFACE_MODE_RGMII; | |
65 | + | |
66 | + if ((port == FM1_DTSEC4) && ((rcwsr13 & FSL_CORENET_RCWSR13_EC2) == | |
67 | + FSL_CORENET_RCWSR13_EC2_DTSEC4_RGMII)) | |
68 | + return PHY_INTERFACE_MODE_RGMII; | |
69 | + | |
70 | + if ((port == FM1_DTSEC10) && ((rcwsr13 & FSL_CORENET_RCWSR13_EC2) == | |
71 | + FSL_CORENET_RCWSR13_EC2_DTSEC10_RGMII)) | |
72 | + return PHY_INTERFACE_MODE_RGMII; | |
73 | + | |
74 | + switch (port) { | |
75 | + case FM1_DTSEC1: | |
76 | + case FM1_DTSEC2: | |
77 | + case FM1_DTSEC3: | |
78 | + case FM1_DTSEC4: | |
79 | + case FM1_DTSEC5: | |
80 | + case FM1_DTSEC6: | |
81 | + case FM1_DTSEC9: | |
82 | + case FM1_DTSEC10: | |
83 | + if (is_serdes_configured(SGMII_FM1_DTSEC1 + port - FM1_DTSEC1)) | |
84 | + return PHY_INTERFACE_MODE_SGMII; | |
85 | + break; | |
86 | + default: | |
87 | + return PHY_INTERFACE_MODE_NONE; | |
88 | + } | |
89 | + | |
90 | + return PHY_INTERFACE_MODE_NONE; | |
91 | +} |