]> git.sur5r.net Git - u-boot/blob - arch/arm/mach-mvebu/serdes/axp/high_speed_env_spec.h
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / arch / arm / mach-mvebu / serdes / axp / high_speed_env_spec.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) Marvell International Ltd. and its affiliates
4  */
5
6 #ifndef __HIGHSPEED_ENV_SPEC_H
7 #define __HIGHSPEED_ENV_SPEC_H
8
9 #include "../../../drivers/ddr/marvell/axp/ddr3_hw_training.h"
10
11 typedef enum {
12         SERDES_UNIT_UNCONNECTED = 0x0,
13         SERDES_UNIT_PEX         = 0x1,
14         SERDES_UNIT_SATA        = 0x2,
15         SERDES_UNIT_SGMII0      = 0x3,
16         SERDES_UNIT_SGMII1      = 0x4,
17         SERDES_UNIT_SGMII2      = 0x5,
18         SERDES_UNIT_SGMII3      = 0x6,
19         SERDES_UNIT_QSGMII      = 0x7,
20         SERDES_UNIT_SETM        = 0x8,
21         SERDES_LAST_UNIT
22 } MV_BIN_SERDES_UNIT_INDX;
23
24
25 typedef enum {
26         PEX_BUS_DISABLED        = 0,
27         PEX_BUS_MODE_X1         = 1,
28         PEX_BUS_MODE_X4         = 2,
29         PEX_BUS_MODE_X8         = 3
30 } MV_PEX_UNIT_CFG;
31
32 typedef enum pex_type {
33         MV_PEX_ROOT_COMPLEX,    /* root complex device */
34         MV_PEX_END_POINT        /* end point device */
35 } MV_PEX_TYPE;
36
37 typedef struct serdes_change_m_phy {
38         MV_BIN_SERDES_UNIT_INDX type;
39         u32 reg_low_speed;
40         u32 val_low_speed;
41         u32 reg_hi_speed;
42         u32 val_hi_speed;
43 } MV_SERDES_CHANGE_M_PHY;
44
45 /*
46  * Configuration per SERDES line. Each nibble is MV_SERDES_LINE_TYPE
47  */
48 typedef struct board_serdes_conf {
49         MV_PEX_TYPE pex_type; /* MV_PEX_ROOT_COMPLEX MV_PEX_END_POINT */
50         u32 line0_7; /* Lines 0 to 7 SERDES MUX one nibble per line */
51         u32 line8_15; /* Lines 8 to 15 SERDES MUX one nibble per line */
52         MV_PEX_UNIT_CFG pex_mode[4];
53
54         /*
55          * Bus speed - one bit per SERDES line:
56          *              Low speed (0)           High speed (1)
57          * PEX          2.5 G (10 bit)          5 G (20 bit)
58          * SATA         1.5 G                   3 G
59          * SGMII        1.25 Gbps               3.125 Gbps
60          */
61         u32     bus_speed;
62
63         MV_SERDES_CHANGE_M_PHY *serdes_m_phy_change;
64 } MV_BIN_SERDES_CFG;
65
66
67 #define BIN_SERDES_CFG {        \
68         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 0 */       \
69         {0, 1, -1 , -1, -1, -1, -1, -1,  2}, /* Lane 1 */       \
70         {0, 1, -1 ,  2, -1, -1, -1, -1,  3}, /* Lane 2 */       \
71         {0, 1, -1 , -1,  2, -1, -1,  3, -1}, /* Lane 3 */       \
72         {0, 1,  2 , -1, -1,  3, -1, -1,  4}, /* Lane 4 */       \
73         {0, 1,  2 , -1,  3, -1, -1,  4, -1}, /* Lane 5 */       \
74         {0, 1,  2 ,  4, -1,  3, -1, -1, -1}, /* Lane 6 */       \
75         {0, 1, -1 ,  2, -1, -1,  3, -1,  4}, /* Lane 7*/        \
76         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 8 */       \
77         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 9 */       \
78         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 10 */      \
79         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 11 */      \
80         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 12 */      \
81         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 13 */      \
82         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 14 */      \
83         {0, 1, -1 , -1, -1, -1, -1, -1, -1}, /* Lane 15 */      \
84 }
85
86 #endif /* __HIGHSPEED_ENV_SPEC_H */