Linux v4.16
This commit is contained in:
parent
e36a35763c
commit
99d5108d7e
|
@ -1,90 +0,0 @@
|
||||||
From 20eeb02a0a489e35de0830b2d61f09d43763c982 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Mon, 13 Nov 2017 09:23:19 +0100
|
|
||||||
Subject: [PATCH] Bluetooth: btusb: Add a Kconfig option to enable USB
|
|
||||||
autosuspend by default
|
|
||||||
|
|
||||||
On many laptops the btusb device is the only USB device not having USB
|
|
||||||
autosuspend enabled, this causes not only the HCI but also the USB
|
|
||||||
controller to stay awake, together using aprox. 0.4W of power.
|
|
||||||
|
|
||||||
Modern ultrabooks idle around 6W (at 50% screen brightness), 3.5W for
|
|
||||||
Apollo Lake devices. 0.4W is a significant chunk of this (7 / 11%).
|
|
||||||
|
|
||||||
The btusb driver already contains code to allow enabling USB autosuspend,
|
|
||||||
but currently leaves it up to the user / userspace to enable it. This
|
|
||||||
means that for most people it will not be enabled, leading to an
|
|
||||||
unnecessarily high power consumption.
|
|
||||||
|
|
||||||
Since enabling it is not entirely without risk of regressions, this
|
|
||||||
commit adds a Kconfig option so that Linux distributions can choose to
|
|
||||||
enable it by default. This commit also adds a module option so that when
|
|
||||||
distros receive bugs they can easily ask the user to disable it again
|
|
||||||
for easy debugging.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
---
|
|
||||||
Changes in v2:
|
|
||||||
-s/BT_USB_AUTOSUSPEND/BT_HCIBTUSB_AUTOSUSPEND/
|
|
||||||
-s/enable_usb_autosuspend/enable_autosuspend/
|
|
||||||
---
|
|
||||||
drivers/bluetooth/Kconfig | 10 ++++++++++
|
|
||||||
drivers/bluetooth/btusb.c | 7 +++++++
|
|
||||||
2 files changed, 17 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig
|
|
||||||
index 6475f8c0d3b2..20940417d937 100644
|
|
||||||
--- a/drivers/bluetooth/Kconfig
|
|
||||||
+++ b/drivers/bluetooth/Kconfig
|
|
||||||
@@ -30,6 +30,16 @@ config BT_HCIBTUSB
|
|
||||||
Say Y here to compile support for Bluetooth USB devices into the
|
|
||||||
kernel or say M to compile it as module (btusb).
|
|
||||||
|
|
||||||
+config BT_HCIBTUSB_AUTOSUSPEND
|
|
||||||
+ bool "Enable USB autosuspend for Bluetooth USB devices by default"
|
|
||||||
+ depends on BT_HCIBTUSB
|
|
||||||
+ help
|
|
||||||
+ Say Y here to enable USB autosuspend for Bluetooth USB devices by
|
|
||||||
+ default.
|
|
||||||
+
|
|
||||||
+ This can be overridden by passing btusb.enable_autosuspend=[y|n]
|
|
||||||
+ on the kernel commandline.
|
|
||||||
+
|
|
||||||
config BT_HCIBTUSB_BCM
|
|
||||||
bool "Broadcom protocol support"
|
|
||||||
depends on BT_HCIBTUSB
|
|
||||||
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
|
|
||||||
index c054d7bce490..3386034a44aa 100644
|
|
||||||
--- a/drivers/bluetooth/btusb.c
|
|
||||||
+++ b/drivers/bluetooth/btusb.c
|
|
||||||
@@ -40,6 +40,7 @@
|
|
||||||
|
|
||||||
static bool disable_scofix;
|
|
||||||
static bool force_scofix;
|
|
||||||
+static bool enable_autosuspend = IS_ENABLED(CONFIG_BT_HCIBTUSB_AUTOSUSPEND);
|
|
||||||
|
|
||||||
static bool reset = true;
|
|
||||||
|
|
||||||
@@ -3175,6 +3176,9 @@ static int btusb_probe(struct usb_interface *intf,
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+ if (enable_autosuspend)
|
|
||||||
+ usb_enable_autosuspend(data->udev);
|
|
||||||
+
|
|
||||||
err = hci_register_dev(hdev);
|
|
||||||
if (err < 0)
|
|
||||||
goto out_free_dev;
|
|
||||||
@@ -3387,6 +3391,9 @@ MODULE_PARM_DESC(disable_scofix, "Disable fixup of wrong SCO buffer size");
|
|
||||||
module_param(force_scofix, bool, 0644);
|
|
||||||
MODULE_PARM_DESC(force_scofix, "Force fixup of wrong SCO buffers size");
|
|
||||||
|
|
||||||
+module_param(enable_autosuspend, bool, 0644);
|
|
||||||
+MODULE_PARM_DESC(enable_autosuspend, "Enable USB autosuspend by default");
|
|
||||||
+
|
|
||||||
module_param(reset, bool, 0644);
|
|
||||||
MODULE_PARM_DESC(reset, "Send HCI reset command on initialization");
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -1,47 +0,0 @@
|
||||||
From a5ffa27c07e06900fcfc50b08de6d11e45830168 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Wed, 3 Jan 2018 12:49:44 +0100
|
|
||||||
Subject: [PATCH v2] Bluetooth: btusb: Disable autosuspend on QCA Rome devices
|
|
||||||
|
|
||||||
Commit fd865802c66b ("Bluetooth: btusb: fix QCA Rome suspend/resume") fixes
|
|
||||||
a suspend/resume problem on QCA devices by doing a full reset on resume,
|
|
||||||
reloading the firmware.
|
|
||||||
|
|
||||||
A similar problem happens when using runtime-pm / autosuspend, when this is
|
|
||||||
enabled by the user the QCA Rome device stops working. Reloading the
|
|
||||||
firmware after a runtime suspend is not really an option since the latency
|
|
||||||
caused by this is unacceptable.
|
|
||||||
|
|
||||||
To fix the runtime-pm issues, this commit disables runtime-pm on QCA Rome
|
|
||||||
HCIs, by getting (and not releasing) an usb autopm reference on the btusb
|
|
||||||
interface.
|
|
||||||
|
|
||||||
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1514836
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/bluetooth/btusb.c | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
|
|
||||||
index 808c249845db..6ed3a0e5b8f6 100644
|
|
||||||
--- a/drivers/bluetooth/btusb.c
|
|
||||||
+++ b/drivers/bluetooth/btusb.c
|
|
||||||
@@ -3122,8 +3122,15 @@ static int btusb_probe(struct usb_interface *intf,
|
|
||||||
/* QCA Rome devices lose their updated firmware over suspend,
|
|
||||||
* but the USB hub doesn't notice any status change.
|
|
||||||
* Explicitly request a device reset on resume.
|
|
||||||
+ * And disable runtime pm by getting a pm reference, the USB
|
|
||||||
+ * core will drop our reference on disconnect.
|
|
||||||
*/
|
|
||||||
set_bit(BTUSB_RESET_RESUME, &data->flags);
|
|
||||||
+ err = usb_autopm_get_interface(data->intf);
|
|
||||||
+ if (err < 0) {
|
|
||||||
+ BT_ERR("failed to get pm reference %d", err);
|
|
||||||
+ goto out_free_dev;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_BT_HCIBTUSB_RTL
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
From f5c1da991de077420fda17a236342de5a0068f5d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Wed, 22 Nov 2017 12:57:08 +0100
|
|
||||||
Subject: [PATCH v2 1/3] HID: multitouch: Properly deal with Win8 PTP reports
|
|
||||||
with 0 touches
|
|
||||||
|
|
||||||
The Windows Precision Touchpad spec "Figure 4 Button Only Down and Up"
|
|
||||||
and "Table 9 Report Sequence for Button Only Down and Up" indicate
|
|
||||||
that the first packet of a (possibly hybrid mode multi-packet) frame
|
|
||||||
may contain a contact-count of 0 if only a button is pressed and no
|
|
||||||
fingers are detected.
|
|
||||||
|
|
||||||
This means that a value of 0 for contact-count is a valid value and
|
|
||||||
should be used as expected contact count when it is the first packet
|
|
||||||
(num_received == 0), as extra check to make sure that this is the first
|
|
||||||
packet of a buttons only frame, we also check that the timestamp is
|
|
||||||
different.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
|
||||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-multitouch.c | 32 ++++++++++++++++++++++++++++++--
|
|
||||||
1 file changed, 30 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
|
||||||
index 9ef24b518f12..d8b1cad74faf 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -119,6 +119,9 @@ struct mt_device {
|
|
||||||
unsigned long mt_io_flags; /* mt flags (MT_IO_FLAGS_*) */
|
|
||||||
int cc_index; /* contact count field index in the report */
|
|
||||||
int cc_value_index; /* contact count value index in the field */
|
|
||||||
+ int scantime_index; /* scantime field index in the report */
|
|
||||||
+ int scantime_val_index; /* scantime value index in the field */
|
|
||||||
+ int prev_scantime; /* scantime reported in the previous packet */
|
|
||||||
unsigned last_slot_field; /* the last field of a slot */
|
|
||||||
unsigned mt_report_id; /* the report ID of the multitouch device */
|
|
||||||
unsigned long initial_quirks; /* initial quirks state */
|
|
||||||
@@ -599,6 +602,12 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
|
||||||
EV_MSC, MSC_TIMESTAMP);
|
|
||||||
input_set_capability(hi->input, EV_MSC, MSC_TIMESTAMP);
|
|
||||||
mt_store_field(usage, td, hi);
|
|
||||||
+ /* Ignore if indexes are out of bounds. */
|
|
||||||
+ if (field->index >= field->report->maxfield ||
|
|
||||||
+ usage->usage_index >= field->report_count)
|
|
||||||
+ return 1;
|
|
||||||
+ td->scantime_index = field->index;
|
|
||||||
+ td->scantime_val_index = usage->usage_index;
|
|
||||||
return 1;
|
|
||||||
case HID_DG_CONTACTCOUNT:
|
|
||||||
/* Ignore if indexes are out of bounds. */
|
|
||||||
@@ -855,9 +864,10 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
|
|
||||||
static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
|
||||||
{
|
|
||||||
struct mt_device *td = hid_get_drvdata(hid);
|
|
||||||
+ __s32 cls = td->mtclass.name;
|
|
||||||
struct hid_field *field;
|
|
||||||
unsigned count;
|
|
||||||
- int r, n;
|
|
||||||
+ int r, n, scantime = 0;
|
|
||||||
|
|
||||||
/* sticky fingers release in progress, abort */
|
|
||||||
if (test_and_set_bit(MT_IO_FLAGS_RUNNING, &td->mt_io_flags))
|
|
||||||
@@ -867,12 +877,29 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
|
||||||
* Includes multi-packet support where subsequent
|
|
||||||
* packets are sent with zero contactcount.
|
|
||||||
*/
|
|
||||||
+ if (td->scantime_index >= 0) {
|
|
||||||
+ field = report->field[td->scantime_index];
|
|
||||||
+ scantime = field->value[td->scantime_val_index];
|
|
||||||
+ }
|
|
||||||
if (td->cc_index >= 0) {
|
|
||||||
struct hid_field *field = report->field[td->cc_index];
|
|
||||||
int value = field->value[td->cc_value_index];
|
|
||||||
- if (value)
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * For Win8 PTPs the first packet (td->num_received == 0) may
|
|
||||||
+ * have a contactcount of 0 if there only is a button event.
|
|
||||||
+ * We double check that this is not a continuation packet
|
|
||||||
+ * of a possible multi-packet frame be checking that the
|
|
||||||
+ * timestamp has changed.
|
|
||||||
+ */
|
|
||||||
+ if ((cls == MT_CLS_WIN_8 || cls == MT_CLS_WIN_8_DUAL) &&
|
|
||||||
+ td->num_received == 0 && td->prev_scantime != scantime)
|
|
||||||
+ td->num_expected = value;
|
|
||||||
+ /* A non 0 contact count always indicates a first packet */
|
|
||||||
+ else if (value)
|
|
||||||
td->num_expected = value;
|
|
||||||
}
|
|
||||||
+ td->prev_scantime = scantime;
|
|
||||||
|
|
||||||
for (r = 0; r < report->maxfield; r++) {
|
|
||||||
field = report->field[r];
|
|
||||||
@@ -1329,6 +1356,7 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
|
|
||||||
td->maxcontact_report_id = -1;
|
|
||||||
td->inputmode_value = MT_INPUTMODE_TOUCHSCREEN;
|
|
||||||
td->cc_index = -1;
|
|
||||||
+ td->scantime_index = -1;
|
|
||||||
td->mt_report_id = -1;
|
|
||||||
hid_set_drvdata(hdev, td);
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
From 991b5e95d4fe7778c8f5e7d7f478d01134d51ca7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Laura Abbott <labbott@redhat.com>
|
||||||
|
Date: Wed, 14 Mar 2018 14:20:02 -0700
|
||||||
|
Subject: [PATCH] Temporarily work around gcc aliasing warning/error
|
||||||
|
|
||||||
|
Signed-off-by: Laura Abbott <labbott@redhat.com>
|
||||||
|
---
|
||||||
|
tools/lib/str_error_r.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/tools/lib/str_error_r.c b/tools/lib/str_error_r.c
|
||||||
|
index d6d65537b0d9..c0ede4f6adae 100644
|
||||||
|
--- a/tools/lib/str_error_r.c
|
||||||
|
+++ b/tools/lib/str_error_r.c
|
||||||
|
@@ -21,7 +21,8 @@
|
||||||
|
char *str_error_r(int errnum, char *buf, size_t buflen)
|
||||||
|
{
|
||||||
|
int err = strerror_r(errnum, buf, buflen);
|
||||||
|
+ void *temp = buf;
|
||||||
|
if (err)
|
||||||
|
- snprintf(buf, buflen, "INTERNAL ERROR: strerror_r(%d, %p, %zd)=%d", errnum, buf, buflen, err);
|
||||||
|
+ snprintf(buf, buflen, "INTERNAL ERROR: strerror_r(%d, %p, %zd)=%d", errnum, temp, buflen, err);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.16.2
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
From cb1072f66e72eda65a8f7ac37d32c9f4217af6ba Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Tue, 21 Nov 2017 14:44:15 +0100
|
|
||||||
Subject: [PATCH 1/3] ahci: Annotate PCI ids for mobile Intel chipsets as such
|
|
||||||
|
|
||||||
Intel uses different SATA PCI ids for the Desktop and Mobile SKUs of their
|
|
||||||
chipsets. For older models the comment describing which chipset the PCI id
|
|
||||||
is for, aksi indicates when we're dealing with a mobile SKU. Extend the
|
|
||||||
comments for recent chipsets to also indicate mobile SKUs.
|
|
||||||
|
|
||||||
The information this commit adds comes from Intel's chipset datasheets.
|
|
||||||
|
|
||||||
This commit is a preparation patch for allowing a different default
|
|
||||||
sata link powermanagement policy for mobile chipsets.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/ata/ahci.c | 32 ++++++++++++++++----------------
|
|
||||||
1 file changed, 16 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
|
|
||||||
index 5443cb71d7ba..9d842ff6ec51 100644
|
|
||||||
--- a/drivers/ata/ahci.c
|
|
||||||
+++ b/drivers/ata/ahci.c
|
|
||||||
@@ -268,9 +268,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b23), board_ahci }, /* PCH AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b24), board_ahci }, /* PCH RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b25), board_ahci }, /* PCH RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x3b29), board_ahci }, /* PCH AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x3b29), board_ahci }, /* PCH M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b2b), board_ahci }, /* PCH RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x3b2c), board_ahci }, /* PCH RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x3b2c), board_ahci }, /* PCH M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b2f), board_ahci }, /* PCH AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x19b0), board_ahci }, /* DNV AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x19b1), board_ahci }, /* DNV AHCI */
|
|
||||||
@@ -293,9 +293,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x19cE), board_ahci }, /* DNV AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x19cF), board_ahci }, /* DNV AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1c02), board_ahci }, /* CPT AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x1c03), board_ahci }, /* CPT AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x1c03), board_ahci }, /* CPT M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1c04), board_ahci }, /* CPT RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x1c05), board_ahci }, /* CPT RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x1c05), board_ahci }, /* CPT M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1c06), board_ahci }, /* CPT RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1c07), board_ahci }, /* CPT RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1d02), board_ahci }, /* PBG AHCI */
|
|
||||||
@@ -304,20 +304,20 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2826), board_ahci }, /* PBG RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2323), board_ahci }, /* DH89xxCC AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e02), board_ahci }, /* Panther Point AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x1e03), board_ahci }, /* Panther Point AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x1e03), board_ahci }, /* Panther Point M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e04), board_ahci }, /* Panther Point RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e05), board_ahci }, /* Panther Point RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e06), board_ahci }, /* Panther Point RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x1e07), board_ahci }, /* Panther Point RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x1e07), board_ahci }, /* Panther Point M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e0e), board_ahci }, /* Panther Point RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c02), board_ahci }, /* Lynx Point AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c03), board_ahci }, /* Lynx Point AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c03), board_ahci }, /* Lynx Point M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c04), board_ahci }, /* Lynx Point RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c05), board_ahci }, /* Lynx Point RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c05), board_ahci }, /* Lynx Point M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c06), board_ahci }, /* Lynx Point RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c07), board_ahci }, /* Lynx Point RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c07), board_ahci }, /* Lynx Point M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c0e), board_ahci }, /* Lynx Point RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c0f), board_ahci }, /* Lynx Point RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c0f), board_ahci }, /* Lynx Point M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x9c02), board_ahci }, /* Lynx Point-LP AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x9c03), board_ahci }, /* Lynx Point-LP AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x9c04), board_ahci }, /* Lynx Point-LP RAID */
|
|
||||||
@@ -358,21 +358,21 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x9c87), board_ahci }, /* Wildcat Point-LP RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x9c8f), board_ahci }, /* Wildcat Point-LP RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c82), board_ahci }, /* 9 Series AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c83), board_ahci }, /* 9 Series AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c83), board_ahci }, /* 9 Series M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c84), board_ahci }, /* 9 Series RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c85), board_ahci }, /* 9 Series RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c85), board_ahci }, /* 9 Series M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c86), board_ahci }, /* 9 Series RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c87), board_ahci }, /* 9 Series RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c87), board_ahci }, /* 9 Series M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c8e), board_ahci }, /* 9 Series RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c8f), board_ahci }, /* 9 Series RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c8f), board_ahci }, /* 9 Series M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x9d03), board_ahci }, /* Sunrise Point-LP AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x9d05), board_ahci }, /* Sunrise Point-LP RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x9d07), board_ahci }, /* Sunrise Point-LP RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa102), board_ahci }, /* Sunrise Point-H AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0xa103), board_ahci }, /* Sunrise Point-H AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0xa103), board_ahci }, /* Sunrise Point-H M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa105), board_ahci }, /* Sunrise Point-H RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa106), board_ahci }, /* Sunrise Point-H RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0xa107), board_ahci }, /* Sunrise Point-H RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0xa107), board_ahci }, /* Sunrise Point-H M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa10f), board_ahci }, /* Sunrise Point-H RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2822), board_ahci }, /* Lewisburg RAID*/
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2823), board_ahci }, /* Lewisburg AHCI*/
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -1,99 +0,0 @@
|
||||||
From 714fe15daa07e7691c9731c88de71aa57f84b6c2 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Wed, 3 Jan 2018 11:13:54 +0100
|
|
||||||
Subject: [PATCH] platform/x86: dell-laptop: Filter out spurious keyboard
|
|
||||||
backlight change events
|
|
||||||
|
|
||||||
On some Dell XPS models WMI events of type 0x0000 reporting a keycode of
|
|
||||||
0xe00c get reported when the brightness of the LCD panel changes.
|
|
||||||
|
|
||||||
This leads to us reporting false-positive kbd_led change events to
|
|
||||||
userspace which in turn leads to the kbd backlight OSD showing when it
|
|
||||||
should not.
|
|
||||||
|
|
||||||
We already read the current keyboard backlight brightness value when
|
|
||||||
reporting events because the led_classdev_notify_brightness_hw_changed
|
|
||||||
API requires this. Compare this value to the last known value and filter
|
|
||||||
out duplicate events, fixing this.
|
|
||||||
|
|
||||||
Note the fixed issue is esp. a problem on XPS models with an ambient light
|
|
||||||
sensor and automatic brightness adjustments turned on, this causes the kbd
|
|
||||||
backlight OSD to show all the time there.
|
|
||||||
|
|
||||||
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1514969
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/platform/x86/dell-laptop.c | 24 ++++++++++++++++++++++--
|
|
||||||
1 file changed, 22 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
|
|
||||||
index cd4725e7e0b5..2ef3297a9efc 100644
|
|
||||||
--- a/drivers/platform/x86/dell-laptop.c
|
|
||||||
+++ b/drivers/platform/x86/dell-laptop.c
|
|
||||||
@@ -1133,6 +1133,7 @@ static u8 kbd_previous_mode_bit;
|
|
||||||
|
|
||||||
static bool kbd_led_present;
|
|
||||||
static DEFINE_MUTEX(kbd_led_mutex);
|
|
||||||
+static enum led_brightness kbd_led_level;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* NOTE: there are three ways to set the keyboard backlight level.
|
|
||||||
@@ -1947,6 +1948,7 @@ static enum led_brightness kbd_led_level_get(struct led_classdev *led_cdev)
|
|
||||||
static int kbd_led_level_set(struct led_classdev *led_cdev,
|
|
||||||
enum led_brightness value)
|
|
||||||
{
|
|
||||||
+ enum led_brightness new_value = value;
|
|
||||||
struct kbd_state state;
|
|
||||||
struct kbd_state new_state;
|
|
||||||
u16 num;
|
|
||||||
@@ -1976,6 +1978,9 @@ static int kbd_led_level_set(struct led_classdev *led_cdev,
|
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
|
||||||
+ if (ret == 0)
|
|
||||||
+ kbd_led_level = new_value;
|
|
||||||
+
|
|
||||||
mutex_unlock(&kbd_led_mutex);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
@@ -2003,6 +2008,9 @@ static int __init kbd_led_init(struct device *dev)
|
|
||||||
if (kbd_led.max_brightness)
|
|
||||||
kbd_led.max_brightness--;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ kbd_led_level = kbd_led_level_get(NULL);
|
|
||||||
+
|
|
||||||
ret = led_classdev_register(dev, &kbd_led);
|
|
||||||
if (ret)
|
|
||||||
kbd_led_present = false;
|
|
||||||
@@ -2027,13 +2035,25 @@ static void kbd_led_exit(void)
|
|
||||||
static int dell_laptop_notifier_call(struct notifier_block *nb,
|
|
||||||
unsigned long action, void *data)
|
|
||||||
{
|
|
||||||
+ bool changed = false;
|
|
||||||
+ enum led_brightness new_kbd_led_level;
|
|
||||||
+
|
|
||||||
switch (action) {
|
|
||||||
case DELL_LAPTOP_KBD_BACKLIGHT_BRIGHTNESS_CHANGED:
|
|
||||||
if (!kbd_led_present)
|
|
||||||
break;
|
|
||||||
|
|
||||||
- led_classdev_notify_brightness_hw_changed(&kbd_led,
|
|
||||||
- kbd_led_level_get(&kbd_led));
|
|
||||||
+ mutex_lock(&kbd_led_mutex);
|
|
||||||
+ new_kbd_led_level = kbd_led_level_get(&kbd_led);
|
|
||||||
+ if (kbd_led_level != new_kbd_led_level) {
|
|
||||||
+ kbd_led_level = new_kbd_led_level;
|
|
||||||
+ changed = true;
|
|
||||||
+ }
|
|
||||||
+ mutex_unlock(&kbd_led_mutex);
|
|
||||||
+
|
|
||||||
+ if (changed)
|
|
||||||
+ led_classdev_notify_brightness_hw_changed(&kbd_led,
|
|
||||||
+ kbd_led_level);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -1,84 +0,0 @@
|
||||||
From c25d877f4ee97deb92170129eee4777a5d5997d9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Wed, 22 Nov 2017 12:57:09 +0100
|
|
||||||
Subject: [PATCH v2 2/3] HID: multitouch: Only look at non touch fields in
|
|
||||||
first packet of a frame
|
|
||||||
|
|
||||||
Devices in "single finger hybrid mode" will send one report per finger,
|
|
||||||
on some devices only the first report of such a multi-packet frame will
|
|
||||||
contain a value for BTN_LEFT, in subsequent reports (if multiple fingers
|
|
||||||
are down) the value is always 0, causing hid-mt to report BTN_LEFT going
|
|
||||||
1 - 0 - 1 - 0 when pressing a clickpad and putting down a second finger.
|
|
||||||
This happens for example on USB 0603:0002 mt touchpads.
|
|
||||||
|
|
||||||
This commit fixes this by only reporting non touch fields for the first
|
|
||||||
packet of a (possibly) multi-packet frame.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
|
||||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-multitouch.c | 17 +++++++++++++++--
|
|
||||||
1 file changed, 15 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
|
||||||
index d8b1cad74faf..760c4a042e6a 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -787,9 +787,11 @@ static int mt_touch_event(struct hid_device *hid, struct hid_field *field,
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
|
|
||||||
- struct hid_usage *usage, __s32 value)
|
|
||||||
+ struct hid_usage *usage, __s32 value,
|
|
||||||
+ bool first_packet)
|
|
||||||
{
|
|
||||||
struct mt_device *td = hid_get_drvdata(hid);
|
|
||||||
+ __s32 cls = td->mtclass.name;
|
|
||||||
__s32 quirks = td->mtclass.quirks;
|
|
||||||
struct input_dev *input = field->hidinput->input;
|
|
||||||
|
|
||||||
@@ -846,6 +848,15 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
+ /*
|
|
||||||
+ * For Win8 PTP touchpads we should only look at
|
|
||||||
+ * non finger/touch events in the first_packet of
|
|
||||||
+ * a (possible) multi-packet frame.
|
|
||||||
+ */
|
|
||||||
+ if ((cls == MT_CLS_WIN_8 || cls == MT_CLS_WIN_8_DUAL) &&
|
|
||||||
+ !first_packet)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
if (usage->type)
|
|
||||||
input_event(input, usage->type, usage->code,
|
|
||||||
value);
|
|
||||||
@@ -866,6 +877,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
|
||||||
struct mt_device *td = hid_get_drvdata(hid);
|
|
||||||
__s32 cls = td->mtclass.name;
|
|
||||||
struct hid_field *field;
|
|
||||||
+ bool first_packet;
|
|
||||||
unsigned count;
|
|
||||||
int r, n, scantime = 0;
|
|
||||||
|
|
||||||
@@ -901,6 +913,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
|
||||||
}
|
|
||||||
td->prev_scantime = scantime;
|
|
||||||
|
|
||||||
+ first_packet = td->num_received == 0;
|
|
||||||
for (r = 0; r < report->maxfield; r++) {
|
|
||||||
field = report->field[r];
|
|
||||||
count = field->report_count;
|
|
||||||
@@ -910,7 +923,7 @@ static void mt_touch_report(struct hid_device *hid, struct hid_report *report)
|
|
||||||
|
|
||||||
for (n = 0; n < count; n++)
|
|
||||||
mt_process_mt_event(hid, field, &field->usage[n],
|
|
||||||
- field->value[n]);
|
|
||||||
+ field->value[n], first_packet);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (td->num_received >= td->num_expected)
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
From eab582db4b6c04a20a8bd792faa9ebf7adf1ec17 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Mon, 27 Nov 2017 12:07:34 +0100
|
|
||||||
Subject: [PATCH 2/3] ahci: Add PCI ids for Intel Bay Trail, Cherry Trail and
|
|
||||||
Apollo Lake AHCI
|
|
||||||
|
|
||||||
Add PCI ids for Intel Bay Trail, Cherry Trail and Apollo Lake AHCI
|
|
||||||
SATA controllers. This commit is a preparation patch for allowing a
|
|
||||||
different default sata link powermanagement policy for mobile chipsets.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/ata/ahci.c | 4 ++++
|
|
||||||
1 file changed, 4 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
|
|
||||||
index 9d842ff6ec51..844f697bedbf 100644
|
|
||||||
--- a/drivers/ata/ahci.c
|
|
||||||
+++ b/drivers/ata/ahci.c
|
|
||||||
@@ -386,6 +386,10 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa206), board_ahci }, /* Lewisburg RAID*/
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa252), board_ahci }, /* Lewisburg RAID*/
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa256), board_ahci }, /* Lewisburg RAID*/
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x0f22), board_ahci }, /* Bay Trail AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x0f23), board_ahci }, /* Bay Trail AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x22a3), board_ahci }, /* Cherry Trail AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x5ae3), board_ahci }, /* Apollo Lake AHCI */
|
|
||||||
|
|
||||||
/* JMicron 360/1/3/5/6, match class to avoid IDE function */
|
|
||||||
{ PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
From 1719566899e5a69b4ba767beb07dab7ceb9ae5a8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Wed, 22 Nov 2017 12:57:10 +0100
|
|
||||||
Subject: [PATCH v2 3/3] HID: multitouch: Combine all left-button events in a
|
|
||||||
frame
|
|
||||||
|
|
||||||
According to the Win8 Precision Touchpad spec, inside the HID_UP_BUTTON
|
|
||||||
usage-page usage 1 is for a clickpad getting clicked, 2 for an external
|
|
||||||
left button and 3 for an external right button. Since Linux uses
|
|
||||||
BTN_LEFT for a clickpad being clicked we end up mapping both usage 1
|
|
||||||
and 2 to BTN_LEFT and if a single report contains both then we ended
|
|
||||||
up always reporting the value of both in a single SYN, e.g. :
|
|
||||||
BTN_LEFT 1, BTN_LEFT 0, SYN. This happens for example with Hantick
|
|
||||||
HTT5288 i2c mt touchpads.
|
|
||||||
|
|
||||||
This commit fixes this by not immediately reporting left button when we
|
|
||||||
parse the report, but instead storing or-ing together the values and
|
|
||||||
reporting the result from mt_sync_frame() when we've a complete frame.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
|
||||||
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-multitouch.c | 20 ++++++++++++++++++++
|
|
||||||
1 file changed, 20 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
|
||||||
index 760c4a042e6a..76088f2cf598 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -122,6 +122,7 @@ struct mt_device {
|
|
||||||
int scantime_index; /* scantime field index in the report */
|
|
||||||
int scantime_val_index; /* scantime value index in the field */
|
|
||||||
int prev_scantime; /* scantime reported in the previous packet */
|
|
||||||
+ int left_button_state; /* left button state */
|
|
||||||
unsigned last_slot_field; /* the last field of a slot */
|
|
||||||
unsigned mt_report_id; /* the report ID of the multitouch device */
|
|
||||||
unsigned long initial_quirks; /* initial quirks state */
|
|
||||||
@@ -743,10 +744,16 @@ static void mt_complete_slot(struct mt_device *td, struct input_dev *input)
|
|
||||||
*/
|
|
||||||
static void mt_sync_frame(struct mt_device *td, struct input_dev *input)
|
|
||||||
{
|
|
||||||
+ __s32 cls = td->mtclass.name;
|
|
||||||
+
|
|
||||||
+ if (cls == MT_CLS_WIN_8 || cls == MT_CLS_WIN_8_DUAL)
|
|
||||||
+ input_event(input, EV_KEY, BTN_LEFT, td->left_button_state);
|
|
||||||
+
|
|
||||||
input_mt_sync_frame(input);
|
|
||||||
input_event(input, EV_MSC, MSC_TIMESTAMP, td->timestamp);
|
|
||||||
input_sync(input);
|
|
||||||
td->num_received = 0;
|
|
||||||
+ td->left_button_state = 0;
|
|
||||||
if (test_bit(MT_IO_FLAGS_ACTIVE_SLOTS, &td->mt_io_flags))
|
|
||||||
set_bit(MT_IO_FLAGS_PENDING_SLOTS, &td->mt_io_flags);
|
|
||||||
else
|
|
||||||
@@ -857,6 +864,19 @@ static void mt_process_mt_event(struct hid_device *hid, struct hid_field *field,
|
|
||||||
!first_packet)
|
|
||||||
return;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * For Win8 PTP touchpads we map both the clickpad click
|
|
||||||
+ * and any "external" left buttons to BTN_LEFT if a
|
|
||||||
+ * device claims to have both we need to report 1 for
|
|
||||||
+ * BTN_LEFT if either is pressed, so we or all values
|
|
||||||
+ * together and report the result in mt_sync_frame().
|
|
||||||
+ */
|
|
||||||
+ if ((cls == MT_CLS_WIN_8 || cls == MT_CLS_WIN_8_DUAL) &&
|
|
||||||
+ usage->type == EV_KEY && usage->code == BTN_LEFT) {
|
|
||||||
+ td->left_button_state |= value;
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (usage->type)
|
|
||||||
input_event(input, usage->type, usage->code,
|
|
||||||
value);
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -1,274 +0,0 @@
|
||||||
From 262135cf058c28d248b997bd11b2c124e27d8d47 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Mon, 27 Nov 2017 15:32:01 +0100
|
|
||||||
Subject: [PATCH 3/3] ahci: Allow setting a default LPM policy for mobile
|
|
||||||
chipsets
|
|
||||||
|
|
||||||
On many laptops setting a different LPM policy then unknown /
|
|
||||||
max_performance can lead to power-savings of 1.0 - 1.5 Watts (when idle).
|
|
||||||
|
|
||||||
Modern ultrabooks idle around 6W (at 50% screen brightness), 1.0 - 1.5W
|
|
||||||
is a significant chunk of this.
|
|
||||||
|
|
||||||
There are some performance / latency costs to enabling LPM by default,
|
|
||||||
so it is desirable to make it possible to set a different LPM policy
|
|
||||||
for mobile / laptop variants of chipsets / "South Bridges" vs their
|
|
||||||
desktop / server counterparts. Also enabling LPM by default is not
|
|
||||||
entirely without risk of regressions. At least min_power is known to
|
|
||||||
cause issues with some disks, including some reports of data corruption.
|
|
||||||
|
|
||||||
This commits adds a new ahci.mobile_lpm_policy kernel cmdline option,
|
|
||||||
which defaults to a new SATA_MOBILE_LPM_POLICY Kconfig option so that
|
|
||||||
Linux distributions can choose to set a LPM policy for mobile chipsets
|
|
||||||
by default.
|
|
||||||
|
|
||||||
The reason to have both a kernel cmdline option and a Kconfig default
|
|
||||||
value for it, is to allow easy overriding of the default to allow
|
|
||||||
trouble-shooting without needing to rebuild the kernel.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
---
|
|
||||||
Changes in v2:
|
|
||||||
-Remove .config changes from the patch
|
|
||||||
---
|
|
||||||
drivers/ata/Kconfig | 19 +++++++++++
|
|
||||||
drivers/ata/ahci.c | 97 +++++++++++++++++++++++++++++++----------------------
|
|
||||||
drivers/ata/ahci.h | 3 ++
|
|
||||||
3 files changed, 78 insertions(+), 41 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
|
|
||||||
index cb5339166563..b3fad5663aeb 100644
|
|
||||||
--- a/drivers/ata/Kconfig
|
|
||||||
+++ b/drivers/ata/Kconfig
|
|
||||||
@@ -92,6 +92,25 @@ config SATA_AHCI
|
|
||||||
|
|
||||||
If unsure, say N.
|
|
||||||
|
|
||||||
+config SATA_MOBILE_LPM_POLICY
|
|
||||||
+ int "Default SATA Link Power Management policy for mobile chipsets"
|
|
||||||
+ range 0 4
|
|
||||||
+ default 0
|
|
||||||
+ depends on SATA_AHCI
|
|
||||||
+ help
|
|
||||||
+ Select the Default SATA Link Power Management (LPM) policy to use
|
|
||||||
+ for mobile / laptop variants of chipsets / "South Bridges".
|
|
||||||
+
|
|
||||||
+ The value set has the following meanings:
|
|
||||||
+ 0 => Keep firmware settings
|
|
||||||
+ 1 => Maximum performance
|
|
||||||
+ 2 => Medium power
|
|
||||||
+ 3 => Medium power with Device Initiated PM enabled
|
|
||||||
+ 4 => Minimum power
|
|
||||||
+
|
|
||||||
+ Note "Minimum power" is known to cause issues, including disk
|
|
||||||
+ corruption, with some disks and should not be used.
|
|
||||||
+
|
|
||||||
config SATA_AHCI_PLATFORM
|
|
||||||
tristate "Platform AHCI SATA support"
|
|
||||||
help
|
|
||||||
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
|
|
||||||
index 844f697bedbf..8e910fae8892 100644
|
|
||||||
--- a/drivers/ata/ahci.c
|
|
||||||
+++ b/drivers/ata/ahci.c
|
|
||||||
@@ -65,6 +65,7 @@ enum board_ids {
|
|
||||||
/* board IDs by feature in alphabetical order */
|
|
||||||
board_ahci,
|
|
||||||
board_ahci_ign_iferr,
|
|
||||||
+ board_ahci_mobile,
|
|
||||||
board_ahci_nomsi,
|
|
||||||
board_ahci_noncq,
|
|
||||||
board_ahci_nosntf,
|
|
||||||
@@ -140,6 +141,13 @@ static const struct ata_port_info ahci_port_info[] = {
|
|
||||||
.udma_mask = ATA_UDMA6,
|
|
||||||
.port_ops = &ahci_ops,
|
|
||||||
},
|
|
||||||
+ [board_ahci_mobile] = {
|
|
||||||
+ AHCI_HFLAGS (AHCI_HFLAG_IS_MOBILE),
|
|
||||||
+ .flags = AHCI_FLAG_COMMON,
|
|
||||||
+ .pio_mask = ATA_PIO4,
|
|
||||||
+ .udma_mask = ATA_UDMA6,
|
|
||||||
+ .port_ops = &ahci_ops,
|
|
||||||
+ },
|
|
||||||
[board_ahci_nomsi] = {
|
|
||||||
AHCI_HFLAGS (AHCI_HFLAG_NO_MSI),
|
|
||||||
.flags = AHCI_FLAG_COMMON,
|
|
||||||
@@ -252,13 +260,13 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2924), board_ahci }, /* ICH9 */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2925), board_ahci }, /* ICH9 */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2927), board_ahci }, /* ICH9 */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x2929), board_ahci }, /* ICH9M */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x292a), board_ahci }, /* ICH9M */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x292b), board_ahci }, /* ICH9M */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x292c), board_ahci }, /* ICH9M */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x292f), board_ahci }, /* ICH9M */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x2929), board_ahci_mobile }, /* ICH9M */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x292a), board_ahci_mobile }, /* ICH9M */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x292b), board_ahci_mobile }, /* ICH9M */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x292c), board_ahci_mobile }, /* ICH9M */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x292f), board_ahci_mobile }, /* ICH9M */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x294d), board_ahci }, /* ICH9 */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x294e), board_ahci }, /* ICH9M */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x294e), board_ahci_mobile }, /* ICH9M */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x502a), board_ahci }, /* Tolapai */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x502b), board_ahci }, /* Tolapai */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3a05), board_ahci }, /* ICH10 */
|
|
||||||
@@ -268,9 +276,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b23), board_ahci }, /* PCH AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b24), board_ahci }, /* PCH RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b25), board_ahci }, /* PCH RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x3b29), board_ahci }, /* PCH M AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x3b29), board_ahci_mobile }, /* PCH M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b2b), board_ahci }, /* PCH RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x3b2c), board_ahci }, /* PCH M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x3b2c), board_ahci_mobile }, /* PCH M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x3b2f), board_ahci }, /* PCH AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x19b0), board_ahci }, /* DNV AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x19b1), board_ahci }, /* DNV AHCI */
|
|
||||||
@@ -293,9 +301,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x19cE), board_ahci }, /* DNV AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x19cF), board_ahci }, /* DNV AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1c02), board_ahci }, /* CPT AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x1c03), board_ahci }, /* CPT M AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x1c03), board_ahci_mobile }, /* CPT M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1c04), board_ahci }, /* CPT RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x1c05), board_ahci }, /* CPT M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x1c05), board_ahci_mobile }, /* CPT M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1c06), board_ahci }, /* CPT RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1c07), board_ahci }, /* CPT RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1d02), board_ahci }, /* PBG AHCI */
|
|
||||||
@@ -304,28 +312,28 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2826), board_ahci }, /* PBG RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2323), board_ahci }, /* DH89xxCC AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e02), board_ahci }, /* Panther Point AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x1e03), board_ahci }, /* Panther Point M AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x1e03), board_ahci_mobile }, /* Panther M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e04), board_ahci }, /* Panther Point RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e05), board_ahci }, /* Panther Point RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e06), board_ahci }, /* Panther Point RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x1e07), board_ahci }, /* Panther Point M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x1e07), board_ahci_mobile }, /* Panther M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1e0e), board_ahci }, /* Panther Point RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c02), board_ahci }, /* Lynx Point AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c03), board_ahci }, /* Lynx Point M AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c03), board_ahci_mobile }, /* Lynx M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c04), board_ahci }, /* Lynx Point RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c05), board_ahci }, /* Lynx Point M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c05), board_ahci_mobile }, /* Lynx M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c06), board_ahci }, /* Lynx Point RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c07), board_ahci }, /* Lynx Point M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c07), board_ahci_mobile }, /* Lynx M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c0e), board_ahci }, /* Lynx Point RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c0f), board_ahci }, /* Lynx Point M RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c02), board_ahci }, /* Lynx Point-LP AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c03), board_ahci }, /* Lynx Point-LP AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c04), board_ahci }, /* Lynx Point-LP RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c05), board_ahci }, /* Lynx Point-LP RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c06), board_ahci }, /* Lynx Point-LP RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c07), board_ahci }, /* Lynx Point-LP RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c0e), board_ahci }, /* Lynx Point-LP RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c0f), board_ahci }, /* Lynx Point-LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c0f), board_ahci_mobile }, /* Lynx M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c02), board_ahci_mobile }, /* Lynx LP AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c03), board_ahci_mobile }, /* Lynx LP AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c04), board_ahci_mobile }, /* Lynx LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c05), board_ahci_mobile }, /* Lynx LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c06), board_ahci_mobile }, /* Lynx LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c07), board_ahci_mobile }, /* Lynx LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c0e), board_ahci_mobile }, /* Lynx LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c0f), board_ahci_mobile }, /* Lynx LP RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1f22), board_ahci }, /* Avoton AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1f23), board_ahci }, /* Avoton AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x1f24), board_ahci }, /* Avoton RAID */
|
|
||||||
@@ -353,26 +361,26 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8d66), board_ahci }, /* Wellsburg RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8d6e), board_ahci }, /* Wellsburg RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x23a3), board_ahci }, /* Coleto Creek AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c83), board_ahci }, /* Wildcat Point-LP AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c85), board_ahci }, /* Wildcat Point-LP RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c87), board_ahci }, /* Wildcat Point-LP RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9c8f), board_ahci }, /* Wildcat Point-LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c83), board_ahci_mobile }, /* Wildcat LP AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c85), board_ahci_mobile }, /* Wildcat LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c87), board_ahci_mobile }, /* Wildcat LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9c8f), board_ahci_mobile }, /* Wildcat LP RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c82), board_ahci }, /* 9 Series AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c83), board_ahci }, /* 9 Series M AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c83), board_ahci_mobile }, /* 9 Series M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c84), board_ahci }, /* 9 Series RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c85), board_ahci }, /* 9 Series M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c85), board_ahci_mobile }, /* 9 Series M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c86), board_ahci }, /* 9 Series RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c87), board_ahci }, /* 9 Series M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c87), board_ahci_mobile }, /* 9 Series M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x8c8e), board_ahci }, /* 9 Series RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x8c8f), board_ahci }, /* 9 Series M RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9d03), board_ahci }, /* Sunrise Point-LP AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9d05), board_ahci }, /* Sunrise Point-LP RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x9d07), board_ahci }, /* Sunrise Point-LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x8c8f), board_ahci_mobile }, /* 9 Series M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9d03), board_ahci_mobile }, /* Sunrise LP AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9d05), board_ahci_mobile }, /* Sunrise LP RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x9d07), board_ahci_mobile }, /* Sunrise LP RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa102), board_ahci }, /* Sunrise Point-H AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0xa103), board_ahci }, /* Sunrise Point-H M AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0xa103), board_ahci_mobile }, /* Sunrise M AHCI */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa105), board_ahci }, /* Sunrise Point-H RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa106), board_ahci }, /* Sunrise Point-H RAID */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0xa107), board_ahci }, /* Sunrise Point-H M RAID */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0xa107), board_ahci_mobile }, /* Sunrise M RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa10f), board_ahci }, /* Sunrise Point-H RAID */
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2822), board_ahci }, /* Lewisburg RAID*/
|
|
||||||
{ PCI_VDEVICE(INTEL, 0x2823), board_ahci }, /* Lewisburg AHCI*/
|
|
||||||
@@ -386,10 +394,10 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa206), board_ahci }, /* Lewisburg RAID*/
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa252), board_ahci }, /* Lewisburg RAID*/
|
|
||||||
{ PCI_VDEVICE(INTEL, 0xa256), board_ahci }, /* Lewisburg RAID*/
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x0f22), board_ahci }, /* Bay Trail AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x0f23), board_ahci }, /* Bay Trail AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x22a3), board_ahci }, /* Cherry Trail AHCI */
|
|
||||||
- { PCI_VDEVICE(INTEL, 0x5ae3), board_ahci }, /* Apollo Lake AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x0f22), board_ahci_mobile }, /* Bay Trail AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x0f23), board_ahci_mobile }, /* Bay Trail AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x22a3), board_ahci_mobile }, /* Cherry Tr. AHCI */
|
|
||||||
+ { PCI_VDEVICE(INTEL, 0x5ae3), board_ahci_mobile }, /* ApolloLake AHCI */
|
|
||||||
|
|
||||||
/* JMicron 360/1/3/5/6, match class to avoid IDE function */
|
|
||||||
{ PCI_VENDOR_ID_JMICRON, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
|
||||||
@@ -597,6 +605,9 @@ static int marvell_enable = 1;
|
|
||||||
module_param(marvell_enable, int, 0644);
|
|
||||||
MODULE_PARM_DESC(marvell_enable, "Marvell SATA via AHCI (1 = enabled)");
|
|
||||||
|
|
||||||
+static int mobile_lpm_policy = CONFIG_SATA_MOBILE_LPM_POLICY;
|
|
||||||
+module_param(mobile_lpm_policy, int, 0644);
|
|
||||||
+MODULE_PARM_DESC(mobile_lpm_policy, "Default LPM policy for mobile chipsets");
|
|
||||||
|
|
||||||
static void ahci_pci_save_initial_config(struct pci_dev *pdev,
|
|
||||||
struct ahci_host_priv *hpriv)
|
|
||||||
@@ -1732,6 +1743,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|
||||||
if (ap->flags & ATA_FLAG_EM)
|
|
||||||
ap->em_message_type = hpriv->em_msg_type;
|
|
||||||
|
|
||||||
+ if ((hpriv->flags & AHCI_HFLAG_IS_MOBILE) &&
|
|
||||||
+ mobile_lpm_policy >= ATA_LPM_UNKNOWN &&
|
|
||||||
+ mobile_lpm_policy <= ATA_LPM_MIN_POWER)
|
|
||||||
+ ap->target_lpm_policy = mobile_lpm_policy;
|
|
||||||
|
|
||||||
/* disabled/not-implemented port */
|
|
||||||
if (!(hpriv->port_map & (1 << i)))
|
|
||||||
diff --git a/drivers/ata/ahci.h b/drivers/ata/ahci.h
|
|
||||||
index 749fd94441b0..a9d996e17d75 100644
|
|
||||||
--- a/drivers/ata/ahci.h
|
|
||||||
+++ b/drivers/ata/ahci.h
|
|
||||||
@@ -251,6 +251,9 @@ enum {
|
|
||||||
AHCI_HFLAG_YES_ALPM = (1 << 23), /* force ALPM cap on */
|
|
||||||
AHCI_HFLAG_NO_WRITE_TO_RO = (1 << 24), /* don't write to read
|
|
||||||
only registers */
|
|
||||||
+ AHCI_HFLAG_IS_MOBILE = (1 << 25), /* mobile chipset, use
|
|
||||||
+ SATA_MOBILE_LPM_POLICY
|
|
||||||
+ as default lpm_policy */
|
|
||||||
|
|
||||||
/* ap->flags bits */
|
|
||||||
|
|
||||||
--
|
|
||||||
2.14.3
|
|
||||||
|
|
|
@ -1,114 +0,0 @@
|
||||||
From 33fc16fd8aa3684e19b1d1f0a712593e2e570ab1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Sun, 11 Jun 2017 21:24:50 +0200
|
|
||||||
Subject: [PATCH 10/16] Input: silead: Add support for capactive home button
|
|
||||||
found on some x86 tablets
|
|
||||||
|
|
||||||
On some x86 tablets with a silead touchscreen the windows logo on the
|
|
||||||
front is a capacitive home button. Touching this button results in a touch
|
|
||||||
with bits 12-15 of the Y coordinates set, while normally only the lower 12
|
|
||||||
are used.
|
|
||||||
|
|
||||||
Detect this and report a KEY_LEFTMETA press when this happens. Note for
|
|
||||||
now we only respond to the Y coordinate bits 12-15 containing 0x01, on some
|
|
||||||
tablets *without* a capacative button I've noticed these bits containing
|
|
||||||
0x04 when crossing the edges of the screen.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
---
|
|
||||||
drivers/input/touchscreen/silead.c | 45 ++++++++++++++++++++++++++++----------
|
|
||||||
1 file changed, 34 insertions(+), 11 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/input/touchscreen/silead.c b/drivers/input/touchscreen/silead.c
|
|
||||||
index 0dbcf105f7db..c0ba40c09699 100644
|
|
||||||
--- a/drivers/input/touchscreen/silead.c
|
|
||||||
+++ b/drivers/input/touchscreen/silead.c
|
|
||||||
@@ -56,7 +56,7 @@
|
|
||||||
#define SILEAD_POINT_Y_MSB_OFF 0x01
|
|
||||||
#define SILEAD_POINT_X_OFF 0x02
|
|
||||||
#define SILEAD_POINT_X_MSB_OFF 0x03
|
|
||||||
-#define SILEAD_TOUCH_ID_MASK 0xF0
|
|
||||||
+#define SILEAD_EXTRA_DATA_MASK 0xF0
|
|
||||||
|
|
||||||
#define SILEAD_CMD_SLEEP_MIN 10000
|
|
||||||
#define SILEAD_CMD_SLEEP_MAX 20000
|
|
||||||
@@ -109,6 +109,8 @@ static int silead_ts_request_input_dev(struct silead_ts_data *data)
|
|
||||||
INPUT_MT_DIRECT | INPUT_MT_DROP_UNUSED |
|
|
||||||
INPUT_MT_TRACK);
|
|
||||||
|
|
||||||
+ input_set_capability(data->input, EV_KEY, KEY_LEFTMETA);
|
|
||||||
+
|
|
||||||
data->input->name = SILEAD_TS_NAME;
|
|
||||||
data->input->phys = "input/ts";
|
|
||||||
data->input->id.bustype = BUS_I2C;
|
|
||||||
@@ -139,7 +141,8 @@ static void silead_ts_read_data(struct i2c_client *client)
|
|
||||||
struct input_dev *input = data->input;
|
|
||||||
struct device *dev = &client->dev;
|
|
||||||
u8 *bufp, buf[SILEAD_TS_DATA_LEN];
|
|
||||||
- int touch_nr, error, i;
|
|
||||||
+ int touch_nr, softbutton, error, i;
|
|
||||||
+ bool softbutton_pressed = false;
|
|
||||||
|
|
||||||
error = i2c_smbus_read_i2c_block_data(client, SILEAD_REG_DATA,
|
|
||||||
SILEAD_TS_DATA_LEN, buf);
|
|
||||||
@@ -148,21 +151,40 @@ static void silead_ts_read_data(struct i2c_client *client)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- touch_nr = buf[0];
|
|
||||||
- if (touch_nr > data->max_fingers) {
|
|
||||||
+ if (buf[0] > data->max_fingers) {
|
|
||||||
dev_warn(dev, "More touches reported then supported %d > %d\n",
|
|
||||||
- touch_nr, data->max_fingers);
|
|
||||||
- touch_nr = data->max_fingers;
|
|
||||||
+ buf[0], data->max_fingers);
|
|
||||||
+ buf[0] = data->max_fingers;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ touch_nr = 0;
|
|
||||||
bufp = buf + SILEAD_POINT_DATA_LEN;
|
|
||||||
- for (i = 0; i < touch_nr; i++, bufp += SILEAD_POINT_DATA_LEN) {
|
|
||||||
- /* Bits 4-7 are the touch id */
|
|
||||||
- data->id[i] = (bufp[SILEAD_POINT_X_MSB_OFF] &
|
|
||||||
- SILEAD_TOUCH_ID_MASK) >> 4;
|
|
||||||
- touchscreen_set_mt_pos(&data->pos[i], &data->prop,
|
|
||||||
+ for (i = 0; i < buf[0]; i++, bufp += SILEAD_POINT_DATA_LEN) {
|
|
||||||
+ softbutton = (bufp[SILEAD_POINT_Y_MSB_OFF] &
|
|
||||||
+ SILEAD_EXTRA_DATA_MASK) >> 4;
|
|
||||||
+
|
|
||||||
+ if (softbutton) {
|
|
||||||
+ /*
|
|
||||||
+ * For now only respond to softbutton == 0x01, some
|
|
||||||
+ * tablets *without* a capacative button send 0x04
|
|
||||||
+ * when crossing the edges of the screen.
|
|
||||||
+ */
|
|
||||||
+ if (softbutton == 0x01)
|
|
||||||
+ softbutton_pressed = true;
|
|
||||||
+
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /*
|
|
||||||
+ * Bits 4-7 are the touch id, note not all models have
|
|
||||||
+ * hardware touch ids so atm we don't use these.
|
|
||||||
+ */
|
|
||||||
+ data->id[touch_nr] = (bufp[SILEAD_POINT_X_MSB_OFF] &
|
|
||||||
+ SILEAD_EXTRA_DATA_MASK) >> 4;
|
|
||||||
+ touchscreen_set_mt_pos(&data->pos[touch_nr], &data->prop,
|
|
||||||
get_unaligned_le16(&bufp[SILEAD_POINT_X_OFF]) & 0xfff,
|
|
||||||
get_unaligned_le16(&bufp[SILEAD_POINT_Y_OFF]) & 0xfff);
|
|
||||||
+ touch_nr++;
|
|
||||||
}
|
|
||||||
|
|
||||||
input_mt_assign_slots(input, data->slots, data->pos, touch_nr, 0);
|
|
||||||
@@ -178,6 +200,7 @@ static void silead_ts_read_data(struct i2c_client *client)
|
|
||||||
}
|
|
||||||
|
|
||||||
input_mt_sync_frame(input);
|
|
||||||
+ input_report_key(input, KEY_LEFTMETA, softbutton_pressed);
|
|
||||||
input_sync(input);
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.13.0
|
|
||||||
|
|
|
@ -0,0 +1,217 @@
|
||||||
|
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
|
||||||
|
|
102
PatchList.txt
102
PatchList.txt
|
@ -1,52 +1,76 @@
|
||||||
**** Backports and patches headed/already upsteram *****************************
|
# This file contains patches that we intend to carry for longer than
|
||||||
|
# "Should show up in a stable release soonish"
|
||||||
|
# Some of these may eventually drop out
|
||||||
|
|
||||||
* cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch (rhbz 1000439)
|
kbuild-AFTER_LINK.patch
|
||||||
- Queued for next upstream release I believe. Fixes a segfault in cpupower
|
|
||||||
|
|
||||||
* dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch (rhbz 993744)
|
arm64-avoid-needing-console-to-enable-serial-console.patch
|
||||||
- Still pending upstream
|
|
||||||
|
|
||||||
* ath9k_rx_dma_stop_check.patch (rhbz 892811)
|
geekbox-v4-device-tree-support.patch
|
||||||
- Fixes some DMA issue on specific hardware. Taken from
|
|
||||||
https://dev.openwrt.org/browser/trunk/package/mac80211/patches/552-ath9k_rx_dma_stop_check.patch?rev=34910
|
|
||||||
|
|
||||||
* secure-modules.patch
|
Initial-AllWinner-A64-and-PINE64-support.patch
|
||||||
* modsign-uefi.patch
|
|
||||||
* sb-hibernate.patch
|
|
||||||
* sysrq-secure-boot.patch
|
|
||||||
- Fedora secure boot support.
|
|
||||||
- Dear Matthew, this is your fault. Run sed already and get a new set out.
|
|
||||||
|
|
||||||
**** Other stuff that should go upstream (in decreasing likelyhood) ************
|
arm64-pcie-quirks-xgene.patch
|
||||||
|
|
||||||
* defaults-acpi-video.patch
|
usb-phy-tegra-Add-38.4MHz-clock-table-entry.patch
|
||||||
* disable-i8042-check-on-apple-mac.patch
|
|
||||||
* no-pcspkr-modalias.patch
|
|
||||||
* die-floppy-die.patch
|
|
||||||
Fedora policy decisions
|
|
||||||
Turn into CONFIG_ options and upstream ?
|
|
||||||
|
|
||||||
* input-kill-stupid-messages.patch
|
ARM-tegra-usb-no-reset.patch
|
||||||
* silence-fbcon-logo.patch
|
|
||||||
* silence-noise.patch
|
|
||||||
Fedora local 'hush' patches. (TODO: push more upstream)
|
|
||||||
|
|
||||||
* makefile-after_link.patch
|
bcm283x-upstream-fixes.patch
|
||||||
Rolandware that is used by the debuginfo generation.
|
|
||||||
Possibly upstreamable ?
|
|
||||||
|
|
||||||
* serial-460800.patch
|
lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch
|
||||||
Probably not upstreamable.
|
|
||||||
http://marc.theaimsgroup.com/?l=linux-kernel&m=112687270832687&w=2
|
|
||||||
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=126403
|
|
||||||
http://lkml.org/lkml/2006/8/2/208
|
|
||||||
|
|
||||||
********************************************************************************
|
input-kill-stupid-messages.patch
|
||||||
|
|
||||||
'MUSTARD' patches. Fedora local patches that are very unlikely to go upstream.
|
die-floppy-die.patch
|
||||||
|
|
||||||
* crash-driver.patch
|
no-pcspkr-modalias.patch
|
||||||
Unlikely to go upstream.
|
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=492803
|
silence-fbcon-logo.patch
|
||||||
|
|
||||||
|
Kbuild-Add-an-option-to-enable-GCC-VTA.patch
|
||||||
|
|
||||||
|
crash-driver.patch
|
||||||
|
|
||||||
|
#Secure boot patches
|
||||||
|
Add-secure_modules-call.patch
|
||||||
|
PCI-Lock-down-BAR-access-when-module-security-is-ena.patch
|
||||||
|
x86-Lock-down-IO-port-access-when-module-security-is.patch
|
||||||
|
ACPI-Limit-access-to-custom_method.patch
|
||||||
|
asus-wmi-Restrict-debugfs-interface-when-module-load.patch
|
||||||
|
Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch
|
||||||
|
acpi-Ignore-acpi_rsdp-kernel-parameter-when-module-l.patch
|
||||||
|
kexec-Disable-at-runtime-if-the-kernel-enforces-modu.patch
|
||||||
|
x86-Restrict-MSR-access-when-module-loading-is-restr.patch
|
||||||
|
Add-option-to-automatically-enforce-module-signature.patch
|
||||||
|
efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch
|
||||||
|
efi-Add-EFI_SECURE_BOOT-bit.patch
|
||||||
|
hibernate-Disable-in-a-signed-modules-environment.patch
|
||||||
|
Add-EFI-signature-data-types.patch
|
||||||
|
Add-an-EFI-signature-blob-parser-and-key-loader.patch
|
||||||
|
KEYS-Add-a-system-blacklist-keyring.patch
|
||||||
|
MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
|
||||||
|
MODSIGN-Support-not-importing-certs-from-db.patch
|
||||||
|
Add-sysrq-option-to-disable-secure-boot-mode.patch
|
||||||
|
kexec-uefi-copy-secure_boot-flag-in-boot-params.patch
|
||||||
|
|
||||||
|
drm-i915-hush-check-crtc-state.patch
|
||||||
|
|
||||||
|
disable-i8042-check-on-apple-mac.patch
|
||||||
|
|
||||||
|
lis3-improve-handling-of-null-rate.patch
|
||||||
|
|
||||||
|
scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
|
||||||
|
|
||||||
|
criu-no-expert.patch
|
||||||
|
|
||||||
|
ath9k-rx-dma-stop-check.patch
|
||||||
|
|
||||||
|
xen-pciback-Don-t-disable-PCI_COMMAND-on-PCI-device-.patch
|
||||||
|
|
||||||
|
Input-synaptics-pin-3-touches-when-the-firmware-repo.patch
|
||||||
|
|
||||||
|
firmware-Drop-WARN-from-usermodehelper_read_trylock-.patch
|
||||||
|
|
||||||
|
drm-i915-turn-off-wc-mmaps.patch
|
||||||
|
|
||||||
********************************************************************************
|
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
From 7a2e67bfa5316e267e782477ec880e2464fd682a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
Date: Sun, 11 Feb 2018 21:28:41 +0000
|
||||||
|
Subject: [PATCH] crypto: sunxi-ss: Add MODULE_ALIAS to sun4i-ss
|
||||||
|
|
||||||
|
The MODULE_ALIAS is required to enable the sun4i-ss driver to load
|
||||||
|
automatically when built at a module. Tested on a Cubietruck.
|
||||||
|
|
||||||
|
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
|
||||||
|
---
|
||||||
|
drivers/crypto/sunxi-ss/sun4i-ss-core.c | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-core.c b/drivers/crypto/sunxi-ss/sun4i-ss-core.c
|
||||||
|
index 1547cbe13dc2..a81d89b3b7d8 100644
|
||||||
|
--- a/drivers/crypto/sunxi-ss/sun4i-ss-core.c
|
||||||
|
+++ b/drivers/crypto/sunxi-ss/sun4i-ss-core.c
|
||||||
|
@@ -451,6 +451,7 @@ static struct platform_driver sun4i_ss_driver = {
|
||||||
|
|
||||||
|
module_platform_driver(sun4i_ss_driver);
|
||||||
|
|
||||||
|
+MODULE_ALIAS("platform:sun4i-ss");
|
||||||
|
MODULE_DESCRIPTION("Allwinner Security System cryptographic accelerator");
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_AUTHOR("Corentin LABBE <clabbe.montjoie@gmail.com>");
|
||||||
|
--
|
||||||
|
2.14.3
|
||||||
|
|
|
@ -1,902 +0,0 @@
|
||||||
From e9e601215d294d473a593641b1ecfd1fa4586a90 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Peter Robinson <pbrobinson@gmail.com>
|
|
||||||
Date: Thu, 6 Apr 2017 13:52:54 +0100
|
|
||||||
Subject: [PATCH 1/4] [RFC,v2,1/4] ARM: dts: imx6qdl: add HummingBoard2 boards
|
|
||||||
|
|
||||||
From: Jon Nettleton <jon@solid-run.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/imx6dl-hummingboard2.dts | 52 +++
|
|
||||||
arch/arm/boot/dts/imx6q-hummingboard2.dts | 60 +++
|
|
||||||
arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi | 543 +++++++++++++++++++++++++++
|
|
||||||
4 files changed, 657 insertions(+)
|
|
||||||
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/imx6qdl-hummingboard2.dtsi
|
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
|
||||||
index 011808490fed..ccdff6650541 100644
|
|
||||||
--- a/arch/arm/boot/dts/Makefile
|
|
||||||
+++ b/arch/arm/boot/dts/Makefile
|
|
||||||
@@ -353,6 +353,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
|
|
||||||
imx6dl-gw5903.dtb \
|
|
||||||
imx6dl-gw5904.dtb \
|
|
||||||
imx6dl-hummingboard.dtb \
|
|
||||||
+ imx6dl-hummingboard2.dtb \
|
|
||||||
imx6dl-icore.dtb \
|
|
||||||
imx6dl-icore-rqs.dtb \
|
|
||||||
imx6dl-nit6xlite.dtb \
|
|
||||||
@@ -397,6 +398,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
|
|
||||||
imx6q-gw5904.dtb \
|
|
||||||
imx6q-h100.dtb \
|
|
||||||
imx6q-hummingboard.dtb \
|
|
||||||
+ imx6q-hummingboard2.dtb \
|
|
||||||
imx6q-icore.dtb \
|
|
||||||
imx6q-icore-ofcap10.dtb \
|
|
||||||
imx6q-icore-ofcap12.dtb \
|
|
||||||
diff --git a/arch/arm/boot/dts/imx6dl-hummingboard2.dts b/arch/arm/boot/dts/imx6dl-hummingboard2.dts
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..990b5050de5b
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm/boot/dts/imx6dl-hummingboard2.dts
|
|
||||||
@@ -0,0 +1,52 @@
|
|
||||||
+/*
|
|
||||||
+ * Device Tree file for SolidRun HummingBoard2
|
|
||||||
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
|
|
||||||
+ * Based on work by Russell King
|
|
||||||
+ *
|
|
||||||
+ * 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.
|
|
||||||
+ *
|
|
||||||
+ * 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 , 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 "imx6dl.dtsi"
|
|
||||||
+#include "imx6qdl-hummingboard2.dtsi"
|
|
||||||
+
|
|
||||||
+/ {
|
|
||||||
+ model = "SolidRun HummingBoard2 Solo/DualLite";
|
|
||||||
+ compatible = "solidrun,hummingboard2/dl", "fsl,imx6dl";
|
|
||||||
+};
|
|
||||||
diff --git a/arch/arm/boot/dts/imx6q-hummingboard2.dts b/arch/arm/boot/dts/imx6q-hummingboard2.dts
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..f5eec9163bb8
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm/boot/dts/imx6q-hummingboard2.dts
|
|
||||||
@@ -0,0 +1,60 @@
|
|
||||||
+/*
|
|
||||||
+ * Device Tree file for SolidRun HummingBoard2
|
|
||||||
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
|
|
||||||
+ * Based on work by Russell King
|
|
||||||
+ *
|
|
||||||
+ * 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.
|
|
||||||
+ *
|
|
||||||
+ * 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 , 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 "imx6q.dtsi"
|
|
||||||
+#include "imx6qdl-hummingboard2.dtsi"
|
|
||||||
+
|
|
||||||
+/ {
|
|
||||||
+ model = "SolidRun HummingBoard2 Dual/Quad";
|
|
||||||
+ compatible = "solidrun,hummingboard2/q", "fsl,imx6q";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&sata {
|
|
||||||
+ status = "okay";
|
|
||||||
+ fsl,transmit-level-mV = <1104>;
|
|
||||||
+ fsl,transmit-boost-mdB = <0>;
|
|
||||||
+ fsl,transmit-atten-16ths = <9>;
|
|
||||||
+ fsl,no-spread-spectrum;
|
|
||||||
+};
|
|
||||||
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..11b63f6f2b89
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/arch/arm/boot/dts/imx6qdl-hummingboard2.dtsi
|
|
||||||
@@ -0,0 +1,543 @@
|
|
||||||
+/*
|
|
||||||
+ * Device Tree file for SolidRun HummingBoard2
|
|
||||||
+ * Copyright (C) 2015 Rabeeh Khoury <rabeeh@solid-run.com>
|
|
||||||
+ *
|
|
||||||
+ * 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.
|
|
||||||
+ *
|
|
||||||
+ * 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.
|
|
||||||
+ */
|
|
||||||
+#include "imx6qdl-microsom.dtsi"
|
|
||||||
+#include "imx6qdl-microsom-ar8035.dtsi"
|
|
||||||
+
|
|
||||||
+/ {
|
|
||||||
+ chosen {
|
|
||||||
+ stdout-path = &uart1;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ ir_recv: ir-receiver {
|
|
||||||
+ compatible = "gpio-ir-receiver";
|
|
||||||
+ gpios = <&gpio7 9 1>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_gpio7_9>;
|
|
||||||
+ 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";
|
|
||||||
+ regulator-min-microvolt = <3300000>;
|
|
||||||
+ regulator-max-microvolt = <3300000>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ reg_1p8v: regulator-1p8v {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ regulator-name = "1P8V";
|
|
||||||
+ regulator-min-microvolt = <1800000>;
|
|
||||||
+ regulator-max-microvolt = <1800000>;
|
|
||||||
+ regulator-always-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ reg_usbh1_vbus: regulator-usb-h1-vbus {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ enable-active-high;
|
|
||||||
+ gpio = <&gpio1 0 0>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh1_vbus>;
|
|
||||||
+ regulator-name = "usb_h1_vbus";
|
|
||||||
+ regulator-min-microvolt = <5000000>;
|
|
||||||
+ regulator-max-microvolt = <5000000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ reg_usbotg_vbus: regulator-usb-otg-vbus {
|
|
||||||
+ compatible = "regulator-fixed";
|
|
||||||
+ enable-active-high;
|
|
||||||
+ gpio = <&gpio3 22 0>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbotg_vbus>;
|
|
||||||
+ regulator-name = "usb_otg_vbus";
|
|
||||||
+ regulator-min-microvolt = <5000000>;
|
|
||||||
+ regulator-max-microvolt = <5000000>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ reg_usbh2_vbus: regulator-usb-h2-vbus {
|
|
||||||
+ compatible = "regulator-gpio";
|
|
||||||
+ enable-active-high;
|
|
||||||
+ enable-gpio = <&gpio2 13 0>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh2_vbus>;
|
|
||||||
+ regulator-name = "usb_h2_vbus";
|
|
||||||
+ regulator-min-microvolt = <5000000>;
|
|
||||||
+ regulator-max-microvolt = <5000000>;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ reg_usbh3_vbus: regulator-usb-h3-vbus {
|
|
||||||
+ compatible = "regulator-gpio";
|
|
||||||
+ enable-active-high;
|
|
||||||
+ enable-gpio = <&gpio7 10 0>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbh3_vbus>;
|
|
||||||
+ regulator-name = "usb_h3_vbus";
|
|
||||||
+ regulator-min-microvolt = <5000000>;
|
|
||||||
+ regulator-max-microvolt = <5000000>;
|
|
||||||
+ regulator-boot-on;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ sound-sgtl5000 {
|
|
||||||
+ audio-codec = <&sgtl5000>;
|
|
||||||
+ audio-routing =
|
|
||||||
+ "MIC_IN", "Mic Jack",
|
|
||||||
+ "Mic Jack", "Mic Bias",
|
|
||||||
+ "Headphone Jack", "HP_OUT";
|
|
||||||
+ compatible = "fsl,imx-audio-sgtl5000";
|
|
||||||
+ model = "On-board Codec";
|
|
||||||
+ mux-ext-port = <5>;
|
|
||||||
+ mux-int-port = <1>;
|
|
||||||
+ ssi-controller = <&ssi1>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&audmux {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&ecspi2 {
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_ecspi2>;
|
|
||||||
+ cs-gpios = <&gpio2 26 0>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&hdmi {
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_hdmi>;
|
|
||||||
+ ddc-i2c-bus = <&i2c2>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c1 {
|
|
||||||
+ clock-frequency = <100000>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_i2c1>;
|
|
||||||
+ status = "okay";
|
|
||||||
+
|
|
||||||
+ pcf8523: rtc@68 {
|
|
||||||
+ compatible = "nxp,pcf8523";
|
|
||||||
+ reg = <0x68>;
|
|
||||||
+ nxp,12p5_pf;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ sgtl5000: codec@0a {
|
|
||||||
+ clocks = <&clks IMX6QDL_CLK_CKO>;
|
|
||||||
+ compatible = "fsl,sgtl5000";
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_sgtl5000>;
|
|
||||||
+ reg = <0x0a>;
|
|
||||||
+ VDDA-supply = <®_3p3v>;
|
|
||||||
+ VDDIO-supply = <®_3p3v>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c2 {
|
|
||||||
+ clock-frequency = <100000>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_i2c2>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&i2c3 {
|
|
||||||
+ clock-frequency = <100000>;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_i2c3>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&iomuxc {
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hog>;
|
|
||||||
+
|
|
||||||
+ hummingboard2 {
|
|
||||||
+ pinctrl_hog: hoggrp {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ /*
|
|
||||||
+ * 36 pin headers GPIO description. The pins
|
|
||||||
+ * numbering as following -
|
|
||||||
+ *
|
|
||||||
+ * 3.2v 5v 74 75
|
|
||||||
+ * 73 72 71 70
|
|
||||||
+ * 69 68 67 66
|
|
||||||
+ *
|
|
||||||
+ * 77 78 79 76
|
|
||||||
+ * 65 64 61 60
|
|
||||||
+ * 53 52 51 50
|
|
||||||
+ * 49 48 166 132
|
|
||||||
+ * 95 94 90 91
|
|
||||||
+ * GND 54 24 204
|
|
||||||
+ *
|
|
||||||
+ * The GPIO numbers can be extracted using
|
|
||||||
+ * signal name from below.
|
|
||||||
+ * Example -
|
|
||||||
+ * MX6QDL_PAD_EIM_DA10__GPIO3_IO10 is
|
|
||||||
+ * GPIO(3,10) which is (3-1)*32+10 = gpio 74
|
|
||||||
+ *
|
|
||||||
+ * i.e. The mapping of GPIO(X,Y) to Linux gpio
|
|
||||||
+ * number is : gpio number = (X-1) * 32 + Y
|
|
||||||
+ */
|
|
||||||
+ /* DI1_PIN15 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA10__GPIO3_IO10 0x400130b1
|
|
||||||
+ /* DI1_PIN02 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA11__GPIO3_IO11 0x400130b1
|
|
||||||
+ /* DISP1_DATA00 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA9__GPIO3_IO09 0x400130b1
|
|
||||||
+ /* DISP1_DATA01 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA8__GPIO3_IO08 0x400130b1
|
|
||||||
+ /* DISP1_DATA02 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA7__GPIO3_IO07 0x400130b1
|
|
||||||
+ /* DISP1_DATA03 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA6__GPIO3_IO06 0x400130b1
|
|
||||||
+ /* DISP1_DATA04 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA5__GPIO3_IO05 0x400130b1
|
|
||||||
+ /* DISP1_DATA05 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA4__GPIO3_IO04 0x400130b1
|
|
||||||
+ /* DISP1_DATA06 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA3__GPIO3_IO03 0x400130b1
|
|
||||||
+ /* DISP1_DATA07 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA2__GPIO3_IO02 0x400130b1
|
|
||||||
+ /* DI1_D0_CS */
|
|
||||||
+ MX6QDL_PAD_EIM_DA13__GPIO3_IO13 0x400130b1
|
|
||||||
+ /* DI1_D1_CS */
|
|
||||||
+ MX6QDL_PAD_EIM_DA14__GPIO3_IO14 0x400130b1
|
|
||||||
+ /* DI1_PIN01 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA15__GPIO3_IO15 0x400130b1
|
|
||||||
+ /* DI1_PIN03 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA12__GPIO3_IO12 0x400130b1
|
|
||||||
+ /* DISP1_DATA08 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA1__GPIO3_IO01 0x400130b1
|
|
||||||
+ /* DISP1_DATA09 */
|
|
||||||
+ MX6QDL_PAD_EIM_DA0__GPIO3_IO00 0x400130b1
|
|
||||||
+ /* DISP1_DATA10 */
|
|
||||||
+ MX6QDL_PAD_EIM_EB1__GPIO2_IO29 0x400130b1
|
|
||||||
+ /* DISP1_DATA11 */
|
|
||||||
+ MX6QDL_PAD_EIM_EB0__GPIO2_IO28 0x400130b1
|
|
||||||
+ /* DISP1_DATA12 */
|
|
||||||
+ MX6QDL_PAD_EIM_A17__GPIO2_IO21 0x400130b1
|
|
||||||
+ /* DISP1_DATA13 */
|
|
||||||
+ MX6QDL_PAD_EIM_A18__GPIO2_IO20 0x400130b1
|
|
||||||
+ /* DISP1_DATA14 */
|
|
||||||
+ MX6QDL_PAD_EIM_A19__GPIO2_IO19 0x400130b1
|
|
||||||
+ /* DISP1_DATA15 */
|
|
||||||
+ MX6QDL_PAD_EIM_A20__GPIO2_IO18 0x400130b1
|
|
||||||
+ /* DISP1_DATA16 */
|
|
||||||
+ MX6QDL_PAD_EIM_A21__GPIO2_IO17 0x400130b1
|
|
||||||
+ /* DISP1_DATA17 */
|
|
||||||
+ MX6QDL_PAD_EIM_A22__GPIO2_IO16 0x400130b1
|
|
||||||
+ /* DISP1_DATA18 */
|
|
||||||
+ MX6QDL_PAD_EIM_A23__GPIO6_IO06 0x400130b1
|
|
||||||
+ /* DISP1_DATA19 */
|
|
||||||
+ MX6QDL_PAD_EIM_A24__GPIO5_IO04 0x400130b1
|
|
||||||
+ /* DISP1_DATA20 */
|
|
||||||
+ MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x400130b1
|
|
||||||
+ /* DISP1_DATA21 */
|
|
||||||
+ MX6QDL_PAD_EIM_D30__GPIO3_IO30 0x400130b1
|
|
||||||
+ /* DISP1_DATA22 */
|
|
||||||
+ MX6QDL_PAD_EIM_D26__GPIO3_IO26 0x400130b1
|
|
||||||
+ /* DISP1_DATA23 */
|
|
||||||
+ MX6QDL_PAD_EIM_D27__GPIO3_IO27 0x400130b1
|
|
||||||
+ /* DI1_DISP_CLK */
|
|
||||||
+ MX6QDL_PAD_EIM_A16__GPIO2_IO22 0x400130b1
|
|
||||||
+ /* SPDIF_IN */
|
|
||||||
+ MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24 0x400130b1
|
|
||||||
+ /* SPDIF_OUT */
|
|
||||||
+ MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x400130b1
|
|
||||||
+
|
|
||||||
+ /* MikroBUS GPIO pin number 10 */
|
|
||||||
+ MX6QDL_PAD_EIM_LBA__GPIO2_IO27 0x400130b1
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ 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 {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_SD4_CMD__GPIO7_IO09 0x80000000
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_hdmi: hummingboard2-hdmi {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_i2c1: hummingboard2-i2c1 {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
|
|
||||||
+ MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_i2c2: hummingboard2-i2c2 {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
|
|
||||||
+ MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_i2c3: hummingboard2-i2c3 {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
|
|
||||||
+ MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_mipi: hummingboard2_mipi {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_SD4_DAT2__GPIO2_IO10 0x4001b8b1
|
|
||||||
+ MX6QDL_PAD_KEY_COL4__GPIO4_IO14 0x4001b8b1
|
|
||||||
+ MX6QDL_PAD_NANDF_CS2__CCM_CLKO2 0x130b0
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_pcie_reset: hummingboard2-pcie-reset {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_SD4_DAT3__GPIO2_IO11 0x1b0b1
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_pwm1: pwm1grp {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_DISP0_DAT8__PWM1_OUT 0x1b0b1
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_sgtl5000: hummingboard2-sgtl5000 {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0
|
|
||||||
+ MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0
|
|
||||||
+ MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0
|
|
||||||
+ MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0
|
|
||||||
+ MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usbh1_vbus: hummingboard2-usbh1-vbus {
|
|
||||||
+ fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usbh2_vbus: hummingboard2-usbh2-vbus {
|
|
||||||
+ fsl,pins = <MX6QDL_PAD_SD4_DAT5__GPIO2_IO13 0x1b0b0>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usbh3_vbus: hummingboard2-usbh3-vbus {
|
|
||||||
+ fsl,pins = <MX6QDL_PAD_SD4_CLK__GPIO7_IO10 0x1b0b0>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usbotg_id: hummingboard2-usbotg-id {
|
|
||||||
+ /*
|
|
||||||
+ * Similar to pinctrl_usbotg_2, but we want it
|
|
||||||
+ * pulled down for a fixed host connection.
|
|
||||||
+ */
|
|
||||||
+ fsl,pins = <MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x13059>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usbotg_vbus: hummingboard2-usbotg-vbus {
|
|
||||||
+ fsl,pins = <MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b0>;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usdhc2_aux: hummingboard2-usdhc2-aux {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x13071
|
|
||||||
+ MX6QDL_PAD_KEY_ROW1__SD2_VSELECT 0x1b071
|
|
||||||
+ MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usdhc2: hummingboard2-usdhc2 {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_SD2_CMD__SD2_CMD 0x17059
|
|
||||||
+ MX6QDL_PAD_SD2_CLK__SD2_CLK 0x10059
|
|
||||||
+ MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
|
|
||||||
+ MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
|
|
||||||
+ MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
|
|
||||||
+ MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usdhc2_100mhz: hummingboard2-usdhc2-100mhz {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_SD2_CMD__SD2_CMD 0x170b9
|
|
||||||
+ MX6QDL_PAD_SD2_CLK__SD2_CLK 0x100b9
|
|
||||||
+ MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170b9
|
|
||||||
+ MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170b9
|
|
||||||
+ MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170b9
|
|
||||||
+ MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x130b9
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usdhc2_200mhz: hummingboard2-usdhc2-200mhz {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_SD2_CMD__SD2_CMD 0x170f9
|
|
||||||
+ MX6QDL_PAD_SD2_CLK__SD2_CLK 0x100f9
|
|
||||||
+ MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170f9
|
|
||||||
+ MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170f9
|
|
||||||
+ MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170f9
|
|
||||||
+ MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x130f9
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_usdhc3: hummingboard2-usdhc3 {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
|
|
||||||
+ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_DAT4__SD3_DATA4 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_DAT5__SD3_DATA5 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_DAT6__SD3_DATA6 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_DAT7__SD3_DATA7 0x17059
|
|
||||||
+ MX6QDL_PAD_SD3_RST__SD3_RESET 0x17059
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ pinctrl_hummingboard2_uart3: hummingboard2-uart3 {
|
|
||||||
+ fsl,pins = <
|
|
||||||
+ MX6QDL_PAD_EIM_D25__UART3_TX_DATA 0x1b0b1
|
|
||||||
+ MX6QDL_PAD_EIM_D24__UART3_RX_DATA 0x40013000
|
|
||||||
+ >;
|
|
||||||
+ };
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&ldb {
|
|
||||||
+ status = "disabled";
|
|
||||||
+
|
|
||||||
+ lvds-channel@0 {
|
|
||||||
+ fsl,data-mapping = "spwg";
|
|
||||||
+ fsl,data-width = <18>;
|
|
||||||
+ };
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pcie {
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_pcie_reset>;
|
|
||||||
+ reset-gpio = <&gpio2 11 0>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pwm1 {
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_pwm1>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pwm3 {
|
|
||||||
+ status = "disabled";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&pwm4 {
|
|
||||||
+ status = "disabled";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&ssi1 {
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&usbh1 {
|
|
||||||
+ disable-over-current;
|
|
||||||
+ vbus-supply = <®_usbh1_vbus>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&usbotg {
|
|
||||||
+ disable-over-current;
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_usbotg_id>;
|
|
||||||
+ vbus-supply = <®_usbotg_vbus>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&usdhc2 {
|
|
||||||
+ pinctrl-names = "default", "state_100mhz", "state_200mhz";
|
|
||||||
+ pinctrl-0 = <
|
|
||||||
+ &pinctrl_hummingboard2_usdhc2_aux
|
|
||||||
+ &pinctrl_hummingboard2_usdhc2
|
|
||||||
+ >;
|
|
||||||
+ pinctrl-1 = <
|
|
||||||
+ &pinctrl_hummingboard2_usdhc2_aux
|
|
||||||
+ &pinctrl_hummingboard2_usdhc2_100mhz
|
|
||||||
+ >;
|
|
||||||
+ pinctrl-2 = <
|
|
||||||
+ &pinctrl_hummingboard2_usdhc2_aux
|
|
||||||
+ &pinctrl_hummingboard2_usdhc2_200mhz
|
|
||||||
+ >;
|
|
||||||
+ mmc-pwrseq = <&usdhc2_pwrseq>;
|
|
||||||
+ cd-gpios = <&gpio1 4 0>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&usdhc3 {
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <
|
|
||||||
+ &pinctrl_hummingboard2_usdhc3
|
|
||||||
+ >;
|
|
||||||
+ vmmc-supply = <®_3p3v>;
|
|
||||||
+ vqmmc-supply = <®_3p3v>;
|
|
||||||
+ bus-width = <8>;
|
|
||||||
+ non-removable;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+&uart3 {
|
|
||||||
+ pinctrl-names = "default";
|
|
||||||
+ pinctrl-0 = <&pinctrl_hummingboard2_uart3>;
|
|
||||||
+ status = "okay";
|
|
||||||
+};
|
|
||||||
--
|
|
||||||
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
|
|
||||||
|
|
|
@ -1,146 +0,0 @@
|
||||||
From patchwork Mon Jan 8 15:44:19 2018
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
Subject: [v2] mmc: sdhci_f_sdh30: add ACPI support
|
|
||||||
From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
|
||||||
X-Patchwork-Id: 10149775
|
|
||||||
Message-Id: <20180108154419.2821-1-ard.biesheuvel@linaro.org>
|
|
||||||
To: linux-mmc@vger.kernel.org
|
|
||||||
Cc: adrian.hunter@intel.com, ulf.hansson@linaro.org,
|
|
||||||
Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
|
||||||
Date: Mon, 8 Jan 2018 15:44:19 +0000
|
|
||||||
|
|
||||||
The Fujitsu SDH30 SDHCI controller may be described as a SCX0002 ACPI
|
|
||||||
device on ACPI platforms incorporating the Socionext SynQuacer SoC.
|
|
||||||
|
|
||||||
Given that mmc_of_parse() has already been made ACPI/DT agnostic,
|
|
||||||
making the SDH30 driver ACPI capable is actually rather simple:
|
|
||||||
all we need to do is make the call to sdhci_get_of_property() [which
|
|
||||||
does not set any properties we care about] and the clock handling
|
|
||||||
dependent on whether we are dealing with a DT device, and exposing
|
|
||||||
the ACPI id via the platform_driver struct and the module metadata.
|
|
||||||
|
|
||||||
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
|
||||||
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
|
|
||||||
---
|
|
||||||
v2: make OF optional now that ACPI is supported
|
|
||||||
drop dev_of_node() check when disabling the clocks - those routines
|
|
||||||
tolerate NULL pointers so there's no need
|
|
||||||
|
|
||||||
drivers/mmc/host/Kconfig | 2 +-
|
|
||||||
drivers/mmc/host/sdhci_f_sdh30.c | 52 +++++++++++++-------
|
|
||||||
2 files changed, 35 insertions(+), 19 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
|
|
||||||
index 567028c9219a..07ed947ed10b 100644
|
|
||||||
--- a/drivers/mmc/host/Kconfig
|
|
||||||
+++ b/drivers/mmc/host/Kconfig
|
|
||||||
@@ -320,7 +320,7 @@ config MMC_SDHCI_BCM_KONA
|
|
||||||
config MMC_SDHCI_F_SDH30
|
|
||||||
tristate "SDHCI support for Fujitsu Semiconductor F_SDH30"
|
|
||||||
depends on MMC_SDHCI_PLTFM
|
|
||||||
- depends on OF
|
|
||||||
+ depends on OF || ACPI
|
|
||||||
help
|
|
||||||
This selects the Secure Digital Host Controller Interface (SDHCI)
|
|
||||||
Needed by some Fujitsu SoC for MMC / SD / SDIO support.
|
|
||||||
diff --git a/drivers/mmc/host/sdhci_f_sdh30.c b/drivers/mmc/host/sdhci_f_sdh30.c
|
|
||||||
index 04ca0d33a521..485f7591fae4 100644
|
|
||||||
--- a/drivers/mmc/host/sdhci_f_sdh30.c
|
|
||||||
+++ b/drivers/mmc/host/sdhci_f_sdh30.c
|
|
||||||
@@ -10,9 +10,11 @@
|
|
||||||
* the Free Software Foundation, version 2 of the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
+#include <linux/acpi.h>
|
|
||||||
#include <linux/err.h>
|
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/module.h>
|
|
||||||
+#include <linux/of.h>
|
|
||||||
#include <linux/property.h>
|
|
||||||
#include <linux/clk.h>
|
|
||||||
|
|
||||||
@@ -146,7 +148,6 @@ static int sdhci_f_sdh30_probe(struct platform_device *pdev)
|
|
||||||
|
|
||||||
platform_set_drvdata(pdev, host);
|
|
||||||
|
|
||||||
- sdhci_get_of_property(pdev);
|
|
||||||
host->hw_name = "f_sdh30";
|
|
||||||
host->ops = &sdhci_f_sdh30_ops;
|
|
||||||
host->irq = irq;
|
|
||||||
@@ -158,25 +159,29 @@ static int sdhci_f_sdh30_probe(struct platform_device *pdev)
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
|
|
||||||
- priv->clk_iface = devm_clk_get(&pdev->dev, "iface");
|
|
||||||
- if (IS_ERR(priv->clk_iface)) {
|
|
||||||
- ret = PTR_ERR(priv->clk_iface);
|
|
||||||
- goto err;
|
|
||||||
- }
|
|
||||||
+ if (dev_of_node(dev)) {
|
|
||||||
+ sdhci_get_of_property(pdev);
|
|
||||||
|
|
||||||
- ret = clk_prepare_enable(priv->clk_iface);
|
|
||||||
- if (ret)
|
|
||||||
- goto err;
|
|
||||||
+ priv->clk_iface = devm_clk_get(&pdev->dev, "iface");
|
|
||||||
+ if (IS_ERR(priv->clk_iface)) {
|
|
||||||
+ ret = PTR_ERR(priv->clk_iface);
|
|
||||||
+ goto err;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- priv->clk = devm_clk_get(&pdev->dev, "core");
|
|
||||||
- if (IS_ERR(priv->clk)) {
|
|
||||||
- ret = PTR_ERR(priv->clk);
|
|
||||||
- goto err_clk;
|
|
||||||
- }
|
|
||||||
+ ret = clk_prepare_enable(priv->clk_iface);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto err;
|
|
||||||
|
|
||||||
- ret = clk_prepare_enable(priv->clk);
|
|
||||||
- if (ret)
|
|
||||||
- goto err_clk;
|
|
||||||
+ priv->clk = devm_clk_get(&pdev->dev, "core");
|
|
||||||
+ if (IS_ERR(priv->clk)) {
|
|
||||||
+ ret = PTR_ERR(priv->clk);
|
|
||||||
+ goto err_clk;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ret = clk_prepare_enable(priv->clk);
|
|
||||||
+ if (ret)
|
|
||||||
+ goto err_clk;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
/* init vendor specific regs */
|
|
||||||
ctrl = sdhci_readw(host, F_SDH30_AHB_CONFIG);
|
|
||||||
@@ -226,16 +231,27 @@ static int sdhci_f_sdh30_remove(struct platform_device *pdev)
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef CONFIG_OF
|
|
||||||
static const struct of_device_id f_sdh30_dt_ids[] = {
|
|
||||||
{ .compatible = "fujitsu,mb86s70-sdhci-3.0" },
|
|
||||||
{ /* sentinel */ }
|
|
||||||
};
|
|
||||||
MODULE_DEVICE_TABLE(of, f_sdh30_dt_ids);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#ifdef CONFIG_ACPI
|
|
||||||
+static const struct acpi_device_id f_sdh30_acpi_ids[] = {
|
|
||||||
+ { "SCX0002" },
|
|
||||||
+ { /* sentinel */ }
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(acpi, f_sdh30_acpi_ids);
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
static struct platform_driver sdhci_f_sdh30_driver = {
|
|
||||||
.driver = {
|
|
||||||
.name = "f_sdh30",
|
|
||||||
- .of_match_table = f_sdh30_dt_ids,
|
|
||||||
+ .of_match_table = of_match_ptr(f_sdh30_dt_ids),
|
|
||||||
+ .acpi_match_table = ACPI_PTR(f_sdh30_acpi_ids),
|
|
||||||
.pm = &sdhci_pltfm_pmops,
|
|
||||||
},
|
|
||||||
.probe = sdhci_f_sdh30_probe,
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_ACPI_SPCR_TABLE=y
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_ATH10K_SPECTRAL is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_ATH9K_COMMON_SPECTRAL is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_BLK_DEV_NULL_BLK_FAULT_INJECTION is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_BPF_KPROBE_OVERRIDE is not set
|
|
@ -1 +1 @@
|
||||||
CONFIG_BT_HCIBTUSB_AUTOSUSPEND=y
|
# CONFIG_BT_HCIBTUSB_AUTOSUSPEND is not set
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_CHELSIO_IPSEC_INLINE=y
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_CIFS_SMB_DIRECT is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_DM_UNSTRIPED=m
|
|
@ -1 +1 @@
|
||||||
# CONFIG_DRM_AMDGPU_SI is not set
|
CONFIG_DRM_AMDGPU_SI=y
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
# CONFIG_DRM_I2C_ADV7511 is not set
|
CONFIG_DRM_I2C_ADV7511=m
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
# CONFIG_DRM_I2C_ADV7511_CEC is not set
|
CONFIG_DRM_I2C_ADV7511_CEC=y
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_DVB_MMAP is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_DVB_ULE_DEBUG is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_FIND_BIT_BENCHMARK is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_GPIO_PCIE_IDIO_24 is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_HARDENED_USERCOPY_FALLBACK=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_HID_JABRA=m
|
|
@ -1 +1 @@
|
||||||
CONFIG_HW_RANDOM_TPM=m
|
CONFIG_HW_RANDOM_TPM=y
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_IIO_BUFFER_HW_CONSUMER=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_IP6_NF_MATCH_SRH=m
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_IPX_INTERN is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_LEDS_LM3692X=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_LEDS_TRIGGER_NETDEV=m
|
|
@ -1 +1 @@
|
||||||
CONFIG_LIRC=m
|
CONFIG_LIRC=y
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MELLANOX_PLATFORM=y
|
|
@ -1 +0,0 @@
|
||||||
CONFIG_MFD_RTSX_PCI=m
|
|
|
@ -1 +0,0 @@
|
||||||
CONFIG_MFD_RTSX_USB=m
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MISC_RTSX_PCI=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MISC_RTSX_USB=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MLXREG_HOTPLUG=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MMC_CQHCI=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_MT76x2E=m
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_NETDEVSIM is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_NET_DSA_LEGACY is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_NET_VENDOR_CORTINA is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_NET_VENDOR_SOCIONEXT is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_NFT_FLOW_OFFLOAD=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_NF_FLOW_TABLE=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_NF_FLOW_TABLE_INET=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_NF_FLOW_TABLE_IPV4=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_NF_FLOW_TABLE_IPV6=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_PCIE_CADENCE_HOST=y
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_PINCTRL_AXP209 is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_RAVE_SP_CORE is not set
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_RESET_HSDK_V1 is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_RUNTIME_TESTING_MENU=y
|
|
@ -1 +1 @@
|
||||||
CONFIG_SATA_MOBILE_LPM_POLICY=3
|
CONFIG_SATA_MOBILE_LPM_POLICY=0
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_SD_ADC_MODULATOR is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SENSORS_W83773G=m
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_SIOX is not set
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_SLIMBUS is not set
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SND_SOC_MAX98373=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SND_SOC_PCM186X_I2C=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SND_SOC_PCM186X_SPI=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SND_SOC_TAS6424=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SND_SOC_TLV320AIC32X4_I2C=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SND_SOC_TLV320AIC32X4_SPI=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SND_SOC_TSCS42XX=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SOUNDWIRE=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SOUNDWIRE_BUS=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_SOUNDWIRE_CADENCE=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_ST_UVIS25=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_ST_UVIS25_I2C=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_ST_UVIS25_SPI=m
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_TIMER_STATS is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_UNISYS_VISORBUS is not set
|
|
@ -1 +0,0 @@
|
||||||
# CONFIG_USB_CHIPIDEA_ULPI is not set
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_USB_XHCI_DBGCAP=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_VIRTIO_MENU=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_XILINX_VCU=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_ZOPT2201=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_ARM_ARMADA_37XX_CPUFREQ=m
|
|
@ -1 +1 @@
|
||||||
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
|
CONFIG_ARM_BIG_LITTLE_CPUFREQ=m
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_ARM_PTDUMP_DEBUGFS is not set
|
|
@ -1 +0,0 @@
|
||||||
CONFIG_CRYPTO_DEV_MV_CESA=m
|
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_DEBUG_WX=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_DRM_I2C_ADV7511=m
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_DRM_I2C_ADV7511_CEC=y
|
|
@ -0,0 +1 @@
|
||||||
|
CONFIG_DRM_PANEL_ILITEK_IL9322=m
|
|
@ -0,0 +1 @@
|
||||||
|
# CONFIG_FTWDT010_WATCHDOG is not set
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue