Skip to content

Commit bb4a143

Browse files
committed
drm: apple: Revert "Use delayed work for debounced oob HPD"
With HPD debounce in tipd/cd321x this is no longer necessary. Signed-off-by: Janne Grunau <j@jannau.net>
1 parent 2197251 commit bb4a143

2 files changed

Lines changed: 3 additions & 69 deletions

File tree

drivers/gpu/drm/apple/dcp-internal.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,6 @@ struct apple_dcp_hw_data {
112112
u32 num_dptx_ports;
113113
};
114114

115-
enum dcp_hdp_state {
116-
DCP_HPD_UNKNOWN,
117-
DCP_HPD_OOB_CONNECTED,
118-
DCP_HPD_OOB_DISCONNECTED,
119-
};
120-
121115
/* TODO: move IOMFB members to its own struct */
122116
struct apple_dcp {
123117
struct device *dev;
@@ -263,12 +257,6 @@ struct apple_dcp {
263257
struct gpio_desc *dp2hdmi_pwren;
264258

265259
struct mutex hpd_mutex;
266-
struct mutex hpd_deferred_mutex;
267-
struct delayed_work hpd_wq;
268-
struct {
269-
enum dcp_hdp_state state;
270-
u32 port;
271-
} hpd;
272260

273261
u32 dptx_phy;
274262
u32 dptx_die;

drivers/gpu/drm/apple/dcp.c

Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -434,69 +434,18 @@ static int dcp_dptx_disconnect(struct apple_dcp *dcp, u32 port)
434434
return 0;
435435
}
436436

437-
static void dcp_deferred_hpd_work(struct work_struct *work)
438-
{
439-
struct apple_dcp *dcp = container_of(to_delayed_work(work), struct apple_dcp, hpd_wq);
440-
int err;
441-
442-
guard(mutex)(&dcp->hpd_deferred_mutex);
443-
dev_info(dcp->dev, "%s\n", __func__);
444-
445-
switch (dcp->hpd.state) {
446-
case DCP_HPD_OOB_CONNECTED:
447-
err = dcp_dptx_connect(dcp, dcp->hpd.port);
448-
if (err < 0)
449-
dev_warn(dcp->dev, "OOB HPD connect failed:%d\n", err);
450-
break;
451-
case DCP_HPD_OOB_DISCONNECTED:
452-
dptxport_set_hpd(dcp->dptxport[dcp->hpd.port].service, false);
453-
err = dcp_dptx_disconnect(dcp, dcp->hpd.port);
454-
if (err < 0)
455-
dev_warn(dcp->dev, "OOB HPD disconnect failed:%d\n", err);
456-
break;
457-
default:
458-
return;
459-
}
460-
}
461-
462-
static int dcp_dptx_schedule_hdp_work(struct apple_dcp *dcp,
463-
enum dcp_hdp_state state, u32 port)
464-
{
465-
guard(mutex)(&dcp->hpd_deferred_mutex);
466-
dcp->hpd.port = port;
467-
dcp->hpd.state = state;
468-
469-
if (state == DCP_HPD_OOB_CONNECTED)
470-
{
471-
guard(mutex)(&dcp->hpd_mutex);
472-
if (dcp->dptxport[port].connected)
473-
return 0;
474-
475-
if (delayed_work_pending(&dcp->hpd_wq))
476-
timer_reduce(&dcp->hpd_wq.timer, msecs_to_jiffies(100));
477-
else
478-
schedule_delayed_work(&dcp->hpd_wq, msecs_to_jiffies(2000));
479-
} else {
480-
if (!delayed_work_pending(&dcp->hpd_wq))
481-
schedule_delayed_work(&dcp->hpd_wq, msecs_to_jiffies(25));
482-
}
483-
484-
return 0;
485-
}
486-
487437
int dcp_dptx_connect_oob(struct platform_device *pdev, u32 port)
488438
{
489439
struct apple_dcp *dcp = platform_get_drvdata(pdev);
490-
491-
return dcp_dptx_schedule_hdp_work(dcp, DCP_HPD_OOB_CONNECTED, port);
440+
return dcp_dptx_connect(dcp, port);
492441
}
493442
EXPORT_SYMBOL_GPL(dcp_dptx_connect_oob);
494443

495444
int dcp_dptx_disconnect_oob(struct platform_device *pdev, u32 port)
496445
{
497446
struct apple_dcp *dcp = platform_get_drvdata(pdev);
498-
499-
return dcp_dptx_schedule_hdp_work(dcp, DCP_HPD_OOB_DISCONNECTED, port);
447+
dptxport_set_hpd(dcp->dptxport[port].service, false);
448+
return dcp_dptx_disconnect(dcp, port);
500449
}
501450
EXPORT_SYMBOL_GPL(dcp_dptx_disconnect_oob);
502451

@@ -1021,8 +970,6 @@ static int dcp_comp_bind(struct device *dev, struct device *main, void *data)
1021970
dev_info(dev, "DCP index:%u dptx target phy: %u dptx die: %u\n",
1022971
dcp->index, dcp->dptx_phy, dcp->dptx_die);
1023972
mutex_init(&dcp->hpd_mutex);
1024-
mutex_init(&dcp->hpd_deferred_mutex);
1025-
INIT_DELAYED_WORK(&dcp->hpd_wq, dcp_deferred_hpd_work);
1026973

1027974
if (!show_notch)
1028975
ret = of_property_read_u32(dev->of_node, "apple,notch-height",
@@ -1166,7 +1113,6 @@ static void dcp_comp_unbind(struct device *dev, struct device *main, void *data)
11661113
cancel_work_sync(&dcp->bl_update_wq);
11671114
}
11681115
cancel_work_sync(&dcp->vblank_wq);
1169-
cancel_delayed_work_sync(&dcp->hpd_wq);
11701116

11711117
devm_clk_put(dev, dcp->clk);
11721118
dcp->clk = NULL;

0 commit comments

Comments
 (0)