Merge pull request #2838 from MilhouseVH/linux41710

linux (Generic): update to linux-4.17.14
This commit is contained in:
Lukas Rusak 2018-08-12 14:38:45 -07:00 committed by GitHub
commit 19f888a2e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 96 additions and 10081 deletions

View File

@ -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"

View File

@ -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/"

View File

@ -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"
;;

View File

@ -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

View File

@ -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

View File

@ -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);

View File

@ -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