@@ -2077,89 +2077,36 @@ static int sienna_cichlid_display_disable_memory_clock_switch(struct smu_context
2077
2077
return ret ;
2078
2078
}
2079
2079
2080
- static void sienna_cichlid_get_override_pcie_settings (struct smu_context * smu ,
2081
- uint32_t * gen_speed_override ,
2082
- uint32_t * lane_width_override )
2083
- {
2084
- struct amdgpu_device * adev = smu -> adev ;
2085
-
2086
- * gen_speed_override = 0xff ;
2087
- * lane_width_override = 0xff ;
2088
-
2089
- switch (adev -> pdev -> device ) {
2090
- case 0x73A0 :
2091
- case 0x73A1 :
2092
- case 0x73A2 :
2093
- case 0x73A3 :
2094
- case 0x73AB :
2095
- case 0x73AE :
2096
- /* Bit 7:0: PCIE lane width, 1 to 7 corresponds is x1 to x32 */
2097
- * lane_width_override = 6 ;
2098
- break ;
2099
- case 0x73E0 :
2100
- case 0x73E1 :
2101
- case 0x73E3 :
2102
- * lane_width_override = 4 ;
2103
- break ;
2104
- case 0x7420 :
2105
- case 0x7421 :
2106
- case 0x7422 :
2107
- case 0x7423 :
2108
- case 0x7424 :
2109
- * lane_width_override = 3 ;
2110
- break ;
2111
- default :
2112
- break ;
2113
- }
2114
- }
2115
-
2116
- #define MAX (a , b ) ((a) > (b) ? (a) : (b))
2117
-
2118
2080
static int sienna_cichlid_update_pcie_parameters (struct smu_context * smu ,
2119
2081
uint32_t pcie_gen_cap ,
2120
2082
uint32_t pcie_width_cap )
2121
2083
{
2122
2084
struct smu_11_0_dpm_context * dpm_context = smu -> smu_dpm .dpm_context ;
2123
2085
struct smu_11_0_pcie_table * pcie_table = & dpm_context -> dpm_tables .pcie_table ;
2124
- uint32_t gen_speed_override , lane_width_override ;
2125
- uint8_t * table_member1 , * table_member2 ;
2126
- uint32_t min_gen_speed , max_gen_speed ;
2127
- uint32_t min_lane_width , max_lane_width ;
2128
- uint32_t smu_pcie_arg ;
2086
+ u32 smu_pcie_arg ;
2129
2087
int ret , i ;
2130
2088
2131
- GET_PPTABLE_MEMBER (PcieGenSpeed , & table_member1 );
2132
- GET_PPTABLE_MEMBER (PcieLaneCount , & table_member2 );
2133
-
2134
- sienna_cichlid_get_override_pcie_settings (smu ,
2135
- & gen_speed_override ,
2136
- & lane_width_override );
2089
+ /* PCIE gen speed and lane width override */
2090
+ if (!amdgpu_device_pcie_dynamic_switching_supported ()) {
2091
+ if (pcie_table -> pcie_gen [NUM_LINK_LEVELS - 1 ] < pcie_gen_cap )
2092
+ pcie_gen_cap = pcie_table -> pcie_gen [NUM_LINK_LEVELS - 1 ];
2137
2093
2138
- /* PCIE gen speed override */
2139
- if (gen_speed_override != 0xff ) {
2140
- min_gen_speed = MIN (pcie_gen_cap , gen_speed_override );
2141
- max_gen_speed = MIN (pcie_gen_cap , gen_speed_override );
2142
- } else {
2143
- min_gen_speed = MAX (0 , table_member1 [0 ]);
2144
- max_gen_speed = MIN (pcie_gen_cap , table_member1 [1 ]);
2145
- min_gen_speed = min_gen_speed > max_gen_speed ?
2146
- max_gen_speed : min_gen_speed ;
2147
- }
2148
- pcie_table -> pcie_gen [0 ] = min_gen_speed ;
2149
- pcie_table -> pcie_gen [1 ] = max_gen_speed ;
2094
+ if (pcie_table -> pcie_lane [NUM_LINK_LEVELS - 1 ] < pcie_width_cap )
2095
+ pcie_width_cap = pcie_table -> pcie_lane [NUM_LINK_LEVELS - 1 ];
2150
2096
2151
- /* PCIE lane width override */
2152
- if (lane_width_override != 0xff ) {
2153
- min_lane_width = MIN (pcie_width_cap , lane_width_override );
2154
- max_lane_width = MIN (pcie_width_cap , lane_width_override );
2097
+ /* Force all levels to use the same settings */
2098
+ for (i = 0 ; i < NUM_LINK_LEVELS ; i ++ ) {
2099
+ pcie_table -> pcie_gen [i ] = pcie_gen_cap ;
2100
+ pcie_table -> pcie_lane [i ] = pcie_width_cap ;
2101
+ }
2155
2102
} else {
2156
- min_lane_width = MAX (1 , table_member2 [0 ]);
2157
- max_lane_width = MIN (pcie_width_cap , table_member2 [1 ]);
2158
- min_lane_width = min_lane_width > max_lane_width ?
2159
- max_lane_width : min_lane_width ;
2103
+ for (i = 0 ; i < NUM_LINK_LEVELS ; i ++ ) {
2104
+ if (pcie_table -> pcie_gen [i ] > pcie_gen_cap )
2105
+ pcie_table -> pcie_gen [i ] = pcie_gen_cap ;
2106
+ if (pcie_table -> pcie_lane [i ] > pcie_width_cap )
2107
+ pcie_table -> pcie_lane [i ] = pcie_width_cap ;
2108
+ }
2160
2109
}
2161
- pcie_table -> pcie_lane [0 ] = min_lane_width ;
2162
- pcie_table -> pcie_lane [1 ] = max_lane_width ;
2163
2110
2164
2111
for (i = 0 ; i < NUM_LINK_LEVELS ; i ++ ) {
2165
2112
smu_pcie_arg = (i << 16 |
0 commit comments