mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-09-01 18:17:57 +00:00
drm/xe/pcode: add struct drm_device based interface
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>
This commit is contained in:
parent
747b57e7b6
commit
d9465cc8ac
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user