mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
drm/xe: Implement a local xe_mmio_wait32
Then, move the i915_utils.h include to its user. The overall goal is to kill all the usages of the i915_utils stuff. Yes, wait_for also depends on <linux/delay.h>, so they go together to where it is needed. It will be likely needed anyway directly for udelay or usleep_range. Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com>
This commit is contained in:
parent
dd08ebf6c3
commit
0f06dc1019
|
|
@ -10,6 +10,12 @@
|
|||
#include "xe_mmio.h"
|
||||
#include "gt/intel_gt_regs.h"
|
||||
|
||||
/*
|
||||
* FIXME: This header has been deemed evil and we need to kill it. Temporarily
|
||||
* including so we can use '__mask_next_bit'.
|
||||
*/
|
||||
#include "i915_utils.h"
|
||||
|
||||
#define XE_FORCE_WAKE_ACK_TIMEOUT_MS 50
|
||||
|
||||
static struct xe_gt *
|
||||
|
|
|
|||
|
|
@ -11,6 +11,13 @@
|
|||
|
||||
#include "gt/intel_gt_regs.h"
|
||||
|
||||
#include <linux/delay.h>
|
||||
/*
|
||||
* FIXME: This header has been deemed evil and we need to kill it. Temporar
|
||||
* including so we can use 'wait_for'.
|
||||
*/
|
||||
#include "i915_utils.h"
|
||||
|
||||
/**
|
||||
* DOC: GT Multicast/Replicated (MCR) Register Support
|
||||
*
|
||||
|
|
|
|||
|
|
@ -22,6 +22,13 @@
|
|||
#include "i915_reg_defs.h"
|
||||
#include "gt/intel_gt_regs.h"
|
||||
|
||||
#include <linux/delay.h>
|
||||
/*
|
||||
* FIXME: This header has been deemed evil and we need to kill it. Temporarily
|
||||
* including so we can use 'wait_for' and range_overflow_t.
|
||||
*/
|
||||
#include "i915_utils.h"
|
||||
|
||||
/* TODO: move to common file */
|
||||
#define GUC_PVC_MOCS_INDEX_MASK REG_GENMASK(25, 24)
|
||||
#define PVC_MOCS_UC_INDEX 1
|
||||
|
|
|
|||
|
|
@ -16,6 +16,13 @@
|
|||
#include "i915_reg_defs.h"
|
||||
#include "i915_reg.h"
|
||||
|
||||
#include <linux/delay.h>
|
||||
/*
|
||||
* FIXME: This header has been deemed evil and we need to kill it. Temporarily
|
||||
* including so we can use 'wait_for'.
|
||||
*/
|
||||
#include "i915_utils.h"
|
||||
|
||||
#include "intel_mchbar_regs.h"
|
||||
|
||||
/* For GEN6_RP_STATE_CAP.reg to be merged when the definition moves to Xe */
|
||||
|
|
|
|||
|
|
@ -10,13 +10,6 @@
|
|||
|
||||
#include "xe_gt_types.h"
|
||||
|
||||
/*
|
||||
* FIXME: This header has been deemed evil and we need to kill it. Temporarily
|
||||
* including so we can use 'wait_for' and unblock initial development. A follow
|
||||
* should replace 'wait_for' with a sane version and drop including this header.
|
||||
*/
|
||||
#include "i915_utils.h"
|
||||
|
||||
struct drm_device;
|
||||
struct drm_file;
|
||||
struct xe_device;
|
||||
|
|
@ -93,8 +86,26 @@ static inline int xe_mmio_wait32(struct xe_gt *gt,
|
|||
u32 reg, u32 val,
|
||||
u32 mask, u32 timeout_ms)
|
||||
{
|
||||
return wait_for((xe_mmio_read32(gt, reg) & mask) == val,
|
||||
timeout_ms);
|
||||
ktime_t cur = ktime_get_raw();
|
||||
const ktime_t end = ktime_add_ms(cur, timeout_ms);
|
||||
s64 wait = 10;
|
||||
|
||||
for (;;) {
|
||||
if ((xe_mmio_read32(gt, reg) & mask) == val)
|
||||
return 0;
|
||||
|
||||
cur = ktime_get_raw();
|
||||
if (!ktime_before(cur, end))
|
||||
return -ETIMEDOUT;
|
||||
|
||||
if (ktime_after(ktime_add_us(cur, wait), end))
|
||||
wait = ktime_us_delta(end, cur);
|
||||
|
||||
usleep_range(wait, wait << 1);
|
||||
wait <<= 1;
|
||||
}
|
||||
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
int xe_mmio_ioctl(struct drm_device *dev, void *data,
|
||||
|
|
|
|||
|
|
@ -11,6 +11,13 @@
|
|||
|
||||
#include <linux/errno.h>
|
||||
|
||||
#include <linux/delay.h>
|
||||
/*
|
||||
* FIXME: This header has been deemed evil and we need to kill it. Temporarily
|
||||
* including so we can use 'wait_for'.
|
||||
*/
|
||||
#include "i915_utils.h"
|
||||
|
||||
/**
|
||||
* DOC: PCODE
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user