1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* These definitions are used to describe PCIe bifurcation and display physical
* connector types connected to the SOC.
*/
#ifndef __PI_PICASSO_PLATFORM_DESCRIPTORS_H__
#define __PI_PICASSO_PLATFORM_DESCRIPTORS_H__
/* Engine descriptor type */
typedef enum {
UNUSED_ENGINE = 0x00, // Unused descriptor
PCIE_ENGINE = 0x01, // PCIe port
USB_ENGINE = 0x02, // USB port
SATA_ENGINE = 0x03, // SATA
DP_ENGINE = 0x08, // Digital Display
ETHERNET_ENGINE = 0x10, // Ethernet (GBe, XGBe)
MAX_ENGINE // Max engine type for boundary check.
} dxio_engine_type;
/* PCIe link capability/speed */
typedef enum {
GEN_MAX = 0, // Maximum supported
GEN1,
GEN2,
GEN3,
GEN_INVALID // Max Gen for boundary check
} dxio_link_speed_cap;
/* SATA ChannelType initialization */
typedef enum {
SATA_CHANNEL_OTHER = 0, // Default Channel Type
SATA_CHANNEL_SHORT, // Short Trace Channel Type
SATA_CHANNEL_LONG // Long Trace Channel Type
} dxio_sata_channel_type;
/* CLKREQ for PCIe type descriptors */
typedef enum {
CLK_DISABLE = 0x00,
CLK_REQ0,
CLK_REQ1,
CLK_REQ2,
CLK_REQ3,
CLK_REQ4,
CLK_REQ5,
CLK_REQ6,
CLK_REQ7,
CLK_REQ8,
CLK_REQGFX = 0x0c,
} cpm_clk_req;
/* PCIe link ASPM initialization */
typedef enum {
ASPM_DISABLED = 0, // Disabled
ASPM_L0s, // PCIe L0s link state
ASPM_L1, // PCIe L1 link state
ASPM_L0sL1, // PCIe L0s & L1 link state
ASPM_MAX // Not valid value, used to verify input
} dxio_aspm_type;
/* DDI Aux channel */
typedef enum {
AUX1 = 0,
AUX2,
AUX3,
AUX4,
AUX5,
AUX6,
AUX_MAX // Not valid value, used to verify input
} pcie_aux_type;
/* DDI Hdp Index */
typedef enum {
HDP1 = 0,
HDP2,
HDP3,
HDP4,
HDP5,
HDP6,
HDP_MAX // Not valid value, used to verify input
} pcie_hdp_type;
/* DDI display connector type */
typedef enum {
DP = 0, // DP
EDP, // eDP
SINGLE_LINK_DVI, // Single Link DVI-D
DUAL_LINK_DVI, // Dual Link DVI-D
HDMI, // HDMI
DP_TO_VGA, // DP-to-VGA
DP_TO_LVDS, // DP-to-LVDS
NUTMEG_DP_TO_VGA, // Hudson-2 NutMeg DP-to-VGA
SINGLE_LINK_DVI_I, // Single Link DVI-I
CRT, // CRT (VGA)
LVDS, // LVDS
EDP_TO_LVDS, // eDP-to-LVDS translator chip without AMD SW init
EDP_TO_LVDS_SW, // eDP-to-LVDS translator which requires AMD SW init
AUTO_DETECT, // VBIOS auto detect connector type
UNUSED_PTYPE, // UnusedType
MAX_CONNECTOR_TYPE // Not valid value, used to verify input
} pcie_connector_type;
/* Picasso DDI Descriptor: used for configuring display outputs */
typedef struct __packed {
uint8_t connector_type;
uint8_t aux_index;
uint8_t hdp_index;
uint8_t reserved;
} picasso_fsp_ddi_descriptor;
/* Picasso PCIe Descriptor: used for assigning lanes, bifurcation and other settings */
typedef struct __packed {
uint8_t engine_type;
uint8_t start_lane; // Start lane of the pci device
uint8_t end_lane; // End lane of the pci device
uint8_t gpio_group_id; // FCH reset number. 0 is global reset
unsigned int port_present :1; // Should be TRUE if train link
unsigned int reserved_3 :7;
unsigned int device_number :5; // Desired root port device number
unsigned int function_number :3; // Desired root port function number
unsigned int link_speed_capability :2;
unsigned int auto_spd_change :2;
unsigned int eq_preset :4;
unsigned int link_aspm :2;
unsigned int link_aspm_L1_1 :1;
unsigned int link_aspm_L1_2 :1;
unsigned int clk_req :4;
uint8_t link_hotplug;
uint8_t slot_power_limit;
unsigned int slot_power_limit_scale :2;
unsigned int reserved_4 :6;
unsigned int link_compliance_mode :1;
unsigned int link_safe_mode :1;
unsigned int sb_link :1;
unsigned int clk_pm_support :1;
unsigned int channel_type :3;
unsigned int turn_off_unused_lanes :1;
uint8_t reserved[4];
} picasso_fsp_pcie_descriptor;
#endif /* __PI_PICASSO_PLATFORM_DESCRIPTORS_H__ */
|