Skip to content

Commit 2547c2e

Browse files
jannaumarcan
authored andcommitted
drm: apple: dptx: Port APCALL to macOS 13.3 firmware
The 13.3 firmware has an additional get_max_lane_count call inserted with ID 10. Signed-off-by: Janne Grunau <j@jannau.net>
1 parent cd4a189 commit 2547c2e

3 files changed

Lines changed: 40 additions & 14 deletions

File tree

drivers/gpu/drm/apple/dptxep.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,13 @@ struct dptxport_apcall_link_rate {
2828
u8 _unk1[12];
2929
} __attribute__((packed));
3030

31+
struct dptxport_apcall_lane_count {
32+
__le32 retcode;
33+
u8 _unk0[12];
34+
__le64 lane_count;
35+
u8 _unk1[8];
36+
} __attribute__((packed));
37+
3138
struct dptxport_apcall_get_support {
3239
__le32 retcode;
3340
u8 _unk0[12];
@@ -157,6 +164,20 @@ static int dptxport_call_get_max_link_rate(struct apple_epic_service *service,
157164
return 0;
158165
}
159166

167+
static int dptxport_call_get_max_lane_count(struct apple_epic_service *service,
168+
void *reply_, size_t reply_size)
169+
{
170+
struct dptxport_apcall_lane_count *reply = reply_;
171+
172+
if (reply_size < sizeof(*reply))
173+
return -EINVAL;
174+
175+
reply->retcode = cpu_to_le32(0);
176+
reply->lane_count = cpu_to_le64(4);
177+
178+
return 0;
179+
}
180+
160181
static int dptxport_call_get_link_rate(struct apple_epic_service *service,
161182
void *reply_, size_t reply_size)
162183
{
@@ -310,6 +331,8 @@ static int dptxport_call(struct apple_epic_service *service, u32 idx,
310331
case DPTX_APCALL_SET_LINK_RATE:
311332
return dptxport_call_set_link_rate(service, data, data_size,
312333
reply, reply_size);
334+
case DPTX_APCALL_GET_MAX_LANE_COUNT:
335+
return dptxport_call_get_max_lane_count(service, reply, reply_size);
313336
case DPTX_APCALL_GET_SUPPORTS_HPD:
314337
return dptxport_call_get_supports_hpd(service, reply,
315338
reply_size);

drivers/gpu/drm/apple/dptxep.h

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,21 @@ enum dptx_apcall {
1515
DPTX_APCALL_GET_MAX_LINK_RATE = 7,
1616
DPTX_APCALL_GET_LINK_RATE = 8,
1717
DPTX_APCALL_SET_LINK_RATE = 9,
18-
DPTX_APCALL_GET_ACTIVE_LANE_COUNT = 10,
19-
DPTX_APCALL_SET_ACTIVE_LANE_COUNT = 11,
20-
DPTX_APCALL_GET_SUPPORTS_DOWN_SPREAD = 12,
21-
DPTX_APCALL_GET_DOWN_SPREAD = 13,
22-
DPTX_APCALL_SET_DOWN_SPREAD = 14,
23-
DPTX_APCALL_GET_SUPPORTS_LANE_MAPPING = 15,
24-
DPTX_APCALL_SET_LANE_MAP = 16,
25-
DPTX_APCALL_GET_SUPPORTS_HPD = 17,
26-
DPTX_APCALL_FORCE_HOTPLUG_DETECT = 18,
27-
DPTX_APCALL_INACTIVE_SINK_DETECTED = 19,
28-
DPTX_APCALL_SET_TILED_DISPLAY_HINTS = 20,
29-
DPTX_APCALL_DEVICE_NOT_RESPONDING = 21,
30-
DPTX_APCALL_DEVICE_BUSY_TIMEOUT = 22,
31-
DPTX_APCALL_DEVICE_NOT_STARTED = 23,
18+
DPTX_APCALL_GET_MAX_LANE_COUNT = 10,
19+
DPTX_APCALL_GET_ACTIVE_LANE_COUNT = 11,
20+
DPTX_APCALL_SET_ACTIVE_LANE_COUNT = 12,
21+
DPTX_APCALL_GET_SUPPORTS_DOWN_SPREAD = 13,
22+
DPTX_APCALL_GET_DOWN_SPREAD = 14,
23+
DPTX_APCALL_SET_DOWN_SPREAD = 15,
24+
DPTX_APCALL_GET_SUPPORTS_LANE_MAPPING = 16,
25+
DPTX_APCALL_SET_LANE_MAP = 17,
26+
DPTX_APCALL_GET_SUPPORTS_HPD = 18,
27+
DPTX_APCALL_FORCE_HOTPLUG_DETECT = 19,
28+
DPTX_APCALL_INACTIVE_SINK_DETECTED = 20,
29+
DPTX_APCALL_SET_TILED_DISPLAY_HINTS = 21,
30+
DPTX_APCALL_DEVICE_NOT_RESPONDING = 22,
31+
DPTX_APCALL_DEVICE_BUSY_TIMEOUT = 23,
32+
DPTX_APCALL_DEVICE_NOT_STARTED = 24,
3233
};
3334

3435
#define DCPDPTX_REMOTE_PORT_CORE GENMASK(3, 0)

drivers/gpu/drm/apple/trace.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
{ DPTX_APCALL_GET_MAX_LINK_RATE, "get_max_link_rate" }, \
5353
{ DPTX_APCALL_GET_LINK_RATE, "get_link_rate" }, \
5454
{ DPTX_APCALL_SET_LINK_RATE, "set_link_rate" }, \
55+
{ DPTX_APCALL_GET_MAX_LANE_COUNT, \
56+
"get_max_lane_count" }, \
5557
{ DPTX_APCALL_GET_ACTIVE_LANE_COUNT, \
5658
"get_active_lane_count" }, \
5759
{ DPTX_APCALL_SET_ACTIVE_LANE_COUNT, \

0 commit comments

Comments
 (0)