@@ -257,17 +257,19 @@ static int dptxport_call_get_max_lane_count(struct apple_epic_service *service,
257257 return - EINVAL ;
258258
259259 reply -> retcode = cpu_to_le32 (0 );
260- reply -> lane_count = cpu_to_le64 (4 );
260+ reply -> lane_count = cpu_to_le64 (2 );
261261
262262 ret = phy_validate (dptx -> atcphy , PHY_MODE_DP , 0 , & phy_ops );
263263 if (ret < 0 || phy_ops .dp .lanes < 2 ) {
264264 // phy_validate might return 0 lines if atc-phy is not yet
265265 // switched to DP alt mode
266266 dev_dbg (service -> ep -> dcp -> dev , "get_max_lane_count: "
267267 "phy_validate ret:%d lanes:%d\n" , ret , phy_ops .dp .lanes );
268+ dptx -> lane_count = 0 ;
268269 } else {
269270 reply -> retcode = cpu_to_le32 (0 );
270271 reply -> lane_count = cpu_to_le64 (phy_ops .dp .lanes );
272+ dptx -> lane_count = phy_ops .dp .lanes ;
271273 }
272274
273275 return 0 ;
@@ -278,6 +280,7 @@ static int dptxport_call_set_active_lane_count(struct apple_epic_service *servic
278280 void * reply_ , size_t reply_size )
279281{
280282 struct dptx_port * dptx = service -> cookie ;
283+ struct apple_dcp * dcp = service -> ep -> dcp ;
281284 const struct dptxport_apcall_set_active_lane_count * request = data ;
282285 struct dptxport_apcall_set_active_lane_count * reply = reply_ ;
283286 int ret = 0 ;
@@ -290,34 +293,26 @@ static int dptxport_call_set_active_lane_count(struct apple_epic_service *servic
290293
291294 u64 lane_count = cpu_to_le64 (request -> lane_count );
292295
296+ if (dptx -> lane_count < lane_count )
297+ dev_err (dcp -> dev , "set_active_lane_count: unexpected lane "
298+ "count:%llu phy: %d\n" , lane_count , dptx -> lane_count );
299+
293300 switch (lane_count ) {
294301 case 0 ... 2 :
295302 case 4 :
296303 dptx -> phy_ops .dp .lanes = lane_count ;
297- dptx -> phy_ops .dp .set_lanes = 1 ;
298304 break ;
299305 default :
300- dev_err (service -> ep -> dcp -> dev , "set_active_lane_count: invalid lane count:%llu\n" , lane_count );
306+ dev_err (dcp -> dev , "set_active_lane_count: invalid lane count:%llu\n" , lane_count );
301307 retcode = 1 ;
302308 lane_count = 0 ;
303309 break ;
304310 }
305311
306- if (dptx -> phy_ops .dp .set_lanes ) {
307- if (dptx -> atcphy ) {
308- ret = phy_configure (dptx -> atcphy , & dptx -> phy_ops );
309- if (ret )
310- return ret ;
311- }
312- dptx -> phy_ops .dp .set_lanes = 0 ;
313- }
314-
315- dptx -> lane_count = lane_count ;
316-
317312 reply -> retcode = cpu_to_le32 (retcode );
318313 reply -> lane_count = cpu_to_le64 (lane_count );
319314
320- if (dptx -> lane_count > 0 )
315+ if (lane_count > 0 )
321316 complete (& dptx -> linkcfg_completion );
322317
323318 return ret ;
0 commit comments