mirror of https://gitee.com/openkylin/linux.git
drm/i915/skl: Augment the latency debugfs files for SKL
v2: Use the gen >= 9 in the debugfs file condition (Ville) Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
a269c5839b
commit
97e94b22ed
|
@ -3523,7 +3523,7 @@ static const struct file_operations i915_display_crc_ctl_fops = {
|
||||||
.write = display_crc_ctl_write
|
.write = display_crc_ctl_write
|
||||||
};
|
};
|
||||||
|
|
||||||
static void wm_latency_show(struct seq_file *m, const uint16_t wm[5])
|
static void wm_latency_show(struct seq_file *m, const uint16_t wm[8])
|
||||||
{
|
{
|
||||||
struct drm_device *dev = m->private;
|
struct drm_device *dev = m->private;
|
||||||
int num_levels = ilk_wm_max_level(dev) + 1;
|
int num_levels = ilk_wm_max_level(dev) + 1;
|
||||||
|
@ -3534,13 +3534,17 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[5])
|
||||||
for (level = 0; level < num_levels; level++) {
|
for (level = 0; level < num_levels; level++) {
|
||||||
unsigned int latency = wm[level];
|
unsigned int latency = wm[level];
|
||||||
|
|
||||||
/* WM1+ latency values in 0.5us units */
|
/*
|
||||||
if (level > 0)
|
* - WM1+ latency values in 0.5us units
|
||||||
|
* - latencies are in us on gen9
|
||||||
|
*/
|
||||||
|
if (INTEL_INFO(dev)->gen >= 9)
|
||||||
|
latency *= 10;
|
||||||
|
else if (level > 0)
|
||||||
latency *= 5;
|
latency *= 5;
|
||||||
|
|
||||||
seq_printf(m, "WM%d %u (%u.%u usec)\n",
|
seq_printf(m, "WM%d %u (%u.%u usec)\n",
|
||||||
level, wm[level],
|
level, wm[level], latency / 10, latency % 10);
|
||||||
latency / 10, latency % 10);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
drm_modeset_unlock_all(dev);
|
drm_modeset_unlock_all(dev);
|
||||||
|
@ -3549,8 +3553,15 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[5])
|
||||||
static int pri_wm_latency_show(struct seq_file *m, void *data)
|
static int pri_wm_latency_show(struct seq_file *m, void *data)
|
||||||
{
|
{
|
||||||
struct drm_device *dev = m->private;
|
struct drm_device *dev = m->private;
|
||||||
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||||
|
const uint16_t *latencies;
|
||||||
|
|
||||||
wm_latency_show(m, to_i915(dev)->wm.pri_latency);
|
if (INTEL_INFO(dev)->gen >= 9)
|
||||||
|
latencies = dev_priv->wm.skl_latency;
|
||||||
|
else
|
||||||
|
latencies = to_i915(dev)->wm.pri_latency;
|
||||||
|
|
||||||
|
wm_latency_show(m, latencies);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3558,8 +3569,15 @@ static int pri_wm_latency_show(struct seq_file *m, void *data)
|
||||||
static int spr_wm_latency_show(struct seq_file *m, void *data)
|
static int spr_wm_latency_show(struct seq_file *m, void *data)
|
||||||
{
|
{
|
||||||
struct drm_device *dev = m->private;
|
struct drm_device *dev = m->private;
|
||||||
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||||
|
const uint16_t *latencies;
|
||||||
|
|
||||||
wm_latency_show(m, to_i915(dev)->wm.spr_latency);
|
if (INTEL_INFO(dev)->gen >= 9)
|
||||||
|
latencies = dev_priv->wm.skl_latency;
|
||||||
|
else
|
||||||
|
latencies = to_i915(dev)->wm.spr_latency;
|
||||||
|
|
||||||
|
wm_latency_show(m, latencies);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3567,8 +3585,15 @@ static int spr_wm_latency_show(struct seq_file *m, void *data)
|
||||||
static int cur_wm_latency_show(struct seq_file *m, void *data)
|
static int cur_wm_latency_show(struct seq_file *m, void *data)
|
||||||
{
|
{
|
||||||
struct drm_device *dev = m->private;
|
struct drm_device *dev = m->private;
|
||||||
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||||
|
const uint16_t *latencies;
|
||||||
|
|
||||||
wm_latency_show(m, to_i915(dev)->wm.cur_latency);
|
if (INTEL_INFO(dev)->gen >= 9)
|
||||||
|
latencies = dev_priv->wm.skl_latency;
|
||||||
|
else
|
||||||
|
latencies = to_i915(dev)->wm.cur_latency;
|
||||||
|
|
||||||
|
wm_latency_show(m, latencies);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3604,11 +3629,11 @@ static int cur_wm_latency_open(struct inode *inode, struct file *file)
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t wm_latency_write(struct file *file, const char __user *ubuf,
|
static ssize_t wm_latency_write(struct file *file, const char __user *ubuf,
|
||||||
size_t len, loff_t *offp, uint16_t wm[5])
|
size_t len, loff_t *offp, uint16_t wm[8])
|
||||||
{
|
{
|
||||||
struct seq_file *m = file->private_data;
|
struct seq_file *m = file->private_data;
|
||||||
struct drm_device *dev = m->private;
|
struct drm_device *dev = m->private;
|
||||||
uint16_t new[5] = { 0 };
|
uint16_t new[8] = { 0 };
|
||||||
int num_levels = ilk_wm_max_level(dev) + 1;
|
int num_levels = ilk_wm_max_level(dev) + 1;
|
||||||
int level;
|
int level;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -3622,7 +3647,9 @@ static ssize_t wm_latency_write(struct file *file, const char __user *ubuf,
|
||||||
|
|
||||||
tmp[len] = '\0';
|
tmp[len] = '\0';
|
||||||
|
|
||||||
ret = sscanf(tmp, "%hu %hu %hu %hu %hu", &new[0], &new[1], &new[2], &new[3], &new[4]);
|
ret = sscanf(tmp, "%hu %hu %hu %hu %hu %hu %hu %hu",
|
||||||
|
&new[0], &new[1], &new[2], &new[3],
|
||||||
|
&new[4], &new[5], &new[6], &new[7]);
|
||||||
if (ret != num_levels)
|
if (ret != num_levels)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
@ -3642,8 +3669,15 @@ static ssize_t pri_wm_latency_write(struct file *file, const char __user *ubuf,
|
||||||
{
|
{
|
||||||
struct seq_file *m = file->private_data;
|
struct seq_file *m = file->private_data;
|
||||||
struct drm_device *dev = m->private;
|
struct drm_device *dev = m->private;
|
||||||
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||||
|
uint16_t *latencies;
|
||||||
|
|
||||||
return wm_latency_write(file, ubuf, len, offp, to_i915(dev)->wm.pri_latency);
|
if (INTEL_INFO(dev)->gen >= 9)
|
||||||
|
latencies = dev_priv->wm.skl_latency;
|
||||||
|
else
|
||||||
|
latencies = to_i915(dev)->wm.pri_latency;
|
||||||
|
|
||||||
|
return wm_latency_write(file, ubuf, len, offp, latencies);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t spr_wm_latency_write(struct file *file, const char __user *ubuf,
|
static ssize_t spr_wm_latency_write(struct file *file, const char __user *ubuf,
|
||||||
|
@ -3651,8 +3685,15 @@ static ssize_t spr_wm_latency_write(struct file *file, const char __user *ubuf,
|
||||||
{
|
{
|
||||||
struct seq_file *m = file->private_data;
|
struct seq_file *m = file->private_data;
|
||||||
struct drm_device *dev = m->private;
|
struct drm_device *dev = m->private;
|
||||||
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||||
|
uint16_t *latencies;
|
||||||
|
|
||||||
return wm_latency_write(file, ubuf, len, offp, to_i915(dev)->wm.spr_latency);
|
if (INTEL_INFO(dev)->gen >= 9)
|
||||||
|
latencies = dev_priv->wm.skl_latency;
|
||||||
|
else
|
||||||
|
latencies = to_i915(dev)->wm.spr_latency;
|
||||||
|
|
||||||
|
return wm_latency_write(file, ubuf, len, offp, latencies);
|
||||||
}
|
}
|
||||||
|
|
||||||
static ssize_t cur_wm_latency_write(struct file *file, const char __user *ubuf,
|
static ssize_t cur_wm_latency_write(struct file *file, const char __user *ubuf,
|
||||||
|
@ -3660,8 +3701,15 @@ static ssize_t cur_wm_latency_write(struct file *file, const char __user *ubuf,
|
||||||
{
|
{
|
||||||
struct seq_file *m = file->private_data;
|
struct seq_file *m = file->private_data;
|
||||||
struct drm_device *dev = m->private;
|
struct drm_device *dev = m->private;
|
||||||
|
struct drm_i915_private *dev_priv = dev->dev_private;
|
||||||
|
uint16_t *latencies;
|
||||||
|
|
||||||
return wm_latency_write(file, ubuf, len, offp, to_i915(dev)->wm.cur_latency);
|
if (INTEL_INFO(dev)->gen >= 9)
|
||||||
|
latencies = dev_priv->wm.skl_latency;
|
||||||
|
else
|
||||||
|
latencies = to_i915(dev)->wm.cur_latency;
|
||||||
|
|
||||||
|
return wm_latency_write(file, ubuf, len, offp, latencies);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct file_operations i915_pri_wm_latency_fops = {
|
static const struct file_operations i915_pri_wm_latency_fops = {
|
||||||
|
|
Loading…
Reference in New Issue