Linux v4.11.1 rebase
This commit is contained in:
parent
2772b1ac62
commit
42d57b05d4
|
@ -1,99 +0,0 @@
|
||||||
From 8fe89ef076fa104f514da6ef61d90f5bf93488e3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
|
||||||
Date: Fri, 25 Nov 2016 14:27:23 +0100
|
|
||||||
Subject: [PATCH] HID: multitouch: enable the Surface 3 Type Cover to report
|
|
||||||
multitouch data
|
|
||||||
|
|
||||||
There is no reasons to filter out keyboard and consumer control collections
|
|
||||||
in hid-multitouch.
|
|
||||||
With the previous hid-input fix, there is now a full support of the Type
|
|
||||||
Cover and we can remove all specific bits from hid-core and hid-microsoft.
|
|
||||||
|
|
||||||
hid-multitouch will automatically set HID_QUIRK_NO_INIT_REPORTS so we can
|
|
||||||
also remove it from the list of ushbid quirks.
|
|
||||||
|
|
||||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
|
||||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-core.c | 2 --
|
|
||||||
drivers/hid/hid-ids.h | 1 -
|
|
||||||
drivers/hid/hid-microsoft.c | 2 --
|
|
||||||
drivers/hid/hid-multitouch.c | 4 +++-
|
|
||||||
drivers/hid/usbhid/hid-quirks.c | 1 -
|
|
||||||
5 files changed, 3 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
|
||||||
index 2b89c70..a5dd7e6 100644
|
|
||||||
--- a/drivers/hid/hid-core.c
|
|
||||||
+++ b/drivers/hid/hid-core.c
|
|
||||||
@@ -728,7 +728,6 @@ static void hid_scan_collection(struct hid_parser *parser, unsigned type)
|
|
||||||
hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2 ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP ||
|
|
||||||
- hid->product == USB_DEVICE_ID_MS_TYPE_COVER_3 ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_POWER_COVER) &&
|
|
||||||
hid->group == HID_GROUP_MULTITOUCH)
|
|
||||||
hid->group = HID_GROUP_GENERIC;
|
|
||||||
@@ -1984,7 +1983,6 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_7K) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_600) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3KV1) },
|
|
||||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
|
||||||
index 575aa65..10d1535 100644
|
|
||||||
--- a/drivers/hid/hid-ids.h
|
|
||||||
+++ b/drivers/hid/hid-ids.h
|
|
||||||
@@ -719,7 +719,6 @@
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2 0x07e2
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP 0x07dd
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP 0x07e9
|
|
||||||
-#define USB_DEVICE_ID_MS_TYPE_COVER_3 0x07de
|
|
||||||
#define USB_DEVICE_ID_MS_POWER_COVER 0x07da
|
|
||||||
|
|
||||||
#define USB_VENDOR_ID_MOJO 0x8282
|
|
||||||
diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c
|
|
||||||
index c6cd392..ba02667 100644
|
|
||||||
--- a/drivers/hid/hid-microsoft.c
|
|
||||||
+++ b/drivers/hid/hid-microsoft.c
|
|
||||||
@@ -282,8 +282,6 @@ static const struct hid_device_id ms_devices[] = {
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP),
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3),
|
|
||||||
- .driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER),
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_KEYBOARD),
|
|
||||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
|
||||||
index fb6f1f4..84c56e6 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -842,7 +842,9 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
|
||||||
if (!td->mtclass.export_all_inputs &&
|
|
||||||
field->application != HID_DG_TOUCHSCREEN &&
|
|
||||||
field->application != HID_DG_PEN &&
|
|
||||||
- field->application != HID_DG_TOUCHPAD)
|
|
||||||
+ field->application != HID_DG_TOUCHPAD &&
|
|
||||||
+ field->application != HID_GD_KEYBOARD &&
|
|
||||||
+ field->application != HID_CP_CONSUMER_CONTROL)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
/*
|
|
||||||
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
index e6cfd32..18ae715 100644
|
|
||||||
--- a/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
+++ b/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
@@ -102,7 +102,6 @@ static const struct hid_blacklist {
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
- { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
From 975dcf140bd307b431aff7b6d671155c796cfe5e Mon Sep 17 00:00:00 2001
|
|
||||||
From: Laura Abbott <labbott@redhat.com>
|
|
||||||
Date: Sat, 28 Jan 2017 16:13:49 +0100
|
|
||||||
Subject: [PATCH] Work around for gcc7 and arm64
|
|
||||||
|
|
||||||
Originally proposed by Will Deacon <will.deacon@arm.com>
|
|
||||||
|
|
||||||
http://lists.infradead.org/pipermail/linux-arm-kernel/2016-October/462224.html
|
|
||||||
|
|
||||||
Signed-off-by: Laura Abbott <labbott@redhat.com>
|
|
||||||
---
|
|
||||||
include/linux/log2.h | 13 ++-----------
|
|
||||||
1 file changed, 2 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/linux/log2.h b/include/linux/log2.h
|
|
||||||
index fd7ff3d91e6a..1ab22b79681e 100644
|
|
||||||
--- a/include/linux/log2.h
|
|
||||||
+++ b/include/linux/log2.h
|
|
||||||
@@ -16,12 +16,6 @@
|
|
||||||
#include <linux/bitops.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
- * deal with unrepresentable constant logarithms
|
|
||||||
- */
|
|
||||||
-extern __attribute__((const, noreturn))
|
|
||||||
-int ____ilog2_NaN(void);
|
|
||||||
-
|
|
||||||
-/*
|
|
||||||
* non-constant log of base 2 calculators
|
|
||||||
* - the arch may override these in asm/bitops.h if they can be implemented
|
|
||||||
* more efficiently than using fls() and fls64()
|
|
||||||
@@ -85,7 +79,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
|
||||||
#define ilog2(n) \
|
|
||||||
( \
|
|
||||||
__builtin_constant_p(n) ? ( \
|
|
||||||
- (n) < 1 ? ____ilog2_NaN() : \
|
|
||||||
+ (n) < 1 ? 0 : \
|
|
||||||
(n) & (1ULL << 63) ? 63 : \
|
|
||||||
(n) & (1ULL << 62) ? 62 : \
|
|
||||||
(n) & (1ULL << 61) ? 61 : \
|
|
||||||
@@ -149,9 +143,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
|
||||||
(n) & (1ULL << 3) ? 3 : \
|
|
||||||
(n) & (1ULL << 2) ? 2 : \
|
|
||||||
(n) & (1ULL << 1) ? 1 : \
|
|
||||||
- (n) & (1ULL << 0) ? 0 : \
|
|
||||||
- ____ilog2_NaN() \
|
|
||||||
- ) : \
|
|
||||||
+ 0 ) : \
|
|
||||||
(sizeof(n) <= 4) ? \
|
|
||||||
__ilog2_u32(n) : \
|
|
||||||
__ilog2_u64(n) \
|
|
||||||
@@ -194,7 +186,6 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
|
||||||
* @n: parameter
|
|
||||||
*
|
|
||||||
* The first few values calculated by this routine:
|
|
||||||
- * ob2(0) = 0
|
|
||||||
* ob2(1) = 0
|
|
||||||
* ob2(2) = 1
|
|
||||||
* ob2(3) = 2
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
From 1e5895f2c6068fb9ae5356e3a751a29a22af5f01 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
|
|
||||||
Date: Mon, 20 Jun 2016 14:53:03 +0200
|
|
||||||
Subject: [PATCH 1/6] drm/mgag200: Black screen fix for G200e rev 4
|
|
||||||
|
|
||||||
Upstream: since drm-fixes-for-v4.7
|
|
||||||
commit d3922b69617b62bb2509936b68301f837229d9f0
|
|
||||||
|
|
||||||
Author: Mathieu Larouche <mathieu.larouche@matrox.com>
|
|
||||||
AuthorDate: Fri May 27 15:12:50 2016 -0400
|
|
||||||
Commit: Dave Airlie <airlied@redhat.com>
|
|
||||||
CommitDate: Wed Jun 1 15:25:04 2016 +1000
|
|
||||||
|
|
||||||
drm/mgag200: Black screen fix for G200e rev 4
|
|
||||||
|
|
||||||
- Fixed black screen for some resolutions of G200e rev4
|
|
||||||
- Fixed testm & testn which had predetermined value.
|
|
||||||
|
|
||||||
Reported-by: Jan Beulich <jbeulich@suse.com>
|
|
||||||
|
|
||||||
Signed-off-by: Mathieu Larouche <mathieu.larouche@matrox.com>
|
|
||||||
Cc: stable@vger.kernel.org
|
|
||||||
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/mgag200/mgag200_mode.c | 10 +++++++++-
|
|
||||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c
|
|
||||||
index 14e64e0..d347dca 100644
|
|
||||||
--- a/drivers/gpu/drm/mgag200/mgag200_mode.c
|
|
||||||
+++ b/drivers/gpu/drm/mgag200/mgag200_mode.c
|
|
||||||
@@ -182,7 +182,7 @@ static int mga_g200se_set_plls(struct mga_device *mdev, long clock)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- fvv = pllreffreq * testn / testm;
|
|
||||||
+ fvv = pllreffreq * (n + 1) / (m + 1);
|
|
||||||
fvv = (fvv - 800000) / 50000;
|
|
||||||
|
|
||||||
if (fvv > 15)
|
|
||||||
@@ -202,6 +202,14 @@ static int mga_g200se_set_plls(struct mga_device *mdev, long clock)
|
|
||||||
WREG_DAC(MGA1064_PIX_PLLC_M, m);
|
|
||||||
WREG_DAC(MGA1064_PIX_PLLC_N, n);
|
|
||||||
WREG_DAC(MGA1064_PIX_PLLC_P, p);
|
|
||||||
+
|
|
||||||
+ if (mdev->unique_rev_id >= 0x04) {
|
|
||||||
+ WREG_DAC(0x1a, 0x09);
|
|
||||||
+ msleep(20);
|
|
||||||
+ WREG_DAC(0x1a, 0x01);
|
|
||||||
+
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1,29 +0,0 @@
|
||||||
From 81c53729ee7c7f721c357ed3b531ebc97ca44051 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Eric Anholt <eric@anholt.net>
|
|
||||||
Date: Wed, 15 Feb 2017 11:57:57 -0800
|
|
||||||
Subject: [PATCH] i2c-bcm2835: Debug test for curr_msg
|
|
||||||
|
|
||||||
Signed-off-by: Eric Anholt <eric@anholt.net>
|
|
||||||
---
|
|
||||||
drivers/i2c/busses/i2c-bcm2835.c | 5 ++++-
|
|
||||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
|
|
||||||
index c3436f627028..a75fab4dd660 100644
|
|
||||||
--- a/drivers/i2c/busses/i2c-bcm2835.c
|
|
||||||
+++ b/drivers/i2c/busses/i2c-bcm2835.c
|
|
||||||
@@ -195,7 +195,10 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (val & BCM2835_I2C_S_DONE) {
|
|
||||||
- if (i2c_dev->curr_msg->flags & I2C_M_RD) {
|
|
||||||
+ if (!i2c_dev->curr_msg) {
|
|
||||||
+ dev_info(i2c_dev->dev,
|
|
||||||
+ "Processing DONE interrupt with no msg\n");
|
|
||||||
+ } else if (i2c_dev->curr_msg->flags & I2C_M_RD) {
|
|
||||||
bcm2835_drain_rxfifo(i2c_dev);
|
|
||||||
val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.11.0
|
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
From 4fed0231994b27b3896bc63885ac66d02fff625b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Yuta Kobayashi <alu.ula@outlook.com>
|
|
||||||
Date: Mon, 19 Dec 2016 02:36:45 +0000
|
|
||||||
Subject: [PATCH] HID: multitouch: enable the Surface 4 Type Cover Pro (JP) to
|
|
||||||
report multitouch data
|
|
||||||
|
|
||||||
Since commit 8fe89ef076fa1 ("HID: multitouch: enable the Surface 3 Type
|
|
||||||
Cover to report multitouch data"), the TypeCover can be properly handled
|
|
||||||
by hid-multitouch and don't require any special quirk in the kernel.
|
|
||||||
|
|
||||||
Remove the support of the Surface 4 Type Cover Pro (JP) from
|
|
||||||
hid-microsoft so it can properly report multitouch from the touchpad.
|
|
||||||
|
|
||||||
Signed-off-by: Yuta Kobayashi <alu.ula@outlook.com>
|
|
||||||
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
|
||||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-core.c | 2 --
|
|
||||||
drivers/hid/hid-ids.h | 1 -
|
|
||||||
drivers/hid/hid-microsoft.c | 2 --
|
|
||||||
drivers/hid/usbhid/hid-quirks.c | 1 -
|
|
||||||
4 files changed, 6 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
|
||||||
index cff060b..db87d91 100644
|
|
||||||
--- a/drivers/hid/hid-core.c
|
|
||||||
+++ b/drivers/hid/hid-core.c
|
|
||||||
@@ -729,7 +729,6 @@ static void hid_scan_collection(struct hid_parser *parser, unsigned type)
|
|
||||||
hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_4 ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2 ||
|
|
||||||
- hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_POWER_COVER) &&
|
|
||||||
hid->group == HID_GROUP_MULTITOUCH)
|
|
||||||
hid->group = HID_GROUP_GENERIC;
|
|
||||||
@@ -1990,7 +1989,6 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_7K) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_600) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3KV1) },
|
|
||||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
|
||||||
index ec277b9..55758f7 100644
|
|
||||||
--- a/drivers/hid/hid-ids.h
|
|
||||||
+++ b/drivers/hid/hid-ids.h
|
|
||||||
@@ -723,7 +723,6 @@
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP 0x07dd
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4 0x07e4
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2 0x07e8
|
|
||||||
-#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP 0x07e9
|
|
||||||
#define USB_DEVICE_ID_MS_POWER_COVER 0x07da
|
|
||||||
|
|
||||||
#define USB_VENDOR_ID_MOJO 0x8282
|
|
||||||
diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c
|
|
||||||
index 74b7b84..2b706b5 100644
|
|
||||||
--- a/drivers/hid/hid-microsoft.c
|
|
||||||
+++ b/drivers/hid/hid-microsoft.c
|
|
||||||
@@ -284,8 +284,6 @@ static const struct hid_device_id ms_devices[] = {
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2),
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP),
|
|
||||||
- .driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER),
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_KEYBOARD),
|
|
||||||
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
index b3e01c8..ebb8e95c 100644
|
|
||||||
--- a/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
+++ b/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
@@ -105,7 +105,6 @@ static const struct hid_blacklist {
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
- { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
|
@ -1,138 +0,0 @@
|
||||||
From 02510a8805db2c3f8ca2926f90c4b3793934404a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
|
|
||||||
Date: Mon, 20 Jun 2016 14:51:45 +0200
|
|
||||||
Subject: [PATCH 2/6] drm/nouveau/fbcon: fix out-of-bounds memory accesses
|
|
||||||
|
|
||||||
Upstream: drm-fixes for 4.7 (and cc'd 4.6-stable)
|
|
||||||
commit f045f459d925138fe7d6193a8c86406bda7e49da
|
|
||||||
|
|
||||||
Author: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
AuthorDate: Thu Jun 2 12:23:31 2016 +1000
|
|
||||||
Commit: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
CommitDate: Thu Jun 2 13:53:44 2016 +1000
|
|
||||||
|
|
||||||
drm/nouveau/fbcon: fix out-of-bounds memory accesses
|
|
||||||
|
|
||||||
Reported by KASAN.
|
|
||||||
|
|
||||||
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
Cc: stable@vger.kernel.org
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/nouveau/nouveau_fbcon.c | 1 +
|
|
||||||
drivers/gpu/drm/nouveau/nv04_fbcon.c | 7 ++-----
|
|
||||||
drivers/gpu/drm/nouveau/nv50_fbcon.c | 6 ++----
|
|
||||||
drivers/gpu/drm/nouveau/nvc0_fbcon.c | 6 ++----
|
|
||||||
4 files changed, 7 insertions(+), 13 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nouveau_fbcon.c b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
|
|
||||||
index 59f27e7..bd89c86 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nouveau_fbcon.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nouveau_fbcon.c
|
|
||||||
@@ -557,6 +557,7 @@ nouveau_fbcon_init(struct drm_device *dev)
|
|
||||||
if (ret)
|
|
||||||
goto fini;
|
|
||||||
|
|
||||||
+ fbcon->helper.fbdev->pixmap.buf_align = 4;
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
fini:
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nv04_fbcon.c b/drivers/gpu/drm/nouveau/nv04_fbcon.c
|
|
||||||
index 789dc29..8f715fe 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nv04_fbcon.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nv04_fbcon.c
|
|
||||||
@@ -82,7 +82,6 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
uint32_t fg;
|
|
||||||
uint32_t bg;
|
|
||||||
uint32_t dsize;
|
|
||||||
- uint32_t width;
|
|
||||||
uint32_t *data = (uint32_t *)image->data;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
@@ -93,9 +92,6 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
- width = ALIGN(image->width, 8);
|
|
||||||
- dsize = ALIGN(width * image->height, 32) >> 5;
|
|
||||||
-
|
|
||||||
if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
|
|
||||||
info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
|
|
||||||
fg = ((uint32_t *) info->pseudo_palette)[image->fg_color];
|
|
||||||
@@ -111,10 +107,11 @@ nv04_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
((image->dx + image->width) & 0xffff));
|
|
||||||
OUT_RING(chan, bg);
|
|
||||||
OUT_RING(chan, fg);
|
|
||||||
- OUT_RING(chan, (image->height << 16) | width);
|
|
||||||
+ OUT_RING(chan, (image->height << 16) | image->width);
|
|
||||||
OUT_RING(chan, (image->height << 16) | image->width);
|
|
||||||
OUT_RING(chan, (image->dy << 16) | (image->dx & 0xffff));
|
|
||||||
|
|
||||||
+ dsize = ALIGN(image->width * image->height, 32) >> 5;
|
|
||||||
while (dsize) {
|
|
||||||
int iter_len = dsize > 128 ? 128 : dsize;
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nv50_fbcon.c b/drivers/gpu/drm/nouveau/nv50_fbcon.c
|
|
||||||
index e05499d..a4e259a 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nv50_fbcon.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nv50_fbcon.c
|
|
||||||
@@ -95,7 +95,7 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
struct nouveau_fbdev *nfbdev = info->par;
|
|
||||||
struct nouveau_drm *drm = nouveau_drm(nfbdev->dev);
|
|
||||||
struct nouveau_channel *chan = drm->channel;
|
|
||||||
- uint32_t width, dwords, *data = (uint32_t *)image->data;
|
|
||||||
+ uint32_t dwords, *data = (uint32_t *)image->data;
|
|
||||||
uint32_t mask = ~(~0 >> (32 - info->var.bits_per_pixel));
|
|
||||||
uint32_t *palette = info->pseudo_palette;
|
|
||||||
int ret;
|
|
||||||
@@ -107,9 +107,6 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
- width = ALIGN(image->width, 32);
|
|
||||||
- dwords = (width * image->height) >> 5;
|
|
||||||
-
|
|
||||||
BEGIN_NV04(chan, NvSub2D, 0x0814, 2);
|
|
||||||
if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
|
|
||||||
info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
|
|
||||||
@@ -128,6 +125,7 @@ nv50_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
OUT_RING(chan, 0);
|
|
||||||
OUT_RING(chan, image->dy);
|
|
||||||
|
|
||||||
+ dwords = ALIGN(image->width * image->height, 32) >> 5;
|
|
||||||
while (dwords) {
|
|
||||||
int push = dwords > 2047 ? 2047 : dwords;
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nvc0_fbcon.c b/drivers/gpu/drm/nouveau/nvc0_fbcon.c
|
|
||||||
index c97395b..f28315e 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nvc0_fbcon.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvc0_fbcon.c
|
|
||||||
@@ -95,7 +95,7 @@ nvc0_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
struct nouveau_fbdev *nfbdev = info->par;
|
|
||||||
struct nouveau_drm *drm = nouveau_drm(nfbdev->dev);
|
|
||||||
struct nouveau_channel *chan = drm->channel;
|
|
||||||
- uint32_t width, dwords, *data = (uint32_t *)image->data;
|
|
||||||
+ uint32_t dwords, *data = (uint32_t *)image->data;
|
|
||||||
uint32_t mask = ~(~0 >> (32 - info->var.bits_per_pixel));
|
|
||||||
uint32_t *palette = info->pseudo_palette;
|
|
||||||
int ret;
|
|
||||||
@@ -107,9 +107,6 @@ nvc0_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
- width = ALIGN(image->width, 32);
|
|
||||||
- dwords = (width * image->height) >> 5;
|
|
||||||
-
|
|
||||||
BEGIN_NVC0(chan, NvSub2D, 0x0814, 2);
|
|
||||||
if (info->fix.visual == FB_VISUAL_TRUECOLOR ||
|
|
||||||
info->fix.visual == FB_VISUAL_DIRECTCOLOR) {
|
|
||||||
@@ -128,6 +125,7 @@ nvc0_fbcon_imageblit(struct fb_info *info, const struct fb_image *image)
|
|
||||||
OUT_RING (chan, 0);
|
|
||||||
OUT_RING (chan, image->dy);
|
|
||||||
|
|
||||||
+ dwords = ALIGN(image->width * image->height, 32) >> 5;
|
|
||||||
while (dwords) {
|
|
||||||
int push = dwords > 2047 ? 2047 : dwords;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1,88 +0,0 @@
|
||||||
From 66e5c5ffc7a5e4d36d136ce4fd8bdb4e92ecec7b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Daniel Keller <daniel.keller@gcd.de>
|
|
||||||
Date: Tue, 10 Jan 2017 20:39:31 +0100
|
|
||||||
Subject: [PATCH] HID: multitouch: enable Surface 4 Type Cover Pro (non-JP) to
|
|
||||||
report multitouch data
|
|
||||||
|
|
||||||
Nearly identical to the patch "multitouch: enable the Surface 4 Type Cover Pro
|
|
||||||
(JP) to report multitouch data"
|
|
||||||
|
|
||||||
We can now remove the support of the Surface 4 Type Cover Pro (not JP versions)
|
|
||||||
from hid-microsoft so it can properly report multi touch from the touchpad.
|
|
||||||
|
|
||||||
Signed-off-by: Daniel Keller <daniel.keller@gcd.de>
|
|
||||||
Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
|
||||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-core.c | 4 ----
|
|
||||||
drivers/hid/hid-ids.h | 2 --
|
|
||||||
drivers/hid/hid-microsoft.c | 4 ----
|
|
||||||
drivers/hid/usbhid/hid-quirks.c | 2 --
|
|
||||||
4 files changed, 12 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
|
|
||||||
index db87d91..1ff9142 100644
|
|
||||||
--- a/drivers/hid/hid-core.c
|
|
||||||
+++ b/drivers/hid/hid-core.c
|
|
||||||
@@ -727,8 +727,6 @@ static void hid_scan_collection(struct hid_parser *parser, unsigned type)
|
|
||||||
(hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3 ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2 ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP ||
|
|
||||||
- hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_4 ||
|
|
||||||
- hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2 ||
|
|
||||||
hid->product == USB_DEVICE_ID_MS_POWER_COVER) &&
|
|
||||||
hid->group == HID_GROUP_MULTITOUCH)
|
|
||||||
hid->group = HID_GROUP_GENERIC;
|
|
||||||
@@ -1987,8 +1985,6 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_7K) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_600) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3KV1) },
|
|
||||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
|
||||||
index 55758f7..9d87716 100644
|
|
||||||
--- a/drivers/hid/hid-ids.h
|
|
||||||
+++ b/drivers/hid/hid-ids.h
|
|
||||||
@@ -721,8 +721,6 @@
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3 0x07dc
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2 0x07e2
|
|
||||||
#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP 0x07dd
|
|
||||||
-#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4 0x07e4
|
|
||||||
-#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2 0x07e8
|
|
||||||
#define USB_DEVICE_ID_MS_POWER_COVER 0x07da
|
|
||||||
|
|
||||||
#define USB_VENDOR_ID_MOJO 0x8282
|
|
||||||
diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c
|
|
||||||
index 2b706b5..d856726 100644
|
|
||||||
--- a/drivers/hid/hid-microsoft.c
|
|
||||||
+++ b/drivers/hid/hid-microsoft.c
|
|
||||||
@@ -280,10 +280,6 @@ static const struct hid_device_id ms_devices[] = {
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP),
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4),
|
|
||||||
- .driver_data = MS_HIDINPUT },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2),
|
|
||||||
- .driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER),
|
|
||||||
.driver_data = MS_HIDINPUT },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_KEYBOARD),
|
|
||||||
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
index ebb8e95c..6108649 100644
|
|
||||||
--- a/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
+++ b/drivers/hid/usbhid/hid-quirks.c
|
|
||||||
@@ -103,8 +103,6 @@ static const struct hid_blacklist {
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
- { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
- { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_2, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
{ USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS },
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
From de35f524e89daf8862d49724b9045f9254bfdfea Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
|
|
||||||
Date: Mon, 20 Jun 2016 14:52:01 +0200
|
|
||||||
Subject: [PATCH 3/6] drm/nouveau/disp/sor/gf119: both links use the same
|
|
||||||
training register
|
|
||||||
|
|
||||||
Upstream: drm-fixes for 4.7 (and cc'd 4.6-stable)
|
|
||||||
commit a8953c52b95167b5d21a66f0859751570271d834
|
|
||||||
|
|
||||||
Author: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
AuthorDate: Fri Jun 3 14:37:40 2016 +1000
|
|
||||||
Commit: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
CommitDate: Tue Jun 7 08:11:14 2016 +1000
|
|
||||||
|
|
||||||
drm/nouveau/disp/sor/gf119: both links use the same training register
|
|
||||||
|
|
||||||
It appears that, for whatever reason, both link A and B use the same
|
|
||||||
register to control the training pattern. It's a little odd, as the
|
|
||||||
GPUs before this (Tesla/Fermi1) have per-link registers, as do newer
|
|
||||||
GPUs (Maxwell).
|
|
||||||
|
|
||||||
Fixes the third DP output on NVS 510 (GK107).
|
|
||||||
|
|
||||||
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
Cc: stable@vger.kernel.org
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c | 3 +--
|
|
||||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
|
|
||||||
index b4b41b1..5111560 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
|
|
||||||
@@ -40,8 +40,7 @@ static int
|
|
||||||
gf119_sor_dp_pattern(struct nvkm_output_dp *outp, int pattern)
|
|
||||||
{
|
|
||||||
struct nvkm_device *device = outp->base.disp->engine.subdev.device;
|
|
||||||
- const u32 loff = gf119_sor_loff(outp);
|
|
||||||
- nvkm_mask(device, 0x61c110 + loff, 0x0f0f0f0f, 0x01010101 * pattern);
|
|
||||||
+ nvkm_mask(device, 0x61c110, 0x0f0f0f0f, 0x01010101 * pattern);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1,195 +0,0 @@
|
||||||
From eb4668302adce316f53896b0fd8144ffe380a3ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
|
|
||||||
Date: Mon, 20 Jun 2016 14:52:06 +0200
|
|
||||||
Subject: [PATCH 4/6] drm/nouveau/disp/sor/gm107: training pattern registers
|
|
||||||
are like gm200
|
|
||||||
|
|
||||||
Upstream: drm-fixes for 4.7 (and cc'd 4.6-stable)
|
|
||||||
commit 4691409b3e2250ed66aa8dcefa23fe765daf7add
|
|
||||||
|
|
||||||
Author: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
AuthorDate: Fri Jun 3 15:05:52 2016 +1000
|
|
||||||
Commit: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
CommitDate: Tue Jun 7 08:11:25 2016 +1000
|
|
||||||
|
|
||||||
drm/nouveau/disp/sor/gm107: training pattern registers are like gm200
|
|
||||||
|
|
||||||
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
Cc: stable@vger.kernel.org
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild | 1 +
|
|
||||||
drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c | 2 +-
|
|
||||||
drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h | 9 +++-
|
|
||||||
.../gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c | 2 +-
|
|
||||||
.../nvkm/engine/disp/{gm107.c => sorgm107.c} | 50 +++++++++++-----------
|
|
||||||
.../gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c | 15 +------
|
|
||||||
6 files changed, 36 insertions(+), 43 deletions(-)
|
|
||||||
copy drivers/gpu/drm/nouveau/nvkm/engine/disp/{gm107.c => sorgm107.c} (55%)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild
|
|
||||||
index a74c5dd..e2a64ed 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild
|
|
||||||
@@ -18,6 +18,7 @@ nvkm-y += nvkm/engine/disp/piornv50.o
|
|
||||||
nvkm-y += nvkm/engine/disp/sornv50.o
|
|
||||||
nvkm-y += nvkm/engine/disp/sorg94.o
|
|
||||||
nvkm-y += nvkm/engine/disp/sorgf119.o
|
|
||||||
+nvkm-y += nvkm/engine/disp/sorgm107.o
|
|
||||||
nvkm-y += nvkm/engine/disp/sorgm200.o
|
|
||||||
nvkm-y += nvkm/engine/disp/dport.o
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c
|
|
||||||
index b694414..f4b9cf8 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c
|
|
||||||
@@ -36,7 +36,7 @@ gm107_disp = {
|
|
||||||
.outp.internal.crt = nv50_dac_output_new,
|
|
||||||
.outp.internal.tmds = nv50_sor_output_new,
|
|
||||||
.outp.internal.lvds = nv50_sor_output_new,
|
|
||||||
- .outp.internal.dp = gf119_sor_dp_new,
|
|
||||||
+ .outp.internal.dp = gm107_sor_dp_new,
|
|
||||||
.dac.nr = 3,
|
|
||||||
.dac.power = nv50_dac_power,
|
|
||||||
.dac.sense = nv50_dac_sense,
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h
|
|
||||||
index e9067ba..4e983f6 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outpdp.h
|
|
||||||
@@ -62,7 +62,12 @@ int g94_sor_dp_lnk_pwr(struct nvkm_output_dp *, int);
|
|
||||||
int gf119_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
|
|
||||||
struct nvkm_output **);
|
|
||||||
int gf119_sor_dp_lnk_ctl(struct nvkm_output_dp *, int, int, bool);
|
|
||||||
+int gf119_sor_dp_drv_ctl(struct nvkm_output_dp *, int, int, int, int);
|
|
||||||
|
|
||||||
-int gm200_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
|
|
||||||
- struct nvkm_output **);
|
|
||||||
+int gm107_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
|
|
||||||
+ struct nvkm_output **);
|
|
||||||
+int gm107_sor_dp_pattern(struct nvkm_output_dp *, int);
|
|
||||||
+
|
|
||||||
+int gm200_sor_dp_new(struct nvkm_disp *, int, struct dcb_output *,
|
|
||||||
+ struct nvkm_output **);
|
|
||||||
#endif
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
|
|
||||||
index 5111560..22706c0 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgf119.c
|
|
||||||
@@ -63,7 +63,7 @@ gf119_sor_dp_lnk_ctl(struct nvkm_output_dp *outp, int nr, int bw, bool ef)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static int
|
|
||||||
+int
|
|
||||||
gf119_sor_dp_drv_ctl(struct nvkm_output_dp *outp,
|
|
||||||
int ln, int vs, int pe, int pc)
|
|
||||||
{
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
|
|
||||||
similarity index 55%
|
|
||||||
copy from drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c
|
|
||||||
copy to drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
|
|
||||||
index b694414..37790b2 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/gm107.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm107.c
|
|
||||||
@@ -1,5 +1,5 @@
|
|
||||||
/*
|
|
||||||
- * Copyright 2012 Red Hat Inc.
|
|
||||||
+ * Copyright 2016 Red Hat Inc.
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
||||||
* copy of this software and associated documentation files (the "Software"),
|
|
||||||
@@ -19,35 +19,35 @@
|
|
||||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
* OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*
|
|
||||||
- * Authors: Ben Skeggs
|
|
||||||
+ * Authors: Ben Skeggs <bskeggs@redhat.com>
|
|
||||||
*/
|
|
||||||
#include "nv50.h"
|
|
||||||
-#include "rootnv50.h"
|
|
||||||
+#include "outpdp.h"
|
|
||||||
|
|
||||||
-static const struct nv50_disp_func
|
|
||||||
-gm107_disp = {
|
|
||||||
- .intr = gf119_disp_intr,
|
|
||||||
- .uevent = &gf119_disp_chan_uevent,
|
|
||||||
- .super = gf119_disp_intr_supervisor,
|
|
||||||
- .root = &gm107_disp_root_oclass,
|
|
||||||
- .head.vblank_init = gf119_disp_vblank_init,
|
|
||||||
- .head.vblank_fini = gf119_disp_vblank_fini,
|
|
||||||
- .head.scanoutpos = gf119_disp_root_scanoutpos,
|
|
||||||
- .outp.internal.crt = nv50_dac_output_new,
|
|
||||||
- .outp.internal.tmds = nv50_sor_output_new,
|
|
||||||
- .outp.internal.lvds = nv50_sor_output_new,
|
|
||||||
- .outp.internal.dp = gf119_sor_dp_new,
|
|
||||||
- .dac.nr = 3,
|
|
||||||
- .dac.power = nv50_dac_power,
|
|
||||||
- .dac.sense = nv50_dac_sense,
|
|
||||||
- .sor.nr = 4,
|
|
||||||
- .sor.power = nv50_sor_power,
|
|
||||||
- .sor.hda_eld = gf119_hda_eld,
|
|
||||||
- .sor.hdmi = gk104_hdmi_ctrl,
|
|
||||||
+int
|
|
||||||
+gm107_sor_dp_pattern(struct nvkm_output_dp *outp, int pattern)
|
|
||||||
+{
|
|
||||||
+ struct nvkm_device *device = outp->base.disp->engine.subdev.device;
|
|
||||||
+ const u32 soff = outp->base.or * 0x800;
|
|
||||||
+ const u32 data = 0x01010101 * pattern;
|
|
||||||
+ if (outp->base.info.sorconf.link & 1)
|
|
||||||
+ nvkm_mask(device, 0x61c110 + soff, 0x0f0f0f0f, data);
|
|
||||||
+ else
|
|
||||||
+ nvkm_mask(device, 0x61c12c + soff, 0x0f0f0f0f, data);
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct nvkm_output_dp_func
|
|
||||||
+gm107_sor_dp_func = {
|
|
||||||
+ .pattern = gm107_sor_dp_pattern,
|
|
||||||
+ .lnk_pwr = g94_sor_dp_lnk_pwr,
|
|
||||||
+ .lnk_ctl = gf119_sor_dp_lnk_ctl,
|
|
||||||
+ .drv_ctl = gf119_sor_dp_drv_ctl,
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
|
||||||
-gm107_disp_new(struct nvkm_device *device, int index, struct nvkm_disp **pdisp)
|
|
||||||
+gm107_sor_dp_new(struct nvkm_disp *disp, int index,
|
|
||||||
+ struct dcb_output *dcbE, struct nvkm_output **poutp)
|
|
||||||
{
|
|
||||||
- return gf119_disp_new_(&gm107_disp, device, index, pdisp);
|
|
||||||
+ return nvkm_output_dp_new_(&gm107_sor_dp_func, disp, index, dcbE, poutp);
|
|
||||||
}
|
|
||||||
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
|
|
||||||
index 2cfbef9..c44fa7e 100644
|
|
||||||
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
|
|
||||||
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c
|
|
||||||
@@ -57,19 +57,6 @@ gm200_sor_dp_lane_map(struct nvkm_device *device, u8 lane)
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
-gm200_sor_dp_pattern(struct nvkm_output_dp *outp, int pattern)
|
|
||||||
-{
|
|
||||||
- struct nvkm_device *device = outp->base.disp->engine.subdev.device;
|
|
||||||
- const u32 soff = gm200_sor_soff(outp);
|
|
||||||
- const u32 data = 0x01010101 * pattern;
|
|
||||||
- if (outp->base.info.sorconf.link & 1)
|
|
||||||
- nvkm_mask(device, 0x61c110 + soff, 0x0f0f0f0f, data);
|
|
||||||
- else
|
|
||||||
- nvkm_mask(device, 0x61c12c + soff, 0x0f0f0f0f, data);
|
|
||||||
- return 0;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static int
|
|
||||||
gm200_sor_dp_lnk_pwr(struct nvkm_output_dp *outp, int nr)
|
|
||||||
{
|
|
||||||
struct nvkm_device *device = outp->base.disp->engine.subdev.device;
|
|
||||||
@@ -129,7 +116,7 @@ gm200_sor_dp_drv_ctl(struct nvkm_output_dp *outp,
|
|
||||||
|
|
||||||
static const struct nvkm_output_dp_func
|
|
||||||
gm200_sor_dp_func = {
|
|
||||||
- .pattern = gm200_sor_dp_pattern,
|
|
||||||
+ .pattern = gm107_sor_dp_pattern,
|
|
||||||
.lnk_pwr = gm200_sor_dp_lnk_pwr,
|
|
||||||
.lnk_ctl = gf119_sor_dp_lnk_ctl,
|
|
||||||
.drv_ctl = gm200_sor_dp_drv_ctl,
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1,55 +0,0 @@
|
||||||
From 28d0147bded959b2c4d3eb1aa957452d5dbb0cc9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
|
|
||||||
Date: Mon, 20 Jun 2016 14:52:10 +0200
|
|
||||||
Subject: [PATCH 5/6] i915/fbc: Disable on HSW by default for now
|
|
||||||
|
|
||||||
Upstream: posted on dri-devel (and r-b'd)
|
|
||||||
|
|
||||||
Author: cpaul@redhat.com <cpaul@redhat.com>
|
|
||||||
AuthorDate: Thu Jun 9 11:58:15 2016 -0400
|
|
||||||
Commit: Rob Clark <rclark@redhat.com>
|
|
||||||
CommitDate: Thu Jun 9 15:43:07 2016 -0400
|
|
||||||
|
|
||||||
i915/fbc: Disable on HSW by default for now
|
|
||||||
|
|
||||||
>From https://bugs.freedesktop.org/show_bug.cgi?id=96461 :
|
|
||||||
|
|
||||||
This was kind of a difficult bug to track down. If you're using a
|
|
||||||
Haswell system running GNOME and you have fbc completely enabled and
|
|
||||||
working, playing videos can result in video artifacts. Steps to
|
|
||||||
reproduce:
|
|
||||||
|
|
||||||
- Run GNOME
|
|
||||||
- Ensure FBC is enabled and active
|
|
||||||
- Download a movie, I used the ogg version of Big Buck Bunny for this
|
|
||||||
- Run `gst-launch-1.0 filesrc location='some_movie.ogg' ! decodebin !
|
|
||||||
glimagesink` in a terminal
|
|
||||||
- Watch for about over a minute, you'll see small horizontal lines go
|
|
||||||
down the screen.
|
|
||||||
|
|
||||||
For the time being, disable FBC for Haswell by default.
|
|
||||||
|
|
||||||
Signed-off-by: Lyude <cpaul@redhat.com>
|
|
||||||
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
||||||
Cc: stable@vger.kernel.org
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/i915/intel_fbc.c | 3 +--
|
|
||||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
|
|
||||||
index 0f0492f..28f4407 100644
|
|
||||||
--- a/drivers/gpu/drm/i915/intel_fbc.c
|
|
||||||
+++ b/drivers/gpu/drm/i915/intel_fbc.c
|
|
||||||
@@ -823,8 +823,7 @@ static bool intel_fbc_can_choose(struct intel_crtc *crtc)
|
|
||||||
{
|
|
||||||
struct drm_i915_private *dev_priv = crtc->base.dev->dev_private;
|
|
||||||
struct intel_fbc *fbc = &dev_priv->fbc;
|
|
||||||
- bool enable_by_default = IS_HASWELL(dev_priv) ||
|
|
||||||
- IS_BROADWELL(dev_priv);
|
|
||||||
+ bool enable_by_default = IS_BROADWELL(dev_priv);
|
|
||||||
|
|
||||||
if (intel_vgpu_active(dev_priv->dev)) {
|
|
||||||
fbc->no_fbc_reason = "VGPU is active";
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
From 527a5767c165abd2b4dba99da992c51ca7547562 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kangjie Lu <kangjielu@gmail.com>
|
|
||||||
Date: Tue, 3 May 2016 16:44:07 -0400
|
|
||||||
Subject: [PATCH 1/3] ALSA: timer: Fix leak in SNDRV_TIMER_IOCTL_PARAMS
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The stack object “tread” has a total size of 32 bytes. Its field
|
|
||||||
“event” and “val” both contain 4 bytes padding. These 8 bytes
|
|
||||||
padding bytes are sent to user without being initialized.
|
|
||||||
|
|
||||||
Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
sound/core/timer.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/sound/core/timer.c b/sound/core/timer.c
|
|
||||||
index 6469bedda2f3..964f5ebf495e 100644
|
|
||||||
--- a/sound/core/timer.c
|
|
||||||
+++ b/sound/core/timer.c
|
|
||||||
@@ -1739,6 +1739,7 @@ static int snd_timer_user_params(struct file *file,
|
|
||||||
if (tu->timeri->flags & SNDRV_TIMER_IFLG_EARLY_EVENT) {
|
|
||||||
if (tu->tread) {
|
|
||||||
struct snd_timer_tread tread;
|
|
||||||
+ memset(&tread, 0, sizeof(tread));
|
|
||||||
tread.event = SNDRV_TIMER_EVENT_EARLY;
|
|
||||||
tread.tstamp.tv_sec = 0;
|
|
||||||
tread.tstamp.tv_nsec = 0;
|
|
||||||
--
|
|
||||||
2.5.5
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
From addd6e9f0e25efb00d813d54528607c75b77c416 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kangjie Lu <kangjielu@gmail.com>
|
|
||||||
Date: Tue, 3 May 2016 16:44:20 -0400
|
|
||||||
Subject: [PATCH 2/3] ALSA: timer: Fix leak in events via
|
|
||||||
snd_timer_user_ccallback
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The stack object “r1” has a total size of 32 bytes. Its field
|
|
||||||
“event” and “val” both contain 4 bytes padding. These 8 bytes
|
|
||||||
padding bytes are sent to user without being initialized.
|
|
||||||
|
|
||||||
Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
sound/core/timer.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/sound/core/timer.c b/sound/core/timer.c
|
|
||||||
index 964f5ebf495e..e98fa5feb731 100644
|
|
||||||
--- a/sound/core/timer.c
|
|
||||||
+++ b/sound/core/timer.c
|
|
||||||
@@ -1225,6 +1225,7 @@ static void snd_timer_user_ccallback(struct snd_timer_instance *timeri,
|
|
||||||
tu->tstamp = *tstamp;
|
|
||||||
if ((tu->filter & (1 << event)) == 0 || !tu->tread)
|
|
||||||
return;
|
|
||||||
+ memset(&r1, 0, sizeof(r1));
|
|
||||||
r1.event = event;
|
|
||||||
r1.tstamp = *tstamp;
|
|
||||||
r1.val = resolution;
|
|
||||||
--
|
|
||||||
2.5.5
|
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
From b06a443b5679e9a0298e2f206ddb60845569f62f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kangjie Lu <kangjielu@gmail.com>
|
|
||||||
Date: Tue, 3 May 2016 16:44:32 -0400
|
|
||||||
Subject: [PATCH 3/3] ALSA: timer: Fix leak in events via
|
|
||||||
snd_timer_user_tinterrupt
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The stack object “r1” has a total size of 32 bytes. Its field
|
|
||||||
“event” and “val” both contain 4 bytes padding. These 8 bytes
|
|
||||||
padding bytes are sent to user without being initialized.
|
|
||||||
|
|
||||||
Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
|
|
||||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
||||||
---
|
|
||||||
sound/core/timer.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/sound/core/timer.c b/sound/core/timer.c
|
|
||||||
index e98fa5feb731..c69a27155433 100644
|
|
||||||
--- a/sound/core/timer.c
|
|
||||||
+++ b/sound/core/timer.c
|
|
||||||
@@ -1268,6 +1268,7 @@ static void snd_timer_user_tinterrupt(struct snd_timer_instance *timeri,
|
|
||||||
}
|
|
||||||
if ((tu->filter & (1 << SNDRV_TIMER_EVENT_RESOLUTION)) &&
|
|
||||||
tu->last_resolution != resolution) {
|
|
||||||
+ memset(&r1, 0, sizeof(r1));
|
|
||||||
r1.event = SNDRV_TIMER_EVENT_RESOLUTION;
|
|
||||||
r1.tstamp = tstamp;
|
|
||||||
r1.val = resolution;
|
|
||||||
--
|
|
||||||
2.5.5
|
|
||||||
|
|
|
@ -1,217 +0,0 @@
|
||||||
From 6b6203b92cfb457a0669a9c87a29b360405bffc6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Matthew Garrett <matthew.garrett@nebula.com>
|
|
||||||
Date: Fri, 9 Aug 2013 18:36:30 -0400
|
|
||||||
Subject: [PATCH 10/20] Add option to automatically enforce module signatures
|
|
||||||
when in Secure Boot mode
|
|
||||||
|
|
||||||
UEFI Secure Boot provides a mechanism for ensuring that the firmware will
|
|
||||||
only load signed bootloaders and kernels. Certain use cases may also
|
|
||||||
require that all kernel modules also be signed. Add a configuration option
|
|
||||||
that enforces this automatically when enabled.
|
|
||||||
|
|
||||||
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
|
|
||||||
---
|
|
||||||
Documentation/x86/zero-page.txt | 2 ++
|
|
||||||
arch/x86/Kconfig | 11 ++++++
|
|
||||||
arch/x86/boot/compressed/eboot.c | 66 +++++++++++++++++++++++++++++++++++
|
|
||||||
arch/x86/include/uapi/asm/bootparam.h | 3 +-
|
|
||||||
arch/x86/kernel/setup.c | 6 ++++
|
|
||||||
include/linux/module.h | 6 ++++
|
|
||||||
kernel/module.c | 7 ++++
|
|
||||||
7 files changed, 100 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt
|
|
||||||
index 95a4d34af3fd..b8527c6b7646 100644
|
|
||||||
--- a/Documentation/x86/zero-page.txt
|
|
||||||
+++ b/Documentation/x86/zero-page.txt
|
|
||||||
@@ -31,6 +31,8 @@ Offset Proto Name Meaning
|
|
||||||
1E9/001 ALL eddbuf_entries Number of entries in eddbuf (below)
|
|
||||||
1EA/001 ALL edd_mbr_sig_buf_entries Number of entries in edd_mbr_sig_buffer
|
|
||||||
(below)
|
|
||||||
+1EB/001 ALL kbd_status Numlock is enabled
|
|
||||||
+1EC/001 ALL secure_boot Secure boot is enabled in the firmware
|
|
||||||
1EF/001 ALL sentinel Used to detect broken bootloaders
|
|
||||||
290/040 ALL edd_mbr_sig_buffer EDD MBR signatures
|
|
||||||
2D0/A00 ALL e820_map E820 memory map table
|
|
||||||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
|
|
||||||
index bada636d1065..d666ef8b616c 100644
|
|
||||||
--- a/arch/x86/Kconfig
|
|
||||||
+++ b/arch/x86/Kconfig
|
|
||||||
@@ -1786,6 +1786,17 @@ config EFI_MIXED
|
|
||||||
|
|
||||||
If unsure, say N.
|
|
||||||
|
|
||||||
+config EFI_SECURE_BOOT_SIG_ENFORCE
|
|
||||||
+ def_bool n
|
|
||||||
+ depends on EFI
|
|
||||||
+ prompt "Force module signing when UEFI Secure Boot is enabled"
|
|
||||||
+ ---help---
|
|
||||||
+ UEFI Secure Boot provides a mechanism for ensuring that the
|
|
||||||
+ firmware will only load signed bootloaders and kernels. Certain
|
|
||||||
+ use cases may also require that all kernel modules also be signed.
|
|
||||||
+ Say Y here to automatically enable module signature enforcement
|
|
||||||
+ when a system boots with UEFI Secure Boot enabled.
|
|
||||||
+
|
|
||||||
config SECCOMP
|
|
||||||
def_bool y
|
|
||||||
prompt "Enable seccomp to safely compute untrusted bytecode"
|
|
||||||
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
|
|
||||||
index cc69e37548db..ebc85c1eefd6 100644
|
|
||||||
--- a/arch/x86/boot/compressed/eboot.c
|
|
||||||
+++ b/arch/x86/boot/compressed/eboot.c
|
|
||||||
@@ -12,6 +12,7 @@
|
|
||||||
#include <asm/efi.h>
|
|
||||||
#include <asm/setup.h>
|
|
||||||
#include <asm/desc.h>
|
|
||||||
+#include <asm/bootparam_utils.h>
|
|
||||||
|
|
||||||
#include "../string.h"
|
|
||||||
#include "eboot.h"
|
|
||||||
@@ -537,6 +538,67 @@ static void setup_efi_pci(struct boot_params *params)
|
|
||||||
efi_call_early(free_pool, pci_handle);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int get_secure_boot(void)
|
|
||||||
+{
|
|
||||||
+ u8 sb, setup;
|
|
||||||
+ unsigned long datasize = sizeof(sb);
|
|
||||||
+ efi_guid_t var_guid = EFI_GLOBAL_VARIABLE_GUID;
|
|
||||||
+ efi_status_t status;
|
|
||||||
+
|
|
||||||
+ status = efi_early->call((unsigned long)sys_table->runtime->get_variable,
|
|
||||||
+ L"SecureBoot", &var_guid, NULL, &datasize, &sb);
|
|
||||||
+
|
|
||||||
+ if (status != EFI_SUCCESS)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ if (sb == 0)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ status = efi_early->call((unsigned long)sys_table->runtime->get_variable,
|
|
||||||
+ L"SetupMode", &var_guid, NULL, &datasize,
|
|
||||||
+ &setup);
|
|
||||||
+
|
|
||||||
+ if (status != EFI_SUCCESS)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ if (setup == 1)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ return 1;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * See if we have Graphics Output Protocol
|
|
||||||
+ */
|
|
||||||
+static efi_status_t setup_gop(struct screen_info *si, efi_guid_t *proto,
|
|
||||||
+ unsigned long size)
|
|
||||||
+{
|
|
||||||
+ efi_status_t status;
|
|
||||||
+ void **gop_handle = NULL;
|
|
||||||
+
|
|
||||||
+ status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
|
|
||||||
+ size, (void **)&gop_handle);
|
|
||||||
+ if (status != EFI_SUCCESS)
|
|
||||||
+ return status;
|
|
||||||
+
|
|
||||||
+ status = efi_call_early(locate_handle,
|
|
||||||
+ EFI_LOCATE_BY_PROTOCOL,
|
|
||||||
+ proto, NULL, &size, gop_handle);
|
|
||||||
+ if (status != EFI_SUCCESS)
|
|
||||||
+ goto free_handle;
|
|
||||||
+
|
|
||||||
+ if (efi_early->is64)
|
|
||||||
+ status = setup_gop64(si, proto, size, gop_handle);
|
|
||||||
+ else
|
|
||||||
+ status = setup_gop32(si, proto, size, gop_handle);
|
|
||||||
+
|
|
||||||
+free_handle:
|
|
||||||
+ efi_call_early(free_pool, gop_handle);
|
|
||||||
+ return status;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
static efi_status_t
|
|
||||||
setup_uga32(void **uga_handle, unsigned long size, u32 *width, u32 *height)
|
|
||||||
{
|
|
||||||
@@ -1094,6 +1156,10 @@ struct boot_params *efi_main(struct efi_config *c,
|
|
||||||
else
|
|
||||||
setup_boot_services32(efi_early);
|
|
||||||
|
|
||||||
+ sanitize_boot_params(boot_params);
|
|
||||||
+
|
|
||||||
+ boot_params->secure_boot = get_secure_boot();
|
|
||||||
+
|
|
||||||
setup_graphics(boot_params);
|
|
||||||
|
|
||||||
setup_efi_pci(boot_params);
|
|
||||||
diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h
|
|
||||||
index c18ce67495fa..2b3e5427097b 100644
|
|
||||||
--- a/arch/x86/include/uapi/asm/bootparam.h
|
|
||||||
+++ b/arch/x86/include/uapi/asm/bootparam.h
|
|
||||||
@@ -134,7 +134,8 @@ struct boot_params {
|
|
||||||
__u8 eddbuf_entries; /* 0x1e9 */
|
|
||||||
__u8 edd_mbr_sig_buf_entries; /* 0x1ea */
|
|
||||||
__u8 kbd_status; /* 0x1eb */
|
|
||||||
- __u8 _pad5[3]; /* 0x1ec */
|
|
||||||
+ __u8 secure_boot; /* 0x1ec */
|
|
||||||
+ __u8 _pad5[2]; /* 0x1ed */
|
|
||||||
/*
|
|
||||||
* The sentinel is set to a nonzero value (0xff) in header.S.
|
|
||||||
*
|
|
||||||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
|
|
||||||
index bbfbca5fea0c..d40e961753c9 100644
|
|
||||||
--- a/arch/x86/kernel/setup.c
|
|
||||||
+++ b/arch/x86/kernel/setup.c
|
|
||||||
@@ -1160,6 +1160,12 @@ void __init setup_arch(char **cmdline_p)
|
|
||||||
|
|
||||||
io_delay_init();
|
|
||||||
|
|
||||||
+#ifdef CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE
|
|
||||||
+ if (boot_params.secure_boot) {
|
|
||||||
+ enforce_signed_modules();
|
|
||||||
+ }
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Parse the ACPI tables for possible boot-time SMP configuration.
|
|
||||||
*/
|
|
||||||
diff --git a/include/linux/module.h b/include/linux/module.h
|
|
||||||
index 05bd6c989a0c..32327704e18d 100644
|
|
||||||
--- a/include/linux/module.h
|
|
||||||
+++ b/include/linux/module.h
|
|
||||||
@@ -260,6 +260,12 @@ extern const typeof(name) __mod_##type##__##name##_device_table \
|
|
||||||
|
|
||||||
struct notifier_block;
|
|
||||||
|
|
||||||
+#ifdef CONFIG_MODULE_SIG
|
|
||||||
+extern void enforce_signed_modules(void);
|
|
||||||
+#else
|
|
||||||
+static inline void enforce_signed_modules(void) {};
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#ifdef CONFIG_MODULES
|
|
||||||
|
|
||||||
extern int modules_disabled; /* for sysctl */
|
|
||||||
diff --git a/kernel/module.c b/kernel/module.c
|
|
||||||
index cb864505d020..cb1f1da69bf4 100644
|
|
||||||
--- a/kernel/module.c
|
|
||||||
+++ b/kernel/module.c
|
|
||||||
@@ -4285,6 +4285,13 @@ void module_layout(struct module *mod,
|
|
||||||
EXPORT_SYMBOL(module_layout);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#ifdef CONFIG_MODULE_SIG
|
|
||||||
+void enforce_signed_modules(void)
|
|
||||||
+{
|
|
||||||
+ sig_enforce = true;
|
|
||||||
+}
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
bool secure_modules(void)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_MODULE_SIG
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,20 +0,0 @@
|
||||||
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
|
|
||||||
Date: Wed, 14 Dec 2016 16:53:21 -0600
|
|
||||||
Subject: [PATCH] Armada trace build fix
|
|
||||||
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/armada/Makefile | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/armada/Makefile b/drivers/gpu/drm/armada/Makefile
|
|
||||||
--- a/drivers/gpu/drm/armada/Makefile
|
|
||||||
+++ b/drivers/gpu/drm/armada/Makefile
|
|
||||||
@@ -4,3 +4,5 @@ armada-y += armada_510.o
|
|
||||||
armada-$(CONFIG_DEBUG_FS) += armada_debugfs.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_DRM_ARMADA) := armada.o
|
|
||||||
+
|
|
||||||
+CFLAGS_armada_trace.o := -I$(src)
|
|
||||||
--
|
|
||||||
2.9.3
|
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
From 4d6fa57b4dab0d77f4d8e9d9c73d1e63f6fe8fee Mon Sep 17 00:00:00 2001
|
||||||
|
From: "Jason A. Donenfeld" <Jason@zx2c4.com>
|
||||||
|
Date: Fri, 21 Apr 2017 23:14:48 +0200
|
||||||
|
Subject: macsec: avoid heap overflow in skb_to_sgvec
|
||||||
|
|
||||||
|
While this may appear as a humdrum one line change, it's actually quite
|
||||||
|
important. An sk_buff stores data in three places:
|
||||||
|
|
||||||
|
1. A linear chunk of allocated memory in skb->data. This is the easiest
|
||||||
|
one to work with, but it precludes using scatterdata since the memory
|
||||||
|
must be linear.
|
||||||
|
2. The array skb_shinfo(skb)->frags, which is of maximum length
|
||||||
|
MAX_SKB_FRAGS. This is nice for scattergather, since these fragments
|
||||||
|
can point to different pages.
|
||||||
|
3. skb_shinfo(skb)->frag_list, which is a pointer to another sk_buff,
|
||||||
|
which in turn can have data in either (1) or (2).
|
||||||
|
|
||||||
|
The first two are rather easy to deal with, since they're of a fixed
|
||||||
|
maximum length, while the third one is not, since there can be
|
||||||
|
potentially limitless chains of fragments. Fortunately dealing with
|
||||||
|
frag_list is opt-in for drivers, so drivers don't actually have to deal
|
||||||
|
with this mess. For whatever reason, macsec decided it wanted pain, and
|
||||||
|
so it explicitly specified NETIF_F_FRAGLIST.
|
||||||
|
|
||||||
|
Because dealing with (1), (2), and (3) is insane, most users of sk_buff
|
||||||
|
doing any sort of crypto or paging operation calls a convenient function
|
||||||
|
called skb_to_sgvec (which happens to be recursive if (3) is in use!).
|
||||||
|
This takes a sk_buff as input, and writes into its output pointer an
|
||||||
|
array of scattergather list items. Sometimes people like to declare a
|
||||||
|
fixed size scattergather list on the stack; othertimes people like to
|
||||||
|
allocate a fixed size scattergather list on the heap. However, if you're
|
||||||
|
doing it in a fixed-size fashion, you really shouldn't be using
|
||||||
|
NETIF_F_FRAGLIST too (unless you're also ensuring the sk_buff and its
|
||||||
|
frag_list children arent't shared and then you check the number of
|
||||||
|
fragments in total required.)
|
||||||
|
|
||||||
|
Macsec specifically does this:
|
||||||
|
|
||||||
|
size += sizeof(struct scatterlist) * (MAX_SKB_FRAGS + 1);
|
||||||
|
tmp = kmalloc(size, GFP_ATOMIC);
|
||||||
|
*sg = (struct scatterlist *)(tmp + sg_offset);
|
||||||
|
...
|
||||||
|
sg_init_table(sg, MAX_SKB_FRAGS + 1);
|
||||||
|
skb_to_sgvec(skb, sg, 0, skb->len);
|
||||||
|
|
||||||
|
Specifying MAX_SKB_FRAGS + 1 is the right answer usually, but not if you're
|
||||||
|
using NETIF_F_FRAGLIST, in which case the call to skb_to_sgvec will
|
||||||
|
overflow the heap, and disaster ensues.
|
||||||
|
|
||||||
|
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
|
||||||
|
Cc: stable@vger.kernel.org
|
||||||
|
Cc: security@kernel.org
|
||||||
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
---
|
||||||
|
drivers/net/macsec.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
|
||||||
|
index ff0a5ed..dbab05a 100644
|
||||||
|
--- a/drivers/net/macsec.c
|
||||||
|
+++ b/drivers/net/macsec.c
|
||||||
|
@@ -2716,7 +2716,7 @@ static netdev_tx_t macsec_start_xmit(struct sk_buff *skb,
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MACSEC_FEATURES \
|
||||||
|
- (NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST)
|
||||||
|
+ (NETIF_F_SG | NETIF_F_HIGHDMA)
|
||||||
|
static struct lock_class_key macsec_netdev_addr_lock_key;
|
||||||
|
|
||||||
|
static int macsec_dev_init(struct net_device *dev)
|
||||||
|
--
|
||||||
|
cgit v1.1
|
||||||
|
|
|
@ -0,0 +1,180 @@
|
||||||
|
From: "J. Bruce Fields" <bfields@redhat.com>
|
||||||
|
Date: 2017-04-14 15:04:40
|
||||||
|
Subject: [PATCH] nfsd: check for oversized NFSv2/v3 arguments
|
||||||
|
|
||||||
|
A client can append random data to the end of an NFSv2 or NFSv3 RPC call
|
||||||
|
without our complaining; we'll just stop parsing at the end of the
|
||||||
|
expected data and ignore the rest.
|
||||||
|
|
||||||
|
Encoded arguments and replies are stored together in an array of pages,
|
||||||
|
and if a call is too large it could leave inadequate space for the
|
||||||
|
reply. This is normally OK because NFS RPC's typically have either
|
||||||
|
short arguments and long replies (like READ) or long arguments and short
|
||||||
|
replies (like WRITE). But a client that sends an incorrectly long reply
|
||||||
|
can violate those assumptions. This was observed to cause crashes.
|
||||||
|
|
||||||
|
So, insist that the argument not be any longer than we expect.
|
||||||
|
|
||||||
|
Also, several operations increment rq_next_page in the decode routine
|
||||||
|
before checking the argument size, which can leave rq_next_page pointing
|
||||||
|
well past the end of the page array, causing trouble later in
|
||||||
|
svc_free_pages.
|
||||||
|
|
||||||
|
As followup we may also want to rewrite the encoding routines to check
|
||||||
|
more carefully that they aren't running off the end of the page array.
|
||||||
|
|
||||||
|
Reported-by: Tuomas Haanpää <thaan@synopsys.com>
|
||||||
|
Reported-by: Ari Kauppi <ari@synopsys.com>
|
||||||
|
Cc: stable@vger.kernel.org
|
||||||
|
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
|
||||||
|
---
|
||||||
|
fs/nfsd/nfs3xdr.c | 23 +++++++++++++++++------
|
||||||
|
fs/nfsd/nfsxdr.c | 13 ++++++++++---
|
||||||
|
include/linux/sunrpc/svc.h | 3 +--
|
||||||
|
3 files changed, 28 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c
|
||||||
|
index dba2ff8eaa68..be66bcadfaea 100644
|
||||||
|
--- a/fs/nfsd/nfs3xdr.c
|
||||||
|
+++ b/fs/nfsd/nfs3xdr.c
|
||||||
|
@@ -334,8 +334,11 @@ nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
if (!p)
|
||||||
|
return 0;
|
||||||
|
p = xdr_decode_hyper(p, &args->offset);
|
||||||
|
-
|
||||||
|
args->count = ntohl(*p++);
|
||||||
|
+
|
||||||
|
+ if (!xdr_argsize_check(rqstp, p))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
len = min(args->count, max_blocksize);
|
||||||
|
|
||||||
|
/* set up the kvec */
|
||||||
|
@@ -349,7 +352,7 @@ nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
v++;
|
||||||
|
}
|
||||||
|
args->vlen = v;
|
||||||
|
- return xdr_argsize_check(rqstp, p);
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
@@ -536,9 +539,11 @@ nfs3svc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
p = decode_fh(p, &args->fh);
|
||||||
|
if (!p)
|
||||||
|
return 0;
|
||||||
|
+ if (!xdr_argsize_check(rqstp, p))
|
||||||
|
+ return 0;
|
||||||
|
args->buffer = page_address(*(rqstp->rq_next_page++));
|
||||||
|
|
||||||
|
- return xdr_argsize_check(rqstp, p);
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
@@ -564,10 +569,14 @@ nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
args->verf = p; p += 2;
|
||||||
|
args->dircount = ~0;
|
||||||
|
args->count = ntohl(*p++);
|
||||||
|
+
|
||||||
|
+ if (!xdr_argsize_check(rqstp, p))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
args->count = min_t(u32, args->count, PAGE_SIZE);
|
||||||
|
args->buffer = page_address(*(rqstp->rq_next_page++));
|
||||||
|
|
||||||
|
- return xdr_argsize_check(rqstp, p);
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
@@ -585,6 +594,9 @@ nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
args->dircount = ntohl(*p++);
|
||||||
|
args->count = ntohl(*p++);
|
||||||
|
|
||||||
|
+ if (!xdr_argsize_check(rqstp, p))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
len = args->count = min(args->count, max_blocksize);
|
||||||
|
while (len > 0) {
|
||||||
|
struct page *p = *(rqstp->rq_next_page++);
|
||||||
|
@@ -592,8 +604,7 @@ nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
args->buffer = page_address(p);
|
||||||
|
len -= PAGE_SIZE;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- return xdr_argsize_check(rqstp, p);
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c
|
||||||
|
index 41b468a6a90f..79268369f7b3 100644
|
||||||
|
--- a/fs/nfsd/nfsxdr.c
|
||||||
|
+++ b/fs/nfsd/nfsxdr.c
|
||||||
|
@@ -257,6 +257,9 @@ nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
len = args->count = ntohl(*p++);
|
||||||
|
p++; /* totalcount - unused */
|
||||||
|
|
||||||
|
+ if (!xdr_argsize_check(rqstp, p))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
len = min_t(unsigned int, len, NFSSVC_MAXBLKSIZE_V2);
|
||||||
|
|
||||||
|
/* set up somewhere to store response.
|
||||||
|
@@ -272,7 +275,7 @@ nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
v++;
|
||||||
|
}
|
||||||
|
args->vlen = v;
|
||||||
|
- return xdr_argsize_check(rqstp, p);
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
@@ -360,9 +363,11 @@ nfssvc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p, struct nfsd_readli
|
||||||
|
p = decode_fh(p, &args->fh);
|
||||||
|
if (!p)
|
||||||
|
return 0;
|
||||||
|
+ if (!xdr_argsize_check(rqstp, p))
|
||||||
|
+ return 0;
|
||||||
|
args->buffer = page_address(*(rqstp->rq_next_page++));
|
||||||
|
|
||||||
|
- return xdr_argsize_check(rqstp, p);
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
@@ -400,9 +405,11 @@ nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p,
|
||||||
|
args->cookie = ntohl(*p++);
|
||||||
|
args->count = ntohl(*p++);
|
||||||
|
args->count = min_t(u32, args->count, PAGE_SIZE);
|
||||||
|
+ if (!xdr_argsize_check(rqstp, p))
|
||||||
|
+ return 0;
|
||||||
|
args->buffer = page_address(*(rqstp->rq_next_page++));
|
||||||
|
|
||||||
|
- return xdr_argsize_check(rqstp, p);
|
||||||
|
+ return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h
|
||||||
|
index e770abeed32d..6ef19cf658b4 100644
|
||||||
|
--- a/include/linux/sunrpc/svc.h
|
||||||
|
+++ b/include/linux/sunrpc/svc.h
|
||||||
|
@@ -336,8 +336,7 @@ xdr_argsize_check(struct svc_rqst *rqstp, __be32 *p)
|
||||||
|
{
|
||||||
|
char *cp = (char *)p;
|
||||||
|
struct kvec *vec = &rqstp->rq_arg.head[0];
|
||||||
|
- return cp >= (char*)vec->iov_base
|
||||||
|
- && cp <= (char*)vec->iov_base + vec->iov_len;
|
||||||
|
+ return cp == (char *)vec->iov_base + vec->iov_len;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
--
|
||||||
|
2.9.3
|
||||||
|
|
||||||
|
--
|
||||||
|
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
|
||||||
|
the body of a message to majordomo@vger.kernel.org
|
||||||
|
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
@ -1,318 +0,0 @@
|
||||||
From 15b8caef5f380d9465876478ff5e365bc6afa5b6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Sun, 6 Mar 2016 10:59:13 +0000
|
|
||||||
Subject: [PATCH] Fix tegra to use stdout-path for serial console
|
|
||||||
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/tegra114-dalmore.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra124-jetson-tk1.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra124-nyan.dtsi | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra124-venice2.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-harmony.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-iris-512.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-medcom-wide.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-paz00.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-seaboard.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-tamonten.dtsi | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-trimslice.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-ventana.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra20-whistler.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra30-apalis-eval.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra30-beaver.dts | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra30-cardhu.dtsi | 4 ++++
|
|
||||||
arch/arm/boot/dts/tegra30-colibri-eval-v3.dts | 4 ++++
|
|
||||||
arch/arm64/boot/dts/nvidia/tegra132-norrin.dts | 5 ++++-
|
|
||||||
arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi | 4 ++++
|
|
||||||
19 files changed, 76 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts
|
|
||||||
index 8b7aa0d..b5748ee 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra114-dalmore.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra114-dalmore.dts
|
|
||||||
@@ -18,6 +18,10 @@
|
|
||||||
serial0 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x80000000 0x40000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra124-jetson-tk1.dts b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
|
|
||||||
index 66b4451..abf046a 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra124-jetson-tk1.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
|
|
||||||
@@ -15,6 +15,10 @@
|
|
||||||
serial0 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x0 0x80000000 0x0 0x80000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra124-nyan.dtsi b/arch/arm/boot/dts/tegra124-nyan.dtsi
|
|
||||||
index ec1aa64..e2cd39e 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra124-nyan.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/tegra124-nyan.dtsi
|
|
||||||
@@ -8,6 +8,10 @@
|
|
||||||
serial0 = &uarta;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x0 0x80000000 0x0 0x80000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra124-venice2.dts b/arch/arm/boot/dts/tegra124-venice2.dts
|
|
||||||
index cfbdf42..604f4b7 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra124-venice2.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra124-venice2.dts
|
|
||||||
@@ -13,6 +13,10 @@
|
|
||||||
serial0 = &uarta;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x0 0x80000000 0x0 0x80000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts
|
|
||||||
index b926a07..4b73c76 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-harmony.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-harmony.dts
|
|
||||||
@@ -13,6 +13,10 @@
|
|
||||||
serial0 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x00000000 0x40000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-iris-512.dts b/arch/arm/boot/dts/tegra20-iris-512.dts
|
|
||||||
index 1dd7d7b..bb56dfe 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-iris-512.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-iris-512.dts
|
|
||||||
@@ -11,6 +11,10 @@
|
|
||||||
serial1 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
host1x@50000000 {
|
|
||||||
hdmi@54280000 {
|
|
||||||
status = "okay";
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-medcom-wide.dts b/arch/arm/boot/dts/tegra20-medcom-wide.dts
|
|
||||||
index 9b87526..34c6588 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-medcom-wide.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-medcom-wide.dts
|
|
||||||
@@ -10,6 +10,10 @@
|
|
||||||
serial0 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
pwm@7000a000 {
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts
|
|
||||||
index ed7e100..81a10a9 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-paz00.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-paz00.dts
|
|
||||||
@@ -14,6 +14,10 @@
|
|
||||||
serial1 = &uartc;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x00000000 0x20000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts
|
|
||||||
index aea8994..0aed748 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-seaboard.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-seaboard.dts
|
|
||||||
@@ -13,6 +13,10 @@
|
|
||||||
serial0 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x00000000 0x40000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi
|
|
||||||
index 13d4e61..025e9e8 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-tamonten.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi
|
|
||||||
@@ -10,6 +10,10 @@
|
|
||||||
serial0 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x00000000 0x20000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts
|
|
||||||
index d99af4e..69d25ca 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-trimslice.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-trimslice.dts
|
|
||||||
@@ -13,6 +13,10 @@
|
|
||||||
serial0 = &uarta;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x00000000 0x40000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts
|
|
||||||
index 04c58e9..c61533a 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-ventana.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-ventana.dts
|
|
||||||
@@ -13,6 +13,10 @@
|
|
||||||
serial0 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x00000000 0x40000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra20-whistler.dts b/arch/arm/boot/dts/tegra20-whistler.dts
|
|
||||||
index 340d811..bd76585 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra20-whistler.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra20-whistler.dts
|
|
||||||
@@ -13,6 +13,10 @@
|
|
||||||
serial0 = &uarta;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x00000000 0x20000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra30-apalis-eval.dts b/arch/arm/boot/dts/tegra30-apalis-eval.dts
|
|
||||||
index f2879cf..b914bcb 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra30-apalis-eval.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra30-apalis-eval.dts
|
|
||||||
@@ -17,6 +17,10 @@
|
|
||||||
serial3 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
pcie-controller@00003000 {
|
|
||||||
status = "okay";
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra30-beaver.dts b/arch/arm/boot/dts/tegra30-beaver.dts
|
|
||||||
index 3dede39..1eca3b2 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra30-beaver.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra30-beaver.dts
|
|
||||||
@@ -12,6 +12,10 @@
|
|
||||||
serial0 = &uarta;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x80000000 0x7ff00000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi
|
|
||||||
index bb1ca15..de9d6cc 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra30-cardhu.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi
|
|
||||||
@@ -35,6 +35,10 @@
|
|
||||||
serial1 = &uartc;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
reg = <0x80000000 0x40000000>;
|
|
||||||
};
|
|
||||||
diff --git a/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts b/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
|
|
||||||
index 3ff019f..93e1ffd 100644
|
|
||||||
--- a/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
|
|
||||||
+++ b/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
|
|
||||||
@@ -15,6 +15,10 @@
|
|
||||||
serial2 = &uartd;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
host1x@50000000 {
|
|
||||||
dc@54200000 {
|
|
||||||
rgb {
|
|
||||||
diff --git a/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts b/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
|
|
||||||
index 62f33fc..3c0b4d7 100644
|
|
||||||
--- a/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
|
|
||||||
+++ b/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
|
|
||||||
@@ -10,9 +10,12 @@
|
|
||||||
aliases {
|
|
||||||
rtc0 = "/i2c@0,7000d000/as3722@40";
|
|
||||||
rtc1 = "/rtc@0,7000e000";
|
|
||||||
+ serial0 = &uarta;
|
|
||||||
};
|
|
||||||
|
|
||||||
- chosen { };
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
|
|
||||||
memory {
|
|
||||||
device_type = "memory";
|
|
||||||
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
|
|
||||||
index ece0dec..73ba582 100644
|
|
||||||
--- a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
|
|
||||||
+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
|
|
||||||
@@ -9,6 +9,10 @@
|
|
||||||
serial0 = &uarta;
|
|
||||||
};
|
|
||||||
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = "serial0:115200n8";
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
memory {
|
|
||||||
device_type = "memory";
|
|
||||||
reg = <0x0 0x80000000 0x0 0xc0000000>;
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,30 +0,0 @@
|
||||||
From 82a50018782f84e733e718d4b24e1653d19333be Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dan Carpenter <dan.carpenter@oracle.com>
|
|
||||||
Date: Wed, 15 Jun 2016 09:31:45 -0400
|
|
||||||
Subject: [PATCH] KEYS: potential uninitialized variable
|
|
||||||
|
|
||||||
If __key_link_begin() failed then "edit" would be uninitialized. I've
|
|
||||||
added a check to fix that.
|
|
||||||
|
|
||||||
Fixes: f70e2e06196a ('KEYS: Do preallocation for __key_link()')
|
|
||||||
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
|
|
||||||
---
|
|
||||||
security/keys/key.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/security/keys/key.c b/security/keys/key.c
|
|
||||||
index bd5a272f28a6..346fbf201c22 100644
|
|
||||||
--- a/security/keys/key.c
|
|
||||||
+++ b/security/keys/key.c
|
|
||||||
@@ -597,7 +597,7 @@ int key_reject_and_link(struct key *key,
|
|
||||||
|
|
||||||
mutex_unlock(&key_construction_mutex);
|
|
||||||
|
|
||||||
- if (keyring)
|
|
||||||
+ if (keyring && link_ret == 0)
|
|
||||||
__key_link_end(keyring, &key->index_key, edit);
|
|
||||||
|
|
||||||
/* wake up anyone waiting for a key to be constructed */
|
|
||||||
--
|
|
||||||
2.5.5
|
|
||||||
|
|
|
@ -1,41 +0,0 @@
|
||||||
From 7adc5cbc25dcc47dc3856108d9823d08da75da9d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kangjie Lu <kangjielu@gmail.com>
|
|
||||||
Date: Tue, 3 May 2016 16:32:16 -0400
|
|
||||||
Subject: [PATCH] USB: usbfs: fix potential infoleak in devio
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Type: text/plain; charset=UTF-8
|
|
||||||
Content-Transfer-Encoding: 8bit
|
|
||||||
|
|
||||||
The stack object “ci” has a total size of 8 bytes. Its last 3 bytes
|
|
||||||
are padding bytes which are not initialized and leaked to userland
|
|
||||||
via “copy_to_user”.
|
|
||||||
|
|
||||||
Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
|
|
||||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
||||||
---
|
|
||||||
drivers/usb/core/devio.c | 9 +++++----
|
|
||||||
1 file changed, 5 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
|
|
||||||
index 52c4461dfccd..9b7f1f75e887 100644
|
|
||||||
--- a/drivers/usb/core/devio.c
|
|
||||||
+++ b/drivers/usb/core/devio.c
|
|
||||||
@@ -1316,10 +1316,11 @@ static int proc_getdriver(struct usb_dev_state *ps, void __user *arg)
|
|
||||||
|
|
||||||
static int proc_connectinfo(struct usb_dev_state *ps, void __user *arg)
|
|
||||||
{
|
|
||||||
- struct usbdevfs_connectinfo ci = {
|
|
||||||
- .devnum = ps->dev->devnum,
|
|
||||||
- .slow = ps->dev->speed == USB_SPEED_LOW
|
|
||||||
- };
|
|
||||||
+ struct usbdevfs_connectinfo ci;
|
|
||||||
+
|
|
||||||
+ memset(&ci, 0, sizeof(ci));
|
|
||||||
+ ci.devnum = ps->dev->devnum;
|
|
||||||
+ ci.slow = ps->dev->speed == USB_SPEED_LOW;
|
|
||||||
|
|
||||||
if (copy_to_user(arg, &ci, sizeof(ci)))
|
|
||||||
return -EFAULT;
|
|
||||||
--
|
|
||||||
2.5.5
|
|
||||||
|
|
|
@ -1,34 +1,39 @@
|
||||||
From e2b55af60f9f498b95ffb458955f4ff787bd55a1 Mon Sep 17 00:00:00 2001
|
From e9e601215d294d473a593641b1ecfd1fa4586a90 Mon Sep 17 00:00:00 2001
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
From: Peter Robinson <pbrobinson@gmail.com>
|
||||||
Date: Fri, 20 Jan 2017 08:32:55 +0000
|
Date: Thu, 6 Apr 2017 13:52:54 +0100
|
||||||
Subject: [PATCH] Add support for Hummingobard2 (Edge/Gate)
|
Subject: [PATCH 1/4] [RFC,v2,1/4] ARM: dts: imx6qdl: add HummingBoard2 boards
|
||||||
|
|
||||||
http://www.spinics.net/lists/arm-kernel/msg552554.html
|
From: Jon Nettleton <jon@solid-run.com>
|
||||||
|
|
||||||
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
This adds support for the Hummingboard Gate and Edge devices from
|
||||||
|
SolidRun.
|
||||||
|
|
||||||
|
Signed-off-by: Jon Nettleton <jon@solid-run.com>
|
||||||
|
Signed-off-by: Rabeeh Khoury <rabeeh@solid-run.com>
|
||||||
|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
---
|
---
|
||||||
arch/arm/boot/dts/Makefile | 2 +
|
arch/arm/boot/dts/Makefile | 2 +
|
||||||
arch/arm/boot/dts/imx6dl-hummingboard2.dts | 52 +++
|
arch/arm/boot/dts/imx6dl-hummingboard2.dts | 52 +++
|
||||||
arch/arm/boot/dts/imx6q-hummingboard2.dts | 60 +++
|
arch/arm/boot/dts/imx6q-hummingboard2.dts | 60 +++
|
||||||
arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi | 562 +++++++++++++++++++++++++++
|
arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi | 543 +++++++++++++++++++++++++++
|
||||||
4 files changed, 676 insertions(+)
|
4 files changed, 657 insertions(+)
|
||||||
create mode 100644 arch/arm/boot/dts/imx6dl-hummingboard2.dts
|
create mode 100644 arch/arm/boot/dts/imx6dl-hummingboard2.dts
|
||||||
create mode 100644 arch/arm/boot/dts/imx6q-hummingboard2.dts
|
create mode 100644 arch/arm/boot/dts/imx6q-hummingboard2.dts
|
||||||
create mode 100644 arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
create mode 100644 arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||||||
index 7327250..09227cc 100644
|
index 011808490fed..ccdff6650541 100644
|
||||||
--- a/arch/arm/boot/dts/Makefile
|
--- a/arch/arm/boot/dts/Makefile
|
||||||
+++ b/arch/arm/boot/dts/Makefile
|
+++ b/arch/arm/boot/dts/Makefile
|
||||||
@@ -348,6 +348,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
|
@@ -353,6 +353,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
|
||||||
imx6dl-gw552x.dtb \
|
imx6dl-gw552x.dtb \
|
||||||
imx6dl-gw553x.dtb \
|
imx6dl-gw553x.dtb \
|
||||||
imx6dl-hummingboard.dtb \
|
imx6dl-hummingboard.dtb \
|
||||||
+ imx6dl-hummingboard2.dtb \
|
+ imx6dl-hummingboard2.dtb \
|
||||||
imx6dl-icore.dtb \
|
imx6dl-icore.dtb \
|
||||||
|
imx6dl-icore-rqs.dtb \
|
||||||
imx6dl-nit6xlite.dtb \
|
imx6dl-nit6xlite.dtb \
|
||||||
imx6dl-nitrogen6x.dtb \
|
@@ -397,6 +398,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
|
||||||
@@ -390,6 +391,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
|
|
||||||
imx6q-gw553x.dtb \
|
imx6q-gw553x.dtb \
|
||||||
imx6q-h100.dtb \
|
imx6q-h100.dtb \
|
||||||
imx6q-hummingboard.dtb \
|
imx6q-hummingboard.dtb \
|
||||||
|
@ -38,7 +43,7 @@ index 7327250..09227cc 100644
|
||||||
imx6q-marsboard.dtb \
|
imx6q-marsboard.dtb \
|
||||||
diff --git a/arch/arm/boot/dts/imx6dl-hummingboard2.dts b/arch/arm/boot/dts/imx6dl-hummingboard2.dts
|
diff --git a/arch/arm/boot/dts/imx6dl-hummingboard2.dts b/arch/arm/boot/dts/imx6dl-hummingboard2.dts
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..990b505
|
index 000000000000..990b5050de5b
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/arm/boot/dts/imx6dl-hummingboard2.dts
|
+++ b/arch/arm/boot/dts/imx6dl-hummingboard2.dts
|
||||||
@@ -0,0 +1,52 @@
|
@@ -0,0 +1,52 @@
|
||||||
|
@ -96,7 +101,7 @@ index 0000000..990b505
|
||||||
+};
|
+};
|
||||||
diff --git a/arch/arm/boot/dts/imx6q-hummingboard2.dts b/arch/arm/boot/dts/imx6q-hummingboard2.dts
|
diff --git a/arch/arm/boot/dts/imx6q-hummingboard2.dts b/arch/arm/boot/dts/imx6q-hummingboard2.dts
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..f5eec91
|
index 000000000000..f5eec9163bb8
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/arm/boot/dts/imx6q-hummingboard2.dts
|
+++ b/arch/arm/boot/dts/imx6q-hummingboard2.dts
|
||||||
@@ -0,0 +1,60 @@
|
@@ -0,0 +1,60 @@
|
||||||
|
@ -162,10 +167,10 @@ index 0000000..f5eec91
|
||||||
+};
|
+};
|
||||||
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..66098a5
|
index 000000000000..11b63f6f2b89
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
+++ b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
@@ -0,0 +1,562 @@
|
@@ -0,0 +1,543 @@
|
||||||
+/*
|
+/*
|
||||||
+ * Device Tree file for SolidRun HummingBoard2
|
+ * Device Tree file for SolidRun HummingBoard2
|
||||||
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
|
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
|
||||||
|
@ -180,12 +185,12 @@ index 0000000..66098a5
|
||||||
+ * published by the Free Software Foundation; either version 2 of the
|
+ * published by the Free Software Foundation; either version 2 of the
|
||||||
+ * License.
|
+ * License.
|
||||||
+ *
|
+ *
|
||||||
+ * This file is distributed in the hope that it will be useful
|
+ * This file is distributed in the hope that it will be useful,
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
+ * GNU General Public License for more details.
|
+ * GNU General Public License for more details.
|
||||||
+ *
|
+ *
|
||||||
+ * Or, alternatively
|
+ * Or, alternatively,
|
||||||
+ *
|
+ *
|
||||||
+ * b) Permission is hereby granted, free of charge, to any person
|
+ * b) Permission is hereby granted, free of charge, to any person
|
||||||
+ * obtaining a copy of this software and associated documentation
|
+ * obtaining a copy of this software and associated documentation
|
||||||
|
@ -199,11 +204,11 @@ index 0000000..66098a5
|
||||||
+ * The above copyright notice and this permission notice shall be
|
+ * The above copyright notice and this permission notice shall be
|
||||||
+ * included in all copies or substantial portions of the Software.
|
+ * included in all copies or substantial portions of the Software.
|
||||||
+ *
|
+ *
|
||||||
+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
|
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
+ * OTHER DEALINGS IN THE SOFTWARE.
|
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
@ -218,16 +223,18 @@ index 0000000..66098a5
|
||||||
+
|
+
|
||||||
+ ir_recv: ir-receiver {
|
+ ir_recv: ir-receiver {
|
||||||
+ compatible = "gpio-ir-receiver";
|
+ compatible = "gpio-ir-receiver";
|
||||||
+ gpios = <&gpio7 9 GPIO_ACTIVE_LOW>;
|
+ gpios = <&gpio7 9 1>;
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_gpio7_9>;
|
+ pinctrl-0 = <&pinctrl_hummingboard2_gpio7_9>;
|
||||||
+ linux,rc-map-name = "rc-rc6-mce";
|
+ linux,rc-map-name = "rc-rc6-mce";
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ regulators {
|
+ usdhc2_pwrseq: usdhc2-pwrseq {
|
||||||
+ compatible = "simple-bus";
|
+ compatible = "mmc-pwrseq-simple";
|
||||||
|
+ reset-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ };
|
||||||
+
|
+
|
||||||
+ reg_3p3v: 3p3v {
|
+ reg_3p3v: regulator-3p3v {
|
||||||
+ compatible = "regulator-fixed";
|
+ compatible = "regulator-fixed";
|
||||||
+ regulator-name = "3P3V";
|
+ regulator-name = "3P3V";
|
||||||
+ regulator-min-microvolt = <3300000>;
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
@ -235,7 +242,7 @@ index 0000000..66098a5
|
||||||
+ regulator-always-on;
|
+ regulator-always-on;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ reg_1p8v: 1p8v {
|
+ reg_1p8v: regulator-1p8v {
|
||||||
+ compatible = "regulator-fixed";
|
+ compatible = "regulator-fixed";
|
||||||
+ regulator-name = "1P8V";
|
+ regulator-name = "1P8V";
|
||||||
+ regulator-min-microvolt = <1800000>;
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
@ -243,22 +250,10 @@ index 0000000..66098a5
|
||||||
+ regulator-always-on;
|
+ regulator-always-on;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ reg_usdhc2_vmmc: reg-usdhc2-vmmc {
|
+ reg_usbh1_vbus: regulator-usb-h1-vbus {
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_vmmc>;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ regulator-max-microvolt = <3300000>;
|
|
||||||
+ regulator-min-microvolt = <3300000>;
|
|
||||||
+ regulator-name = "usdhc2_vmmc";
|
|
||||||
+ startup-delay-us = <1000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ reg_usbh1_vbus: usb-h1-vbus {
|
|
||||||
+ compatible = "regulator-fixed";
|
+ compatible = "regulator-fixed";
|
||||||
+ enable-active-high;
|
+ enable-active-high;
|
||||||
+ gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
|
+ gpio = <&gpio1 0 0>;
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh1_vbus>;
|
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh1_vbus>;
|
||||||
+ regulator-name = "usb_h1_vbus";
|
+ regulator-name = "usb_h1_vbus";
|
||||||
|
@ -266,10 +261,10 @@ index 0000000..66098a5
|
||||||
+ regulator-max-microvolt = <5000000>;
|
+ regulator-max-microvolt = <5000000>;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ reg_usbotg_vbus: usb-otg-vbus {
|
+ reg_usbotg_vbus: regulator-usb-otg-vbus {
|
||||||
+ compatible = "regulator-fixed";
|
+ compatible = "regulator-fixed";
|
||||||
+ enable-active-high;
|
+ enable-active-high;
|
||||||
+ gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
|
+ gpio = <&gpio3 22 0>;
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbotg_vbus>;
|
+ pinctrl-0 = <&pinctrl_hummingboard2_usbotg_vbus>;
|
||||||
+ regulator-name = "usb_otg_vbus";
|
+ regulator-name = "usb_otg_vbus";
|
||||||
|
@ -277,10 +272,10 @@ index 0000000..66098a5
|
||||||
+ regulator-max-microvolt = <5000000>;
|
+ regulator-max-microvolt = <5000000>;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ reg_usbh2_vbus: usb-h2-vbus {
|
+ reg_usbh2_vbus: regulator-usb-h2-vbus {
|
||||||
+ compatible = "regulator-gpio";
|
+ compatible = "regulator-gpio";
|
||||||
+ enable-active-high;
|
+ enable-active-high;
|
||||||
+ enable-gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>;
|
+ enable-gpio = <&gpio2 13 0>;
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh2_vbus>;
|
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh2_vbus>;
|
||||||
+ regulator-name = "usb_h2_vbus";
|
+ regulator-name = "usb_h2_vbus";
|
||||||
|
@ -289,10 +284,10 @@ index 0000000..66098a5
|
||||||
+ regulator-boot-on;
|
+ regulator-boot-on;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ reg_usbh3_vbus: usb-h3-vbus {
|
+ reg_usbh3_vbus: regulator-usb-h3-vbus {
|
||||||
+ compatible = "regulator-gpio";
|
+ compatible = "regulator-gpio";
|
||||||
+ enable-active-high;
|
+ enable-active-high;
|
||||||
+ enable-gpio = <&gpio7 10 GPIO_ACTIVE_HIGH>;
|
+ enable-gpio = <&gpio7 10 0>;
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh3_vbus>;
|
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh3_vbus>;
|
||||||
+ regulator-name = "usb_h3_vbus";
|
+ regulator-name = "usb_h3_vbus";
|
||||||
|
@ -300,7 +295,6 @@ index 0000000..66098a5
|
||||||
+ regulator-max-microvolt = <5000000>;
|
+ regulator-max-microvolt = <5000000>;
|
||||||
+ regulator-boot-on;
|
+ regulator-boot-on;
|
||||||
+ };
|
+ };
|
||||||
+ };
|
|
||||||
+
|
+
|
||||||
+ sound-sgtl5000 {
|
+ sound-sgtl5000 {
|
||||||
+ audio-codec = <&sgtl5000>;
|
+ audio-codec = <&sgtl5000>;
|
||||||
|
@ -323,7 +317,6 @@ index 0000000..66098a5
|
||||||
+&ecspi2 {
|
+&ecspi2 {
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_ecspi2>;
|
+ pinctrl-0 = <&pinctrl_hummingboard2_ecspi2>;
|
||||||
+ fsl,spi-num-chipselects = <1>;
|
|
||||||
+ cs-gpios = <&gpio2 26 0>;
|
+ cs-gpios = <&gpio2 26 0>;
|
||||||
+ status = "okay";
|
+ status = "okay";
|
||||||
+};
|
+};
|
||||||
|
@ -341,13 +334,13 @@ index 0000000..66098a5
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_i2c1>;
|
+ pinctrl-0 = <&pinctrl_hummingboard2_i2c1>;
|
||||||
+ status = "okay";
|
+ status = "okay";
|
||||||
+
|
+
|
||||||
+ rtc: pcf8523@68 {
|
+ pcf8523: rtc@68 {
|
||||||
+ compatible = "nxp,pcf8523";
|
+ compatible = "nxp,pcf8523";
|
||||||
+ reg = <0x68>;
|
+ reg = <0x68>;
|
||||||
+ nxp,12p5_pf;
|
+ nxp,12p5_pf;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ sgtl5000: sgtl5000@0a {
|
+ sgtl5000: codec@0a {
|
||||||
+ clocks = <&clks IMX6QDL_CLK_CKO>;
|
+ clocks = <&clks IMX6QDL_CLK_CKO>;
|
||||||
+ compatible = "fsl,sgtl5000";
|
+ compatible = "fsl,sgtl5000";
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
|
@ -375,6 +368,7 @@ index 0000000..66098a5
|
||||||
+&iomuxc {
|
+&iomuxc {
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <&pinctrl_hog>;
|
+ pinctrl-0 = <&pinctrl_hog>;
|
||||||
|
+
|
||||||
+ hummingboard2 {
|
+ hummingboard2 {
|
||||||
+ pinctrl_hog: hoggrp {
|
+ pinctrl_hog: hoggrp {
|
||||||
+ fsl,pins = <
|
+ fsl,pins = <
|
||||||
|
@ -474,6 +468,15 @@ index 0000000..66098a5
|
||||||
+ >;
|
+ >;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
|
+ pinctrl_hummingboard2_ecspi2: hummingboard2-ecspi2grp {
|
||||||
|
+ fsl,pins = <
|
||||||
|
+ MX6QDL_PAD_EIM_OE__ECSPI2_MISO 0x100b1
|
||||||
|
+ MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0x100b1
|
||||||
|
+ MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0x100b1
|
||||||
|
+ MX6QDL_PAD_EIM_RW__GPIO2_IO26 0x000b1 /* CS */
|
||||||
|
+ >;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
+ pinctrl_hummingboard2_gpio7_9: hummingboard2-gpio7_9 {
|
+ pinctrl_hummingboard2_gpio7_9: hummingboard2-gpio7_9 {
|
||||||
+ fsl,pins = <
|
+ fsl,pins = <
|
||||||
+ MX6QDL_PAD_SD4_CMD__GPIO7_IO09 0x80000000
|
+ MX6QDL_PAD_SD4_CMD__GPIO7_IO09 0x80000000
|
||||||
|
@ -563,6 +566,7 @@ index 0000000..66098a5
|
||||||
+
|
+
|
||||||
+ pinctrl_hummingboard2_usdhc2_aux: hummingboard2-usdhc2-aux {
|
+ pinctrl_hummingboard2_usdhc2_aux: hummingboard2-usdhc2-aux {
|
||||||
+ fsl,pins = <
|
+ fsl,pins = <
|
||||||
|
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x13071
|
||||||
+ MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b071
|
+ MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b071
|
||||||
+ MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
|
+ MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
|
||||||
+ >;
|
+ >;
|
||||||
|
@ -601,12 +605,6 @@ index 0000000..66098a5
|
||||||
+ >;
|
+ >;
|
||||||
+ };
|
+ };
|
||||||
+
|
+
|
||||||
+ pinctrl_hummingboard2_vmmc: hummingboard2-vmmc {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1f071
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usdhc3: hummingboard2-usdhc3 {
|
+ pinctrl_hummingboard2_usdhc3: hummingboard2-usdhc3 {
|
||||||
+ fsl,pins = <
|
+ fsl,pins = <
|
||||||
+ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
|
+ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
|
||||||
|
@ -629,15 +627,6 @@ index 0000000..66098a5
|
||||||
+ MX6QDL_PAD_EIM_D24__UART3_RX_DATA 0x40013000
|
+ MX6QDL_PAD_EIM_D24__UART3_RX_DATA 0x40013000
|
||||||
+ >;
|
+ >;
|
||||||
+ };
|
+ };
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_ecspi2: hummingboard2-ecspi2grp {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_EIM_OE__ECSPI2_MISO 0x100b1
|
|
||||||
+ MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0x100b1
|
|
||||||
+ MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0x100b1
|
|
||||||
+ MX6QDL_PAD_EIM_RW__GPIO2_IO26 0x000b1 /* CS */
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+ };
|
+ };
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
|
@ -652,9 +641,7 @@ index 0000000..66098a5
|
||||||
+
|
+
|
||||||
+&pcie {
|
+&pcie {
|
||||||
+ pinctrl-names = "default";
|
+ pinctrl-names = "default";
|
||||||
+ pinctrl-0 = <
|
+ pinctrl-0 = <&pinctrl_hummingboard2_pcie_reset>;
|
||||||
+ &pinctrl_hummingboard2_pcie_reset
|
|
||||||
+ >;
|
|
||||||
+ reset-gpio = <&gpio2 11 0>;
|
+ reset-gpio = <&gpio2 11 0>;
|
||||||
+ status = "okay";
|
+ status = "okay";
|
||||||
+};
|
+};
|
||||||
|
@ -674,7 +661,6 @@ index 0000000..66098a5
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
+&ssi1 {
|
+&ssi1 {
|
||||||
+ fsl,mode = "i2s-slave";
|
|
||||||
+ status = "okay";
|
+ status = "okay";
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
|
@ -706,8 +692,8 @@ index 0000000..66098a5
|
||||||
+ &pinctrl_hummingboard2_usdhc2_aux
|
+ &pinctrl_hummingboard2_usdhc2_aux
|
||||||
+ &pinctrl_hummingboard2_usdhc2_200mhz
|
+ &pinctrl_hummingboard2_usdhc2_200mhz
|
||||||
+ >;
|
+ >;
|
||||||
+ vmmc-supply = <®_usdhc2_vmmc>;
|
+ mmc-pwrseq = <&usdhc2_pwrseq>;
|
||||||
+ cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
+ cd-gpios = <&gpio1 4 0>;
|
||||||
+ status = "okay";
|
+ status = "okay";
|
||||||
+};
|
+};
|
||||||
+
|
+
|
||||||
|
@ -729,5 +715,188 @@ index 0000000..66098a5
|
||||||
+ status = "okay";
|
+ status = "okay";
|
||||||
+};
|
+};
|
||||||
--
|
--
|
||||||
2.9.3
|
2.12.2
|
||||||
|
|
||||||
|
From 3da2a99c4a8f19e846b19071441d2c6b88e00c06 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
|
Date: Fri, 13 Jan 2017 14:45:30 +0000
|
||||||
|
Subject: [PATCH 2/4] ARM: dts: imx6*-hummingboard2: fix SD card detect
|
||||||
|
|
||||||
|
Fix the SD card detect signal, which was missing the polarity
|
||||||
|
specification, and the pull-up necessary for proper signalling.
|
||||||
|
|
||||||
|
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
index 11b63f6f2b89..734487edf200 100644
|
||||||
|
--- a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
@@ -393,7 +393,7 @@
|
||||||
|
|
||||||
|
pinctrl_hummingboard2_usdhc2_aux: hummingboard2-usdhc2-aux {
|
||||||
|
fsl,pins = <
|
||||||
|
- MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x13071
|
||||||
|
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1f071
|
||||||
|
MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b071
|
||||||
|
MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
|
||||||
|
>;
|
||||||
|
@@ -520,7 +520,7 @@
|
||||||
|
&pinctrl_hummingboard2_usdhc2_200mhz
|
||||||
|
>;
|
||||||
|
mmc-pwrseq = <&usdhc2_pwrseq>;
|
||||||
|
- cd-gpios = <&gpio1 4 0>;
|
||||||
|
+ cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
||||||
|
From 57b0103b600a535a35e5ff9714649519a0b3a77a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
Date: Fri, 13 Jan 2017 14:45:35 +0000
|
||||||
|
Subject: [PATCH 3/4] ARM: dts: imx6*-hummingboard2: use proper gpio flags
|
||||||
|
definitions
|
||||||
|
|
||||||
|
Use proper gpio flag definitions for GPIOs rather than using opaque
|
||||||
|
uninformative numbers.
|
||||||
|
|
||||||
|
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi | 10 +++++-----
|
||||||
|
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
index 734487edf200..88aaed26dd77 100644
|
||||||
|
--- a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
@@ -50,7 +50,7 @@
|
||||||
|
|
||||||
|
ir_recv: ir-receiver {
|
||||||
|
compatible = "gpio-ir-receiver";
|
||||||
|
- gpios = <&gpio7 9 1>;
|
||||||
|
+ gpios = <&gpio7 9 GPIO_ACTIVE_LOW>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_hummingboard2_gpio7_9>;
|
||||||
|
linux,rc-map-name = "rc-rc6-mce";
|
||||||
|
@@ -80,7 +80,7 @@
|
||||||
|
reg_usbh1_vbus: regulator-usb-h1-vbus {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
- gpio = <&gpio1 0 0>;
|
||||||
|
+ gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_hummingboard2_usbh1_vbus>;
|
||||||
|
regulator-name = "usb_h1_vbus";
|
||||||
|
@@ -91,7 +91,7 @@
|
||||||
|
reg_usbotg_vbus: regulator-usb-otg-vbus {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
enable-active-high;
|
||||||
|
- gpio = <&gpio3 22 0>;
|
||||||
|
+ gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_hummingboard2_usbotg_vbus>;
|
||||||
|
regulator-name = "usb_otg_vbus";
|
||||||
|
@@ -102,7 +102,7 @@
|
||||||
|
reg_usbh2_vbus: regulator-usb-h2-vbus {
|
||||||
|
compatible = "regulator-gpio";
|
||||||
|
enable-active-high;
|
||||||
|
- enable-gpio = <&gpio2 13 0>;
|
||||||
|
+ enable-gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_hummingboard2_usbh2_vbus>;
|
||||||
|
regulator-name = "usb_h2_vbus";
|
||||||
|
@@ -114,7 +114,7 @@
|
||||||
|
reg_usbh3_vbus: regulator-usb-h3-vbus {
|
||||||
|
compatible = "regulator-gpio";
|
||||||
|
enable-active-high;
|
||||||
|
- enable-gpio = <&gpio7 10 0>;
|
||||||
|
+ enable-gpio = <&gpio7 10 GPIO_ACTIVE_HIGH>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_hummingboard2_usbh3_vbus>;
|
||||||
|
regulator-name = "usb_h3_vbus";
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
||||||
|
From f931de70370ff576f381cb9745bc54225a1a8056 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
|
Date: Fri, 13 Jan 2017 14:45:40 +0000
|
||||||
|
Subject: [PATCH 4/4] ARM: dts: imx6*-hummingboard2: convert to more
|
||||||
|
conventional vmmc-supply
|
||||||
|
|
||||||
|
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi | 26 +++++++++++++++++++-------
|
||||||
|
1 file changed, 19 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
index 88aaed26dd77..f19d30b34ac4 100644
|
||||||
|
--- a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
||||||
|
@@ -56,11 +56,6 @@
|
||||||
|
linux,rc-map-name = "rc-rc6-mce";
|
||||||
|
};
|
||||||
|
|
||||||
|
- usdhc2_pwrseq: usdhc2-pwrseq {
|
||||||
|
- compatible = "mmc-pwrseq-simple";
|
||||||
|
- reset-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
reg_3p3v: regulator-3p3v {
|
||||||
|
compatible = "regulator-fixed";
|
||||||
|
regulator-name = "3P3V";
|
||||||
|
@@ -123,6 +118,18 @@
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ reg_usdhc2_vmmc: reg-usdhc2-vmmc {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pinctrl_hummingboard2_vmmc>;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "usdhc2_vmmc";
|
||||||
|
+ startup-delay-us = <1000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
sound-sgtl5000 {
|
||||||
|
audio-codec = <&sgtl5000>;
|
||||||
|
audio-routing =
|
||||||
|
@@ -393,7 +400,6 @@
|
||||||
|
|
||||||
|
pinctrl_hummingboard2_usdhc2_aux: hummingboard2-usdhc2-aux {
|
||||||
|
fsl,pins = <
|
||||||
|
- MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1f071
|
||||||
|
MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b071
|
||||||
|
MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
|
||||||
|
>;
|
||||||
|
@@ -432,6 +438,12 @@
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ pinctrl_hummingboard2_vmmc: hummingboard2-vmmc {
|
||||||
|
+ fsl,pins = <
|
||||||
|
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1f071
|
||||||
|
+ >;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
pinctrl_hummingboard2_usdhc3: hummingboard2-usdhc3 {
|
||||||
|
fsl,pins = <
|
||||||
|
MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
|
||||||
|
@@ -519,7 +531,7 @@
|
||||||
|
&pinctrl_hummingboard2_usdhc2_aux
|
||||||
|
&pinctrl_hummingboard2_usdhc2_200mhz
|
||||||
|
>;
|
||||||
|
- mmc-pwrseq = <&usdhc2_pwrseq>;
|
||||||
|
+ vmmc-supply = <®_usdhc2_vmmc>;
|
||||||
|
cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,573 @@
|
||||||
|
From 223599514133293bb9afe7b82937140c3b275877 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Eddie Cai <eddie.cai.linux@gmail.com>
|
||||||
|
Date: Tue, 14 Feb 2017 18:07:31 +0800
|
||||||
|
Subject: ARM: dts: rockchip: add dts for RK3288-Tinker board
|
||||||
|
|
||||||
|
This patch add basic support for RK3288-Tinker board. We can boot in to rootfs
|
||||||
|
with this patch.
|
||||||
|
|
||||||
|
Signed-off-by: Eddie Cai <eddie.cai.linux@gmail.com>
|
||||||
|
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
|
||||||
|
---
|
||||||
|
arch/arm/boot/dts/Makefile | 1 +
|
||||||
|
arch/arm/boot/dts/rk3288-tinker.dts | 536 ++++++++++++++++++++++++++++++++++++
|
||||||
|
2 files changed, 537 insertions(+)
|
||||||
|
create mode 100644 arch/arm/boot/dts/rk3288-tinker.dts
|
||||||
|
|
||||||
|
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
||||||
|
index 0118084..fb46849 100644
|
||||||
|
--- a/arch/arm/boot/dts/Makefile
|
||||||
|
+++ b/arch/arm/boot/dts/Makefile
|
||||||
|
@@ -695,6 +695,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \
|
||||||
|
rk3288-popmetal.dtb \
|
||||||
|
rk3288-r89.dtb \
|
||||||
|
rk3288-rock2-square.dtb \
|
||||||
|
+ rk3288-tinker.dtb \
|
||||||
|
rk3288-veyron-brain.dtb \
|
||||||
|
rk3288-veyron-jaq.dtb \
|
||||||
|
rk3288-veyron-jerry.dtb \
|
||||||
|
diff --git a/arch/arm/boot/dts/rk3288-tinker.dts b/arch/arm/boot/dts/rk3288-tinker.dts
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..f601c78
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/rk3288-tinker.dts
|
||||||
|
@@ -0,0 +1,536 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd.
|
||||||
|
+ *
|
||||||
|
+ * This file is dual-licensed: you can use it either under the terms
|
||||||
|
+ * of the GPL or the X11 license, at your option. Note that this dual
|
||||||
|
+ * licensing only applies to this file, and not this project as a
|
||||||
|
+ * whole.
|
||||||
|
+ *
|
||||||
|
+ * a) This file is free software; you can redistribute it and/or
|
||||||
|
+ * modify it under the terms of the GNU General Public License as
|
||||||
|
+ * published by the Free Software Foundation; either version 2 of the
|
||||||
|
+ * License, or (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * This file is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * Or, alternatively,
|
||||||
|
+ *
|
||||||
|
+ * b) Permission is hereby granted, free of charge, to any person
|
||||||
|
+ * obtaining a copy of this software and associated documentation
|
||||||
|
+ * files (the "Software"), to deal in the Software without
|
||||||
|
+ * restriction, including without limitation the rights to use,
|
||||||
|
+ * copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
+ * sell copies of the Software, and to permit persons to whom the
|
||||||
|
+ * Software is furnished to do so, subject to the following
|
||||||
|
+ * conditions:
|
||||||
|
+ *
|
||||||
|
+ * The above copyright notice and this permission notice shall be
|
||||||
|
+ * included in all copies or substantial portions of the Software.
|
||||||
|
+ *
|
||||||
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
+ * OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+
|
||||||
|
+#include "rk3288.dtsi"
|
||||||
|
+#include <dt-bindings/input/input.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "Rockchip RK3288 Tinker Board";
|
||||||
|
+ compatible = "asus,rk3288-tinker", "rockchip,rk3288";
|
||||||
|
+
|
||||||
|
+ memory {
|
||||||
|
+ reg = <0x0 0x80000000>;
|
||||||
|
+ device_type = "memory";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ ext_gmac: external-gmac-clock {
|
||||||
|
+ compatible = "fixed-clock";
|
||||||
|
+ #clock-cells = <0>;
|
||||||
|
+ clock-frequency = <125000000>;
|
||||||
|
+ clock-output-names = "ext_gmac";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ gpio-keys {
|
||||||
|
+ compatible = "gpio-keys";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ autorepeat;
|
||||||
|
+
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pwrbtn>;
|
||||||
|
+
|
||||||
|
+ button@0 {
|
||||||
|
+ gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
|
||||||
|
+ linux,code = <KEY_POWER>;
|
||||||
|
+ label = "GPIO Key Power";
|
||||||
|
+ linux,input-type = <1>;
|
||||||
|
+ wakeup-source;
|
||||||
|
+ debounce-interval = <100>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ gpio-leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ act-led {
|
||||||
|
+ gpios=<&gpio1 RK_PD0 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ linux,default-trigger="mmc0";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ heartbeat-led {
|
||||||
|
+ gpios=<&gpio1 RK_PD1 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ linux,default-trigger="heartbeat";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ pwr-led {
|
||||||
|
+ gpios = <&gpio0 RK_PA3 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ linux,default-trigger = "default-on";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sound {
|
||||||
|
+ compatible = "simple-audio-card";
|
||||||
|
+ simple-audio-card,format = "i2s";
|
||||||
|
+ simple-audio-card,name = "rockchip,tinker-codec";
|
||||||
|
+ simple-audio-card,mclk-fs = <512>;
|
||||||
|
+
|
||||||
|
+ simple-audio-card,codec {
|
||||||
|
+ sound-dai = <&hdmi>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ simple-audio-card,cpu {
|
||||||
|
+ sound-dai = <&i2s>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_sys: vsys-regulator {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ regulator-name = "vcc_sys";
|
||||||
|
+ regulator-min-microvolt = <5000000>;
|
||||||
|
+ regulator-max-microvolt = <5000000>;
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_sd: sdmmc-regulator {
|
||||||
|
+ compatible = "regulator-fixed";
|
||||||
|
+ gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&sdmmc_pwr>;
|
||||||
|
+ regulator-name = "vcc_sd";
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ startup-delay-us = <100000>;
|
||||||
|
+ vin-supply = <&vcc_io>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&cpu0 {
|
||||||
|
+ cpu0-supply = <&vdd_cpu>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&gmac {
|
||||||
|
+ assigned-clocks = <&cru SCLK_MAC>;
|
||||||
|
+ assigned-clock-parents = <&ext_gmac>;
|
||||||
|
+ clock_in_out = "input";
|
||||||
|
+ phy-mode = "rgmii";
|
||||||
|
+ phy-supply = <&vcc33_lan>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&rgmii_pins>;
|
||||||
|
+ snps,reset-gpio = <&gpio4 7 0>;
|
||||||
|
+ snps,reset-active-low;
|
||||||
|
+ snps,reset-delays-us = <0 10000 1000000>;
|
||||||
|
+ tx_delay = <0x30>;
|
||||||
|
+ rx_delay = <0x10>;
|
||||||
|
+ status = "ok";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&hdmi {
|
||||||
|
+ ddc-i2c-bus = <&i2c5>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c0 {
|
||||||
|
+ clock-frequency = <400000>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ rk808: pmic@1b {
|
||||||
|
+ compatible = "rockchip,rk808";
|
||||||
|
+ reg = <0x1b>;
|
||||||
|
+ interrupt-parent = <&gpio0>;
|
||||||
|
+ interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ #clock-cells = <1>;
|
||||||
|
+ clock-output-names = "xin32k", "rk808-clkout2";
|
||||||
|
+ dvs-gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>,
|
||||||
|
+ <&gpio0 12 GPIO_ACTIVE_HIGH>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pmic_int &global_pwroff &dvs_1 &dvs_2>;
|
||||||
|
+ rockchip,system-power-controller;
|
||||||
|
+ wakeup-source;
|
||||||
|
+
|
||||||
|
+ vcc1-supply = <&vcc_sys>;
|
||||||
|
+ vcc2-supply = <&vcc_sys>;
|
||||||
|
+ vcc3-supply = <&vcc_sys>;
|
||||||
|
+ vcc4-supply = <&vcc_sys>;
|
||||||
|
+ vcc6-supply = <&vcc_sys>;
|
||||||
|
+ vcc7-supply = <&vcc_sys>;
|
||||||
|
+ vcc8-supply = <&vcc_io>;
|
||||||
|
+ vcc9-supply = <&vcc_io>;
|
||||||
|
+ vcc10-supply = <&vcc_io>;
|
||||||
|
+ vcc11-supply = <&vcc_sys>;
|
||||||
|
+ vcc12-supply = <&vcc_io>;
|
||||||
|
+ vddio-supply = <&vcc_io>;
|
||||||
|
+
|
||||||
|
+ regulators {
|
||||||
|
+ vdd_cpu: DCDC_REG1 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <750000>;
|
||||||
|
+ regulator-max-microvolt = <1350000>;
|
||||||
|
+ regulator-name = "vdd_arm";
|
||||||
|
+ regulator-ramp-delay = <6000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_gpu: DCDC_REG2 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <850000>;
|
||||||
|
+ regulator-max-microvolt = <1250000>;
|
||||||
|
+ regulator-name = "vdd_gpu";
|
||||||
|
+ regulator-ramp-delay = <6000>;
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_ddr: DCDC_REG3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-name = "vcc_ddr";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_io: DCDC_REG4 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc_io";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc18_ldo1: LDO_REG1 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-name = "vcc18_ldo1";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1800000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc33_mipi: LDO_REG2 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc33_mipi";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-off-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_10: LDO_REG3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-max-microvolt = <1000000>;
|
||||||
|
+ regulator-name = "vdd_10";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc18_codec: LDO_REG4 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-name = "vcc18_codec";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1800000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vccio_sd: LDO_REG5 {
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vccio_sd";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <3300000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd10_lcd: LDO_REG6 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1000000>;
|
||||||
|
+ regulator-max-microvolt = <1000000>;
|
||||||
|
+ regulator-name = "vdd10_lcd";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1000000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_18: LDO_REG7 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-name = "vcc_18";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1800000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc18_lcd: LDO_REG8 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-min-microvolt = <1800000>;
|
||||||
|
+ regulator-max-microvolt = <1800000>;
|
||||||
|
+ regulator-name = "vcc18_lcd";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ regulator-suspend-microvolt = <1800000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc33_sd: SWITCH_REG1 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-name = "vcc33_sd";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc33_lan: SWITCH_REG2 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-boot-on;
|
||||||
|
+ regulator-name = "vcc33_lan";
|
||||||
|
+ regulator-state-mem {
|
||||||
|
+ regulator-on-in-suspend;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c5 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2s {
|
||||||
|
+ #sound-dai-cells = <0>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&io_domains {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ sdcard-supply = <&vccio_sd>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pinctrl {
|
||||||
|
+ pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
|
||||||
|
+ drive-strength = <8>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
|
||||||
|
+ bias-pull-up;
|
||||||
|
+ drive-strength = <8>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ backlight {
|
||||||
|
+ bl_en: bl-en {
|
||||||
|
+ rockchip,pins = <7 2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ buttons {
|
||||||
|
+ pwrbtn: pwrbtn {
|
||||||
|
+ rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ eth_phy {
|
||||||
|
+ eth_phy_pwr: eth-phy-pwr {
|
||||||
|
+ rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ pmic {
|
||||||
|
+ pmic_int: pmic-int {
|
||||||
|
+ rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO \
|
||||||
|
+ &pcfg_pull_up>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dvs_1: dvs-1 {
|
||||||
|
+ rockchip,pins = <RK_GPIO0 11 RK_FUNC_GPIO \
|
||||||
|
+ &pcfg_pull_down>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ dvs_2: dvs-2 {
|
||||||
|
+ rockchip,pins = <RK_GPIO0 12 RK_FUNC_GPIO \
|
||||||
|
+ &pcfg_pull_down>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sdmmc {
|
||||||
|
+ sdmmc_bus4: sdmmc-bus4 {
|
||||||
|
+ rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||||
|
+ <6 17 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||||
|
+ <6 18 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||||
|
+ <6 19 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sdmmc_clk: sdmmc-clk {
|
||||||
|
+ rockchip,pins = <6 20 RK_FUNC_1 \
|
||||||
|
+ &pcfg_pull_none_drv_8ma>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sdmmc_cmd: sdmmc-cmd {
|
||||||
|
+ rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ sdmmc_pwr: sdmmc-pwr {
|
||||||
|
+ rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ usb {
|
||||||
|
+ host_vbus_drv: host-vbus-drv {
|
||||||
|
+ rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ pwr_3g: pwr-3g {
|
||||||
|
+ rockchip,pins = <7 8 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pwm0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&saradc {
|
||||||
|
+ vref-supply = <&vcc18_ldo1>;
|
||||||
|
+ status ="okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&sdmmc {
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cap-mmc-highspeed;
|
||||||
|
+ cap-sd-highspeed;
|
||||||
|
+ card-detect-delay = <200>;
|
||||||
|
+ disable-wp; /* wp not hooked up */
|
||||||
|
+ num-slots = <1>;
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
|
||||||
|
+ status = "okay";
|
||||||
|
+ vmmc-supply = <&vcc33_sd>;
|
||||||
|
+ vqmmc-supply = <&vccio_sd>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&tsadc {
|
||||||
|
+ rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
|
||||||
|
+ rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart3 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart4 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb_host0_ehci {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb_host1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb_otg {
|
||||||
|
+ status= "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vopb {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vopb_mmu {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vopl {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&vopl_mmu {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&wdt {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
--
|
||||||
|
cgit v1.1
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
From 487ff7b0e537506057960a0c2d9482d19f2acf4a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
Date: Wed, 26 Apr 2017 11:12:54 +0100
|
||||||
|
Subject: [PATCH] Add option of 13 for FORCE_MAX_ZONEORDER
|
||||||
|
|
||||||
|
This is a hack, but it's what the other distros currently use
|
||||||
|
for aarch64 with 4K pages so we'll do the same while upstream
|
||||||
|
decides what the best outcome is (which isn't this).
|
||||||
|
|
||||||
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
---
|
||||||
|
arch/arm64/Kconfig | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
|
||||||
|
index 3741859765cf..deec9511f1d3 100644
|
||||||
|
--- a/arch/arm64/Kconfig
|
||||||
|
+++ b/arch/arm64/Kconfig
|
||||||
|
@@ -751,6 +751,7 @@ config XEN
|
||||||
|
config FORCE_MAX_ZONEORDER
|
||||||
|
int
|
||||||
|
default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
|
||||||
|
+ default "13" if (ARCH_THUNDER && !ARM64_64K_PAGES)
|
||||||
|
default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
|
||||||
|
default "11"
|
||||||
|
help
|
||||||
|
--
|
||||||
|
2.12.2
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Sun, 3 May 2015 18:35:23 +0100
|
|
||||||
Subject: [PATCH] arm64: acpi drop expert patch
|
|
||||||
|
|
||||||
---
|
|
||||||
drivers/acpi/Kconfig | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
|
|
||||||
index 114cf48085ab..70ba3ef9a37b 100644
|
|
||||||
--- a/drivers/acpi/Kconfig
|
|
||||||
+++ b/drivers/acpi/Kconfig
|
|
||||||
@@ -5,7 +5,7 @@
|
|
||||||
menuconfig ACPI
|
|
||||||
bool "ACPI (Advanced Configuration and Power Interface) Support"
|
|
||||||
depends on !IA64_HP_SIM
|
|
||||||
- depends on IA64 || X86 || (ARM64 && EXPERT)
|
|
||||||
+ depends on IA64 || X86 || ARM64
|
|
||||||
depends on PCI
|
|
||||||
select PNP
|
|
||||||
default y
|
|
|
@ -1,46 +0,0 @@
|
||||||
From ce7a9e482dcf66d155e74b39ada1708cf6d9cb25 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mark Salter <msalter@redhat.com>
|
|
||||||
Date: Wed, 25 Mar 2015 14:17:50 -0400
|
|
||||||
Subject: [PATCH] arm64: avoid needing console= to enable serial console
|
|
||||||
|
|
||||||
Tell kernel to prefer one of the serial ports for console on
|
|
||||||
platforms currently supported (pl011 or 8250). console= on
|
|
||||||
command line will override these assumed preferences. This is
|
|
||||||
just a hack to get the behavior we want from DT provided by
|
|
||||||
firmware.
|
|
||||||
|
|
||||||
Signed-off-by: Mark Salter <msalter@redhat.com>
|
|
||||||
---
|
|
||||||
arch/arm64/kernel/setup.c | 20 ++++++++++++++++++++
|
|
||||||
1 file changed, 20 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
|
|
||||||
index 9dc67769b6a4..dfac33b47423 100644
|
|
||||||
--- a/arch/arm64/kernel/setup.c
|
|
||||||
+++ b/arch/arm64/kernel/setup.c
|
|
||||||
@@ -417,3 +417,22 @@ static int __init register_kernel_offset_dumper(void)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
__initcall(register_kernel_offset_dumper);
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * Temporary hack to avoid need for console= on command line
|
|
||||||
+ */
|
|
||||||
+static int __init arm64_console_setup(void)
|
|
||||||
+{
|
|
||||||
+ /* Allow cmdline to override our assumed preferences */
|
|
||||||
+ if (console_set_on_cmdline)
|
|
||||||
+ return 0;
|
|
||||||
+
|
|
||||||
+ if (IS_ENABLED(CONFIG_SERIAL_AMBA_PL011))
|
|
||||||
+ add_preferred_console("ttyAMA", 0, "115200");
|
|
||||||
+
|
|
||||||
+ if (IS_ENABLED(CONFIG_SERIAL_8250))
|
|
||||||
+ add_preferred_console("ttyS", 0, "115200");
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+early_initcall(arm64_console_setup);
|
|
||||||
--
|
|
||||||
2.5.0
|
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
From patchwork Sat Apr 8 07:18:40 2017
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
Subject: reset: hi6220: Set module license so that it can be loaded
|
||||||
|
From: Jeremy Linton <lintonrjeremy@gmail.com>
|
||||||
|
X-Patchwork-Id: 9670985
|
||||||
|
Message-Id: <20170408071840.29380-1-lintonrjeremy@gmail.com>
|
||||||
|
To: linux-kernel@vger.kernel.org
|
||||||
|
Cc: p.zabel@pengutronix.de, saberlily.xia@hisilicon.com,
|
||||||
|
puck.chen@hisilicon.com, xinliang.liu@linaro.org,
|
||||||
|
Jeremy Linton <lintonrjeremy@gmail.com>
|
||||||
|
Date: Sat, 8 Apr 2017 02:18:40 -0500
|
||||||
|
|
||||||
|
The hi6220_reset driver can be built as a standalone module
|
||||||
|
yet it cannot be loaded because it depends on GPL exported symbols.
|
||||||
|
|
||||||
|
Lets set the module license so that the module loads, and things like
|
||||||
|
the on-board kirin drm starts working.
|
||||||
|
|
||||||
|
Signed-off-by: Jeremy Linton <lintonrjeremy@gmail.com>
|
||||||
|
reviewed-by: Xinliang Liu <xinliang.liu@linaro.org>
|
||||||
|
---
|
||||||
|
drivers/reset/hisilicon/hi6220_reset.c | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/reset/hisilicon/hi6220_reset.c b/drivers/reset/hisilicon/hi6220_reset.c
|
||||||
|
index 35ce53e..d5e5229 100644
|
||||||
|
--- a/drivers/reset/hisilicon/hi6220_reset.c
|
||||||
|
+++ b/drivers/reset/hisilicon/hi6220_reset.c
|
||||||
|
@@ -155,3 +155,5 @@ static int __init hi6220_reset_init(void)
|
||||||
|
}
|
||||||
|
|
||||||
|
postcore_initcall(hi6220_reset_init);
|
||||||
|
+
|
||||||
|
+MODULE_LICENSE("GPL v2");
|
||||||
|
From patchwork Mon Apr 3 05:28:42 2017
|
||||||
|
Content-Type: text/plain; charset="utf-8"
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
Subject: [v2,1/2] regulator: hi655x: Describe consumed platform device
|
||||||
|
From: Jeremy Linton <lintonrjeremy@gmail.com>
|
||||||
|
X-Patchwork-Id: 9658793
|
||||||
|
Message-Id: <20170403052843.12711-2-lintonrjeremy@gmail.com>
|
||||||
|
To: linux-kernel@vger.kernel.org
|
||||||
|
Cc: broonie@kernel.org, lgirdwood@gmail.com, puck.chen@hisilicon.com,
|
||||||
|
lee.jones@linaro.org, Jeremy Linton <lintonrjeremy@gmail.com>
|
||||||
|
Date: Mon, 3 Apr 2017 00:28:42 -0500
|
||||||
|
|
||||||
|
The hi655x-regulator driver consumes a similarly named platform device.
|
||||||
|
Adding that to the module device table, allows modprobe to locate this
|
||||||
|
driver once the device is created.
|
||||||
|
|
||||||
|
Signed-off-by: Jeremy Linton <lintonrjeremy@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/regulator/hi655x-regulator.c | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/regulator/hi655x-regulator.c b/drivers/regulator/hi655x-regulator.c
|
||||||
|
index 065c100..36ae54b 100644
|
||||||
|
--- a/drivers/regulator/hi655x-regulator.c
|
||||||
|
+++ b/drivers/regulator/hi655x-regulator.c
|
||||||
|
@@ -214,7 +214,14 @@ static int hi655x_regulator_probe(struct platform_device *pdev)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static const struct platform_device_id hi655x_regulator_table[] = {
|
||||||
|
+ { .name = "hi655x-regulator" },
|
||||||
|
+ {},
|
||||||
|
+};
|
||||||
|
+MODULE_DEVICE_TABLE(platform, hi655x_regulator_table);
|
||||||
|
+
|
||||||
|
static struct platform_driver hi655x_regulator_driver = {
|
||||||
|
+ .id_table = hi655x_regulator_table,
|
||||||
|
.driver = {
|
||||||
|
.name = "hi655x-regulator",
|
||||||
|
},
|
File diff suppressed because it is too large
Load Diff
|
@ -1,508 +0,0 @@
|
||||||
From 767b70aa55d013f0c7589955f410d488fed5776a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Tue, 5 Jul 2016 23:49:39 +0100
|
|
||||||
Subject: [PATCH 1/4] Some platforms may not be fully compliant with generic
|
|
||||||
set of PCI config accessors. For these cases we implement the way to
|
|
||||||
overwrite accessors set. Algorithm traverses available quirk list, matches
|
|
||||||
against <oem_id, oem_table_id, domain, bus number> tuple and returns
|
|
||||||
corresponding PCI config ops. oem_id and oem_table_id come from MCFG table
|
|
||||||
standard header. All quirks can be defined using DECLARE_ACPI_MCFG_FIXUP()
|
|
||||||
macro and kept self contained. Example:
|
|
||||||
|
|
||||||
/* Custom PCI config ops */
|
|
||||||
static struct pci_generic_ecam_ops foo_pci_ops = {
|
|
||||||
.bus_shift = 24,
|
|
||||||
.pci_ops = {
|
|
||||||
.map_bus = pci_ecam_map_bus,
|
|
||||||
.read = foo_ecam_config_read,
|
|
||||||
.write = foo_ecam_config_write,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
DECLARE_ACPI_MCFG_FIXUP(&foo_pci_ops, <oem_id_str>, <oem_table_id>, <domain_nr>, <bus_nr>);
|
|
||||||
|
|
||||||
Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
|
|
||||||
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
|
|
||||||
---
|
|
||||||
drivers/acpi/pci_mcfg.c | 41 ++++++++++++++++++++++++++++++++++++---
|
|
||||||
include/asm-generic/vmlinux.lds.h | 7 +++++++
|
|
||||||
include/linux/pci-acpi.h | 20 +++++++++++++++++++
|
|
||||||
3 files changed, 65 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
|
|
||||||
index d3c3e85..deb0077 100644
|
|
||||||
--- a/drivers/acpi/pci_mcfg.c
|
|
||||||
+++ b/drivers/acpi/pci_mcfg.c
|
|
||||||
@@ -22,6 +22,10 @@
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/pci.h>
|
|
||||||
#include <linux/pci-acpi.h>
|
|
||||||
+#include <linux/pci-ecam.h>
|
|
||||||
+
|
|
||||||
+/* Root pointer to the mapped MCFG table */
|
|
||||||
+static struct acpi_table_mcfg *mcfg_table;
|
|
||||||
|
|
||||||
/* Structure to hold entries from the MCFG table */
|
|
||||||
struct mcfg_entry {
|
|
||||||
@@ -35,6 +39,38 @@ struct mcfg_entry {
|
|
||||||
/* List to save mcfg entries */
|
|
||||||
static LIST_HEAD(pci_mcfg_list);
|
|
||||||
|
|
||||||
+extern struct pci_cfg_fixup __start_acpi_mcfg_fixups[];
|
|
||||||
+extern struct pci_cfg_fixup __end_acpi_mcfg_fixups[];
|
|
||||||
+
|
|
||||||
+struct pci_ecam_ops *pci_mcfg_get_ops(struct acpi_pci_root *root)
|
|
||||||
+{
|
|
||||||
+ int bus_num = root->secondary.start;
|
|
||||||
+ int domain = root->segment;
|
|
||||||
+ struct pci_cfg_fixup *f;
|
|
||||||
+
|
|
||||||
+ if (!mcfg_table)
|
|
||||||
+ return &pci_generic_ecam_ops;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Match against platform specific quirks and return corresponding
|
|
||||||
+ * CAM ops.
|
|
||||||
+ *
|
|
||||||
+ * First match against PCI topology <domain:bus> then use OEM ID and
|
|
||||||
+ * OEM revision from MCFG table standard header.
|
|
||||||
+ */
|
|
||||||
+ for (f = __start_acpi_mcfg_fixups; f < __end_acpi_mcfg_fixups; f++) {
|
|
||||||
+ if ((f->domain == domain || f->domain == PCI_MCFG_DOMAIN_ANY) &&
|
|
||||||
+ (f->bus_num == bus_num || f->bus_num == PCI_MCFG_BUS_ANY) &&
|
|
||||||
+ (!strncmp(f->oem_id, mcfg_table->header.oem_id,
|
|
||||||
+ ACPI_OEM_ID_SIZE)) &&
|
|
||||||
+ (!strncmp(f->oem_table_id, mcfg_table->header.oem_table_id,
|
|
||||||
+ ACPI_OEM_TABLE_ID_SIZE)))
|
|
||||||
+ return f->ops;
|
|
||||||
+ }
|
|
||||||
+ /* No quirks, use ECAM */
|
|
||||||
+ return &pci_generic_ecam_ops;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
phys_addr_t pci_mcfg_lookup(u16 seg, struct resource *bus_res)
|
|
||||||
{
|
|
||||||
struct mcfg_entry *e;
|
|
||||||
@@ -54,7 +90,6 @@ phys_addr_t pci_mcfg_lookup(u16 seg, struct resource *bus_res)
|
|
||||||
|
|
||||||
static __init int pci_mcfg_parse(struct acpi_table_header *header)
|
|
||||||
{
|
|
||||||
- struct acpi_table_mcfg *mcfg;
|
|
||||||
struct acpi_mcfg_allocation *mptr;
|
|
||||||
struct mcfg_entry *e, *arr;
|
|
||||||
int i, n;
|
|
||||||
@@ -64,8 +99,8 @@ static __init int pci_mcfg_parse(struct acpi_table_header *header)
|
|
||||||
|
|
||||||
n = (header->length - sizeof(struct acpi_table_mcfg)) /
|
|
||||||
sizeof(struct acpi_mcfg_allocation);
|
|
||||||
- mcfg = (struct acpi_table_mcfg *)header;
|
|
||||||
- mptr = (struct acpi_mcfg_allocation *) &mcfg[1];
|
|
||||||
+ mcfg_table = (struct acpi_table_mcfg *)header;
|
|
||||||
+ mptr = (struct acpi_mcfg_allocation *) &mcfg_table[1];
|
|
||||||
|
|
||||||
arr = kcalloc(n, sizeof(*arr), GFP_KERNEL);
|
|
||||||
if (!arr)
|
|
||||||
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
|
|
||||||
index 6a67ab9..43604fc 100644
|
|
||||||
--- a/include/asm-generic/vmlinux.lds.h
|
|
||||||
+++ b/include/asm-generic/vmlinux.lds.h
|
|
||||||
@@ -300,6 +300,13 @@
|
|
||||||
VMLINUX_SYMBOL(__end_pci_fixups_suspend_late) = .; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
+ /* ACPI MCFG quirks */ \
|
|
||||||
+ .acpi_fixup : AT(ADDR(.acpi_fixup) - LOAD_OFFSET) { \
|
|
||||||
+ VMLINUX_SYMBOL(__start_acpi_mcfg_fixups) = .; \
|
|
||||||
+ *(.acpi_fixup_mcfg) \
|
|
||||||
+ VMLINUX_SYMBOL(__end_acpi_mcfg_fixups) = .; \
|
|
||||||
+ } \
|
|
||||||
+ \
|
|
||||||
/* Built-in firmware blobs */ \
|
|
||||||
.builtin_fw : AT(ADDR(.builtin_fw) - LOAD_OFFSET) { \
|
|
||||||
VMLINUX_SYMBOL(__start_builtin_fw) = .; \
|
|
||||||
diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h
|
|
||||||
index 7d63a66..c8a6559 100644
|
|
||||||
--- a/include/linux/pci-acpi.h
|
|
||||||
+++ b/include/linux/pci-acpi.h
|
|
||||||
@@ -25,6 +25,7 @@ static inline acpi_status pci_acpi_remove_pm_notifier(struct acpi_device *dev)
|
|
||||||
extern phys_addr_t acpi_pci_root_get_mcfg_addr(acpi_handle handle);
|
|
||||||
|
|
||||||
extern phys_addr_t pci_mcfg_lookup(u16 domain, struct resource *bus_res);
|
|
||||||
+extern struct pci_ecam_ops *pci_mcfg_get_ops(struct acpi_pci_root *root);
|
|
||||||
|
|
||||||
static inline acpi_handle acpi_find_root_bridge_handle(struct pci_dev *pdev)
|
|
||||||
{
|
|
||||||
@@ -72,6 +73,25 @@ struct acpi_pci_root_ops {
|
|
||||||
int (*prepare_resources)(struct acpi_pci_root_info *info);
|
|
||||||
};
|
|
||||||
|
|
||||||
+struct pci_cfg_fixup {
|
|
||||||
+ struct pci_ecam_ops *ops;
|
|
||||||
+ char *oem_id;
|
|
||||||
+ char *oem_table_id;
|
|
||||||
+ int domain;
|
|
||||||
+ int bus_num;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#define PCI_MCFG_DOMAIN_ANY -1
|
|
||||||
+#define PCI_MCFG_BUS_ANY -1
|
|
||||||
+
|
|
||||||
+/* Designate a routine to fix up buggy MCFG */
|
|
||||||
+#define DECLARE_ACPI_MCFG_FIXUP(ops, oem_id, oem_table_id, dom, bus) \
|
|
||||||
+ static const struct pci_cfg_fixup \
|
|
||||||
+ __mcfg_fixup_##oem_id##oem_table_id##dom##bus \
|
|
||||||
+ __used __attribute__((__section__(".acpi_fixup_mcfg"), \
|
|
||||||
+ aligned((sizeof(void *))))) = \
|
|
||||||
+ { ops, oem_id, oem_table_id, dom, bus };
|
|
||||||
+
|
|
||||||
extern int acpi_pci_probe_root_resources(struct acpi_pci_root_info *info);
|
|
||||||
extern struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root,
|
|
||||||
struct acpi_pci_root_ops *ops,
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
From 4f86a9b006b25dd7336043dab26058ed6fb2802d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Tue, 5 Jul 2016 23:52:46 +0100
|
|
||||||
Subject: [PATCH 2/4] pci_generic_ecam_ops is used by default. Since there are
|
|
||||||
platforms which have non-compliant ECAM space we need to overwrite these
|
|
||||||
accessors prior to PCI buses enumeration. In order to do that we call
|
|
||||||
pci_mcfg_get_ops to retrieve pci_ecam_ops structure so that we can use proper
|
|
||||||
PCI config space accessors and bus_shift.
|
|
||||||
|
|
||||||
pci_generic_ecam_ops is still used for platforms free from quirks.
|
|
||||||
|
|
||||||
Signed-off-by: Tomasz Nowicki <tn@semihalf.com>
|
|
||||||
---
|
|
||||||
arch/arm64/kernel/pci.c | 7 ++++---
|
|
||||||
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c
|
|
||||||
index 94cd43c..a891bda 100644
|
|
||||||
--- a/arch/arm64/kernel/pci.c
|
|
||||||
+++ b/arch/arm64/kernel/pci.c
|
|
||||||
@@ -139,6 +139,7 @@ pci_acpi_setup_ecam_mapping(struct acpi_pci_root *root)
|
|
||||||
struct pci_config_window *cfg;
|
|
||||||
struct resource cfgres;
|
|
||||||
unsigned int bsz;
|
|
||||||
+ struct pci_ecam_ops *ops;
|
|
||||||
|
|
||||||
/* Use address from _CBA if present, otherwise lookup MCFG */
|
|
||||||
if (!root->mcfg_addr)
|
|
||||||
@@ -150,12 +151,12 @@ pci_acpi_setup_ecam_mapping(struct acpi_pci_root *root)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
- bsz = 1 << pci_generic_ecam_ops.bus_shift;
|
|
||||||
+ ops = pci_mcfg_get_ops(root);
|
|
||||||
+ bsz = 1 << ops->bus_shift;
|
|
||||||
cfgres.start = root->mcfg_addr + bus_res->start * bsz;
|
|
||||||
cfgres.end = cfgres.start + resource_size(bus_res) * bsz - 1;
|
|
||||||
cfgres.flags = IORESOURCE_MEM;
|
|
||||||
- cfg = pci_ecam_create(&root->device->dev, &cfgres, bus_res,
|
|
||||||
- &pci_generic_ecam_ops);
|
|
||||||
+ cfg = pci_ecam_create(&root->device->dev, &cfgres, bus_res, ops);
|
|
||||||
if (IS_ERR(cfg)) {
|
|
||||||
dev_err(&root->device->dev, "%04x:%pR error %ld mapping ECAM\n",
|
|
||||||
seg, bus_res, PTR_ERR(cfg));
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
From cbdbd697bd6d716eb9d1705ee55445432e73eabb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Tue, 5 Jul 2016 23:53:59 +0100
|
|
||||||
Subject: [PATCH 3/4] The ECAM quirk matching criteria per the discussion on
|
|
||||||
https://lkml.org/lkml/2016/6/13/944 includes: OEM ID, OEM Table ID and OEM
|
|
||||||
Revision. So this patch adds OEM Table ID into the check to match platform
|
|
||||||
specific ECAM quirks as well.
|
|
||||||
|
|
||||||
This patch also improve strncmp check using strlen and
|
|
||||||
min_t to ignore the padding spaces in OEM ID and OEM
|
|
||||||
Table ID.
|
|
||||||
|
|
||||||
Signed-off-by: Duc Dang <dhdang@apm.com>
|
|
||||||
---
|
|
||||||
drivers/acpi/pci_mcfg.c | 7 +++++--
|
|
||||||
include/linux/pci-acpi.h | 7 ++++---
|
|
||||||
2 files changed, 9 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/acpi/pci_mcfg.c b/drivers/acpi/pci_mcfg.c
|
|
||||||
index deb0077..307ca9a 100644
|
|
||||||
--- a/drivers/acpi/pci_mcfg.c
|
|
||||||
+++ b/drivers/acpi/pci_mcfg.c
|
|
||||||
@@ -62,9 +62,12 @@ struct pci_ecam_ops *pci_mcfg_get_ops(struct acpi_pci_root *root)
|
|
||||||
if ((f->domain == domain || f->domain == PCI_MCFG_DOMAIN_ANY) &&
|
|
||||||
(f->bus_num == bus_num || f->bus_num == PCI_MCFG_BUS_ANY) &&
|
|
||||||
(!strncmp(f->oem_id, mcfg_table->header.oem_id,
|
|
||||||
- ACPI_OEM_ID_SIZE)) &&
|
|
||||||
+ min_t(size_t, strlen(f->oem_id),
|
|
||||||
+ ACPI_OEM_ID_SIZE))) &&
|
|
||||||
(!strncmp(f->oem_table_id, mcfg_table->header.oem_table_id,
|
|
||||||
- ACPI_OEM_TABLE_ID_SIZE)))
|
|
||||||
+ min_t(size_t, strlen(f->oem_table_id),
|
|
||||||
+ ACPI_OEM_TABLE_ID_SIZE))) &&
|
|
||||||
+ (f->oem_revision == mcfg_table->header.oem_revision))
|
|
||||||
return f->ops;
|
|
||||||
}
|
|
||||||
/* No quirks, use ECAM */
|
|
||||||
diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h
|
|
||||||
index c8a6559..5148c8d 100644
|
|
||||||
--- a/include/linux/pci-acpi.h
|
|
||||||
+++ b/include/linux/pci-acpi.h
|
|
||||||
@@ -77,6 +77,7 @@ struct pci_cfg_fixup {
|
|
||||||
struct pci_ecam_ops *ops;
|
|
||||||
char *oem_id;
|
|
||||||
char *oem_table_id;
|
|
||||||
+ u32 oem_revision;
|
|
||||||
int domain;
|
|
||||||
int bus_num;
|
|
||||||
};
|
|
||||||
@@ -85,12 +86,12 @@ struct pci_cfg_fixup {
|
|
||||||
#define PCI_MCFG_BUS_ANY -1
|
|
||||||
|
|
||||||
/* Designate a routine to fix up buggy MCFG */
|
|
||||||
-#define DECLARE_ACPI_MCFG_FIXUP(ops, oem_id, oem_table_id, dom, bus) \
|
|
||||||
+#define DECLARE_ACPI_MCFG_FIXUP(ops, oem_id, oem_table_id, rev, dom, bus) \
|
|
||||||
static const struct pci_cfg_fixup \
|
|
||||||
- __mcfg_fixup_##oem_id##oem_table_id##dom##bus \
|
|
||||||
+ __mcfg_fixup_##oem_id##oem_table_id##rev##dom##bus \
|
|
||||||
__used __attribute__((__section__(".acpi_fixup_mcfg"), \
|
|
||||||
aligned((sizeof(void *))))) = \
|
|
||||||
- { ops, oem_id, oem_table_id, dom, bus };
|
|
||||||
+ { ops, oem_id, oem_table_id, rev, dom, bus };
|
|
||||||
|
|
||||||
extern int acpi_pci_probe_root_resources(struct acpi_pci_root_info *info);
|
|
||||||
extern struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root,
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
||||||
From 78766cf255bc6aafac2f57372a0446f78322da19 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Tue, 5 Jul 2016 23:55:11 +0100
|
|
||||||
Subject: [PATCH 4/4] X-Gene PCIe controller does not fully support ECAM. This
|
|
||||||
patch adds required ECAM fixup to allow X-Gene PCIe controller to be
|
|
||||||
functional in ACPI boot mode.
|
|
||||||
|
|
||||||
Signed-off-by: Duc Dang <dhdang@apm.com>
|
|
||||||
---
|
|
||||||
drivers/pci/host/Makefile | 2 +-
|
|
||||||
drivers/pci/host/pci-xgene-ecam.c | 194 ++++++++++++++++++++++++++++++++++++++
|
|
||||||
2 files changed, 195 insertions(+), 1 deletion(-)
|
|
||||||
create mode 100644 drivers/pci/host/pci-xgene-ecam.c
|
|
||||||
|
|
||||||
diff --git a/drivers/pci/host/Makefile b/drivers/pci/host/Makefile
|
|
||||||
index 9c8698e..3480696 100644
|
|
||||||
--- a/drivers/pci/host/Makefile
|
|
||||||
+++ b/drivers/pci/host/Makefile
|
|
||||||
@@ -14,7 +14,7 @@ obj-$(CONFIG_PCIE_SPEAR13XX) += pcie-spear13xx.o
|
|
||||||
obj-$(CONFIG_PCI_KEYSTONE) += pci-keystone-dw.o pci-keystone.o
|
|
||||||
obj-$(CONFIG_PCIE_XILINX) += pcie-xilinx.o
|
|
||||||
obj-$(CONFIG_PCIE_XILINX_NWL) += pcie-xilinx-nwl.o
|
|
||||||
-obj-$(CONFIG_PCI_XGENE) += pci-xgene.o
|
|
||||||
+obj-$(CONFIG_PCI_XGENE) += pci-xgene.o pci-xgene-ecam.o
|
|
||||||
obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o
|
|
||||||
obj-$(CONFIG_PCI_LAYERSCAPE) += pci-layerscape.o
|
|
||||||
obj-$(CONFIG_PCI_VERSATILE) += pci-versatile.o
|
|
||||||
diff --git a/drivers/pci/host/pci-xgene-ecam.c b/drivers/pci/host/pci-xgene-ecam.c
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..1bea63f
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/drivers/pci/host/pci-xgene-ecam.c
|
|
||||||
@@ -0,0 +1,194 @@
|
|
||||||
+/*
|
|
||||||
+ * APM X-Gene PCIe ECAM fixup driver
|
|
||||||
+ *
|
|
||||||
+ * Copyright (c) 2016, Applied Micro Circuits Corporation
|
|
||||||
+ * Author:
|
|
||||||
+ * Duc Dang <dhdang@apm.com>
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify
|
|
||||||
+ * it under the terms of the GNU General Public License version 2 as
|
|
||||||
+ * published by the Free Software Foundation.
|
|
||||||
+ *
|
|
||||||
+ * This program is distributed in the hope that it will be useful,
|
|
||||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
+ * GNU General Public License for more details.
|
|
||||||
+ *
|
|
||||||
+ * You should have received a copy of the GNU General Public License
|
|
||||||
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/kernel.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/of_address.h>
|
|
||||||
+#include <linux/of_pci.h>
|
|
||||||
+#include <linux/pci-acpi.h>
|
|
||||||
+#include <linux/platform_device.h>
|
|
||||||
+#include <linux/pci-ecam.h>
|
|
||||||
+
|
|
||||||
+#ifdef CONFIG_ACPI
|
|
||||||
+#define RTDID 0x160
|
|
||||||
+#define ROOT_CAP_AND_CTRL 0x5C
|
|
||||||
+
|
|
||||||
+/* PCIe IP version */
|
|
||||||
+#define XGENE_PCIE_IP_VER_UNKN 0
|
|
||||||
+#define XGENE_PCIE_IP_VER_1 1
|
|
||||||
+
|
|
||||||
+#define APM_OEM_ID "APM"
|
|
||||||
+#define APM_XGENE_OEM_TABLE_ID "XGENE"
|
|
||||||
+#define APM_XGENE_OEM_REV 0x00000002
|
|
||||||
+
|
|
||||||
+struct xgene_pcie_acpi_root {
|
|
||||||
+ void __iomem *csr_base;
|
|
||||||
+ u32 version;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static acpi_status xgene_pcie_find_csr_base(struct acpi_resource *acpi_res,
|
|
||||||
+ void *data)
|
|
||||||
+{
|
|
||||||
+ struct xgene_pcie_acpi_root *root = data;
|
|
||||||
+ struct acpi_resource_fixed_memory32 *fixed32;
|
|
||||||
+
|
|
||||||
+ if (acpi_res->type == ACPI_RESOURCE_TYPE_FIXED_MEMORY32) {
|
|
||||||
+ fixed32 = &acpi_res->data.fixed_memory32;
|
|
||||||
+ root->csr_base = ioremap(fixed32->address,
|
|
||||||
+ fixed32->address_length);
|
|
||||||
+ return AE_CTRL_TERMINATE;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return AE_OK;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int xgene_pcie_ecam_init(struct pci_config_window *cfg)
|
|
||||||
+{
|
|
||||||
+ struct xgene_pcie_acpi_root *xgene_root;
|
|
||||||
+ struct device *dev = cfg->parent;
|
|
||||||
+ struct acpi_device *adev = to_acpi_device(dev);
|
|
||||||
+ acpi_handle handle = acpi_device_handle(adev);
|
|
||||||
+
|
|
||||||
+ xgene_root = devm_kzalloc(dev, sizeof(*xgene_root), GFP_KERNEL);
|
|
||||||
+ if (!xgene_root)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ acpi_walk_resources(handle, METHOD_NAME__CRS,
|
|
||||||
+ xgene_pcie_find_csr_base, xgene_root);
|
|
||||||
+
|
|
||||||
+ if (!xgene_root->csr_base) {
|
|
||||||
+ kfree(xgene_root);
|
|
||||||
+ return -ENODEV;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ xgene_root->version = XGENE_PCIE_IP_VER_1;
|
|
||||||
+
|
|
||||||
+ cfg->priv = xgene_root;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * For Configuration request, RTDID register is used as Bus Number,
|
|
||||||
+ * Device Number and Function number of the header fields.
|
|
||||||
+ */
|
|
||||||
+static void xgene_pcie_set_rtdid_reg(struct pci_bus *bus, uint devfn)
|
|
||||||
+{
|
|
||||||
+ struct pci_config_window *cfg = bus->sysdata;
|
|
||||||
+ struct xgene_pcie_acpi_root *port = cfg->priv;
|
|
||||||
+ unsigned int b, d, f;
|
|
||||||
+ u32 rtdid_val = 0;
|
|
||||||
+
|
|
||||||
+ b = bus->number;
|
|
||||||
+ d = PCI_SLOT(devfn);
|
|
||||||
+ f = PCI_FUNC(devfn);
|
|
||||||
+
|
|
||||||
+ if (!pci_is_root_bus(bus))
|
|
||||||
+ rtdid_val = (b << 8) | (d << 3) | f;
|
|
||||||
+
|
|
||||||
+ writel(rtdid_val, port->csr_base + RTDID);
|
|
||||||
+ /* read the register back to ensure flush */
|
|
||||||
+ readl(port->csr_base + RTDID);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+ * X-Gene PCIe port uses BAR0-BAR1 of RC's configuration space as
|
|
||||||
+ * the translation from PCI bus to native BUS. Entire DDR region
|
|
||||||
+ * is mapped into PCIe space using these registers, so it can be
|
|
||||||
+ * reached by DMA from EP devices. The BAR0/1 of bridge should be
|
|
||||||
+ * hidden during enumeration to avoid the sizing and resource allocation
|
|
||||||
+ * by PCIe core.
|
|
||||||
+ */
|
|
||||||
+static bool xgene_pcie_hide_rc_bars(struct pci_bus *bus, int offset)
|
|
||||||
+{
|
|
||||||
+ if (pci_is_root_bus(bus) && ((offset == PCI_BASE_ADDRESS_0) ||
|
|
||||||
+ (offset == PCI_BASE_ADDRESS_1)))
|
|
||||||
+ return true;
|
|
||||||
+
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void __iomem *xgene_pcie_ecam_map_bus(struct pci_bus *bus,
|
|
||||||
+ unsigned int devfn, int where)
|
|
||||||
+{
|
|
||||||
+ struct pci_config_window *cfg = bus->sysdata;
|
|
||||||
+ unsigned int busn = bus->number;
|
|
||||||
+ void __iomem *base;
|
|
||||||
+
|
|
||||||
+ if (busn < cfg->busr.start || busn > cfg->busr.end)
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ if ((pci_is_root_bus(bus) && devfn != 0) ||
|
|
||||||
+ xgene_pcie_hide_rc_bars(bus, where))
|
|
||||||
+ return NULL;
|
|
||||||
+
|
|
||||||
+ xgene_pcie_set_rtdid_reg(bus, devfn);
|
|
||||||
+
|
|
||||||
+ if (busn > cfg->busr.start)
|
|
||||||
+ base = cfg->win + (1 << cfg->ops->bus_shift);
|
|
||||||
+ else
|
|
||||||
+ base = cfg->win;
|
|
||||||
+
|
|
||||||
+ return base + where;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int xgene_pcie_config_read32(struct pci_bus *bus, unsigned int devfn,
|
|
||||||
+ int where, int size, u32 *val)
|
|
||||||
+{
|
|
||||||
+ struct pci_config_window *cfg = bus->sysdata;
|
|
||||||
+ struct xgene_pcie_acpi_root *port = cfg->priv;
|
|
||||||
+
|
|
||||||
+ if (pci_generic_config_read32(bus, devfn, where & ~0x3, 4, val) !=
|
|
||||||
+ PCIBIOS_SUCCESSFUL)
|
|
||||||
+ return PCIBIOS_DEVICE_NOT_FOUND;
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * The v1 controller has a bug in its Configuration Request
|
|
||||||
+ * Retry Status (CRS) logic: when CRS is enabled and we read the
|
|
||||||
+ * Vendor and Device ID of a non-existent device, the controller
|
|
||||||
+ * fabricates return data of 0xFFFF0001 ("device exists but is not
|
|
||||||
+ * ready") instead of 0xFFFFFFFF ("device does not exist"). This
|
|
||||||
+ * causes the PCI core to retry the read until it times out.
|
|
||||||
+ * Avoid this by not claiming to support CRS.
|
|
||||||
+ */
|
|
||||||
+ if (pci_is_root_bus(bus) && (port->version == XGENE_PCIE_IP_VER_1) &&
|
|
||||||
+ ((where & ~0x3) == ROOT_CAP_AND_CTRL))
|
|
||||||
+ *val &= ~(PCI_EXP_RTCAP_CRSVIS << 16);
|
|
||||||
+
|
|
||||||
+ if (size <= 2)
|
|
||||||
+ *val = (*val >> (8 * (where & 3))) & ((1 << (size * 8)) - 1);
|
|
||||||
+
|
|
||||||
+ return PCIBIOS_SUCCESSFUL;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static struct pci_ecam_ops xgene_pcie_ecam_ops = {
|
|
||||||
+ .bus_shift = 16,
|
|
||||||
+ .init = xgene_pcie_ecam_init,
|
|
||||||
+ .pci_ops = {
|
|
||||||
+ .map_bus = xgene_pcie_ecam_map_bus,
|
|
||||||
+ .read = xgene_pcie_config_read32,
|
|
||||||
+ .write = pci_generic_config_write,
|
|
||||||
+ }
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+DECLARE_ACPI_MCFG_FIXUP(&xgene_pcie_ecam_ops, APM_OEM_ID,
|
|
||||||
+ APM_XGENE_OEM_TABLE_ID, APM_XGENE_OEM_REV,
|
|
||||||
+ PCI_MCFG_DOMAIN_ANY, PCI_MCFG_BUS_ANY);
|
|
||||||
+#endif
|
|
||||||
--
|
|
||||||
2.7.4
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_ARCH_TEGRA_186_SOC is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_ARM64_PTDUMP is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_ARM_SCPI_PROTOCOL is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_BATTERY_GOLDFISH is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_BLK_DEBUG_FS=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_BLK_SED_OPAL=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_BT_HCIUART_NOKIA=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_CFG80211_CRDA_SUPPORT=y
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_CGROUP_RDMA is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_CHARGER_DETECTOR_MAX14656 is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_CHARGER_SBS is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_CM3605=m
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_HI3519 is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT2701 is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT2701_BDPSYS is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT2701_ETHSYS is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT2701_HIFSYS is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT2701_IMGSYS is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT2701_MMSYS is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT2701_VDECSYS is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT8135 is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_MT8173 is not set
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_COMMON_CLK_OXNAS is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_COMMON_CLK_VC5 is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_COMMON_RESET_HI3660 is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_CRYPTO_AES_TI=m
|
|
@ -1 +0,0 @@
|
||||||
CONFIG_CRYPTO_CRC32_ARM_CE=m
|
|
|
@ -1 +0,0 @@
|
||||||
CONFIG_CRYPTO_CRCT10DIF_ARM_CE=m
|
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_DEBUG_REFCOUNT is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_DEBUG_VM_RB is not set # revisit this if performance isn't horrible
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_DEVPORT is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_DRM_DEBUG_MM_SELFTEST is not set
|
|
@ -1 +1 @@
|
||||||
# CONFIG_DRM_I2C_ADV7533 is not set
|
CONFIG_DRM_I2C_ADV7533=y
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_DRM_MALI_DISPLAY is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_DRM_TINYDRM is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_DVB_USB_ZD1301=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_EEPROM_IDT_89HPESX=m
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_EMAC_ROCKCHIP is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_EXTCON_INTEL_INT3496=m
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_FB_GOLDFISH is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_FSI=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_GPIO_EXAR=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_GPIO_PCI_IDIO_16=m
|
|
@ -1 +1 @@
|
||||||
CONFIG_GPIO_SYSFS=y
|
# CONFIG_GPIO_SYSFS is not set
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_GPIO_ZX is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_HX711 is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_IIO_ST_LSM6DSX is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_INET6_ESP_OFFLOAD=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_INET_ESP_OFFLOAD=m
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_INFINIBAND_BNXT_RE is not set
|
|
@ -1 +0,0 @@
|
||||||
CONFIG_INTEL_RDT_A=y
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_IPVTAP=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_IR_SPI=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_KEYBOARD_TM2_TOUCHKEY=m
|
|
@ -1 +0,0 @@
|
||||||
CONFIG_KPROBE_EVENT=y
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_KPROBE_EVENTS=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_LPFC_NVME_INITIATOR=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_LPFC_NVME_TARGET=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MAGIC_SYSRQ_SERIAL=y
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_MAX11100 is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_MAX5481 is not set
|
|
@ -1 +0,0 @@
|
||||||
CONFIG_MESON_GXL_PHY=m
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MFD_CPCAP=m
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_MOUSE_PS2_VMMOUSE is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MQ_IOSCHED_DEADLINE=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_NET_ACT_SAMPLE=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_NET_IFE=m
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue