Skip to content

Commit 07e4bfb

Browse files
committed
drm: apple: dptx: Tidy up lane count handling
Do not try to configure the DP phy's lane count as this is configured by cd321x via the USB type-c mux. Signed-off-by: Janne Grunau <j@jannau.net>
1 parent 4765411 commit 07e4bfb

1 file changed

Lines changed: 10 additions & 15 deletions

File tree

drivers/gpu/drm/apple/dptxep.c

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)