mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
Merge pull request #2838 from MilhouseVH/linux41710
linux (Generic): update to linux-4.17.14
This commit is contained in:
commit
19f888a2e6
@ -2,12 +2,12 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="intel-ucode"
|
||||
PKG_VERSION="20180703"
|
||||
PKG_SHA256="4a1a346fdf48e1626d4c9d0d47bbbc6a4052f56e359c85a3dd2d10fd555e5938"
|
||||
PKG_VERSION="20180807"
|
||||
PKG_SHA256="29f9e8dc27e6c9b6488cecd7fe2394030307799e511db2d197d9e6553a7f9e40"
|
||||
PKG_ARCH="x86_64"
|
||||
PKG_LICENSE="other"
|
||||
PKG_SITE="https://downloadcenter.intel.com/search?keyword=linux+microcode"
|
||||
PKG_URL="https://downloadmirror.intel.com/27945/eng/microcode-${PKG_VERSION}.tgz"
|
||||
PKG_URL="https://downloadmirror.intel.com/28039/eng/microcode-${PKG_VERSION}.tgz"
|
||||
PKG_DEPENDS_HOST="toolchain"
|
||||
PKG_DEPENDS_TARGET="toolchain intel-ucode:host"
|
||||
PKG_SECTION="linux-firmware"
|
||||
|
@ -2,8 +2,8 @@
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="kernel-firmware"
|
||||
PKG_VERSION="7518922"
|
||||
PKG_SHA256="5881bca940037eb33af6c5010eb3584173cca04cb8ed8eedeec6feea259c72e9"
|
||||
PKG_VERSION="8d69bab"
|
||||
PKG_SHA256="950ed4fb013b104373673f1f06cb5d0cc77f995c99a1862891ecb98847eb797a"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="other"
|
||||
PKG_SITE="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -46,8 +46,8 @@ case "$LINUX" in
|
||||
PKG_URL="https://github.com/raspberrypi/linux/archive/$PKG_VERSION.tar.gz"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="4.17.6"
|
||||
PKG_SHA256="259dd689d19888936005d8dd75946902842b7e5734dc343061f951c9d2996395"
|
||||
PKG_VERSION="4.17.14"
|
||||
PKG_SHA256="c846038df44ee74dd910d19b346044a100f62a5b933eec2264d17008758cbaaf"
|
||||
PKG_URL="https://www.kernel.org/pub/linux/kernel/v4.x/$PKG_NAME-$PKG_VERSION.tar.xz"
|
||||
PKG_PATCH_DIRS="default"
|
||||
;;
|
||||
|
@ -1,7 +1,13 @@
|
||||
From 77a8e4fee1ad8cf7ec4a8899f76dfb9303b422f8 Mon Sep 17 00:00:00 2001
|
||||
From patchwork Thu Jul 12 08:02:24 2018
|
||||
Content-Type: text/plain; charset="utf-8"
|
||||
MIME-Version: 1.0
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Subject: [v4] drm/i915: Interactive RPS mode
|
||||
From: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Date: Wed, 4 Jul 2018 08:45:48 +0100
|
||||
Subject: [PATCH] drm/i915: Interactive RPS mode
|
||||
X-Patchwork-Id: 10521163
|
||||
Message-Id: <20180712080224.29831-1-chris@chris-wilson.co.uk>
|
||||
To: intel-gfx@lists.freedesktop.org
|
||||
Date: Thu, 12 Jul 2018 09:02:24 +0100
|
||||
|
||||
RPS provides a feedback loop where we use the load during the previous
|
||||
evaluation interval to decide whether to up or down clock the GPU
|
||||
@ -36,43 +42,48 @@ work back down again. (We still keep the waitboosting mechanism around
|
||||
just in case a dramatic change in system load requires urgent uplocking,
|
||||
faster than we can provide in a few evaluation intervals.)
|
||||
|
||||
References: https://bugs.freedesktop.org/show_bug.cgi?id=107111
|
||||
References: e9af4ea2b9e7 ("drm/i915: Avoid waitboosting on the active request")
|
||||
v2: Reduce rps_set_interactive to a boolean parameter to avoid the
|
||||
confusion of what if they wanted a new power mode after pinning to a
|
||||
different mode (which to choose?)
|
||||
v3: Only reprogram RPS while the GT is awake, it will be set when we
|
||||
wake the GT, and while off warns about being used outside of rpm.
|
||||
v4: Fix deferred application of interactive mode
|
||||
|
||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107111
|
||||
Fixes: e9af4ea2b9e7 ("drm/i915: Avoid waitboosting on the active request")
|
||||
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
||||
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
||||
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
||||
Cc: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_debugfs.c | 1 +
|
||||
drivers/gpu/drm/i915/i915_drv.h | 6 +-
|
||||
drivers/gpu/drm/i915/intel_display.c | 20 +++++++
|
||||
drivers/gpu/drm/i915/i915_drv.h | 4 ++
|
||||
drivers/gpu/drm/i915/intel_display.c | 20 ++++++
|
||||
drivers/gpu/drm/i915/intel_drv.h | 2 +
|
||||
drivers/gpu/drm/i915/intel_pm.c | 87 ++++++++++++++++++----------
|
||||
5 files changed, 86 insertions(+), 30 deletions(-)
|
||||
drivers/gpu/drm/i915/intel_pm.c | 91 +++++++++++++++++++---------
|
||||
5 files changed, 89 insertions(+), 29 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
index 544e5e7f011f..7d974cad1cdf 100644
|
||||
index 099f97ef2303..ac019bb927d0 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
|
||||
@@ -2218,6 +2218,7 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
|
||||
seq_printf(m, "CPU waiting? %d\n", count_irq_waiters(dev_priv));
|
||||
seq_printf(m, "Boosts outstanding? %d\n",
|
||||
atomic_read(&rps->num_waiters));
|
||||
+ seq_printf(m, "Power overrides? %d\n", READ_ONCE(rps->power_override));
|
||||
+ seq_printf(m, "Interactive? %d\n", READ_ONCE(rps->interactive));
|
||||
seq_printf(m, "Frequency requested %d\n",
|
||||
intel_gpu_freq(dev_priv, rps->cur_freq));
|
||||
seq_printf(m, " min hard:%d, soft:%d; max soft:%d, hard:%d\n",
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index 09ab12458244..3f9ae1095b98 100644
|
||||
index 01dd29837233..f02fbeee553f 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -783,7 +783,9 @@ struct intel_rps {
|
||||
u8 down_threshold; /* Current %busy required to downclock */
|
||||
@@ -784,6 +784,8 @@ struct intel_rps {
|
||||
|
||||
int last_adj;
|
||||
- enum { LOW_POWER, BETWEEN, HIGH_POWER } power;
|
||||
+ enum { LOW_POWER, BETWEEN, HIGH_POWER, AUTO_POWER } power;
|
||||
+ unsigned int power_override;
|
||||
enum { LOW_POWER, BETWEEN, HIGH_POWER } power;
|
||||
+ unsigned int interactive;
|
||||
+ struct mutex power_lock;
|
||||
|
||||
bool enabled;
|
||||
@ -81,13 +92,13 @@ index 09ab12458244..3f9ae1095b98 100644
|
||||
extern bool ironlake_set_drps(struct drm_i915_private *dev_priv, u8 val);
|
||||
extern void intel_init_pch_refclk(struct drm_i915_private *dev_priv);
|
||||
extern int intel_set_rps(struct drm_i915_private *dev_priv, u8 val);
|
||||
+extern void intel_rps_set_power(struct drm_i915_private *dev_priv,
|
||||
+ int new_power);
|
||||
+extern void intel_rps_set_interactive(struct drm_i915_private *dev_priv,
|
||||
+ bool state);
|
||||
extern bool intel_set_memory_cxsr(struct drm_i915_private *dev_priv,
|
||||
bool enable);
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 8f3199b06d1f..acedd9b2d54a 100644
|
||||
index 7998e70a3174..5809366ff9f0 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -13104,6 +13104,19 @@ intel_prepare_plane_fb(struct drm_plane *plane,
|
||||
@ -102,9 +113,9 @@ index 8f3199b06d1f..acedd9b2d54a 100644
|
||||
+ * that are not quite steady state without resorting to forcing
|
||||
+ * maximum clocks following a vblank miss (see do_rps_boost()).
|
||||
+ */
|
||||
+ if (!intel_state->rps_override) {
|
||||
+ intel_rps_set_power(dev_priv, HIGH_POWER);
|
||||
+ intel_state->rps_override = true;
|
||||
+ if (!intel_state->rps_interactive) {
|
||||
+ intel_rps_set_interactive(dev_priv, true);
|
||||
+ intel_state->rps_interactive = true;
|
||||
+ }
|
||||
+
|
||||
return 0;
|
||||
@ -118,29 +129,29 @@ index 8f3199b06d1f..acedd9b2d54a 100644
|
||||
+ to_intel_atomic_state(old_state->state);
|
||||
struct drm_i915_private *dev_priv = to_i915(plane->dev);
|
||||
|
||||
+ if (intel_state->rps_override) {
|
||||
+ intel_rps_set_power(dev_priv, AUTO_POWER);
|
||||
+ intel_state->rps_override = false;
|
||||
+ if (intel_state->rps_interactive) {
|
||||
+ intel_rps_set_interactive(dev_priv, false);
|
||||
+ intel_state->rps_interactive = false;
|
||||
+ }
|
||||
+
|
||||
/* Should only be called after a successful intel_prepare_plane_fb()! */
|
||||
mutex_lock(&dev_priv->drm.struct_mutex);
|
||||
intel_plane_unpin_fb(to_intel_plane_state(old_state));
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index 61e715ddd0d5..86685c43e1d2 100644
|
||||
index 61e715ddd0d5..544812488821 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -482,6 +482,8 @@ struct intel_atomic_state {
|
||||
*/
|
||||
bool skip_intermediate_wm;
|
||||
|
||||
+ bool rps_override;
|
||||
+ bool rps_interactive;
|
||||
+
|
||||
/* Gen9+ only */
|
||||
struct skl_ddb_values wm_results;
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
|
||||
index 53aaaa3e6886..0245a90d0fe5 100644
|
||||
index 53aaaa3e6886..01475bf3196a 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_pm.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_pm.c
|
||||
@@ -6264,41 +6264,14 @@ static u32 intel_rps_limits(struct drm_i915_private *dev_priv, u8 val)
|
||||
@ -162,7 +173,8 @@ index 53aaaa3e6886..0245a90d0fe5 100644
|
||||
- val > rps->cur_freq)
|
||||
- new_power = BETWEEN;
|
||||
- break;
|
||||
-
|
||||
+ lockdep_assert_held(&rps->power_lock);
|
||||
|
||||
- case BETWEEN:
|
||||
- if (val <= rps->efficient_freq &&
|
||||
- val < rps->cur_freq)
|
||||
@ -171,8 +183,7 @@ index 53aaaa3e6886..0245a90d0fe5 100644
|
||||
- val > rps->cur_freq)
|
||||
- new_power = HIGH_POWER;
|
||||
- break;
|
||||
+ lockdep_assert_held(&rps->power_lock);
|
||||
|
||||
-
|
||||
- case HIGH_POWER:
|
||||
- if (val < (rps->rp1_freq + rps->rp0_freq) >> 1 &&
|
||||
- val < rps->cur_freq)
|
||||
@ -187,7 +198,7 @@ index 53aaaa3e6886..0245a90d0fe5 100644
|
||||
if (new_power == rps->power)
|
||||
return;
|
||||
|
||||
@@ -6365,9 +6338,64 @@ static void gen6_set_rps_thresholds(struct drm_i915_private *dev_priv, u8 val)
|
||||
@@ -6365,9 +6338,68 @@ static void gen6_set_rps_thresholds(struct drm_i915_private *dev_priv, u8 val)
|
||||
rps->power = new_power;
|
||||
rps->up_threshold = threshold_up;
|
||||
rps->down_threshold = threshold_down;
|
||||
@ -200,7 +211,6 @@ index 53aaaa3e6886..0245a90d0fe5 100644
|
||||
+
|
||||
+ new_power = rps->power;
|
||||
+ switch (rps->power) {
|
||||
+ case AUTO_POWER:
|
||||
+ case LOW_POWER:
|
||||
+ if (val > rps->efficient_freq + 1 &&
|
||||
+ val > rps->cur_freq)
|
||||
@ -229,22 +239,27 @@ index 53aaaa3e6886..0245a90d0fe5 100644
|
||||
+ new_power = HIGH_POWER;
|
||||
+
|
||||
+ mutex_lock(&rps->power_lock);
|
||||
+ if (!rps->power_override)
|
||||
+ rps_set_power(dev_priv, new_power);
|
||||
+ if (rps->interactive)
|
||||
+ new_power = HIGH_POWER;
|
||||
+ rps_set_power(dev_priv, new_power);
|
||||
+ mutex_unlock(&rps->power_lock);
|
||||
rps->last_adj = 0;
|
||||
}
|
||||
|
||||
+void intel_rps_set_power(struct drm_i915_private *dev_priv, int power)
|
||||
+void intel_rps_set_interactive(struct drm_i915_private *dev_priv, bool state)
|
||||
+{
|
||||
+ struct intel_rps *rps = &dev_priv->gt_pm.rps;
|
||||
+
|
||||
+ if (INTEL_GEN(dev_priv) < 6)
|
||||
+ return;
|
||||
+
|
||||
+ mutex_lock(&rps->power_lock);
|
||||
+ if (power != AUTO_POWER) {
|
||||
+ rps->power_override++;
|
||||
+ rps_set_power(dev_priv, power);
|
||||
+ if (state) {
|
||||
+ if (!rps->interactive++ && READ_ONCE(dev_priv->gt.awake))
|
||||
+ rps_set_power(dev_priv, HIGH_POWER);
|
||||
+ } else {
|
||||
+ rps->power_override--;
|
||||
+ GEM_BUG_ON(!rps->interactive);
|
||||
+ rps->interactive--;
|
||||
+ }
|
||||
+ mutex_unlock(&rps->power_lock);
|
||||
+}
|
||||
@ -252,7 +267,7 @@ index 53aaaa3e6886..0245a90d0fe5 100644
|
||||
static u32 gen6_rps_pm_mask(struct drm_i915_private *dev_priv, u8 val)
|
||||
{
|
||||
struct intel_rps *rps = &dev_priv->gt_pm.rps;
|
||||
@@ -9604,6 +9632,7 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val)
|
||||
@@ -9604,6 +9636,7 @@ int intel_freq_opcode(struct drm_i915_private *dev_priv, int val)
|
||||
void intel_pm_setup(struct drm_i915_private *dev_priv)
|
||||
{
|
||||
mutex_init(&dev_priv->pcu_lock);
|
||||
@ -260,6 +275,3 @@ index 53aaaa3e6886..0245a90d0fe5 100644
|
||||
|
||||
atomic_set(&dev_priv->gt_pm.rps.num_waiters, 0);
|
||||
|
||||
--
|
||||
2.18.0
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
From f3ca010f8a1cced4049fb1b6cf522bac4e778d8c Mon Sep 17 00:00:00 2001
|
||||
From 53b3bcf17209cd9b01d8b31c21eee8f0f30cf4dc Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Fri, 23 Mar 2018 16:47:37 -0400
|
||||
Subject: [PATCH 01/13] media: rc: set timeout to smallest value required by
|
||||
Subject: [PATCH 01/12] media: rc: set timeout to smallest value required by
|
||||
enabled protocols
|
||||
|
||||
The longer the IR timeout, the longer the rc device waits until delivering
|
||||
@ -54,10 +54,10 @@ index 8cb68ae..5706cfe 100644
|
||||
|
||||
static int __init ir_jvc_decode_init(void)
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index 5478fe0..fa5ce51 100644
|
||||
index d94f1c1..03d0f7e 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -477,6 +477,7 @@ static struct ir_raw_handler mce_kbd_handler = {
|
||||
@@ -479,6 +479,7 @@ static struct ir_raw_handler mce_kbd_handler = {
|
||||
.raw_register = ir_mce_kbd_register,
|
||||
.raw_unregister = ir_mce_kbd_unregister,
|
||||
.carrier = 36000,
|
||||
@ -251,10 +251,10 @@ index cea7b2d..8cd7a26 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From ef6ca369163f1b5d4a838bfbcd373dec8377f653 Mon Sep 17 00:00:00 2001
|
||||
From 78c7e2b34fd53578770fc9098930ba2fcede0df5 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Fri, 23 Mar 2018 16:59:52 -0400
|
||||
Subject: [PATCH 02/13] media: rc: add ioctl to get the current timeout
|
||||
Subject: [PATCH 02/12] media: rc: add ioctl to get the current timeout
|
||||
|
||||
Since the kernel now modifies the timeout, make it possible to retrieve
|
||||
the current value.
|
||||
@ -360,10 +360,10 @@ index f189931..6b31958 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From 840d6701d0e1650cfc69bc0af79b983c4674d8c0 Mon Sep 17 00:00:00 2001
|
||||
From b4bd3b39310b4f091edb7ce9f3f73e3fe1f7cc5f Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sat, 24 Mar 2018 08:02:48 -0400
|
||||
Subject: [PATCH 03/13] media: rc: per-protocol repeat period and minimum keyup
|
||||
Subject: [PATCH 03/12] media: rc: per-protocol repeat period and minimum keyup
|
||||
timer
|
||||
|
||||
Each IR protocol has its own repeat period. We can minimise the keyup
|
||||
@ -527,57 +527,10 @@ index 8cd7a26..3b11241 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From 62a0d8ca1d2ee90ce57d6f1700e011ec2ec50c92 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 25 Mar 2018 11:45:40 -0400
|
||||
Subject: [PATCH 04/13] media: rc: mce_kbd decoder: low timeout values cause
|
||||
double keydowns
|
||||
|
||||
The mce keyboard repeats pressed keys every 100ms. If the IR timeout
|
||||
is set to less than that, we send key up events before the repeat
|
||||
arrives, so we have key up/key down for each IR repeat.
|
||||
|
||||
The keyboard ends any sequence with a 0 scancode, in which case all keys
|
||||
are cleared so there is no need to run the timeout timer: it only exists
|
||||
for the case that the final 0 was not received.
|
||||
|
||||
Signed-off-by: Sean Young <sean@mess.org>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
|
||||
---
|
||||
drivers/media/rc/ir-mce_kbd-decoder.c | 12 +++++++-----
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/media/rc/ir-mce_kbd-decoder.c b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
index fa5ce51..03d0f7e 100644
|
||||
--- a/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
+++ b/drivers/media/rc/ir-mce_kbd-decoder.c
|
||||
@@ -324,11 +324,13 @@ static int ir_mce_kbd_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
scancode = data->body & 0xffff;
|
||||
dev_dbg(&dev->dev, "keyboard data 0x%08x\n",
|
||||
data->body);
|
||||
- if (dev->timeout)
|
||||
- delay = usecs_to_jiffies(dev->timeout / 1000);
|
||||
- else
|
||||
- delay = msecs_to_jiffies(100);
|
||||
- mod_timer(&data->rx_timeout, jiffies + delay);
|
||||
+ if (scancode) {
|
||||
+ delay = nsecs_to_jiffies(dev->timeout) +
|
||||
+ msecs_to_jiffies(100);
|
||||
+ mod_timer(&data->rx_timeout, jiffies + delay);
|
||||
+ } else {
|
||||
+ del_timer(&data->rx_timeout);
|
||||
+ }
|
||||
/* Pass data to keyboard buffer parser */
|
||||
ir_mce_kbd_process_keyboard_data(dev, scancode);
|
||||
lsc.rc_proto = RC_PROTO_MCIR2_KBD;
|
||||
--
|
||||
2.14.1
|
||||
|
||||
|
||||
From 109b96feab8cdb9660aa8f5c18fe019671c38949 Mon Sep 17 00:00:00 2001
|
||||
From c2f422fb5bc97a1e0db5f4ca8fe41fdf9a9b7fcd Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sat, 7 Apr 2018 17:41:17 -0400
|
||||
Subject: [PATCH 05/13] media: rc: mce_kbd protocol encodes two scancodes
|
||||
Subject: [PATCH 04/12] media: rc: mce_kbd protocol encodes two scancodes
|
||||
|
||||
If two keys are pressed, then both keys are encoded in the scancode. This
|
||||
makes the mce keyboard more responsive.
|
||||
@ -655,10 +608,10 @@ index 3b11241..2e222d9 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From 83fd4cbbb5e3f6b1a27a2098ae4e4ed53abcdc4a Mon Sep 17 00:00:00 2001
|
||||
From 888dab026c977b6f712b70f16ebeb2f6bf6f16db Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Wed, 11 Apr 2018 11:02:16 -0400
|
||||
Subject: [PATCH 06/13] media: rc: mce_kbd decoder: remove superfluous call to
|
||||
Subject: [PATCH 05/12] media: rc: mce_kbd decoder: remove superfluous call to
|
||||
input_sync
|
||||
|
||||
There is nothing to sync in this code path.
|
||||
@ -686,10 +639,10 @@ index 002b832..2fc7871 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From 58e8f06c164bc725c359c9f6dd22f7fb1718768c Mon Sep 17 00:00:00 2001
|
||||
From 7b83e504b6bd4238468f807c32069d12cc450ef7 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Thu, 12 Apr 2018 16:28:39 -0400
|
||||
Subject: [PATCH 07/13] media: rc: mce_kbd decoder: fix race condition
|
||||
Subject: [PATCH 06/12] media: rc: mce_kbd decoder: fix race condition
|
||||
|
||||
The MCE keyboard sends both key down and key up events. We have a timeout
|
||||
handler mce_kbd_rx_timeout() in case the keyup event is never received;
|
||||
@ -787,10 +740,10 @@ index f785513..07ba77f 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From c9142eda7fe068269339893a910f2cd2e71dc8a4 Mon Sep 17 00:00:00 2001
|
||||
From 1a9b9e6b0b83261922f3cd6c2be0499a2a9f9ee9 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Wed, 18 Apr 2018 05:36:25 -0400
|
||||
Subject: [PATCH 08/13] media: rc: mceusb: IR of length 0 means IR timeout, not
|
||||
Subject: [PATCH 07/12] media: rc: mceusb: IR of length 0 means IR timeout, not
|
||||
reset
|
||||
|
||||
The last usb packet with IR data will end with 0x80 (MCE_IRDATA_TRAILER).
|
||||
@ -824,10 +777,10 @@ index 69ba573..a1c2190 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From 072bc4a62bb580904d43bbc2fbe04d97115a4020 Mon Sep 17 00:00:00 2001
|
||||
From a137c26c8f9ac1ed406cc0a4a4dad3398fb0c920 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Sun, 8 Apr 2018 11:06:49 -0400
|
||||
Subject: [PATCH 09/13] media: rc: mceusb: allow the timeout to be configurable
|
||||
Subject: [PATCH 08/12] media: rc: mceusb: allow the timeout to be configurable
|
||||
|
||||
mceusb devices have a default timeout of 100ms, but this can be changed.
|
||||
|
||||
@ -882,10 +835,10 @@ index a1c2190..5c0bf61 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From 880ddf029177c5a26889672c67db37572fff36e8 Mon Sep 17 00:00:00 2001
|
||||
From dd8159588ef7ab8cb05cd2730825a2e3406c3dbe Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Wed, 9 May 2018 06:11:28 -0400
|
||||
Subject: [PATCH 10/13] media: mceusb: MCE_CMD_SETIRTIMEOUT cause strange
|
||||
Subject: [PATCH 09/12] media: mceusb: MCE_CMD_SETIRTIMEOUT cause strange
|
||||
behaviour on device
|
||||
|
||||
If the IR timeout is set on vid 1784 pid 0011, the device starts
|
||||
@ -963,10 +916,10 @@ index 5c0bf61..1619b74 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From 45bfc4c9f1747c826cb98f477f0a18ebbcdd957d Mon Sep 17 00:00:00 2001
|
||||
From 1391fe65757811bc1e197200a27918141b2fd90b Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Thu, 10 May 2018 07:37:51 -0400
|
||||
Subject: [PATCH 11/13] media: mceusb: filter out bogus timing irdata of
|
||||
Subject: [PATCH 10/12] media: mceusb: filter out bogus timing irdata of
|
||||
duration 0
|
||||
|
||||
A mceusb device has been observed producing invalid irdata. Proactively
|
||||
@ -980,7 +933,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index 1619b74..1ca49491 100644
|
||||
index 1619b74..1ca4949 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -1177,6 +1177,11 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
|
||||
@ -999,10 +952,10 @@ index 1619b74..1ca49491 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From d3f6e4507c2714234a5fac8428b5e5db4514a717 Mon Sep 17 00:00:00 2001
|
||||
From 2b7fc5287aba07497933d9cceb3898ebd8001af4 Mon Sep 17 00:00:00 2001
|
||||
From: Sean Young <sean@mess.org>
|
||||
Date: Thu, 10 May 2018 07:49:49 -0400
|
||||
Subject: [PATCH 12/13] media: mceusb: add missing break
|
||||
Subject: [PATCH 11/12] media: mceusb: add missing break
|
||||
|
||||
Fallthrough is not intended here.
|
||||
|
||||
@ -1013,7 +966,7 @@ Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/media/rc/mceusb.c b/drivers/media/rc/mceusb.c
|
||||
index 1ca49491..4c0c800 100644
|
||||
index 1ca4949..4c0c800 100644
|
||||
--- a/drivers/media/rc/mceusb.c
|
||||
+++ b/drivers/media/rc/mceusb.c
|
||||
@@ -572,6 +572,7 @@ static int mceusb_cmd_datasize(u8 cmd, u8 subcmd)
|
||||
@ -1028,10 +981,10 @@ index 1ca49491..4c0c800 100644
|
||||
2.14.1
|
||||
|
||||
|
||||
From e7898b7a6ce902107232cb516d854609d71a9426 Mon Sep 17 00:00:00 2001
|
||||
From 06ea4ee6cc2d2d6fae27ddb29f31595f2d6a018b Mon Sep 17 00:00:00 2001
|
||||
From: Matthias Reichl <hias@horus.com>
|
||||
Date: Sun, 13 May 2018 07:24:31 -0400
|
||||
Subject: [PATCH 13/13] media: rc: ite-cir: lower timeout and extend allowed
|
||||
Subject: [PATCH 12/12] media: rc: ite-cir: lower timeout and extend allowed
|
||||
timeout range
|
||||
|
||||
The minimum possible timeout of ite-cir is 8 samples, which is
|
||||
|
@ -1,106 +0,0 @@
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index 2cefe4c..c1526ea 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -650,6 +650,7 @@ enum intel_sbi_destination {
|
||||
#define QUIRK_BACKLIGHT_PRESENT (1<<3)
|
||||
#define QUIRK_PIN_SWIZZLED_PAGES (1<<5)
|
||||
#define QUIRK_INCREASE_T12_DELAY (1<<6)
|
||||
+#define QUIRK_INCREASE_DDI_DISABLED_TIME (1<<7)
|
||||
|
||||
struct intel_fbdev;
|
||||
struct intel_fbc_work;
|
||||
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
|
||||
index 0319825..6d33010 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_ddi.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_ddi.c
|
||||
@@ -1807,15 +1807,27 @@ void intel_ddi_enable_transcoder_func(const struct intel_crtc_state *crtc_state)
|
||||
I915_WRITE(TRANS_DDI_FUNC_CTL(cpu_transcoder), temp);
|
||||
}
|
||||
|
||||
-void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv,
|
||||
- enum transcoder cpu_transcoder)
|
||||
+/* Quirk time at 100ms for reliable operation */
|
||||
+#define DDI_DISABLED_QUIRK_TIME 100
|
||||
+
|
||||
+void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state)
|
||||
{
|
||||
+ struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
|
||||
+ struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
|
||||
+ enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
|
||||
+
|
||||
i915_reg_t reg = TRANS_DDI_FUNC_CTL(cpu_transcoder);
|
||||
uint32_t val = I915_READ(reg);
|
||||
-
|
||||
val &= ~(TRANS_DDI_FUNC_ENABLE | TRANS_DDI_PORT_MASK | TRANS_DDI_DP_VC_PAYLOAD_ALLOC);
|
||||
val |= TRANS_DDI_PORT_NONE;
|
||||
I915_WRITE(reg, val);
|
||||
+
|
||||
+ if (dev_priv->quirks & QUIRK_INCREASE_DDI_DISABLED_TIME &&
|
||||
+ (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI) ||
|
||||
+ intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DDI))) {
|
||||
+ DRM_DEBUG_KMS("Quirk Increase DDI disabled time\n");
|
||||
+ msleep(DDI_DISABLED_QUIRK_TIME);
|
||||
+ }
|
||||
}
|
||||
|
||||
int intel_ddi_toggle_hdcp_signalling(struct intel_encoder *intel_encoder,
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 681e071..8d31ff3 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -5837,7 +5837,7 @@ static void haswell_crtc_disable(struct intel_crtc_state *old_crtc_state,
|
||||
intel_ddi_set_vc_payload_alloc(old_crtc_state, false);
|
||||
|
||||
if (!transcoder_is_dsi(cpu_transcoder))
|
||||
- intel_ddi_disable_transcoder_func(dev_priv, cpu_transcoder);
|
||||
+ intel_ddi_disable_transcoder_func(old_crtc_state);
|
||||
|
||||
if (INTEL_GEN(dev_priv) >= 9)
|
||||
skylake_scaler_disable(intel_crtc);
|
||||
@@ -14847,6 +14847,17 @@ static void quirk_increase_t12_delay(struct drm_device *dev)
|
||||
DRM_INFO("Applying T12 delay quirk\n");
|
||||
}
|
||||
|
||||
+/* GeminiLake NUC HDMI outputs require additional off time
|
||||
+ * this allows the onboard retimer to correctly sync to signal
|
||||
+ */
|
||||
+static void quirk_increase_ddi_disabled_time(struct drm_device *dev)
|
||||
+{
|
||||
+ struct drm_i915_private *dev_priv = to_i915(dev);
|
||||
+
|
||||
+ dev_priv->quirks |= QUIRK_INCREASE_DDI_DISABLED_TIME;
|
||||
+ DRM_INFO("Applying Increase DDI Disabled quirk\n");
|
||||
+}
|
||||
+
|
||||
struct intel_quirk {
|
||||
int device;
|
||||
int subsystem_vendor;
|
||||
@@ -14933,6 +14944,13 @@ static int intel_dmi_reverse_brightness(const struct dmi_system_id *id)
|
||||
|
||||
/* Toshiba Satellite P50-C-18C */
|
||||
{ 0x191B, 0x1179, 0xF840, quirk_increase_t12_delay },
|
||||
+
|
||||
+ /* GeminiLake NUC */
|
||||
+ { 0x3185, 0x8086, 0x2072, quirk_increase_ddi_disabled_time },
|
||||
+ { 0x3184, 0x8086, 0x2072, quirk_increase_ddi_disabled_time },
|
||||
+ /* ASRock ITX*/
|
||||
+ { 0x3185, 0x1849, 0x2212, quirk_increase_ddi_disabled_time },
|
||||
+ { 0x3184, 0x1849, 0x2212, quirk_increase_ddi_disabled_time },
|
||||
};
|
||||
|
||||
static void intel_init_quirks(struct drm_device *dev)
|
||||
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
|
||||
index b9b7032..2490221 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/intel_drv.h
|
||||
@@ -1384,8 +1384,7 @@ void hsw_fdi_link_train(struct intel_crtc *crtc,
|
||||
void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port);
|
||||
bool intel_ddi_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe);
|
||||
void intel_ddi_enable_transcoder_func(const struct intel_crtc_state *crtc_state);
|
||||
-void intel_ddi_disable_transcoder_func(struct drm_i915_private *dev_priv,
|
||||
- enum transcoder cpu_transcoder);
|
||||
+void intel_ddi_disable_transcoder_func(const struct intel_crtc_state *crtc_state);
|
||||
void intel_ddi_enable_pipe_clock(const struct intel_crtc_state *crtc_state);
|
||||
void intel_ddi_disable_pipe_clock(const struct intel_crtc_state *crtc_state);
|
||||
void intel_ddi_set_pipe_settings(const struct intel_crtc_state *crtc_state);
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86_64 4.17.2 Kernel Configuration
|
||||
# Linux/x86_64 4.17.7 Kernel Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_X86_64=y
|
||||
@ -5397,7 +5397,6 @@ CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_SALSA20_X86_64 is not set
|
||||
# CONFIG_CRYPTO_CHACHA20 is not set
|
||||
# CONFIG_CRYPTO_CHACHA20_X86_64 is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
|
Loading…
x
Reference in New Issue
Block a user