Skip to content

Commit ab69434

Browse files
jannaumarcan
authored andcommitted
drm: apple: iomfb: Do not match/create PMU service for dcpext
Signed-off-by: Janne Grunau <j@jannau.net>
1 parent 00f0043 commit ab69434

5 files changed

Lines changed: 23 additions & 2 deletions

File tree

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,9 @@ struct apple_dcp {
183183
/* clear all surfaces on init */
184184
bool surfaces_cleared;
185185

186+
/* is dcpext / requires dptx */
187+
bool is_dptx;
188+
186189
/* Modes valid for the connected display */
187190
struct dcp_display_mode *modes;
188191
unsigned int nr_modes;

drivers/gpu/drm/apple/dcp.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,8 @@ static int dcp_comp_bind(struct device *dev, struct device *main, void *data)
701701
if (IS_ERR(dcp->coproc_reg))
702702
return PTR_ERR(dcp->coproc_reg);
703703

704+
dcp->is_dptx = dcp->phy != NULL;
705+
704706
of_property_read_u32(dev->of_node, "apple,dcp-index",
705707
&dcp->index);
706708
of_property_read_u32(dev->of_node, "apple,dptx-phy",

drivers/gpu/drm/apple/iomfb_template.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ static void complete_vi_set_temperature_hint(struct apple_dcp *dcp, void *out, v
135135
static bool iomfbep_cb_match_pmu_service(struct apple_dcp *dcp, int tag, void *out, void *in)
136136
{
137137
trace_iomfb_callback(dcp, tag, __func__);
138+
139+
if (dcp->is_dptx)
140+
return true;
141+
138142
iomfb_a358_vi_set_temperature_hint(dcp, false,
139143
complete_vi_set_temperature_hint,
140144
NULL);
@@ -158,6 +162,12 @@ static bool iomfbep_cb_match_pmu_service_2(struct apple_dcp *dcp, int tag, void
158162
{
159163
trace_iomfb_callback(dcp, tag, __func__);
160164

165+
if (dcp->is_dptx) {
166+
u8 *ret = out;
167+
ret[0] = 1;
168+
return true;
169+
}
170+
161171
iomfb_a131_pmu_service_matched(dcp, false, complete_pmu_service_matched,
162172
out);
163173

@@ -1044,6 +1054,11 @@ dcpep_cb_get_tiling_state(struct apple_dcp *dcp,
10441054
};
10451055
}
10461056

1057+
static u8 dcpep_cb_create_pmu_service(struct apple_dcp *dcp)
1058+
{
1059+
return !dcp->is_dptx;
1060+
}
1061+
10471062
static u8 dcpep_cb_create_backlight_service(struct apple_dcp *dcp)
10481063
{
10491064
return dcp_has_panel(dcp);
@@ -1101,6 +1116,7 @@ TRAMPOLINE_IN(trampoline_pr_publish, iomfb_cb_pr_publish,
11011116
struct iomfb_property);
11021117
TRAMPOLINE_INOUT(trampoline_get_tiling_state, dcpep_cb_get_tiling_state,
11031118
struct dcpep_get_tiling_state_req, struct dcpep_get_tiling_state_resp);
1119+
TRAMPOLINE_OUT(trampoline_create_pmu_service, dcpep_cb_create_pmu_service, u8);
11041120
TRAMPOLINE_OUT(trampoline_create_backlight_service, dcpep_cb_create_backlight_service, u8);
11051121

11061122
/*

drivers/gpu/drm/apple/iomfb_v12_3.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ static const iomfb_cb_handler cb_handlers[IOMFB_MAX_CB] = {
4848
[106] = trampoline_nop, /* remove_property */
4949
[107] = trampoline_true, /* create_provider_service */
5050
[108] = trampoline_true, /* create_product_service */
51-
[109] = trampoline_true, /* create_pmu_service */
51+
[109] = trampoline_create_pmu_service,
5252
[110] = trampoline_true, /* create_iomfb_service */
5353
[111] = trampoline_create_backlight_service,
5454
[116] = dcpep_cb_boot_1,

drivers/gpu/drm/apple/iomfb_v13_3.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ static const iomfb_cb_handler cb_handlers[IOMFB_MAX_CB] = {
5050
[107] = trampoline_nop, /* remove_property */
5151
[108] = trampoline_true, /* create_provider_service */
5252
[109] = trampoline_true, /* create_product_service */
53-
[110] = trampoline_true, /* create_pmu_service */
53+
[110] = trampoline_create_pmu_service,
5454
[111] = trampoline_true, /* create_iomfb_service */
5555
[112] = trampoline_create_backlight_service,
5656
[113] = trampoline_true, /* create_nvram_servce? */

0 commit comments

Comments
 (0)