xref: /linux/drivers/gpu/drm/xe/display/xe_display_pcode.c (revision 4a57e0913e8c7fff407e97909f4ae48caa84d612)
1*b3a2a91aSJani Nikula // SPDX-License-Identifier: MIT
2*b3a2a91aSJani Nikula /* Copyright © 2026 Intel Corporation */
3*b3a2a91aSJani Nikula 
4*b3a2a91aSJani Nikula #include <drm/intel/display_parent_interface.h>
5*b3a2a91aSJani Nikula 
6*b3a2a91aSJani Nikula #include "xe_device.h"
7*b3a2a91aSJani Nikula #include "xe_pcode.h"
8*b3a2a91aSJani Nikula 
9*b3a2a91aSJani Nikula static int xe_display_pcode_read(struct drm_device *drm, u32 mbox, u32 *val, u32 *val1)
10*b3a2a91aSJani Nikula {
11*b3a2a91aSJani Nikula 	struct xe_device *xe = to_xe_device(drm);
12*b3a2a91aSJani Nikula 	struct xe_tile *tile = xe_device_get_root_tile(xe);
13*b3a2a91aSJani Nikula 
14*b3a2a91aSJani Nikula 	return xe_pcode_read(tile, mbox, val, val1);
15*b3a2a91aSJani Nikula }
16*b3a2a91aSJani Nikula 
17*b3a2a91aSJani Nikula static int xe_display_pcode_write_timeout(struct drm_device *drm, u32 mbox, u32 val, int timeout_ms)
18*b3a2a91aSJani Nikula {
19*b3a2a91aSJani Nikula 	struct xe_device *xe = to_xe_device(drm);
20*b3a2a91aSJani Nikula 	struct xe_tile *tile = xe_device_get_root_tile(xe);
21*b3a2a91aSJani Nikula 
22*b3a2a91aSJani Nikula 	return xe_pcode_write_timeout(tile, mbox, val, timeout_ms);
23*b3a2a91aSJani Nikula }
24*b3a2a91aSJani Nikula 
25*b3a2a91aSJani Nikula static int xe_display_pcode_request(struct drm_device *drm, u32 mbox, u32 request,
26*b3a2a91aSJani Nikula 				    u32 reply_mask, u32 reply, int timeout_base_ms)
27*b3a2a91aSJani Nikula {
28*b3a2a91aSJani Nikula 	struct xe_device *xe = to_xe_device(drm);
29*b3a2a91aSJani Nikula 	struct xe_tile *tile = xe_device_get_root_tile(xe);
30*b3a2a91aSJani Nikula 
31*b3a2a91aSJani Nikula 	return xe_pcode_request(tile, mbox, request, reply_mask, reply, timeout_base_ms);
32*b3a2a91aSJani Nikula }
33*b3a2a91aSJani Nikula 
34*b3a2a91aSJani Nikula const struct intel_display_pcode_interface xe_display_pcode_interface = {
35*b3a2a91aSJani Nikula 	.read = xe_display_pcode_read,
36*b3a2a91aSJani Nikula 	.write = xe_display_pcode_write_timeout,
37*b3a2a91aSJani Nikula 	.request = xe_display_pcode_request,
38*b3a2a91aSJani Nikula };
39