]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/pcode: add struct drm_device based interface
authorJani Nikula <jani.nikula@intel.com>
Mon, 23 Jun 2025 11:43:46 +0000 (14:43 +0300)
committerJani Nikula <jani.nikula@intel.com>
Mon, 23 Jun 2025 18:45:16 +0000 (21:45 +0300)
In preparation for dropping the dependency on struct intel_uncore or
struct xe_tile from display code, add a struct drm_device based
interface to pcode.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://lore.kernel.org/r/eeaa9cc8438caab2e22f9cb2142fbc18cc0fd861.1750678991.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/xe/xe_pcode.c
drivers/gpu/drm/xe/xe_pcode.h

index 9189117fe825b6db305bcb7d52a0373d91fb2309..87323ad0cbbb22238c44feb71c2460ce73306927 100644 (file)
@@ -336,3 +336,29 @@ int xe_pcode_probe_early(struct xe_device *xe)
        return xe_pcode_ready(xe, false);
 }
 ALLOW_ERROR_INJECTION(xe_pcode_probe_early, ERRNO); /* See xe_pci_probe */
+
+/* Helpers with drm device */
+int intel_pcode_read(struct drm_device *drm, u32 mbox, u32 *val, u32 *val1)
+{
+       struct xe_device *xe = to_xe_device(drm);
+       struct xe_tile *tile = xe_device_get_root_tile(xe);
+
+       return xe_pcode_read(tile, mbox, val, val1);
+}
+
+int intel_pcode_write_timeout(struct drm_device *drm, u32 mbox, u32 val, int timeout_ms)
+{
+       struct xe_device *xe = to_xe_device(drm);
+       struct xe_tile *tile = xe_device_get_root_tile(xe);
+
+       return xe_pcode_write_timeout(tile, mbox, val, timeout_ms);
+}
+
+int intel_pcode_request(struct drm_device *drm, u32 mbox, u32 request,
+                       u32 reply_mask, u32 reply, int timeout_base_ms)
+{
+       struct xe_device *xe = to_xe_device(drm);
+       struct xe_tile *tile = xe_device_get_root_tile(xe);
+
+       return xe_pcode_request(tile, mbox, request, reply_mask, reply, timeout_base_ms);
+}
index de38f44f3201496ccb09907f6ce8a3972d8dc7ff..a5584c1c75f935427b5bdeda61ce9c8c52421eff 100644 (file)
@@ -7,8 +7,10 @@
 #define _XE_PCODE_H_
 
 #include <linux/types.h>
-struct xe_tile;
+
+struct drm_device;
 struct xe_device;
+struct xe_tile;
 
 void xe_pcode_init(struct xe_tile *tile);
 int xe_pcode_probe_early(struct xe_device *xe);
@@ -32,4 +34,12 @@ int xe_pcode_request(struct xe_tile *tile, u32 mbox, u32 request,
        | FIELD_PREP(PCODE_MB_PARAM1, param1)\
        | FIELD_PREP(PCODE_MB_PARAM2, param2))
 
+/* Helpers with drm device */
+int intel_pcode_read(struct drm_device *drm, u32 mbox, u32 *val, u32 *val1);
+int intel_pcode_write_timeout(struct drm_device *drm, u32 mbox, u32 val, int timeout_ms);
+#define intel_pcode_write(drm, mbox, val) \
+       intel_pcode_write_timeout((drm), (mbox), (val), 1)
+int intel_pcode_request(struct drm_device *drm, u32 mbox, u32 request,
+                       u32 reply_mask, u32 reply, int timeout_base_ms);
+
 #endif