diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2015-03-29 03:52:46 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2015-03-29 03:52:46 +0000 |
commit | ff961adc4aaffce2156307ba4a569df5fbb58e69 (patch) | |
tree | 88a07e548071123e61c492e53614e3a24360613a | |
parent | 7a6dd701c11003018380118294b9b50579ecbb10 (diff) | |
download | linux-libre-raptor-ff961adc4aaffce2156307ba4a569df5fbb58e69.tar.gz linux-libre-raptor-ff961adc4aaffce2156307ba4a569df5fbb58e69.zip |
3.19.3-100.fc20.gnu
66 files changed, 2668 insertions, 8143 deletions
diff --git a/freed-ora/current/f20/Add-sysrq-option-to-disable-secure-boot-mode.patch b/freed-ora/current/f20/Add-sysrq-option-to-disable-secure-boot-mode.patch index 414fe6e31..67302f2a4 100644 --- a/freed-ora/current/f20/Add-sysrq-option-to-disable-secure-boot-mode.patch +++ b/freed-ora/current/f20/Add-sysrq-option-to-disable-secure-boot-mode.patch @@ -15,7 +15,7 @@ Upstream-status: Fedora mustard 7 files changed, 65 insertions(+), 10 deletions(-) diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c -index fb282ff6a802..d291d16ba257 100644 +index b40d6174242f..0ee7749bad74 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -70,6 +70,11 @@ @@ -30,7 +30,7 @@ index fb282ff6a802..d291d16ba257 100644 #include <video/edid.h> #include <asm/mtrr.h> -@@ -1268,6 +1273,37 @@ void __init i386_reserve_resources(void) +@@ -1277,6 +1282,37 @@ void __init i386_reserve_resources(void) #endif /* CONFIG_X86_32 */ @@ -215,23 +215,23 @@ index 387fa7d05c98..4b07e30b3279 100644 int unregister_sysrq_key(int key, struct sysrq_key_op *op); struct sysrq_key_op *__sysrq_get_key_op(int key); diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c -index 379650b984f8..070f29fefdc2 100644 +index 60f6bb817f70..c0a20ee0ad96 100644 --- a/kernel/debug/kdb/kdb_main.c +++ b/kernel/debug/kdb/kdb_main.c -@@ -1924,7 +1924,7 @@ static int kdb_sr(int argc, const char **argv) - if (argc != 1) +@@ -1968,7 +1968,7 @@ static int kdb_sr(int argc, const char **argv) return KDB_ARGCOUNT; + kdb_trap_printk++; -- __handle_sysrq(*argv[1], false); -+ __handle_sysrq(*argv[1], SYSRQ_FROM_KERNEL); +- __handle_sysrq(*argv[1], check_mask); ++ __handle_sysrq(*argv[1], check_mask & SYSRQ_FROM_KERNEL); kdb_trap_printk--; return 0; diff --git a/kernel/module.c b/kernel/module.c -index 866417ecc76a..d7ca95c5a349 100644 +index 6244f24abe27..b77554170d76 100644 --- a/kernel/module.c +++ b/kernel/module.c -@@ -108,9 +108,9 @@ struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */ +@@ -107,9 +107,9 @@ struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */ #ifdef CONFIG_MODULE_SIG #ifdef CONFIG_MODULE_SIG_FORCE @@ -244,5 +244,5 @@ index 866417ecc76a..d7ca95c5a349 100644 static int param_set_bool_enable_only(const char *val, const struct kernel_param *kp) -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f20/HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch b/freed-ora/current/f20/HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch deleted file mode 100644 index b4276610d..000000000 --- a/freed-ora/current/f20/HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch +++ /dev/null @@ -1,84 +0,0 @@ -From: Alan Wu <alan.c.wu@gmail.com> -Date: Mon, 3 Nov 2014 18:26:12 -0800 -Subject: [PATCH] HID: add support for MS Surface Pro 3 Type Cover - -Surface Pro 3 Type Cover that works with Ubuntu (and possibly Arch) from this thread. Both trackpad and keyboard work after compiling my own kernel. -http://ubuntuforums.org/showthread.php?t=2231207&page=2&s=44910e0c56047e4f93dfd9fea58121ef - -Also includes Jarrad Whitaker's message which sources -http://winaero.com/blog/how-to-install-linux-on-surface-pro-3/ -which he says is sourced from a Russian site - -Signed-off-by: Alan Wu <alan.c.wu@gmail.com> -Signed-off-by: Jiri Kosina <jkosina@suse.cz> ---- - drivers/hid/hid-core.c | 6 ++++++ - drivers/hid/hid-ids.h | 1 + - drivers/hid/hid-microsoft.c | 2 ++ - drivers/hid/usbhid/hid-quirks.c | 1 + - 4 files changed, 10 insertions(+) - -diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c -index 73bd9e2e42bc..e94afcc19eda 100644 ---- a/drivers/hid/hid-core.c -+++ b/drivers/hid/hid-core.c -@@ -702,6 +702,11 @@ static void hid_scan_collection(struct hid_parser *parser, unsigned type) - if (((parser->global.usage_page << 16) == HID_UP_SENSOR) && - type == HID_COLLECTION_PHYSICAL) - hid->group = HID_GROUP_SENSOR_HUB; -+ -+ if (hid->vendor == USB_VENDOR_ID_MICROSOFT && -+ hid->product == USB_DEVICE_ID_MS_TYPE_COVER_3 && -+ hid->group == HID_GROUP_MULTITOUCH) -+ hid->group = HID_GROUP_GENERIC; - } - - static int hid_scan_main(struct hid_parser *parser, struct hid_item *item) -@@ -1861,6 +1866,7 @@ static const struct hid_device_id hid_have_special_driver[] = { - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_3K) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_OFFICE_KB) }, -+ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MONTEREY, USB_DEVICE_ID_GENIUS_KB29E) }, - { HID_USB_DEVICE(USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL) }, - { HID_USB_DEVICE(USB_VENDOR_ID_NTRIG, USB_DEVICE_ID_NTRIG_TOUCH_SCREEN) }, -diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h -index e23ab8b30626..15f32c22178c 100644 ---- a/drivers/hid/hid-ids.h -+++ b/drivers/hid/hid-ids.h -@@ -648,6 +648,7 @@ - #define USB_DEVICE_ID_MS_SURFACE_PRO_2 0x0799 - #define USB_DEVICE_ID_MS_TOUCH_COVER_2 0x07a7 - #define USB_DEVICE_ID_MS_TYPE_COVER_2 0x07a9 -+#define USB_DEVICE_ID_MS_TYPE_COVER_3 0x07dc - - #define USB_VENDOR_ID_MOJO 0x8282 - #define USB_DEVICE_ID_RETRO_ADAPTER 0x3201 -diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c -index 8ba17a946f2a..cacda43f6a6f 100644 ---- a/drivers/hid/hid-microsoft.c -+++ b/drivers/hid/hid-microsoft.c -@@ -274,6 +274,8 @@ static const struct hid_device_id ms_devices[] = { - .driver_data = MS_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500), - .driver_data = MS_DUPLICATE_USAGES }, -+ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3), -+ .driver_data = MS_HIDINPUT }, - - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT), - .driver_data = MS_PRESENTER }, -diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c -index 5014bb567b29..cebfaf288bd3 100644 ---- a/drivers/hid/usbhid/hid-quirks.c -+++ b/drivers/hid/usbhid/hid-quirks.c -@@ -77,6 +77,7 @@ static const struct hid_blacklist { - { USB_VENDOR_ID_FORMOSA, USB_DEVICE_ID_FORMOSA_IR_RECEIVER, HID_QUIRK_NO_INIT_REPORTS }, - { USB_VENDOR_ID_FREESCALE, USB_DEVICE_ID_FREESCALE_MX28, HID_QUIRK_NOGET }, - { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET }, -+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3, HID_QUIRK_NO_INIT_REPORTS }, - { USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS }, - { USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS }, - { USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE, HID_QUIRK_NO_INIT_REPORTS }, --- -1.9.3 - diff --git a/freed-ora/current/f20/HID-multitouch-add-support-of-clickpads.patch b/freed-ora/current/f20/HID-multitouch-add-support-of-clickpads.patch new file mode 100644 index 000000000..97765c490 --- /dev/null +++ b/freed-ora/current/f20/HID-multitouch-add-support-of-clickpads.patch @@ -0,0 +1,50 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Fri, 6 Mar 2015 11:14:42 -0500 +Subject: [PATCH] HID: multitouch: add support of clickpads + +Touchpads that have only one button are called clickpads and should +be advertised as such by the kernel. + +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Tested-by: Jason Ekstrand <jason@jlekstrand.net> +--- + drivers/hid/hid-multitouch.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c +index 51e25b9407f2..a8e738191625 100644 +--- a/drivers/hid/hid-multitouch.c ++++ b/drivers/hid/hid-multitouch.c +@@ -115,6 +115,7 @@ struct mt_device { + __u8 touches_by_report; /* how many touches are present in one report: + * 1 means we should use a serial protocol + * > 1 means hybrid (multitouch) protocol */ ++ __u8 buttons_count; /* number of physical buttons per touchpad */ + bool serial_maybe; /* need to check for serial protocol */ + bool curvalid; /* is the current contact valid? */ + unsigned mt_flags; /* flags to pass to input-mt */ +@@ -372,6 +373,10 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi, + td->inputmode_value = MT_INPUTMODE_TOUCHPAD; + } + ++ /* count the buttons on touchpads */ ++ if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) ++ td->buttons_count++; ++ + if (usage->usage_index) + prev_usage = &field->usage[usage->usage_index - 1]; + +@@ -721,6 +726,10 @@ static void mt_touch_input_configured(struct hid_device *hdev, + if (cls->quirks & MT_QUIRK_NOT_SEEN_MEANS_UP) + td->mt_flags |= INPUT_MT_DROP_UNUSED; + ++ /* check for clickpads */ ++ if ((td->mt_flags & INPUT_MT_POINTER) && (td->buttons_count == 1)) ++ __set_bit(INPUT_PROP_BUTTONPAD, input->propbit); ++ + input_mt_init_slots(input, td->maxcontacts, td->mt_flags); + + td->mt_flags = 0; +-- +2.1.0 + diff --git a/freed-ora/current/f20/IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch b/freed-ora/current/f20/IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch new file mode 100644 index 000000000..406c3d5ef --- /dev/null +++ b/freed-ora/current/f20/IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch @@ -0,0 +1,47 @@ +From: Shachar Raindel <raindel@mellanox.com> +Date: Sun, 4 Jan 2015 18:30:32 +0200 +Subject: [PATCH] IB/core: Prevent integer overflow in ib_umem_get address + arithmetic + +Properly verify that the resulting page aligned end address is larger +than both the start address and the length of the memory area +requested. + +Both the start and length arguments for ib_umem_get are controlled by +the user. A misbehaving user can provide values which will cause an +integer overflow when calculating the page aligned end address. + +This overflow can cause also miscalculation of the number of pages +mapped, and additional logic issues. + +Issue: 470602 +Change-Id: Iee88441db454af291fc5a376009d840603398d23 +Signed-off-by: Shachar Raindel <raindel@mellanox.com> +Signed-off-by: Jack Morgenstein <jackm@mellanox.com> +Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> +--- + drivers/infiniband/core/umem.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c +index df0c4f605a21..dfa4286f98a4 100644 +--- a/drivers/infiniband/core/umem.c ++++ b/drivers/infiniband/core/umem.c +@@ -94,6 +94,14 @@ struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr, + if (dmasync) + dma_set_attr(DMA_ATTR_WRITE_BARRIER, &attrs); + ++ /* ++ * If the combination of the addr and size requested for this memory ++ * region causes an integer overflow, return error. ++ */ ++ if ((PAGE_ALIGN(addr + size) <= size) || ++ (PAGE_ALIGN(addr + size) <= addr)) ++ return ERR_PTR(-EINVAL); ++ + if (!can_do_mlock()) + return ERR_PTR(-EPERM); + +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-do-not-retrieve-the-board-id-on-old-.patch b/freed-ora/current/f20/Input-synaptics-do-not-retrieve-the-board-id-on-old-.patch new file mode 100644 index 000000000..51ba54ddc --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-do-not-retrieve-the-board-id-on-old-.patch @@ -0,0 +1,33 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Sun, 8 Mar 2015 22:33:36 -0700 +Subject: [PATCH] Input: synaptics - do not retrieve the board id on old + firmwares + +The board id capability has been added in firmware 7.5. + +Cc: stable@vger.kernel.org +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 2f42a712f3e0..2176874a41b1 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -250,6 +250,10 @@ static int synaptics_board_id(struct psmouse *psmouse) + struct synaptics_data *priv = psmouse->private; + unsigned char bid[3]; + ++ /* firmwares prior 7.5 have no board_id encoded */ ++ if (SYN_ID_FULL(priv->identity) < 0x705) ++ return 0; ++ + if (synaptics_send_cmd(psmouse, SYN_QUE_MODES, bid)) + return -1; + priv->board_id = ((bid[0] & 0xfc) << 6) | bid[1]; +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-fix-middle-button-on-Lenovo-2015-pro.patch b/freed-ora/current/f20/Input-synaptics-fix-middle-button-on-Lenovo-2015-pro.patch new file mode 100644 index 000000000..8a677de79 --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-fix-middle-button-on-Lenovo-2015-pro.patch @@ -0,0 +1,100 @@ +From: Dmitry Torokhov <dmitry.torokhov@gmail.com> +Date: Sun, 8 Mar 2015 22:30:43 -0700 +Subject: [PATCH] Input: synaptics - fix middle button on Lenovo 2015 products + +On the X1 Carbon 3rd gen (with a 2015 broadwell cpu), the physical middle +button of the trackstick (attached to the touchpad serio device, of course) +seems to get lost. + +Actually, the touchpads reports 3 extra buttons, which falls in the switch +below to the '2' case. Let's handle the case of odd numbers also, so that +the middle button finds its way back. + +Cc: stable@vger.kernel.org +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 44 ++++++++++++++++++++--------------------- + 1 file changed, 21 insertions(+), 23 deletions(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 9567a708aa64..e78cc5578527 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -658,6 +658,18 @@ static void synaptics_parse_agm(const unsigned char buf[], + priv->agm_pending = true; + } + ++static void synaptics_parse_ext_buttons(const unsigned char buf[], ++ struct synaptics_data *priv, ++ struct synaptics_hw_state *hw) ++{ ++ unsigned int ext_bits = ++ (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) + 1) >> 1; ++ unsigned int ext_mask = GENMASK(ext_bits - 1, 0); ++ ++ hw->ext_buttons = buf[4] & ext_mask; ++ hw->ext_buttons |= (buf[5] & ext_mask) << ext_bits; ++} ++ + static bool is_forcepad; + + static int synaptics_parse_hw_state(const unsigned char buf[], +@@ -744,28 +756,9 @@ static int synaptics_parse_hw_state(const unsigned char buf[], + hw->down = ((buf[0] ^ buf[3]) & 0x02) ? 1 : 0; + } + +- if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) && ++ if (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) > 0 && + ((buf[0] ^ buf[3]) & 0x02)) { +- switch (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) & ~0x01) { +- default: +- /* +- * if nExtBtn is greater than 8 it should be +- * considered invalid and treated as 0 +- */ +- break; +- case 8: +- hw->ext_buttons |= ((buf[5] & 0x08)) ? 0x80 : 0; +- hw->ext_buttons |= ((buf[4] & 0x08)) ? 0x40 : 0; +- case 6: +- hw->ext_buttons |= ((buf[5] & 0x04)) ? 0x20 : 0; +- hw->ext_buttons |= ((buf[4] & 0x04)) ? 0x10 : 0; +- case 4: +- hw->ext_buttons |= ((buf[5] & 0x02)) ? 0x08 : 0; +- hw->ext_buttons |= ((buf[4] & 0x02)) ? 0x04 : 0; +- case 2: +- hw->ext_buttons |= ((buf[5] & 0x01)) ? 0x02 : 0; +- hw->ext_buttons |= ((buf[4] & 0x01)) ? 0x01 : 0; +- } ++ synaptics_parse_ext_buttons(buf, priv, hw); + } + } else { + hw->x = (((buf[1] & 0x1f) << 8) | buf[2]); +@@ -832,6 +825,7 @@ static void synaptics_report_buttons(struct psmouse *psmouse, + { + struct input_dev *dev = psmouse->dev; + struct synaptics_data *priv = psmouse->private; ++ int ext_bits = (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) + 1) >> 1; + int i; + + input_report_key(dev, BTN_LEFT, hw->left); +@@ -845,8 +839,12 @@ static void synaptics_report_buttons(struct psmouse *psmouse, + input_report_key(dev, BTN_BACK, hw->down); + } + +- for (i = 0; i < SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap); i++) +- input_report_key(dev, BTN_0 + i, hw->ext_buttons & (1 << i)); ++ for (i = 0; i < ext_bits; i++) { ++ input_report_key(dev, BTN_0 + 2 * i, ++ hw->ext_buttons & (1 << i)); ++ input_report_key(dev, BTN_1 + 2 * i, ++ hw->ext_buttons & (1 << (i + ext_bits))); ++ } + } + + static void synaptics_report_slot(struct input_dev *dev, int slot, +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-handle-spurious-release-of-trackstic.patch b/freed-ora/current/f20/Input-synaptics-handle-spurious-release-of-trackstic.patch new file mode 100644 index 000000000..e3d3d7af0 --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-handle-spurious-release-of-trackstic.patch @@ -0,0 +1,77 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Sun, 8 Mar 2015 22:32:43 -0700 +Subject: [PATCH] Input: synaptics - handle spurious release of trackstick + buttons + +The Fimware 8.1 has a bug in which the extra buttons are only sent when the +ExtBit is 1. This should be fixed in a future FW update which should have +a bump of the minor version. + +Cc: stable@vger.kernel.org +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 33 +++++++++++++++++++++++++-------- + 1 file changed, 25 insertions(+), 8 deletions(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index e78cc5578527..2f42a712f3e0 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -820,14 +820,36 @@ static void synaptics_report_semi_mt_data(struct input_dev *dev, + } + } + +-static void synaptics_report_buttons(struct psmouse *psmouse, +- const struct synaptics_hw_state *hw) ++static void synaptics_report_ext_buttons(struct psmouse *psmouse, ++ const struct synaptics_hw_state *hw) + { + struct input_dev *dev = psmouse->dev; + struct synaptics_data *priv = psmouse->private; + int ext_bits = (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) + 1) >> 1; + int i; + ++ if (!SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap)) ++ return; ++ ++ /* Bug in FW 8.1, buttons are reported only when ExtBit is 1 */ ++ if (SYN_ID_FULL(priv->identity) == 0x801 && ++ !((psmouse->packet[0] ^ psmouse->packet[3]) & 0x02)) ++ return; ++ ++ for (i = 0; i < ext_bits; i++) { ++ input_report_key(dev, BTN_0 + 2 * i, ++ hw->ext_buttons & (1 << i)); ++ input_report_key(dev, BTN_1 + 2 * i, ++ hw->ext_buttons & (1 << (i + ext_bits))); ++ } ++} ++ ++static void synaptics_report_buttons(struct psmouse *psmouse, ++ const struct synaptics_hw_state *hw) ++{ ++ struct input_dev *dev = psmouse->dev; ++ struct synaptics_data *priv = psmouse->private; ++ + input_report_key(dev, BTN_LEFT, hw->left); + input_report_key(dev, BTN_RIGHT, hw->right); + +@@ -839,12 +861,7 @@ static void synaptics_report_buttons(struct psmouse *psmouse, + input_report_key(dev, BTN_BACK, hw->down); + } + +- for (i = 0; i < ext_bits; i++) { +- input_report_key(dev, BTN_0 + 2 * i, +- hw->ext_buttons & (1 << i)); +- input_report_key(dev, BTN_1 + 2 * i, +- hw->ext_buttons & (1 << (i + ext_bits))); +- } ++ synaptics_report_ext_buttons(psmouse, hw); + } + + static void synaptics_report_slot(struct input_dev *dev, int slot, +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-log-queried-and-quirked-dimension-va.patch b/freed-ora/current/f20/Input-synaptics-log-queried-and-quirked-dimension-va.patch new file mode 100644 index 000000000..b6f642eba --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-log-queried-and-quirked-dimension-va.patch @@ -0,0 +1,56 @@ +From: Daniel Martin <consume.noise@gmail.com> +Date: Sun, 8 Mar 2015 22:28:29 -0700 +Subject: [PATCH] Input: synaptics - log queried and quirked dimension values + +Logging the dimension values we queried and the values we use from a quirk +to overwrite can be helpful for debugging. + +This partly relates to bug: + https://bugzilla.kernel.org/show_bug.cgi?id=91541 + +Cc: stable@vger.kernel.org +Signed-off-by: Daniel Martin <consume.noise@gmail.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index b501dda75dcb..47c5dca20a60 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -362,6 +362,9 @@ static int synaptics_resolution(struct psmouse *psmouse) + } else { + priv->x_max = (resp[0] << 5) | ((resp[1] & 0x0f) << 1); + priv->y_max = (resp[2] << 5) | ((resp[1] & 0xf0) >> 3); ++ psmouse_info(psmouse, ++ "queried max coordinates: x [..%d], y [..%d]\n", ++ priv->x_max, priv->y_max); + } + } + +@@ -373,6 +376,9 @@ static int synaptics_resolution(struct psmouse *psmouse) + } else { + priv->x_min = (resp[0] << 5) | ((resp[1] & 0x0f) << 1); + priv->y_min = (resp[2] << 5) | ((resp[1] & 0xf0) >> 3); ++ psmouse_info(psmouse, ++ "queried min coordinates: x [%d..], y [%d..]\n", ++ priv->x_min, priv->y_min); + } + } + +@@ -395,6 +401,10 @@ static void synaptics_apply_quirks(struct psmouse *psmouse) + priv->x_max = min_max_pnpid_table[i].x_max; + priv->y_min = min_max_pnpid_table[i].y_min; + priv->y_max = min_max_pnpid_table[i].y_max; ++ psmouse_info(psmouse, ++ "quirked min/max coordinates: x [%d..%d], y [%d..%d]\n", ++ priv->x_min, priv->x_max, ++ priv->y_min, priv->y_max); + break; + } + } +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-query-min-dimensions-for-fw-v8.1.patch b/freed-ora/current/f20/Input-synaptics-query-min-dimensions-for-fw-v8.1.patch new file mode 100644 index 000000000..a4ecc6ef7 --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-query-min-dimensions-for-fw-v8.1.patch @@ -0,0 +1,47 @@ +From: Daniel Martin <consume.noise@gmail.com> +Date: Sun, 8 Mar 2015 22:28:40 -0700 +Subject: [PATCH] Input: synaptics - query min dimensions for fw v8.1 + +Query the min dimensions even if the check +SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 7 fails, but we know that the +firmware version 8.1 is safe. + +With that we don't need quirks for post-2013 models anymore as they expose +correct min and max dimensions. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=91541 + +Cc: stable@vger.kernel.org +Signed-off-by: Daniel Martin <consume.noise@gmail.com> + re-order the tests to check SYN_CAP_MIN_DIMENSIONS even on FW 8.1 +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 47c5dca20a60..87c37f745b92 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -368,8 +368,14 @@ static int synaptics_resolution(struct psmouse *psmouse) + } + } + +- if (SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 7 && +- SYN_CAP_MIN_DIMENSIONS(priv->ext_cap_0c)) { ++ if (SYN_CAP_MIN_DIMENSIONS(priv->ext_cap_0c) && ++ (SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 7 || ++ /* ++ * Firmware v8.1 does not report proper number of extended ++ * capabilities, but has been proven to report correct min ++ * coordinates. ++ */ ++ SYN_ID_FULL(priv->identity) == 0x801)) { + if (synaptics_send_cmd(psmouse, SYN_QUE_EXT_MIN_COORDS, resp)) { + psmouse_warn(psmouse, + "device claims to have min coordinates query, but I'm not able to read it.\n"); +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-re-route-tracksticks-buttons-on-the-.patch b/freed-ora/current/f20/Input-synaptics-re-route-tracksticks-buttons-on-the-.patch new file mode 100644 index 000000000..3054f9f9c --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-re-route-tracksticks-buttons-on-the-.patch @@ -0,0 +1,151 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Sun, 8 Mar 2015 22:35:41 -0700 +Subject: [PATCH] Input: synaptics - re-route tracksticks buttons on the Lenovo + 2015 series + +The 2015 series of the Lenovo thinkpads added back the hardware buttons on +top of the touchpad for the trackstick. + +Unfortunately, they are wired to the touchpad, and not the trackstick. +Thus, they are seen as extra buttons from the kernel point of view. + +This leads to a problem in user space because extra buttons on synaptics +devices used to be used as scroll up/down buttons. So in the end, the +experience for the user is scroll events for buttons left and right when +using the trackstick. Yay! + +Fortunately, the firmware advertises such behavior in the extended +capability $10, and so we can re-route the buttons through the pass-through +interface. + +Hallelujah-expressed-by: Peter Hutterer <peter.hutterer@who-t.net> +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 47 +++++++++++++++++++++++++++++++---------- + drivers/input/mouse/synaptics.h | 5 +++++ + 2 files changed, 41 insertions(+), 11 deletions(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 9d599eb79f17..ecc7811cbd46 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -579,18 +579,22 @@ static int synaptics_is_pt_packet(unsigned char *buf) + return (buf[0] & 0xFC) == 0x84 && (buf[3] & 0xCC) == 0xC4; + } + +-static void synaptics_pass_pt_packet(struct serio *ptport, unsigned char *packet) ++static void synaptics_pass_pt_packet(struct psmouse *psmouse, ++ struct serio *ptport, ++ unsigned char *packet) + { ++ struct synaptics_data *priv = psmouse->private; + struct psmouse *child = serio_get_drvdata(ptport); + + if (child && child->state == PSMOUSE_ACTIVATED) { +- serio_interrupt(ptport, packet[1], 0); ++ serio_interrupt(ptport, packet[1] | priv->pt_buttons, 0); + serio_interrupt(ptport, packet[4], 0); + serio_interrupt(ptport, packet[5], 0); + if (child->pktsize == 4) + serio_interrupt(ptport, packet[2], 0); +- } else ++ } else { + serio_interrupt(ptport, packet[1], 0); ++ } + } + + static void synaptics_pt_activate(struct psmouse *psmouse) +@@ -847,6 +851,7 @@ static void synaptics_report_ext_buttons(struct psmouse *psmouse, + struct input_dev *dev = psmouse->dev; + struct synaptics_data *priv = psmouse->private; + int ext_bits = (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) + 1) >> 1; ++ char buf[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + int i; + + if (!SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap)) +@@ -857,12 +862,30 @@ static void synaptics_report_ext_buttons(struct psmouse *psmouse, + !((psmouse->packet[0] ^ psmouse->packet[3]) & 0x02)) + return; + +- for (i = 0; i < ext_bits; i++) { +- input_report_key(dev, BTN_0 + 2 * i, +- hw->ext_buttons & (1 << i)); +- input_report_key(dev, BTN_1 + 2 * i, +- hw->ext_buttons & (1 << (i + ext_bits))); ++ if (!SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10)) { ++ for (i = 0; i < ext_bits; i++) { ++ input_report_key(dev, BTN_0 + 2 * i, ++ hw->ext_buttons & (1 << i)); ++ input_report_key(dev, BTN_1 + 2 * i, ++ hw->ext_buttons & (1 << (i + ext_bits))); ++ } ++ return; + } ++ ++ /* ++ * This generation of touchpads has the trackstick buttons ++ * physically wired to the touchpad. Re-route them through ++ * the pass-through interface. ++ */ ++ if (!priv->pt_port) ++ return; ++ ++ /* The trackstick expects at most 3 buttons */ ++ priv->pt_buttons = SYN_CAP_EXT_BUTTON_STICK_L(hw->ext_buttons) | ++ SYN_CAP_EXT_BUTTON_STICK_R(hw->ext_buttons) << 1 | ++ SYN_CAP_EXT_BUTTON_STICK_M(hw->ext_buttons) << 2; ++ ++ synaptics_pass_pt_packet(psmouse, priv->pt_port, buf); + } + + static void synaptics_report_buttons(struct psmouse *psmouse, +@@ -1459,7 +1482,8 @@ static psmouse_ret_t synaptics_process_byte(struct psmouse *psmouse) + if (SYN_CAP_PASS_THROUGH(priv->capabilities) && + synaptics_is_pt_packet(psmouse->packet)) { + if (priv->pt_port) +- synaptics_pass_pt_packet(priv->pt_port, psmouse->packet); ++ synaptics_pass_pt_packet(psmouse, priv->pt_port, ++ psmouse->packet); + } else + synaptics_process_packet(psmouse); + +@@ -1561,8 +1585,9 @@ static void set_input_params(struct psmouse *psmouse, + __set_bit(BTN_BACK, dev->keybit); + } + +- for (i = 0; i < SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap); i++) +- __set_bit(BTN_0 + i, dev->keybit); ++ if (!SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10)) ++ for (i = 0; i < SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap); i++) ++ __set_bit(BTN_0 + i, dev->keybit); + + __clear_bit(EV_REL, dev->evbit); + __clear_bit(REL_X, dev->relbit); +diff --git a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h +index 8d3761ce8f54..f39539c70219 100644 +--- a/drivers/input/mouse/synaptics.h ++++ b/drivers/input/mouse/synaptics.h +@@ -111,6 +111,10 @@ + #define SYN_CAP_EXT_BUTTONS_STICK(ex10) ((ex10) & 0x010000) + #define SYN_CAP_SECUREPAD(ex10) ((ex10) & 0x020000) + ++#define SYN_CAP_EXT_BUTTON_STICK_L(eb) (!!((eb) & 0x01)) ++#define SYN_CAP_EXT_BUTTON_STICK_M(eb) (!!((eb) & 0x02)) ++#define SYN_CAP_EXT_BUTTON_STICK_R(eb) (!!((eb) & 0x04)) ++ + /* synaptics modes query bits */ + #define SYN_MODE_ABSOLUTE(m) ((m) & (1 << 7)) + #define SYN_MODE_RATE(m) ((m) & (1 << 6)) +@@ -192,6 +196,7 @@ struct synaptics_data { + bool disable_gesture; /* disable gestures */ + + struct serio *pt_port; /* Pass-through serio port */ ++ unsigned char pt_buttons; /* Pass-through buttons */ + + struct synaptics_mt_state mt_state; /* Current mt finger state */ + bool mt_state_lost; /* mt_state may be incorrect */ +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch b/freed-ora/current/f20/Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch new file mode 100644 index 000000000..42594c096 --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch @@ -0,0 +1,44 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Sun, 8 Mar 2015 22:34:50 -0700 +Subject: [PATCH] Input: synaptics - remove TOPBUTTONPAD property for Lenovos + 2015 + +The 2015 series of the Lenovo thinkpads added back the hardware buttons on +top of the touchpad for the trackstick. + +Unfortunately, Lenovo used the PNPIDs that are supposed to be "5 buttons" +touchpads, so the new laptops also have the INPUT_PROP_TOPBUTTONPAD. Yay! + +Instead of manually removing each of the new ones, or hoping that we know +all the current ones, we can consider that the PNPIDs list that were given +contains touchpads that have the trackstick buttons, either physically +wired to them, or emulated with the top software button property. + +Thanks to the extra buttons capability in query $10, we can reliably detect +the physical buttons from the software ones, and so we can remove the +TOPBUTTONPAD property even if it was declared as such. + +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 8f6a153677b9..9d599eb79f17 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -1570,7 +1570,8 @@ static void set_input_params(struct psmouse *psmouse, + + if (SYN_CAP_CLICKPAD(priv->ext_cap_0c)) { + __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); +- if (psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids)) ++ if (psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) && ++ !SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10)) + __set_bit(INPUT_PROP_TOPBUTTONPAD, dev->propbit); + /* Clickpads report only left button */ + __clear_bit(BTN_RIGHT, dev->keybit); +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch b/freed-ora/current/f20/Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch new file mode 100644 index 000000000..a82c9e82b --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch @@ -0,0 +1,35 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Sun, 8 Mar 2015 22:38:55 -0700 +Subject: [PATCH] Input: synaptics - remove X1 Carbon 3rd gen from the + topbuttonpad list + +Lenovo decided to switch back to physical buttons for the trackstick on +their latest series. The PNPId list was provided before they reverted back +to physical buttons, so it contains the new models too. We can know from +the touchpad capabilities that the touchpad has physical buttons, so +removing the ids from the list is not mandatory. It is still nicer to +remove the wrong ids, so start by removing the X1 Carbon 3rd gen, with the +PNPId of LEN0048. + +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index ecc7811cbd46..160def02cde2 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -183,7 +183,6 @@ static const char * const topbuttonpad_pnp_ids[] = { + "LEN0045", + "LEN0046", + "LEN0047", +- "LEN0048", + "LEN0049", + "LEN2000", + "LEN2001", /* Edge E431 */ +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch b/freed-ora/current/f20/Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch new file mode 100644 index 000000000..62b3ce6d5 --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch @@ -0,0 +1,32 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Sun, 8 Mar 2015 22:39:17 -0700 +Subject: [PATCH] Input: synaptics - remove X250 from the topbuttonpad list + +Lenovo X250 has a PnpID of LEN0046, but it does not have the top software +button requirement. + +For the record, Lenovo T450s and W541 have a PnpID of LEN200f and LEN004a, +so they are not on the top software button list. + +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Reviewed-by: Daniel Martin <consume.noise@gmail.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 160def02cde2..ca7ca8d4eb33 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -181,7 +181,6 @@ static const char * const topbuttonpad_pnp_ids[] = { + "LEN0041", + "LEN0042", /* Yoga */ + "LEN0045", +- "LEN0046", + "LEN0047", + "LEN0049", + "LEN2000", +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-remove-obsolete-min-max-quirk-for-X2.patch b/freed-ora/current/f20/Input-synaptics-remove-obsolete-min-max-quirk-for-X2.patch new file mode 100644 index 000000000..530507815 --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-remove-obsolete-min-max-quirk-for-X2.patch @@ -0,0 +1,32 @@ +From: Daniel Martin <consume.noise@gmail.com> +Date: Sun, 8 Mar 2015 22:29:07 -0700 +Subject: [PATCH] Input: synaptics - remove obsolete min/max quirk for X240 + +The firmware of the X240 (LEN0035, 2013/12) exposes the same values + x [1232..5710], y [1156..4696] +as the quirk applies. + +Cc: stable@vger.kernel.org +Signed-off-by: Daniel Martin <consume.noise@gmail.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 87c37f745b92..af686a82b02b 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -131,7 +131,7 @@ static const struct min_max_quirk min_max_pnpid_table[] = { + 1024, 5052, 2258, 4832 + }, + { +- (const char * const []){"LEN0035", "LEN0042", NULL}, ++ (const char * const []){"LEN0042", NULL}, + 1232, 5710, 1156, 4696 + }, + { +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-retrieve-the-extended-capabilities-i.patch b/freed-ora/current/f20/Input-synaptics-retrieve-the-extended-capabilities-i.patch new file mode 100644 index 000000000..8e818acc3 --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-retrieve-the-extended-capabilities-i.patch @@ -0,0 +1,125 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Sun, 8 Mar 2015 22:34:03 -0700 +Subject: [PATCH] Input: synaptics - retrieve the extended capabilities in + query $10 + +Newer Synaptics touchpads need to get information from the query $10. +Retrieve it if available. + +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 23 ++++++++++++++++++++--- + drivers/input/mouse/synaptics.h | 23 +++++++++++++++++++++++ + 2 files changed, 43 insertions(+), 3 deletions(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 2176874a41b1..8f6a153677b9 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -241,11 +241,24 @@ static int synaptics_model_id(struct psmouse *psmouse) + return 0; + } + ++static int synaptics_more_extended_queries(struct psmouse *psmouse) ++{ ++ struct synaptics_data *priv = psmouse->private; ++ unsigned char buf[3]; ++ ++ if (synaptics_send_cmd(psmouse, SYN_QUE_MEXT_CAPAB_10, buf)) ++ return -1; ++ ++ priv->ext_cap_10 = (buf[0]<<16) | (buf[1]<<8) | buf[2]; ++ ++ return 0; ++} ++ + /* +- * Read the board id from the touchpad ++ * Read the board id and the "More Extended Queries" from the touchpad + * The board id is encoded in the "QUERY MODES" response + */ +-static int synaptics_board_id(struct psmouse *psmouse) ++static int synaptics_query_modes(struct psmouse *psmouse) + { + struct synaptics_data *priv = psmouse->private; + unsigned char bid[3]; +@@ -257,6 +270,10 @@ static int synaptics_board_id(struct psmouse *psmouse) + if (synaptics_send_cmd(psmouse, SYN_QUE_MODES, bid)) + return -1; + priv->board_id = ((bid[0] & 0xfc) << 6) | bid[1]; ++ ++ if (SYN_MEXT_CAP_BIT(bid[0])) ++ return synaptics_more_extended_queries(psmouse); ++ + return 0; + } + +@@ -446,7 +463,7 @@ static int synaptics_query_hardware(struct psmouse *psmouse) + return -1; + if (synaptics_firmware_id(psmouse)) + return -1; +- if (synaptics_board_id(psmouse)) ++ if (synaptics_query_modes(psmouse)) + return -1; + if (synaptics_capability(psmouse)) + return -1; +diff --git a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h +index 1bd01f21783b..8d3761ce8f54 100644 +--- a/drivers/input/mouse/synaptics.h ++++ b/drivers/input/mouse/synaptics.h +@@ -22,6 +22,7 @@ + #define SYN_QUE_EXT_CAPAB_0C 0x0c + #define SYN_QUE_EXT_MAX_COORDS 0x0d + #define SYN_QUE_EXT_MIN_COORDS 0x0f ++#define SYN_QUE_MEXT_CAPAB_10 0x10 + + /* synatics modes */ + #define SYN_BIT_ABSOLUTE_MODE (1 << 7) +@@ -53,6 +54,7 @@ + #define SYN_EXT_CAP_REQUESTS(c) (((c) & 0x700000) >> 20) + #define SYN_CAP_MULTI_BUTTON_NO(ec) (((ec) & 0x00f000) >> 12) + #define SYN_CAP_PRODUCT_ID(ec) (((ec) & 0xff0000) >> 16) ++#define SYN_MEXT_CAP_BIT(m) ((m) & (1 << 1)) + + /* + * The following describes response for the 0x0c query. +@@ -89,6 +91,26 @@ + #define SYN_CAP_REDUCED_FILTERING(ex0c) ((ex0c) & 0x000400) + #define SYN_CAP_IMAGE_SENSOR(ex0c) ((ex0c) & 0x000800) + ++/* ++ * The following descibes response for the 0x10 query. ++ * ++ * byte mask name meaning ++ * ---- ---- ------- ------------ ++ * 1 0x01 ext buttons are stick buttons exported in the extended ++ * capability are actually meant to be used ++ * by the tracktick (pass-through). ++ * 1 0x02 SecurePad the touchpad is a SecurePad, so it ++ * contains a built-in fingerprint reader. ++ * 1 0xe0 more ext count how many more extented queries are ++ * available after this one. ++ * 2 0xff SecurePad width the width of the SecurePad fingerprint ++ * reader. ++ * 3 0xff SecurePad height the height of the SecurePad fingerprint ++ * reader. ++ */ ++#define SYN_CAP_EXT_BUTTONS_STICK(ex10) ((ex10) & 0x010000) ++#define SYN_CAP_SECUREPAD(ex10) ((ex10) & 0x020000) ++ + /* synaptics modes query bits */ + #define SYN_MODE_ABSOLUTE(m) ((m) & (1 << 7)) + #define SYN_MODE_RATE(m) ((m) & (1 << 6)) +@@ -156,6 +178,7 @@ struct synaptics_data { + unsigned long int capabilities; /* Capabilities */ + unsigned long int ext_cap; /* Extended Capabilities */ + unsigned long int ext_cap_0c; /* Ext Caps from 0x0c query */ ++ unsigned long int ext_cap_10; /* Ext Caps from 0x10 query */ + unsigned long int identity; /* Identification */ + unsigned int x_res, y_res; /* X/Y resolution in units/mm */ + unsigned int x_max, y_max; /* Max coordinates (from FW) */ +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-skip-quirks-when-post-2013-dimension.patch b/freed-ora/current/f20/Input-synaptics-skip-quirks-when-post-2013-dimension.patch new file mode 100644 index 000000000..4ab0617ef --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-skip-quirks-when-post-2013-dimension.patch @@ -0,0 +1,39 @@ +From: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Date: Sun, 8 Mar 2015 22:29:25 -0700 +Subject: [PATCH] Input: synaptics - skip quirks when post-2013 dimensions + +Post-2013 Lenovo laptops provide correct min/max dimensions, which are +different with the ones currently quirked. According to +https://bugzilla.kernel.org/show_bug.cgi?id=91541 the following board ids +are assigned in the post-2013 touchpads: + +t440p/t440s: LEN0036 -> 2964/2962 +t540p: LEN0034 -> 2964 + +Using 2961 as the common minimum makes these 3 laptops OK. We may need +to update those values later if other pnp_ids has a lower board_id. + +Cc: stable@vger.kernel.org +Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index a900a385e5c3..9567a708aa64 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -144,7 +144,7 @@ static const struct min_max_quirk min_max_pnpid_table[] = { + (const char * const []){"LEN0034", "LEN0036", "LEN0037", + "LEN0039", "LEN2002", "LEN2004", + NULL}, +- {ANY_BOARD_ID, ANY_BOARD_ID}, ++ {ANY_BOARD_ID, 2961}, + 1024, 5112, 2024, 4832 + }, + { +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-split-synaptics_resolution-query-fir.patch b/freed-ora/current/f20/Input-synaptics-split-synaptics_resolution-query-fir.patch new file mode 100644 index 000000000..56e9e317c --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-split-synaptics_resolution-query-fir.patch @@ -0,0 +1,87 @@ +From: Daniel Martin <consume.noise@gmail.com> +Date: Sun, 8 Mar 2015 22:27:37 -0700 +Subject: [PATCH] Input: synaptics - split synaptics_resolution(), query first + +Split the function synaptics_resolution() into synaptics_resolution() and +synaptics_quirks(). synaptics_resolution() will be called before +synaptics_quirks() to query dimensions and resolutions before overwriting +them with quirks. + +Cc: stable@vger.kernel.org +Signed-off-by: Daniel Martin <consume.noise@gmail.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 35 +++++++++++++++++++++++------------ + 1 file changed, 23 insertions(+), 12 deletions(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index 23e26e0768b5..b501dda75dcb 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -343,7 +343,6 @@ static int synaptics_resolution(struct psmouse *psmouse) + { + struct synaptics_data *priv = psmouse->private; + unsigned char resp[3]; +- int i; + + if (SYN_ID_MAJOR(priv->identity) < 4) + return 0; +@@ -355,17 +354,6 @@ static int synaptics_resolution(struct psmouse *psmouse) + } + } + +- for (i = 0; min_max_pnpid_table[i].pnp_ids; i++) { +- if (psmouse_matches_pnp_id(psmouse, +- min_max_pnpid_table[i].pnp_ids)) { +- priv->x_min = min_max_pnpid_table[i].x_min; +- priv->x_max = min_max_pnpid_table[i].x_max; +- priv->y_min = min_max_pnpid_table[i].y_min; +- priv->y_max = min_max_pnpid_table[i].y_max; +- return 0; +- } +- } +- + if (SYN_EXT_CAP_REQUESTS(priv->capabilities) >= 5 && + SYN_CAP_MAX_DIMENSIONS(priv->ext_cap_0c)) { + if (synaptics_send_cmd(psmouse, SYN_QUE_EXT_MAX_COORDS, resp)) { +@@ -391,6 +379,27 @@ static int synaptics_resolution(struct psmouse *psmouse) + return 0; + } + ++/* ++ * Apply quirk(s) if the hardware matches ++ */ ++ ++static void synaptics_apply_quirks(struct psmouse *psmouse) ++{ ++ struct synaptics_data *priv = psmouse->private; ++ int i; ++ ++ for (i = 0; min_max_pnpid_table[i].pnp_ids; i++) { ++ if (psmouse_matches_pnp_id(psmouse, ++ min_max_pnpid_table[i].pnp_ids)) { ++ priv->x_min = min_max_pnpid_table[i].x_min; ++ priv->x_max = min_max_pnpid_table[i].x_max; ++ priv->y_min = min_max_pnpid_table[i].y_min; ++ priv->y_max = min_max_pnpid_table[i].y_max; ++ break; ++ } ++ } ++} ++ + static int synaptics_query_hardware(struct psmouse *psmouse) + { + if (synaptics_identify(psmouse)) +@@ -406,6 +415,8 @@ static int synaptics_query_hardware(struct psmouse *psmouse) + if (synaptics_resolution(psmouse)) + return -1; + ++ synaptics_apply_quirks(psmouse); ++ + return 0; + } + +-- +2.1.0 + diff --git a/freed-ora/current/f20/Input-synaptics-support-min-max-board-id-in-min_max_.patch b/freed-ora/current/f20/Input-synaptics-support-min-max-board-id-in-min_max_.patch new file mode 100644 index 000000000..cb1a255c5 --- /dev/null +++ b/freed-ora/current/f20/Input-synaptics-support-min-max-board-id-in-min_max_.patch @@ -0,0 +1,108 @@ +From: Daniel Martin <daniel.martin@secunet.com> +Date: Sun, 8 Mar 2015 22:29:15 -0700 +Subject: [PATCH] Input: synaptics - support min/max board id in + min_max_pnpid_table + +Add a min/max range for board ids to the min/max coordinates quirk. This +makes it possible to restrict quirks to specific models based upon their +board id. The define ANY_BOARD_ID (0) serves as a wild card. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=91541 + +Cc: stable@vger.kernel.org +Signed-off-by: Daniel Martin <daniel.martin@secunet.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/mouse/synaptics.c | 42 +++++++++++++++++++++++++++++------------ + 1 file changed, 30 insertions(+), 12 deletions(-) + +diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c +index af686a82b02b..a900a385e5c3 100644 +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -120,32 +120,41 @@ void synaptics_reset(struct psmouse *psmouse) + + static bool cr48_profile_sensor; + ++#define ANY_BOARD_ID 0 + struct min_max_quirk { + const char * const *pnp_ids; ++ struct { ++ unsigned long int min, max; ++ } board_id; + int x_min, x_max, y_min, y_max; + }; + + static const struct min_max_quirk min_max_pnpid_table[] = { + { + (const char * const []){"LEN0033", NULL}, ++ {ANY_BOARD_ID, ANY_BOARD_ID}, + 1024, 5052, 2258, 4832 + }, + { + (const char * const []){"LEN0042", NULL}, ++ {ANY_BOARD_ID, ANY_BOARD_ID}, + 1232, 5710, 1156, 4696 + }, + { + (const char * const []){"LEN0034", "LEN0036", "LEN0037", + "LEN0039", "LEN2002", "LEN2004", + NULL}, ++ {ANY_BOARD_ID, ANY_BOARD_ID}, + 1024, 5112, 2024, 4832 + }, + { + (const char * const []){"LEN2001", NULL}, ++ {ANY_BOARD_ID, ANY_BOARD_ID}, + 1024, 5022, 2508, 4832 + }, + { + (const char * const []){"LEN2006", NULL}, ++ {ANY_BOARD_ID, ANY_BOARD_ID}, + 1264, 5675, 1171, 4688 + }, + { } +@@ -401,18 +410,27 @@ static void synaptics_apply_quirks(struct psmouse *psmouse) + int i; + + for (i = 0; min_max_pnpid_table[i].pnp_ids; i++) { +- if (psmouse_matches_pnp_id(psmouse, +- min_max_pnpid_table[i].pnp_ids)) { +- priv->x_min = min_max_pnpid_table[i].x_min; +- priv->x_max = min_max_pnpid_table[i].x_max; +- priv->y_min = min_max_pnpid_table[i].y_min; +- priv->y_max = min_max_pnpid_table[i].y_max; +- psmouse_info(psmouse, +- "quirked min/max coordinates: x [%d..%d], y [%d..%d]\n", +- priv->x_min, priv->x_max, +- priv->y_min, priv->y_max); +- break; +- } ++ if (!psmouse_matches_pnp_id(psmouse, ++ min_max_pnpid_table[i].pnp_ids)) ++ continue; ++ ++ if (min_max_pnpid_table[i].board_id.min != ANY_BOARD_ID && ++ priv->board_id < min_max_pnpid_table[i].board_id.min) ++ continue; ++ ++ if (min_max_pnpid_table[i].board_id.max != ANY_BOARD_ID && ++ priv->board_id > min_max_pnpid_table[i].board_id.max) ++ continue; ++ ++ priv->x_min = min_max_pnpid_table[i].x_min; ++ priv->x_max = min_max_pnpid_table[i].x_max; ++ priv->y_min = min_max_pnpid_table[i].y_min; ++ priv->y_max = min_max_pnpid_table[i].y_max; ++ psmouse_info(psmouse, ++ "quirked min/max coordinates: x [%d..%d], y [%d..%d]\n", ++ priv->x_min, priv->x_max, ++ priv->y_min, priv->y_max); ++ break; + } + } + +-- +2.1.0 + diff --git a/freed-ora/current/f20/NFS-fix-clp-cl_revoked-list-deletion-causing-softloc.patch b/freed-ora/current/f20/NFS-fix-clp-cl_revoked-list-deletion-causing-softloc.patch deleted file mode 100644 index a7067ffc2..000000000 --- a/freed-ora/current/f20/NFS-fix-clp-cl_revoked-list-deletion-causing-softloc.patch +++ /dev/null @@ -1,35 +0,0 @@ -From: Andrew Elble <aweits@rit.edu> -Date: Wed, 25 Feb 2015 13:42:55 -0500 -Subject: [PATCH] NFS: fix clp->cl_revoked list deletion causing softlock in - nfsd - -commit 2d4a532d385f ("nfsd: ensure that clp->cl_revoked list is -protected by clp->cl_lock") removed the use of the reaplist to -clean out clp->cl_revoked. It failed to change list_entry() to -walk clp->cl_revoked.next instead of reaplist.next - -Fixes: 2d4a532d385f ("nfsd: ensure that clp->cl_revoked list is protected by clp->cl_lock") -Cc: stable@vger.kernel.org -Reported-by: Eric Meddaugh <etmsys@rit.edu> -Tested-by: Eric Meddaugh <etmsys@rit.edu> -Signed-off-by: Andrew Elble <aweits@rit.edu> ---- - fs/nfsd/nfs4state.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c -index d66e3ad1de48..5c9c13ee72f9 100644 ---- a/fs/nfsd/nfs4state.c -+++ b/fs/nfsd/nfs4state.c -@@ -1650,7 +1650,7 @@ __destroy_client(struct nfs4_client *clp) - nfs4_put_stid(&dp->dl_stid); - } - while (!list_empty(&clp->cl_revoked)) { -- dp = list_entry(reaplist.next, struct nfs4_delegation, dl_recall_lru); -+ dp = list_entry(clp->cl_revoked.next, struct nfs4_delegation, dl_recall_lru); - list_del_init(&dp->dl_recall_lru); - nfs4_put_stid(&dp->dl_stid); - } --- -2.1.0 - diff --git a/freed-ora/current/f20/Set-UID-in-sess_auth_rawntlmssp_authenticate-too.patch b/freed-ora/current/f20/Set-UID-in-sess_auth_rawntlmssp_authenticate-too.patch deleted file mode 100644 index bc08ddccc..000000000 --- a/freed-ora/current/f20/Set-UID-in-sess_auth_rawntlmssp_authenticate-too.patch +++ /dev/null @@ -1,44 +0,0 @@ -From: Sachin Prabhu <sprabhu@redhat.com> -Date: Wed, 3 Dec 2014 12:26:36 +0000 -Subject: [PATCH] Set UID in sess_auth_rawntlmssp_authenticate too - -A user complained that they were unable to login to their cifs share -after a kernel update. From the wiretrace we can see that the server -returns different UIDs as response to NTLMSSP_NEGOTIATE and NTLMSSP_AUTH -phases. - -With changes in the authentication code, we no longer set the -cifs_sess->Suid returned in response to the NTLM_AUTH phase and continue -to use the UID sent in response to the NTLMSSP_NEGOTIATE phase. This -results in the server denying access to the user when the user attempts -to do a tcon connect. - -See https://bugzilla.redhat.com/show_bug.cgi?id=1163927 - -A test kernel containing patch was tested successfully by the user. - -Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> -Signed-off-by: Steve French <steve.french@primarydata.com> ---- - fs/cifs/sess.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c -index 57db63ff88da..446cb7fb3f58 100644 ---- a/fs/cifs/sess.c -+++ b/fs/cifs/sess.c -@@ -1303,6 +1303,11 @@ sess_auth_rawntlmssp_authenticate(struct sess_data *sess_data) - if (le16_to_cpu(pSMB->resp.Action) & GUEST_LOGIN) - cifs_dbg(FYI, "Guest login\n"); /* BB mark SesInfo struct? */ - -+ if (ses->Suid != smb_buf->Uid) { -+ ses->Suid = smb_buf->Uid; -+ cifs_dbg(FYI, "UID changed! new UID = %llu\n", ses->Suid); -+ } -+ - bytes_remaining = get_bcc(smb_buf); - bcc_ptr = pByteArea(smb_buf); - blob_len = le16_to_cpu(pSMB->resp.SecurityBlobLength); --- -2.1.0 - diff --git a/freed-ora/current/f20/acpi-video-Add-disable_native_backlight-quirk-for-De.patch b/freed-ora/current/f20/acpi-video-Add-disable_native_backlight-quirk-for-De.patch deleted file mode 100644 index 6e7ca6e03..000000000 --- a/freed-ora/current/f20/acpi-video-Add-disable_native_backlight-quirk-for-De.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: Hans de Goede <hdegoede@redhat.com> -Date: Fri, 21 Nov 2014 13:39:19 +0100 -Subject: [PATCH] acpi-video: Add disable_native_backlight quirk for Dell XPS15 - L521X - -The L521X variant of the Dell XPS15 has integrated nvidia graphics, and -backlight control does not work properly when using the native interfaces. - -BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1163574 -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/acpi/video.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c -index a3d293806f96..e109b2cfb5b3 100644 ---- a/drivers/acpi/video.c -+++ b/drivers/acpi/video.c -@@ -769,6 +769,16 @@ static struct dmi_system_id video_dmi_table[] __initdata = { - DMI_MATCH(DMI_PRODUCT_NAME, "HP ENVY 15 Notebook PC"), - }, - }, -+ -+ { -+ /* https://bugzilla.redhat.com/show_bug.cgi?id=1163574 */ -+ .callback = video_disable_native_backlight, -+ .ident = "Dell XPS15 L521X", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), -+ DMI_MATCH(DMI_PRODUCT_NAME, "XPS L521X"), -+ }, -+ }, - {} - }; - --- -2.1.0 - diff --git a/freed-ora/current/f20/acpi-video-Add-force-native-backlight-quirk-for-Leno.patch b/freed-ora/current/f20/acpi-video-Add-force-native-backlight-quirk-for-Leno.patch new file mode 100644 index 000000000..2b789ac18 --- /dev/null +++ b/freed-ora/current/f20/acpi-video-Add-force-native-backlight-quirk-for-Leno.patch @@ -0,0 +1,84 @@ +From: Hans de Goede <hdegoede@redhat.com> +Date: Tue, 3 Mar 2015 08:31:24 +0100 +Subject: [PATCH] acpi: video: Add force native backlight quirk for Lenovo + Ideapad Z570 + +The Lenovo Ideapad Z570 (which is an Acer in disguise like some other Ideapads) +has a broken acpi_video interface, this was fixed in commmit a11d342fb8 +("ACPI / video: force vendor backlight on Lenovo Ideapad Z570"). + +Which stops acpi_video from registering a backlight interface, but this is +only a partial fix, because for people who have the ideapad-laptop module +installed that module will now register a backlight interface, which also +does not work, so we need to use the native intel_backlight interface. + +The Lenovo Ideapad 570 is a pre-win8 laptop / too old for the acpi-video code +to automatically prefer the native backlight interface, so add a quirk for it. + +This commit also removes the previous incomplete fix. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1187004 +Cc: Stepan Bujnak <stepanbujnak@fastmail.fm> +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + drivers/acpi/video.c | 17 +++++++++++++++++ + drivers/acpi/video_detect.c | 8 -------- + 2 files changed, 17 insertions(+), 8 deletions(-) + +diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c +index 2f1f16df460c..16d744e4552f 100644 +--- a/drivers/acpi/video.c ++++ b/drivers/acpi/video.c +@@ -425,6 +425,12 @@ static int __init video_disable_native_backlight(const struct dmi_system_id *d) + return 0; + } + ++static int __init video_enable_native_backlight(const struct dmi_system_id *d) ++{ ++ use_native_backlight_dmi = NATIVE_BACKLIGHT_ON; ++ return 0; ++} ++ + static struct dmi_system_id video_dmi_table[] __initdata = { + /* + * Broken _BQC workaround http://bugzilla.kernel.org/show_bug.cgi?id=13121 +@@ -556,6 +562,17 @@ static struct dmi_system_id video_dmi_table[] __initdata = { + DMI_MATCH(DMI_PRODUCT_NAME, "XPS L521X"), + }, + }, ++ ++ /* Non win8 machines which need native backlight nevertheless */ ++ { ++ /* https://bugzilla.redhat.com/show_bug.cgi?id=1187004 */ ++ .callback = video_enable_native_backlight, ++ .ident = "Lenovo Ideapad Z570", ++ .matches = { ++ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), ++ DMI_MATCH(DMI_PRODUCT_NAME, "102434U"), ++ }, ++ }, + {} + }; + +diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c +index 27c43499977a..c42feb2bacd0 100644 +--- a/drivers/acpi/video_detect.c ++++ b/drivers/acpi/video_detect.c +@@ -174,14 +174,6 @@ static struct dmi_system_id video_detect_dmi_table[] = { + DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 5737"), + }, + }, +- { +- .callback = video_detect_force_vendor, +- .ident = "Lenovo IdeaPad Z570", +- .matches = { +- DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), +- DMI_MATCH(DMI_PRODUCT_VERSION, "Ideapad Z570"), +- }, +- }, + { }, + }; + +-- +2.1.0 + diff --git a/freed-ora/current/f20/acpi-video-Allow-forcing-native-backlight-on-non-win.patch b/freed-ora/current/f20/acpi-video-Allow-forcing-native-backlight-on-non-win.patch new file mode 100644 index 000000000..2a0e1cdba --- /dev/null +++ b/freed-ora/current/f20/acpi-video-Allow-forcing-native-backlight-on-non-win.patch @@ -0,0 +1,76 @@ +From: Aaron Lu <aaron.lu@intel.com> +Date: Wed, 11 Mar 2015 14:14:56 +0800 +Subject: [PATCH] acpi: video: Allow forcing native backlight on non win8 + machines + +The native backlight behavior (so not registering both the acpi-video +and the vendor backlight driver) can be useful on some non win8 machines +too, so change the behavior of the video.use_native_backlight=1 or 0 +kernel cmdline option to be: if user has set video.use_native_backlight=1 +or 0, use that no matter if it is a win8 system or not. Also, we will +put some known systems into the DMI table to make them either use native +backlight interface or not, and the use_native_backlight_dmi is used to +reflect that. + +Original-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Aaron Lu <aaron.lu@intel.com> +Acked-by: Hans de Goede <hdegoede@redhat.com> +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + drivers/acpi/video.c | 19 +++++++++++++------ + 1 file changed, 13 insertions(+), 6 deletions(-) + +diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c +index 497622ce5c31..2f1f16df460c 100644 +--- a/drivers/acpi/video.c ++++ b/drivers/acpi/video.c +@@ -82,9 +82,15 @@ module_param(allow_duplicates, bool, 0644); + * For Windows 8 systems: used to decide if video module + * should skip registering backlight interface of its own. + */ +-static int use_native_backlight_param = -1; ++enum { ++ NATIVE_BACKLIGHT_NOT_SET = -1, ++ NATIVE_BACKLIGHT_OFF, ++ NATIVE_BACKLIGHT_ON, ++}; ++ ++static int use_native_backlight_param = NATIVE_BACKLIGHT_NOT_SET; + module_param_named(use_native_backlight, use_native_backlight_param, int, 0444); +-static bool use_native_backlight_dmi = true; ++static int use_native_backlight_dmi = NATIVE_BACKLIGHT_NOT_SET; + + static int register_count; + static struct mutex video_list_lock; +@@ -237,15 +243,16 @@ static void acpi_video_switch_brightness(struct work_struct *work); + + static bool acpi_video_use_native_backlight(void) + { +- if (use_native_backlight_param != -1) ++ if (use_native_backlight_param != NATIVE_BACKLIGHT_NOT_SET) + return use_native_backlight_param; +- else ++ else if (use_native_backlight_dmi != NATIVE_BACKLIGHT_NOT_SET) + return use_native_backlight_dmi; ++ return acpi_osi_is_win8(); + } + + bool acpi_video_verify_backlight_support(void) + { +- if (acpi_osi_is_win8() && acpi_video_use_native_backlight() && ++ if (acpi_video_use_native_backlight() && + backlight_device_registered(BACKLIGHT_RAW)) + return false; + return acpi_video_backlight_support(); +@@ -414,7 +421,7 @@ static int __init video_set_bqc_offset(const struct dmi_system_id *d) + + static int __init video_disable_native_backlight(const struct dmi_system_id *d) + { +- use_native_backlight_dmi = false; ++ use_native_backlight_dmi = NATIVE_BACKLIGHT_OFF; + return 0; + } + +-- +2.1.0 + diff --git a/freed-ora/current/f20/arm-dts-sun7i-bananapi.patch b/freed-ora/current/f20/arm-dts-sun7i-bananapi.patch deleted file mode 100644 index 0628096b9..000000000 --- a/freed-ora/current/f20/arm-dts-sun7i-bananapi.patch +++ /dev/null @@ -1,213 +0,0 @@ -From: Hans de Goede <hdegoede@redhat.com> -Date: Tue, 30 Sep 2014 14:29:26 +0100 -Subject: [PATCH] arm: dts sun7i bananapi - -The Banana Pi is an A20 based development board using Raspberry Pi compatible -IO headers. It comes with 1 GB RAM, 1 Gb ethernet, 2x USB host, sata, hdmi -and stereo audio out + various expenansion headers: - -Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> ---- - arch/arm/boot/dts/Makefile | 1 + - arch/arm/boot/dts/sun7i-a20-bananapi.dts | 177 +++++++++++++++++++++++++++++++ - 2 files changed, 178 insertions(+) - create mode 100644 arch/arm/boot/dts/sun7i-a20-bananapi.dts - -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index e6aa6e77a3ec..0e858ebdad9e 100644 ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -414,6 +414,7 @@ dtb-$(CONFIG_MACH_SUN6I) += \ - sun6i-a31-hummingbird.dtb \ - sun6i-a31-m9.dtb - dtb-$(CONFIG_MACH_SUN7I) += \ -+ sun7i-a20-bananapi.dtb \ - sun7i-a20-cubieboard2.dtb \ - sun7i-a20-cubietruck.dtb \ - sun7i-a20-i12-tvbox.dtb \ -diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts -new file mode 100644 -index 000000000000..7214475a3c36 ---- /dev/null -+++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts -@@ -0,0 +1,177 @@ -+/* -+ * Copyright 2014 Hans de Goede <hdegoede@xxxxxxxxxx> -+ * -+ * The code contained herein is licensed under the GNU General Public -+ * License. You may obtain a copy of the GNU General Public License -+ * Version 2 or later at the following locations: -+ * -+ * http://www.opensource.org/licenses/gpl-license.html -+ * http://www.gnu.org/copyleft/gpl.html -+ */ -+ -+/dts-v1/; -+/include/ "sun7i-a20.dtsi" -+/include/ "sunxi-common-regulators.dtsi" -+ -+/ { -+ model = "LeMaker Banana Pi"; -+ compatible = "lemaker,bananapi", "allwinner,sun7i-a20"; -+ -+ soc@01c00000 { -+ mmc0: mmc@01c0f000 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_bananapi>; -+ vmmc-supply = <®_vcc3v3>; -+ bus-width = <4>; -+ cd-gpios = <&pio 7 10 0>; /* PH10 */ -+ cd-inverted; -+ status = "okay"; -+ }; -+ -+ usbphy: phy@01c13400 { -+ usb1_vbus-supply = <®_usb1_vbus>; -+ usb2_vbus-supply = <®_usb2_vbus>; -+ status = "okay"; -+ }; -+ -+ ehci0: usb@01c14000 { -+ status = "okay"; -+ }; -+ -+ ohci0: usb@01c14400 { -+ status = "okay"; -+ }; -+ -+ ahci: sata@01c18000 { -+ status = "okay"; -+ }; -+ -+ ehci1: usb@01c1c000 { -+ status = "okay"; -+ }; -+ -+ ohci1: usb@01c1c400 { -+ status = "okay"; -+ }; -+ -+ pinctrl@01c20800 { -+ uart3_pins_bananapi: uart3_pin@0 { -+ allwinner,pins = "PH0", "PH1"; -+ allwinner,function = "uart3"; -+ allwinner,drive = <0>; -+ allwinner,pull = <0>; -+ }; -+ -+ mmc0_cd_pin_bananapi: mmc0_cd_pin@0 { -+ allwinner,pins = "PH10"; -+ allwinner,function = "gpio_in"; -+ allwinner,drive = <0>; -+ allwinner,pull = <1>; -+ }; -+ -+ gmac_power_pin_bananapi: gmac_power_pin@0 { -+ allwinner,pins = "PH23"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = <0>; -+ allwinner,pull = <0>; -+ }; -+ -+ led_pins_bananapi: led_pins@0 { -+ allwinner,pins = "PH24"; -+ allwinner,function = "gpio_out"; -+ allwinner,drive = <0>; -+ allwinner,pull = <0>; -+ }; -+ }; -+ -+ ir0: ir@01c21800 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&ir0_pins_a>; -+ status = "okay"; -+ }; -+ -+ uart0: serial@01c28000 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart0_pins_a>; -+ status = "okay"; -+ }; -+ -+ uart3: serial@01c28c00 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart3_pins_bananapi>; -+ status = "okay"; -+ }; -+ -+ uart7: serial@01c29c00 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&uart7_pins_a>; -+ status = "okay"; -+ }; -+ -+ i2c0: i2c@01c2ac00 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c0_pins_a>; -+ status = "okay"; -+ -+ axp209: pmic@34 { -+ compatible = "x-powers,axp209"; -+ reg = <0x34>; -+ interrupt-parent = <&nmi_intc>; -+ interrupts = <0 8>; -+ -+ interrupt-controller; -+ #interrupt-cells = <1>; -+ }; -+ }; -+ -+ i2c2: i2c@01c2b400 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&i2c2_pins_a>; -+ status = "okay"; -+ }; -+ -+ gmac: ethernet@01c50000 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_pins_rgmii_a>; -+ phy = <&phy1>; -+ phy-mode = "rgmii"; -+ phy-supply = <®_gmac_3v3>; -+ status = "okay"; -+ -+ phy1: ethernet-phy@1 { -+ reg = <1>; -+ }; -+ }; -+ }; -+ -+ leds { -+ compatible = "gpio-leds"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&led_pins_bananapi>; -+ -+ green { -+ label = "bananapi:green:usr"; -+ gpios = <&pio 7 24 0>; -+ }; -+ }; -+ -+ reg_usb1_vbus: usb1-vbus { -+ status = "okay"; -+ }; -+ -+ reg_usb2_vbus: usb2-vbus { -+ status = "okay"; -+ }; -+ -+ reg_gmac_3v3: gmac-3v3 { -+ compatible = "regulator-fixed"; -+ pinctrl-names = "default"; -+ pinctrl-0 = <&gmac_power_pin_bananapi>; -+ regulator-name = "gmac-3v3"; -+ regulator-min-microvolt = <3300000>; -+ regulator-max-microvolt = <3300000>; -+ startup-delay-us = <50000>; -+ enable-active-high; -+ gpio = <&pio 7 23 0>; -+ }; -+}; --- -1.9.3 - diff --git a/freed-ora/current/f20/asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch b/freed-ora/current/f20/asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch deleted file mode 100644 index 1ec42f728..000000000 --- a/freed-ora/current/f20/asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch +++ /dev/null @@ -1,35 +0,0 @@ -From: Stanislaw Gruszka <sgruszka@redhat.com> -Date: Wed, 22 Oct 2014 14:32:52 +0200 -Subject: [PATCH] asus-nb-wmi: Add wapf4 quirk for the X550VB - -As reported here: http://bugzilla.redhat.com/show_bug.cgi?id=1089731#c23 -the X550VB needs wapf=4 too. - -Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> ---- - drivers/platform/x86/asus-nb-wmi.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/drivers/platform/x86/asus-nb-wmi.c b/drivers/platform/x86/asus-nb-wmi.c -index 3a4951f46065..c1a6cd66af42 100644 ---- a/drivers/platform/x86/asus-nb-wmi.c -+++ b/drivers/platform/x86/asus-nb-wmi.c -@@ -182,6 +182,15 @@ static const struct dmi_system_id asus_quirks[] = { - }, - { - .callback = dmi_matched, -+ .ident = "ASUSTeK COMPUTER INC. X550VB", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), -+ DMI_MATCH(DMI_PRODUCT_NAME, "X550VB"), -+ }, -+ .driver_data = &quirk_asus_wapf4, -+ }, -+ { -+ .callback = dmi_matched, - .ident = "ASUSTeK COMPUTER INC. X55A", - .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), --- -1.9.3 - diff --git a/freed-ora/current/f20/config-arm-generic b/freed-ora/current/f20/config-arm-generic index c0fa94ddd..c47b3e944 100644 --- a/freed-ora/current/f20/config-arm-generic +++ b/freed-ora/current/f20/config-arm-generic @@ -25,6 +25,7 @@ CONFIG_RESET_GPIO=y CONFIG_RCU_FANOUT_LEAF=16 CONFIG_BACKLIGHT_PWM=m +CONFIG_BACKLIGHT_GENERIC=m CONFIG_INPUT_PWM_BEEPER=m CONFIG_ARM_SP805_WATCHDOG=m CONFIG_ARM_ARCH_TIMER=y @@ -40,11 +41,15 @@ CONFIG_HAVE_PERF_USER_STACK_DUMP=y # ARM AMBA generic HW CONFIG_ARM_AMBA=y +# CONFIG_TEGRA_AHB is not set CONFIG_ARM_CCI=y CONFIG_ARM_CCN=y CONFIG_ARM_DMA_USE_IOMMU=y CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8 CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_V2M=y +CONFIG_ARM_GIC_V3=y +CONFIG_ARM_GIC_V3_ITS=y CONFIG_KVM_ARM_VGIC=y CONFIG_ARM_GLOBAL_TIMER=y CONFIG_ARM_SMMU=y @@ -79,6 +84,7 @@ CONFIG_POWER_RESET_VERSATILE=y CONFIG_DTC=y CONFIG_DMA_OF=y CONFIG_OF=y +# CONFIG_OF_UNITTEST is not set CONFIG_OF_ADDRESS=y CONFIG_OF_DYNAMIC=y CONFIG_OF_EARLY_FLATTREE=y @@ -88,10 +94,12 @@ CONFIG_OF_IOMMU=y CONFIG_OF_IRQ=y CONFIG_OF_MTD=y CONFIG_OF_NET=y +CONFIG_OF_OVERLAY=y CONFIG_OF_PCI_IRQ=m CONFIG_OF_PCI=m CONFIG_OF_RESERVED_MEM=y CONFIG_OF_RESOLVE=y +CONFIG_PM_GENERIC_DOMAINS_OF=y CONFIG_PATA_OF_PLATFORM=m # CONFIG_OF_SELFTEST is not set CONFIG_SERIAL_OF_PLATFORM=y @@ -101,6 +109,11 @@ CONFIG_THERMAL_OF=y # CONFIG_MDIO_BUS_MUX_GPIO is not set # CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# USB +CONFIG_USB_OHCI_HCD_PLATFORM=m +CONFIG_USB_EHCI_HCD_PLATFORM=m +CONFIG_USB_XHCI_PLATFORM=m + # External Connectors CONFIG_EXTCON=m CONFIG_EXTCON_GPIO=m @@ -134,6 +147,7 @@ CONFIG_BACKLIGHT_GPIO=m CONFIG_POWER_RESET_GPIO=y CONFIG_POWER_RESET_GPIO_RESTART=y CONFIG_POWER_RESET_RESTART=y +# CONFIG_GPIO_74XX_MMIO is not set #i2c CONFIG_I2C_ARB_GPIO_CHALLENGE=m @@ -200,6 +214,8 @@ CONFIG_CMA_AREAS=7 # CONFIG_PATA_PLATFORM is not set # CONFIG_USB_ULPI is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_PHY_SAMSUNG_USB2 is not set ### turn off things which make no sense on embedded SoC @@ -260,6 +276,7 @@ CONFIG_CMA_AREAS=7 # CONFIG_IMX_IPUV3_CORE is not set # CONFIG_DEBUG_SET_MODULE_RONX is not set +# CONFIG_CORESIGHT is not set # CONFIG_LATTICE_ECP3_CONFIG is not set # CONFIG_BMP085_SPI is not set diff --git a/freed-ora/current/f20/config-arm64 b/freed-ora/current/f20/config-arm64 index 9fd40b9fd..1c4862440 100644 --- a/freed-ora/current/f20/config-arm64 +++ b/freed-ora/current/f20/config-arm64 @@ -8,8 +8,16 @@ CONFIG_SCHED_SMT=y # arm64 only SoCs CONFIG_ARCH_XGENE=y +CONFIG_ARCH_SEATTLE=y # CONFIG_ARCH_THUNDER is not set +# Erratum +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_832075=y + # CONFIG_AMBA_PL08X is not set CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y CONFIG_ARCH_REQUIRE_GPIOLIB=y @@ -78,6 +86,7 @@ CONFIG_CRYPTO_AES_ARM64_CE=m CONFIG_CRYPTO_AES_ARM64_CE_CCM=m CONFIG_CRYPTO_AES_ARM64_CE_BLK=m CONFIG_CRYPTO_AES_ARM64_NEON_BLK=m +CONFIG_CRYPTO_CRC32_ARM64=m CONFIG_CRYPTO_DEV_CCP=y CONFIG_CRYPTO_DEV_CCP_DD=m CONFIG_CRYPTO_DEV_CCP_CRYPTO=m @@ -112,11 +121,10 @@ CONFIG_HOTPLUG_PCI=y # CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set # CONFIG_PNP_DEBUG_MESSAGES is not set -CONFIG_NET_SB1000=y CONFIG_SBSAUART_TTY=y CONFIG_I2C_SCMI=m CONFIG_SENSORS_ACPI_POWER=m -CONFIG_PWM_LPSS=m + CONFIG_ACPI=y CONFIG_ACPI_PROCFS_POWER=y CONFIG_ACPI_EC_DEBUGFS=y @@ -128,17 +136,20 @@ CONFIG_ACPI_CONTAINER=y CONFIG_ACPI_HED=m CONFIG_ACPI_CUSTOM_METHOD=m +CONFIG_NET_SB1000=y CONFIG_AMD_XGBE=m CONFIG_AMD_XGBE_PHY=m # CONFIG_AMD_XGBE_DCB is not set # CONFIG_IMX_THERMAL is not set - -# still? 2014-11-11 -# CONFIG_BPF_JIT is not set +# CONFIG_MMC_DW is not set CONFIG_DMI=y CONFIG_DMIID=y CONFIG_DMI_SYSFS=y CONFIG_SATA_AHCI_PLATFORM=y + +# CONFIG_SND_SOC is not set + +# CONFIG_PMIC_OPREGION is not set diff --git a/freed-ora/current/f20/config-armv7 b/freed-ora/current/f20/config-armv7 index 8eb0e1a3b..c59977ad2 100644 --- a/freed-ora/current/f20/config-armv7 +++ b/freed-ora/current/f20/config-armv7 @@ -4,15 +4,12 @@ # CONFIG_ARCH_KEYSTONE is not set CONFIG_ARCH_MVEBU=y CONFIG_ARCH_MXC=y -# CONFIG_ARCH_OMAP2 is not set CONFIG_ARCH_OMAP3=y CONFIG_ARCH_OMAP4=y CONFIG_ARCH_PICOXCELL=y CONFIG_ARCH_QCOM=y -CONFIG_ARCH_ROCKCHIP=y CONFIG_ARCH_TEGRA=y CONFIG_ARCH_U8500=y -# CONFIG_ARCH_VIRT is not set CONFIG_ARCH_ZYNQ=y # These are supported in the LPAE kernel @@ -80,7 +77,6 @@ CONFIG_SOC_TI81XX=y # CONFIG_MACH_CRANEBOARD is not set # CONFIG_MACH_DEVKIT8000 is not set # CONFIG_MACH_NOKIA_RX51 is not set -# CONFIG_MACH_OMAP_3430SDP is not set # CONFIG_MACH_OMAP_LDP is not set # CONFIG_MACH_OMAP3_BEAGLE is not set # CONFIG_MACH_OMAP3517EVM is not set @@ -89,8 +85,6 @@ CONFIG_SOC_TI81XX=y # CONFIG_MACH_OMAP3_TORPEDO is not set # CONFIG_MACH_OVERO is not set # CONFIG_MACH_SBC3530 is not set -# CONFIG_MACH_TI8168EVM is not set -# CONFIG_MACH_TI8148EVM is not set # CONFIG_MACH_TOUCHBOOK is not set CONFIG_SOC_HAS_REALTIME_COUNTER=y @@ -109,14 +103,15 @@ CONFIG_OMAP_PM_NOOP=y CONFIG_DMA_OMAP=y CONFIG_OMAP_IOMMU=y CONFIG_HWSPINLOCK_OMAP=m -CONFIG_OMAP3_EMU=y # CONFIG_OMAP3_SDRC_AC_TIMING is not set CONFIG_SERIAL_OMAP=y CONFIG_SERIAL_OMAP_CONSOLE=y +CONFIG_SERIAL_8250_OMAP=m CONFIG_GPIO_TWL4030=m CONFIG_GPIO_TWL6040=m +CONFIG_GPIO_PCF857X=m CONFIG_I2C_OMAP=m CONFIG_CHARGER_TWL4030=m CONFIG_OMAP_WATCHDOG=m @@ -143,6 +138,7 @@ CONFIG_USB_EHCI_HCD_OMAP=m CONFIG_USB_OHCI_HCD_OMAP3=m CONFIG_USB_MUSB_AM35X=m CONFIG_USB_MUSB_OMAP2PLUS=m +CONFIG_USB_DWC3_OMAP=m CONFIG_MMC_OMAP=m CONFIG_MMC_OMAP_HS=y CONFIG_RTC_DRV_MAX8907=m @@ -242,10 +238,10 @@ CONFIG_DISPLAY_PANEL_NEC_NL8048HL11=m CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1=m # Enable V4L2 drivers for OMAP2+ -CONFIG_MEDIA_CONTROLLER=y CONFIG_V4L_PLATFORM_DRIVERS=y # CONFIG_VIDEO_OMAP2_VOUT is not set CONFIG_VIDEO_OMAP3=m +CONFIG_VIDEO_ADP1653=m # CONFIG_VIDEO_OMAP4 is not set # The ones below are for TI Davinci # CONFIG_VIDEO_DM6446_CCDC is not set @@ -255,10 +251,9 @@ CONFIG_SND_OMAP_SOC=m CONFIG_SND_SOC_I2C_AND_SPI=m CONFIG_SND_OMAP_SOC_AM3517EVM=m CONFIG_SND_OMAP_SOC_DMIC=m -CONFIG_SND_OMAP_SOC_HDMI=m +CONFIG_SND_OMAP_SOC_HDMI_AUDIO=m CONFIG_SND_OMAP_SOC_MCBSP=m CONFIG_SND_OMAP_SOC_MCPDM=m -CONFIG_SND_OMAP_SOC_OMAP_HDMI=m CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m @@ -326,6 +321,7 @@ CONFIG_PINCTRL_APQ8084=m CONFIG_PINCTRL_IPQ8064=m CONFIG_PINCTRL_MSM8960=m CONFIG_PINCTRL_MSM8X74=m +CONFIG_PINCTRL_QCOM_SPMI_PMIC=m CONFIG_COMMON_CLK_QCOM=m CONFIG_MFD_QCOM_RPM=m CONFIG_MFD_PM8921_CORE=m @@ -352,7 +348,7 @@ CONFIG_PHY_QCOM_APQ8064_SATA=m CONFIG_PHY_QCOM_IPQ806X_SATA=m CONFIG_USB_DWC3_QCOM=m CONFIG_CRYPTO_DEV_QCE=m -CONFIG_MSM_IOMMU=y +# CONFIG_MSM_IOMMU is not set CONFIG_DRM_MSM=m CONFIG_DRM_MSM_FBDEV=y CONFIG_USB_EHCI_MSM=m @@ -363,6 +359,10 @@ CONFIG_INPUT_PMIC8XXX_PWRKEY=m CONFIG_RTC_DRV_PM8XXX=m # CONFIG_DRM_MSM_REGISTER_LOGGING is not set CONFIG_QCOM_WDT=m +CONFIG_MFD_SPMI_PMIC=m +CONFIG_SPMI=m +CONFIG_SPMI_MSM_PMIC_ARB=m +CONFIG_QCOM_SPMI_IADC=m # i.MX # CONFIG_MXC_DEBUG_BOARD is not set @@ -372,8 +372,10 @@ CONFIG_SOC_IMX53=y CONFIG_SOC_IMX6Q=y CONFIG_SOC_IMX6SL=y CONFIG_SOC_IMX6SX=y +# CONFIG_SOC_LS1021A is not set # CONFIG_SOC_VF610 is not set CONFIG_ARM_IMX6Q_CPUFREQ=m +CONFIG_POWER_RESET_IMX=y CONFIG_PCI_IMX6=y CONFIG_IMX_THERMAL=m CONFIG_IMX_SDMA=m @@ -411,6 +413,7 @@ CONFIG_CRYPTO_DEV_SAHARA=m CONFIG_RTC_DRV_SNVS=m # CONFIG_FB_MX3 is not set # CONFIG_FB_IMX is not set +# CONFIG_FB_MXS is not set CONFIG_SND_IMX_SOC=m CONFIG_SND_SOC_FSL_ASOC_CARD=m @@ -459,8 +462,6 @@ CONFIG_DRM_IMX_PARALLEL_DISPLAY=m CONFIG_DRM_IMX_TVE=m CONFIG_VIDEO_CODA=m -CONFIG_MFD_SYSCON=y -CONFIG_GPIO_SYSCON=m CONFIG_SENSORS_MC13783_ADC=m CONFIG_REGULATOR_ANATOP=m CONFIG_REGULATOR_MC13783=m @@ -501,27 +502,13 @@ CONFIG_REGULATOR_DA9055=m CONFIG_ARCH_EXYNOS4=y CONFIG_SOC_EXYNOS4212=y CONFIG_SOC_EXYNOS4412=y +CONFIG_SOC_EXYNOS4415=y CONFIG_ARM_EXYNOS4210_CPUFREQ=y CONFIG_ARM_EXYNOS4X12_CPUFREQ=y CONFIG_AK8975=m CONFIG_CM36651=m CONFIG_KEYBOARD_SAMSUNG=m -# Rockchips -CONFIG_I2C_RK3X=m -CONFIG_SPI_ROCKCHIP=m -CONFIG_SND_SOC_ROCKCHIP=m -CONFIG_PWM_ROCKCHIP=m -CONFIG_ROCKCHIP_SARADC=m -CONFIG_ROCKCHIP_IODOMAIN=m -CONFIG_MMC_DW_ROCKCHIP=m -CONFIG_EMAC_ROCKCHIP=m -CONFIG_MFD_RK808=m -CONFIG_COMMON_CLK_RK808=m -CONFIG_REGULATOR_RK808=m -CONFIG_RTC_DRV_HYM8563=m -CONFIG_ROCKCHIP_SARADC=m - # ST Ericsson CONFIG_MACH_HREFV60=y CONFIG_MACH_SNOWBALL=y @@ -615,6 +602,7 @@ CONFIG_SERIAL_XILINX_PS_UART=y CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y CONFIG_COMMON_CLK_AXI_CLKGEN=m CONFIG_COMMON_CLK_SI570=m +CONFIG_COMMON_CLK_XLNX_CLKWZRD=m CONFIG_ARM_ZYNQ_CPUIDLE=y CONFIG_LATTICE_ECP3_CONFIG=m CONFIG_NET_VENDOR_XILINX=y diff --git a/freed-ora/current/f20/config-armv7-generic b/freed-ora/current/f20/config-armv7-generic index dd233a702..0a930f3a2 100644 --- a/freed-ora/current/f20/config-armv7-generic +++ b/freed-ora/current/f20/config-armv7-generic @@ -2,8 +2,6 @@ # Generic ARM config options CONFIG_ARM=y -# CONFIG_ARCH_MULTI_V4 is not set -# CONFIG_ARCH_MULTI_V4T is not set # CONFIG_ARCH_MULTI_V6 is not set CONFIG_ARCH_MULTI_V7=y @@ -52,10 +50,11 @@ CONFIG_IRQ_CROSSBAR=y # Platforms enabled/disabled globally on ARMv7 CONFIG_ARCH_EXYNOS=y CONFIG_ARCH_HIGHBANK=y +CONFIG_ARCH_ROCKCHIP=y CONFIG_ARCH_SUNXI=y CONFIG_ARCH_TEGRA=y -CONFIG_ARCH_VEXPRESS_CA9X4=y CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y +CONFIG_ARCH_VIRT=y # CONFIG_ARCH_BCM is not set # CONFIG_ARCH_BERLIN is not set # CONFIG_ARCH_HI3xxx is not set @@ -113,6 +112,8 @@ CONFIG_SCHED_SMT=y CONFIG_RCU_FANOUT=32 +CONFIG_CHECKPOINT_RESTORE=y + # Power management / thermal / cpu scaling CONFIG_CPU_IDLE=y # CONFIG_CPU_IDLE_GOV_LADDER is not set @@ -123,6 +124,7 @@ CONFIG_PM_OPP=y CONFIG_ARM_CPU_SUSPEND=y CONFIG_ARM_PSCI=y CONFIG_THERMAL=y +CONFIG_CLOCK_THERMAL=y CONFIG_CPUFREQ_DT=y # CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set @@ -134,6 +136,7 @@ CONFIG_XZ_DEC_ARM=y CONFIG_UACCESS_WITH_MEMCPY=y CONFIG_PCI_HOST_GENERIC=y +# CONFIG_PCI_LAYERSCAPE is not set CONFIG_LBDAF=y @@ -160,6 +163,7 @@ CONFIG_PL330_DMA=m CONFIG_AMBA_PL08X=y CONFIG_GPIO_PL061=y CONFIG_PL320_MBOX=y +CONFIG_SND_ARMAACI=m # highbank CONFIG_EDAC_HIGHBANK_MC=m @@ -173,12 +177,12 @@ CONFIG_ARM_HIGHBANK_CPUFREQ=m # CONFIG_MACH_SUN5I is not set CONFIG_MACH_SUN6I=y CONFIG_MACH_SUN7I=y -# CONFIG_MACH_SUN8I is not set +CONFIG_MACH_SUN8I=y +# CONFIG_MACH_SUN9I is not set CONFIG_DMA_SUN6I=m CONFIG_SUNXI_WATCHDOG=m CONFIG_NET_VENDOR_ALLWINNER=y -CONFIG_STMMAC_PLATFORM=y -CONFIG_DWMAC_SUNXI=y +CONFIG_STMMAC_PLATFORM=m CONFIG_EEPROM_SUNXI_SID=m CONFIG_RTC_DRV_SUNXI=m CONFIG_PHY_SUN4I_USB=m @@ -196,6 +200,8 @@ CONFIG_IR_SUNXI=m CONFIG_MDIO_SUN4I=m CONFIG_SUN4I_EMAC=m CONFIG_RTC_DRV_SUN6I=m +CONFIG_AXP288_ADC=m +CONFIG_MTD_NAND_SUNXI=m # Exynos CONFIG_ARCH_EXYNOS3=y @@ -228,6 +234,7 @@ CONFIG_MMC_DW_EXYNOS=m CONFIG_EXYNOS_IOMMU=y CONFIG_PCI_EXYNOS=y CONFIG_PHY_EXYNOS5_USBDRD=m +CONFIG_PHY_SAMSUNG_USB2=m CONFIG_USB_EHCI_EXYNOS=m CONFIG_USB_OHCI_EXYNOS=m CONFIG_USB_DWC3_EXYNOS=m @@ -241,10 +248,10 @@ CONFIG_REGULATOR_S2MPS11=m CONFIG_REGULATOR_S5M8767=m CONFIG_TCG_TIS_I2C_INFINEON=m CONFIG_RTC_DRV_S5M=m +CONFIG_RTC_DRV_S3C=m CONFIG_MFD_WM8994=m CONFIG_GPIO_WM8994=m CONFIG_REGULATOR_WM8994=m -# CONFIG_RTC_DRV_S3C is not set CONFIG_EXYNOS_VIDEO=y CONFIG_EXYNOS_MIPI_DSI=y @@ -308,6 +315,25 @@ CONFIG_RTC_DRV_MAX77802=m CONFIG_RTC_DRV_RK808=m CONFIG_EXTCON_MAX8997=m +# Rockchips +CONFIG_I2C_RK3X=m +CONFIG_SPI_ROCKCHIP=m +CONFIG_PWM_ROCKCHIP=m +CONFIG_ROCKCHIP_SARADC=m +CONFIG_ROCKCHIP_IODOMAIN=m +CONFIG_MMC_DW_ROCKCHIP=m +CONFIG_EMAC_ROCKCHIP=m +CONFIG_MFD_RK808=m +CONFIG_COMMON_CLK_RK808=m +CONFIG_REGULATOR_RK808=m +CONFIG_RTC_DRV_HYM8563=m +CONFIG_ROCKCHIP_SARADC=m +CONFIG_ROCKCHIP_IOMMU=y +CONFIG_SND_SOC_ROCKCHIP=m +CONFIG_SND_SOC_ROCKCHIP_I2S=m +CONFIG_ROCKCHIP_THERMAL=m +CONFIG_DRM_ROCKCHIP=m + # Tegra CONFIG_ARCH_TEGRA_114_SOC=y CONFIG_ARCH_TEGRA_124_SOC=y @@ -344,6 +370,8 @@ CONFIG_NOUVEAU_PLATFORM_DRIVER=m CONFIG_AD525X_DPOT=m CONFIG_AD525X_DPOT_I2C=m CONFIG_AD525X_DPOT_SPI=m +CONFIG_TEGRA_SOCTHERM=m +CONFIG_TEGRA_MC=y # Jetson TK1 CONFIG_PINCTRL_AS3722=y @@ -361,6 +389,7 @@ CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL_SIMPLE=m CONFIG_DRM_PANEL_LD9040=m CONFIG_DRM_PANEL_S6E8AA0=m +CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m # regmap CONFIG_REGMAP=y @@ -370,13 +399,7 @@ CONFIG_REGMAP_SPMI=m CONFIG_REGMAP_MMIO=m CONFIG_REGMAP_IRQ=y -# Power management -CONFIG_PM_OPP=y -CONFIG_ARM_CPU_SUSPEND=y - # usb -CONFIG_USB_OHCI_HCD_PLATFORM=m -CONFIG_USB_EHCI_HCD_PLATFORM=m # CONFIG_USB_OTG_BLACKLIST_HUB is not set CONFIG_USB_ULPI=y CONFIG_AX88796=m @@ -393,6 +416,8 @@ CONFIG_MUSB_PIO_ONLY=y CONFIG_USB_MUSB_HDRC=m CONFIG_USB_MUSB_DUAL_ROLE=y CONFIG_USB_MUSB_DSPS=m +# CONFIG_USB_MUSB_TUSB6010 is not set +# CONFIG_USB_MUSB_UX500 is not set CONFIG_USB_GPIO_VBUS=m CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS_ACM=y @@ -406,17 +431,21 @@ CONFIG_USB_CONFIGFS_OBEX=y CONFIG_USB_CONFIGFS_SERIAL=y # CONFIG_USB_CONFIGFS_F_LB_SS is not set # CONFIG_USB_CONFIGFS_F_FS is not set +# CONFIG_USB_CONFIGFS_F_UAC1 is not set +# CONFIG_USB_CONFIGFS_F_UAC2 is not set +# CONFIG_USB_CONFIGFS_F_MIDI is not set +# CONFIG_USB_CONFIGFS_F_HID is not set # CONFIG_USB_GADGET_DEBUG is not set # CONFIG_USB_GADGET_DEBUG_FILES is not set # CONFIG_USB_GADGET_DEBUG_FS is not set # CONFIG_USB_FUSB300 is not set -# CONFIG_USB_RENESAS_USBHS is not set # CONFIG_USB_FOTG210_UDC is not set # CONFIG_USB_R8A66597 is not set # CONFIG_USB_PXA27X is not set # CONFIG_USB_MV_UDC is not set # CONFIG_USB_MV_U3D is not set +# CONFIG_USB_BDC_UDC is not set # CONFIG_USB_M66592 is not set # CONFIG_USB_AMD5536UDC is not set # CONFIG_USB_NET2272 is not set @@ -571,96 +600,23 @@ CONFIG_SPI_DW_PCI=m # CONFIG_MMC_DW_IDMAC is not set # CONFIG_MMC_DW_K3 is not set # CONFIG_MMC_QCOM_DML is not set -# CONFIG_MMC_DW_ROCKCHIP is not set -CONFIG_USB_DWC2=y -CONFIG_USB_DWC2_HOST=m -CONFIG_USB_DWC2_PLATFORM=y -CONFIG_USB_DWC2_PCI=y -# CONFIG_USB_DWC2_PERIPHERAL is not set +CONFIG_USB_DWC2=m +CONFIG_USB_DWC2_DUAL_ROLE=y +CONFIG_USB_DWC2_PLATFORM=m +CONFIG_USB_DWC2_PCI=m # CONFIG_USB_DWC2_DEBUG is not set # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set CONFIG_USB_DWC3=m -CONFIG_USB_DWC3_OMAP=m +CONFIG_USB_DWC3_DUAL_ROLE=y CONFIG_USB_DWC3_PCI=m # CONFIG_USB_DWC3_DEBUG is not set -# CONFIG_USB_DWC3_KEYSTONE is not set -# CONFIG_USB_DWC3_QCOM is not set # CONFIG_DWC3_HOST_USB3_LPM_ENABLE is not set CONFIG_DW_WATCHDOG=m CONFIG_PCIE_DW=y # Sound -CONFIG_SND_SOC=m -CONFIG_SND_SPI=y CONFIG_SND_ARM=y -CONFIG_SND_ARMAACI=m -CONFIG_SND_COMPRESS_OFFLOAD=m -CONFIG_SND_DESIGNWARE_I2S=m -CONFIG_SND_DMAENGINE_PCM=m -CONFIG_SND_JACK=y -CONFIG_SND_SIMPLE_CARD=m -CONFIG_SND_SOC_ALL_CODECS=m -CONFIG_SND_SOC_DMIC=m -CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y -CONFIG_SND_SOC_HDMI_CODEC=m -CONFIG_SND_SOC_SPDIF=m -# CONFIG_SND_SOC_ADAU1701 is not set -# CONFIG_SND_SOC_AK4104 is not set -# CONFIG_SND_SOC_AK4554 is not set -# CONFIG_SND_SOC_AK4642 is not set -# CONFIG_SND_SOC_AK5386 is not set -# CONFIG_SND_SOC_CS42L52 is not set -# CONFIG_SND_SOC_CS42L73 is not set -# CONFIG_SND_SOC_CS4270 is not set -# CONFIG_SND_SOC_CS4271 is not set -# CONFIG_SND_SOC_CS42XX8_I2C is not set -# CONFIG_SND_SOC_PCM1681 is not set -# CONFIG_SND_SOC_PCM1792A is not set -# CONFIG_SND_SOC_PCM512x_I2C is not set -# CONFIG_SND_SOC_PCM512x_SPI is not set -# CONFIG_SND_SOC_SGTL5000 is not set -# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set -# CONFIG_SND_SOC_TAS5086 is not set -# CONFIG_SND_SOC_TLV320AIC3X is not set -# CONFIG_SND_SOC_WM8510 is not set -# CONFIG_SND_SOC_WM8523 is not set -# CONFIG_SND_SOC_WM8580 is not set -# CONFIG_SND_SOC_WM8711 is not set -# CONFIG_SND_SOC_WM8728 is not set -# CONFIG_SND_SOC_WM8731 is not set -# CONFIG_SND_SOC_WM8737 is not set -# CONFIG_SND_SOC_WM8741 is not set -# CONFIG_SND_SOC_WM8750 is not set -# CONFIG_SND_SOC_WM8753 is not set -# CONFIG_SND_SOC_WM8770 is not set -# CONFIG_SND_SOC_WM8776 is not set -# CONFIG_SND_SOC_WM8804 is not set -# CONFIG_SND_SOC_WM8903 is not set -# CONFIG_SND_SOC_WM8962 is not set -# CONFIG_SND_SOC_TPA6130A2 is not set -# CONFIG_SND_SOC_FSL_ASRC is not set -# CONFIG_SND_SOC_FSL_ESAI is not set -# CONFIG_SND_SOC_FSL_SAI is not set -# CONFIG_SND_SOC_FSL_SPDIF is not set -# CONFIG_SND_SOC_FSL_SSI is not set -# CONFIG_SND_SOC_IMX_AUDMUX is not set -# CONFIG_SND_SOC_ALC5623 is not set -# CONFIG_SND_SOC_CS42L56 is not set -# CONFIG_SND_SOC_STA350 is not set -# CONFIG_SND_SOC_CS35L32 is not set -# CONFIG_SND_SOC_ES8328 is not set -# CONFIG_SND_SOC_SSM2602_SPI is not set -# CONFIG_SND_SOC_SSM2602_I2C is not set -# CONFIG_SND_SOC_SSM4567 is not set -# CONFIG_SND_SOC_WM8978 is not set -# CONFIG_SND_ATMEL_SOC is not set -# CONFIG_SND_SOC_TLV320AIC31XX is not set -# CONFIG_SND_SOC_TAS2552 is not set -# CONFIG_SND_SOC_CS4265 is not set -# CONFIG_SND_SOC_IMX_ES8328 is not set -# CONFIG_SND_SOC_FSL_ASOC_CARD is not set -# CONFIG_SND_EDMA_SOC is not set -# CONFIG_SND_SOC_ROCKCHIP is not set +CONFIG_SND_SOC_AC97_BUS=y # Displays CONFIG_BACKLIGHT_TPS65217=m @@ -722,6 +678,7 @@ CONFIG_REGULATOR_DA9211=m CONFIG_REGULATOR_ISL9305=m CONFIG_REGULATOR_MAX77802=m CONFIG_REGULATOR_PWM=m +CONFIG_SENSORS_LTC2978_REGULATOR=y CONFIG_POWER_AVS=y CONFIG_CHARGER_MANAGER=y @@ -767,7 +724,7 @@ CONFIG_LCD_HX8357=m CONFIG_INPUT_GP2A=m CONFIG_INPUT_ARIZONA_HAPTICS=m CONFIG_INPUT_MC13783_PWRBUTTON=m -# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set +CONFIG_INPUT_SOC_BUTTON_ARRAY=m CONFIG_TOUCHSCREEN_ADS7846=m CONFIG_TOUCHSCREEN_AD7877=m @@ -780,6 +737,10 @@ CONFIG_LEDS_PWM=m CONFIG_LEDS_SYSCON=y CONFIG_BMP085_SPI=m +CONFIG_MFD_SYSCON=y +CONFIG_GPIO_SYSCON=m +CONFIG_POWER_RESET_SYSCON=y + CONFIG_SRAM=y # Ethernet @@ -824,6 +785,7 @@ CONFIG_MFD_CROS_EC_I2C=m CONFIG_MFD_CROS_EC_SPI=m CONFIG_KEYBOARD_CROS_EC=m CONFIG_I2C_CROS_EC_TUNNEL=m +CONFIG_SND_SOC_TS3A227E=m # Needs work/investigation # CONFIG_ARM_KPROBES_TEST is not set @@ -845,7 +807,6 @@ CONFIG_I2C_CROS_EC_TUNNEL=m # CONFIG_EZX_PCAP is not set # CONFIG_CS89x0 is not set # CONFIG_DM9000 is not set -# CONFIG_HW_RANDOM_ATMEL is not set # CONFIG_MTD_AFS_PARTS is not set # CONFIG_SPI_PXA2XX is not set # CONFIG_DEPRECATED_PARAM_STRUCT is not set @@ -854,6 +815,7 @@ CONFIG_I2C_CROS_EC_TUNNEL=m # CONFIG_SERIAL_MAX3100 is not set # CONFIG_SERIAL_MAX310X is not set # CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_SERIAL_BCM63XX is not set # CONFIG_FB_XILINX is not set # CONFIG_BRCMSTB_GISB_ARB is not set # CONFIG_SUNGEM is not set @@ -889,3 +851,4 @@ CONFIG_I2C_CROS_EC_TUNNEL=m # CONFIG_OMAP2_DSS_DEBUG is not set # CONFIG_CRYPTO_DEV_UX500_DEBUG is not set # CONFIG_AB8500_DEBUG is not set +# CONFIG_ARM_KERNMEM_PERMS is not set diff --git a/freed-ora/current/f20/config-armv7-lpae b/freed-ora/current/f20/config-armv7-lpae index b08f4daa1..c42b38c0c 100644 --- a/freed-ora/current/f20/config-armv7-lpae +++ b/freed-ora/current/f20/config-armv7-lpae @@ -1,6 +1,5 @@ # ARM A15 lpae unified arch kernel CONFIG_ARCH_KEYSTONE=y -CONFIG_ARCH_VIRT=y # CONFIG_ARCH_MVEBU is not set # CONFIG_ARCH_MXC is not set @@ -10,7 +9,6 @@ CONFIG_ARCH_VIRT=y # CONFIG_SOC_AM33XX is not set # CONFIG_SOC_AM43XX is not set # CONFIG_SOC_DRA7XX is not set -# CONFIG_ARCH_ROCKCHIP is not set # CONFIG_ARCH_ZYNQ is not set # CONFIG_ARCH_AXXIA is not set @@ -64,6 +62,8 @@ CONFIG_SPI_DAVINCI=m CONFIG_TI_DAVINCI_MDIO=m CONFIG_KEYSTONE_IRQ=m CONFIG_PCI_KEYSTONE=y +CONFIG_MTD_NAND_DAVINCI=m +CONFIG_GPIO_SYSCON=m # Tegra (non A15 device options) # CONFIG_ARCH_TEGRA_2x_SOC is not set diff --git a/freed-ora/current/f20/config-debug b/freed-ora/current/f20/config-debug index 467f33a19..fcc5aac03 100644 --- a/freed-ora/current/f20/config-debug +++ b/freed-ora/current/f20/config-debug @@ -35,6 +35,8 @@ CONFIG_ACPI_DEBUG=y CONFIG_DEBUG_SG=y CONFIG_DEBUG_PI_LIST=y +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_OWNER is not set # CONFIG_DEBUG_PAGEALLOC is not set CONFIG_DEBUG_OBJECTS=y @@ -45,6 +47,7 @@ CONFIG_DEBUG_OBJECTS_RCU_HEAD=y CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 CONFIG_X86_PTDUMP=y +CONFIG_ARM64_PTDUMP=y CONFIG_EFI_PGT_DUMP=y CONFIG_CAN_DEBUG_DEVICES=y @@ -97,6 +100,7 @@ CONFIG_QUOTA_DEBUG=y CONFIG_KGDB_KDB=y CONFIG_KDB_KEYBOARD=y +CONFIG_KDB_DEFAULT_ENABLE=0x1 CONFIG_KDB_CONTINUE_CATASTROPHIC=0 CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y diff --git a/freed-ora/current/f20/config-generic b/freed-ora/current/f20/config-generic index ac614a024..38d5f1d4d 100644 --- a/freed-ora/current/f20/config-generic +++ b/freed-ora/current/f20/config-generic @@ -145,6 +145,7 @@ CONFIG_MMC_USHC=m CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m CONFIG_MMC_VUB300=m +CONFIG_MMC_TOSHIBA_PCI=m # CONFIG_MMC_SPI is not set # CONFIG_MMC_SDHCI_PXAV2 is not set # CONFIG_MMC_SDHCI_PXAV3 is not set @@ -166,6 +167,7 @@ CONFIG_INFINIBAND_SRP=m CONFIG_INFINIBAND_SRPT=m CONFIG_INFINIBAND_USER_MAD=m CONFIG_INFINIBAND_USER_ACCESS=m +CONFIG_INFINIBAND_ON_DEMAND_PAGING=y CONFIG_INFINIBAND_IPATH=m CONFIG_INFINIBAND_ISER=m CONFIG_INFINIBAND_ISERT=m @@ -504,6 +506,7 @@ CONFIG_SCSI_BUSLOGIC=m CONFIG_SCSI_INITIO=m CONFIG_SCSI_FLASHPOINT=y CONFIG_SCSI_DMX3191D=m +CONFIG_SCSI_AM53C974=m # CONFIG_SCSI_EATA is not set # CONFIG_SCSI_EATA_PIO is not set # CONFIG_SCSI_FUTURE_DOMAIN is not set @@ -524,6 +527,7 @@ CONFIG_SCSI_SYM53C8XX_MMIO=y CONFIG_SCSI_QLOGIC_1280=m CONFIG_SCSI_DC395x=m # CONFIG_SCSI_NSP32 is not set +CONFIG_SCSI_WD719X=m CONFIG_SCSI_DEBUG=m CONFIG_SCSI_DC390T=m CONFIG_SCSI_QLA_FC=m @@ -561,7 +565,6 @@ CONFIG_SATA_NV=m CONFIG_SATA_PMP=y CONFIG_SATA_PROMISE=m CONFIG_SATA_QSTOR=m -# CONFIG_SATA_RCAR is not set CONFIG_SATA_SIL=m CONFIG_SATA_SIL24=m CONFIG_SATA_SIS=m @@ -761,6 +764,7 @@ CONFIG_IP_PIMSM_V2=y CONFIG_SYN_COOKIES=y CONFIG_NET_IPVTI=m CONFIG_NET_FOU=m +CONFIG_NET_FOU_IP_TUNNELS=y CONFIG_GENEVE=m CONFIG_INET_AH=m CONFIG_INET_ESP=m @@ -1027,6 +1031,9 @@ CONFIG_NFT_MASQ_IPV4=m CONFIG_NFT_MASQ_IPV6=m CONFIG_NFT_NAT=m CONFIG_NFT_QUEUE=m +CONFIG_NFT_REDIR=m +CONFIG_NFT_REDIR_IPV4=m +CONFIG_NFT_REDIR_IPV6=m CONFIG_NFT_REJECT=m CONFIG_NFT_COMPAT=m @@ -1204,6 +1211,7 @@ CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_POLICE=m CONFIG_NET_ACT_SIMP=m CONFIG_NET_ACT_SKBEDIT=m +CONFIG_NET_ACT_VLAN=m CONFIG_DCB=y CONFIG_DNS_RESOLVER=m @@ -1246,6 +1254,7 @@ CONFIG_DUMMY=m CONFIG_BONDING=m CONFIG_MACVLAN=m CONFIG_MACVTAP=m +CONFIG_IPVLAN=m CONFIG_VXLAN=m CONFIG_EQUALIZER=m CONFIG_TUN=m @@ -1414,7 +1423,7 @@ CONFIG_IXGBE_DCA=y CONFIG_IXGBE_DCB=y CONFIG_IXGBE_HWMON=y CONFIG_I40E=m -# CONFIG_I40E_VXLAN is not set +CONFIG_I40E_VXLAN=y # CONFIG_I40E_DCB is not set # CONFIG_I40E_FCOE is not set CONFIG_I40EVF=m @@ -1488,6 +1497,9 @@ CONFIG_SH_ETH=m CONFIG_NET_VENDOR_RDC=y CONFIG_R6040=m +CONFIG_NET_VENDOR_ROCKER=y +CONFIG_ROCKER=m + # CONFIG_NET_VENDOR_SEEQ is not set # CONFIG_NET_VENDOR_SAMSUNG is not set @@ -1560,8 +1572,6 @@ CONFIG_STE10XP=m CONFIG_VITESSE_PHY=m CONFIG_MICREL_PHY=m # CONFIG_MICREL_KS8995MA is not set -# CONFIG_OMAP_CONTROL_PHY is not set -# CONFIG_PHY_SAMSUNG_USB2 is not set CONFIG_MII=m CONFIG_NET_CORE=y @@ -1570,7 +1580,6 @@ CONFIG_VORTEX=m CONFIG_TYPHOON=m CONFIG_DNET=m - CONFIG_B44=m CONFIG_B44_PCI=y CONFIG_BCMGENET=m @@ -1833,15 +1842,16 @@ CONFIG_MWIFIEX_USB=m CONFIG_IEEE802154=m CONFIG_IEEE802154_6LOWPAN=m CONFIG_IEEE802154_DRIVERS=m -CONFIG_IEEE802154_FAKEHARD=m CONFIG_IEEE802154_FAKELB=m +CONFIG_IEEE802154_CC2520=m # CONFIG_IEEE802154_AT86RF230 is not set # CONFIG_IEEE802154_MRF24J40 is not set -# CONFIG_IEEE802154_CC2520 is not set CONFIG_MAC802154=m CONFIG_NET_MPLS_GSO=m +CONFIG_NET_SWITCHDEV=y + CONFIG_6LOWPAN=m # @@ -1951,6 +1961,8 @@ CONFIG_WINBOND_FIR=m # Bluetooth support # CONFIG_BT=m +CONFIG_BT_BREDR=y +CONFIG_BT_LE=y CONFIG_BT_6LOWPAN=m CONFIG_BT_SCO=y CONFIG_BT_CMTP=m @@ -2199,7 +2211,7 @@ CONFIG_KEYBOARD_ATKBD=y # CONFIG_KEYBOARD_TCA6416 is not set # CONFIG_KEYBOARD_TCA8418 is not set # CONFIG_KEYBOARD_OMAP4 is not set -# CONFIG_KEYBOARD_CAP1106 is not set +# CONFIG_KEYBOARD_CAP11XX is not set CONFIG_INPUT_MOUSE=y CONFIG_MOUSE_PS2=y # CONFIG_MOUSE_PS2_TOUCHKIT is not set @@ -2212,6 +2224,9 @@ CONFIG_MOUSE_BCM5974=m CONFIG_MOUSE_SYNAPTICS_I2C=m CONFIG_MOUSE_SYNAPTICS_USB=m CONFIG_MOUSE_CYAPA=m +CONFIG_MOUSE_ELAN_I2C=m +CONFIG_MOUSE_ELAN_I2C_I2C=y +CONFIG_MOUSE_ELAN_I2C_SMBUS=y CONFIG_INPUT_JOYSTICK=y CONFIG_JOYSTICK_ANALOG=m CONFIG_JOYSTICK_A3D=m @@ -2254,6 +2269,7 @@ CONFIG_TOUCHSCREEN_DYNAPRO=m CONFIG_TOUCHSCREEN_EDT_FT5X06=m CONFIG_TOUCHSCREEN_EETI=m CONFIG_TOUCHSCREEN_EGALAX=m +CONFIG_TOUCHSCREEN_ELAN=m CONFIG_TOUCHSCREEN_ELO=m CONFIG_TOUCHSCREEN_FUJITSU=m CONFIG_TOUCHSCREEN_GUNZE=m @@ -2462,6 +2478,8 @@ CONFIG_I2C_PCA_PLATFORM=m # CONFIG_I2C_SIS96X is not set CONFIG_I2C_SIMTEC=m CONFIG_I2C_STUB=m +CONFIG_I2C_SLAVE=y +CONFIG_I2C_SLAVE_EEPROM=m CONFIG_I2C_TINY_USB=m # CONFIG_I2C_TAOS_EVM is not set # CONFIG_I2C_VIA is not set @@ -2544,6 +2562,7 @@ CONFIG_SENSORS_MAX6697=m CONFIG_SENSORS_MCP3021=m CONFIG_SENSORS_NCT6775=m CONFIG_SENSORS_NCT6683=m +CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_NTC_THERMISTOR=m CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m @@ -2684,6 +2703,7 @@ CONFIG_HID_SENSOR_DEVICE_ROTATION=m # CONFIG_MAG3110 is not set # CONFIG_TMP006 is not set # CONFIG_MLX90614 is not set +# CONFIG_BMP280 is not set # CONFIG_HID_SENSOR_PRESS is not set # CONFIG_IIO_ST_PRESS is not set # CONFIG_KXSD9 is not set @@ -2722,6 +2742,7 @@ CONFIG_HID_SENSOR_DEVICE_ROTATION=m # CONFIG_MPL3115 is not set # CONFIG_MPL115 is not set # CONFIG_SI7005 is not set +# CONFIG_SI7020 is not set # CONFIG_AS3935 is not set CONFIG_KXCJK1013=m # CONFIG_ISL29125 is not set @@ -2817,6 +2838,7 @@ CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_WATCHDOG=m CONFIG_IPMI_SI=m # CONFIG_IPMI_SI_PROBE_DEFAULTS is not set +CONFIG_IPMI_SSIF=m CONFIG_IPMI_POWEROFF=m # @@ -2866,8 +2888,6 @@ CONFIG_WM831X_WATCHDOG=m CONFIG_HW_RANDOM=y CONFIG_HW_RANDOM_TIMERIOMEM=m CONFIG_HW_RANDOM_TPM=m -# CONFIG_HW_RANDOM_ATMEL is not set -# CONFIG_HW_RANDOM_EXYNOS is not set # CONFIG_NVRAM is not set # CONFIG_RTC is not set # CONFIG_RTC_DEBUG is not set @@ -2887,6 +2907,7 @@ CONFIG_RTC_DRV_DS1553=m CONFIG_RTC_DRV_DS1672=m CONFIG_RTC_DRV_DS1742=m CONFIG_RTC_DRV_DS1374=m +CONFIG_RTC_DRV_DS1374_WDT=y # CONFIG_RTC_DRV_EP93XX is not set CONFIG_RTC_DRV_FM3130=m # CONFIG_RTC_DRV_HYM8563 is not set @@ -2989,6 +3010,7 @@ CONFIG_DRM_NOUVEAU=m CONFIG_NOUVEAU_DEBUG=5 CONFIG_NOUVEAU_DEBUG_DEFAULT=3 CONFIG_DRM_NOUVEAU_BACKLIGHT=y +CONFIG_DRM_I2C_ADV7511=m CONFIG_DRM_I2C_CH7006=m CONFIG_DRM_I2C_SIL164=m CONFIG_DRM_I2C_NXP_TDA998X=m @@ -3111,7 +3133,6 @@ CONFIG_VIDEO_TLG2300=m # CONFIG_VIDEO_M5MOLS is not set # CONFIG_VIDEO_TW68 is not set # CONFIG_VIDEO_VIVID is not set -# CONFIG_EXYNOS_VIDEO is not set CONFIG_VIDEO_USBTV=m # CONFIG_VIDEO_AU0828_RC is not set @@ -3171,6 +3192,7 @@ CONFIG_DVB_DM1105=m CONFIG_DVB_FIREDTV=m CONFIG_DVB_NGENE=m CONFIG_DVB_DDBRIDGE=m +CONFIG_DVB_SMIPCIE=m CONFIG_DVB_USB_TECHNISAT_USB2=m CONFIG_DVB_USB_V2=m @@ -3261,6 +3283,7 @@ CONFIG_IR_REDRAT3=m CONFIG_IR_ENE=m CONFIG_IR_STREAMZAP=m CONFIG_IR_WINBOND_CIR=m +CONFIG_IR_IGORPLUGUSB=m CONFIG_IR_IGUANA=m CONFIG_IR_TTUSBIR=m CONFIG_IR_GPIO_CIR=m @@ -3392,10 +3415,12 @@ CONFIG_SND=y CONFIG_SOUND_OSS_CORE_PRECLAIM=y # CONFIG_SND_DEBUG_VERBOSE is not set CONFIG_SND_VERBOSE_PROCFS=y -CONFIG_SND_SEQUENCER=y +CONFIG_SND_COMPRESS_OFFLOAD=m CONFIG_SND_HRTIMER=y +CONFIG_SND_JACK=y CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_SEQUENCER=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_SEQ_RTCTIMER_DEFAULT=y CONFIG_SND_OSSEMUL=y @@ -3537,8 +3562,9 @@ CONFIG_SND_FIREWIRE_SPEAKERS=m CONFIG_SND_ISIGHT=m CONFIG_SND_SCS1X=m CONFIG_SND_DICE=m +CONFIG_SND_OXFW=m CONFIG_SND_FIREWORKS=m -# CONFIG_SND_BEBOB is not set +CONFIG_SND_BEBOB=m # # Open Sound System @@ -3634,6 +3660,7 @@ CONFIG_UHID=m CONFIG_HID_PID=y CONFIG_LOGITECH_FF=y CONFIG_HID_LOGITECH_DJ=m +CONFIG_HID_LOGITECH_HIDPP=m CONFIG_LOGIRUMBLEPAD2_FF=y CONFIG_PANTHERLORD_FF=y CONFIG_THRUSTMASTER_FF=y @@ -3649,6 +3676,7 @@ CONFIG_LOGIWHEELS_FF=y CONFIG_HID_MAGICMOUSE=y CONFIG_HID_MULTITOUCH=m CONFIG_HID_NTRIG=y +CONFIG_HID_PLANTRONICS=m CONFIG_HID_PRIMAX=m CONFIG_HID_PRODIKEYS=m CONFIG_HID_DRAGONRISE=m @@ -4042,7 +4070,9 @@ CONFIG_MFD_VIPERBOARD=m # CONFIG_MFD_TPS65912 is not set # CONFIG_MFD_SYSCON is not set # CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DLN2 is not set # CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_ATMEL_HLCDC is not set # CONFIG_MFD_BCM590XX is not set # CONFIG_MFD_TPS65218 is not set # CONFIG_MFD_WM831X_SPI is not set @@ -4172,6 +4202,7 @@ CONFIG_CRAMFS=m CONFIG_SQUASHFS=m CONFIG_SQUASHFS_XATTR=y CONFIG_SQUASHFS_LZO=y +CONFIG_SQUASHFS_LZ4=y CONFIG_SQUASHFS_XZ=y CONFIG_SQUASHFS_ZLIB=y # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set @@ -4581,6 +4612,19 @@ CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=m CONFIG_INITRAMFS_SOURCE="" + +# These were all enabled by default before 3.19 made them individually +# selectable. Possibly look at enabling only the one(s) Fedora actually +# uses. +CONFIG_RD_GZIP=y +CONFIG_RD_BZIP2=y +CONFIG_RD_LZMA=y +CONFIG_RD_XZ=y +CONFIG_RD_LZO=y +CONFIG_RD_LZ4=y + +CONFIG_INIT_FALLBACK=y + CONFIG_KEYS=y CONFIG_PERSISTENT_KEYRINGS=y CONFIG_BIG_KEYS=y @@ -4749,7 +4793,81 @@ CONFIG_SND_INDIGOIO=m CONFIG_SND_INDIGODJ=m CONFIG_SND_INDIGOIOX=m CONFIG_SND_INDIGODJX=m -# CONFIG_SND_SOC is not set + +CONFIG_SND_SOC=m +CONFIG_SND_SIMPLE_CARD=m +CONFIG_SND_DESIGNWARE_I2S=m +CONFIG_SND_SOC_ALL_CODECS=m +CONFIG_SND_SOC_DMIC=m +CONFIG_SND_SOC_HDMI_CODEC=m +CONFIG_SND_SOC_SPDIF=m +CONFIG_SND_DMAENGINE_PCM=m +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271 is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1792A is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8804 is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_FSL_SSI is not set +# CONFIG_SND_SOC_IMX_AUDMUX is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_ES8328 is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM4567 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_IMX_ES8328 is not set +# CONFIG_SND_SOC_FSL_ASOC_CARD is not set +# CONFIG_SND_EDMA_SOC is not set +# CONFIG_SND_SOC_ARNDALE_RT5631_ALC5631 is not set +# CONFIG_SND_SOC_CS42L51_I2C is not set +# CONFIG_SND_SOC_CS4271_I2C is not set +# CONFIG_SND_SOC_CS4271_SPI is not set +# CONFIG_SND_SOC_RT5631 is not set +# CONFIG_SND_SOC_TFA9879 is not set +# CONFIG_SND_SOC_TLV320AIC23_I2C is not set +# CONFIG_SND_SOC_TLV320AIC23_SPI is not set +# CONFIG_SND_SOC_TS3A227E is not set CONFIG_BALLOON_COMPACTION=y CONFIG_COMPACTION=y @@ -4769,6 +4887,7 @@ CONFIG_LEDS_DELL_NETBOOKS=m # CONFIG_LEDS_OT200 is not set # CONFIG_LEDS_PWM is not set # CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set # CONFIG_LEDS_PCA963X is not set # CONFIG_LEDS_SYSCON is not set CONFIG_LEDS_TRIGGERS=y @@ -4966,17 +5085,18 @@ CONFIG_GPIOLIB=y # CONFIG_PINCONF is not set CONFIG_NET_DSA=m +CONFIG_NET_DSA_HWMON=y CONFIG_NET_DSA_MV88E6060=m CONFIG_NET_DSA_MV88E6131=m CONFIG_NET_DSA_MV88E6123_61_65=m CONFIG_NET_DSA_MV88E6171=m +CONFIG_NET_DSA_MV88E6352=m CONFIG_NET_DSA_BCM_SF2=m # Used by Maemo, we don't care. # CONFIG_PHONET is not set # CONFIG_ICS932S401 is not set -# CONFIG_ATMEL_SSC is not set # CONFIG_C2PORT is not set @@ -5063,6 +5183,10 @@ CONFIG_USBIP_HOST=m # CONFIG_GS_FPGABOOT is not set # CONFIG_UNISYSSPAR is not set # CONFIG_MEDIA_TUNER_MSI001 is not set +# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set +# CONFIG_VIDEO_SAA7191 is not set +# CONFIG_DVB_MN88472 is not set +# CONFIG_DVB_MN88473 is not set # END OF STAGING # diff --git a/freed-ora/current/f20/config-nodebug b/freed-ora/current/f20/config-nodebug index ed6913376..01008d646 100644 --- a/freed-ora/current/f20/config-nodebug +++ b/freed-ora/current/f20/config-nodebug @@ -35,6 +35,8 @@ CONFIG_CPUMASK_OFFSTACK=y # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_PI_LIST is not set +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_OWNER is not set # CONFIG_DEBUG_PAGEALLOC is not set # CONFIG_DEBUG_OBJECTS is not set @@ -44,7 +46,8 @@ CONFIG_CPUMASK_OFFSTACK=y # CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 -# CONFIG_X86_PTDUMP is not set +CONFIG_X86_PTDUMP=y +# CONFIG_ARM64_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set # CONFIG_CAN_DEBUG_DEVICES is not set @@ -96,6 +99,7 @@ CONFIG_PM_ADVANCED_DEBUG=y CONFIG_KGDB_KDB=y +CONFIG_KDB_DEFAULT_ENABLE=0x0 CONFIG_KDB_KEYBOARD=y CONFIG_KDB_CONTINUE_CATASTROPHIC=0 diff --git a/freed-ora/current/f20/config-powerpc-generic b/freed-ora/current/f20/config-powerpc-generic index ce4da577f..e3dbc6a9e 100644 --- a/freed-ora/current/f20/config-powerpc-generic +++ b/freed-ora/current/f20/config-powerpc-generic @@ -49,6 +49,7 @@ CONFIG_SND_AOA_ONYX=m CONFIG_SND_AOA_TAS=m CONFIG_SND_AOA_TOONIE=m CONFIG_SND_AOA_SOUNDBUS_I2S=m +# CONFIG_SND_SOC is not set CONFIG_XMON=y # CONFIG_XMON_DEFAULT is not set @@ -306,6 +307,7 @@ CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m # CONFIG_MFD_AAT2870_CORE is not set # CONFIG_GPIO_SCH is not set +# CONFIG_GPIO_74XX_MMIO is not set # CONFIG_PPC_MPC512x is not set # CONFIG_RTC_DRV_MPC5121 is not set @@ -330,6 +332,7 @@ CONFIG_I2C_MPC=m # CONFIG_NET_VENDOR_TOSHIBA is not set # CONFIG_CPU_IDLE is not set +# CONFIG_OF_UNITTEST is not set # CONFIG_OF_SELFTEST is not set # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set # CONFIG_INPUT_GP2A is not set diff --git a/freed-ora/current/f20/config-powerpc64 b/freed-ora/current/f20/config-powerpc64 index 49b4f2e70..5d9d29b22 100644 --- a/freed-ora/current/f20/config-powerpc64 +++ b/freed-ora/current/f20/config-powerpc64 @@ -15,6 +15,7 @@ CONFIG_PPC_POWERNV_RTAS=y CONFIG_SENSORS_IBMPOWERNV=y CONFIG_HW_RANDOM_POWERNV=m CONFIG_POWERNV_CPUFREQ=m +CONFIG_IPMI_POWERNV=m CONFIG_SCOM_DEBUGFS=y # CONFIG_PPC_PASEMI is not set # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set @@ -165,6 +166,9 @@ CONFIG_HW_RANDOM_AMD=m CONFIG_UIO_PDRV=m +CONFIG_I2C_OPAL=m +CONFIG_RTC_DRV_OPAL=m + CONFIG_HW_RANDOM_PSERIES=m CONFIG_CRYPTO_DEV_NX=y CONFIG_CRYPTO_842=m diff --git a/freed-ora/current/f20/config-powerpc64p7 b/freed-ora/current/f20/config-powerpc64p7 index 6a5e1c6d9..eabb28c6e 100644 --- a/freed-ora/current/f20/config-powerpc64p7 +++ b/freed-ora/current/f20/config-powerpc64p7 @@ -10,6 +10,7 @@ CONFIG_PPC_POWERNV_RTAS=y CONFIG_HW_RANDOM_POWERNV=m CONFIG_SENSORS_IBMPOWERNV=y CONFIG_POWERNV_CPUFREQ=m +CONFIG_IPMI_POWERNV=m CONFIG_SCOM_DEBUGFS=y # CONFIG_PPC_PASEMI is not set # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set @@ -155,6 +156,9 @@ CONFIG_HW_RANDOM_AMD=m CONFIG_UIO_PDRV=m +CONFIG_I2C_OPAL=m +CONFIG_RTC_DRV_OPAL=m + CONFIG_HW_RANDOM_PSERIES=m CONFIG_CRYPTO_DEV_NX=y CONFIG_CRYPTO_842=m diff --git a/freed-ora/current/f20/config-s390x b/freed-ora/current/f20/config-s390x index 9534f51be..5f35e494c 100644 --- a/freed-ora/current/f20/config-s390x +++ b/freed-ora/current/f20/config-s390x @@ -63,6 +63,7 @@ CONFIG_SCLP_VT220_TTY=y CONFIG_SCLP_VT220_CONSOLE=y CONFIG_SCLP_CPI=m CONFIG_SCLP_ASYNC=m +CONFIG_SCLP_ASYNC_ID="000000000" CONFIG_S390_TAPE=m CONFIG_S390_TAPE_3590=m @@ -150,8 +151,6 @@ CONFIG_VIRT_CPU_ACCOUNTING=y # CONFIG_CLAW is not set -# CONFIG_ATMEL is not set - # CONFIG_CDROM_PKTCDVD is not set # CONFIG_ATA_OVER_ETH is not set # CONFIG_MII is not set diff --git a/freed-ora/current/f20/config-x86-32-generic b/freed-ora/current/f20/config-x86-32-generic index 5daa9b8a3..bdf1b753a 100644 --- a/freed-ora/current/f20/config-x86-32-generic +++ b/freed-ora/current/f20/config-x86-32-generic @@ -197,6 +197,7 @@ CONFIG_BACKLIGHT_PWM=m # CONFIG_EDAC_SBRIDGE is not set +# CONFIG_OF_UNITTEST is not set # CONFIG_OF_SELFTEST is not set # CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set # CONFIG_INPUT_GP2A is not set @@ -206,6 +207,7 @@ CONFIG_BACKLIGHT_PWM=m # CONFIG_MDIO_BUS_MUX_GPIO is not set # CONFIG_MDIO_BUS_MUX_MMIOREG is not set # CONFIG_GPIO_SODAVILLE is not set +# CONFIG_GPIO_74XX_MMIO is not set # CONFIG_BACKLIGHT_OT200 is not set # CONFIG_MLX5_INFINIBAND is not set diff --git a/freed-ora/current/f20/config-x86-generic b/freed-ora/current/f20/config-x86-generic index 1af8775a4..a473db36c 100644 --- a/freed-ora/current/f20/config-x86-generic +++ b/freed-ora/current/f20/config-x86-generic @@ -10,12 +10,12 @@ CONFIG_HPET_TIMER=y CONFIG_I8K=m CONFIG_SONYPI_COMPAT=y -CONFIG_MICROCODE=m -# CONFIG_MICROCODE_EARLY is not set +CONFIG_MICROCODE=y +CONFIG_MICROCODE_EARLY=y CONFIG_MICROCODE_INTEL=y CONFIG_MICROCODE_INTEL_EARLY=y CONFIG_MICROCODE_AMD=y -# CONFIG_MICROCODE_AMD_EARLY is not set +CONFIG_MICROCODE_AMD_EARLY=y CONFIG_X86_MSR=y CONFIG_X86_CPUID=y @@ -34,6 +34,10 @@ CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1 CONFIG_X86_PAT=y CONFIG_X86_PM_TIMER=y +# This requires changes to binutils and the compiler. Plus you can't actually +# buy hardware with MPX yet. So... leave it off until all of that seems set. +# CONFIG_X86_INTEL_MPX is not set + CONFIG_EFI=y CONFIG_EFI_STUB=y # CONFIG_EFI_MIXED is not set @@ -99,6 +103,8 @@ CONFIG_ACPI_CUSTOM_METHOD=m CONFIG_ACPI_BGRT=y # CONFIG_ACPI_EXTLOG is not set +# CONFIG_PMIC_OPREGION is not set + CONFIG_X86_INTEL_PSTATE=y CONFIG_X86_ACPI_CPUFREQ=m CONFIG_X86_ACPI_CPUFREQ_CPB=y @@ -166,6 +172,8 @@ CONFIG_DCDBAS=m CONFIG_EDAC=y CONFIG_EDAC_MM_EDAC=m +# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set +CONFIG_EDAC_AMD64=m CONFIG_EDAC_AMD76X=m CONFIG_EDAC_AMD8111=m CONFIG_EDAC_AMD8131=m @@ -327,6 +335,7 @@ CONFIG_INTEL_IOATDMA=m CONFIG_SENSORS_I5K_AMB=m CONFIG_SENSORS_FAM15H_POWER=m CONFIG_SENSORS_ACPI_POWER=m +CONFIG_SENSORS_I5500=m # CONFIG_CPA_DEBUG is not set @@ -488,12 +497,28 @@ CONFIG_PWM_LPSS_PCI=m CONFIG_PWM_LPSS_PLATFORM=m CONFIG_PINCTRL=y CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_CHERRYVIEW=m + +#baytrail/cherrytrail stuff +CONFIG_KEYBOARD_GPIO=m +CONFIG_INPUT_SOC_BUTTON_ARRAY=m +CONFIG_SND_SOC_INTEL_SST=m +CONFIG_SND_SOC_INTEL_SST_ACPI=m +CONFIG_SND_SOC_INTEL_HASWELL_MACH=m +CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m +CONFIG_SND_SOC_INTEL_BAYTRAIL=m +CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m +CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m +CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m + + # CONFIG_INTEL_POWERCLAMP is not set CONFIG_X86_PKG_TEMP_THERMAL=m CONFIG_INTEL_SOC_DTS_THERMAL=m -CONFIG_INTEL_RAPL=m CONFIG_INT340X_THERMAL=m +CONFIG_INTEL_RAPL=m CONFIG_VMWARE_VMCI=m CONFIG_VMWARE_VMCI_VSOCKETS=m diff --git a/freed-ora/current/f20/config-x86_64-generic b/freed-ora/current/f20/config-x86_64-generic index 89b7070ef..3a2ef08b2 100644 --- a/freed-ora/current/f20/config-x86_64-generic +++ b/freed-ora/current/f20/config-x86_64-generic @@ -177,6 +177,8 @@ CONFIG_SFC_MTD=y # Override MTD stuff because SFC_MTD needs it CONFIG_MTD_BLOCK=m +CONFIG_HSA_AMD=m + CONFIG_NO_HZ_FULL=y # CONFIG_NO_HZ_IDLE is not set # CONFIG_NO_HZ_FULL_ALL is not set diff --git a/freed-ora/current/f20/deblob-3.18 b/freed-ora/current/f20/deblob-3.19 index a6a79fb82..faf2825aa 100755 --- a/freed-ora/current/f20/deblob-3.18 +++ b/freed-ora/current/f20/deblob-3.19 @@ -1,6 +1,6 @@ -#!/bin/sh +#! /bin/sh -# Copyright (C) 2008-2014 Alexandre Oliva <lxoliva@fsfla.org> +# Copyright (C) 2008-2015 Alexandre Oliva <lxoliva@fsfla.org> # Copyright (C) 2008 Jeff Moe # Copyright (C) 2009 Rubén RodrÃguez <ruben@gnu.org> # @@ -48,7 +48,9 @@ # For each kver release, start extra with an empty string, then count # from 1 if changes are needed that require rebuilding the tarball. -kver=3.18 extra= +kver=3.19 extra= + +set -e case $1 in --force) @@ -170,6 +172,12 @@ clean_kconfig () { ;; *) if $have_check; then + filetest $1 || return + if sed -n "/^\(menu\)\?config $2$/p" $1 | grep . > /dev/null; then + : + else + die $1 does not contain matches for $2 + fi return fi ;; @@ -317,7 +325,7 @@ done # Identify the tarball. grep -q 'EXTRAVERSION.*-gnu' Makefile || -clean_sed "s,^EXTRAVERSION.*,&-gnu$extra, +clean_sed "/^EXTRAVERSION *=/ { s,=$,& ,; s,$,&-gnu$extra,; } " Makefile 'added -gnu to EXTRAVERSION' grep -q Linux-libre README || @@ -486,28 +494,28 @@ s,\(timeout = \)\(firmware_loading_timeout()\),\1is_nonfree_firmware(name) ? 1 : announce MICROCODE_AMD - "AMD microcode patch loading support" reject_firmware arch/x86/kernel/cpu/microcode/amd.c clean_blob arch/x86/kernel/cpu/microcode/amd.c -clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD' +clean_kconfig arch/x86/Kconfig MICROCODE_AMD clean_mk CONFIG_MICROCODE_AMD arch/x86/kernel/cpu/microcode/Makefile announce MICROCODE_AMD_EARLY - "Early load AMD microcode" clean_blob arch/x86/kernel/cpu/microcode/amd_early.c -clean_kconfig arch/x86/Kconfig 'MICROCODE_AMD_EARLY' +clean_kconfig arch/x86/Kconfig MICROCODE_AMD_EARLY clean_mk CONFIG_MICROCODE_AMD_EARLY arch/x86/kernel/cpu/microcode/Makefile announce MICROCODE_INTEL - "Intel microcode patch loading support" reject_firmware arch/x86/kernel/cpu/microcode/intel.c clean_blob arch/x86/kernel/cpu/microcode/intel.c -clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL' +clean_kconfig arch/x86/Kconfig MICROCODE_INTEL clean_mk CONFIG_MICROCODE_INTEL arch/x86/kernel/cpu/microcode/Makefile announce MICROCODE_INTEL_EARLY - "Early load Intel microcode" clean_blob arch/x86/kernel/cpu/microcode/intel_early.c -clean_kconfig arch/x86/Kconfig 'MICROCODE_INTEL_EARLY' +clean_kconfig arch/x86/Kconfig MICROCODE_INTEL_EARLY clean_mk CONFIG_MICROCODE_INTEL_EARLY arch/x86/kernel/cpu/microcode/Makefile announce MICROCODE_EARLY - "Early load microcode" clean_blob Documentation/x86/early-microcode.txt -clean_kconfig arch/x86/Kconfig 'MICROCODE_EARLY' +clean_kconfig arch/x86/Kconfig MICROCODE_EARLY clean_mk CONFIG_MICROCODE_EARLY arch/x86/kernel/cpu/microcode/Makefile # arm @@ -516,7 +524,7 @@ announce IXP4XX_NPE - "IXP4xx Network Processor Engine support" reject_firmware arch/arm/mach-ixp4xx/ixp4xx_npe.c clean_blob arch/arm/mach-ixp4xx/ixp4xx_npe.c clean_blob Documentation/arm/IXP4xx -clean_kconfig arch/arm/mach-ixp4xx/Kconfig 'ARCH_IXP4XX' +clean_kconfig arch/arm/mach-ixp4xx/Kconfig IXP4XX_NPE clean_mk CONFIG_IXP4XX_NPE arch/arm/mach-ixp4xx/Makefile announce ARCH_NETX - "Hilscher NetX based" @@ -525,7 +533,7 @@ s,\([" ]\)request_firmware(,\1reject_firmware(, ' arch/arm/mach-netx/xc.c 'disabled non-Free firmware-loading machinery' clean_blob arch/arm/mach-netx/xc.c clean_blob drivers/net/ethernet/netx-eth.c -clean_kconfig arch/arm/Kconfig 'ARCH_NETX' +clean_kconfig arch/arm/Kconfig ARCH_NETX clean_mk CONFIG_ARCH_NETX arch/arm/Makefile # mips @@ -534,7 +542,7 @@ clean_mk CONFIG_ARCH_NETX arch/arm/Makefile # If it's from some user-set property, we could reenable it. -lxo announce XRX200_PHY_FW - "XRX200 PHY firmware loader" reject_firmware arch/mips/lantiq/xway/xrx200_phy_fw.c -clean_kconfig arch/mips/lantiq/Kconfig 'XRX200_PHY_FW' +clean_kconfig arch/mips/lantiq/Kconfig XRX200_PHY_FW clean_mk CONFIG_XRX200_PHY_FW arch/mips/lantiq/xway/Makefile ####### @@ -545,7 +553,7 @@ announce ATM_AMBASSADOR - "Madge Ambassador, Collage PCI 155 Server" reject_firmware drivers/atm/ambassador.c clean_blob drivers/atm/ambassador.c clean_fw firmware/atmsar11.HEX firmware/atmsar11.fw -clean_kconfig drivers/atm/Kconfig 'ATM_AMBASSADOR' +clean_kconfig drivers/atm/Kconfig ATM_AMBASSADOR clean_mk CONFIG_ATM_AMBASSADOR drivers/atm/Makefile announce ATM_FORE200E - "FORE Systems 200E-series" @@ -554,13 +562,13 @@ clean_blob drivers/atm/fore200e.c clean_blob Documentation/networking/fore200e.txt clean_blob drivers/atm/.gitignore clean_blob Documentation/dontdiff -clean_kconfig drivers/atm/Kconfig 'ATM_FORE200E' +clean_kconfig drivers/atm/Kconfig ATM_FORE200E clean_mk CONFIG_ATM_FORE200E drivers/atm/Makefile announce ATM_SOLOS - "Solos ADSL2+ PCI Multiport card driver" reject_firmware drivers/atm/solos-pci.c clean_blob drivers/atm/solos-pci.c -clean_kconfig drivers/atm/Kconfig 'ATM_SOLOS' +clean_kconfig drivers/atm/Kconfig ATM_SOLOS clean_mk CONFIG_ATM_SOLOS drivers/atm/Makefile ########## @@ -570,12 +578,12 @@ clean_mk CONFIG_ATM_SOLOS drivers/atm/Makefile announce CRYPTO_DEV_QAT_DH895xCC - "Support for Intel(R) DH895xCC" clean_blob drivers/crypto/qat/qat_dh895xcc/adf_dh895xcc_hw_data.h clean_blob drivers/crypto/qat/qat_dh895xcc/adf_drv.c -clean_kconfig drivers/crypto/qat/Kconfig 'CRYPTO_DEV_QAT_DH895xCC' +clean_kconfig drivers/crypto/qat/Kconfig CRYPTO_DEV_QAT_DH895xCC clean_mk CONFIG_CRYPTO_DEV_QAT_DH895xCC drivers/crypto/qat/Makefile announce CRYPTO_DEV_QAT - "Common bits for Intel(R) QuickAssist Technology" reject_firmware drivers/crypto/qat/qat_common/adf_accel_engine.c -clean_kconfig drivers/crypto/qat/Kconfig 'CRYPTO_DEV_QAT' +clean_kconfig drivers/crypto/qat/Kconfig CRYPTO_DEV_QAT clean_mk CONFIG_CRYPTO_DEV_QAT drivers/crypto/qat/Makefile ######## @@ -585,19 +593,19 @@ clean_mk CONFIG_CRYPTO_DEV_QAT drivers/crypto/qat/Makefile announce CYCLADES - "Cyclades async mux support" reject_firmware drivers/tty/cyclades.c clean_blob drivers/tty/cyclades.c -clean_kconfig drivers/tty/Kconfig 'CYCLADES' +clean_kconfig drivers/tty/Kconfig CYCLADES clean_mk CONFIG_CYCLADES drivers/tty/Makefile announce ISI - "Multi-Tech multiport card support" reject_firmware drivers/tty/isicom.c clean_blob drivers/tty/isicom.c -clean_kconfig drivers/tty/Kconfig 'ISI' +clean_kconfig drivers/tty/Kconfig ISI clean_mk CONFIG_ISI drivers/tty/Makefile announce MOXA_INTELLIO - "Moxa Intellio support" reject_firmware drivers/tty/moxa.c clean_blob drivers/tty/moxa.c -clean_kconfig drivers/tty/Kconfig 'MOXA_INTELLIO' +clean_kconfig drivers/tty/Kconfig MOXA_INTELLIO clean_mk CONFIG_MOXA_INTELLIO drivers/tty/Makefile # gpu drm @@ -605,7 +613,7 @@ clean_mk CONFIG_MOXA_INTELLIO drivers/tty/Makefile announce DRM_AST - "AST server chips" reject_firmware drivers/gpu/drm/ast/ast_dp501.c clean_blob drivers/gpu/drm/ast/ast_dp501.c -clean_kconfig drivers/gpu/drm/ast/Kconfig 'DRM_AST' +clean_kconfig drivers/gpu/drm/ast/Kconfig DRM_AST clean_mk CONFIG_DRM_AST drivers/gpu/drm/ast/Makefile announce DRM_NOUVEAU - "Nouveau (nVidia) cards" @@ -615,7 +623,7 @@ reject_firmware drivers/gpu/drm/nouveau/core/engine/falcon.c clean_blob drivers/gpu/drm/nouveau/core/engine/falcon.c reject_firmware drivers/gpu/drm/nouveau/core/engine/xtensa.c clean_blob drivers/gpu/drm/nouveau/core/engine/xtensa.c -clean_kconfig drivers/gpu/drm/nouveau/Kconfig 'DRM_NOUVEAU' +clean_kconfig drivers/gpu/drm/nouveau/Kconfig DRM_NOUVEAU clean_mk CONFIG_DRM_NOUVEAU drivers/gpu/drm/nouveau/Makefile announce DRM_MGA - "Matrox g200/g400" @@ -623,20 +631,20 @@ drop_fw_file firmware/matrox/g200_warp.H16 firmware/matrox/g200_warp.fw drop_fw_file firmware/matrox/g400_warp.H16 firmware/matrox/g400_warp.fw reject_firmware drivers/gpu/drm/mga/mga_warp.c clean_blob drivers/gpu/drm/mga/mga_warp.c -clean_kconfig drivers/gpu/drm/Kconfig 'DRM_MGA' +clean_kconfig drivers/gpu/drm/Kconfig DRM_MGA clean_mk CONFIG_DRM_MGA drivers/gpu/drm/Makefile announce DRM_MSM - "MSM DRM" reject_firmware drivers/gpu/drm/msm/adreno/adreno_gpu.c clean_blob drivers/gpu/drm/msm/adreno/adreno_device.c -clean_kconfig divers/gpu/drm/msm/Kconfig 'DRM_MSM' +clean_kconfig drivers/gpu/drm/msm/Kconfig DRM_MSM clean_mk CONFIG_DRM_MSM drivers/gpu/drm/msm/Makefile announce DRM_R128 - "ATI Rage 128" drop_fw_file firmware/r128/r128_cce.bin.ihex firmware/r128/r128_cce.bin reject_firmware drivers/gpu/drm/r128/r128_cce.c clean_blob drivers/gpu/drm/r128/r128_cce.c -clean_kconfig drivers/gpu/drm/Kconfig 'DRM_R128' +clean_kconfig drivers/gpu/drm/Kconfig DRM_R128 clean_mk CONFIG_DRM_R128 drivers/gpu/drm/Makefile announce DRM_RADEON - "ATI Radeon" @@ -685,9 +693,15 @@ reject_firmware drivers/gpu/drm/radeon/radeon_uvd.c clean_blob drivers/gpu/drm/radeon/radeon_uvd.c reject_firmware drivers/gpu/drm/radeon/radeon_vce.c clean_blob drivers/gpu/drm/radeon/radeon_vce.c -clean_kconfig drivers/gpu/drm/Kconfig 'DRM_RADEON' +clean_kconfig drivers/gpu/drm/Kconfig DRM_RADEON clean_mk CONFIG_DRM_RADEON drivers/gpu/drm/Makefile +announce DRM_STI - "DRM Support for STMicroelectronics SoC stiH41x Series" +reject_firmware drivers/gpu/drm/sti/sti_hqvdp.c +clean_blob drivers/gpu/drm/sti/sti_hqvdp.c +clean_kconfig drivers/gpu/drm/sti/Kconfig DRM_STI +clean_mk CONFIG_DRM_STI drivers/gpu/drm/sti/Makefile + ####### # dma # ####### @@ -706,7 +720,7 @@ clean_blob arch/arm/boot/dts/imx6qdl.dtsi clean_blob arch/arm/boot/dts/imx6sl.dtsi clean_blob arch/arm/boot/dts/imx6sx.dtsi clean_blob Documentation/devicetree/bindings/dma/fsl-imx-sdma.txt -clean_kconfig drivers/dma/Kconfig 'IMX_SDMA' +clean_kconfig drivers/dma/Kconfig IMX_SDMA clean_mk CONFIG_IMX_SDMA drivers/dma/Makefile ######### @@ -719,7 +733,7 @@ announce MEDIA_TUNER_SI2157 - "Silicon Labs Si2157 silicon tuner" reject_firmware drivers/media/tuners/si2157.c clean_blob drivers/media/tuners/si2157.c clean_blob drivers/media/tuners/si2157_priv.h -clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_SI2157' +clean_kconfig drivers/media/tuners/Kconfig MEDIA_TUNER_SI2157 clean_mk CONFIG_MEDIA_TUNER_SI2157 drivers/media/tuners/Makefile announce MEDIA_TUNER_XC2028 - "XCeive xc2028/xc3028 tuners" @@ -738,12 +752,12 @@ undefault_firmware 'XC\(2028\|3028L\)' \ drivers/media/usb/dvb-usb/cxusb.c reject_firmware drivers/media/tuners/tuner-xc2028.c clean_blob drivers/media/tuners/tuner-xc2028.c -clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC2028' +clean_kconfig drivers/media/tuners/Kconfig MEDIA_TUNER_XC2028 clean_mk CONFIG_MEDIA_TUNER_XC2028 drivers/media/tuners/Makefile announce VIDEO_TM6000_DVB - "DVB Support for tm6000 based TV cards" clean_blob drivers/media/usb/tm6000/tm6000-cards.c -clean_kconfig drivers/media/usb/tm6000/Kconfig 'VIDEO_TM6000_DVB' +clean_kconfig drivers/media/usb/tm6000/Kconfig VIDEO_TM6000_DVB clean_mk CONFIG_VIDEO_TM6000_DVB drivers/media/usb/tm6000/Makefile announce MEDIA_TUNER_XC4000 - "Xceive XC4000 silicon tuner" @@ -751,7 +765,7 @@ undefine_macro "XC4000_DEFAULT_FIRMWARE\(\|_NEW\)" "\"/*(DEBLOBBED)*/\"" \ "disabled non-Free firmware" drivers/media/tuners/xc4000.c maybe_reject_firmware drivers/media/tuners/xc4000.c clean_blob drivers/media/tuners/xc4000.c -clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC4000' +clean_kconfig drivers/media/tuners/Kconfig MEDIA_TUNER_XC4000 clean_mk CONFIG_MEDIA_TUNER_XC4000 drivers/media/tuners/Makefile announce MEDIA_TUNER_XC5000 - "Xceive XC5000 silicon tuner" @@ -759,17 +773,17 @@ undefault_firmware 'XC5000' \ drivers/media/usb/cx231xx/cx231xx-cards.c reject_firmware drivers/media/tuners/xc5000.c clean_blob drivers/media/tuners/xc5000.c -clean_kconfig drivers/media/tuners/Kconfig 'MEDIA_TUNER_XC5000' +clean_kconfig drivers/media/tuners/Kconfig MEDIA_TUNER_XC5000 clean_mk CONFIG_MEDIA_TUNER_XC5000 drivers/media/tuners/Makefile announce DVB_USB - "Support for various USB DVB devices" reject_firmware drivers/media/usb/dvb-usb/dvb-usb-firmware.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB clean_mk CONFIG_DVB_USB drivers/media/usb/dvb-usb/Makefile announce DVB_USB_V2 - "Support for various USB DVB devices v2" reject_firmware drivers/media/usb/dvb-usb-v2/dvb_usb_core.c -clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_V2' +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_V2 clean_mk CONFIG_DVB_USB_V2 drivers/media/usb/dvb-usb-v2/Makefile announce DVB_B2C2_FLEXCOP - "Technisat/B2C2 FlexCopII(b) and FlexCopIII adapters" @@ -780,7 +794,7 @@ reject_firmware drivers/media/pci/bt8xx/dvb-bt8xx.c announce DVB_USB_A800 - "AVerMedia AverTV DVB-T USB 2.0 (A800)" clean_blob drivers/media/usb/dvb-usb/a800.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_A800' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_A800 clean_mk CONFIG_DVB_USB_A800 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_AF9005 - "Afatech AF9005 DVB-T USB1.1 support" @@ -790,127 +804,127 @@ s,^ deb_info("load init script\\n");$, {\n err("Missing Free init script\\n");\ ' drivers/media/usb/dvb-usb/af9005-fe.c 'report missing Free init script' clean_blob drivers/media/usb/dvb-usb/af9005-fe.c clean_blob drivers/media/usb/dvb-usb/af9005.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AF9005' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_AF9005 clean_mk CONFIG_DVB_USB_AF9005 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_AF9015 - "Afatech AF9015 DVB-T USB2.0 support" clean_blob drivers/media/usb/dvb-usb-v2/af9015.h clean_blob drivers/media/usb/dvb-usb-v2/af9015.c -clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9015' +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_AF9015 clean_mk CONFIG_DVB_USB_AF9015 drivers/media/usb/dvb-usb-v2/Makefile announce DVB_USB_AF9035 - "Afatech AF9035 DVB-T USB2.0 support" clean_blob drivers/media/usb/dvb-usb-v2/af9035.h clean_blob drivers/media/usb/dvb-usb-v2/af9035.c -clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AF9035' +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_AF9035 clean_mk CONFIG_DVB_USB_AF9035 drivers/media/usb/dvb-usb-v2/Makefile announce DVB_USB_AZ6007 - "Azurewave 6007 and clones DVB-T/C USB2.0 support" clean_blob drivers/media/usb/dvb-usb-v2/az6007.c -clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_AZ6007' +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_AZ6007 clean_mk CONFIG_DVB_USB_AZ6007 drivers/media/usb/dvb-usb-v2/Makefile announce DVB_USB_AZ6027 - "Azurewave DVB-S/S2 USB2.0 AZ6027 support" clean_blob drivers/media/usb/dvb-usb/az6027.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_AZ6027' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_AZ6027 clean_mk CONFIG_DVB_USB_AZ6027 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_CXUSB - "Conexant USB2.0 hybrid reference design support" clean_blob drivers/media/usb/dvb-usb/cxusb.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_CXUSB' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_CXUSB clean_mk CONFIG_DVB_USB_CXUSB drivers/media/usb/dvb-usb/Makefile announce DVB_USB_DIB0700 - "DiBcom DiB0700 USB DVB devices" reject_firmware drivers/media/usb/dvb-usb/dib0700_devices.c clean_blob drivers/media/usb/dvb-usb/dib0700_devices.c clean_blob drivers/media/usb/dvb-usb/dib0700_core.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIB0700' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DIB0700 clean_mk CONFIG_DVB_USB_DIB0700 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_DIBUSB_MB - "DiBcom USB DVB-T devices (based on the DiB3000M-B)" clean_blob drivers/media/usb/dvb-usb/dibusb-mb.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MB' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DIBUSB_MB clean_mk CONFIG_DVB_USB_DIBUSB_MB drivers/media/usb/dvb-usb/Makefile announce DVB_USB_DIBUSB_MC - "DiBcom USB DVB-T devices (based on the DiB3000M-C/P)" clean_blob drivers/media/usb/dvb-usb/dibusb-mc.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIBUSB_MC' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DIBUSB_MC clean_mk CONFIG_DVB_USB_DIBUSB_MC drivers/media/usb/dvb-usb/Makefile announce DVB_USB_DIGITV - "Nebula Electronics uDigiTV DVB-T USB2.0 support" clean_blob drivers/media/usb/dvb-usb/digitv.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DIGITV' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DIGITV clean_mk CONFIG_DVB_USB_DIGITV drivers/media/usb/dvb-usb/Makefile announce DVB_USB_DTT200U - "WideView WT-200U and WT-220U (pen) DVB-T USB2.0 support (Yakumo/Hama/Typhoon/Yuan)" clean_blob drivers/media/usb/dvb-usb/dtt200u.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DTT200U' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DTT200U clean_mk CONFIG_DVB_USB_DTT200U drivers/media/usb/dvb-usb/Makefile announce DVB_USB_DW2102 - "DvbWorld DVB-S/S2 USB2.0 support" reject_firmware drivers/media/usb/dvb-usb/dw2102.c clean_blob drivers/media/usb/dvb-usb/dw2102.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_DW2102' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_DW2102 clean_mk CONFIG_DVB_USB_DW2102 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_EC168 - "E3C EC168 DVB-T USB2.0 support" clean_blob drivers/media/usb/dvb-usb-v2/ec168.h clean_blob drivers/media/usb/dvb-usb-v2/ec168.c -clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_EC168' +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_EC168 clean_mk CONFIG_DVB_USB_EC168 drivers/media/usb/dvb-usb-v2/Makefile announce DVB_USB_GP8PSK - "GENPIX 8PSK->USB module support" reject_firmware drivers/media/usb/dvb-usb/gp8psk.c clean_blob drivers/media/usb/dvb-usb/gp8psk.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_GP8PSK' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_GP8PSK clean_mk CONFIG_DVB_USB_GP8PSK drivers/media/usb/dvb-usb/Makefile announce DVB_USB_LME2510 - "LME DM04/QQBOX DVB-S USB2.0 support" reject_firmware drivers/media/usb/dvb-usb-v2/lmedm04.c clean_blob drivers/media/usb/dvb-usb-v2/lmedm04.c clean_file Documentation/dvb/lmedm04.txt -clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig 'DVB_USB_LME2510' +clean_kconfig drivers/media/usb/dvb-usb-v2/Kconfig DVB_USB_LME2510 clean_mk CONFIG_DVB_USB_LME2510 drivers/media/usb/dvb-usb-v2/Makefile announce DVB_USB_M920X - "Uli m920x DVB-T USB2.0 support" clean_blob drivers/media/usb/dvb-usb/m920x.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_M920X' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_M920X clean_mk CONFIG_DVB_USB_M920X drivers/media/usb/dvb-usb/Makefile announce DVB_USB_NOVA_T_USB2 - "Hauppauge WinTV-NOVA-T usb2 DVB-T USB2.0 support" clean_blob drivers/media/usb/dvb-usb/nova-t-usb2.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_NOVA_T_USB2' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_NOVA_T_USB2 clean_mk CONFIG_DVB_USB_NOVA_T_USB2 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_OPERA1 - "Opera1 DVB-S USB2.0 receiver" reject_firmware drivers/media/usb/dvb-usb/opera1.c clean_blob drivers/media/usb/dvb-usb/opera1.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_OPERA1' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_OPERA1 clean_mk CONFIG_DVB_USB_OPERA1 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_TECHNISAT_USB2 - "Technisat DVB-S/S2 USB2.0 support" clean_blob drivers/media/usb/dvb-usb/technisat-usb2.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TECHNISAT_USB2' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_TECHNISAT_USB2 clean_mk CONFIG_DVB_USB_TECHNISAT_USB2 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_TTUSB2 - "Pinnacle 400e DVB-S USB2.0 support" clean_blob drivers/media/usb/dvb-usb/ttusb2.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_TTUSB2' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_TTUSB2 clean_mk CONFIG_DVB_USB_TTUSB2 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_UMT_010 - "HanfTek UMT-010 DVB-T USB2.0 support" clean_blob drivers/media/usb/dvb-usb/umt-010.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_UMT_010' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_UMT_010 clean_mk CONFIG_DVB_USB_UMT_010 drivers/media/usb/dvb-usb/Makefile announce DVB_USB_VP702X - "TwinhanDTV StarBox and clones DVB-S USB2.0 support" clean_blob drivers/media/usb/dvb-usb/vp702x.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP702X' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_VP702X clean_mk CONFIG_DVB_USB_VP702X drivers/media/usb/dvb-usb/Makefile announce DVB_USB_VP7045 - "TwinhanDTV Alpha/MagicBoxII, DNTV tinyUSB2, Beetle USB2.0 support" clean_blob drivers/media/usb/dvb-usb/vp7045.c -clean_kconfig drivers/media/usb/dvb-usb/Kconfig 'DVB_USB_VP7045' +clean_kconfig drivers/media/usb/dvb-usb/Kconfig DVB_USB_VP7045 clean_mk CONFIG_DVB_USB_VP7045 drivers/media/usb/dvb-usb/Makefile # dvb/frontends @@ -919,7 +933,7 @@ announce DVB_AF9013 - "Afatech AF9013 demodulator" reject_firmware drivers/media/dvb-frontends/af9013.c clean_blob drivers/media/dvb-frontends/af9013.c clean_blob drivers/media/dvb-frontends/af9013_priv.h -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_AF9013' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_AF9013 clean_mk CONFIG_DVB_AF9013 drivers/media/dvb-frontends/Makefile announce DVB_BCM3510 - "Broadcom BCM3510" @@ -928,20 +942,20 @@ clean_sed ' /You.ll need a firmware/,/dvb-fe-bcm/d; ' drivers/media/dvb-frontends/bcm3510.c \ "removed non-Free firmware notes" -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_BCM3510' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_BCM3510 clean_mk CONFIG_DVB_BCM3510 drivers/media/dvb-frontends/Makefile announce DVB_CX24116 - "Conexant CX24116 based" undefault_firmware CX24116 drivers/media/dvb-frontends/cx24116.c reject_firmware drivers/media/dvb-frontends/cx24116.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_CX24116' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_CX24116 clean_mk CONFIG_DVB_CX24116 drivers/media/dvb-frontends/Makefile announce DVB_CX24117 - "Conexant CX24117 based" undefault_firmware CX24117 drivers/media/dvb-frontends/cx24117.c reject_firmware drivers/media/dvb-frontends/cx24117.c clean_blob drivers/media/dvb-frontends/cx24117.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_CX24117' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_CX24117 clean_mk CONFIG_DVB_CX24117 drivers/media/dvb-frontends/Makefile announce DVB_DS3000 - "Montage Tehnology DS3000 based" @@ -949,71 +963,71 @@ undefault_firmware 'DS3000' \ drivers/media/dvb-frontends/ds3000.c reject_firmware drivers/media/dvb-frontends/ds3000.c clean_blob drivers/media/dvb-frontends/ds3000.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DS3000' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_DS3000 clean_mk CONFIG_DVB_DS3000 drivers/media/dvb-frontends/Makefile announce DVB_DRX39XYJ - "Micronas DRX-J demodulator" reject_firmware drivers/media/dvb-frontends/drx39xyj/drxj.c clean_blob drivers/media/dvb-frontends/drx39xyj/drxj.c -clean_kconfig drivers/media/dvb-frontends/drx39xyj/Kconfig 'DVB_DRX39XYJ' +clean_kconfig drivers/media/dvb-frontends/drx39xyj/Kconfig DVB_DRX39XYJ clean_mk CONFIG_DVB_DRX39XYJ drivers/media/dvb-frontends/drx39xyj/Makefile announce DVB_LGS8GXX - "Legend Silicon LGS8913/LGS8GL5/LGS8GXX DMB-TH demodulator" reject_firmware drivers/media/dvb-frontends/lgs8gxx.c clean_blob drivers/media/dvb-frontends/lgs8gxx.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_LGS8GXX' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_LGS8GXX clean_mk CONFIG_DVB_LGS8GXX drivers/media/dvb-frontends/Makefile announce DVB_M88DS3103 - "Montage M88DS3103" reject_firmware drivers/media/dvb-frontends/m88ds3103.c clean_blob drivers/media/dvb-frontends/m88ds3103.c clean_blob drivers/media/dvb-frontends/m88ds3103_priv.h -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_M88DS3103' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_M88DS3103 clean_mk CONFIG_DVB_M88DS3103 drivers/media/dvb-frontends/Makefile announce DVB_NXT200X - "NxtWave Communications NXT2002/NXT2004 based" undefault_firmware 'NXT200[24]' drivers/media/dvb-frontends/nxt200x.c reject_firmware drivers/media/dvb-frontends/nxt200x.c clean_blob drivers/media/dvb-frontends/nxt200x.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_NXT200X' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_NXT200X clean_mk CONFIG_DVB_NXT200X drivers/media/dvb-frontends/Makefile announce DVB_OR51132 - "Oren OR51132 based" reject_firmware drivers/media/dvb-frontends/or51132.c clean_blob drivers/media/dvb-frontends/or51132.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51132' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_OR51132 clean_mk CONFIG_DVB_OR51132 drivers/media/dvb-frontends/Makefile announce DVB_OR51211 - "Oren OR51211 based" undefault_firmware 'OR51211' drivers/media/dvb-frontends/or51211.c clean_blob drivers/media/dvb-frontends/or51211.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_OR51211' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_OR51211 clean_mk CONFIG_DVB_OR51211 drivers/media/dvb-frontends/Makefile announce DVB_SI2165 - "Silicon Labs si2165 based" reject_firmware drivers/media/dvb-frontends/si2165.c clean_blob drivers/media/dvb-frontends/si2165.c clean_blob drivers/media/dvb-frontends/si2165_priv.h -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_SI2165' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_SI2165 clean_mk CONFIG_DVB_SI2165 drivers/media/dvb-frontends/Makefile announce DVB_SI2168 - "Silicon Labs Si2168" reject_firmware drivers/media/dvb-frontends/si2168.c clean_blob drivers/media/dvb-frontends/si2168.c clean_blob drivers/media/dvb-frontends/si2168_priv.h -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_SI2168' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_SI2168 clean_mk CONFIG_DVB_SI2168 drivers/media/dvb-frontends/Makefile announce DVB_SP8870 - "Spase sp8870" undefault_firmware 'SP8870' drivers/media/dvb-frontends/sp8870.c clean_blob drivers/media/dvb-frontends/sp8870.c -clean_kconfig drivers/media/dvb-frontends 'DVB_SP8870' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_SP8870 clean_mk CONFIG_DVB_SP8870 drivers/media/dvb-frontends/Makefile announce DVB_SP887X - "Spase sp887x based" undefault_firmware 'SP887X' drivers/media/dvb-frontends/sp887x.c clean_blob drivers/media/dvb-frontends/sp887x.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_SP887X' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_SP887X clean_mk CONFIG_DVB_SP887X drivers/media/dvb-frontends/Makefile announce DVB_TDA10048 - "Philips TDA10048HN based" @@ -1021,20 +1035,20 @@ undefine_macro 'TDA10048_DEFAULT_FIRMWARE_SIZE' 0 \ 'removed non-Free firmware size' drivers/media/dvb-frontends/tda10048.c undefault_firmware 'TDA10048' drivers/media/dvb-frontends/tda10048.c reject_firmware drivers/media/dvb-frontends/tda10048.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_TDA10048' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_TDA10048 clean_mk CONFIG_DVB_TDA10048 drivers/media/dvb-frontends/Makefile announce DVB_TDA1004X - "Philips TDA10045H/TDA10046H" undefault_firmware 'TDA1004[56]' drivers/media/dvb-frontends/tda1004x.c clean_blob drivers/media/dvb-frontends/tda1004x.c -clean_kconfig drivers/media/dvb-frontends 'DVB_TDA1004X' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_TDA1004X clean_mk CONFIG_DVB_TDA1004X drivers/media/dvb-frontends/Makefile announce DVB_TDA10071 - "NXP TDA10071" reject_firmware drivers/media/dvb-frontends/tda10071.c clean_blob drivers/media/dvb-frontends/tda10071.c clean_blob drivers/media/dvb-frontends/tda10071_priv.h -clean_kconfig drivers/media/dvb-frontends 'DVB_TDA10071' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_TDA10071 clean_mk CONFIG_DVB_TDA10071 drivers/media/dvb-frontends/Makefile # dvb @@ -1042,13 +1056,13 @@ clean_mk CONFIG_DVB_TDA10071 drivers/media/dvb-frontends/Makefile announce DVB_AS102 - "Abilis AS102 DVB receiver" reject_firmware drivers/media/usb/as102/as102_fw.c clean_blob drivers/media/usb/as102/as102_fw.c -clean_kconfig drivers/media/usb/as102/Kconfig 'DVB_AS102' +clean_kconfig drivers/media/usb/as102/Kconfig DVB_AS102 clean_mk CONFIG_DVB_AS102 drivers/media/usb/as102/Makefile announce DVB_AV7110 - "AV7110 cards" reject_firmware drivers/media/pci/ttpci/av7110.c clean_blob drivers/media/pci/ttpci/av7110.c -clean_kconfig drivers/media/pci/ttpci/Kconfig 'DVB_AV7110' +clean_kconfig drivers/media/pci/ttpci/Kconfig DVB_AV7110 clean_mk CONFIG_DVB_AV7110 drivers/media/pci/ttpci/Makefile announce DVB_BUDGET - "Budget cards" @@ -1063,18 +1077,32 @@ reject_firmware drivers/media/pci/ttpci/budget-ci.c announce DVB_DRXD - "Micronas DRXD driver" reject_firmware drivers/media/dvb-frontends/drxd_hard.c clean_blob drivers/media/dvb-frontends/drxd_hard.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXD' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_DRXD clean_mk CONFIG_DVB_DRXD drivers/media/dvb-frontends/Makefile announce DVB_DRXK - "Micronas DRXK based" reject_firmware drivers/media/dvb-frontends/drxk_hard.c -clean_kconfig drivers/media/dvb-frontends/Kconfig 'DVB_DRXK' +clean_kconfig drivers/media/dvb-frontends/Kconfig DVB_DRXK clean_mk CONFIG_DVB_DRXK drivers/media/dvb-frontends/Makefile +announce DVB_MN88472 - "Panasonic MN88472" +reject_firmware drivers/staging/media/mn88472/mn88472.c +clean_blob drivers/staging/media/mn88472/mn88472.c +clean_blob drivers/staging/media/mn88472/mn88472_priv.h +clean_kconfig drivers/staging/media/mn88472/Kconfig DVB_MN88472 +clean_mk CONFIG_DVB_MN88472 drivers/staging/media/mn88472/Makefile + +announce DVB_MN88473 - "Panasonic MN88472" +reject_firmware drivers/staging/media/mn88473/mn88473.c +clean_blob drivers/staging/media/mn88473/mn88473.c +clean_blob drivers/staging/media/mn88473/mn88473_priv.h +clean_kconfig drivers/staging/media/mn88473/Kconfig DVB_MN88473 +clean_mk CONFIG_DVB_MN88473 drivers/staging/media/mn88473/Makefile + announce DVB_NGENE - "Micronas nGene support" reject_firmware drivers/media/pci/ngene/ngene-core.c clean_blob drivers/media/pci/ngene/ngene-core.c -clean_kconfig drivers/media/pci/ngene/Kconfig 'DVB_NGENE' +clean_kconfig drivers/media/pci/ngene/Kconfig DVB_NGENE clean_mk CONFIG_DVB_NGENE drivers/media/pci/ngene/Makefile announce DVB_PLUTO2 - "Pluto2 cards" @@ -1084,27 +1112,27 @@ announce SMS_SIANO_MDTV - "Siano SMS1xxx based MDTV receiver" reject_firmware drivers/media/common/siano/smscoreapi.c clean_blob drivers/media/common/siano/smscoreapi.c clean_blob drivers/media/common/siano/smscoreapi.h -clean_kconfig drivers/media/common/siano/Kconfig 'SMS_SIANO_MDTV' +clean_kconfig drivers/media/common/siano/Kconfig SMS_SIANO_MDTV clean_mk CONFIG_SMS_SIANO_MDTV drivers/media/common/siano/Makefile announce SMS_USB_DRV - "Siano's USB interface support" reject_firmware drivers/media/usb/siano/smsusb.c clean_blob drivers/media/usb/siano/smsusb.c -clean_kconfig drivers/media/usb/siano/Kconfig 'SMS_USB_DRV' +clean_kconfig drivers/media/usb/siano/Kconfig SMS_USB_DRV clean_mk CONFIG_SMS_USB_DRV drivers/media/usb/siano/Makefile announce DVB_TTUSB_BUDGET - "Technotrend/Hauppauge Nova-USB devices" drop_fw_file firmware/ttusb-budget/dspbootcode.bin.ihex firmware/ttusb-budget/dspbootcode.bin reject_firmware drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c clean_blob drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c -clean_kconfig drivers/media/usb/ttusb-budget/Kconfig 'DVB_TTUSB_BUDGET' +clean_kconfig drivers/media/usb/ttusb-budget/Kconfig DVB_TTUSB_BUDGET clean_mk CONFIG_DVB_TTUSB_BUDGET drivers/media/usb/ttusb-budget/Makefile announce DVB_TTUSB_DEC - "Technotrend/Hauppauge USB DEC devices" reject_firmware drivers/media/usb/ttusb-dec/ttusb_dec.c clean_blob drivers/media/usb/ttusb-dec/ttusb_dec.c clean_blob Documentation/dvb/ttusb-dec.txt -clean_kconfig drivers/media/usb/ttusb-dec/Kconfig 'DVB_TTUSB_DEC' +clean_kconfig drivers/media/usb/ttusb-dec/Kconfig DVB_TTUSB_DEC clean_mk CONFIG_DVB_TTUSB_DEC drivers/media/usb/ttusb-dec/Makefile # video @@ -1113,20 +1141,20 @@ announce VIDEO_BT848 - "BT848 Video For Linux" reject_firmware drivers/media/pci/bt8xx/bttv-cards.c clean_blob drivers/media/pci/bt8xx/bttv-cards.c clean_blob Documentation/video4linux/bttv/README -clean_kconfig drivers/media/pci/bt8xx/Kconfig 'VIDEO_BT848' +clean_kconfig drivers/media/pci/bt8xx/Kconfig VIDEO_BT848 clean_mk CONFIG_VIDEO_BT848 drivers/media/pci/bt8xx/Makefile announce VIDEO_CODA - "Chips&Media Coda multi-standard codec IP" reject_firmware drivers/media/platform/coda/coda-common.c clean_blob drivers/media/platform/coda/coda-common.c -clean_kconfig drivers/media/platform/Kconfig 'VIDEO_CODA' +clean_kconfig drivers/media/platform/Kconfig VIDEO_CODA clean_mk CONFIG_VIDEO_CODA drivers/media/platform/coda/Makefile announce VIDEO_CPIA2 - "CPiA2 Video For Linux" clean_fw firmware/cpia2/stv0672_vp4.bin.ihex firmware/cpia2/stv0672_vp4.bin reject_firmware drivers/media/usb/cpia2/cpia2_core.c clean_blob drivers/media/usb/cpia2/cpia2_core.c -clean_kconfig drivers/media/usb/cpia2/Kconfig 'VIDEO_CPIA2' +clean_kconfig drivers/media/usb/cpia2/Kconfig VIDEO_CPIA2 clean_mk CONFIG_VIDEO_CPIA2 drivers/media/usb/cpia2/Makefile announce VIDEO_CX18 - "Conexant cx23418 MPEG encoder support" @@ -1137,13 +1165,13 @@ clean_blob drivers/media/pci/cx18/cx18-av-firmware.c clean_blob drivers/media/pci/cx18/cx18-dvb.c clean_blob drivers/media/pci/cx18/cx18-firmware.c clean_blob drivers/media/pci/cx18/cx18-driver.c -clean_kconfig drivers/media/pci/cx18/Kconfig 'VIDEO_CX18' +clean_kconfig drivers/media/pci/cx18/Kconfig VIDEO_CX18 clean_mk CONFIG_VIDEO_CX18 drivers/media/pci/cx18/Makefile announce VIDEO_CX231XX - "Conexant cx231xx USB video capture support" reject_firmware drivers/media/usb/cx231xx/cx231xx-417.c clean_blob drivers/media/usb/cx231xx/cx231xx-417.c -clean_kconfig drivers/media/usb/cx231xx/Kconfig 'VIDEO_CX231XX' +clean_kconfig drivers/media/usb/cx231xx/Kconfig VIDEO_CX231XX clean_mk CONFIG_VIDEO_CX231XX drivers/media/usb/cx231xx/Makefile announce VIDEO_CX23885 - "Conexant cx23885 (2388x successor) support" @@ -1152,41 +1180,41 @@ clean_blob drivers/media/pci/cx23885/cx23885-417.c reject_firmware drivers/media/pci/cx23885/cx23885-cards.c clean_blob drivers/media/pci/cx23885/cx23885-cards.c clean_blob drivers/media/pci/cx23885/cx23885-video.c -clean_kconfig drivers/media/pci/cx23885/Kconfig 'VIDEO_CX23885' +clean_kconfig drivers/media/pci/cx23885/Kconfig VIDEO_CX23885 clean_mk CONFIG_VIDEO_CX23885 drivers/media/pci/cx23885/Makefile announce VIDEO_CX25840 - "Conexant CX2584x audio/video decoders" reject_firmware drivers/media/i2c/cx25840/cx25840-firmware.c clean_blob drivers/media/i2c/cx25840/cx25840-firmware.c -clean_kconfig drivers/media/i2c/cx25840/Kconfig 'VIDEO_CX25840' +clean_kconfig drivers/media/i2c/cx25840/Kconfig VIDEO_CX25840 clean_mk CONFIG_VIDEO_CX25840 drivers/media/i2c/cx25840/Makefile announce VIDEO_CX88_BLACKBIRD - "Blackbird MPEG encoder support (cx2388x + cx23416)" reject_firmware drivers/media/pci/cx88/cx88-blackbird.c -clean_kconfig drivers/media/pci/cx88/Kconfig 'VIDEO_CX88_BLACKBIRD' +clean_kconfig drivers/media/pci/cx88/Kconfig VIDEO_CX88_BLACKBIRD clean_mk CONFIG_VIDEO_CX88_BLACKBIRD drivers/media/pci/cx88/Makefile announce VIDEO_EM28XX_DVB - "DVB/ATSC Support for em28xx based TV cards" clean_blob drivers/media/usb/em28xx/em28xx-dvb.c -clean_kconfig drivers/media/usb/em28xx/Kconfig 'VIDEO_EM28XX_DVB' +clean_kconfig drivers/media/usb/em28xx/Kconfig VIDEO_EM28XX_DVB clean_mk CONFIG_VIDEO_EM28XX_DVB drivers/media/usb/em28xx/Makefile announce VIDEO_EXYNOS4_FIMC_IS - "EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver" reject_firmware drivers/media/platform/exynos4-is/fimc-is.c clean_blob drivers/media/platform/exynos4-is/fimc-is.h -clean_kconfig drivers/media/platform/exynos4-is/Kconfig 'VIDEO_EXYNOS4_FIMC_IS' +clean_kconfig drivers/media/platform/exynos4-is/Kconfig VIDEO_EXYNOS4_FIMC_IS clean_mk CONFIG_VIDEO_EXYNOS4_FIMC_IS drivers/media/platform/exynos4-is/Makefile announce VIDEO_IVTV - "Conexant cx23416/cx23415 MPEG encoder/decoder support" reject_firmware drivers/media/pci/ivtv/ivtv-firmware.c clean_blob drivers/media/pci/ivtv/ivtv-firmware.c -clean_kconfig drivers/media/pci/ivtv/Kconfig 'VIDEO_IVTV' +clean_kconfig drivers/media/pci/ivtv/Kconfig VIDEO_IVTV clean_mk CONFIG_VIDEO_IVTV drivers/media/pci/ivtv/Makefile announce VIDEO_PVRUSB2 - "Hauppauge WinTV-PVR USB2 support" reject_firmware drivers/media/usb/pvrusb2/pvrusb2-hdw.c clean_blob drivers/media/usb/pvrusb2/pvrusb2-devattr.c -clean_kconfig drivers/media/usb/pvrusb2/Kconfig 'VIDEO_PVRUSB2' +clean_kconfig drivers/media/usb/pvrusb2/Kconfig VIDEO_PVRUSB2 clean_mk CONFIG_VIDEO_PVRUSB2 drivers/media/usb/pvrusb2/Makefile announce "VIDEO_CX23885, VIDEO_CX88_BLACKBIRD, VIDEO_IVTV, VIDEO_PVRUSB2" - "See above" @@ -1197,78 +1225,78 @@ reject_firmware drivers/media/usb/go7007/go7007-driver.c clean_blob drivers/media/usb/go7007/go7007-driver.c reject_firmware drivers/media/usb/go7007/go7007-fw.c clean_blob drivers/media/usb/go7007/go7007-fw.c -clean_kconfig drivers/media/usb/go7007/Kconfig 'VIDEO_GO7007' +clean_kconfig drivers/media/usb/go7007/Kconfig VIDEO_GO7007 clean_mk CONFIG_VIDEO_GO7007 drivers/media/usb/go7007/Makefile announce VIDEO_GO7007_USB_S2250_BOARD - "Sensoray 2250/2251 support" reject_firmware drivers/media/usb/go7007/go7007-loader.c clean_blob drivers/media/usb/go7007/go7007-loader.c -clean_kconfig drivers/media/usb/go7007/Kconfig 'VIDEO_GO7007_USB_S2250_BOARD' +clean_kconfig drivers/media/usb/go7007/Kconfig VIDEO_GO7007_USB_S2250_BOARD clean_mk CONFIG_VIDEO_GO7007_USB_S2250_BOARD drivers/media/usb/go7007/Makefile announce VIDEO_SAA7134_DVB - "DVB/ATSC Support for saa7134 based TV cards" reject_firmware drivers/media/pci/saa7134/saa7134-dvb.c -clean_kconfig drivers/media/pci/saa7134/Kconfig 'VIDEO_SAA7134_DVB' +clean_kconfig drivers/media/pci/saa7134/Kconfig VIDEO_SAA7134_DVB clean_mk CONFIG_VIDEO_SAA7134_DVB drivers/media/pci/saa7134/Makefile announce VIDEO_SAA7134_GO7007 - "go7007 support for saa7134 based TV cards" clean_blob drivers/media/pci/saa7134/saa7134-go7007.c -clean_kconfig drivers/media/pci/saa7134/Kconfig 'VIDEO_SAA7134_GO7007' +clean_kconfig drivers/media/pci/saa7134/Kconfig VIDEO_SAA7134_GO7007 clean_mk CONFIG_VIDEO_SAA7134_GO7007 drivers/media/pci/saa7134/Makefile announce VIDEO_SAA7164 - "NXP SAA7164 support" reject_firmware drivers/media/pci/saa7164/saa7164-fw.c clean_blob drivers/media/pci/saa7164/saa7164-fw.c -clean_kconfig drivers/media/pci/saa7164/Kconfig 'VIDEO_SAA7164' +clean_kconfig drivers/media/pci/saa7164/Kconfig VIDEO_SAA7164 clean_mk CONFIG_VIDEO_SAA7164 drivers/media/pci/saa7164/Makefile announce VIDEO_S5C73M3 - "Samsung S5C73M3 sensor support" reject_firmware drivers/media/i2c/s5c73m3/s5c73m3-core.c clean_blob drivers/media/i2c/s5c73m3/s5c73m3-core.c -clean_kconfig drivers/media/i2c/Kconfig 'VIDEO_S5C73M3' +clean_kconfig drivers/media/i2c/Kconfig VIDEO_S5C73M3 clean_mk CONFIG_VIDEO_S5C73M3 drivers/media/i2c/s5c73m3/Makefile announce VIDEO_S5K4ECGX - "Samsung S5K4ECGX sensor support" reject_firmware drivers/media/i2c/s5k4ecgx.c clean_blob drivers/media/i2c/s5k4ecgx.c -clean_kconfig drivers/media/i2c/Kconfig 'VIDEO_S5K4ECGX' +clean_kconfig drivers/media/i2c/Kconfig VIDEO_S5K4ECGX clean_mk CONFIG_VIDEO_S5K4ECGX drivers/media/i2c/Makefile announce VIDEO_S5K5BAF - "Samsung S5K5BAF sensor support" reject_firmware drivers/media/i2c/s5k5baf.c clean_blob drivers/media/i2c/s5k5baf.c -clean_kconfig drivers/media/i2c/Kconfig 'VIDEO_S5K5BAF' +clean_kconfig drivers/media/i2c/Kconfig VIDEO_S5K5BAF clean_mk CONFIG_VIDEO_S5K5BAF drivers/media/i2c/Makefile announce VIDEO_SAMSUNG_S5P_MFC - "Samsung S5P MFC 5.1 Video Codec" reject_firmware drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c clean_blob drivers/media/platform/s5p-mfc/s5p_mfc.c -clean_kconfig drivers/media/platform/Kconfig 'VIDEO_SAMSUNG_S5P_MFC' +clean_kconfig drivers/media/platform/Kconfig VIDEO_SAMSUNG_S5P_MFC clean_mk CONFIG_VIDEO_SAMSUNG_S5P_MFC drivers/media/platform/s5p-mfc/Makefile announce VIDEO_TLG2300 - "Telegent TLG2300 USB video capture support" -reject_firmware drivers/media/usb/tlg2300/pd-main.c -clean_blob drivers/media/usb/tlg2300/pd-main.c -clean_kconfig drivers/media/usb/tlg2300/Kconfig 'VIDEO_TLG2300' -clean_mk CONFIG_VIDEO_TLG2300 drivers/media/usb/tlg2300/Makefile +reject_firmware drivers/staging/media/tlg2300/pd-main.c +clean_blob drivers/staging/media/tlg2300/pd-main.c +clean_kconfig drivers/staging/media/tlg2300/Kconfig VIDEO_TLG2300 +clean_mk CONFIG_VIDEO_TLG2300 drivers/staging/media/tlg2300/Makefile announce USB_S2255 - "USB Sensoray 2255 video capture device" reject_firmware drivers/media/usb/s2255/s2255drv.c clean_blob drivers/media/usb/s2255/s2255drv.c -clean_kconfig drivers/media/usb/Kconfig 'USB_S2255' +clean_kconfig drivers/media/usb/s2255/Kconfig USB_S2255 clean_mk CONFIG_USB_S2255 drivers/media/usb/s2255/Makefile announce USB_GSPCA_VICAM - "USB 3com HomeConnect, AKA vicam" drop_fw_file firmware/vicam/firmware.H16 firmware/vicam/firmware.fw reject_firmware drivers/media/usb/gspca/vicam.c clean_blob drivers/media/usb/gspca/vicam.c -clean_kconfig drivers/media/usb/gspca/Kconfig 'USB_GSPCA_VICAM' +clean_kconfig drivers/media/usb/gspca/Kconfig USB_GSPCA_VICAM clean_mk CONFIG_USB_GSPCA_VICAM drivers/media/usb/gspca/Makefile announce VIDEO_TI_VPE - "TI VPE (Video Processing Engine) driver" reject_firmware drivers/media/platform/ti-vpe/vpdma.c clean_blob drivers/media/platform/ti-vpe/vpdma.c -clean_kconfig drivers/media/platform/Kconfig 'VIDEO_TI_VPE' +clean_kconfig drivers/media/platform/Kconfig VIDEO_TI_VPE clean_mk CONFIG_VIDEO_TI_VPE drivers/media/platform/ti-vpe/Makefile # radio @@ -1276,14 +1304,14 @@ clean_mk CONFIG_VIDEO_TI_VPE drivers/media/platform/ti-vpe/Makefile announce RADIO_WL1273 - "Texas Instruments WL1273 I2C FM Radio" reject_firmware drivers/media/radio/radio-wl1273.c clean_blob drivers/media/radio/radio-wl1273.c -clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL1273' +clean_kconfig drivers/media/radio/Kconfig RADIO_WL1273 clean_mk CONFIG_RADIO_WL1273 drivers/media/radio/Makefile announce RADIO_WL128X - "Texas Instruments WL128x FM Radio" clean_blob drivers/media/radio/wl128x/fmdrv_common.h reject_firmware drivers/media/radio/wl128x/fmdrv_common.c clean_blob drivers/media/radio/wl128x/fmdrv_common.c -clean_kconfig drivers/media/radio/Kconfig 'RADIO_WL128X' +clean_kconfig drivers/media/radio/wl128x/Kconfig RADIO_WL128X clean_mk CONFIG_RADIO_WL128X drivers/media/radio/Makefile ####### @@ -1295,7 +1323,7 @@ drop_fw_file firmware/acenic/tg1.bin.ihex firmware/acenic/tg1.bin drop_fw_file firmware/acenic/tg2.bin.ihex firmware/acenic/tg2.bin reject_firmware drivers/net/ethernet/alteon/acenic.c clean_blob drivers/net/ethernet/alteon/acenic.c -clean_kconfig drivers/net/ethernet/alteon/Kconfig 'ACENIC' +clean_kconfig drivers/net/ethernet/alteon/Kconfig ACENIC clean_mk CONFIG_ACENIC drivers/net/ethernet/alteon/Makefile announce ADAPTEC_STARFIRE - "Adaptec Starfire/DuraLAN support" @@ -1303,7 +1331,7 @@ clean_fw firmware/adaptec/starfire_rx.bin.ihex firmware/adaptec/starfire_rx.bin clean_fw firmware/adaptec/starfire_tx.bin.ihex firmware/adaptec/starfire_tx.bin reject_firmware drivers/net/ethernet/adaptec/starfire.c clean_blob drivers/net/ethernet/adaptec/starfire.c -clean_kconfig drivers/net/ethernet/adaptec/Kconfig 'ADAPTEC_STARFIRE' +clean_kconfig drivers/net/ethernet/adaptec/Kconfig ADAPTEC_STARFIRE clean_mk CONFIG_ADAPTEC_STARFIRE drivers/net/ethernet/adaptec/Makefile announce BNA - "Brocade 1010/1020 10Gb Ethernet Driver support" @@ -1311,7 +1339,7 @@ clean_blob drivers/net/ethernet/brocade/bna/bnad.c clean_blob drivers/net/ethernet/brocade/bna/cna.h reject_firmware drivers/net/ethernet/brocade/bna/bnad_ethtool.c reject_firmware drivers/net/ethernet/brocade/bna/cna_fwimg.c -clean_kconfig drivers/net/ethernet/brocade/bna/Kconfig 'BNA' +clean_kconfig drivers/net/ethernet/brocade/bna/Kconfig BNA clean_mk CONFIG_BNA drivers/net/ethernet/brocade/bna/Makefile announce BNX2 - "Broadcom NetXtremeII" @@ -1322,7 +1350,7 @@ drop_fw_file firmware/bnx2/bnx2-mips-06-6.2.1.fw.ihex firmware/bnx2/bnx2-mips-06 drop_fw_file firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex firmware/bnx2/bnx2-rv2p-06-6.0.15.fw reject_firmware drivers/net/ethernet/broadcom/bnx2.c clean_blob drivers/net/ethernet/broadcom/bnx2.c -clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2' +clean_kconfig drivers/net/ethernet/broadcom/Kconfig BNX2 clean_mk CONFIG_BNX2 drivers/net/ethernet/broadcom/Makefile announce BNX2X - "Broadcom NetXtremeII 10Gb support" @@ -1356,14 +1384,14 @@ clean_sed ' extern void bnx2x_init_wr_wb(struct bnx2x *, u32, const u32 *, u32); }' drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h 'declare removed function' clean_blob drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h -clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'BNX2X' +clean_kconfig drivers/net/ethernet/broadcom/Kconfig BNX2X clean_mk CONFIG_BNX2X drivers/net/ethernet/broadcom/bnx2x/Makefile announce CASSINI - "Sun Cassini" drop_fw_file firmware/sun/cassini.bin.ihex firmware/sun/cassini.bin reject_firmware drivers/net/ethernet/sun/cassini.c clean_blob drivers/net/ethernet/sun/cassini.c -clean_kconfig drivers/net/ethernet/sun/Kconfig 'CASSINI' +clean_kconfig drivers/net/ethernet/sun/Kconfig CASSINI clean_mk CONFIG_CASSINI drivers/net/ethernet/sun/Makefile announce CHELSIO_T3 - "Chelsio AEL 2005 support" @@ -1374,13 +1402,13 @@ drop_fw_file firmware/cxgb3/ael2005_twx_edc.bin.ihex firmware/cxgb3/ael2005_twx_ drop_fw_file firmware/cxgb3/ael2020_twx_edc.bin.ihex firmware/cxgb3/ael2020_twx_edc.bin reject_firmware drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c clean_blob drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c -clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T3' +clean_kconfig drivers/net/ethernet/chelsio/Kconfig CHELSIO_T3 clean_mk CONFIG_CHELSIO_T3 drivers/net/ethernet/chelsio/cxgb3/Makefile announce CHELSIO_T4 - "Chelsio Communications T4 Ethernet support" reject_firmware drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c clean_blob drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c -clean_kconfig drivers/net/ethernet/chelsio/Kconfig 'CHELSIO_T4' +clean_kconfig drivers/net/ethernet/chelsio/Kconfig CHELSIO_T4 clean_mk CONFIG_CHELSIO_T4 drivers/net/ethernet/chelsio/cxgb4/Makefile announce E100 - "Intel PRO/100+" @@ -1393,7 +1421,7 @@ clean_sed ' s:^\(.*\)return ERR_PTR(err);$:\1netif_err(nic, probe, nic->netdev, "Proceeding without firmware\\n");\n\1return NULL;: }' drivers/net/ethernet/intel/e100.c 'proceed without firmware' clean_blob drivers/net/ethernet/intel/e100.c -clean_kconfig drivers/net/ethernet/intel/Kconfig 'E100' +clean_kconfig drivers/net/ethernet/intel/Kconfig E100 clean_mk CONFIG_E100 drivers/net/ethernet/intel/Makefile announce FT1000_PCMCIA - "Driver for ft1000 pcmcia device." @@ -1408,14 +1436,14 @@ clean_sed ' 'disabled non-Free firmware-loading machinery' reject_firmware drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c clean_blob drivers/staging/ft1000/ft1000-pcmcia/ft1000_hw.c -clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_PCMCIA' +clean_kconfig drivers/staging/ft1000/Kconfig FT1000_PCMCIA clean_mk CONFIG_FT1000_PCMCIA drivers/staging/ft1000/Makefile announce FT1000_USB - "Driver for ft1000 USB devices." clean_file drivers/staging/ft1000/ft1000-usb/ft3000.img reject_firmware drivers/staging/ft1000/ft1000-usb/ft1000_usb.c clean_blob drivers/staging/ft1000/ft1000-usb/ft1000_usb.c -clean_kconfig drivers/staging/ft1000/Kconfig 'FT1000_USB' +clean_kconfig drivers/staging/ft1000/Kconfig FT1000_USB clean_mk CONFIG_FT1000_USB drivers/staging/ft1000/Makefile announce MYRI_SBUS - "MyriCOM Gigabit Ethernet" @@ -1424,14 +1452,14 @@ drop_fw_file firmware/myricom/lanai.bin.ihex firmware/myricom/lanai.bin announce MYRI10GE - "Myricom Myri-10G Ethernet support" reject_firmware drivers/net/ethernet/myricom/myri10ge/myri10ge.c clean_blob drivers/net/ethernet/myricom/myri10ge/myri10ge.c -clean_kconfig drivers/net/ethernet/myricom/Kconfig 'MYRI10GE' +clean_kconfig drivers/net/ethernet/myricom/Kconfig MYRI10GE clean_mk CONFIG_MYRI10GE drivers/net/ethernet/myricom/myri10ge/Makefile announce NETXEN_NIC - "NetXen Multi port (1/10) Gigabit Ethernet NIC" reject_firmware drivers/net/ethernet/qlogic/netxen/netxen_nic_init.c clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic.h clean_blob drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c -clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'NETXEN_NIC' +clean_kconfig drivers/net/ethernet/qlogic/Kconfig NETXEN_NIC clean_mk CONFIG_NETXEN_NIC drivers/net/ethernet/qlogic/Makefile announce QLCNIC - "QLOGIC QLCNIC 1/10Gb Converged Ethernet NIC Support" @@ -1440,7 +1468,7 @@ reject_firmware drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic.h clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h clean_blob drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c -clean_kconfig drivers/net/ethernet/qlogic/Kconfig 'QLCNIC' +clean_kconfig drivers/net/ethernet/qlogic/Kconfig QLCNIC clean_mk CONFIG_QLCNIC drivers/net/ethernet/qlogic/qlcnic/Makefile announce R8169 - "Realtek 8169 gigabit ethernet support" @@ -1452,7 +1480,7 @@ clean_mk CONFIG_R8169 drivers/net/ethernet/realtek/Makefile announce SLICOSS - "Alacritech Gigabit IS-NIC cards" reject_firmware drivers/staging/slicoss/slicoss.c clean_blob drivers/staging/slicoss/slicoss.c -clean_kconfig drivers/staging/slicoss/Kconfig 'SLICOSS' +clean_kconfig drivers/staging/slicoss/Kconfig SLICOSS clean_mk CONFIG_SLICOSS drivers/staging/slicoss/Makefile announce SPIDER_NET - "Spider Gigabit Ethernet driver" @@ -1461,14 +1489,14 @@ clean_sed 's,spider_fw\.bin,DEBLOBBED.bin,g' \ drivers/net/ethernet/toshiba/spider_net.c 'removed non-Free firmware notes' clean_blob drivers/net/ethernet/toshiba/spider_net.c clean_blob drivers/net/ethernet/toshiba/spider_net.h -clean_kconfig drivers/net/ethernet/toshiba/Kconfig 'SPIDER_NET' +clean_kconfig drivers/net/ethernet/toshiba/Kconfig SPIDER_NET clean_mk CONFIG_SPIDER_NET drivers/net/ethernet/toshiba/Makefile announce TEHUTI - "Tehuti Networks 10G Ethernet" drop_fw_file firmware/tehuti/bdx.bin.ihex firmware/tehuti/bdx.bin reject_firmware drivers/net/ethernet/tehuti/tehuti.c clean_blob drivers/net/ethernet/tehuti/tehuti.c -clean_kconfig drivers/net/ethernet/tehuti/Kconfig 'TEHUTI' +clean_kconfig drivers/net/ethernet/tehuti/Kconfig TEHUTI clean_mk CONFIG_TEHUTI drivers/net/ethernet/tehuti/Makefile announce TIGON3 - "Broadcom Tigon3" @@ -1477,20 +1505,20 @@ drop_fw_file firmware/tigon/tg3_tso.bin.ihex firmware/tigon/tg3_tso.bin drop_fw_file firmware/tigon/tg3_tso5.bin.ihex firmware/tigon/tg3_tso5.bin reject_firmware drivers/net/ethernet/broadcom/tg3.c clean_blob drivers/net/ethernet/broadcom/tg3.c -clean_kconfig drivers/net/ethernet/broadcom/Kconfig 'TIGON3' +clean_kconfig drivers/net/ethernet/broadcom/Kconfig TIGON3 clean_mk CONFIG_TIGON3 drivers/net/ethernet/broadcom/Makefile announce TYPHOON - "3cr990 series Typhoon" drop_fw_file firmware/3com/typhoon.bin.ihex firmware/3com/typhoon.bin reject_firmware drivers/net/ethernet/3com/typhoon.c clean_blob drivers/net/ethernet/3com/typhoon.c -clean_kconfig drivers/net/ethernet/3com/Kconfig 'TYPHOON' +clean_kconfig drivers/net/ethernet/3com/Kconfig TYPHOON clean_mk CONFIG_TYPHOON drivers/net/ethernet/3com/Makefile announce VXGE - "Exar X3100 Series 10GbE PCIe Server Adapter" reject_firmware drivers/net/ethernet/neterion/vxge/vxge-main.c clean_blob drivers/net/ethernet/neterion/vxge/vxge-main.c -clean_kconfig drivers/net/ethernet/neterion/Kconfig 'VXGE' +clean_kconfig drivers/net/ethernet/neterion/Kconfig VXGE clean_mk CONFIG_VXGE drivers/net/ethernet/neterion/vxge/Makefile # appletalk @@ -1507,7 +1535,7 @@ clean_sed ' clean_blob drivers/net/appletalk/cops.c clean_file drivers/net/appletalk/cops_ffdrv.h clean_file drivers/net/appletalk/cops_ltdrv.h -clean_kconfig drivers/net/appletalk/Kconfig 'COPS' +clean_kconfig drivers/net/appletalk/Kconfig COPS clean_mk CONFIG_COPS drivers/net/appletalk/Makefile # hamradio @@ -1517,7 +1545,7 @@ drop_fw_file firmware/yam/1200.bin.ihex firmware/yam/1200.bin drop_fw_file firmware/yam/9600.bin.ihex firmware/yam/9600.bin reject_firmware drivers/net/hamradio/yam.c clean_blob drivers/net/hamradio/yam.c -clean_kconfig drivers/net/hamradio/Kconfig 'YAM' +clean_kconfig drivers/net/hamradio/Kconfig YAM clean_mk CONFIG_YAM drivers/net/hamradio/Makefile # irda @@ -1528,7 +1556,7 @@ clean_blob drivers/net/irda/irda-usb.c clean_sed ' s,\(char stir421x_fw_name\)\[12\];,\1[16];, ' drivers/net/irda/irda-usb.c "avoid buffer overflow with deblobbed filename" -clean_kconfig drivers/net/irda/Kconfig 'USB_IRDA' +clean_kconfig drivers/net/irda/Kconfig USB_IRDA clean_mk CONFIG_USB_IRDA drivers/net/irda/Makefile # smsc @@ -1537,7 +1565,7 @@ announce PCMCIA_SMC91C92 - "SMC 91Cxx PCMCIA" drop_fw_file firmware/ositech/Xilinx7OD.bin.ihex firmware/ositech/Xilinx7OD.bin reject_firmware drivers/net/ethernet/smsc/smc91c92_cs.c clean_blob drivers/net/ethernet/smsc/smc91c92_cs.c -clean_kconfig drivers/net/ethernet/smsc/Kconfig 'PCMCIA_SMC91C92' +clean_kconfig drivers/net/ethernet/smsc/Kconfig PCMCIA_SMC91C92 clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile # near-field communication @@ -1545,12 +1573,12 @@ clean_mk CONFIG_PCMCIA_SMC91C92 drivers/net/ethernet/smsc/Makefile announce NFC_WILINK - "Texas Instruments NFC WiLink driver" reject_firmware drivers/nfc/nfcwilink.c clean_blob drivers/nfc/nfcwilink.c -clean_kconfig drivers/nfc/Kconfig 'NFC_WILINK' +clean_kconfig drivers/nfc/Kconfig NFC_WILINK clean_mk CONFIG_NFC_WILINK drivers/nfc/Makefile announce NFC_PN544_I2C - "NFC PN544 i2c support" reject_firmware drivers/nfc/pn544/i2c.c -clean_kconfig drivers/nfs/pn544/Kconfig 'NFC_PN544_I2C' +clean_kconfig drivers/nfc/pn544/Kconfig NFC_PN544_I2C clean_mk NFC_PN544_I2C drivers/nfc/pn544/Kconfig # pcmcia @@ -1597,7 +1625,7 @@ drop_fw_file firmware/kaweth/trigger_code.bin.ihex firmware/kaweth/trigger_code. drop_fw_file firmware/kaweth/trigger_code_fix.bin.ihex firmware/kaweth/trigger_code_fix.bin reject_firmware drivers/net/usb/kaweth.c clean_blob drivers/net/usb/kaweth.c -clean_kconfig drivers/net/usb/Kconfig 'USB_KAWETH' +clean_kconfig drivers/net/usb/Kconfig USB_KAWETH clean_mk CONFIG_USB_KAWETH drivers/net/usb/Makefile # wireless @@ -1605,13 +1633,13 @@ clean_mk CONFIG_USB_KAWETH drivers/net/usb/Makefile announce ATMEL "Atmel at76c50x chipset 802.11b support" reject_firmware drivers/net/wireless/atmel.c clean_blob drivers/net/wireless/atmel.c -clean_kconfig drivers/net/wireless/Kconfig 'ATMEL' +clean_kconfig drivers/net/wireless/Kconfig ATMEL clean_mk CONFIG_ATMEL drivers/net/wireless/Makefile announce AT76C50X_USB - "Atmel at76c503/at76c505/at76c505a USB cards" reject_firmware drivers/net/wireless/at76c50x-usb.c clean_blob drivers/net/wireless/at76c50x-usb.c -clean_kconfig drivers/net/wireless/Kconfig 'AT76C50X_USB' +clean_kconfig drivers/net/wireless/Kconfig AT76C50X_USB clean_mk CONFIG_AT76C50X_USB drivers/net/wireless/Makefile announce B43 - "Broadcom 43xx wireless support (mac80211 stack)" @@ -1627,84 +1655,84 @@ clean_sed ' }' drivers/net/wireless/b43/main.c 'double-check and reject non-Free firmware' # Major portions of firmware filenames not deblobbed. clean_blob drivers/net/wireless/b43/main.c -clean_kconfig drivers/net/wireless/b43/Kconfig 'B43' +clean_kconfig drivers/net/wireless/b43/Kconfig B43 clean_mk CONFIG_B43 drivers/net/wireless/b43/Makefile announce B43LEGACY - "Broadcom 43xx-legacy wireless support (mac80211 stack)" reject_firmware drivers/net/wireless/b43legacy/main.c # Major portions of firwmare filenames not deblobbed. clean_blob drivers/net/wireless/b43legacy/main.c -clean_kconfig drivers/net/wireless/b43legacy/Kconfig 'B43LEGACY' +clean_kconfig drivers/net/wireless/b43legacy/Kconfig B43LEGACY clean_mk CONFIG_B43LEGACY drivers/net/wireless/b43legacy/Makefile announce BRCMSMAC - "Broadcom IEEE802.11n PCIe SoftMAC WLAN driver" reject_firmware drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c clean_blob drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c -clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMSMAC' +clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMSMAC clean_mk CONFIG_BRCMSMAC drivers/net/wireless/brcm80211/Makefile announce BRCMFMAC - "Broadcom IEEE802.11n embedded FullMAC WLAN driver" reject_firmware drivers/net/wireless/brcm80211/brcmfmac/firmware.c -clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC' +clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMFMAC clean_mk CONFIG_BRCMFMAC drivers/net/wireless/brcm80211/brcmfmac/Makefile announce BRCMFMAC_SDIO - "Broadcom IEEE802.11n SDIO FullMAC WLAN driver" -clean_blob drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c -clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_SDIO' +clean_blob drivers/net/wireless/brcm80211/brcmfmac/sdio.c +clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMFMAC_SDIO clean_mk CONFIG_BRCMFMAC_SDIO drivers/net/wireless/brcm80211/brcmfmac/Makefile announce BRCMFMAC_USB - "Broadcom IEEE802.11n USB FullMAC WLAN driver" clean_blob drivers/net/wireless/brcm80211/brcmfmac/usb.c -clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_USB' +clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMFMAC_USB clean_mk CONFIG_BRCMFMAC_USB drivers/net/wireless/brcm80211/brcmfmac/Makefile announce BRCMFMAC_PCIE - "Broadcom IEEE802.11n PCIE FullMAC WLAN driver" clean_blob drivers/net/wireless/brcm80211/brcmfmac/pcie.c -clean_kconfig drivers/net/wireless/brcm80211/Kconfig 'BRCMFMAC_PCIE' +clean_kconfig drivers/net/wireless/brcm80211/Kconfig BRCMFMAC_PCIE clean_mk CONFIG_BRCMFMAC_PCIE drivers/net/wireless/brcm80211/brcmfmac/Makefile announce HERMES - "Hermes chipset 802.11b support (Orinoco/Prism2/Symbol)" reject_firmware drivers/net/wireless/orinoco/fw.c clean_blob drivers/net/wireless/orinoco/fw.c -clean_kconfig drivers/net/wireless/orinoco/Kconfig 'HERMES' +clean_kconfig drivers/net/wireless/orinoco/Kconfig HERMES clean_mk CONFIG_HERMES drivers/net/wireless/orinoco/Makefile announce ORINOCO_USB - "Agere Orinoco USB support" reject_firmware drivers/net/wireless/orinoco/orinoco_usb.c clean_blob drivers/net/wireless/orinoco/orinoco_usb.c -clean_kconfig drivers/net/wireless/orinoco/Kconfig 'ORINOCO_USB' +clean_kconfig drivers/net/wireless/orinoco/Kconfig ORINOCO_USB clean_mk CONFIG_ORINOCO_USB drivers/net/wireless/orinoco/Makefile announce IPW2100 - "Intel PRO/Wireless 2100 Network Connection" reject_firmware drivers/net/wireless/ipw2x00/ipw2100.c clean_blob drivers/net/wireless/ipw2x00/ipw2100.c -clean_kconfig drivers/net/wireless/Kconfig 'IPW2100' +clean_kconfig drivers/net/wireless/ipw2x00/Kconfig IPW2100 clean_mk CONFIG_IPW2100 drivers/net/wireless/ipw2x00/Makefile announce IPW2200 - "Intel PRO/Wireless 2200BG and 2915ABG Network Connection" reject_firmware drivers/net/wireless/ipw2x00/ipw2200.c clean_blob drivers/net/wireless/ipw2x00/ipw2200.c -clean_kconfig drivers/net/wireless/Kconfig 'IPW2200' +clean_kconfig drivers/net/wireless/ipw2x00/Kconfig IPW2200 clean_mk CONFIG_IPW2200 drivers/net/wireless/ipw2x00/Makefile announce IWL3945 - "Intel PRO/Wireless 3945ABG/BG Network Connection" reject_firmware drivers/net/wireless/iwlegacy/3945-mac.c clean_blob drivers/net/wireless/iwlegacy/3945-mac.c clean_blob drivers/net/wireless/iwlegacy/3945.h -clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL3945' +clean_kconfig drivers/net/wireless/iwlegacy/Kconfig IWL3945 clean_mk CONFIG_IWL3945 drivers/net/wireless/iwlegacy/Makefile announce IWL4965 - "Intel Wireless WiFi 4965AGN" reject_firmware drivers/net/wireless/iwlegacy/4965-mac.c clean_blob drivers/net/wireless/iwlegacy/4965-mac.c clean_blob drivers/net/wireless/iwlegacy/4965.c -clean_kconfig drivers/net/wireless/iwlegacy/Kconfig 'IWL4965' +clean_kconfig drivers/net/wireless/iwlegacy/Kconfig IWL4965 clean_mk CONFIG_IWL4965 drivers/net/wireless/iwlegacy/Makefile announce IWLWIFI - "Intel Wireless WiFi Next Gen AGN" reject_firmware drivers/net/wireless/iwlwifi/iwl-drv.c clean_blob drivers/net/wireless/iwlwifi/iwl-drv.c -clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLWIFI' +clean_kconfig drivers/net/wireless/iwlwifi/Kconfig IWLWIFI clean_mk CONFIG_IWLWIFI drivers/net/wireless/iwlwifi/Makefile announce IWLDVM - "Intel Wireless WiFi DVM Firmware support" @@ -1712,106 +1740,107 @@ clean_blob drivers/net/wireless/iwlwifi/iwl-1000.c clean_blob drivers/net/wireless/iwlwifi/iwl-2000.c clean_blob drivers/net/wireless/iwlwifi/iwl-5000.c clean_blob drivers/net/wireless/iwlwifi/iwl-6000.c -clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLDVM' +clean_kconfig drivers/net/wireless/iwlwifi/Kconfig IWLDVM clean_mk CONFIG_IWLMVM drivers/net/wireless/iwlwifi/Makefile announce IWLMVM - "Intel Wireless WiFi MVM Firmware support" reject_firmware drivers/net/wireless/iwlwifi/mvm/nvm.c clean_blob drivers/net/wireless/iwlwifi/iwl-7000.c clean_blob drivers/net/wireless/iwlwifi/iwl-8000.c -clean_kconfig drivers/net/wireless/iwlwifi/Kconfig 'IWLMVM' +clean_kconfig drivers/net/wireless/iwlwifi/Kconfig IWLMVM clean_mk CONFIG_IWLMVM drivers/net/wireless/iwlwifi/Makefile announce LIBERTAS - "Marvell 8xxx Libertas WLAN driver support" reject_firmware drivers/net/wireless/libertas/firmware.c -clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS' +clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS clean_mk CONFIG_LIBERTAS drivers/net/wireless/libertas/Makefile announce LIBERTAS_CS - "Marvell Libertas 8385 CompactFlash 802.11b/g cards" clean_blob drivers/net/wireless/libertas/if_cs.c -clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_CS' +clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS_CS clean_mk CONFIG_LIBERTAS_CS drivers/net/wireless/libertas/Makefile announce LIBERTAS_SDIO - "Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards" clean_blob drivers/net/wireless/libertas/if_sdio.c -clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SDIO' +clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS_SDIO clean_mk CONFIG_LIBERTAS_SDIO drivers/net/wireless/libertas/Makefile announce LIBERTAS_SPI - "Marvell Libertas 8686 SPI 802.11b/g cards" clean_blob drivers/net/wireless/libertas/if_spi.c -clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_SPI' +clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS_SPI clean_mk CONFIG_LIBERTAS_SPI drivers/net/wireless/libertas/Makefile announce LIBERTAS_USB - "Marvell Libertas 8388 USB 802.11b/g cards" clean_blob drivers/net/wireless/libertas/if_usb.c clean_blob drivers/net/wireless/libertas/README -clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_USB' +clean_kconfig drivers/net/wireless/libertas/Kconfig LIBERTAS_USB clean_mk CONFIG_LIBERTAS_USB drivers/net/wireless/libertas/Makefile announce LIBERTAS_THINFIRM_USB - "Marvell Libertas 8388 USB 802.11b/g cards with thin firmware" reject_firmware drivers/net/wireless/libertas_tf/if_usb.c clean_blob drivers/net/wireless/libertas_tf/if_usb.c -clean_kconfig drivers/net/wireless/Kconfig 'LIBERTAS_THINFIRM_USB' +clean_kconfig drivers/net/wireless/Kconfig LIBERTAS_THINFIRM_USB clean_mk CONFIG_LIBERTAS_THINFIRM_USB drivers/net/wireless/libertas_tf/Makefile announce MWIFIEX - "Marvell WiFi-Ex Driver" clean_blob drivers/net/wireless/mwifiex/README reject_firmware drivers/net/wireless/mwifiex/main.c -clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX' +clean_kconfig drivers/net/wireless/mwifiex/Kconfig MWIFIEX clean_mk CONFIG_MWIFIEX drivers/net/wireless/mwifiex/Makefile announce MWIFIEX_SDIO - "Marvell WiFi-Ex Driver for SD8787" clean_blob drivers/net/wireless/mwifiex/sdio.h clean_blob drivers/net/wireless/mwifiex/sdio.c -clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_SDIO' +clean_kconfig drivers/net/wireless/mwifiex/Kconfig MWIFIEX_SDIO clean_mk CONFIG_MWIFIEX_SDIO drivers/net/wireless/mwifiex/Makefile announce MWIFIEX_PCIE - "Marvell WiFi-Ex Driver for PCI 8766" clean_blob drivers/net/wireless/mwifiex/pcie.h clean_blob drivers/net/wireless/mwifiex/pcie.c -clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_PCIE' +clean_kconfig drivers/net/wireless/mwifiex/Kconfig MWIFIEX_PCIE clean_mk CONFIG_MWIFIEX_PCIE drivers/net/wireless/mwifiex/Makefile announce MWIFIEX_USB - "Marvell WiFi-Ex Driver for USB8797" clean_blob drivers/net/wireless/mwifiex/usb.h clean_blob drivers/net/wireless/mwifiex/usb.c -clean_kconfig drivers/net/wireless/mwifiex/Kconfig 'MWIFIEX_USB' +clean_kconfig drivers/net/wireless/mwifiex/Kconfig MWIFIEX_USB clean_mk CONFIG_MWIFIEX_USB drivers/net/wireless/mwifiex/Makefile announce MWL8K - "Marvell 88W8xxx PCI/PCIe Wireless support" reject_firmware drivers/net/wireless/mwl8k.c clean_blob drivers/net/wireless/mwl8k.c -clean_kconfig drivers/net/wireless/Kconfig 'MWL8K' +clean_kconfig drivers/net/wireless/Kconfig MWL8K clean_mk CONFIG_MWL8K drivers/net/wireless/Makefile announce AR5523 - "Atheros AR5523 wireless driver support" reject_firmware drivers/net/wireless/ath/ar5523/ar5523.c clean_blob drivers/net/wireless/ath/ar5523/ar5523.c clean_blob drivers/net/wireless/ath/ar5523/ar5523.h -clean_kconfig drivers/net/wireless/ath/ar5523/Kconfig 'AR5523' +clean_kconfig drivers/net/wireless/ath/ar5523/Kconfig AR5523 clean_mk CONFIG_AR5523 drivers/net/wireless/ath/ar5523/Makefile announce ATH6KL - "Atheros ath6kl support" reject_firmware drivers/net/wireless/ath/ath6kl/init.c clean_blob drivers/net/wireless/ath/ath6kl/init.c clean_blob drivers/net/wireless/ath/ath6kl/core.h -clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL' +clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig ATH6KL clean_mk CONFIG_ATH6KL drivers/net/wireless/ath/ath6kl/Makefile announce ATH6KL_SDIO - "Atheros ath6kl SDIO support" clean_blob drivers/net/wireless/ath/ath6kl/sdio.c -clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_SDIO' +clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig ATH6KL_SDIO clean_mk CONFIG_ATH6KL_SDIO drivers/net/wireless/ath/ath6kl/Makefile announce ATH6KL_USB - "Atheros ath6kl USB support" clean_blob drivers/net/wireless/ath/ath6kl/usb.c -clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig 'ATH6KL_USB' +clean_kconfig drivers/net/wireless/ath/ath6kl/Kconfig ATH6KL_USB clean_mk CONFIG_ATH6KL_USB drivers/net/wireless/ath/ath6kl/Makefile announce ATH10K - "Atheros 802.11ac wireless cards support" reject_firmware drivers/net/wireless/ath/ath10k/core.c +clean_blob drivers/net/wireless/ath/ath10k/core.c clean_blob drivers/net/wireless/ath/ath10k/hw.h -clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig 'ATH10K' +clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig ATH10K clean_mk CONFIG_ATH10K drivers/net/wireless/ath/ath10k/Makefile announce ATH10K NL80211_TESTMODE - "nl80211 testmode command" @@ -1819,31 +1848,31 @@ reject_firmware drivers/net/wireless/ath/ath10k/testmode.c clean_sed ' /^[\t ]*\/\* utf\.bin firmware image/ s,/\* utf\.bin,/*(DEBLOBBED)*//*, ' drivers/net/wireless/ath/ath10k/testmode.c 'removed blob name in comment' -clean_kconfig net/wireless/ath/ath10k/Kconfig 'NL80211_TESTMODE' +clean_kconfig net/wireless/Kconfig NL80211_TESTMODE clean_mk CONFIG_NL80211_TESTMODE drivers/net/wireless/ath/ath10k/Makefile announce ATH10K_PCI - "Atheros ath10k PCI support" clean_blob drivers/net/wireless/ath/ath10k/pci.c -clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig 'ATH10K_PCI' +clean_kconfig drivers/net/wireless/ath/ath10k/Kconfig ATH10K_PCI clean_mk CONFIG_ATH10K_PCI drivers/net/wireless/ath/ath10k/Makefile announce WIL6210 - "Wilocity 60g WiFi card wil6210 support" reject_firmware drivers/net/wireless/ath/wil6210/fw_inc.c clean_blob drivers/net/wireless/ath/wil6210/fw.c clean_blob drivers/net/wireless/ath/wil6210/wil6210.h -clean_kconfig drivers/net/wireless/ath/wil6210/Kconfig 'WIL6210' +clean_kconfig drivers/net/wireless/ath/wil6210/Kconfig WIL6210 clean_mk CONFIG_WIL6210 drivers/net/wireless/ath/wil6210/Makefile announce CW1200 - "CW1200 WLAN support" reject_firmware drivers/net/wireless/cw1200/fwio.c clean_blob drivers/net/wireless/cw1200/fwio.h reject_firmware drivers/net/wireless/cw1200/sta.c -clean_kconfig drivers/net/wireless/cw1200/Kconfig 'CW1200' +clean_kconfig drivers/net/wireless/cw1200/Kconfig CW1200 clean_mk CONFIG_CW1200 drivers/net/wireless/cw1200/Makefile announce CW1200_WLAN_SDIO - "Support SDIO platforms" clean_blob drivers/net/wireless/cw1200/cw1200_sdio.c -clean_kconfig drivers/net/wireless/cw1200/Kconfig 'CW1200_WLAN_SDIO' +clean_kconfig drivers/net/wireless/cw1200/Kconfig CW1200_WLAN_SDIO clean_mk CONFIG_CW1200_WLAN_SDIO drivers/net/wireless/cw1200/Makefile announce PRISM2_USB - "Prism2.5/3 USB driver" @@ -1856,7 +1885,7 @@ announce P54_PCI - "Prism54 PCI support" reject_firmware drivers/net/wireless/p54/p54pci.c clean_blob drivers/net/wireless/p54/p54pci.c clean_sed 's,3826\.eeprom,DEBLOBBED,g' drivers/net/wireless/p54/Kconfig 'removed blob name' -clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_PCI' +clean_kconfig drivers/net/wireless/p54/Kconfig P54_PCI clean_mk CONFIG_P54_PCI drivers/net/wireless/p54/Makefile announce P54_SPI - "Prism54 SPI (stlc45xx) support" @@ -1866,54 +1895,54 @@ announce P54_SPI - "Prism54 SPI (stlc45xx) support" # we drop it altogether. reject_firmware drivers/net/wireless/p54/p54spi.c clean_blob drivers/net/wireless/p54/p54spi.c -clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_SPI' +clean_kconfig drivers/net/wireless/p54/Kconfig P54_SPI clean_mk CONFIG_P54_SPI drivers/net/wireless/p54/Makefile announce P54_USB - "Prism54 USB support" reject_firmware drivers/net/wireless/p54/p54usb.c clean_blob drivers/net/wireless/p54/p54usb.c clean_blob drivers/net/wireless/p54/p54usb.h -clean_kconfig drivers/net/wireless/p54/Kconfig 'P54_USB' +clean_kconfig drivers/net/wireless/p54/Kconfig P54_USB clean_mk CONFIG_P54_USB drivers/net/wireless/p54/Makefile announce PRISM54 - "Intersil Prism GT/Duette/Indigo PCI/Cardbus" reject_firmware drivers/net/wireless/prism54/islpci_dev.c clean_blob drivers/net/wireless/prism54/islpci_dev.c -clean_kconfig drivers/net/wireless/Kconfig 'PRISM54' +clean_kconfig drivers/net/wireless/Kconfig PRISM54 clean_mk CONFIG_PRISM54 drivers/net/wireless/prism54/Makefile announce RSI_91X - "Redpine Signals Inc 91x WLAN driver support" clean_blob drivers/net/wireless/rsi/rsi_common.h -clean_kconfig drivers/net/wireless/rsi/Kconfig 'RSI_91X' +clean_kconfig drivers/net/wireless/rsi/Kconfig RSI_91X clean_mk CONFIG_RSI_91X drivers/net/wireless/rsi/Makefile announce RSI_SDIO - "Redpine Signals SDIO bus support" reject_firmware drivers/net/wireless/rsi/rsi_91x_sdio_ops.c clean_blob drivers/net/wireless/rsi/rsi_91x_sdio.c -clean_kconfig drivers/net/wireless/rsi/Kconfig 'RSI_SDIO' +clean_kconfig drivers/net/wireless/rsi/Kconfig RSI_SDIO clean_mk CONFIG_RSI_SDIO drivers/net/wireless/rsi/Makefile announce RSI_USB - "Redpine Signals USB bus support" reject_firmware drivers/net/wireless/rsi/rsi_91x_usb_ops.c clean_blob drivers/net/wireless/rsi/rsi_91x_usb.c -clean_kconfig drivers/net/wireless/rsi/Kconfig 'RSI_USB' +clean_kconfig drivers/net/wireless/rsi/Kconfig RSI_USB clean_mk CONFIG_RSI_USB drivers/net/wireless/rsi/Makefile announce RT2X00_LIB_FIRMWARE - "Ralink driver firmware support" reject_firmware drivers/net/wireless/rt2x00/rt2x00firmware.c -clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT2X00_LIB_FIRMWARE' +clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT2X00_LIB_FIRMWARE clean_mk CONFIG_RT2X00_LIB_FIRMWARE drivers/net/wireless/rt2x00/Makefile announce RT61PCI - "Ralink rt2501/rt61 (PCI/PCMCIA) support" clean_blob drivers/net/wireless/rt2x00/rt61pci.h clean_blob drivers/net/wireless/rt2x00/rt61pci.c -clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT61PCI' +clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT61PCI clean_mk CONFIG_RT61PCI drivers/net/wireless/rt2x00/Makefile announce RT73USB - "Ralink rt2501/rt73 (USB) support" clean_blob drivers/net/wireless/rt2x00/rt73usb.h clean_blob drivers/net/wireless/rt2x00/rt73usb.c -clean_kconfig drivers/net/wireless/rt2x00/Kconfig 'RT73USB' +clean_kconfig drivers/net/wireless/rt2x00/Kconfig RT73USB clean_mk CONFIG_RT73USB drivers/net/wireless/rt2x00/Makefile announce RT2800PCI - "Ralink rt2800 (PCI/PCMCIA) support" @@ -1974,100 +2003,100 @@ announce RTL8192E - "RealTek RTL8192E Wireless LAN NIC driver" reject_firmware drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c clean_blob drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h clean_blob drivers/staging/rtl8192e/rtl8192e/rtl_core.c -clean_kconfig drivers/staging/rtl8192e/Kconfig RTL8192E +clean_kconfig drivers/staging/rtl8192e/rtl8192e/Kconfig RTL8192E clean_mk CONFIG_RTL8192E drivers/staging/rtl8192e/Makefile announce RTL8192EE - "RealTek RTL8192EE Wireless Network Adapter" reject_firmware drivers/net/wireless/rtlwifi/rtl8192ee/sw.c clean_blob drivers/net/wireless/rtlwifi/rtl8192ee/sw.c -clean_kconfig drivers/net/wireless/rtlwifi/rtl8192ee/Kconfig RTL8192EE +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8192EE clean_mk CONFIG_RTL8192EE drivers/net/wireless/rtlwifi/Makefile announce RTL8192U - "RealTek RTL8192U Wireless LAN NIC driver" reject_firmware drivers/staging/rtl8192u/r819xU_firmware.c clean_blob drivers/staging/rtl8192u/r819xU_firmware.c -clean_kconfig drivers/staging/rtl8192u/Kconfig 'RTL8192U' +clean_kconfig drivers/staging/rtl8192u/Kconfig RTL8192U clean_mk CONFIG_RTL8192U drivers/staging/rtl8192u/Makefile announce R8712U - "RealTek RTL8712U (RTL8192SU) Wireless LAN NIC driver" reject_firmware drivers/staging/rtl8712/hal_init.c clean_blob drivers/staging/rtl8712/hal_init.c -clean_kconfig drivers/staging/rtl8712/Kconfig 'R8712U' +clean_kconfig drivers/staging/rtl8712/Kconfig R8712U clean_mk CONFIG_R8712U drivers/staging/rtl8712/Makefile announce RTL8723AE - "Realtek RTL8723AE PCIe Wireless Network Adapter" reject_firmware drivers/net/wireless/rtlwifi/rtl8723ae/sw.c clean_blob drivers/net/wireless/rtlwifi/rtl8723ae/sw.c -clean_kconfig drivers/net/wireless/rtlwifi/Kconfig 'RTL8723AE' +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8723AE clean_mk CONFIG_RTL8723AE drivers/net/wireless/rtlwifi/rtl8723ae/Makefile announce R8723AU - "RealTek RTL8723AU Wireless LAN NIC driver" reject_firmware drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c clean_blob drivers/staging/rtl8723au/hal/rtl8723a_hal_init.c clean_blob drivers/staging/rtl8723au/os_dep/os_intfs.c -clean_kconfig drivers/staging/rtl8723au/Kconfig 'R8723AU' +clean_kconfig drivers/staging/rtl8723au/Kconfig R8723AU clean_mk CONFIG_R8723AU drivers/staging/rtl8723au/Makefile announce RTL8723BE - "Realtek RTL8723BE PCIe Wireless Network Adapter" reject_firmware drivers/net/wireless/rtlwifi/rtl8723be/sw.c clean_blob drivers/net/wireless/rtlwifi/rtl8723be/sw.c -clean_kconfig drivers/net/wireless/rtlwifi/Kconfig 'RTL8723BE' +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8723BE clean_mk CONFIG_RTL8723BE drivers/net/wireless/rtlwifi/rtl8723be/Makefile announce RTL8821AE - "Realtek RTL8821AE/RTL8812AE Wireless LAN NIC driver" reject_firmware drivers/net/wireless/rtlwifi/rtl8821ae/sw.c clean_blob drivers/net/wireless/rtlwifi/rtl8821ae/sw.c -clean_kconfig drivers/net/wireless/rtlwifi/Kconfig 'RTL8821AE' +clean_kconfig drivers/net/wireless/rtlwifi/Kconfig RTL8821AE clean_mk CONFIG_RTL8821AE drivers/net/wireless/rtlwifi/rtl8821ae/Makefile announce VT6656 - "VIA Technologies VT6656 support" reject_firmware drivers/staging/vt6656/firmware.c clean_blob drivers/staging/vt6656/firmware.c -clean_kconfig drivers/staging/vt6656/Kconfig 'VT6656' +clean_kconfig drivers/staging/vt6656/Kconfig VT6656 clean_mk CONFIG_VT6656 drivers/staging/vt6656/Makefile announce WL1251 - "TI wl1251 support" reject_firmware drivers/net/wireless/ti/wl1251/main.c clean_blob drivers/net/wireless/ti/wl1251/main.c clean_blob drivers/net/wireless/ti/wl1251/wl1251.h -clean_kconfig drivers/net/wireless/ti/wl1251/Kconfig 'WL1251' +clean_kconfig drivers/net/wireless/ti/wl1251/Kconfig WL1251 clean_mk CONFIG_WL1251 drivers/net/wireless/ti/wl1251/Makefile announce WL12XX - "TI wl12xx support" clean_blob drivers/net/wireless/ti/wl12xx/main.c -clean_kconfig drivers/net/wireless/ti/wl12xx/Kconfig 'WL12XX' +clean_kconfig drivers/net/wireless/ti/wl12xx/Kconfig WL12XX clean_mk CONFIG_WL12XX drivers/net/wireless/ti/wl12xx/Makefile announce WL18XX - "TI wl18xx support" reject_firmware drivers/net/wireless/ti/wl18xx/main.c clean_blob drivers/net/wireless/ti/wl18xx/main.c -clean_kconfig drivers/net/wireless/ti/wl18xx/Kconfig 'WL18XX' +clean_kconfig drivers/net/wireless/ti/wl18xx/Kconfig WL18XX clean_mk CONFIG_WL18XX drivers/net/wireless/ti/wl18xx/Makefile announce WLCORE - "TI wlcore support" reject_firmware drivers/net/wireless/ti/wlcore/main.c clean_blob drivers/net/wireless/ti/wlcore/main.c clean_blob drivers/net/wireless/ti/wlcore/wlcore_i.h -clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig 'WLCORE' +clean_kconfig drivers/net/wireless/ti/wlcore/Kconfig WLCORE clean_mk CONFIG_WLCORE drivers/net/wireless/ti/wlcore/Makefile announce USB_ZD1201 - "USB ZD1201 based Wireless device support" reject_firmware drivers/net/wireless/zd1201.c clean_blob drivers/net/wireless/zd1201.c -clean_kconfig drivers/net/wireless/Kconfig 'USB_ZD1201' +clean_kconfig drivers/net/wireless/Kconfig USB_ZD1201 clean_mk CONFIG_USB_ZD1201 drivers/net/wireless/Makefile announce WCN36XX - "Qualcomm Atheros WCN3660/3680 support" reject_firmware drivers/net/wireless/ath/wcn36xx/smd.c clean_blob drivers/net/wireless/ath/wcn36xx/wcn36xx.h clean_blob drivers/net/wireless/ath/wcn36xx/main.c -clean_kconfig drivers/net/wireless/ath/wcn36xx/Kconfig 'WCN36XX' +clean_kconfig drivers/net/wireless/ath/wcn36xx/Kconfig WCN36XX clean_mk CONFIG_WCN36XX drivers/net/wireless/ath/wcn36xx/Makefile announce ZD1211RW - "ZyDAS ZD1211/ZD1211B USB-wireless support" reject_firmware drivers/net/wireless/zd1211rw/zd_usb.c clean_blob drivers/net/wireless/zd1211rw/zd_usb.c -clean_kconfig drivers/net/wireless/zd1211rw/Kconfig 'ZD1211RW' +clean_kconfig drivers/net/wireless/zd1211rw/Kconfig ZD1211RW clean_mk CONFIG_ZD1211RW drivers/net/wireless/zd1211rw/Makefile # bluetooth @@ -2075,44 +2104,44 @@ clean_mk CONFIG_ZD1211RW drivers/net/wireless/zd1211rw/Makefile announce BT_ATH3K - "Atheros firmware download driver" reject_firmware drivers/bluetooth/ath3k.c clean_blob drivers/bluetooth/ath3k.c -clean_kconfig drivers/bluetooth/Kconfig 'BT_ATH3K' +clean_kconfig drivers/bluetooth/Kconfig BT_ATH3K clean_mk CONFIG_BT_ATH3K drivers/bluetooth/Makefile announce BT_HCIBCM203X - "HCI BCM203x USB driver" reject_firmware drivers/bluetooth/bcm203x.c clean_blob drivers/bluetooth/bcm203x.c -clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBCM203X' +clean_kconfig drivers/bluetooth/Kconfig BT_HCIBCM203X clean_mk CONFIG_BT_HCIBCM203X drivers/bluetooth/Makefile announce BT_HCIBFUSB - "HCI BlueFRITZ! USB driver" reject_firmware drivers/bluetooth/bfusb.c clean_blob drivers/bluetooth/bfusb.c -clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBFUSB' +clean_kconfig drivers/bluetooth/Kconfig BT_HCIBFUSB clean_mk CONFIG_BT_HCIBFUSB drivers/bluetooth/Makefile announce BT_HCIBT3C - "HCI BT3C (PC Card) driver" reject_firmware drivers/bluetooth/bt3c_cs.c clean_blob drivers/bluetooth/bt3c_cs.c -clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBT3C' +clean_kconfig drivers/bluetooth/Kconfig BT_HCIBT3C clean_mk CONFIG_BT_HCIBT3C drivers/bluetooth/Makefile announce BT_HCIBTUSB - "HCI USB driver" reject_firmware drivers/bluetooth/btusb.c clean_blob drivers/bluetooth/btusb.c -clean_kconfig drivers/bluetooth/Kconfig 'BT_HCIBTUSB' +clean_kconfig drivers/bluetooth/Kconfig BT_HCIBTUSB clean_mk CONFIG_BT_HCIBTUSB drivers/bluetooth/Makefile announce BT_MRVL_SDIO - "Marvell BT-over-SDIO driver" reject_firmware drivers/bluetooth/btmrvl_sdio.c clean_blob drivers/bluetooth/btmrvl_sdio.c clean_blob Documentation/btmrvl.txt -clean_kconfig drivers/bluetooth/Kconfig 'BT_MRVL_SDIO' +clean_kconfig drivers/bluetooth/Kconfig BT_MRVL_SDIO clean_mk CONFIG_BT_MRVL_SDIO drivers/bluetooth/Makefile announce TI_ST - "Texas Instruments shared transport line discipline" reject_firmware drivers/misc/ti-st/st_kim.c clean_blob drivers/misc/ti-st/st_kim.c -clean_kconfig drivers/misc/ti-st/Kconfig 'TI_ST' +clean_kconfig drivers/misc/ti-st/Kconfig TI_ST clean_mk CONFIG_TI_ST drivers/misc/ti-st/Makefile # wimax @@ -2121,30 +2150,19 @@ announce WIMAX_I2400M - "Intel Wireless WiMAX Connection 2400" reject_firmware drivers/net/wimax/i2400m/fw.c clean_blob drivers/net/wimax/i2400m/usb.c clean_blob Documentation/wimax/README.i2400m -clean_kconfig drivers/net/wimax/i2400m/Kconfig 'WIMAX_I2400M' +clean_kconfig drivers/net/wimax/i2400m/Kconfig WIMAX_I2400M clean_mk CONFIG_WIMAX_I2400M drivers/net/wimax/i2400m/Makefile -announce BCM_WIMAX - "Beceem BCS200/BCS220-3 and BCSM250 wimax support" -clean_blob drivers/staging/bcm/Macros.h -# This disables loading of the .cfg file as well, but it's useless without -# the firmware proper. -clean_sed ' -/^static \(inline \)\?struct file \*open_firmware_file/,/^}$/ { - s,\(flp *= *\)filp_open[^;]*,\1/*(DEBLOBBED)*/(void*)-ENOENT, -}' drivers/staging/bcm/Misc.c 'disabled non-Free firmware loading machinery' -clean_kconfig drivers/staging/bcm/Kconfig 'BCM_WIMAX' -clean_mk CONFIG_BCM_WIMAX drivers/staging/bcm/Makefile - announce WIMAX_GDM72XX_SDIO - "GCT GDM72xx WiMAX support: SDIO interface" reject_firmware drivers/staging/gdm72xx/sdio_boot.c clean_blob drivers/staging/gdm72xx/sdio_boot.c -clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_SDIO' +clean_kconfig drivers/staging/gdm72xx/Kconfig WIMAX_GDM72XX_SDIO clean_mk CONFIG_WIMAX_GDM72XX_SDIO drivers/staging/gdm72xx/Makefile announce WIMAX_GDM72XX_USB - "GCT GDM72xx WiMAX support: USB interface" reject_firmware drivers/staging/gdm72xx/usb_boot.c clean_blob drivers/staging/gdm72xx/usb_boot.c -clean_kconfig drivers/staging/gdm72xx/Kconfig 'WIMAX_GDM72XX_USB' +clean_kconfig drivers/staging/gdm72xx/Kconfig WIMAX_GDM72XX_USB clean_mk CONFIG_WIMAX_GDM72XX_USB drivers/staging/gdm72xx/Makefile # infiniband @@ -2153,14 +2171,14 @@ announce INFINIBAND_QIB - "QLogic PCIe HCA support" drop_fw_file firmware/qlogic/sd7220.fw.ihex firmware/qlogic/sd7220.fw reject_firmware drivers/infiniband/hw/qib/qib_sd7220.c clean_blob drivers/infiniband/hw/qib/qib_sd7220.c -clean_kconfig drivers/infiniband/hw/qib/Kconfig 'INFINIBAND_QIB' +clean_kconfig drivers/infiniband/hw/qib/Kconfig INFINIBAND_QIB clean_mk CONFIG_INFINIBAND_QIB drivers/infiniband/hw/qib/Makefile # CAN announce CAN_SOFTING - "Softing Gmbh CAN generic support" reject_firmware drivers/net/can/softing/softing_fw.c -clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING' +clean_kconfig drivers/net/can/softing/Kconfig CAN_SOFTING clean_mk CONFIG_CAN_SOFTING drivers/net/can/softing/Makefile announce CAN_SOFTING_CS - "Softing Gmbh CAN pcmcia cards" @@ -2172,7 +2190,7 @@ clean_sed ' /*(DEBLOBBED)*/ /You need firmware/,/softing-fw.*tar\.gz/d }' drivers/net/can/softing/Kconfig 'removed firmware notes' -clean_kconfig drivers/net/can/softing/Kconfig 'CAN_SOFTING_CS' +clean_kconfig drivers/net/can/softing/Kconfig CAN_SOFTING_CS clean_mk CONFIG_CAN_SOFTING_CS drivers/net/can/softing/Makefile ######## @@ -2182,13 +2200,13 @@ clean_mk CONFIG_CAN_SOFTING_CS drivers/net/can/softing/Makefile announce ISDN_DIVAS - "Support Eicon DIVA Server cards" clean_blob drivers/isdn/hardware/eicon/cardtype.h clean_blob drivers/isdn/hardware/eicon/dsp_defs.h -clean_kconfig drivers/isdn/hardware/eicon/Kconfig 'ISDN_DIVAS' +clean_kconfig drivers/isdn/hardware/eicon/Kconfig ISDN_DIVAS clean_mk CONFIG_ISDN_DIVAS drivers/isdn/hardware/eicon/Makefile announce MISDN_SPEEDFAX - "Support for Sedlbauer Speedfax+" reject_firmware drivers/isdn/hardware/mISDN/speedfax.c clean_blob drivers/isdn/hardware/mISDN/speedfax.c -clean_kconfig drivers/isdn/hardware/mISDN/Kconfig 'MISDN_SPEEDFAX' +clean_kconfig drivers/isdn/hardware/mISDN/Kconfig MISDN_SPEEDFAX clean_mk CONFIG_MISDN_SPEEDFAX drivers/isdn/hardware/mISDN/Makefile ########## @@ -2198,7 +2216,7 @@ clean_mk CONFIG_MISDN_SPEEDFAX drivers/isdn/hardware/mISDN/Makefile announce DGAP - "Digi EPCA PCI products" reject_firmware drivers/staging/dgap/dgap.c clean_blob drivers/staging/dgap/dgap.c -clean_kconfig drivers/staging/dgap/Kconfig 'DGAP' +clean_kconfig drivers/staging/dgap/Kconfig DGAP clean_mk CONFIG_DGAP drivers/staging/dgap/Makefile announce SERIAL_8250_CS - "8250/16550 PCMCIA device support" @@ -2221,19 +2239,19 @@ drop_fw_file firmware/cis/SW_8xx_SER.cis.ihex firmware/cis/SW_8xx_SER.cis announce SERIAL_ICOM - "IBM Multiport Serial Adapter" reject_firmware drivers/tty/serial/icom.c clean_blob drivers/tty/serial/icom.c -clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_ICOM' +clean_kconfig drivers/tty/serial/Kconfig SERIAL_ICOM clean_mk CONFIG_SERIAL_ICOM drivers/tty/serial/Makefile announce SERIAL_QE - "Freescale QUICC Engine serial port support" reject_firmware drivers/tty/serial/ucc_uart.c clean_blob drivers/tty/serial/ucc_uart.c -clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_QE' +clean_kconfig drivers/tty/serial/Kconfig SERIAL_QE clean_mk CONFIG_SERIAL_QE drivers/tty/serial/Makefile announce SERIAL_RP2 - "Comtrol RocketPort EXPRESS/INFINITY support" reject_firmware drivers/tty/serial/rp2.c clean_blob drivers/tty/serial/rp2.c -clean_kconfig drivers/tty/serial/Kconfig 'SERIAL_RP2' +clean_kconfig drivers/tty/serial/Kconfig SERIAL_RP2 clean_mk CONFIG_SERIAL_RP2 drivers/tty/serial/Makefile ######## @@ -2242,41 +2260,53 @@ clean_mk CONFIG_SERIAL_RP2 drivers/tty/serial/Makefile announce LEDS_LP55XX_COMMON - "Common Driver for TI/National LP5521 and LP5523/55231" reject_firmware drivers/leds/leds-lp55xx-common.c -clean_kconfig drivers/leds/Kconfig 'LEDS_LP55XX_COMMON' +clean_kconfig drivers/leds/Kconfig LEDS_LP55XX_COMMON clean_mk CONFIG_LEDS_LP55XX_COMMON drivers/leds/Makefile announce LEDS_LP5521 - "LED Support for N.S. LP5521 LED driver chip" # The blob name is the chip name; no point in deblobbing that. # clean_blob drivers/leds/leds-lp5521.c -clean_kconfig drivers/leds/Kconfig 'LEDS_LP5521' +clean_kconfig drivers/leds/Kconfig LEDS_LP5521 clean_mk CONFIG_LEDS_LP5521 drivers/leds/Makefile announce LEDS_LP5523 - "LED Support for TI/National LP5523/55231 LED driver chip" # The blob name is the chip name; no point in deblobbing that. # clean_blob drivers/leds/leds-lp5523.c -clean_kconfig drivers/leds/Kconfig 'LEDS_LP5523' +clean_kconfig drivers/leds/Kconfig LEDS_LP5523 clean_mk CONFIG_LEDS_LP5523 drivers/leds/Makefile ######### # input # ######### +announce MOUSE_ELAN_I2C - "ELAN I2C Touchpad support" +reject_firmware drivers/input/mouse/elan_i2c_core.c +clean_blob drivers/input/mouse/elan_i2c.h +clean_kconfig drivers/input/mouse/Kconfig MOUSE_ELAN_I2C +clean_mk CONFIG_MOUSE_ELAN_I2C drivers/input/mouse/Makefile + +announce TOUCHSCREEN_ELAN +reject_firmware drivers/input/touchscreen/elants_i2c.c +clean_blob drivers/input/touchscreen/elants_i2c.c +clean_kconfig drivers/input/touchscreen/Kconfig TOUCHSCREEN_ELAN +clean_mk CONFIG_TOUCHSCREEN_ELAN drivers/input/touchscreen/Makefile + announce TOUCHSCREEN_ATMEL_MXT - "Atmel mXT I2C Touchscreen" reject_firmware drivers/input/touchscreen/atmel_mxt_ts.c clean_blob drivers/input/touchscreen/atmel_mxt_ts.c -clean_kconfig drivers/input/touchscreen/Kconfig 'TOUCHSCREEN_ATMEL_MXT' +clean_kconfig drivers/input/touchscreen/Kconfig TOUCHSCREEN_ATMEL_MXT clean_mk CONFIG_TOUCHSCREEN_ATMEL_MXT drivers/input/touchscreen/Makefile announce LIRC_ZILOG - "Zilog/Hauppauge IR Transmitter" reject_firmware drivers/staging/media/lirc/lirc_zilog.c clean_blob drivers/staging/media/lirc/lirc_zilog.c -clean_kconfig drivers/staging/media/lirc/Kconfig 'LIRC_ZILOG' +clean_kconfig drivers/staging/media/lirc/Kconfig LIRC_ZILOG clean_mk CONFIG_LIRC_ZILOG drivers/staging/media/lirc/Makefile announce INPUT_IMS_PCU - "IMS Passenger Control Unit driver" reject_firmware drivers/input/misc/ims-pcu.c clean_blob drivers/input/misc/ims-pcu.c -clean_kconfig drivers/input/misc/Kconfig 'INPUT_IMS_PCU' +clean_kconfig drivers/input/misc/Kconfig INPUT_IMS_PCU clean_mk CONFIG_INPUT_IMS_PCU drivers/input/misc/Makefile #################### @@ -2285,27 +2315,32 @@ clean_mk CONFIG_INPUT_IMS_PCU drivers/input/misc/Makefile announce COMEDI - "Data acquisition support (comedi)" maybe_reject_firmware drivers/staging/comedi/drivers.c -clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI' +clean_kconfig drivers/staging/comedi/Kconfig COMEDI clean_mk CONFIG_COMEDI drivers/staging/comedi/Makefile announce COMEDI_DAQBOARD2000 - "IOtech DAQboard/2000 support" clean_blob drivers/staging/comedi/drivers/daqboard2000.c -clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_DAQBOARD2000' +clean_kconfig drivers/staging/comedi/Kconfig COMEDI_DAQBOARD2000 clean_mk CONFIG_COMEDI_DAQBOARD2000 drivers/staging/comedi/drivers/Makefile announce COMEDI_JR3_PCI - "JR3/PCI force sensor board support" clean_blob drivers/staging/comedi/drivers/jr3_pci.c -clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_JR3_PCI' +clean_kconfig drivers/staging/comedi/Kconfig COMEDI_JR3_PCI clean_mk CONFIG_COMEDI_JR3_PCI drivers/staging/comedi/drivers/Makefile announce COMEDI_ME_DAQ - "Meilhaus ME-2000i, ME-2600i, ME-3000vm1 support" clean_blob drivers/staging/comedi/drivers/me_daq.c -clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_ME_DAQ' +clean_kconfig drivers/staging/comedi/Kconfig COMEDI_ME_DAQ clean_mk CONFIG_COMEDI_ME_DAQ drivers/staging/comedi/drivers/Makefile +announce COMEDI_ME4000 - "Meilhaus ME-4000 support" +clean_blob drivers/staging/comedi/drivers/me4000.c +clean_kconfig drivers/staging/comedi/Kconfig COMEDI_ME4000 +clean_mk CONFIG_COMEDI_ME4000 drivers/staging/comedi/drivers/Makefile + announce COMEDI_NI_PCIDIO - "NI PCI-DIO32HS, PCI-6533, PCI-6534 support" clean_blob drivers/staging/comedi/drivers/ni_pcidio.c -clean_kconfig drivers/staging/comedi/Kconfig 'COMEDI_NI_PCIDIO' +clean_kconfig drivers/staging/comedi/Kconfig COMEDI_NI_PCIDIO clean_mk CONFIG_COMEDI_NI_PCIDIO drivers/staging/comedi/drivers/Makefile @@ -2323,7 +2358,7 @@ clean_sed ' ' drivers/mmc/host/Kconfig "removed firmware notes" reject_firmware drivers/mmc/host/vub300.c clean_blob drivers/mmc/host/vub300.c -clean_kconfig drivers/mmc/host/Kconfig 'MMC_VUB300' +clean_kconfig drivers/mmc/host/Kconfig MMC_VUB300 clean_mk CONFIG_MMC_VUB300 drivers/mmc/host/Makefile ######## @@ -2334,7 +2369,7 @@ announce SCSI_QLOGICPTI - "PTI Qlogic, ISP Driver" drop_fw_file firmware/qlogic/isp1000.bin.ihex firmware/qlogic/isp1000.bin reject_firmware drivers/scsi/qlogicpti.c clean_blob drivers/scsi/qlogicpti.c -clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGICPTI' +clean_kconfig drivers/scsi/Kconfig SCSI_QLOGICPTI clean_mk CONFIG_SCSI_QLOGICPTI drivers/scsi/Makefile announce SCSI_ADVANSYS - "AdvanSys SCSI" @@ -2344,7 +2379,7 @@ drop_fw_file firmware/advansys/38C0800.bin.ihex firmware/advansys/38C0800.bin drop_fw_file firmware/advansys/38C1600.bin.ihex firmware/advansys/38C1600.bin reject_firmware drivers/scsi/advansys.c clean_blob drivers/scsi/advansys.c -clean_kconfig drivers/scsi/Kconfig 'SCSI_ADVANSYS' +clean_kconfig drivers/scsi/Kconfig SCSI_ADVANSYS clean_mk CONFIG_SCSI_ADVANSYS drivers/scsi/Makefile announce SCSI_QLOGIC_1280 - "Qlogic QLA 1240/1x80/1x160 SCSI" @@ -2353,27 +2388,27 @@ drop_fw_file firmware/qlogic/1280.bin.ihex firmware/qlogic/1280.bin drop_fw_file firmware/qlogic/12160.bin.ihex firmware/qlogic/12160.bin reject_firmware drivers/scsi/qla1280.c clean_blob drivers/scsi/qla1280.c -clean_kconfig drivers/scsi/Kconfig 'SCSI_QLOGIC_1280' +clean_kconfig drivers/scsi/Kconfig SCSI_QLOGIC_1280 clean_mk CONFIG_SCSI_QLOGIC_1280 drivers/scsi/Makefile announce SCSI_AIC94XX - "Adaptec AIC94xx SAS/SATA support" reject_firmware drivers/scsi/aic94xx/aic94xx_seq.c clean_blob drivers/scsi/aic94xx/aic94xx_seq.c clean_blob drivers/scsi/aic94xx/aic94xx_seq.h -clean_kconfig drivers/scsi/aic94xx/Kconfig 'SCSI_AIC94XX' +clean_kconfig drivers/scsi/aic94xx/Kconfig SCSI_AIC94XX clean_mk CONFIG_SCSI_AIC94XX drivers/scsi/aic94xx/Makefile announce SCSI_BFA_FC - "Brocade BFA Fibre Channel Support" reject_firmware drivers/scsi/bfa/bfad.c clean_blob drivers/scsi/bfa/bfad.c -clean_kconfig drivers/scsi/Kconfig 'SCSI_BFA_FC' +clean_kconfig drivers/scsi/Kconfig SCSI_BFA_FC clean_mk CONFIG_SCSI_BFA_FC drivers/scsi/bfa/Makefile announce SCSI_CHELSIO_FCOE - "Chelsio Communications FCoE support" reject_firmware drivers/scsi/csiostor/csio_hw.c clean_blob drivers/scsi/csiostor/csio_hw_chip.h clean_blob drivers/scsi/csiostor/csio_init.c -clean_kconfig drivers/scsi/csiostor/Kconfig 'SCSI_CHELSIO_FCOE' +clean_kconfig drivers/scsi/csiostor/Kconfig SCSI_CHELSIO_FCOE clean_mk CONFIG_SCSI_CHELSIO_FCOE drivers/scsi/csiostor/Makefile announce SCSI_LPFC - "Emulex LightPulse Fibre Channel Support" @@ -2383,7 +2418,7 @@ announce SCSI_LPFC - "Emulex LightPulse Fibre Channel Support" # this is the hardware or the software inducing to the installation of # non-Free firmware. reject_firmware drivers/scsi/lpfc/lpfc_init.c -clean_kconfig drivers/scsi/Kconfig 'SCSI_LPFC' +clean_kconfig drivers/scsi/Kconfig SCSI_LPFC clean_mk CONFIG_SCSI_LPFC drivers/scsi/lpfc/Makefile announce SCSI_QLA_FC - "QLogic QLA2XXX Fibre Channel Support" @@ -2395,9 +2430,16 @@ clean_sed ' /^ By default, firmware/,/ftp:[/][/].*firmware[/]/d }' drivers/scsi/qla2xxx/Kconfig 'removed firmware notes' clean_blob drivers/scsi/qla2xxx/qla_os.c -clean_kconfig drivers/scsi/qla2xxx/Kconfig 'SCSI_QLA_FC' +clean_kconfig drivers/scsi/qla2xxx/Kconfig SCSI_QLA_FC clean_mk CONFIG_SCSI_QLA_FC drivers/scsi/qla2xxx/Makefile +announce SCSI_WD719x - "Western Digital WD7193/7197/7296 support" +reject_firmware drivers/scsi/wd719x.c +clean_blob drivers/scsi/wd719x.c +clean_blob Documentation/scsi/wd719x.txt +clean_kconfig drivers/scsi/Kconfig SCSI_WD719X +clean_mk CONFIG_SCSI_WD719X drivers/scsi/Makefile + ####### # USB # @@ -2408,19 +2450,19 @@ clean_mk CONFIG_SCSI_QLA_FC drivers/scsi/qla2xxx/Makefile announce USB_CXACRU - "Conexant AccessRunner USB support" reject_firmware drivers/usb/atm/cxacru.c clean_blob drivers/usb/atm/cxacru.c -clean_kconfig drivers/usb/atm/Kconfig 'USB_CXACRU' +clean_kconfig drivers/usb/atm/Kconfig USB_CXACRU clean_mk CONFIG_USB_CXACRU drivers/usb/atm/Makefile announce USB_SPEEDTOUCH - "Speedtouch USB support" reject_firmware drivers/usb/atm/speedtch.c clean_blob drivers/usb/atm/speedtch.c -clean_kconfig drivers/usb/atm/Kconfig 'USB_SPEEDTOUCH' +clean_kconfig drivers/usb/atm/Kconfig USB_SPEEDTOUCH clean_mk CONFIG_USB_SPEEDTOUCH drivers/usb/atm/Makefile announce USB_UEAGLEATM - "ADI 930 and eagle USB DSL modem" reject_firmware drivers/usb/atm/ueagle-atm.c clean_blob drivers/usb/atm/ueagle-atm.c -clean_kconfig drivers/usb/atm/Kconfig 'USB_UEAGLEATM' +clean_kconfig drivers/usb/atm/Kconfig USB_UEAGLEATM clean_mk CONFIG_USB_UEAGLEATM drivers/usb/atm/Makefile # host @@ -2428,7 +2470,7 @@ clean_mk CONFIG_USB_UEAGLEATM drivers/usb/atm/Makefile announce USB_XHCI_RCAR - "xHCI support for Renesas R-Car SoCs" reject_firmware drivers/usb/host/xhci-rcar.c clean_blob drivers/usb/host/xhci-rcar.c -clean_kconfig drivers/usb/host/Kconfig 'USB_XHCI_RCAR' +clean_kconfig drivers/usb/host/Kconfig USB_XHCI_RCAR clean_mk CONFIG_USB_XHCI_RCAR drivers/usb/host/Makefile # misc @@ -2440,7 +2482,7 @@ drop_fw_file firmware/emi26/firmware.HEX firmware/emi26/firmware.fw drop_fw_file firmware/emi26/loader.HEX firmware/emi26/loader.fw reject_firmware drivers/usb/misc/emi26.c clean_blob drivers/usb/misc/emi26.c -clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI26' +clean_kconfig drivers/usb/misc/Kconfig USB_EMI26 clean_mk CONFIG_USB_EMI26 drivers/usb/misc/Makefile announce USB_EMI62 - "EMI 6|2m USB Audio interface" @@ -2451,7 +2493,7 @@ drop_fw_file firmware/emi62/midi.HEX firmware/emi62/midi.fw drop_fw_file firmware/emi62/spdif.HEX firmware/emi62/spdif.fw reject_firmware drivers/usb/misc/emi62.c clean_blob drivers/usb/misc/emi62.c -clean_kconfig drivers/usb/misc/Kconfig 'USB_EMI62' +clean_kconfig drivers/usb/misc/Kconfig USB_EMI62 clean_mk CONFIG_USB_EMI62 drivers/usb/misc/Makefile announce USB_EZUSB_FX2 - "Functions for loading firmware on EZUSB chips" @@ -2460,7 +2502,7 @@ maybe_reject_firmware drivers/usb/misc/ezusb.c announce USB_ISIGHTFW - "iSight firmware loading support" reject_firmware drivers/usb/misc/isight_firmware.c clean_blob drivers/usb/misc/isight_firmware.c -clean_kconfig drivers/usb/misc/Kconfig 'USB_ISIGHTFW' +clean_kconfig drivers/usb/misc/Kconfig USB_ISIGHTFW clean_mk CONFIG_USB_ISIGHTFW drivers/usb/misc/Makefile # storage @@ -2468,38 +2510,38 @@ clean_mk CONFIG_USB_ISIGHTFW drivers/usb/misc/Makefile announce USB_STORAGE_ENE_UB6250 - "USB ENE card reader support" reject_firmware drivers/usb/storage/ene_ub6250.c clean_blob drivers/usb/storage/ene_ub6250.c -clean_kconfig drivers/usb/storage/Kconfig 'USB_STORAGE_ENE_UB6250' -clean_mk 'CONFIG_USB_STORAGE_ENE_UB6250' drivers/usb/storage/Makefile +clean_kconfig drivers/usb/storage/Kconfig USB_STORAGE_ENE_UB6250 +clean_mk CONFIG_USB_STORAGE_ENE_UB6250 drivers/usb/storage/Makefile # serial announce USB_SERIAL_KEYSPAN - "USB Keyspan USA-xxx Serial Driver" drop_fw_file firmware/keyspan/mpr.HEX firmware/keyspan/mpr.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_MPR' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_MPR drop_fw_file firmware/keyspan/usa18x.HEX firmware/keyspan/usa18x.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA18X' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA18X drop_fw_file firmware/keyspan/usa19.HEX firmware/keyspan/usa19.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA19 drop_fw_file firmware/keyspan/usa19qi.HEX firmware/keyspan/usa19qi.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QI' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA19QI drop_fw_file firmware/keyspan/usa19qw.HEX firmware/keyspan/usa19qw.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19QW' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA19QW drop_fw_file firmware/keyspan/usa19w.HEX firmware/keyspan/usa19w.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA19W' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA19W drop_fw_file firmware/keyspan/usa28.HEX firmware/keyspan/usa28.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA28 drop_fw_file firmware/keyspan/usa28xa.HEX firmware/keyspan/usa28xa.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XA' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA28XA drop_fw_file firmware/keyspan/usa28xb.HEX firmware/keyspan/usa28xb.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28XB' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA28XB drop_fw_file firmware/keyspan/usa28x.HEX firmware/keyspan/usa28x.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA28X' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA28X drop_fw_file firmware/keyspan/usa49w.HEX firmware/keyspan/usa49w.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49W' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA49W drop_fw_file firmware/keyspan/usa49wlc.HEX firmware/keyspan/usa49wlc.fw -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN_USA49WLC' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN_USA49WLC clean_blob drivers/usb/serial/keyspan.c -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_KEYSPAN' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_KEYSPAN clean_mk CONFIG_USB_SERIAL_KEYSPAN drivers/usb/serial/Makefile announce USB_SERIAL_EDGEPORT - "USB Inside Out Edgeport Serial Driver" @@ -2509,20 +2551,20 @@ clean_fw firmware/edgeport/down.H16 firmware/edgeport/down.fw clean_fw firmware/edgeport/down2.H16 firmware/edgeport/down2.fw reject_firmware drivers/usb/serial/io_edgeport.c clean_blob drivers/usb/serial/io_edgeport.c -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_EDGEPORT clean_mk CONFIG_USB_SERIAL_EDGEPORT drivers/usb/serial/Makefile announce USB_SERIAL_EDGEPORT_TI - "USB Inside Out Edgeport Serial Driver (TI devices)" clean_fw firmware/edgeport/down3.bin.ihex firmware/edgeport/down3.bin reject_firmware drivers/usb/serial/io_ti.c clean_blob drivers/usb/serial/io_ti.c -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_EDGEPORT_TI' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_EDGEPORT_TI clean_mk CONFIG_USB_SERIAL_EDGEPORT_TI drivers/usb/serial/Makefile announce USB_SERIAL_MXUPORT - "USB Moxa UPORT Serial Driver" reject_firmware drivers/usb/serial/mxuport.c clean_blob drivers/usb/serial/mxuport.c -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_MXUPORT' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_MXUPORT clean_mk CONFIG_USB_SERIAL_MXUPORT drivers/usb/serial/Makefile announce USB_SERIAL_TI - "USB TI 3410/5052 Serial Driver" @@ -2533,7 +2575,7 @@ drop_fw_file firmware/mts_gsm.fw.ihex firmware/mts_gsm.fw drop_fw_file firmware/mts_edge.fw.ihex firmware/mts_edge.fw reject_firmware drivers/usb/serial/ti_usb_3410_5052.c clean_blob drivers/usb/serial/ti_usb_3410_5052.c -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_TI' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_TI clean_mk CONFIG_USB_SERIAL_TI drivers/usb/serial/Makefile announce USB_SERIAL_WHITEHEAT - "USB ConnectTech WhiteHEAT Serial Driver" @@ -2541,7 +2583,7 @@ clean_fw firmware/whiteheat.HEX firmware/whiteheat.fw clean_fw firmware/whiteheat_loader.HEX firmware/whiteheat_loader.fw clean_fw firmware/whiteheat_loader_debug.HEX firmware/whiteheat_loader_debug.fw clean_blob drivers/usb/serial/whiteheat.c -clean_kconfig drivers/usb/serial/Kconfig 'USB_SERIAL_WHITEHEAT' +clean_kconfig drivers/usb/serial/Kconfig USB_SERIAL_WHITEHEAT clean_mk CONFIG_USB_SERIAL_WHITEHEAT drivers/usb/serial/Makefile # uwb @@ -2551,7 +2593,7 @@ reject_firmware drivers/uwb/i1480/dfu/i1480-dfu.h reject_firmware drivers/uwb/i1480/dfu/mac.c reject_firmware drivers/uwb/i1480/dfu/phy.c clean_blob drivers/uwb/i1480/dfu/usb.c -clean_kconfig drivers/uwb/Kconfig 'UWB_I1480U' +clean_kconfig drivers/uwb/Kconfig UWB_I1480U clean_mk CONFIG_UWB_I1480U drivers/uwb/i1480/dfu/Makefile @@ -2563,14 +2605,14 @@ clean_mk CONFIG_UWB_I1480U drivers/uwb/i1480/dfu/Makefile announce LATTICE_ECP3_CONFIG - "Lattice ECP3 FPGA bitstrap configuration via SPI" reject_firmware drivers/misc/lattice-ecp3-config.c clean_blob drivers/misc/lattice-ecp3-config.c -clean_kconfig drivers/misc/Kconfig 'LATTICE_ECP3_CONFIG' +clean_kconfig drivers/misc/Kconfig LATTICE_ECP3_CONFIG clean_mk CONFIG_LATTICE_ECP3_CONFIG drivers/misc/Makefile announce STE_MODEM_RPROC - "STE-Modem remoteproc support" maybe_reject_firmware drivers/remoteproc/remoteproc_core.c undefine_macro SPROC_MODEM_FIRMWARE "\"/*(DEBLOBBED)*/\"" \ "disabled non-Free firmware" drivers/remoteproc/ste_modem_rproc.c -clean_kconfig drivers/remoteproc/Kconfig 'STE_MODEM_RPROC' +clean_kconfig drivers/remoteproc/Kconfig STE_MODEM_RPROC clean_mk CONFIG_STE_MODEM_RPROC drivers/remoteproc/Makefile @@ -2582,29 +2624,29 @@ announce SND_ASIHPI - "AudioScience ASIxxxx" reject_firmware sound/pci/asihpi/hpidspcd.c clean_blob sound/pci/asihpi/hpidspcd.c clean_blob sound/pci/asihpi/hpioctl.c -clean_kconfig sound/pci/Kconfig 'SND_ASIHPI' +clean_kconfig sound/pci/Kconfig SND_ASIHPI clean_mk CONFIG_SND_ASIHPI sound/pci/asihpi/Makefile announce SND_CS46XX - "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x" reject_firmware sound/pci/cs46xx/cs46xx_lib.c clean_blob sound/pci/cs46xx/cs46xx_lib.c -clean_kconfig sound/pci/Kconfig 'SND_CS46XX' -clean_mk 'CONFIG_SND_CS46XX' sound/pci/cs46xx/Makefile +clean_kconfig sound/pci/Kconfig SND_CS46XX +clean_mk CONFIG_SND_CS46XX sound/pci/cs46xx/Makefile announce SND_KORG1212 - "Korg 1212 IO" drop_fw_file firmware/korg/k1212.dsp.ihex firmware/korg/k1212.dsp reject_firmware sound/pci/korg1212/korg1212.c clean_blob sound/pci/korg1212/korg1212.c -clean_kconfig sound/pci/Kconfig 'SND_KORG1212' -clean_mk 'CONFIG_SND_KORG1212' sound/pci/korg1212/Makefile +clean_kconfig sound/pci/Kconfig SND_KORG1212 +clean_mk CONFIG_SND_KORG1212 sound/pci/korg1212/Makefile announce SND_MAESTRO3 - "ESS Allegro/Maestro3" drop_fw_file firmware/ess/maestro3_assp_kernel.fw.ihex firmware/ess/maestro3_assp_kernel.fw drop_fw_file firmware/ess/maestro3_assp_minisrc.fw.ihex firmware/ess/maestro3_assp_minisrc.fw reject_firmware sound/pci/maestro3.c clean_blob sound/pci/maestro3.c -clean_kconfig sound/pci/Kconfig 'SND_MAESTRO3' -clean_mk 'CONFIG_SND_MAESTRO3' sound/pci/Makefile +clean_kconfig sound/pci/Kconfig SND_MAESTRO3 +clean_mk CONFIG_SND_MAESTRO3 sound/pci/Makefile announce SND_YMFPCI - "Yamaha YMF724/740/744/754" drop_fw_file firmware/yamaha/ds1_ctrl.fw.ihex firmware/yamaha/ds1_ctrl.fw @@ -2612,8 +2654,8 @@ drop_fw_file firmware/yamaha/ds1_dsp.fw.ihex firmware/yamaha/ds1_dsp.fw drop_fw_file firmware/yamaha/ds1e_ctrl.fw.ihex firmware/yamaha/ds1e_ctrl.fw reject_firmware sound/pci/ymfpci/ymfpci_main.c clean_blob sound/pci/ymfpci/ymfpci_main.c -clean_kconfig sound/pci/Kconfig 'SND_YMFPCI' -clean_mk 'CONFIG_SND_YMFPCI' sound/pci/ymfpci/Makefile +clean_kconfig sound/pci/Kconfig SND_YMFPCI +clean_mk CONFIG_SND_YMFPCI sound/pci/ymfpci/Makefile announce SND_SB16_CSP - "SB16 Advanced Signal Processor" drop_fw_file firmware/sb16/alaw_main.csp.ihex firmware/sb16/alaw_main.csp @@ -2623,8 +2665,8 @@ drop_fw_file firmware/sb16/ima_adpcm_capture.csp.ihex firmware/sb16/ima_adpcm_ca drop_fw_file firmware/sb16/ima_adpcm_playback.csp.ihex firmware/sb16/ima_adpcm_playback.csp reject_firmware sound/isa/sb/sb16_csp.c clean_blob sound/isa/sb/sb16_csp.c -clean_kconfig sound/isa/Kconfig 'SND_SB16_CSP' -clean_mk 'CONFIG_SND_SB16_CSP' sound/isa/sb/Makefile +clean_kconfig sound/isa/Kconfig SND_SB16_CSP +clean_mk CONFIG_SND_SB16_CSP sound/isa/sb/Makefile announce SND_WAVEFRONT - "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)" drop_fw_file firmware/yamaha/yss225_registers.bin.ihex firmware/yamaha/yss225_registers.bin @@ -2632,83 +2674,83 @@ reject_firmware sound/isa/wavefront/wavefront_fx.c clean_blob sound/isa/wavefront/wavefront_fx.c reject_firmware sound/isa/wavefront/wavefront_synth.c clean_blob sound/isa/wavefront/wavefront_synth.c -clean_kconfig sound/isa/Kconfig 'SND_WAVEFRONT' -clean_mk 'CONFIG_SND_WAVEFRONT' sound/isa/wavefront/Makefile +clean_kconfig sound/isa/Kconfig SND_WAVEFRONT +clean_mk CONFIG_SND_WAVEFRONT sound/isa/wavefront/Makefile announce SND_VX_LIB - Digigram VX soundcards reject_firmware sound/drivers/vx/vx_hwdep.c clean_blob sound/drivers/vx/vx_hwdep.c -clean_kconfig sound/drivers/Kconfig 'SND_VX_LIB' +clean_kconfig sound/drivers/Kconfig SND_VX_LIB clean_mk CONFIG_SND_VX_LIB sound/drivers/vx/Makefile announce SND_DARLA20 - "(Echoaudio) Darla20" clean_blob sound/pci/echoaudio/darla20.c -clean_kconfig sound/pci/Kconfig 'SND_DARLA20' +clean_kconfig sound/pci/Kconfig SND_DARLA20 clean_mk CONFIG_SND_DARLA20 sound/pci/echoaudio/Makefile announce SND_DARLA24 - "(Echoaudio) Darla24" clean_blob sound/pci/echoaudio/darla24.c -clean_kconfig sound/pci/Kconfig 'SND_DARLA24' +clean_kconfig sound/pci/Kconfig SND_DARLA24 clean_mk CONFIG_SND_DARLA24 sound/pci/echoaudio/Makefile announce SND_ECHO3G - "(Echoaudio) 3G cards" clean_blob sound/pci/echoaudio/echo3g.c -clean_kconfig sound/pci/Kconfig 'SND_ECHO3G' +clean_kconfig sound/pci/Kconfig SND_ECHO3G clean_mk CONFIG_SND_ECHO3G sound/pci/echoaudio/Makefile announce SND_GINA20 - "(Echoaudio) Gina20" clean_blob sound/pci/echoaudio/gina20.c -clean_kconfig sound/pci/Kconfig 'SND_GINA20' +clean_kconfig sound/pci/Kconfig SND_GINA20 clean_mk CONFIG_SND_GINA20 sound/pci/echoaudio/Makefile announce SND_GINA24 - "(Echoaudio) Gina24" clean_blob sound/pci/echoaudio/gina24.c -clean_kconfig sound/pci/Kconfig 'SND_GINA24' +clean_kconfig sound/pci/Kconfig SND_GINA24 clean_mk CONFIG_SND_GINA24 sound/pci/echoaudio/Makefile announce SND_INDIGO - "(Echoaudio) Indigo" clean_blob sound/pci/echoaudio/indigo.c -clean_kconfig sound/pci/Kconfig 'SND_INDIGO' +clean_kconfig sound/pci/Kconfig SND_INDIGO clean_mk CONFIG_SND_INDIGO sound/pci/echoaudio/Makefile announce SND_INDIGODJ - "(Echoaudio) Indigo DJ" clean_blob sound/pci/echoaudio/indigodj.c -clean_kconfig sound/pci/Kconfig 'SND_INDIGODJ' +clean_kconfig sound/pci/Kconfig SND_INDIGODJ clean_mk CONFIG_SND_INDIGODJ sound/pci/echoaudio/Makefile announce SND_INDIGODJX - "(Echoaudio) Indigo DJx" clean_blob sound/pci/echoaudio/indigodjx.c -clean_kconfig sound/pci/Kconfig 'SND_INDIGODJX' +clean_kconfig sound/pci/Kconfig SND_INDIGODJX clean_mk CONFIG_SND_INDIGODJX sound/pci/echoaudio/Makefile announce SND_INDIGOIO - "(Echoaudio) Indigo IO" clean_blob sound/pci/echoaudio/indigoio.c -clean_kconfig sound/pci/Kconfig 'SND_INDIGOIO' +clean_kconfig sound/pci/Kconfig SND_INDIGOIO clean_mk CONFIG_SND_INDIGOIO sound/pci/echoaudio/Makefile announce SND_INDIGOIOX - "(Echoaudio) Indigo IOx" clean_blob sound/pci/echoaudio/indigoiox.c -clean_kconfig sound/pci/Kconfig 'SND_INDIGOIOX' +clean_kconfig sound/pci/Kconfig SND_INDIGOIOX clean_mk CONFIG_SND_INDIGOIOX sound/pci/echoaudio/Makefile announce SND_LAYLA20 - "(Echoaudio) Layla20" clean_blob sound/pci/echoaudio/layla20.c -clean_kconfig sound/pci/Kconfig 'SND_LAYLA20' +clean_kconfig sound/pci/Kconfig SND_LAYLA20 clean_mk CONFIG_SND_LAYLA20 sound/pci/echoaudio/Makefile announce SND_LAYLA24 - "(Echoaudio) Layla24" clean_blob sound/pci/echoaudio/layla24.c -clean_kconfig sound/pci/Kconfig 'SND_LAYLA24' +clean_kconfig sound/pci/Kconfig SND_LAYLA24 clean_mk CONFIG_SND_LAYLA24 sound/pci/echoaudio/Makefile announce SND_MIA - "(Echoaudio) Mia" clean_blob sound/pci/echoaudio/mia.c -clean_kconfig sound/pci/Kconfig 'SND_MIA' +clean_kconfig sound/pci/Kconfig SND_MIA clean_mk CONFIG_SND_MIA sound/pci/echoaudio/Makefile announce SND_MONA - "(Echoaudio) Mona" clean_blob sound/pci/echoaudio/mona.c -clean_kconfig sound/pci/Kconfig 'SND_MONA' +clean_kconfig sound/pci/Kconfig SND_MONA clean_mk CONFIG_SND_MONA sound/pci/echoaudio/Makefile announce SND_'<(Echoaudio)>' - "(Echoaudio) all of the above " @@ -2718,25 +2760,25 @@ clean_blob sound/pci/echoaudio/echoaudio.c announce SND_EMU10K1 - "Emu10k1 (SB Live!, Audigy, E-mu APS)" reject_firmware sound/pci/emu10k1/emu10k1_main.c clean_blob sound/pci/emu10k1/emu10k1_main.c -clean_kconfig sound/pci/Kconfig 'SND_EMU10K1' +clean_kconfig sound/pci/Kconfig SND_EMU10K1 clean_mk CONFIG_SND_EMU10K1 sound/pci/emu10k1/Makefile announce SND_MIXART - "Digigram miXart" reject_firmware sound/pci/mixart/mixart_hwdep.c clean_blob sound/pci/mixart/mixart_hwdep.c -clean_kconfig sound/pci/Kconfig 'SND_MIXART' +clean_kconfig sound/pci/Kconfig SND_MIXART clean_mk CONFIG_SND_MIXART sound/pci/mixart/Makefile announce SND_PCXHR - "Digigram PCXHR" reject_firmware sound/pci/pcxhr/pcxhr_hwdep.c clean_blob sound/pci/pcxhr/pcxhr_hwdep.c -clean_kconfig sound/pci/Kconfig 'SND_PCXHR' +clean_kconfig sound/pci/Kconfig SND_PCXHR clean_mk CONFIG_SND_PCXHR sound/pci/pcxhr/Makefile announce SND_RIPTIDE - "Conexant Riptide" reject_firmware sound/pci/riptide/riptide.c clean_blob sound/pci/riptide/riptide.c -clean_kconfig sound/pci/Kconfig 'SND_RIPTIDE' +clean_kconfig sound/pci/Kconfig SND_RIPTIDE clean_mk CONFIG_SND_RIPTIDE sound/pci/riptide/Makefile # This is ok, patch filenames are supplied as module parameters, and @@ -2752,37 +2794,37 @@ clean_sed ' /^config SND_HDA_CODEC_CA0132_DSP$/, /^config / { s,(ctefx.bin),(/*(DEBLOBBED)*/),; }' sound/pci/hda/Kconfig 'removed blob name' -clean_kconfig sound/pci/hda/Kconfig 'SND_HDA_CODEC_CA0132_DSP' +clean_kconfig sound/pci/hda/Kconfig SND_HDA_CODEC_CA0132_DSP # There are no separate source files or Makefile entries for the _DSP option. clean_mk CONFIG_SND_HDA_CODEC_CA0132 sound/pci/hda/Makefile announce SND_HDSP - "RME Hammerfall DSP Audio" reject_firmware sound/pci/rme9652/hdsp.c clean_blob sound/pci/rme9652/hdsp.c -clean_kconfig sound/pci/Kconfig 'SND_HDSP' +clean_kconfig sound/pci/Kconfig SND_HDSP clean_mk CONFIG_SND_HDSP sound/pci/rme9652/Makefile announce SND_AICA - "Dreamcast Yamaha AICA sound" reject_firmware sound/sh/aica.c clean_blob sound/sh/aica.c -clean_kconfig sound/sh/Kconfig 'SND_AICA' +clean_kconfig sound/sh/Kconfig SND_AICA clean_mk CONFIG_SND_AICA sound/sh/Makefile announce SND_MSND_PINNACLE - "Support for Turtle Beach MultiSound Pinnacle" clean_blob sound/isa/msnd/msnd_pinnacle.h reject_firmware sound/isa/msnd/msnd_pinnacle.c clean_blob sound/isa/msnd/msnd_pinnacle.c -clean_kconfig sound/isa/Kconfig 'SND_MSND_PINNACLE' +clean_kconfig sound/isa/Kconfig SND_MSND_PINNACLE clean_mk CONFIG_SND_MSND_PINNACLE sound/isa/msnd/Makefile announce SND_MSND_CLASSIC - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey" clean_blob sound/isa/msnd/msnd_classic.h -clean_kconfig sound/isa/Kconfig 'SND_MSND_CLASSIC' +clean_kconfig sound/isa/Kconfig SND_MSND_CLASSIC clean_mk CONFIG_SND_MSND_CLASSIC sound/isa/msnd/Makefile announce SOUND_MSNDCLAS - "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey (oss)" clean_blob sound/oss/msnd_classic.h -clean_kconfig sound/oss/Kconfig 'SOUND_MSNDCLAS' +clean_kconfig sound/oss/Kconfig SOUND_MSNDCLAS clean_sed ' /^config MSNDCLAS_INIT_FILE$/, /^config / { /^ default.*msndinit\.bin/ s,".*","/*(DEBLOBBED)*/",; @@ -2794,7 +2836,7 @@ clean_mk CONFIG_SOUND_MSNDCLAS sound/oss/Makefile announce SOUND_MSNDPIN - "Support for Turtle Beach MultiSound Pinnacle (oss)" clean_blob sound/oss/msnd_pinnacle.h -clean_kconfig sound/oss/Kconfig 'SOUND_MSNDPIN' +clean_kconfig sound/oss/Kconfig SOUND_MSNDPIN clean_sed ' /^config MSNDPIN_INIT_FILE$/, /^config / { /^ default.*pndspini\.bin/ s,".*","/*(DEBLOBBED)*/",; @@ -2811,37 +2853,59 @@ clean_sed ' /^config SND_SSCAPE$/, /^config / { s,"\(scope\|sndscape\)\.co[d?]","/*(DEBLOBBED)*/",g; }' sound/isa/Kconfig 'removed firmware names' -clean_kconfig sound/isa/Kconfig 'SND_SSCAPE' +clean_kconfig sound/isa/Kconfig SND_SSCAPE clean_mk CONFIG_SND_SSCAPE sound/isa/Makefile announce SND_SOC_ADAU1701 - "ADAU1701 SigmaDSP processor" clean_blob sound/soc/codecs/adau1701.c -clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1701' +clean_kconfig sound/soc/codecs/Kconfig SND_SOC_ADAU1701 clean_mk CONFIG_SND_SOC_ADAU1701 sound/soc/codecs/Makefile announce SND_SOC_ADAU1761 - "ADAU1761 SigmaDSP processor" clean_blob sound/soc/codecs/adau1761.c -clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1761' +clean_kconfig sound/soc/codecs/Kconfig SND_SOC_ADAU1761 clean_mk CONFIG_SND_SOC_ADAU1761 sound/soc/codecs/Makefile announce SND_SOC_ADAU1781 - "ADAU1781 SigmaDSP processor" clean_blob sound/soc/codecs/adau1781.c -clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_ADAU1781' +clean_kconfig sound/soc/codecs/Kconfig SND_SOC_ADAU1781 clean_mk CONFIG_SND_SOC_ADAU1781 sound/soc/codecs/Makefile +announce SND_SOC_RT5677 - "RT5677 SoC" +reject_firmware sound/soc/codecs/rt5677.c +clean_blob sound/soc/codecs/rt5677.h +clean_kconfig sound/soc/codecs/Kconfig SND_SOC_RT5677 +clean_mk CONFIG_SND_SOC_RT5677 sound/soc/codecs/Makefile + announce SND_SOC_SIGMADSP - "SigmaStudio firmware loader" maybe_reject_firmware sound/soc/codecs/sigmadsp.c announce SND_SOC_INTEL_SST_ACPI - "Intel SST (LPE) Driver" reject_firmware sound/soc/intel/sst-acpi.c clean_blob sound/soc/intel/sst-acpi.c -clean_kconfig sound/soc/intel/Kconfig 'SND_SOC_INTEL_SST_ACPI' -clean_mk 'CONFIG_SND_SOC_INTEL_SST_ACPI' sound/soc/intel/Makefile +clean_kconfig sound/soc/intel/Kconfig SND_SOC_INTEL_SST_ACPI +clean_mk CONFIG_SND_SOC_INTEL_SST_ACPI sound/soc/intel/Makefile + +announce SND_SST_IPC - undocumented +reject_firmware sound/soc/intel/sst/sst.c +reject_firmware sound/soc/intel/sst/sst_loader.c +clean_kconfig sound/soc/intel/Kconfig SND_SST_IPC +clean_mk CONFIG_SND_SST_IPC sound/soc/intel/sst/Makefile + +announce SND_SST_IPC_ACPI - undocumented +clean_blob sound/soc/intel/sst/sst_acpi.c +clean_kconfig sound/soc/intel/Kconfig SND_SST_IPC_ACPI +clean_mk CONFIG_SND_SST_IPC_ACPI sound/soc/intel/sst/Makefile + +announce SND_SST_IPC_PCI - undocumented +clean_blob sound/soc/intel/sst/sst_pci.c +clean_kconfig sound/soc/intel/Kconfig SND_SST_IPC_PCI +clean_mk CONFIG_SND_SST_IPC_PCI sound/soc/intel/sst/Makefile announce SND_SOC_WM0010 - "WM0010 DSP driver" reject_firmware sound/soc/codecs/wm0010.c clean_blob sound/soc/codecs/wm0010.c -clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM0010' +clean_kconfig sound/soc/codecs/Kconfig SND_SOC_WM0010 clean_mk CONFIG_SND_SOC_WM0010 sound/soc/codecs/Makefile # It's not clear that wm2000_anc.bin is pure data. @@ -2849,31 +2913,31 @@ clean_mk CONFIG_SND_SOC_WM0010 sound/soc/codecs/Makefile announce SND_SOC_WM2000 - "WM2000 ALSA Soc Audio codecs" reject_firmware sound/soc/codecs/wm2000.c clean_blob sound/soc/codecs/wm2000.c -clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM2000' +clean_kconfig sound/soc/codecs/Kconfig SND_SOC_WM2000 clean_mk CONFIG_SND_SOC_WM2000 sound/soc/codecs/Makefile announce SND_SOC_WM8994 - "WM8994 ALSA Soc Audio codecs" reject_firmware sound/soc/codecs/wm8958-dsp2.c clean_blob sound/soc/codecs/wm8958-dsp2.c -clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM8994' +clean_kconfig sound/soc/codecs/Kconfig SND_SOC_WM8994 clean_mk CONFIG_SND_SOC_WM8994 sound/soc/codecs/Makefile # The coeff files might be pure data, but the wmfw surely aren't. announce SND_SOC_WM_ADSP - "Wolfson ADSP support" reject_firmware sound/soc/codecs/wm_adsp.c clean_blob sound/soc/codecs/wm_adsp.c -clean_kconfig sound/soc/codecs/Kconfig 'SND_SOC_WM_ADSP' +clean_kconfig sound/soc/codecs/Kconfig SND_SOC_WM_ADSP clean_mk CONFIG_SND_SOC_WM_ADSP sound/soc/codecs/Makefile announce SND_SOC_SH4_SIU - "ALSA SoC driver for Renesas SH7343, SH7722 SIU peripheral" reject_firmware sound/soc/sh/siu_dai.c clean_blob sound/soc/sh/siu_dai.c -clean_kconfig sound/soc/sh/Kconfig 'SND_SOC_SH4_SIU' +clean_kconfig sound/soc/sh/Kconfig SND_SOC_SH4_SIU clean_mk CONFIG_SND_SOC_SH4_SIU sound/soc/sh/Makefile announce SOUND_TRIX - "MediaTrix AudioTrix Pro support" clean_blob sound/oss/trix.c -clean_kconfig sound/oss/Kconfig 'SOUND_TRIX' +clean_kconfig sound/oss/Kconfig SOUND_TRIX clean_sed ' /^config TRIX_BOOT_FILE$/, /^config / { /^ default.*trxpro\.hex/ s,".*","/*(DEBLOBBED)*/",; @@ -2884,15 +2948,15 @@ announce SOUND_TRIX - "See above," announce SOUND_PAS - "ProAudioSpectrum 16 support," announce SOUND_SB - "100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support" clean_blob sound/oss/sb_common.c -clean_kconfig sound/oss/Kconfig 'SOUND_PAS' -clean_kconfig sound/oss/Kconfig 'SOUND_SB' +clean_kconfig sound/oss/Kconfig SOUND_PAS +clean_kconfig sound/oss/Kconfig SOUND_SB clean_mk CONFIG_SOUND_PAS sound/oss/Makefile clean_mk CONFIG_SOUND_SB sound/oss/Makefile announce SOUND_PSS - "PSS (AD1848, ADSP-2115, ESC614) support" clean_sed 's,^\( [*] .*synth"\)\.$,\1/*.,' sound/oss/pss.c 'avoid nested comments' clean_blob sound/oss/pss.c -clean_kconfig sound/oss/Kconfig 'SOUND_PSS' +clean_kconfig sound/oss/Kconfig SOUND_PSS clean_sed ' /^config PSS_BOOT_FILE$/, /^config / { /^ default.*dsp001\.ld/ s,".*","/*(DEBLOBBED)*/",; @@ -2902,8 +2966,8 @@ clean_mk CONFIG_SOUND_PSS sound/oss/Makefile announce SND_USB_6FIRE - "TerraTec DMX 6Fire USB" reject_firmware sound/usb/6fire/firmware.c clean_blob sound/usb/6fire/firmware.c -clean_kconfig sound/usb/Kconfig 'SND_USB_6FIRE' -clean_mk 'CONFIG_SND_USB_6FIRE' sound/usb/6fire/Makefile +clean_kconfig sound/usb/Kconfig SND_USB_6FIRE +clean_mk CONFIG_SND_USB_6FIRE sound/usb/6fire/Makefile ####### # SOC # @@ -2912,7 +2976,7 @@ clean_mk 'CONFIG_SND_USB_6FIRE' sound/usb/6fire/Makefile announce KEYSTONE_NAVIGATOR_QMSS - "Keystone Queue Manager Sub System" reject_firmware drivers/soc/ti/knav_qmss_queue.c clean_blob Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt -clean_kconfig drivers/soc/ti/Kconfig 'KEYSTONE_NAVIGATOR_QMSS' +clean_kconfig drivers/soc/ti/Kconfig KEYSTONE_NAVIGATOR_QMSS clean_mk CONFIG_KEYSTONE_NAVIGATOR_QMSS drivers/soc/ti/Makefile ################# diff --git a/freed-ora/current/f20/deblob-check b/freed-ora/current/f20/deblob-check index ce9ac1cb2..40828e254 100755 --- a/freed-ora/current/f20/deblob-check +++ b/freed-ora/current/f20/deblob-check @@ -1,13 +1,13 @@ #! /bin/sh -# deblob-check version 2014-12-08 +# deblob-check version 2015-02-01 # Inspired in gNewSense's find-firmware script. # Written by Alexandre Oliva <lxoliva@fsfla.org> # Check http://www.fsfla.org/svn/fsfla/software/linux-libre for newer # versions. -# Copyright 2008-2014 Alexandre Oliva <lxoliva@fsfla.org> +# Copyright 2008-2015 Alexandre Oliva <lxoliva@fsfla.org> # # This program is part of GNU Linux-libre, a GNU project that # publishes scripts to clean up Linux so as to make it suitable for @@ -3969,6 +3969,55 @@ set_except () { accept '[\t][\t]dev_err[(][&]dev->dev[,][ ]["]%d[,][ ]request_firmware[ ]failed' sound/pci/asihpi/hpidspcd.c accept 'static[ ]int[ ]snd_ymfpci_request_firmware[(]' sound/pci/ymfpci/ymfpci_main.c accept '[\t]err[ ]=[ ]snd_ymfpci_request_firmware[(]' sound/pci/ymfpci/ymfpci_main.c + # New in 3.19 + blobname 'a420_p\(m4\|fp\)\.fw' drivers/gpu/drm/msm/adreno/adreno_device.c + defsnc 'static[ ]const[ ]unsigned[ ]int[ ]a4xx_registers\[\][ ]=' drivers/gpu/drm/msm/adreno/a4xx_gpu.c + defsnc 'static[ ]const[ ]u32[ ]gen9_null_state_batch\[\][ ]=' drivers/gpu/drm/i915/intel_renderstate_gen9.c + defsnc 'nv50_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\([04]0\|54\)0[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv50.c + defsnc 'nv84_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\([04]0\|54\)0[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nv84.c + defsnc 'nvd0_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*\(300\)\?[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nvd0.c + defsnc 'nve0_disp_\(core_mthd_head\|base_mthd_base\)[ ]=[ ][{]\([\n][ \t]*\.\(mthd\|addr\)[ ]=[ ]0x00*300[,]\)*[\n][ \t]*\.data[ ]=' drivers/gpu/drm/nouveau/core/engine/disp/nve0.c + # This reads from user-supplied filenames. + accept 'shadow_fw_init[(]struct[ ]nouveau_bios[ ][*]bios[,][ ]const[ ]char[ ][*]name[)][\n][{][\n]\(\([^}\n][^\n]*\)\?[\n]\)*[\t]int[ ]ret[ ]=[ ]request_firmware[(][&]fw[,][ ]name[,][ ]dev[)][;]' drivers/gpu/drm/nouveau/core/subdev/bios/shadow.c + defsnc 'static[ ]const[ ]u32[ ]coef_lut_\(a_legacy\|b\|[cdef]_[yc]_legacy\)\[NB_COEF\][ ]=' drivers/gpu/drm/sti/sti_hqvdp_lut.h + blobname 'hqvdp-stih407\.bin' drivers/gpu/drm/sti/sti_hqvdp.c + defsnc '[\t]static[ ]const[ ]union[ ]sixaxis_output_report_01[ ]default_report[ ]=' drivers/hid/hid-sony.c + blobname 'elan_i2c\.bin' drivers/input/mouse/elan_i2c_core.c + blobname 'elants_i2c\.bin' drivers/input/touchscreen/elants_i2c.c + defsnc '[}][ ]QAM256_mod_tab_zv_mode\[\][ ]=' drivers/media/dvb-frontends/au8522_dig.c + blobname 'dvb-demod-m88rs6000\.fw' drivers/media/dvb-frontends/m88ds3103_priv.h + defsnc 'static[ ]const[ ]struct[ ]m88ds3103_reg_val[ ]m88rs6000_dvbs2\?_init_reg_vals\[\][ ]=' drivers/media/dvb-frontends/m88ds3103_priv.h + defsnc 'static[ ]const[ ]unsigned[ ]char[ ]\(luma\|chroma\)_ac_value\[162[ ][+][ ]2\][ ]=' drivers/media/platform/coda/coda-jpeg.c + defsnc 'static[ ]unsigned[ ]char[ ]\(luma\|chroma\)_q\[64\][ ]=' drivers/media/platform/coda/coda-jpeg.c + defsnc 'static[ ]const[ ]struct[ ]vin_coeff[ ]vin_coeff_set\[\][ ]=' drivers/media/platform/soc_camera/rcar_vin.c + defsnc 'const[ ]unsigned[ ]short[ ]tpg_\(rec709_to_linear\|linear_to_rec709\)\[255[ ][*][ ]16[ ][+][ ]1\][ ]=' drivers/media/platform/vivid/vivid-tpg-colors.c + defsnc '[\t]static[ ]const[ ]struct[ ]m88rs6000t_reg_val[ ]reg_vals\[\][ ]=' drivers/media/tuners/m88rs6000t.c + blobna '[/][*][ ]cal-<bus>-<id>\.bin[ ][*][/]' drivers/net/wireless/ath/ath10k/core.c + blobname 'cal-%s-%s\.bin' drivers/net/wireless/ath/ath10k/core.c + defsnc 'static[ ]const[ ]u32[ ]qca953x_2p0_\(common_wo_xlna_rx\|modes_\(no_\)\?xpa_tx\)_gain_table\[\]\[2\][ ]=' drivers/net/wireless/ath/ath9k/ar953x_initvals.h + blobname 'mrvl[/]usb8766_uapsta\.bin' drivers/net/wireless/mwifiex/usb.h + defsc 'static[ ]const[ ]unsigned[ ]char[ ]opcode_ind_arr\[256\][ ]=' drivers/scsi/scsi_debug.c + defsnc 'static[ ]const[ ]struct[ ]quark_spi_rate[ ]quark_spi_rate_table\[\][ ]=' drivers/spi/spi-pxa2xx.c + blobname 'me4000_firmware\.bin' drivers/staging/comedi/drivers/me4000.c + defsnc '[\t]u8[ ]ConnectionMsg\[\][ ]=' drivers/staging/ft1000/ft1000-usb/ft1000_debug.c + accept '[\t]pr_info[(]["]load[ ]fpgaimage[ ]%s[\\]n["][,][ ]fw_file[)][;][\n]*[\t]err[ ]=[ ]request_firmware[(][&]fimage->fw_entry[,]' drivers/staging/gs_fpgaboot/gs_fpgaboot.c + blobname 'dvb-demod-mn88472-02\.fw' drivers/staging/media/mn88472/mn88472_priv.h + blobname 'dvb-demod-mn88473-01\.fw' drivers/staging/media/mn88472/mn88472_priv.h + accept '[\t][\t]goto[ ]err_request_firmware[;]' drivers/staging/media/mn88473/mn88473.c + accept 'err_request_firmware[:]' drivers/staging/media/mn88473/mn88473.c + blob 'The[ ]card[ ]requires[ ]firmware.*[\n]rm[ ]wd7296a\.sys' Documentation/scsi/wd719x.txt + blobname 'wd719x-\(wcs\|risc\)\.bin' drivers/scsi/wd719x.c + defsnc 'static[ ]const[ ]struct[ ]tsadc_table[ ]v2_code_table\[\][ ]=' drivers/thermal/rockchip_thermal.c + defsnc 'static[ ]const[ ]u8[ ]debug_pk\[64\][ ]=' net/bluetooth/smp.c + defsnc 'static[ ]const[ ]u8[ ]debug_sk\[32\][ ]=' net/bluetooth/smp.c + defsnc 'static[ ]const[ ]struct[ ]reg_default[ ]ad1980_reg_defaults\[\][ ]=' sound/soc/codecs/ad1980.c + blobname 'rt5677_dsp_fw[12]\.bin' sound/soc/codecs/rt5677.c + accept 'int[ ]sst_request_firmware_async[(]' sound/soc/intel/sst/sst.h + blobname 'intel[/]fw_sst_0f28\.bin-48kHz_i2s_master' sound/soc/intel/sst-acpi.c + blobname '\(intel[/]\)\?fw_sst_\(0f28\|22a8\)\.bin' sound/soc/intel/sst/sst_acpi.c + blobname '%s%04x%s["][,][ ]["]fw_sst_["][,][\n][ \t]*sst_drv_ctx->dev_id[,][ ]["]\.bin' sound/soc/intel/sst/sst_pci.c + accept '[\t]\?\(evsel\|machine\|thread\|comm\(_thread\)\?\|dso\|symbol\|branch_type\|sample\|[\t]call\(_path\)\?\)_file[ \t]*=[ ]open_output_file[(]["]\(evsel\|machine\|thread\|comm\(_thread\)\?\|dso\|symbol\|branch_type\|sample\|call\(_path\)\?\)_table\.bin["][)]' tools/perf/scripts/python/export-to-postgresql.py + # accept '\([*]\.\(bin\|elf\|fw\)\|\(setup\|wakeup\)\.\(bin\|elf\)\|vmlinux\.bin\.all\|tftpboot\.img\)[\n]' Documentation/dontdiff ;; */*freedo*.patch | */*logo*.patch) diff --git a/freed-ora/current/f20/deblob-main b/freed-ora/current/f20/deblob-main index 3a85cdc96..b2bf813ce 100755 --- a/freed-ora/current/f20/deblob-main +++ b/freed-ora/current/f20/deblob-main @@ -1,6 +1,6 @@ #! /bin/sh -# Copyright (C) 2008-2012 Alexandre Oliva <lxoliva@fsfla.org> +# Copyright (C) 2008-2014 Alexandre Oliva <lxoliva@fsfla.org> # This program is part of GNU Linux-libre, a GNU project that # publishes scripts to clean up Linux so as to make it suitable for @@ -271,15 +271,10 @@ xdelta3 -e -9 -S djw -s linux-$kver.tar linux-libre-$kver-$gnu.tar linux-libre-$ echo Creating xdelta between linux-$kver.tar and linux-libre-$kver-$gnu.tar xdelta delta -0 linux-$kver.tar linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.xdelta || : # xdelta returns nonzero on success -cleanup="linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.vcdiff linux-libre-$kver-$gnu.xdelta" +cleanup="linux-libre-$kver-$gnu.tar linux-libre-$kver-$gnu.xdelta" echo Compressing binary deltas and linux-libre-$kver-$gnu.tar rm -f linux-$kver.tar -if test -f linux-libre-$kver-$gnu.vcdiff; then - bzip2 -k9 linux-libre-$kver-$gnu.vcdiff - xz -k9 linux-libre-$kver-$gnu.vcdiff || : - lzip -k9 linux-libre-$kver-$gnu.vcdiff || : -fi if test -f linux-libre-$kver-$gnu.xdelta; then bzip2 -k9 linux-libre-$kver-$gnu.xdelta xz -k9 linux-libre-$kver-$gnu.xdelta || : @@ -296,9 +291,6 @@ for f in \ linux-libre-$kver-$gnu.tar.xz \ linux-libre-$kver-$gnu.tar.lz \ linux-libre-$kver-$gnu.vcdiff \ - linux-libre-$kver-$gnu.vcdiff.bz2 \ - linux-libre-$kver-$gnu.vcdiff.xz \ - linux-libre-$kver-$gnu.vcdiff.lz \ linux-libre-$kver-$gnu.xdelta \ linux-libre-$kver-$gnu.xdelta.bz2 \ linux-libre-$kver-$gnu.xdelta.xz \ diff --git a/freed-ora/current/f20/drm-i915-hush-check-crtc-state.patch b/freed-ora/current/f20/drm-i915-hush-check-crtc-state.patch new file mode 100644 index 000000000..d2169e654 --- /dev/null +++ b/freed-ora/current/f20/drm-i915-hush-check-crtc-state.patch @@ -0,0 +1,31 @@ +From: Adam Jackson <ajax@redhat.com> +Date: Wed, 13 Nov 2013 10:17:24 -0500 +Subject: [PATCH] drm/i915: hush check crtc state + +This is _by far_ the most common backtrace for i915 on retrace.fp.o, and +it's mostly useless noise. There's not enough context when it's generated +to know if something actually went wrong. Downgrade the message to +KMS debugging so we can still get it if we want it. + +Bugzilla: 1027037 1028785 +Upstream-status: http://lists.freedesktop.org/archives/intel-gfx/2013-November/035948.html +--- + drivers/gpu/drm/i915/intel_display.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c +index 2e2f6443fd53..2a0813e5ace9 100644 +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -10869,7 +10869,7 @@ check_crtc_state(struct drm_device *dev) + + if (active && + !intel_pipe_config_compare(dev, &crtc->config, &pipe_config)) { +- I915_STATE_WARN(1, "pipe state doesn't match!\n"); ++ DRM_DEBUG_KMS("pipe state doesn't match!\n"); + intel_dump_pipe_config(crtc, &pipe_config, + "[hw state]"); + intel_dump_pipe_config(crtc, &crtc->config, +-- +2.1.0 + diff --git a/freed-ora/current/f20/drm-i915-tame-the-chattermouth-v2.patch b/freed-ora/current/f20/drm-i915-tame-the-chattermouth-v2.patch index 18a1b1b23..9cf29f569 100644 --- a/freed-ora/current/f20/drm-i915-tame-the-chattermouth-v2.patch +++ b/freed-ora/current/f20/drm-i915-tame-the-chattermouth-v2.patch @@ -20,21 +20,20 @@ v2: paint the macro names blue, clarify that the default behavior Signed-off-by: Rob Clark <robdclark@gmail.com> Acked-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> -Backported-by: Josh Boyer <jwboyer@fedoraproject.org> --- drivers/gpu/drm/i915/i915_drv.h | 30 ++++++++ drivers/gpu/drm/i915/i915_params.c | 5 ++ - drivers/gpu/drm/i915/intel_display.c | 132 +++++++++++++++++------------------ - drivers/gpu/drm/i915/intel_dp.c | 2 +- - 4 files changed, 102 insertions(+), 67 deletions(-) + drivers/gpu/drm/i915/intel_display.c | 134 +++++++++++++++++------------------ + drivers/gpu/drm/i915/intel_dp.c | 4 +- + 4 files changed, 104 insertions(+), 69 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h -index 346aee828dc3..8ac3d534434e 100644 +index ddd005ce3a94..204dd676ebac 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h -@@ -57,6 +57,35 @@ - #define DRIVER_DESC "Intel Graphics" - #define DRIVER_DATE "20140905" +@@ -60,6 +60,35 @@ + #undef WARN_ON + #define WARN_ON(x) WARN(x, "WARN_ON(" #x ")") +/* Use I915_STATE_WARN(x) and I915_STATE_WARN_ON() (rather than WARN() and + * WARN_ON()) for hw state sanity checks to check for unexpected conditions @@ -68,7 +67,7 @@ index 346aee828dc3..8ac3d534434e 100644 enum pipe { INVALID_PIPE = -1, PIPE_A = 0, -@@ -2222,6 +2251,7 @@ struct i915_params { +@@ -2315,6 +2344,7 @@ struct i915_params { bool disable_vtd_wa; int use_mmio_flip; bool mmio_debug; @@ -97,10 +96,10 @@ index c91cb2033cc5..db07153b693f 100644 +MODULE_PARM_DESC(verbose_state_checks, + "Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions."); diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index cadc3bcf1de2..752dbe7ff017 100644 +index c10b52ef116d..2e2f6443fd53 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c -@@ -1060,7 +1060,7 @@ void assert_pll(struct drm_i915_private *dev_priv, +@@ -1024,7 +1024,7 @@ void assert_pll(struct drm_i915_private *dev_priv, reg = DPLL(pipe); val = I915_READ(reg); cur_state = !!(val & DPLL_VCO_ENABLE); @@ -109,7 +108,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "PLL state assertion failure (expected %s, current %s)\n", state_string(state), state_string(cur_state)); } -@@ -1076,7 +1076,7 @@ static void assert_dsi_pll(struct drm_i915_private *dev_priv, bool state) +@@ -1040,7 +1040,7 @@ static void assert_dsi_pll(struct drm_i915_private *dev_priv, bool state) mutex_unlock(&dev_priv->dpio_lock); cur_state = val & DSI_PLL_VCO_EN; @@ -118,7 +117,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "DSI PLL state assertion failure (expected %s, current %s)\n", state_string(state), state_string(cur_state)); } -@@ -1107,7 +1107,7 @@ void assert_shared_dpll(struct drm_i915_private *dev_priv, +@@ -1071,7 +1071,7 @@ void assert_shared_dpll(struct drm_i915_private *dev_priv, return; cur_state = pll->get_hw_state(dev_priv, pll, &hw_state); @@ -127,7 +126,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "%s assertion failure (expected %s, current %s)\n", pll->name, state_string(state), state_string(cur_state)); } -@@ -1131,7 +1131,7 @@ static void assert_fdi_tx(struct drm_i915_private *dev_priv, +@@ -1095,7 +1095,7 @@ static void assert_fdi_tx(struct drm_i915_private *dev_priv, val = I915_READ(reg); cur_state = !!(val & FDI_TX_ENABLE); } @@ -136,7 +135,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "FDI TX state assertion failure (expected %s, current %s)\n", state_string(state), state_string(cur_state)); } -@@ -1148,7 +1148,7 @@ static void assert_fdi_rx(struct drm_i915_private *dev_priv, +@@ -1112,7 +1112,7 @@ static void assert_fdi_rx(struct drm_i915_private *dev_priv, reg = FDI_RX_CTL(pipe); val = I915_READ(reg); cur_state = !!(val & FDI_RX_ENABLE); @@ -145,7 +144,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "FDI RX state assertion failure (expected %s, current %s)\n", state_string(state), state_string(cur_state)); } -@@ -1171,7 +1171,7 @@ static void assert_fdi_tx_pll_enabled(struct drm_i915_private *dev_priv, +@@ -1135,7 +1135,7 @@ static void assert_fdi_tx_pll_enabled(struct drm_i915_private *dev_priv, reg = FDI_TX_CTL(pipe); val = I915_READ(reg); @@ -154,7 +153,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 } void assert_fdi_rx_pll(struct drm_i915_private *dev_priv, -@@ -1184,7 +1184,7 @@ void assert_fdi_rx_pll(struct drm_i915_private *dev_priv, +@@ -1148,7 +1148,7 @@ void assert_fdi_rx_pll(struct drm_i915_private *dev_priv, reg = FDI_RX_CTL(pipe); val = I915_READ(reg); cur_state = !!(val & FDI_RX_PLL_ENABLE); @@ -163,7 +162,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "FDI RX PLL assertion failure (expected %s, current %s)\n", state_string(state), state_string(cur_state)); } -@@ -1226,7 +1226,7 @@ static void assert_panel_unlocked(struct drm_i915_private *dev_priv, +@@ -1190,7 +1190,7 @@ void assert_panel_unlocked(struct drm_i915_private *dev_priv, ((val & PANEL_UNLOCK_MASK) == PANEL_UNLOCK_REGS)) locked = false; @@ -172,7 +171,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "panel assertion failure, pipe %c regs locked\n", pipe_name(pipe)); } -@@ -1242,7 +1242,7 @@ static void assert_cursor(struct drm_i915_private *dev_priv, +@@ -1206,7 +1206,7 @@ static void assert_cursor(struct drm_i915_private *dev_priv, else cur_state = I915_READ(CURCNTR(pipe)) & CURSOR_MODE; @@ -181,7 +180,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "cursor on pipe %c assertion failure (expected %s, current %s)\n", pipe_name(pipe), state_string(state), state_string(cur_state)); } -@@ -1272,7 +1272,7 @@ void assert_pipe(struct drm_i915_private *dev_priv, +@@ -1236,7 +1236,7 @@ void assert_pipe(struct drm_i915_private *dev_priv, cur_state = !!(val & PIPECONF_ENABLE); } @@ -190,7 +189,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "pipe %c assertion failure (expected %s, current %s)\n", pipe_name(pipe), state_string(state), state_string(cur_state)); } -@@ -1287,7 +1287,7 @@ static void assert_plane(struct drm_i915_private *dev_priv, +@@ -1251,7 +1251,7 @@ static void assert_plane(struct drm_i915_private *dev_priv, reg = DSPCNTR(plane); val = I915_READ(reg); cur_state = !!(val & DISPLAY_PLANE_ENABLE); @@ -199,7 +198,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "plane %c assertion failure (expected %s, current %s)\n", plane_name(plane), state_string(state), state_string(cur_state)); } -@@ -1307,7 +1307,7 @@ static void assert_planes_disabled(struct drm_i915_private *dev_priv, +@@ -1271,7 +1271,7 @@ static void assert_planes_disabled(struct drm_i915_private *dev_priv, if (INTEL_INFO(dev)->gen >= 4) { reg = DSPCNTR(pipe); val = I915_READ(reg); @@ -208,7 +207,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "plane %c assertion failure, should be disabled but not\n", plane_name(pipe)); return; -@@ -1319,7 +1319,7 @@ static void assert_planes_disabled(struct drm_i915_private *dev_priv, +@@ -1283,7 +1283,7 @@ static void assert_planes_disabled(struct drm_i915_private *dev_priv, val = I915_READ(reg); cur_pipe = (val & DISPPLANE_SEL_PIPE_MASK) >> DISPPLANE_SEL_PIPE_SHIFT; @@ -217,7 +216,16 @@ index cadc3bcf1de2..752dbe7ff017 100644 "plane %c assertion failure, should be off on pipe %c but is still active\n", plane_name(i), pipe_name(pipe)); } -@@ -1336,20 +1336,20 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv, +@@ -1299,7 +1299,7 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv, + if (INTEL_INFO(dev)->gen >= 9) { + for_each_sprite(pipe, sprite) { + val = I915_READ(PLANE_CTL(pipe, sprite)); +- WARN(val & PLANE_CTL_ENABLE, ++ I915_STATE_WARN(val & PLANE_CTL_ENABLE, + "plane %d assertion failure, should be off on pipe %c but is still active\n", + sprite, pipe_name(pipe)); + } +@@ -1307,20 +1307,20 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv, for_each_sprite(pipe, sprite) { reg = SPCNTR(pipe, sprite); val = I915_READ(reg); @@ -241,7 +249,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "sprite %c assertion failure, should be off on pipe %c but is still active\n", plane_name(pipe), pipe_name(pipe)); } -@@ -1357,7 +1357,7 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv, +@@ -1328,7 +1328,7 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv, static void assert_vblank_disabled(struct drm_crtc *crtc) { @@ -250,7 +258,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 drm_crtc_vblank_put(crtc); } -@@ -1366,12 +1366,12 @@ static void ibx_assert_pch_refclk_enabled(struct drm_i915_private *dev_priv) +@@ -1337,12 +1337,12 @@ static void ibx_assert_pch_refclk_enabled(struct drm_i915_private *dev_priv) u32 val; bool enabled; @@ -265,7 +273,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 } static void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv, -@@ -1384,7 +1384,7 @@ static void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv, +@@ -1355,7 +1355,7 @@ static void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv, reg = PCH_TRANSCONF(pipe); val = I915_READ(reg); enabled = !!(val & TRANS_ENABLE); @@ -274,7 +282,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "transcoder assertion failed, should be off on pipe %c but is still active\n", pipe_name(pipe)); } -@@ -1464,11 +1464,11 @@ static void assert_pch_dp_disabled(struct drm_i915_private *dev_priv, +@@ -1435,11 +1435,11 @@ static void assert_pch_dp_disabled(struct drm_i915_private *dev_priv, enum pipe pipe, int reg, u32 port_sel) { u32 val = I915_READ(reg); @@ -288,7 +296,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 && (val & DP_PIPEB_SELECT), "IBX PCH dp port still using transcoder B\n"); } -@@ -1477,11 +1477,11 @@ static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv, +@@ -1448,11 +1448,11 @@ static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv, enum pipe pipe, int reg) { u32 val = I915_READ(reg); @@ -302,7 +310,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 && (val & SDVO_PIPE_B_SELECT), "IBX PCH hdmi port still using transcoder B\n"); } -@@ -1498,13 +1498,13 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv, +@@ -1469,13 +1469,13 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv, reg = PCH_ADPA; val = I915_READ(reg); @@ -318,7 +326,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "PCH LVDS enabled on transcoder %c, should be disabled\n", pipe_name(pipe)); -@@ -5152,25 +5152,25 @@ static void intel_connector_check_state(struct intel_connector *connector) +@@ -5382,25 +5382,25 @@ static void intel_connector_check_state(struct intel_connector *connector) if (connector->mst_port) return; @@ -352,7 +360,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "encoder active on the wrong pipe\n"); } } -@@ -7523,24 +7523,24 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv) +@@ -7810,24 +7810,24 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv) struct intel_crtc *crtc; for_each_intel_crtc(dev, crtc) @@ -388,7 +396,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 /* * In theory we can still leave IRQs enabled, as long as only the HPD -@@ -7548,7 +7548,7 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv) +@@ -7835,7 +7835,7 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv) * gen-specific and since we only disable LCPLL after we fully disable * the interrupts, the check below should be enough. */ @@ -397,7 +405,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 } static uint32_t hsw_read_dcomp(struct drm_i915_private *dev_priv) -@@ -10838,7 +10838,7 @@ check_connector_state(struct drm_device *dev) +@@ -10742,7 +10742,7 @@ check_connector_state(struct drm_device *dev) * ->get_hw_state callbacks. */ intel_connector_check_state(connector); @@ -406,7 +414,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "connector's staged encoder doesn't match current encoder\n"); } } -@@ -10858,9 +10858,9 @@ check_encoder_state(struct drm_device *dev) +@@ -10762,9 +10762,9 @@ check_encoder_state(struct drm_device *dev) encoder->base.base.id, encoder->base.name); @@ -418,7 +426,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "encoder's active_connectors set, but no crtc\n"); list_for_each_entry(connector, &dev->mode_config.connector_list, -@@ -10879,19 +10879,19 @@ check_encoder_state(struct drm_device *dev) +@@ -10783,19 +10783,19 @@ check_encoder_state(struct drm_device *dev) if (!enabled && encoder->base.encoder_type == DRM_MODE_ENCODER_DPMST) continue; @@ -442,7 +450,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "encoder's hw state doesn't match sw tracking " "(expected %i, found %i)\n", encoder->connectors_active, active); -@@ -10900,7 +10900,7 @@ check_encoder_state(struct drm_device *dev) +@@ -10804,7 +10804,7 @@ check_encoder_state(struct drm_device *dev) continue; tracked_pipe = to_intel_crtc(encoder->base.crtc)->pipe; @@ -451,7 +459,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "active encoder's pipe doesn't match" "(expected %i, found %i)\n", tracked_pipe, pipe); -@@ -10925,7 +10925,7 @@ check_crtc_state(struct drm_device *dev) +@@ -10829,7 +10829,7 @@ check_crtc_state(struct drm_device *dev) DRM_DEBUG_KMS("[CRTC:%d]\n", crtc->base.base.id); @@ -460,7 +468,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "active crtc, but not enabled in sw tracking\n"); for_each_intel_encoder(dev, encoder) { -@@ -10936,10 +10936,10 @@ check_crtc_state(struct drm_device *dev) +@@ -10840,10 +10840,10 @@ check_crtc_state(struct drm_device *dev) active = true; } @@ -473,7 +481,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "crtc's computed enabled state doesn't match tracked enabled state " "(expected %i, found %i)\n", enabled, crtc->base.enabled); -@@ -10959,13 +10959,13 @@ check_crtc_state(struct drm_device *dev) +@@ -10863,13 +10863,13 @@ check_crtc_state(struct drm_device *dev) encoder->get_config(encoder, &pipe_config); } @@ -489,14 +497,14 @@ index cadc3bcf1de2..752dbe7ff017 100644 intel_dump_pipe_config(crtc, &pipe_config, "[hw state]"); intel_dump_pipe_config(crtc, &crtc->config, -@@ -10993,14 +10993,14 @@ check_shared_dpll_state(struct drm_device *dev) +@@ -10897,14 +10897,14 @@ check_shared_dpll_state(struct drm_device *dev) active = pll->get_hw_state(dev_priv, pll, &dpll_hw_state); -- WARN(pll->active > pll->refcount, -+ I915_STATE_WARN(pll->active > pll->refcount, +- WARN(pll->active > hweight32(pll->config.crtc_mask), ++ I915_STATE_WARN(pll->active > hweight32(pll->config.crtc_mask), "more active pll users than references: %i vs %i\n", - pll->active, pll->refcount); + pll->active, hweight32(pll->config.crtc_mask)); - WARN(pll->active && !pll->on, + I915_STATE_WARN(pll->active && !pll->on, "pll in active use but not on in sw tracking\n"); @@ -508,7 +516,7 @@ index cadc3bcf1de2..752dbe7ff017 100644 "pll on state mismatch (expected %i, found %i)\n", pll->on, active); -@@ -11010,14 +11010,14 @@ check_shared_dpll_state(struct drm_device *dev) +@@ -10914,14 +10914,14 @@ check_shared_dpll_state(struct drm_device *dev) if (crtc->active && intel_crtc_to_shared_dpll(crtc) == pll) active_crtcs++; } @@ -516,29 +524,38 @@ index cadc3bcf1de2..752dbe7ff017 100644 + I915_STATE_WARN(pll->active != active_crtcs, "pll active crtcs mismatch (expected %i, found %i)\n", pll->active, active_crtcs); -- WARN(pll->refcount != enabled_crtcs, -+ I915_STATE_WARN(pll->refcount != enabled_crtcs, +- WARN(hweight32(pll->config.crtc_mask) != enabled_crtcs, ++ I915_STATE_WARN(hweight32(pll->config.crtc_mask) != enabled_crtcs, "pll enabled crtcs mismatch (expected %i, found %i)\n", - pll->refcount, enabled_crtcs); + hweight32(pll->config.crtc_mask), enabled_crtcs); -- WARN(pll->on && memcmp(&pll->hw_state, &dpll_hw_state, -+ I915_STATE_WARN(pll->on && memcmp(&pll->hw_state, &dpll_hw_state, +- WARN(pll->on && memcmp(&pll->config.hw_state, &dpll_hw_state, ++ I915_STATE_WARN(pll->on && memcmp(&pll->config.hw_state, &dpll_hw_state, sizeof(dpll_hw_state)), "pll hw state mismatch\n"); } diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c -index 4bcd91757321..4b5d6c5ee544 100644 +index 9f6c8971855c..67adf6437f78 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c -@@ -1501,7 +1501,7 @@ static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) +@@ -1558,7 +1558,7 @@ void intel_edp_panel_vdd_on(struct intel_dp *intel_dp) + vdd = edp_panel_vdd_on(intel_dp); + pps_unlock(intel_dp); + +- WARN(!vdd, "eDP port %c VDD already requested on\n", ++ I915_STATE_WARN(!vdd, "eDP port %c VDD already requested on\n", + port_name(dp_to_dig_port(intel_dp)->port)); + } + +@@ -1642,7 +1642,7 @@ static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) if (!is_edp(intel_dp)) return; -- WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on"); -+ I915_STATE_WARN(!intel_dp->want_panel_vdd, "eDP VDD not forced on"); +- WARN(!intel_dp->want_panel_vdd, "eDP port %c VDD not forced on", ++ I915_STATE_WARN(!intel_dp->want_panel_vdd, "eDP port %c VDD not forced on", + port_name(dp_to_dig_port(intel_dp)->port)); intel_dp->want_panel_vdd = false; - -- 2.1.0 diff --git a/freed-ora/current/f20/hibernate-Disable-in-a-signed-modules-environment.patch b/freed-ora/current/f20/hibernate-Disable-in-a-signed-modules-environment.patch index 53dd6deac..f1cc67935 100644 --- a/freed-ora/current/f20/hibernate-Disable-in-a-signed-modules-environment.patch +++ b/freed-ora/current/f20/hibernate-Disable-in-a-signed-modules-environment.patch @@ -13,18 +13,18 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org> 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c -index a9dfa79b6bab..14c7356ff53a 100644 +index 2329daae5255..48a8e82c7e2e 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c -@@ -28,6 +28,7 @@ - #include <linux/syscore_ops.h> +@@ -29,6 +29,7 @@ #include <linux/ctype.h> #include <linux/genhd.h> + #include <linux/ktime.h> +#include <linux/module.h> #include <trace/events/power.h> #include "power.h" -@@ -65,7 +66,7 @@ static const struct platform_hibernation_ops *hibernation_ops; +@@ -66,7 +67,7 @@ static const struct platform_hibernation_ops *hibernation_ops; bool hibernation_available(void) { @@ -34,5 +34,5 @@ index a9dfa79b6bab..14c7356ff53a 100644 /** -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f20/iommu-exynos-Play-nice-in-multi-platform-builds.patch b/freed-ora/current/f20/iommu-exynos-Play-nice-in-multi-platform-builds.patch new file mode 100644 index 000000000..950eebd29 --- /dev/null +++ b/freed-ora/current/f20/iommu-exynos-Play-nice-in-multi-platform-builds.patch @@ -0,0 +1,49 @@ +From: Thierry Reding <treding@nvidia.com> +Date: Fri, 6 Feb 2015 11:44:05 +0100 +Subject: [PATCH] iommu/exynos: Play nice in multi-platform builds + +The Exynos System MMU driver unconditionally executes code and registers +a struct iommu_ops with the platform bus irrespective of whether it runs +on an Exynos SoC or not. This causes problems in multi-platform kernels +where drivers for other SoCs will no longer be able to register their +own struct iommu_ops or even try to use a struct iommu_ops for an IOMMU +that obviously isn't there. + +The smallest fix I could think of is to check for the existence of any +Exynos System MMU devices in the device tree and skip initialization +otherwise. + +This fixes a problem on Tegra20 where the DRM driver will try to use the +obviously non-existent Exynos System MMU. + +Reported-by: Nicolas Chauvet <kwizart@gmail.com> +Cc: Kukjin Kim <kgene@kernel.org> +Signed-off-by: Thierry Reding <treding@nvidia.com> +Signed-off-by: Joerg Roedel <jroedel@suse.de> +--- + drivers/iommu/exynos-iommu.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c +index 7ce52737c7a1..dc14fec4ede1 100644 +--- a/drivers/iommu/exynos-iommu.c ++++ b/drivers/iommu/exynos-iommu.c +@@ -1186,8 +1186,15 @@ static const struct iommu_ops exynos_iommu_ops = { + + static int __init exynos_iommu_init(void) + { ++ struct device_node *np; + int ret; + ++ np = of_find_matching_node(NULL, sysmmu_of_match); ++ if (!np) ++ return 0; ++ ++ of_node_put(np); ++ + lv2table_kmem_cache = kmem_cache_create("exynos-iommu-lv2table", + LV2TABLE_SIZE, LV2TABLE_SIZE, 0, NULL); + if (!lv2table_kmem_cache) { +-- +2.1.0 + diff --git a/freed-ora/current/f20/iommu-omap-Play-nice-in-multi-platform-builds.patch b/freed-ora/current/f20/iommu-omap-Play-nice-in-multi-platform-builds.patch new file mode 100644 index 000000000..8d57e4277 --- /dev/null +++ b/freed-ora/current/f20/iommu-omap-Play-nice-in-multi-platform-builds.patch @@ -0,0 +1,49 @@ +From: Thierry Reding <treding@nvidia.com> +Date: Fri, 6 Feb 2015 11:44:06 +0100 +Subject: [PATCH] iommu/omap: Play nice in multi-platform builds + +The OMAP IOMMU driver unconditionally executes code and registers a +struct iommu_ops with the platform bus irrespective of whether it runs +on an OMAP SoC or not. This causes problems in multi-platform kernels +where drivers for other SoCs will no longer be able to register their +own struct iommu_ops or even try to use a struct iommu_ops for an IOMMU +that obviously isn't there. + +The smallest fix I could think of is to check for the existence of any +OMAP IOMMU devices in the device tree and skip initialization otherwise. + +This fixes a problem on Tegra20 where the DRM driver will try to use the +obviously non-existent OMAP IOMMU. + +Reported-by: Nicolas Chauvet <kwizart@gmail.com> +Cc: Tony Lindgren <tony@atomide.com> +Cc: Suman Anna <s-anna@ti.com> +Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> +Signed-off-by: Thierry Reding <treding@nvidia.com> +Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> +Signed-off-by: Joerg Roedel <jroedel@suse.de> +--- + drivers/iommu/omap-iommu.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c +index bbb7dcef02d3..19db0b684b7f 100644 +--- a/drivers/iommu/omap-iommu.c ++++ b/drivers/iommu/omap-iommu.c +@@ -1376,6 +1376,13 @@ static int __init omap_iommu_init(void) + struct kmem_cache *p; + const unsigned long flags = SLAB_HWCACHE_ALIGN; + size_t align = 1 << 10; /* L2 pagetable alignement */ ++ struct device_node *np; ++ ++ np = of_find_matching_node(NULL, omap_iommu_of_match); ++ if (!np) ++ return 0; ++ ++ of_node_put(np); + + p = kmem_cache_create("iopte_cache", IOPTE_TABLE_SIZE, align, flags, + iopte_cachep_ctor); +-- +2.1.0 + diff --git a/freed-ora/current/f20/iommu-rockchip-Play-nice-in-multi-platform-builds.patch b/freed-ora/current/f20/iommu-rockchip-Play-nice-in-multi-platform-builds.patch new file mode 100644 index 000000000..0050b89ab --- /dev/null +++ b/freed-ora/current/f20/iommu-rockchip-Play-nice-in-multi-platform-builds.patch @@ -0,0 +1,52 @@ +From: Thierry Reding <treding@nvidia.com> +Date: Fri, 6 Feb 2015 11:44:07 +0100 +Subject: [PATCH] iommu/rockchip: Play nice in multi-platform builds + +The Rockchip IOMMU driver unconditionally executes code and registers a +struct iommu_ops with the platform bus irrespective of whether it runs +on a Rockchip SoC or not. This causes problems in multi-platform kernels +where drivers for other SoCs will no longer be able to register their +own struct iommu_ops or even try to use a struct iommu_ops for an IOMMU +that obviously isn't there. + +The smallest fix I could think of is to check for the existence of any +Rockchip IOMMU devices in the device tree and skip initialization +otherwise. + +This fixes a problem on Tegra20 where the DRM driver will try to use the +obviously non-existent Rockchip IOMMU. + +Reported-by: Nicolas Chauvet <kwizart@gmail.com> +Cc: Heiko Stuebner <heiko@sntech.de> +Cc: Daniel Kurtz <djkurtz@chromium.org> +Reviewed-by: Heiko Stuebner <heiko@sntech.de> +Tested-by: Heiko Stuebner <heiko@sntech.de> +Signed-off-by: Thierry Reding <treding@nvidia.com> +Signed-off-by: Joerg Roedel <jroedel@suse.de> +--- + drivers/iommu/rockchip-iommu.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c +index 6a8b1ec4a48a..9f74fddcd304 100644 +--- a/drivers/iommu/rockchip-iommu.c ++++ b/drivers/iommu/rockchip-iommu.c +@@ -1015,8 +1015,15 @@ static struct platform_driver rk_iommu_driver = { + + static int __init rk_iommu_init(void) + { ++ struct device_node *np; + int ret; + ++ np = of_find_matching_node(NULL, rk_iommu_dt_ids); ++ if (!np) ++ return 0; ++ ++ of_node_put(np); ++ + ret = bus_set_iommu(&platform_bus_type, &rk_iommu_ops); + if (ret) + return ret; +-- +2.1.0 + diff --git a/freed-ora/current/f20/kernel-arm64.patch b/freed-ora/current/f20/kernel-arm64.patch index e98d10a4d..df9c19d12 100644 --- a/freed-ora/current/f20/kernel-arm64.patch +++ b/freed-ora/current/f20/kernel-arm64.patch @@ -1,1920 +1,59 @@ -commit 0335b5034b998e978bf9343da77246bcbad33981 -Author: Mark Salter <msalter@redhat.com> -Date: Wed Nov 19 10:32:11 2014 -0500 - - arm64: explicitly set noncoherent ops for _CCA handling - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 4a2d43442e20a24b78594d12914706deddc119de -Author: Mark Salter <msalter@redhat.com> -Date: Mon Nov 10 17:09:29 2014 -0500 - - DO NOT UPSTREAM - pci/xgene: Provide fixup for ACPI MCFG support - - Xgene doesn't decode bus bits of mmconfig region and only - supports devfn 0 of bus 0. For other buses/devices, some - internal registers need to be poked. This patch provides - a fixup to support ACPI MCFG tables. This is a horrible - hack allowing the hardware to be used for PCI testing, but - it is not intended to be a long term patch. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit b93f804830d9ef6d572dd6be9734108199141b87 -Author: Mark Salter <msalter@redhat.com> -Date: Mon Nov 10 17:33:18 2014 -0500 - - DO NOT UPSTREAM - provide hook for MCFG fixups - - This is a temprary mechanism needed by at least one early - arm64 hardware platform with broken MCFG support. This is - not intended for upstream and will go away as soon as newer - hardware with fully compliant ECAM becomes available. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 2d76cb937a6c0010d1de181d0142f0822df5071d -Author: Mark Salter <msalter@redhat.com> -Date: Mon Nov 10 17:30:25 2014 -0500 - - arm64/pci/acpi: initial support for ACPI probing of PCI - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit a438ff7be0140738b1224d5ade6345a9febad279 -Author: Mark Salter <msalter@redhat.com> -Date: Mon Nov 10 17:23:57 2014 -0500 - - arm64/acpi/pci: add support for parsing MCFG table - - Add support for parsing MCFG table and provide functions to read/write - PCI configuration space based on the parsed info. This provides the - low-level raw_pci_read/raw_pci_write functionality. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 814b22167d35b18fc3de745277a2190ff0841585 -Author: Mark Salter <msalter@redhat.com> -Date: Mon Nov 10 16:42:14 2014 -0500 - - DO NOT UPSTREAM - pci/xgene: workaround CRS issue - - CRS is not behaving properly for some reason. Until this - gets diagnosed properly, pretend not to support it in order - to prevent hangs in 3.18 kernel. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit b90d000000801b473ed4c69757d3be9e433b6c5e -Author: Mark Salter <msalter@redhat.com> -Date: Mon Nov 10 16:31:05 2014 -0500 - - iommu/arm-smmu: fix NULL dereference with ACPI PCI devices - - Fix a NULL dereference in find_mmu_master which occurs when - booting with ACPI. In that case, PCI bridges with not have - an of_node. Add a check for NULL of_node and bail out if that - is the case. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 243e5c1dc198958ce862e39d33efc798a47b339a -Author: Mark Salter <msalter@redhat.com> -Date: Mon Nov 10 21:35:11 2014 -0500 - - DO NOT UPSTREAM - arm64: fix dma_ops for ACPI and PCI devices - - Commit 2189064795dc3fb4101e5: - - arm64: Implement set_arch_dma_coherent_ops() to replace bus notifiers - - removed the bus notifiers from dma-mapping.c. This patch - adds the notifier back for ACPI and PCI devices until a - better permanent solution is worked out. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 612eea3ae291b28f7ed50ccf50bd1685a2a7f753 -Author: Mark Salter <msalter@redhat.com> -Date: Thu Aug 14 12:32:13 2014 -0400 - - acpi: add utility to test for device dma coherency - - ACPI 5.1 adds a _CCA object to indicate memory coherency - of a bus master device. It is an integer with zero meaning - non-coherent and one meaning coherent. This attribute may - be inherited from a parent device. It may also be missing - entirely, in which case, an architecture-specific default - is assumed. - - This patch adds a utility function to parse a device handle - (and its parents) for a _CCA object and return the coherency - attribute if found. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 3d509a508c6fd70eb0fb2f0e82d08d92cc96568c -Author: Mark Salter <msalter@redhat.com> -Date: Sat Nov 22 12:08:53 2014 -0500 - - DO NOT UPSTREAM - arm64: kvm: Change vgic resource size error to info - - From: Donald Dutile <ddutile@redhat.com> - - A new check was added to upstream to ensure a full - kernel page was allocated to the vgic. The check failed - kvm configuration if the condition wasn't met. An arm64 - kernel with 64K pagesize and certain early firmware will - fail this test. Change error to info & continue configuration - for now. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 2b5dd4609e947b418afbbeae95da7f34594bc048 -Author: Wei Huang <wei@redhat.com> -Date: Sat Nov 22 10:38:45 2014 -0500 - - KVM/ACPI: Enable ACPI support for KVM virt GIC - - This patches enables ACPI support for KVM virtual GIC. KVM parses - ACPI table for virt GIC related information when DT table is not - present. This is done by retrieving the information defined in - generic_interrupt entry of MADT table. - - Note: Alexander Spyridakis from Virtual Open System posts a - _very_ similar patch to enable acpi-kvm. This patch borrows some - ideas from his patch. - - Signed-off-by: Wei Huang <wei@redhat.com> - [combined with subsequent patch to use acpi_disabled] - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 756fc31666a4a3094727da5274fc0705a05f13a3 -Author: Wei Huang <wei@redhat.com> -Date: Sat Nov 22 10:18:57 2014 -0500 - - KVM/ACPI: Enable ACPI support for virt arch timer - - This patches enables ACPI support for KVM virtual arch_timer. It - allows KVM to parse ACPI table for virt arch_timer PPI when DT table - is not present. This is done by retrieving the information from - arch_timer_ppi array in arm_arch_timer driver. - - Signed-off-by: Wei Huang <wei@redhat.com> - [combined with subsequent patch to use acpi_disabled] - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit b189108603f6db4a11e0c30050e840e8bb36f098 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Tue Nov 18 21:52:34 2014 +0100 - - arm, arm64: KVM: handle potential incoherency of readonly memslots - - Upstream posting: - http://thread.gmane.org/gmane.comp.emulators.kvm.devel/129475/focus=129477 - - Readonly memslots are often used to implement emulation of ROMs and - NOR flashes, in which case the guest may legally map these regions as - uncached. - To deal with the incoherency associated with uncached guest mappings, - treat all readonly memslots as incoherent, and ensure that pages that - belong to regions tagged as such are flushed to DRAM before being passed - to the guest. - - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - - Acadia backport notes: - - - we have a few more conflicts here. The main thing is that our - kvm_arch_prepare_memory_region() is "empty" at the moment; in upstream - Ard introduced performance related, host device related code there, in - commit 8eef91239. - - What we certainly need to grab from commit 8eef91239 is the acquiring of - "kvm->mmu_lock" (which is visible in the upstream patch context too), - and the filtering against - - (change != KVM_MR_CREATE && change != KVM_MR_MOVE) - - near the top of the function (which is not visible in the upstream patch - context). (If (change == KVM_MR_DELETE), then the caller has set up - "memslot" in such a way that calling stage2_flush_memslot() on it is - invalid, and it would actually crash the host -- speaking from - experience. :)) - - - The hunk that seems to matter in practice, in my testing on Mustang, is - the "fault_ipa_uncached" assignment one (which affects the the - demand-paged case, ie. the coherent_cache_guest_page() function, - modified in the previous patch). - - The kvm_arch_prepare_memory_region() hunk exists for completeness of - implementation, and while it could certainly make a difference, I've - never seen it make one, in my testing. We should pick it up nonetheless. - - Signed-off-by: Laszlo Ersek <lersek@redhat.com> - -commit 8ab19d68b49c2f6a9f0e6226c51bf9b2fe553022 -Author: Laszlo Ersek <lersek@redhat.com> -Date: Tue Nov 18 21:52:33 2014 +0100 - - arm, arm64: KVM: allow forced dcache flush on page faults - - Upstream posting: - http://thread.gmane.org/gmane.comp.emulators.kvm.devel/129475/focus=129476 - - From: Laszlo Ersek <lersek@redhat.com> - - To allow handling of incoherent memslots in a subsequent patch, this - patch adds a paramater 'ipa_uncached' to cache_coherent_guest_page() - so that we can instruct it to flush the page's contents to DRAM even - if the guest has caching globally enabled. - - Signed-off-by: Laszlo Ersek <lersek@redhat.com> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - - Acadia backport notes: - - minimal context conflict in user_mem_abort(): upstream passes - - pgprot_val(mem_type) == pgprot_val(PAGE_S2_DEVICE) - - as last parameter of stage2_set_pte(), while we do a direct comparison. - - (See upstream commit 3d08c629, "arm: kvm: STRICT_MM_TYPECHECKS fix for - user_mem_abort".) - - Signed-off-by: Laszlo Ersek <lersek@redhat.com> - -commit 1ac87393dff5d6fb10edfba84dfff89f57a7224a -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Tue Nov 18 21:52:32 2014 +0100 - - kvm: add a memslot flag for incoherent memory regions - - Upstream posting: - http://thread.gmane.org/gmane.comp.emulators.kvm.devel/129475 - - Memory regions may be incoherent with the caches, typically when the - guest has mapped a host system RAM backed memory region as uncached. - Add a flag KVM_MEMSLOT_INCOHERENT so that we can tag these memslots - and handle them appropriately when mapping them. - - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - Signed-off-by: Laszlo Ersek <lersek@redhat.com> - -commit 2a0a5cbf98c94e2906d9a357a63fbbb153488e1c -Author: Tom Lendacky <thomas.lendacky@amd.com> -Date: Mon Sep 15 17:02:52 2014 -0600 - - amd-xgbe: AMD 10GbE driver APCI support for A0 - - This patch provides ACPI support for the AMD 10GbE device driver - and AMD 10GbE phy driver. - - Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> - -commit 807e95abb96e7868e1c8e863a92298937a69d437 -Author: Mark Salter <msalter@redhat.com> -Date: Tue Oct 7 12:54:08 2014 -0400 - - xgene acpi network - first cut - -commit bdecd2af5d4234ed50042ab28a21736edcec6d41 -Author: Geert Uytterhoeven <geert+renesas@glider.be> -Date: Thu Nov 6 12:23:23 2014 +0100 - - leds: leds-gpio: Fix legacy GPIO number case - - In the legacy case, led_dat->gpiod is initialized correctly, but - overwritten later by template->gpiod, which is NULL, causing leds-gpio - to fail with: - - gpiod_direction_output: invalid GPIO - leds-gpio: probe of leds-gpio failed with error -22 - - Move the initialization of led_dat->gpiod from template->gpiod up, and - always use led_dat->gpiod later, to fix this. - - Fixes: 5c51277a9ababfa4 (leds: leds-gpio: Add support for GPIO descriptors) - Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> - Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit 42b0d1b64cdf1c8d37e69ff7cff45852f7a16f65 -Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -Date: Wed Nov 5 00:29:07 2014 +0100 - - ACPI / property: Drop size_prop from acpi_dev_get_property_reference() - - The size_prop argument of the recently added function - acpi_dev_get_property_reference() is not used by the only current - caller of that function and is very unlikely to be used at any time - going forward. - - Namely, for a property whose value is a list of items each containing - a references to a device object possibly accompanied by some integers, - the number of items in the list can always be computed as the number - of elements of type ACPI_TYPE_LOCAL_REFERENCE in the property package. - Thus it should never be necessary to provide an additional "cells" - property with a value equal to the number of items in that list. It - also should never be necessary to provide a "cells" property specifying - how many integers are supposed to be following each reference. - - For this reason, drop the size_prop argument from - acpi_dev_get_property_reference() and update its caller accordingly. - - Link: http://marc.info/?l=linux-kernel&m=141511255610556&w=2 - Suggested-by: Grant Likely <grant.likely@linaro.org> - Acked-by: Grant Likely <grant.likely@linaro.org> - Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit c3f29cda7420da6a721d40d116f369cfc1533d38 -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Fri Oct 31 13:40:58 2014 +0200 - - leds: leds-gpio: Convert gpio_blink_set() to use GPIO descriptors - - Commit 21f2aae91e902aad ("leds: leds-gpio: Add support for GPIO - descriptors") already converted most of the driver to use GPIO descriptors. - What is still missing is the platform specific hook gpio_blink_set() and - board files which pass legacy GPIO numbers to this driver in platform data. - - In this patch we handle the former and convert gpio_blink_set() to take - GPIO descriptor instead. In order to do this we convert the existing four - users to accept GPIO descriptor and translate it to legacy GPIO number in - the platform code. This effectively "pushes" legacy GPIO number usage from - the driver to platforms. - - Also add comment to the remaining block describing that it is legacy code - path and we are getting rid of it eventually. - - Suggested-by: Linus Walleij <linus.walleij@linaro.org> - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Andrew Lunn <andrew@lunn.ch> - Reviewed-by: Linus Walleij <linus.walleij@linaro.org> - Acked-by: Alexandre Courbot <acourbot@nvidia.com> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit 4117b39d39f59d2497ceac1091ec54aa3056cb4f -Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -Date: Mon Nov 3 23:39:57 2014 +0100 - - ACPI / GPIO: Document ACPI GPIO mappings API - - Document the previously introduced method that can be used by device - drivers to provide the GPIO subsystem with mappings between GPIO names - (connection IDs) and GpioIo()/GpioInt() resources in _CRS. - - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> - -commit d9345c86ad290bb4ca98b37520f94fc8075b2b94 -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Mon Oct 27 12:15:14 2014 +0200 - - net: rfkill: gpio: Add default GPIO driver mappings for ACPI - - The driver uses devm_gpiod_get_index(..., index) so that the index refers - directly to the GpioIo resource under the ACPI device. The problem with - this is that if the ordering changes we get wrong GPIOs. - - With ACPI 5.1 _DSD we can now use names instead to reference GPIOs - analogous to Device Tree. However, we still have systems out there that do - not provide _DSD at all. These systems must be supported as well. - - Luckily we now have acpi_dev_add_driver_gpios() that can be used to provide - mappings for systems where _DSD is not provided and still take advantage of - _DSD if it exists. - - This patch changes the driver to create default GPIO mappings if we are - running on ACPI system. - - While there we can drop the indices completely and use devm_gpiod_get() - with name instead. - - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Reviewed-by: Johannes Berg <johannes@sipsolutions.net> - Acked-by: John W. Linville <linville@tuxdriver.com> - Acked-by: Linus Walleij <linus.walleij@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit 22cb8c44e198b7e3f3299324edbcaa1389016d52 -Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -Date: Mon Nov 3 23:39:41 2014 +0100 - - ACPI / GPIO: Driver GPIO mappings for ACPI GPIOs - - Provide a way for device drivers using GPIOs described by ACPI - GpioIo resources in _CRS to tell the GPIO subsystem what names - (connection IDs) to associate with specific GPIO pins defined - in there. - - To do that, a driver needs to define a mapping table as a - NULL-terminated array of struct acpi_gpio_mapping objects - that each contain a name, a pointer to an array of line data - (struct acpi_gpio_params) objects and the size of that array. - - Each struct acpi_gpio_params object consists of three fields, - crs_entry_index, line_index, active_low, representing the index of - the target GpioIo()/GpioInt() resource in _CRS starting from zero, - the index of the target line in that resource starting from zero, - and the active-low flag for that line, respectively. - - Next, the mapping table needs to be passed as the second - argument to acpi_dev_add_driver_gpios() that will register it with - the ACPI device object pointed to by its first argument. That - should be done in the driver's .probe() routine. - - On removal, the driver should unregister its GPIO mapping table - by calling acpi_dev_remove_driver_gpios() on the ACPI device - object where that table was previously registered. - - Included are fixes from Mika Westerberg. - - Acked-by: Alexandre Courbot <acourbot@nvidia.com> - Reviewed-by: Linus Walleij <linus.walleij@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit c70e2807a8bacbdfed992b58ca24eb152a778a01 -Author: Aaron Lu <aaron.lu@intel.com> -Date: Tue Oct 21 13:34:00 2014 +0200 - - input: gpio_keys_polled: Make use of device property API - - Make use of device property API in this driver so that both OF based - system and ACPI based system can use this driver. - - Signed-off-by: Aaron Lu <aaron.lu@intel.com> - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit 29257e751014d0d43f78bcfecd9a56a603096c95 -Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -Date: Mon Oct 27 23:30:10 2014 +0100 - - leds: leds-gpio: Make use of device property API - - Make use of device property API in this driver so that both OF and ACPI - based system can use the same driver. - - This change contains material from Max Eliaser and Mika Westerberg. - - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Bryan Wu <cooloney@gmail.com> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit 08ddbc9678ce8465f17acc8e1b1b67442593d1b5 -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Tue Oct 21 13:33:59 2014 +0200 - - gpio: Support for unified device properties interface - - Some drivers need to deal with only firmware representation of its - GPIOs. An example would be a GPIO button array driver where each button - is described as a separate firmware node in device tree. Typically these - child nodes do not have physical representation in the Linux device - model. - - In order to help device drivers to handle such firmware child nodes we - add dev[m]_get_named_gpiod_from_child() that takes a child firmware - node pointer as its second argument (the first one is the parent device - itself), finds the GPIO using whatever is the underlying firmware - method, and requests the GPIO properly. - - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Alexandre Courbot <acourbot@nvidia.com> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit 880614f83402ae8b408f33cb252505da0760f3e5 -Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -Date: Tue Nov 4 14:03:59 2014 +0100 - - Driver core: Unified interface for firmware node properties - - Add new generic routines are provided for retrieving properties from - device description objects in the platform firmware in case there are - no struct device objects for them (either those objects have not been - created yet or they do not exist at all). - - The following functions are provided: - - fwnode_property_present() - fwnode_property_read_u8() - fwnode_property_read_u16() - fwnode_property_read_u32() - fwnode_property_read_u64() - fwnode_property_read_string() - fwnode_property_read_u8_array() - fwnode_property_read_u16_array() - fwnode_property_read_u32_array() - fwnode_property_read_u64_array() - fwnode_property_read_string_array() - - in analogy with the corresponding functions for struct device added - previously. For all of them, the first argument is a pointer to struct - fwnode_handle (new type) that allows a device description object - (depending on what platform firmware interface is in use) to be - obtained. - - Add a new macro device_for_each_child_node() for iterating over the - children of the device description object associated with a given - device and a new function device_get_child_node_count() returning the - number of a given device's child nodes. - - The interface covers both ACPI and Device Trees. - - Suggested-by: Grant Likely <grant.likely@linaro.org> - Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit b5923f9dc379c1861a70d8836c7d9976d9521390 -Author: Aaron Lu <aaron.lu@intel.com> -Date: Tue Oct 21 23:30:25 2014 +0200 - - input: gpio_keys_polled: Add support for GPIO descriptors - - GPIO descriptors are the preferred way over legacy GPIO numbers - nowadays. Convert the driver to use GPIO descriptors internally but - still allow passing legacy GPIO numbers from platform data to support - existing platforms. - - Signed-off-by: Aaron Lu <aaron.lu@intel.com> - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Alexandre Courbot <acourbot@nvidia.com> - Reviewed-by: Linus Walleij <linus.walleij@linaro.org> - Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit 5c3c4fe36a05672113646f8fb839e4c91256ef5d -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Mon Oct 27 23:29:32 2014 +0100 - - leds: leds-gpio: Add support for GPIO descriptors - - GPIO descriptors are the preferred way over legacy GPIO numbers - nowadays. Convert the driver to use GPIO descriptors internally but - still allow passing legacy GPIO numbers from platform data to support - existing platforms. - - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Alexandre Courbot <acourbot@nvidia.com> - Acked-by: Bryan Wu <cooloney@gmail.com> - Acked-by: Arnd Bergmann <arnd@arndb.de> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit 8105c03352f32060c765837cbb7d619e075289d9 -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Tue Oct 21 13:33:56 2014 +0200 - - gpio: sch: Consolidate core and resume banks - - This is actually a single device with two sets of identical registers, - which just happen to start from a different offset. Instead of having - separate GPIO chips created we consolidate them to be single GPIO chip. - - In addition having a single GPIO chip allows us to handle ACPI GPIO - translation in the core in a more generic way, since the two GPIO chips - share the same parent ACPI device. - - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Linus Walleij <linus.walleij@linaro.org> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit ce0e2672808ce2805d0aadfd12d94e2dd6be5ab9 -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Wed Oct 29 15:41:01 2014 +0100 - - gpio / ACPI: Add support for _DSD device properties - - With release of ACPI 5.1 and _DSD method we can finally name GPIOs (and - other things as well) returned by _CRS. Previously we were only able to - use integer index to find the corresponding GPIO, which is pretty error - prone if the order changes. - - With _DSD we can now query GPIOs using name instead of an integer index, - like the below example shows: - - // Bluetooth device with reset and shutdown GPIOs - Device (BTH) - { - Name (_HID, ...) - - Name (_CRS, ResourceTemplate () - { - GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionInputOnly, - "\\_SB.GPO0", 0, ResourceConsumer) {15} - GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionInputOnly, - "\\_SB.GPO0", 0, ResourceConsumer) {27, 31} - }) - - Name (_DSD, Package () - { - ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), - Package () - { - Package () {"reset-gpio", Package() {^BTH, 1, 1, 0 }}, - Package () {"shutdown-gpio", Package() {^BTH, 0, 0, 0 }}, - } - }) - } - - The format of the supported GPIO property is: - - Package () { "name", Package () { ref, index, pin, active_low }} - - ref - The device that has _CRS containing GpioIo()/GpioInt() resources, - typically this is the device itself (BTH in our case). - index - Index of the GpioIo()/GpioInt() resource in _CRS starting from zero. - pin - Pin in the GpioIo()/GpioInt() resource. Typically this is zero. - active_low - If 1 the GPIO is marked as active_low. - - Since ACPI GpioIo() resource does not have field saying whether it is - active low or high, the "active_low" argument can be used here. Setting - it to 1 marks the GPIO as active low. - - In our Bluetooth example the "reset-gpio" refers to the second GpioIo() - resource, second pin in that resource with the GPIO number of 31. - - This patch implements necessary support to gpiolib for extracting GPIOs - using _DSD device properties. - - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Linus Walleij <linus.walleij@linaro.org> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit e072a051ef3a5d612949dc22ca71e40dbe978ed1 -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Tue Oct 21 13:33:56 2014 +0200 - - misc: at25: Make use of device property API - - Make use of device property API in this driver so that both DT and ACPI - based systems can use this driver. - - In addition we hard-code the name of the chip to be "at25" for the - reason that there is no common mechanism to fetch name of the firmware - node. The only existing user (arch/arm/boot/dts/phy3250.dts) uses the - same name so it should continue to work. - - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit e176d66bf1a8e613e501dae1fc6798e1a42b7062 -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Tue Oct 21 13:33:56 2014 +0200 - - ACPI: Allow drivers to match using Device Tree compatible property - - We have lots of existing Device Tree enabled drivers and allocating - separate _HID for each is not feasible. Instead we allocate special _HID - "PRP0001" that means that the match should be done using Device Tree - compatible property using driver's .of_match_table instead if the driver - is missing .acpi_match_table. - - If there is a need to distinguish from where the device is enumerated - (DT/ACPI) driver can check dev->of_node or ACPI_COMPATION(dev). - - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit e30b98eab5645fa42d372cc1be44e22db5f5e9b8 -Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -Date: Tue Nov 4 01:28:56 2014 +0100 - - Driver core: Unified device properties interface for platform firmware - - Add a uniform interface by which device drivers can request device - properties from the platform firmware by providing a property name - and the corresponding data type. The purpose of it is to help to - write portable code that won't depend on any particular platform - firmware interface. - - The following general helper functions are added: - - device_property_present() - device_property_read_u8() - device_property_read_u16() - device_property_read_u32() - device_property_read_u64() - device_property_read_string() - device_property_read_u8_array() - device_property_read_u16_array() - device_property_read_u32_array() - device_property_read_u64_array() - device_property_read_string_array() - - The first one allows the caller to check if the given property is - present. The next 5 of them allow single-valued properties of - various types to be retrieved in a uniform way. The remaining 5 are - for reading properties with multiple values (arrays of either numbers - or strings). - - The interface covers both ACPI and Device Trees. - - This change set includes material from Mika Westerberg and Aaron Lu. - - Signed-off-by: Aaron Lu <aaron.lu@intel.com> - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit a8762c178234b62dce5e55df8de8528857a47bb7 -Author: Mika Westerberg <mika.westerberg@linux.intel.com> -Date: Tue Oct 21 13:33:55 2014 +0200 - - ACPI: Add support for device specific properties - - Device Tree is used in many embedded systems to describe the system - configuration to the OS. It supports attaching properties or name-value - pairs to the devices it describe. With these properties one can pass - additional information to the drivers that would not be available - otherwise. - - ACPI is another configuration mechanism (among other things) typically - seen, but not limited to, x86 machines. ACPI allows passing arbitrary - data from methods but there has not been mechanism equivalent to Device - Tree until the introduction of _DSD in the recent publication of the - ACPI 5.1 specification. - - In order to facilitate ACPI usage in systems where Device Tree is - typically used, it would be beneficial to standardize a way to retrieve - Device Tree style properties from ACPI devices, which is what we do in - this patch. - - If a given device described in ACPI namespace wants to export properties it - must implement _DSD method (Device Specific Data, introduced with ACPI 5.1) - that returns the properties in a package of packages. For example: - - Name (_DSD, Package () { - ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), - Package () { - Package () {"name1", <VALUE1>}, - Package () {"name2", <VALUE2>}, - ... - } - }) - - The UUID reserved for properties is daffd814-6eba-4d8c-8a91-bc9bbf4aa301 - and is documented in the ACPI 5.1 companion document called "_DSD - Implementation Guide" [1], [2]. - - We add several helper functions that can be used to extract these - properties and convert them to different Linux data types. - - The ultimate goal is that we only have one device property API that - retrieves the requested properties from Device Tree or from ACPI - transparent to the caller. - - [1] http://www.uefi.org/sites/default/files/resources/_DSD-implementation-guide-toplevel.htm - [2] http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf - - Reviewed-by: Hanjun Guo <hanjun.guo@linaro.org> - Reviewed-by: Josh Triplett <josh@joshtriplett.org> - Reviewed-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Darren Hart <dvhart@linux.intel.com> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com> - Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> - -commit a9240791b83abd372e4efb77f20444c27a56ebae -Author: Mark Salter <msalter@redhat.com> -Date: Tue Sep 30 17:19:24 2014 -0400 - - arm64: avoid need for console= to enable serial console - - Tell kernel to prefer one of the serial ports on platforms - pl011, 8250, or sbsa uarts. console= on command line will - override these assumed preferences. This is just a hack to - get the behavior we want from SPCR table support. Once SPCR - is supported, we can drop this. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 6fee3b2bd2ad6349e7bb3082393bf6355e01ce6f -Author: Tom Lendacky <thomas.lendacky@amd.com> -Date: Tue Sep 9 23:33:17 2014 -0400 - - drivers: net: AMD Seattle XGBE PHY support for A0 silicon - - This patch modifies the upstream AMD XGBE PHY driver to support - A0 Seattle silicon in currently shipping systems. The upstream - Linux driver is targetted for Seattle B0 silicon. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 0a0eea6d358d51ab381e2945c0e9db2f6cc06157 -Author: Tom Lendacky <thomas.lendacky@amd.com> -Date: Tue Sep 9 23:34:07 2014 -0400 - - drivers: net: AMD Seattle XGBE 10GbE support for A0 silicon - - This patch modifies the upstream AMD 10GbE XGBE Ethernet driver to - support A0 Seattle silicon in currently shipping systems. The - upstream Linux driver is targetted for Seattle B0 silicon. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit ff93b53f3ca8748529855d421bf79329086544cd -Author: Graeme Gregory <graeme.gregory@linaro.org> -Date: Fri Jul 26 17:55:02 2013 +0100 - - virtio-mmio: add ACPI probing - - Added the match table and pointers for ACPI probing to the driver. - - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - -commit 5315cb5a532e900612ac1202507551761e8bd13c -Author: Graeme Gregory <graeme.gregory@linaro.org> -Date: Wed Jul 24 11:29:48 2013 +0100 - - net: smc91x: add ACPI probing support. - - Add device ID LINA0003 for this device and add the match table. - - As its a platform device it needs no other code and will be probed in by - acpi_platform once device ID is added. - - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - -commit 640f607f1fa10c7c0cd6025dde8883d02fc9b411 -Author: Mark Salter <msalter@redhat.com> -Date: Sun Sep 14 09:44:44 2014 -0400 - - Revert "ahci_xgene: Skip the PHY and clock initialization if already configured by the firmware." - - This reverts commit 0bed13bebd6c99d097796d2ca6c4f10fb5b2eabc. - - Temporarily revert for backwards compatibility with rh-0.12-1 firmware - -commit e8afbea7e3e11f37c234770d72725894f92de415 -Author: Mark Salter <msalter@redhat.com> -Date: Mon Aug 11 13:46:43 2014 -0400 - - xgene: add support for ACPI-probed serial port - -commit 3d0ad3e452a81a32842d85dbb88078b74582efb5 -Author: Mark Salter <msalter@redhat.com> -Date: Sat Aug 9 12:01:20 2014 -0400 - - sata/xgene: support acpi probing - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit a42353df5a2f741e8d2e356c3f053aac8d3eff0e -Author: Mark Salter <msalter@redhat.com> -Date: Thu Sep 18 15:05:23 2014 -0400 - - arm64: add sev to parking protocol - - Parking protocol wakes secondary cores with an interrupt. - This patch adds an additional sev() to send an event. This - is a temporary hack for APM Mustang board and not intended - for upstream. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit d81f088880b9d763a7006e40dff6bb526c534255 -Author: Mark Salter <msalter@redhat.com> -Date: Tue Sep 9 22:59:48 2014 -0400 - - arm64: add parking protocol support - - This is a first-cut effort at parking protocol support. It is - very much a work in progress (as is the spec it is based on). - This code deviates from the current spec in a number of ways - to work around current firmware issues and issues with kernels - using 64K page sizes. - - caveat utilitor - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 475b6ce1555e1146761b53c550f2ac019311739f -Author: Hanjun Guo <hanjun.guo@linaro.org> -Date: Thu Aug 28 14:26:16 2014 -0400 - - ARM64 / ACPI: Introduce some PCI functions when PCI is enabled - - Introduce some PCI functions to make ACPI can be compiled when - CONFIG_PCI is enabled, these functions should be revisited when - implemented on ARM64. - - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - [fixed up for 3.17-rc] - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit cb6ebe40936adc5c3154abbec6f89ccb8a0536b7 -Author: Al Stone <ahs3@redhat.com> -Date: Thu Aug 28 13:14:16 2014 -0400 - - Fix arm64 compilation error in PNP code - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit b7fc0378e13207a53a3e8466ba6329cfbcaa0526 -Author: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> -Date: Tue Sep 9 15:37:15 2014 -0500 - - ata: ahci_platform: Add ACPI support for AMD Seattle SATA controller - - This patch adds ACPI support for non-PCI SATA contoller in ahci_platform driver. - It adds ACPI matching table in ahci_platform to support AMD Seattle SATA controller - with following ASL structure in DSDT: - - Device (SATA0) - { - Name(_HID, "AMDI0600") // Seattle AHSATA - Name (_CCA, 1) // Cache-coherent controller - Name (_CRS, ResourceTemplate () - { - Memory32Fixed (ReadWrite, 0xE0300000, 0x00010000) - Interrupt (ResourceConsumer, Level, ActiveHigh, Exclusive,,,) { 387 } - }) - } - - Since ATA driver should not require PCI support for ATA_ACPI, - this patch also removes dependency in the driver/ata/Kconfig. - - Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> - -commit c5b655e6af273a61e7ec3653deb3550ae4f7abf1 -Author: Mark Salter <msalter@redhat.com> -Date: Wed Nov 19 10:08:29 2014 -0500 - - tty/sbsauart: make ttySBSA the active console device - - The sbsauart driver doesn't register itself as a console - until module_initcall time. This allows the virtual console - driver to register the active console if no console= is - given on the cmdline. This patch allows ttySBSA to take - over the active console device role from any existing - console device if no console= is given on the cmdline. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 6bee52af3d281d91b871f6876138fa51a41f0472 -Author: Graeme Gregory <graeme.gregory@linaro.org> -Date: Wed Aug 13 13:47:18 2014 +0100 - - tty: SBSA compatible UART - - This is a subset of pl011 UART which does not supprt DMA or baud rate - changing. It does, however, provide earlycon support (i.e., using - "earlycon=ttySBSA" on the kernel command line). - - It is specified in the Server Base System Architecture document from - ARM. - - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - -commit a66f13e7c17cf7283b9987da2349c0a5c204fa4b -Author: Mark Salter <msalter@redhat.com> -Date: Mon Sep 8 11:58:46 2014 -0400 - - acpi: fix acpi_os_ioremap for arm64 - - The acpi_os_ioremap() function may be used to map normal RAM or IO - regions. The current implementation simply uses ioremap_cache(). This - will work for some architectures, but arm64 ioremap_cache() cannot be - used to map IO regions which don't support caching. So for arm64, use - ioremap() for non-RAM regions. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit b00f36975b651c0afbddee49e84109694e610f43 -Author: Graeme Gregory <graeme.gregory@linaro.org> -Date: Mon Sep 8 10:36:44 2014 -0400 - - acpi: add arm to the platforms that use ioremap - - Now with the base changes to the arm memory mapping it is safe - to convert to using ioremap to map in the tables. - - Signed-off-by: Al Stone <al.stone@linaro.org> - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - -commit 4f6ca522fc13d8c13c844a2c2f9eafe091a336a9 -Author: Mark Salter <msalter@redhat.com> -Date: Mon Sep 8 17:04:28 2014 -0400 - - acpi/arm64: NOT FOR UPSTREAM - remove EXPERT dependency - - For convenience to keep existing configs working, remove - CONFIG_EXPERT dependency from ACPI for ARM64. This shouldn't - go upstream just yet. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 91eaa3c5387ebcf698b070a4c21e39e5240699ba -Author: Graeme Gregory <graeme.gregory@linaro.org> -Date: Fri Oct 17 21:37:14 2014 +0800 - - Documentation: ACPI for ARM64 - - Add documentation for the guidelines of how to use ACPI - on ARM64. - - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - Signed-off-by: Al Stone <al.stone@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit ef17919599275fd58edb255ecf69807653cdd763 -Author: Graeme Gregory <graeme.gregory@linaro.org> -Date: Fri Oct 17 21:37:13 2014 +0800 - - ARM64 / ACPI: Enable ARM64 in Kconfig - - Add Kconfigs to build ACPI on ARM64, and make ACPI available on ARM64. - - acpi_idle driver is x86/IA64 dependent now, so make CONFIG_ACPI_PROCESSOR - depend on X86 || IA64, and implement it on ARM64 in the future. - - Reviewed-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - Signed-off-by: Al Stone <al.stone@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 7d78ff059af78cc5a80576314c38584834557fc1 -Author: Al Stone <al.stone@linaro.org> -Date: Fri Oct 17 21:37:12 2014 +0800 - - ARM64 / ACPI: Select ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled on ARM64 - - ACPI reduced hardware mode is disabled by default, but ARM64 - can only run properly in ACPI hardware reduced mode, so select - ACPI_REDUCED_HARDWARE_ONLY if ACPI is enabled on ARM64. - - Reviewed-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Al Stone <al.stone@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 8a387ea5071c9d8bdaf5305320130022ec1d4f7d -Author: Hanjun Guo <hanjun.guo@linaro.org> -Date: Fri Oct 17 21:37:11 2014 +0800 - - ARM64 / ACPI: Parse GTDT to initialize arch timer - - Using the information presented by GTDT to initialize the arch - timer (not memory-mapped). - - Originally-by: Amit Daniel Kachhap <amit.daniel@samsung.com> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 7523c8b3b0d23629781c4581272c0647fa543af5 -Author: Tomasz Nowicki <tomasz.nowicki@linaro.org> -Date: Fri Oct 17 21:37:10 2014 +0800 - - ARM64 / ACPI: Add GICv2 specific ACPI boot support - - ACPI kernel uses MADT table for proper GIC initialization. It needs to - parse GIC related subtables, collect CPU interface and distributor - addresses and call driver initialization function (which is hardware - abstraction agnostic). In a similar way, FDT initialize GICv1/2. - - NOTE: This commit allow to initialize GICv1/2 basic functionality. - GICv2 vitalization extension, GICv3/4 and ITS are considered as next - steps. - - Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 743691994f2fb03bc05f539a42ba6ccccb5d18b8 -Author: Hanjun Guo <hanjun.guo@linaro.org> -Date: Fri Oct 17 21:37:09 2014 +0800 - - ARM64 / ACPI: Introduce ACPI_IRQ_MODEL_GIC and register device's gsi - - Introduce ACPI_IRQ_MODEL_GIC which is needed for ARM64 as GIC is - used, and then register device's gsi with the core IRQ subsystem. - - acpi_register_gsi() is similar to DT based irq_of_parse_and_map(), - since gsi is unique in the system, so use hwirq number directly - for the mapping. - - Originally-by: Amit Daniel Kachhap <amit.daniel@samsung.com> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 0c4d9983cb7b50351aad0aa32e8b6134adaabb0d -Author: Hanjun Guo <hanjun.guo@linaro.org> -Date: Fri Oct 17 21:37:08 2014 +0800 - - ACPI / processor: Make it possible to get CPU hardware ID via GICC - - Introduce a new function map_gicc_mpidr() to allow MPIDRs to be obtained - from the GICC Structure introduced by ACPI 5.1. - - MPIDR is the CPU hardware ID as local APIC ID on x86 platform, so we use - MPIDR not the GIC CPU interface ID to identify CPUs. - - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit cb6b980abe388e25e357f73c5780aa1cf1b2e337 -Author: Hanjun Guo <hanjun.guo@linaro.org> -Date: Fri Oct 17 21:37:07 2014 +0800 - - ARM64 / ACPI: Parse MADT for SMP initialization - - MADT contains the information for MPIDR which is essential for - SMP initialization, parse the GIC cpu interface structures to - get the MPIDR value and map it to cpu_logical_map(), and add - enabled cpu with valid MPIDR into cpu_possible_map. - - ACPI 5.1 only has two explicit methods to boot up SMP, PSCI and - Parking protocol, but the Parking protocol is only specified for - ARMv7 now, so make PSCI as the only way for the SMP boot protocol - before some updates for the ACPI spec or the Parking protocol spec. - - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> - -commit 74a72e003ae388f460294a0910a536aced8ce93c -Author: Hanjun Guo <hanjun.guo@linaro.org> -Date: Fri Oct 17 21:37:06 2014 +0800 - - ACPI / table: Print GIC information when MADT is parsed - - When MADT is parsed, print GIC information to make the boot - log look pretty: - - ACPI: GICC (acpi_id[0x0000] address[00000000e112f000] MPDIR[0x0] enabled) - ACPI: GICC (acpi_id[0x0001] address[00000000e112f000] MPDIR[0x1] enabled) - ... - ACPI: GICC (acpi_id[0x0201] address[00000000e112f000] MPDIR[0x201] enabled) - - These information will be very helpful to bring up early systems to - see if acpi_id and MPIDR are matched or not as spec defined. - - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> - -commit 059facbd0f0664aaaf6d732ce02b2f56ea6ad98f -Author: Hanjun Guo <hanjun.guo@linaro.org> -Date: Fri Oct 17 21:37:05 2014 +0800 - - ARM64 / ACPI: Parse FADT table to get PSCI flags for PSCI init - - There are two flags: PSCI_COMPLIANT and PSCI_USE_HVC. When set, - the former signals to the OS that the firmware is PSCI compliant. - The latter selects the appropriate conduit for PSCI calls by - toggling between Hypervisor Calls (HVC) and Secure Monitor Calls - (SMC). - - FADT table contains such information, parse FADT to get the flags - for PSCI init. Since ACPI 5.1 doesn't support self defined PSCI - function IDs, which means that only PSCI 0.2+ is supported in ACPI. - - At the same time, only ACPI 5.1 or higher verison supports PSCI, - and FADT Major.Minor version was introduced in ACPI 5.1, so we - will check the version and only parse FADT table with version >= 5.1. - - If firmware provides ACPI tables with ACPI version less than 5.1, - OS will be messed up with those information and have no way to init - smp and GIC, so disable ACPI if we get an FADT table with version - less that 5.1. - - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> - -commit 7ec63267bb1630c62e5f7fd2eb75a9a31131c89a -Author: Hanjun Guo <hanjun.guo@linaro.org> -Date: Fri Oct 17 21:37:04 2014 +0800 - - ARM64 / ACPI: Make PCI optional for ACPI on ARM64 - - As PCI for ARM64 is not ready, so introduce some stub functions - to make PCI optional for ACPI, and make ACPI core run without - CONFIG_PCI on ARM64. - - Since ACPI on X86 and IA64 depends on PCI and this patch only makes - PCI optional for ARM64, it will not break anything on X86 and IA64. - - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 2f1dd91e7866f2b617af29e9973b88b2cc2e00d6 -Author: Graeme Gregory <graeme.gregory@linaro.org> -Date: Fri Oct 17 21:37:03 2014 +0800 - - ARM64 / ACPI: If we chose to boot from acpi then disable FDT - - If the early boot methods of acpi are happy that we have valid ACPI - tables and acpi=force has been passed, then do not unflat devicetree - effectively disabling further hardware probing from DT. - - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 6941a3cced9ca3d29e6e9c8b0f43917526b74789 -Author: Al Stone <al.stone@linaro.org> -Date: Fri Oct 17 21:37:02 2014 +0800 - - ARM64 / ACPI: Introduce early_param for "acpi" and pass acpi=force to enable ACPI - - Introduce one early parameters "off" and "force" for "acpi", acpi=off - will be the default behavior for ARM64, so introduce acpi=force to - enable ACPI on ARM64. - - Disable ACPI before early parameters parsed, and enable it to pass - "acpi=force" if people want use ACPI on ARM64. This ensures DT be - the prefer one if ACPI table and DT both are provided at this moment. - - Signed-off-by: Al Stone <al.stone@linaro.org> - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 8764d6bd07827a2a29eaaa382fc397527ad1ba19 -Author: Graeme Gregory <graeme.gregory@linaro.org> -Date: Fri Oct 17 21:37:01 2014 +0800 - - ARM64 / ACPI: Introduce sleep-arm.c - - ACPI 5.1 does not currently support S states for ARM64 hardware but - ACPI code will call acpi_target_system_state() for device power - managment, so introduce sleep-arm.c to allow other drivers to function - until S states are defined. - - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit 37144fd61ca68e9d542e875187739c982c8d3662 -Author: Al Stone <al.stone@linaro.org> -Date: Fri Oct 17 21:37:00 2014 +0800 - - ARM64 / ACPI: Get RSDP and ACPI boot-time tables - - As we want to get ACPI tables to parse and then use the information - for system initialization, we should get the RSDP (Root System - Description Pointer) first, it then locates Extended Root Description - Table (XSDT) which contains all the 64-bit physical address that - pointer to other boot-time tables. - - Introduce acpi.c and its related head file in this patch to provide - fundamental needs of extern variables and functions for ACPI core, - and then get boot-time tables as needed. - - asm/acenv.h for arch specific ACPICA environments and - implementation, It is needed unconditionally by ACPI core; - - asm/acpi.h for arch specific variables and functions needed by - ACPI driver core; - - acpi.c for ARM64 related ACPI implementation for ACPI driver - core; - - acpi_boot_table_init() is introduced to get RSDP and boot-time tables, - it will be called in setup_arch() before paging_init(), so we should - use eary_memremap() mechanism here to get the RSDP and all the table - pointers. - - Signed-off-by: Al Stone <al.stone@linaro.org> - Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org> - Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit a4f035d2876b41b6f224321da6b6278de577d4c5 -Author: Tomasz Nowicki <tomasz.nowicki@linaro.org> -Date: Fri Oct 17 21:36:59 2014 +0800 - - ACPI / table: Count matched and successfully parsed entries without specifying max entries - - It is very useful to traverse all available table entries without max - number of expected entries type. Current acpi_parse_entries() - implementation gives that feature but it does not count those entries, - it returns 0 instead, so fix it to count matched and successfully - entries and return it. - - NOTE: This change has no impact to x86 and ia64 archs since existing code - checks for error occurrence only (acpi_parse_entries(...,0) < 0). - - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit b3055f38d52f5be0103b436a1b04fbf3947aaa39 -Author: Ashwin Chaugule <ashwin.chaugule@linaro.org> -Date: Fri Oct 17 21:36:58 2014 +0800 - - ACPI / table: Add new function to get table entries - - The acpi_table_parse() function has a callback that - passes a pointer to a table_header. Add a new function - which takes this pointer and parses its entries. This - eliminates the need to re-traverse all the tables for - each call. e.g. as in acpi_table_parse_madt() which is - normally called after acpi_table_parse(). - - Acked-by: Grant Likely <grant.likely@linaro.org> - Signed-off-by: Ashwin Chaugule <ashwin.chaugule@linaro.org> - Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org> - Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org> - -commit fff62dfc1d7ab6ad3d528b008413fd116d208150 -Author: Mark Salter <msalter@redhat.com> -Date: Sat Nov 8 22:25:48 2014 -0500 - - arm64: use UEFI for reboot - - Wire in support for UEFI reboot. We want UEFI reboot to have - highest priority for capsule support. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 997a0488adb3f525aedb678b584f2733f43e248e -Author: Mark Salter <msalter@redhat.com> -Date: Sat Nov 8 15:25:41 2014 -0500 - - arm64: use UEFI as last resort for poweroff - - Wire in support for poweroff via UEFI. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit 5b823d4bf52286f97dc76683b533ae5c08763897 -Author: Mark Salter <msalter@redhat.com> -Date: Thu Jul 17 13:34:50 2014 -0400 - - ahci_xgene: add errata workaround for ATA_CMD_SMART - - commit 2a0bdff6b958d1b2: - - ahci_xgene: fix the dma state machine lockup for the IDENTIFY DEVICE PIO mode command. - - added a workaround for X-Gene AHCI controller errata. This was done - for all ATA_CMD_ID_ATA commands. The errata also appears to affect - ATA_CMD_SMART commands as well. This was discovered when running - smartd or just smartctl -x. This patch adds a dma engine restart for - ATA_CMD_SMART commands which clears up the issues seen with smartd. - - Signed-off-by: Mark Salter <msalter@redhat.com> - -commit f866806e1ca75a0efc62cda59559286faa7c9926 -Author: Kyle McMartin <kmcmarti@redhat.com> -Date: Tue May 13 22:25:26 2014 -0400 - - arm64: don't set READ_IMPLIES_EXEC for EM_AARCH64 ELF objects - - Message-id: <20140513222526.GC26038@redacted.bos.redhat.com> - Patchwork-id: 79789 - O-Subject: [ACADIA PATCH] arm64: don't set READ_IMPLIES_EXEC for EM_AARCH64 ELF objects - Bugzilla: 1085528 - - BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1085528 - Upstream: submitted soon - - [Sadly this isn't (yet) sufficient... but it fixes at least one issue - here... cat /proc/$$/personality shows READ_IMPLIES_EXEC before. I'll - try to figure the rest out tomorrow.] - - Currently, we're accidentally ending up with executable stacks on - AArch64 when the ABI says we shouldn't be, and relying on glibc to fix - things up for us when we're loaded. However, SELinux will deny us - mucking with the stack, and hit us with execmem AVCs. - - The reason this is happening is somewhat complex: - - fs/binfmt_elf.c:load_elf_binary() - - initializes executable_stack = EXSTACK_DEFAULT implying the - architecture should make up its mind. - - does a pile of loading goo - - runs through the program headers, looking for PT_GNU_STACK - and setting (or unsetting) executable_stack if it finds it. - - This is our first problem, we won't generate these unless an - executable stack is explicitly requested. - - - more ELF loading goo - - sets whether we're a compat task or not (TIF_32BIT) based on compat.h - - for compat reasons (pre-GNU_STACK) checks if the READ_IMPLIES_EXEC - flag should be set for ancient toolchains - - Here's our second problem, we test if read_implies_exec based on - stk != EXSTACK_DISABLE_X, which is true since stk == EXSTACK_DEFAULT. - - So we set current->personality |= READ_IMPLIES_EXEC like a broken - legacy toolchain would want. - - - Now we call setup_arg_pages to set up the stack... - - fs/exec.c:setup_arg_pages() - - lots of magic happens here - - vm_flags gets initialized to VM_STACK_FLAGS - - Here's our third problem, VM_STACK_FLAGS on arm64 is - VM_DEFAULT_DATA_FLAG which tests READ_IMPLIES_EXEC and sets VM_EXEC - if it's true. So we end up with an executable stack mapping, since we - don't have executable_stack set (it's still EXSTACK_DEFAULT at this - point) to unset it anywhere. - - Bang. execstack AVC when the program starts running. - - The easiest way I can see to fix this is to test if we're a legacy task - and fix it up there. But that's not as simple as it sounds, because - the 32-bit ABI depends on what revision of the CPU we've enabled (not - that it matters since we're ARMv8...) Regardless, in the compat case, - set READ_IMPLIES_EXEC if we've found a GNU_STACK header which explicitly - requested it as in arch/arm/kernel/elf.c:arm_elf_read_implies_exec(). - - Signed-off-by: Kyle McMartin <kmcmarti@redhat.com> - Signed-off-by: Donald Dutile <ddutile@redhat.com> - -commit a68d368ceb495cabafe82cdd0b83ec1e271a7f9d -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Fri Nov 7 14:12:34 2014 +0000 - - arm64: kvm: eliminate literal pool entries - - Replace two instances of 'ldr xN, =(constant)' in the world switch - hot path with 'mov' instructions. - - Acked-by: Marc Zyngier <marc.zyngier@arm.com> - Acked-by: Christoffer Dall <christoffer.dall@linaro.org> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - Signed-off-by: Will Deacon <will.deacon@arm.com> - -commit 246a31b3a8f065e831a6d8d9fd96f3a8e17dbdb9 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Fri Nov 7 14:12:33 2014 +0000 - - arm64: ftrace: eliminate literal pool entries - - Replace ldr xN, =<symbol> with adrp/add or adrp/ldr [as appropriate] - in the implementation of _mcount(), which may be called very often. - - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - Signed-off-by: Will Deacon <will.deacon@arm.com> - -commit ecd0f8e21514e8ac758ed16a188faaa4c5ef75c7 -Author: Mark Rutland <mark.rutland@arm.com> -Date: Tue Nov 4 10:50:16 2014 +0000 - - arm64: log physical ID of boot CPU - - In certain debugging scenarios it's useful to know the physical ID (i.e. - the MPIDR_EL1.Aff* fields) of the boot CPU, but we don't currently log - this as we do for 32-bit ARM kernels. - - This patch makes the kernel log the physical ID of the boot CPU early in - the boot process. The CPU logical map initialisation is folded in to - smp_setup_processor_id (which contrary to its name is also called by UP - kernels). This is called before setup_arch, so should not adversely - affect existing cpu_logical_map users. - - Acked-by: Sudeep Holla <sudeep.holla@arm.com> - Acked-by: Catalin Marinas <catalin.marinas@arm.com> - Acked-by: Lorenzo Pieralisis <lorenzo.pieralisi@arm.com> - Signed-off-by: Mark Rutland <mark.rutland@arm.com> - Signed-off-by: Will Deacon <will.deacon@arm.com> - -commit 2899d6ea451eb0037427bbf430069f73cb76becc -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Mon Nov 3 16:50:01 2014 +0000 - - arm64/crypto: use crypto instructions to generate AES key schedule - - This patch implements the AES key schedule generation using ARMv8 - Crypto Instructions. It replaces the table based C implementation - in aes_generic.ko, which means we can drop the dependency on that - module. - - Tested-by: Steve Capper <steve.capper@linaro.org> - Acked-by: Steve Capper <steve.capper@linaro.org> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - Signed-off-by: Will Deacon <will.deacon@arm.com> - -commit 67b1122c25f0c7a9a126ebabcd2085ef99640c13 -Author: Geoff Levand <geoff@infradead.org> -Date: Fri Oct 31 23:06:47 2014 +0000 - - arm64/kvm: Fix assembler compatibility of macros - - Some of the macros defined in kvm_arm.h are useful in assembly files, but are - not compatible with the assembler. Change any C language integer constant - definitions using appended U, UL, or ULL to the UL() preprocessor macro. Also, - add a preprocessor include of the asm/memory.h file which defines the UL() - macro. - - Fixes build errors like these when using kvm_arm.h in assembly - source files: - - Error: unexpected characters following instruction at operand 3 -- `and x0,x1,#((1U<<25)-1)' - - Acked-by: Mark Rutland <mark.rutland@arm.com> - Signed-off-by: Geoff Levand <geoff@infradead.org> - Signed-off-by: Will Deacon <will.deacon@arm.com> - -commit 6a3c07e9aa03b7fbec14ab8bc21fce8590f12d83 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Tue Oct 28 12:24:20 2014 +0000 - - arm64/dt: add machine name to kernel call stack dump output - - This installs the machine name as recorded by setup_machine_fdt() - as dump stack arch description. This results in the string to be - included in call stack dumps, as is shown here: - - ... - Bad mode in Synchronous Abort handler detected, code 0x84000005 - CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.18.0-rc2+ #548 - > Hardware name: linux,dummy-virt (DT) - task: ffffffc07c870000 ti: ffffffc07c878000 task.ti: ffffffc07c878000 - PC is at 0x0 - ... - - Note that systems that support DMI/SMBIOS may override this later. - - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - Signed-off-by: Will Deacon <will.deacon@arm.com> - -commit 7c0569a739d0f1dd8ffd709cf37c53bb42143687 -Author: Steve Capper <steve.capper@linaro.org> -Date: Fri Oct 24 13:22:20 2014 +0100 - - arm64: xchg: Implement cmpxchg_double - - The arm64 architecture has the ability to exclusively load and store - a pair of registers from an address (ldxp/stxp). Also the SLUB can take - advantage of a cmpxchg_double implementation to avoid taking some - locks. - - This patch provides an implementation of cmpxchg_double for 64-bit - pairs, and activates the logic required for the SLUB to use these - functions (HAVE_ALIGNED_STRUCT_PAGE and HAVE_CMPXCHG_DOUBLE). - - Also definitions of this_cpu_cmpxchg_8 and this_cpu_cmpxchg_double_8 - are wired up to cmpxchg_local and cmpxchg_double_local (rather than the - stock implementations that perform non-atomic operations with - interrupts disabled) as they are used by the SLUB. - - On a Juno platform running on only the A57s I get quite a noticeable - performance improvement with 5 runs of hackbench on v3.17: - - Baseline | With Patch - -----------------+----------- - Mean 119.2312 | 106.1782 - StdDev 0.4919 | 0.4494 - - (times taken to complete `./hackbench 100 process 1000', in seconds) - - Signed-off-by: Steve Capper <steve.capper@linaro.org> - Signed-off-by: Will Deacon <will.deacon@arm.com> - -commit 7acf53bfb80c2823d233c14d33cfd2d119713b89 -Author: Joonwoo Park <joonwoop@codeaurora.org> -Date: Tue Oct 21 01:59:03 2014 +0100 - - arm64: optimize memcpy_{from,to}io() and memset_io() - - Optimize memcpy_{from,to}io() and memset_io() by transferring in 64 bit - as much as possible with minimized barrier usage. This simplest - optimization brings faster throughput compare to current byte-by-byte read - and write with barrier in the loop. Code's skeleton is taken from the - powerpc. - - Link: http://lkml.kernel.org/p/20141020133304.GH23751@e104818-lin.cambridge.arm.com - Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> - Reviewed-by: Trilok Soni <tsoni@codeaurora.org> - Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org> - Signed-off-by: Will Deacon <will.deacon@arm.com> - -commit 1971c19fb2a38a1d94cedada404760a917c36cd4 -Author: Mark Rutland <mark.rutland@arm.com> -Date: Thu Oct 23 16:33:33 2014 +0100 - - efi: efi-stub: notify on DTB absence - - In the absence of a DTB configuration table, the EFI stub will happily - continue attempting to boot a kernel, despite the fact that this kernel - may not function without a description of the hardware. In this case, as - with a typo'd "dtb=" option (e.g. "dbt=") or many other possible - failures, the only output seen by the user will be the rather terse - output from the EFI stub: - - EFI stub: Booting Linux Kernel... - - To aid those attempting to debug such failures, this patch adds a notice - when no DTB is found, making the output more helpful: - - EFI stub: Booting Linux Kernel... - EFI stub: Generating empty DTB - - Additionally, a positive acknowledgement is added when a user-specified - DTB is in use: - - EFI stub: Booting Linux Kernel... - EFI stub: Using DTB from command line - - Similarly, a positive acknowledgement is added when a DTB from a - configuration table is in use: - - EFI stub: Booting Linux Kernel... - EFI stub: Using DTB from configuration table - - Signed-off-by: Mark Rutland <mark.rutland@arm.com> - Acked-by: Leif Lindholm <leif.lindholm@linaro.org> - Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - Acked-by: Roy Franz <roy.franz@linaro.org> - Acked-by: Matt Fleming <matt.fleming@intel.com> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit 7652016ff98e614ed2e3abac19b996af02434293 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Wed Oct 15 09:36:50 2014 +0200 - - arm64: dmi: set DMI string as dump stack arch description - - This sets the DMI string, containing system type, serial number, - firmware version etc. as dump stack arch description, so that oopses - and other kernel stack dumps automatically have this information - included, if available. - - Tested-by: Leif Lindholm <leif.lindholm@linaro.org> - Acked-by: Leif Lindholm <leif.lindholm@linaro.org> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit 2586f232bd388d2223f3c7bcba446b2bd25d8e3d -Author: Yi Li <yi.li@linaro.org> -Date: Sat Oct 4 23:46:43 2014 +0800 - - arm64: dmi: Add SMBIOS/DMI support - - SMBIOS is important for server hardware vendors. It implements a spec for - providing descriptive information about the platform. Things like serial - numbers, physical layout of the ports, build configuration data, and the like. - - Signed-off-by: Yi Li <yi.li@linaro.org> - Tested-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> - Tested-by: Leif Lindholm <leif.lindholm@linaro.org> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit 16b52b24f3d7a4f1555e4233398172b32306c1e4 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Tue Oct 14 16:41:27 2014 +0200 - - dmi: add support for SMBIOS 3.0 64-bit entry point - - The DMTF SMBIOS reference spec v3.0.0 defines a new 64-bit entry point, - which enables support for SMBIOS structure tables residing at a physical - offset over 4 GB. This is especially important for upcoming arm64 - platforms whose system RAM resides entirely above the 4 GB boundary. - - For the UEFI case, this code attempts to detect the new SMBIOS 3.0 - header magic at the offset passed in the SMBIOS3_TABLE_GUID UEFI - configuration table. If this configuration table is not provided, or - if we fail to parse the header, we fall back to using the legacy - SMBIOS_TABLE_GUID configuration table. This is in line with the spec, - that allows both configuration tables to be provided, but mandates that - they must point to the same structure table, unless the version pointed - to by the 64-bit entry point is a superset of the 32-bit one. - - For the non-UEFI case, the detection logic is modified to look for the - SMBIOS 3.0 header magic before it looks for the legacy header magic. - - Note that this patch is based on version 3.0.0d [draft] of the - specification, which is expected not to deviate from the final version - in ways that would affect the correctness of this implementation. - - Tested-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> - Acked-by: Leif Lindholm <leif.lindholm@linaro.org> - Tested-by: Leif Lindholm <leif.lindholm@linaro.org> - Cc: Andrew Morton <akpm@linux-foundation.org> - Cc: Tony Luck <tony.luck@intel.com> - Acked-by: Matt Fleming <matt.fleming@intel.com> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit 016f4b4f5cee9ddd8c243a36c220a65bdfb82dc8 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Tue Oct 14 16:34:47 2014 +0200 - - efi: dmi: add support for SMBIOS 3.0 UEFI configuration table - - This adds support to the UEFI side for detecting the presence of - a SMBIOS 3.0 64-bit entry point. This allows the actual SMBIOS - structure table to reside at a physical offset over 4 GB, which - cannot be supported by the legacy SMBIOS 32-bit entry point. - - Since the firmware can legally provide both entry points, store - the SMBIOS 3.0 entry point in a separate variable, and let the - DMI decoding layer decide which one will be used. - - Tested-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> - Acked-by: Leif Lindholm <leif.lindholm@linaro.org> - Acked-by: Matt Fleming <matt.fleming@intel.com> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit ac627ea950e853f0a3f91607fb16cb9477f434d7 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Fri Oct 17 12:44:11 2014 +0200 - - arm64/efi: drop redundant set_bit(EFI_CONFIG_TABLES) - - The EFI_CONFIG_TABLES bit already gets set by efi_config_init(), - so there is no reason to set it again after this function returns - successfully. - - Acked-by: Will Deacon <will.deacon@arm.com> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit 850ba08a3f4756a8340edadd4fdeccd881813ba5 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Mon Oct 20 15:31:57 2014 +0200 - - arm64/efi: invert UEFI memory region reservation logic - - Instead of reserving the memory regions based on which types we know - need to be reserved, consider only regions of the following types as - free for general use by the OS: - - EFI_LOADER_CODE - EFI_LOADER_DATA - EFI_BOOT_SERVICES_CODE - EFI_BOOT_SERVICES_DATA - EFI_CONVENTIONAL_MEMORY - - Note that this also fixes a problem with the original code, which would - misidentify a EFI_RUNTIME_SERVICES_DATA region as not reserved if it - does not have the EFI_MEMORY_RUNTIME attribute set. However, it is - perfectly legal for the firmware not to request a virtual mapping for - EFI_RUNTIME_SERVICES_DATA regions that contain configuration tables, in - which case the EFI_MEMORY_RUNTIME attribute would not be set. - - Acked-by: Roy Franz <roy.franz@linaro.org> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit 2787807ca4f5f7df82a5c54312753b157e8c052e -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Fri Oct 10 18:42:55 2014 +0200 - - arm64/efi: set PE/COFF file alignment to 512 bytes - - Change our PE/COFF header to use the minimum file alignment of - 512 bytes (0x200), as mandated by the PE/COFF spec v8.3 - - Also update the linker script so that the Image file itself is also a - round multiple of FileAlignment. - - Acked-by: Catalin Marinas <catalin.marinas@arm.com> - Acked-by: Roy Franz <roy.franz@linaro.org> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit 7bd0585d9ab62d9787c389d3b62141b76319e5f7 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Fri Oct 10 11:25:24 2014 +0200 - - arm64/efi: set PE/COFF section alignment to 4 KB - - Position independent AArch64 code needs to be linked and loaded at the - same relative offset from a 4 KB boundary, or adrp/add and adrp/ldr - pairs will not work correctly. (This is how PC relative symbol - references with a 4 GB reach are emitted) - - We need to declare this in the PE/COFF header, otherwise the PE/COFF - loader may load the Image and invoke the stub at an offset which - violates this rule. - - Reviewed-by: Roy Franz <roy.franz@linaro.org> - Acked-by: Mark Rutland <mark.rutland@arm.com> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - -commit 5a0edb2dbdf9327322ae57e8e16d162c2a371318 -Author: Ard Biesheuvel <ard.biesheuvel@linaro.org> -Date: Wed Oct 8 16:11:27 2014 +0200 - - arm64/efi: efistub: jump to 'stext' directly, not through the header - - After the EFI stub has done its business, it jumps into the kernel by - branching to offset #0 of the loaded Image, which is where it expects - to find the header containing a 'branch to stext' instruction. - - However, the UEFI spec 2.1.1 states the following regarding PE/COFF - image loading: - "A UEFI image is loaded into memory through the LoadImage() Boot - Service. This service loads an image with a PE32+ format into memory. - This PE32+ loader is required to load all sections of the PE32+ image - into memory." - - In other words, it is /not/ required to load parts of the image that are - not covered by a PE/COFF section, so it may not have loaded the header - at the expected offset, as it is not covered by any PE/COFF section. - - So instead, jump to 'stext' directly, which is at the base of the - PE/COFF .text section, by supplying a symbol 'stext_offset' to - efi-entry.o which contains the relative offset of stext into the Image. - Also replace other open coded calculations of the same value with a - reference to 'stext_offset' - - Acked-by: Mark Rutland <mark.rutland@arm.com> - Acked-by: Roy Franz <roy.franz@linaro.org> - Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> - - Documentation/acpi/gpio-properties.txt | 96 +++ Documentation/arm64/arm-acpi.txt | 323 ++++++++++ - Documentation/gpio/consumer.txt | 18 + Documentation/kernel-parameters.txt | 3 +- - arch/arm/include/asm/kvm_mmu.h | 5 +- - arch/arm/kvm/mmu.c | 22 +- - arch/arm/mach-s3c24xx/h1940-bluetooth.c | 4 +- - arch/arm/mach-s3c24xx/h1940.h | 4 +- - arch/arm/mach-s3c24xx/mach-h1940.c | 3 +- - arch/arm/mach-s3c24xx/mach-rx1950.c | 3 +- - arch/arm/plat-orion/gpio.c | 3 +- - arch/arm/plat-orion/include/plat/orion-gpio.h | 5 +- - arch/arm64/Kconfig | 22 + + arch/arm/kvm/mmu.c | 4 + + arch/arm64/Kconfig | 9 + arch/arm64/Makefile | 1 + - arch/arm64/crypto/Kconfig | 5 +- - arch/arm64/crypto/aes-ce-ccm-glue.c | 4 +- - arch/arm64/crypto/aes-ce-cipher.c | 112 +++- - arch/arm64/crypto/aes-ce-setkey.h | 5 + - arch/arm64/crypto/aes-glue.c | 18 +- arch/arm64/include/asm/acenv.h | 18 + arch/arm64/include/asm/acpi.h | 102 +++ - arch/arm64/include/asm/cmpxchg.h | 71 +++ arch/arm64/include/asm/cpu_ops.h | 1 + - arch/arm64/include/asm/dmi.h | 31 + arch/arm64/include/asm/elf.h | 3 +- - arch/arm64/include/asm/kvm_arm.h | 21 +- - arch/arm64/include/asm/kvm_mmu.h | 5 +- arch/arm64/include/asm/pci.h | 51 ++ arch/arm64/include/asm/psci.h | 3 +- arch/arm64/include/asm/smp.h | 10 +- arch/arm64/kernel/Makefile | 4 +- arch/arm64/kernel/acpi.c | 398 ++++++++++++ arch/arm64/kernel/cpu_ops.c | 8 +- - arch/arm64/kernel/efi-entry.S | 3 +- - arch/arm64/kernel/efi.c | 74 ++- - arch/arm64/kernel/entry-ftrace.S | 21 +- - arch/arm64/kernel/head.S | 24 +- - arch/arm64/kernel/io.c | 66 +- + arch/arm64/kernel/efi.c | 37 ++ arch/arm64/kernel/pci.c | 97 ++- arch/arm64/kernel/psci.c | 78 ++- - arch/arm64/kernel/setup.c | 51 +- + arch/arm64/kernel/setup.c | 44 +- arch/arm64/kernel/smp.c | 2 +- arch/arm64/kernel/smp_parking_protocol.c | 110 ++++ arch/arm64/kernel/time.c | 7 + - arch/arm64/kernel/vmlinux.lds.S | 17 + - arch/arm64/kvm/hyp.S | 4 +- arch/arm64/mm/dma-mapping.c | 112 ++++ arch/arm64/pci/Makefile | 2 + arch/arm64/pci/mmconfig.c | 292 +++++++++ arch/arm64/pci/pci.c | 461 ++++++++++++++ drivers/acpi/Kconfig | 6 +- - drivers/acpi/Makefile | 7 +- + drivers/acpi/Makefile | 6 +- drivers/acpi/bus.c | 3 + - drivers/acpi/internal.h | 11 + + drivers/acpi/internal.h | 5 + drivers/acpi/osl.c | 6 +- drivers/acpi/processor_core.c | 37 ++ - drivers/acpi/property.c | 551 ++++++++++++++++ - drivers/acpi/scan.c | 129 +++- drivers/acpi/sleep-arm.c | 28 + - drivers/acpi/tables.c | 115 +++- + drivers/acpi/tables.c | 48 +- drivers/acpi/utils.c | 26 + drivers/ata/Kconfig | 2 +- drivers/ata/ahci_platform.c | 13 + drivers/ata/ahci_xgene.c | 30 +- - drivers/base/Makefile | 2 +- - drivers/base/property.c | 431 +++++++++++++ - drivers/clocksource/arm_arch_timer.c | 120 +++- - drivers/firmware/dmi_scan.c | 79 ++- - drivers/firmware/efi/efi.c | 4 + - drivers/firmware/efi/libstub/arm-stub.c | 11 +- - drivers/gpio/devres.c | 32 + - drivers/gpio/gpio-sch.c | 293 ++++----- - drivers/gpio/gpiolib-acpi.c | 117 +++- - drivers/gpio/gpiolib.c | 85 ++- - drivers/gpio/gpiolib.h | 7 +- - drivers/input/keyboard/gpio_keys_polled.c | 112 ++-- + drivers/clocksource/arm_arch_timer.c | 136 +++- + drivers/input/keyboard/gpio_keys_polled.c | 1 + drivers/iommu/arm-smmu.c | 8 +- drivers/irqchip/irq-gic-v3.c | 10 + - drivers/irqchip/irq-gic.c | 116 ++++ + drivers/irqchip/irq-gic.c | 118 ++++ drivers/irqchip/irqchip.c | 3 + - drivers/leds/leds-gpio.c | 140 ++-- - drivers/misc/eeprom/at25.c | 34 +- - drivers/net/ethernet/amd/Kconfig | 2 +- + drivers/leds/leds-gpio.c | 1 + drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 16 +- drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 3 + - drivers/net/ethernet/amd/xgbe/xgbe-main.c | 289 +++++++-- + drivers/net/ethernet/amd/xgbe/xgbe-main.c | 276 ++++++-- drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 20 +- drivers/net/ethernet/amd/xgbe/xgbe-ptp.c | 4 +- drivers/net/ethernet/amd/xgbe/xgbe.h | 13 + drivers/net/ethernet/apm/xgene/xgene_enet_hw.c | 69 +- - drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 68 +- + drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 80 ++- drivers/net/ethernet/apm/xgene/xgene_enet_main.h | 1 + drivers/net/ethernet/smsc/smc91x.c | 10 + - drivers/net/phy/Kconfig | 2 +- drivers/net/phy/amd-xgbe-phy.c | 777 ++++++++++++----------- - drivers/of/base.c | 33 + drivers/pci/host/pci-xgene.c | 167 +++++ drivers/pnp/resource.c | 2 + drivers/tty/Kconfig | 6 + @@ -1922,132 +61,21 @@ Date: Wed Oct 8 16:11:27 2014 +0200 drivers/tty/sbsauart.c | 358 +++++++++++ drivers/tty/serial/8250/8250_dw.c | 9 + drivers/virtio/virtio_mmio.c | 12 +- - drivers/xen/efi.c | 1 + - include/acpi/acpi_bus.h | 30 + + include/acpi/acpi_bus.h | 2 + include/acpi/acpi_io.h | 6 + include/asm-generic/vmlinux.lds.h | 7 + include/kvm/arm_vgic.h | 20 +- - include/linux/acpi.h | 141 +++- + include/linux/acpi.h | 1 + include/linux/clocksource.h | 6 + - include/linux/efi.h | 6 +- - include/linux/gpio/consumer.h | 7 + - include/linux/gpio_keys.h | 3 + include/linux/irqchip/arm-gic-acpi.h | 31 + include/linux/irqchip/arm-gic.h | 2 + - include/linux/kvm_host.h | 1 + - include/linux/leds.h | 3 +- - include/linux/of.h | 34 + include/linux/pci.h | 37 +- - include/linux/property.h | 143 +++++ - net/rfkill/rfkill-gpio.c | 18 +- virt/kvm/arm/arch_timer.c | 107 ++-- virt/kvm/arm/vgic-v2.c | 86 ++- virt/kvm/arm/vgic-v3.c | 8 +- virt/kvm/arm/vgic.c | 30 +- - 125 files changed, 6843 insertions(+), 1117 deletions(-) + 76 files changed, 4208 insertions(+), 626 deletions(-) -diff --git a/Documentation/acpi/gpio-properties.txt b/Documentation/acpi/gpio-properties.txt -new file mode 100644 -index 0000000..ae36fcf ---- /dev/null -+++ b/Documentation/acpi/gpio-properties.txt -@@ -0,0 +1,96 @@ -+_DSD Device Properties Related to GPIO -+-------------------------------------- -+ -+With the release of ACPI 5.1 and the _DSD configuration objecte names -+can finally be given to GPIOs (and other things as well) returned by -+_CRS. Previously, we were only able to use an integer index to find -+the corresponding GPIO, which is pretty error prone (it depends on -+the _CRS output ordering, for example). -+ -+With _DSD we can now query GPIOs using a name instead of an integer -+index, like the ASL example below shows: -+ -+ // Bluetooth device with reset and shutdown GPIOs -+ Device (BTH) -+ { -+ Name (_HID, ...) -+ -+ Name (_CRS, ResourceTemplate () -+ { -+ GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionInputOnly, -+ "\\_SB.GPO0", 0, ResourceConsumer) {15} -+ GpioIo (Exclusive, PullUp, 0, 0, IoRestrictionInputOnly, -+ "\\_SB.GPO0", 0, ResourceConsumer) {27, 31} -+ }) -+ -+ Name (_DSD, Package () -+ { -+ ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), -+ Package () -+ { -+ Package () {"reset-gpio", Package() {^BTH, 1, 1, 0 }}, -+ Package () {"shutdown-gpio", Package() {^BTH, 0, 0, 0 }}, -+ } -+ }) -+ } -+ -+The format of the supported GPIO property is: -+ -+ Package () { "name", Package () { ref, index, pin, active_low }} -+ -+ ref - The device that has _CRS containing GpioIo()/GpioInt() resources, -+ typically this is the device itself (BTH in our case). -+ index - Index of the GpioIo()/GpioInt() resource in _CRS starting from zero. -+ pin - Pin in the GpioIo()/GpioInt() resource. Typically this is zero. -+ active_low - If 1 the GPIO is marked as active_low. -+ -+Since ACPI GpioIo() resource does not have a field saying whether it is -+active low or high, the "active_low" argument can be used here. Setting -+it to 1 marks the GPIO as active low. -+ -+In our Bluetooth example the "reset-gpio" refers to the second GpioIo() -+resource, second pin in that resource with the GPIO number of 31. -+ -+ACPI GPIO Mappings Provided by Drivers -+-------------------------------------- -+ -+There are systems in which the ACPI tables do not contain _DSD but provide _CRS -+with GpioIo()/GpioInt() resources and device drivers still need to work with -+them. -+ -+In those cases ACPI device identification objects, _HID, _CID, _CLS, _SUB, _HRV, -+available to the driver can be used to identify the device and that is supposed -+to be sufficient to determine the meaning and purpose of all of the GPIO lines -+listed by the GpioIo()/GpioInt() resources returned by _CRS. In other words, -+the driver is supposed to know what to use the GpioIo()/GpioInt() resources for -+once it has identified the device. Having done that, it can simply assign names -+to the GPIO lines it is going to use and provide the GPIO subsystem with a -+mapping between those names and the ACPI GPIO resources corresponding to them. -+ -+To do that, the driver needs to define a mapping table as a NULL-terminated -+array of struct acpi_gpio_mapping objects that each contain a name, a pointer -+to an array of line data (struct acpi_gpio_params) objects and the size of that -+array. Each struct acpi_gpio_params object consists of three fields, -+crs_entry_index, line_index, active_low, representing the index of the target -+GpioIo()/GpioInt() resource in _CRS starting from zero, the index of the target -+line in that resource starting from zero, and the active-low flag for that line, -+respectively, in analogy with the _DSD GPIO property format specified above. -+ -+For the example Bluetooth device discussed previously the data structures in -+question would look like this: -+ -+static const struct acpi_gpio_params reset_gpio = { 1, 1, false }; -+static const struct acpi_gpio_params shutdown_gpio = { 0, 0, false }; -+ -+static const struct acpi_gpio_mapping bluetooth_acpi_gpios[] = { -+ { "reset-gpio", &reset_gpio, 1 }, -+ { "shutdown-gpio", &shutdown_gpio, 1 }, -+ { }, -+}; -+ -+Next, the mapping table needs to be passed as the second argument to -+acpi_dev_add_driver_gpios() that will register it with the ACPI device object -+pointed to by its first argument. That should be done in the driver's .probe() -+routine. On removal, the driver should unregister its GPIO mapping table by -+calling acpi_dev_remove_driver_gpios() on the ACPI device object where that -+table was previously registered. diff --git a/Documentation/arm64/arm-acpi.txt b/Documentation/arm64/arm-acpi.txt new file mode 100644 index 0000000..17cf96d @@ -2377,37 +405,8 @@ index 0000000..17cf96d +submitted to ASWG and go through the normal approval process; for those that +are not UEFI members, many other members of the Linux community are and would +likely be willing to assist in submitting ECRs. -diff --git a/Documentation/gpio/consumer.txt b/Documentation/gpio/consumer.txt -index 6ce5441..859918d 100644 ---- a/Documentation/gpio/consumer.txt -+++ b/Documentation/gpio/consumer.txt -@@ -219,6 +219,24 @@ part of the IRQ interface, e.g. IRQF_TRIGGER_FALLING, as are system wakeup - capabilities. - - -+GPIOs and ACPI -+============== -+ -+On ACPI systems, GPIOs are described by GpioIo()/GpioInt() resources listed by -+the _CRS configuration objects of devices. Those resources do not provide -+connection IDs (names) for GPIOs, so it is necessary to use an additional -+mechanism for this purpose. -+ -+Systems compliant with ACPI 5.1 or newer may provide a _DSD configuration object -+which, among other things, may be used to provide connection IDs for specific -+GPIOs described by the GpioIo()/GpioInt() resources in _CRS. If that is the -+case, it will be handled by the GPIO subsystem automatically. However, if the -+_DSD is not present, the mappings between GpioIo()/GpioInt() resources and GPIO -+connection IDs need to be provided by device drivers. -+ -+For details refer to Documentation/acpi/gpio-properties.txt -+ -+ - Interacting With the Legacy GPIO Subsystem - ========================================== - Many kernel subsystems still handle GPIOs using the legacy integer-based diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt -index 479f332..6187d9b 100644 +index 4df73da..4adfd50 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -165,7 +165,7 @@ multipliers 'Kilo', 'Mega', and 'Giga', equalling 2^10, 2^20, and 2^30 @@ -2427,65 +426,11 @@ index 479f332..6187d9b 100644 See also Documentation/power/runtime_pm.txt, pci=noacpi -diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h -index acb0d57..f867060 100644 ---- a/arch/arm/include/asm/kvm_mmu.h -+++ b/arch/arm/include/asm/kvm_mmu.h -@@ -161,9 +161,10 @@ static inline bool vcpu_has_cache_enabled(struct kvm_vcpu *vcpu) - } - - static inline void coherent_cache_guest_page(struct kvm_vcpu *vcpu, hva_t hva, -- unsigned long size) -+ unsigned long size, -+ bool ipa_uncached) - { -- if (!vcpu_has_cache_enabled(vcpu)) -+ if (!vcpu_has_cache_enabled(vcpu) || ipa_uncached) - kvm_flush_dcache_to_poc((void *)hva, size); - - /* diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c -index 8664ff1..8fa2060 100644 +index 1dc9778..0b88d36 100644 --- a/arch/arm/kvm/mmu.c +++ b/arch/arm/kvm/mmu.c -@@ -853,6 +853,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, - struct vm_area_struct *vma; - pfn_t pfn; - pgprot_t mem_type = PAGE_S2; -+ bool fault_ipa_uncached; - - write_fault = kvm_is_write_fault(vcpu); - if (fault_status == FSC_PERM && !write_fault) { -@@ -919,6 +920,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, - if (!hugetlb && !force_pte) - hugetlb = transparent_hugepage_adjust(&pfn, &fault_ipa); - -+ fault_ipa_uncached = memslot->flags & KVM_MEMSLOT_INCOHERENT; -+ - if (hugetlb) { - pmd_t new_pmd = pfn_pmd(pfn, mem_type); - new_pmd = pmd_mkhuge(new_pmd); -@@ -926,7 +929,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, - kvm_set_s2pmd_writable(&new_pmd); - kvm_set_pfn_dirty(pfn); - } -- coherent_cache_guest_page(vcpu, hva & PMD_MASK, PMD_SIZE); -+ coherent_cache_guest_page(vcpu, hva & PMD_MASK, PMD_SIZE, -+ fault_ipa_uncached); - ret = stage2_set_pmd_huge(kvm, memcache, fault_ipa, &new_pmd); - } else { - pte_t new_pte = pfn_pte(pfn, mem_type); -@@ -934,7 +938,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, - kvm_set_s2pte_writable(&new_pte); - kvm_set_pfn_dirty(pfn); - } -- coherent_cache_guest_page(vcpu, hva, PAGE_SIZE); -+ coherent_cache_guest_page(vcpu, hva, PAGE_SIZE, -+ fault_ipa_uncached); - ret = stage2_set_pte(kvm, memcache, fault_ipa, &new_pte, - pgprot_val(mem_type) == pgprot_val(PAGE_S2_DEVICE)); - } -@@ -1245,6 +1250,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, +@@ -1315,6 +1315,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, (KVM_PHYS_SIZE >> PAGE_SHIFT)) return -EFAULT; @@ -2496,159 +441,19 @@ index 8664ff1..8fa2060 100644 /* * A memory region could potentially cover multiple VMAs, and any holes * between them, so iterate over all of them to find out if we can map -@@ -1310,6 +1319,15 @@ void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free, - int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot, - unsigned long npages) - { -+ /* -+ * Readonly memslots are not incoherent with the caches by definition, -+ * but in practice, they are used mostly to emulate ROMs or NOR flashes -+ * that the guest may consider devices and hence map as uncached. -+ * To prevent incoherency issues in these cases, tag all readonly -+ * regions as incoherent. -+ */ -+ if (slot->flags & KVM_MEM_READONLY) -+ slot->flags |= KVM_MEMSLOT_INCOHERENT; - return 0; - } - -diff --git a/arch/arm/mach-s3c24xx/h1940-bluetooth.c b/arch/arm/mach-s3c24xx/h1940-bluetooth.c -index b4d14b8..9c8b127 100644 ---- a/arch/arm/mach-s3c24xx/h1940-bluetooth.c -+++ b/arch/arm/mach-s3c24xx/h1940-bluetooth.c -@@ -41,7 +41,7 @@ static void h1940bt_enable(int on) - mdelay(10); - gpio_set_value(S3C2410_GPH(1), 0); - -- h1940_led_blink_set(-EINVAL, GPIO_LED_BLINK, NULL, NULL); -+ h1940_led_blink_set(NULL, GPIO_LED_BLINK, NULL, NULL); - } - else { - gpio_set_value(S3C2410_GPH(1), 1); -@@ -50,7 +50,7 @@ static void h1940bt_enable(int on) - mdelay(10); - gpio_set_value(H1940_LATCH_BLUETOOTH_POWER, 0); - -- h1940_led_blink_set(-EINVAL, GPIO_LED_NO_BLINK_LOW, NULL, NULL); -+ h1940_led_blink_set(NULL, GPIO_LED_NO_BLINK_LOW, NULL, NULL); - } - } - -diff --git a/arch/arm/mach-s3c24xx/h1940.h b/arch/arm/mach-s3c24xx/h1940.h -index 2950cc4..596d9f6 100644 ---- a/arch/arm/mach-s3c24xx/h1940.h -+++ b/arch/arm/mach-s3c24xx/h1940.h -@@ -19,8 +19,10 @@ - #define H1940_SUSPEND_RESUMEAT (0x30081000) - #define H1940_SUSPEND_CHECK (0x30080000) - -+struct gpio_desc; -+ - extern void h1940_pm_return(void); --extern int h1940_led_blink_set(unsigned gpio, int state, -+extern int h1940_led_blink_set(struct gpio_desc *desc, int state, - unsigned long *delay_on, - unsigned long *delay_off); - -diff --git a/arch/arm/mach-s3c24xx/mach-h1940.c b/arch/arm/mach-s3c24xx/mach-h1940.c -index d35ddc1..d40d4f5 100644 ---- a/arch/arm/mach-s3c24xx/mach-h1940.c -+++ b/arch/arm/mach-s3c24xx/mach-h1940.c -@@ -359,10 +359,11 @@ static struct platform_device h1940_battery = { - - static DEFINE_SPINLOCK(h1940_blink_spin); - --int h1940_led_blink_set(unsigned gpio, int state, -+int h1940_led_blink_set(struct gpio_desc *desc, int state, - unsigned long *delay_on, unsigned long *delay_off) - { - int blink_gpio, check_gpio1, check_gpio2; -+ int gpio = desc ? desc_to_gpio(desc) : -EINVAL; - - switch (gpio) { - case H1940_LATCH_LED_GREEN: -diff --git a/arch/arm/mach-s3c24xx/mach-rx1950.c b/arch/arm/mach-s3c24xx/mach-rx1950.c -index c3f2682..1d35ff3 100644 ---- a/arch/arm/mach-s3c24xx/mach-rx1950.c -+++ b/arch/arm/mach-s3c24xx/mach-rx1950.c -@@ -250,9 +250,10 @@ static void rx1950_disable_charger(void) - - static DEFINE_SPINLOCK(rx1950_blink_spin); - --static int rx1950_led_blink_set(unsigned gpio, int state, -+static int rx1950_led_blink_set(struct gpio_desc *desc, int state, - unsigned long *delay_on, unsigned long *delay_off) - { -+ int gpio = desc_to_gpio(desc); - int blink_gpio, check_gpio; - - switch (gpio) { -diff --git a/arch/arm/plat-orion/gpio.c b/arch/arm/plat-orion/gpio.c -index e048f61..e53fc8d 100644 ---- a/arch/arm/plat-orion/gpio.c -+++ b/arch/arm/plat-orion/gpio.c -@@ -306,9 +306,10 @@ EXPORT_SYMBOL(orion_gpio_set_blink); - - #define ORION_BLINK_HALF_PERIOD 100 /* ms */ - --int orion_gpio_led_blink_set(unsigned gpio, int state, -+int orion_gpio_led_blink_set(struct gpio_desc *desc, int state, - unsigned long *delay_on, unsigned long *delay_off) - { -+ unsigned gpio = desc_to_gpio(desc); - - if (delay_on && delay_off && !*delay_on && !*delay_off) - *delay_on = *delay_off = ORION_BLINK_HALF_PERIOD; -diff --git a/arch/arm/plat-orion/include/plat/orion-gpio.h b/arch/arm/plat-orion/include/plat/orion-gpio.h -index e763988..e856b07 100644 ---- a/arch/arm/plat-orion/include/plat/orion-gpio.h -+++ b/arch/arm/plat-orion/include/plat/orion-gpio.h -@@ -14,12 +14,15 @@ - #include <linux/init.h> - #include <linux/types.h> - #include <linux/irqdomain.h> -+ -+struct gpio_desc; -+ - /* - * Orion-specific GPIO API extensions. - */ - void orion_gpio_set_unused(unsigned pin); - void orion_gpio_set_blink(unsigned pin, int blink); --int orion_gpio_led_blink_set(unsigned gpio, int state, -+int orion_gpio_led_blink_set(struct gpio_desc *desc, int state, - unsigned long *delay_on, unsigned long *delay_off); - - #define GPIO_INPUT_OK (1 << 0) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 9532f8d..80a82ac 100644 +index b1f9a20..d60e537 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -4,6 +4,7 @@ config ARM64 - select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE +@@ -5,6 +5,7 @@ config ARM64 + select ARCH_HAS_GCOV_PROFILE_ALL select ARCH_HAS_SG_CHAIN select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST + select ACPI_REDUCED_HARDWARE_ONLY if ACPI select ARCH_USE_CMPXCHG_LOCKREF select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_WANT_OPTIONAL_GPIOLIB -@@ -34,6 +35,7 @@ config ARM64 - select GENERIC_TIME_VSYSCALL - select HANDLE_DOMAIN_IRQ - select HARDIRQS_SW_RESEND -+ select HAVE_ALIGNED_STRUCT_PAGE if SLUB - select HAVE_ARCH_AUDITSYSCALL - select HAVE_ARCH_JUMP_LABEL - select HAVE_ARCH_KGDB -@@ -41,6 +43,7 @@ config ARM64 - select HAVE_BPF_JIT - select HAVE_C_RECORDMCOUNT - select HAVE_CC_STACKPROTECTOR -+ select HAVE_CMPXCHG_DOUBLE - select HAVE_DEBUG_BUGVERBOSE - select HAVE_DEBUG_KMEMLEAK - select HAVE_DMA_API_DEBUG -@@ -185,6 +188,9 @@ config PCI_DOMAINS_GENERIC +@@ -193,6 +194,9 @@ config PCI_DOMAINS_GENERIC config PCI_SYSCALL def_bool PCI @@ -2658,7 +463,7 @@ index 9532f8d..80a82ac 100644 source "drivers/pci/Kconfig" source "drivers/pci/pcie/Kconfig" source "drivers/pci/hotplug/Kconfig" -@@ -268,6 +274,9 @@ config SMP +@@ -384,6 +388,9 @@ config SMP If you don't know what to do here, say N. @@ -2668,25 +473,7 @@ index 9532f8d..80a82ac 100644 config SCHED_MC bool "Multi-core scheduler support" depends on SMP -@@ -401,6 +410,17 @@ config EFI - allow the kernel to be booted as an EFI application. This - is only useful on systems that have UEFI firmware. - -+config DMI -+ bool "Enable support for SMBIOS (DMI) tables" -+ depends on EFI -+ default y -+ help -+ This enables SMBIOS/DMI feature for systems. -+ -+ This option is only useful on systems that have UEFI firmware. -+ However, even with this option, the resultant kernel should -+ continue to boot on existing non-UEFI platforms. -+ - endmenu - - menu "Userspace binary formats" -@@ -454,6 +474,8 @@ source "drivers/Kconfig" +@@ -646,6 +653,8 @@ source "drivers/Kconfig" source "drivers/firmware/Kconfig" @@ -2696,7 +483,7 @@ index 9532f8d..80a82ac 100644 source "arch/arm64/kvm/Kconfig" diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile -index 20901ff..983d72a 100644 +index 1c43cec..ab3b0b1 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -49,6 +49,7 @@ core-$(CONFIG_NET) += arch/arm64/net/ @@ -2707,271 +494,6 @@ index 20901ff..983d72a 100644 libs-y := arch/arm64/lib/ $(libs-y) libs-y += $(LIBGCC) libs-$(CONFIG_EFI_STUB) += drivers/firmware/efi/libstub/ -diff --git a/arch/arm64/crypto/Kconfig b/arch/arm64/crypto/Kconfig -index 5562652..a38b02c 100644 ---- a/arch/arm64/crypto/Kconfig -+++ b/arch/arm64/crypto/Kconfig -@@ -27,20 +27,19 @@ config CRYPTO_AES_ARM64_CE - tristate "AES core cipher using ARMv8 Crypto Extensions" - depends on ARM64 && KERNEL_MODE_NEON - select CRYPTO_ALGAPI -- select CRYPTO_AES - - config CRYPTO_AES_ARM64_CE_CCM - tristate "AES in CCM mode using ARMv8 Crypto Extensions" - depends on ARM64 && KERNEL_MODE_NEON - select CRYPTO_ALGAPI -- select CRYPTO_AES -+ select CRYPTO_AES_ARM64_CE - select CRYPTO_AEAD - - config CRYPTO_AES_ARM64_CE_BLK - tristate "AES in ECB/CBC/CTR/XTS modes using ARMv8 Crypto Extensions" - depends on ARM64 && KERNEL_MODE_NEON - select CRYPTO_BLKCIPHER -- select CRYPTO_AES -+ select CRYPTO_AES_ARM64_CE - select CRYPTO_ABLK_HELPER - - config CRYPTO_AES_ARM64_NEON_BLK -diff --git a/arch/arm64/crypto/aes-ce-ccm-glue.c b/arch/arm64/crypto/aes-ce-ccm-glue.c -index 9e6cdde..0ac73b8 100644 ---- a/arch/arm64/crypto/aes-ce-ccm-glue.c -+++ b/arch/arm64/crypto/aes-ce-ccm-glue.c -@@ -16,6 +16,8 @@ - #include <linux/crypto.h> - #include <linux/module.h> - -+#include "aes-ce-setkey.h" -+ - static int num_rounds(struct crypto_aes_ctx *ctx) - { - /* -@@ -48,7 +50,7 @@ static int ccm_setkey(struct crypto_aead *tfm, const u8 *in_key, - struct crypto_aes_ctx *ctx = crypto_aead_ctx(tfm); - int ret; - -- ret = crypto_aes_expand_key(ctx, in_key, key_len); -+ ret = ce_aes_expandkey(ctx, in_key, key_len); - if (!ret) - return 0; - -diff --git a/arch/arm64/crypto/aes-ce-cipher.c b/arch/arm64/crypto/aes-ce-cipher.c -index 2075e1a..ce47792 100644 ---- a/arch/arm64/crypto/aes-ce-cipher.c -+++ b/arch/arm64/crypto/aes-ce-cipher.c -@@ -14,6 +14,8 @@ - #include <linux/crypto.h> - #include <linux/module.h> - -+#include "aes-ce-setkey.h" -+ - MODULE_DESCRIPTION("Synchronous AES cipher using ARMv8 Crypto Extensions"); - MODULE_AUTHOR("Ard Biesheuvel <ard.biesheuvel@linaro.org>"); - MODULE_LICENSE("GPL v2"); -@@ -124,6 +126,114 @@ static void aes_cipher_decrypt(struct crypto_tfm *tfm, u8 dst[], u8 const src[]) - kernel_neon_end(); - } - -+/* -+ * aes_sub() - use the aese instruction to perform the AES sbox substitution -+ * on each byte in 'input' -+ */ -+static u32 aes_sub(u32 input) -+{ -+ u32 ret; -+ -+ __asm__("dup v1.4s, %w[in] ;" -+ "movi v0.16b, #0 ;" -+ "aese v0.16b, v1.16b ;" -+ "umov %w[out], v0.4s[0] ;" -+ -+ : [out] "=r"(ret) -+ : [in] "r"(input) -+ : "v0","v1"); -+ -+ return ret; -+} -+ -+int ce_aes_expandkey(struct crypto_aes_ctx *ctx, const u8 *in_key, -+ unsigned int key_len) -+{ -+ /* -+ * The AES key schedule round constants -+ */ -+ static u8 const rcon[] = { -+ 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, -+ }; -+ -+ u32 kwords = key_len / sizeof(u32); -+ struct aes_block *key_enc, *key_dec; -+ int i, j; -+ -+ if (key_len != AES_KEYSIZE_128 && -+ key_len != AES_KEYSIZE_192 && -+ key_len != AES_KEYSIZE_256) -+ return -EINVAL; -+ -+ memcpy(ctx->key_enc, in_key, key_len); -+ ctx->key_length = key_len; -+ -+ kernel_neon_begin_partial(2); -+ for (i = 0; i < sizeof(rcon); i++) { -+ u32 *rki = ctx->key_enc + (i * kwords); -+ u32 *rko = rki + kwords; -+ -+ rko[0] = ror32(aes_sub(rki[kwords - 1]), 8) ^ rcon[i] ^ rki[0]; -+ rko[1] = rko[0] ^ rki[1]; -+ rko[2] = rko[1] ^ rki[2]; -+ rko[3] = rko[2] ^ rki[3]; -+ -+ if (key_len == AES_KEYSIZE_192) { -+ if (i >= 7) -+ break; -+ rko[4] = rko[3] ^ rki[4]; -+ rko[5] = rko[4] ^ rki[5]; -+ } else if (key_len == AES_KEYSIZE_256) { -+ if (i >= 6) -+ break; -+ rko[4] = aes_sub(rko[3]) ^ rki[4]; -+ rko[5] = rko[4] ^ rki[5]; -+ rko[6] = rko[5] ^ rki[6]; -+ rko[7] = rko[6] ^ rki[7]; -+ } -+ } -+ -+ /* -+ * Generate the decryption keys for the Equivalent Inverse Cipher. -+ * This involves reversing the order of the round keys, and applying -+ * the Inverse Mix Columns transformation on all but the first and -+ * the last one. -+ */ -+ key_enc = (struct aes_block *)ctx->key_enc; -+ key_dec = (struct aes_block *)ctx->key_dec; -+ j = num_rounds(ctx); -+ -+ key_dec[0] = key_enc[j]; -+ for (i = 1, j--; j > 0; i++, j--) -+ __asm__("ld1 {v0.16b}, %[in] ;" -+ "aesimc v1.16b, v0.16b ;" -+ "st1 {v1.16b}, %[out] ;" -+ -+ : [out] "=Q"(key_dec[i]) -+ : [in] "Q"(key_enc[j]) -+ : "v0","v1"); -+ key_dec[i] = key_enc[0]; -+ -+ kernel_neon_end(); -+ return 0; -+} -+EXPORT_SYMBOL(ce_aes_expandkey); -+ -+int ce_aes_setkey(struct crypto_tfm *tfm, const u8 *in_key, -+ unsigned int key_len) -+{ -+ struct crypto_aes_ctx *ctx = crypto_tfm_ctx(tfm); -+ int ret; -+ -+ ret = ce_aes_expandkey(ctx, in_key, key_len); -+ if (!ret) -+ return 0; -+ -+ tfm->crt_flags |= CRYPTO_TFM_RES_BAD_KEY_LEN; -+ return -EINVAL; -+} -+EXPORT_SYMBOL(ce_aes_setkey); -+ - static struct crypto_alg aes_alg = { - .cra_name = "aes", - .cra_driver_name = "aes-ce", -@@ -135,7 +245,7 @@ static struct crypto_alg aes_alg = { - .cra_cipher = { - .cia_min_keysize = AES_MIN_KEY_SIZE, - .cia_max_keysize = AES_MAX_KEY_SIZE, -- .cia_setkey = crypto_aes_set_key, -+ .cia_setkey = ce_aes_setkey, - .cia_encrypt = aes_cipher_encrypt, - .cia_decrypt = aes_cipher_decrypt - } -diff --git a/arch/arm64/crypto/aes-ce-setkey.h b/arch/arm64/crypto/aes-ce-setkey.h -new file mode 100644 -index 0000000..f08a647 ---- /dev/null -+++ b/arch/arm64/crypto/aes-ce-setkey.h -@@ -0,0 +1,5 @@ -+ -+int ce_aes_setkey(struct crypto_tfm *tfm, const u8 *in_key, -+ unsigned int key_len); -+int ce_aes_expandkey(struct crypto_aes_ctx *ctx, const u8 *in_key, -+ unsigned int key_len); -diff --git a/arch/arm64/crypto/aes-glue.c b/arch/arm64/crypto/aes-glue.c -index 79cd911..801aae3 100644 ---- a/arch/arm64/crypto/aes-glue.c -+++ b/arch/arm64/crypto/aes-glue.c -@@ -16,9 +16,13 @@ - #include <linux/module.h> - #include <linux/cpufeature.h> - -+#include "aes-ce-setkey.h" -+ - #ifdef USE_V8_CRYPTO_EXTENSIONS - #define MODE "ce" - #define PRIO 300 -+#define aes_setkey ce_aes_setkey -+#define aes_expandkey ce_aes_expandkey - #define aes_ecb_encrypt ce_aes_ecb_encrypt - #define aes_ecb_decrypt ce_aes_ecb_decrypt - #define aes_cbc_encrypt ce_aes_cbc_encrypt -@@ -30,6 +34,8 @@ MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS using ARMv8 Crypto Extensions"); - #else - #define MODE "neon" - #define PRIO 200 -+#define aes_setkey crypto_aes_set_key -+#define aes_expandkey crypto_aes_expand_key - #define aes_ecb_encrypt neon_aes_ecb_encrypt - #define aes_ecb_decrypt neon_aes_ecb_decrypt - #define aes_cbc_encrypt neon_aes_cbc_encrypt -@@ -79,10 +85,10 @@ static int xts_set_key(struct crypto_tfm *tfm, const u8 *in_key, - struct crypto_aes_xts_ctx *ctx = crypto_tfm_ctx(tfm); - int ret; - -- ret = crypto_aes_expand_key(&ctx->key1, in_key, key_len / 2); -+ ret = aes_expandkey(&ctx->key1, in_key, key_len / 2); - if (!ret) -- ret = crypto_aes_expand_key(&ctx->key2, &in_key[key_len / 2], -- key_len / 2); -+ ret = aes_expandkey(&ctx->key2, &in_key[key_len / 2], -+ key_len / 2); - if (!ret) - return 0; - -@@ -288,7 +294,7 @@ static struct crypto_alg aes_algs[] = { { - .min_keysize = AES_MIN_KEY_SIZE, - .max_keysize = AES_MAX_KEY_SIZE, - .ivsize = AES_BLOCK_SIZE, -- .setkey = crypto_aes_set_key, -+ .setkey = aes_setkey, - .encrypt = ecb_encrypt, - .decrypt = ecb_decrypt, - }, -@@ -306,7 +312,7 @@ static struct crypto_alg aes_algs[] = { { - .min_keysize = AES_MIN_KEY_SIZE, - .max_keysize = AES_MAX_KEY_SIZE, - .ivsize = AES_BLOCK_SIZE, -- .setkey = crypto_aes_set_key, -+ .setkey = aes_setkey, - .encrypt = cbc_encrypt, - .decrypt = cbc_decrypt, - }, -@@ -324,7 +330,7 @@ static struct crypto_alg aes_algs[] = { { - .min_keysize = AES_MIN_KEY_SIZE, - .max_keysize = AES_MAX_KEY_SIZE, - .ivsize = AES_BLOCK_SIZE, -- .setkey = crypto_aes_set_key, -+ .setkey = aes_setkey, - .encrypt = ctr_encrypt, - .decrypt = ctr_encrypt, - }, diff --git a/arch/arm64/include/asm/acenv.h b/arch/arm64/include/asm/acenv.h new file mode 100644 index 0000000..b49166f @@ -3104,102 +626,6 @@ index 0000000..6e692f4 +#endif /* CONFIG_ACPI */ + +#endif /*_ASM_ACPI_H*/ -diff --git a/arch/arm64/include/asm/cmpxchg.h b/arch/arm64/include/asm/cmpxchg.h -index ddb9d78..89e397b 100644 ---- a/arch/arm64/include/asm/cmpxchg.h -+++ b/arch/arm64/include/asm/cmpxchg.h -@@ -19,6 +19,7 @@ - #define __ASM_CMPXCHG_H - - #include <linux/bug.h> -+#include <linux/mmdebug.h> - - #include <asm/barrier.h> - -@@ -152,6 +153,51 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, - return oldval; - } - -+#define system_has_cmpxchg_double() 1 -+ -+static inline int __cmpxchg_double(volatile void *ptr1, volatile void *ptr2, -+ unsigned long old1, unsigned long old2, -+ unsigned long new1, unsigned long new2, int size) -+{ -+ unsigned long loop, lost; -+ -+ switch (size) { -+ case 8: -+ VM_BUG_ON((unsigned long *)ptr2 - (unsigned long *)ptr1 != 1); -+ do { -+ asm volatile("// __cmpxchg_double8\n" -+ " ldxp %0, %1, %2\n" -+ " eor %0, %0, %3\n" -+ " eor %1, %1, %4\n" -+ " orr %1, %0, %1\n" -+ " mov %w0, #0\n" -+ " cbnz %1, 1f\n" -+ " stxp %w0, %5, %6, %2\n" -+ "1:\n" -+ : "=&r"(loop), "=&r"(lost), "+Q" (*(u64 *)ptr1) -+ : "r" (old1), "r"(old2), "r"(new1), "r"(new2)); -+ } while (loop); -+ break; -+ default: -+ BUILD_BUG(); -+ } -+ -+ return !lost; -+} -+ -+static inline int __cmpxchg_double_mb(volatile void *ptr1, volatile void *ptr2, -+ unsigned long old1, unsigned long old2, -+ unsigned long new1, unsigned long new2, int size) -+{ -+ int ret; -+ -+ smp_mb(); -+ ret = __cmpxchg_double(ptr1, ptr2, old1, old2, new1, new2, size); -+ smp_mb(); -+ -+ return ret; -+} -+ - static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old, - unsigned long new, int size) - { -@@ -182,6 +228,31 @@ static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old, - __ret; \ - }) - -+#define cmpxchg_double(ptr1, ptr2, o1, o2, n1, n2) \ -+({\ -+ int __ret;\ -+ __ret = __cmpxchg_double_mb((ptr1), (ptr2), (unsigned long)(o1), \ -+ (unsigned long)(o2), (unsigned long)(n1), \ -+ (unsigned long)(n2), sizeof(*(ptr1)));\ -+ __ret; \ -+}) -+ -+#define cmpxchg_double_local(ptr1, ptr2, o1, o2, n1, n2) \ -+({\ -+ int __ret;\ -+ __ret = __cmpxchg_double((ptr1), (ptr2), (unsigned long)(o1), \ -+ (unsigned long)(o2), (unsigned long)(n1), \ -+ (unsigned long)(n2), sizeof(*(ptr1)));\ -+ __ret; \ -+}) -+ -+#define this_cpu_cmpxchg_8(ptr, o, n) \ -+ cmpxchg_local(raw_cpu_ptr(&(ptr)), o, n) -+ -+#define this_cpu_cmpxchg_double_8(ptr1, ptr2, o1, o2, n1, n2) \ -+ cmpxchg_double_local(raw_cpu_ptr(&(ptr1)), raw_cpu_ptr(&(ptr2)), \ -+ o1, o2, n1, n2) -+ - #define cmpxchg64(ptr,o,n) cmpxchg((ptr),(o),(n)) - #define cmpxchg64_local(ptr,o,n) cmpxchg_local((ptr),(o),(n)) - diff --git a/arch/arm64/include/asm/cpu_ops.h b/arch/arm64/include/asm/cpu_ops.h index 6f8e2ef..978f567 100644 --- a/arch/arm64/include/asm/cpu_ops.h @@ -3212,43 +638,6 @@ index 6f8e2ef..978f567 100644 int __init cpu_read_ops(struct device_node *dn, int cpu); void __init cpu_read_bootcpu_ops(void); -diff --git a/arch/arm64/include/asm/dmi.h b/arch/arm64/include/asm/dmi.h -new file mode 100644 -index 0000000..69d37d8 ---- /dev/null -+++ b/arch/arm64/include/asm/dmi.h -@@ -0,0 +1,31 @@ -+/* -+ * arch/arm64/include/asm/dmi.h -+ * -+ * Copyright (C) 2013 Linaro Limited. -+ * Written by: Yi Li (yi.li@linaro.org) -+ * -+ * based on arch/ia64/include/asm/dmi.h -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ */ -+ -+#ifndef __ASM_DMI_H -+#define __ASM_DMI_H -+ -+#include <linux/io.h> -+#include <linux/slab.h> -+ -+/* -+ * According to section 2.3.6 of the UEFI spec, the firmware should not -+ * request a virtual mapping for configuration tables such as SMBIOS. -+ * This means we have to map them before use. -+ */ -+#define dmi_early_remap(x, l) ioremap_cache(x, l) -+#define dmi_early_unmap(x, l) iounmap(x) -+#define dmi_remap(x, l) ioremap_cache(x, l) -+#define dmi_unmap(x) iounmap(x) -+#define dmi_alloc(l) kzalloc(l, GFP_KERNEL) -+ -+#endif diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index 1f65be3..c0f89a0 100644 --- a/arch/arm64/include/asm/elf.h @@ -3263,86 +652,6 @@ index 1f65be3..c0f89a0 100644 #define CORE_DUMP_USE_REGSET #define ELF_EXEC_PAGESIZE PAGE_SIZE -diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h -index 7fd3e27..8afb863 100644 ---- a/arch/arm64/include/asm/kvm_arm.h -+++ b/arch/arm64/include/asm/kvm_arm.h -@@ -18,6 +18,7 @@ - #ifndef __ARM64_KVM_ARM_H__ - #define __ARM64_KVM_ARM_H__ - -+#include <asm/memory.h> - #include <asm/types.h> - - /* Hyp Configuration Register (HCR) bits */ -@@ -160,9 +161,9 @@ - #endif - - #define VTTBR_BADDR_SHIFT (VTTBR_X - 1) --#define VTTBR_BADDR_MASK (((1LLU << (PHYS_MASK_SHIFT - VTTBR_X)) - 1) << VTTBR_BADDR_SHIFT) --#define VTTBR_VMID_SHIFT (48LLU) --#define VTTBR_VMID_MASK (0xffLLU << VTTBR_VMID_SHIFT) -+#define VTTBR_BADDR_MASK (((UL(1) << (PHYS_MASK_SHIFT - VTTBR_X)) - 1) << VTTBR_BADDR_SHIFT) -+#define VTTBR_VMID_SHIFT (UL(48)) -+#define VTTBR_VMID_MASK (UL(0xFF) << VTTBR_VMID_SHIFT) - - /* Hyp System Trap Register */ - #define HSTR_EL2_TTEE (1 << 16) -@@ -185,13 +186,13 @@ - - /* Exception Syndrome Register (ESR) bits */ - #define ESR_EL2_EC_SHIFT (26) --#define ESR_EL2_EC (0x3fU << ESR_EL2_EC_SHIFT) --#define ESR_EL2_IL (1U << 25) -+#define ESR_EL2_EC (UL(0x3f) << ESR_EL2_EC_SHIFT) -+#define ESR_EL2_IL (UL(1) << 25) - #define ESR_EL2_ISS (ESR_EL2_IL - 1) - #define ESR_EL2_ISV_SHIFT (24) --#define ESR_EL2_ISV (1U << ESR_EL2_ISV_SHIFT) -+#define ESR_EL2_ISV (UL(1) << ESR_EL2_ISV_SHIFT) - #define ESR_EL2_SAS_SHIFT (22) --#define ESR_EL2_SAS (3U << ESR_EL2_SAS_SHIFT) -+#define ESR_EL2_SAS (UL(3) << ESR_EL2_SAS_SHIFT) - #define ESR_EL2_SSE (1 << 21) - #define ESR_EL2_SRT_SHIFT (16) - #define ESR_EL2_SRT_MASK (0x1f << ESR_EL2_SRT_SHIFT) -@@ -205,16 +206,16 @@ - #define ESR_EL2_FSC_TYPE (0x3c) - - #define ESR_EL2_CV_SHIFT (24) --#define ESR_EL2_CV (1U << ESR_EL2_CV_SHIFT) -+#define ESR_EL2_CV (UL(1) << ESR_EL2_CV_SHIFT) - #define ESR_EL2_COND_SHIFT (20) --#define ESR_EL2_COND (0xfU << ESR_EL2_COND_SHIFT) -+#define ESR_EL2_COND (UL(0xf) << ESR_EL2_COND_SHIFT) - - - #define FSC_FAULT (0x04) - #define FSC_PERM (0x0c) - - /* Hyp Prefetch Fault Address Register (HPFAR/HDFAR) */ --#define HPFAR_MASK (~0xFUL) -+#define HPFAR_MASK (~UL(0xf)) - - #define ESR_EL2_EC_UNKNOWN (0x00) - #define ESR_EL2_EC_WFI (0x01) -diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h -index 0caf7a5..123b521 100644 ---- a/arch/arm64/include/asm/kvm_mmu.h -+++ b/arch/arm64/include/asm/kvm_mmu.h -@@ -243,9 +243,10 @@ static inline bool vcpu_has_cache_enabled(struct kvm_vcpu *vcpu) - } - - static inline void coherent_cache_guest_page(struct kvm_vcpu *vcpu, hva_t hva, -- unsigned long size) -+ unsigned long size, -+ bool ipa_uncached) - { -- if (!vcpu_has_cache_enabled(vcpu)) -+ if (!vcpu_has_cache_enabled(vcpu) || ipa_uncached) - kvm_flush_dcache_to_poc((void *)hva, size); - - if (!icache_is_aliasing()) { /* PIPT */ diff --git a/arch/arm64/include/asm/pci.h b/arch/arm64/include/asm/pci.h index 872ba93..2f287a6 100644 --- a/arch/arm64/include/asm/pci.h @@ -3447,11 +756,11 @@ index 780f82c..3411561 100644 */ asmlinkage void secondary_start_kernel(void); diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile -index 5bd029b..f4ba4fe 100644 +index eaa77ed..63ffe3c 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile -@@ -21,7 +21,8 @@ arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \ - sys_compat.o +@@ -23,7 +23,8 @@ arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \ + ../../arm/kernel/opcodes.o arm64-obj-$(CONFIG_FUNCTION_TRACER) += ftrace.o entry-ftrace.o arm64-obj-$(CONFIG_MODULES) += arm64ksyms.o module.o -arm64-obj-$(CONFIG_SMP) += smp.o smp_spin_table.o topology.o @@ -3460,14 +769,14 @@ index 5bd029b..f4ba4fe 100644 arm64-obj-$(CONFIG_PERF_EVENTS) += perf_regs.o arm64-obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o arm64-obj-$(CONFIG_HAVE_HW_BREAKPOINT) += hw_breakpoint.o -@@ -31,6 +32,7 @@ arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o +@@ -33,6 +34,7 @@ arm64-obj-$(CONFIG_JUMP_LABEL) += jump_label.o arm64-obj-$(CONFIG_KGDB) += kgdb.o arm64-obj-$(CONFIG_EFI) += efi.o efi-stub.o efi-entry.o arm64-obj-$(CONFIG_PCI) += pci.o +arm64-obj-$(CONFIG_ACPI) += acpi.o + arm64-obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o obj-y += $(arm64-obj-y) vdso/ - obj-m += $(arm64-obj-m) diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c new file mode 100644 index 0000000..06a96be @@ -3902,87 +1211,14 @@ index cce9524..1d90f31 100644 { const struct cpu_operations **ops = supported_cpu_ops; -diff --git a/arch/arm64/kernel/efi-entry.S b/arch/arm64/kernel/efi-entry.S -index d18a449..8ce9b05 100644 ---- a/arch/arm64/kernel/efi-entry.S -+++ b/arch/arm64/kernel/efi-entry.S -@@ -61,7 +61,8 @@ ENTRY(efi_stub_entry) - */ - mov x20, x0 // DTB address - ldr x0, [sp, #16] // relocated _text address -- mov x21, x0 -+ ldr x21, =stext_offset -+ add x21, x0, x21 - - /* - * Calculate size of the kernel Image (same for original and copy). diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c -index 95c49eb..f9de195 100644 +index 6fac253..f9de195 100644 --- a/arch/arm64/kernel/efi.c +++ b/arch/arm64/kernel/efi.c -@@ -11,6 +11,7 @@ - * - */ - -+#include <linux/dmi.h> - #include <linux/efi.h> - #include <linux/export.h> - #include <linux/memblock.h> -@@ -112,8 +113,6 @@ static int __init uefi_init(void) - efi.systab->hdr.revision & 0xffff, vendor); - - retval = efi_config_init(NULL); -- if (retval == 0) -- set_bit(EFI_CONFIG_TABLES, &efi.flags); - - out: - early_memunmap(efi.systab, sizeof(efi_system_table_t)); -@@ -125,17 +124,17 @@ out: - */ - static __init int is_reserve_region(efi_memory_desc_t *md) - { -- if (!is_normal_ram(md)) -+ switch (md->type) { -+ case EFI_LOADER_CODE: -+ case EFI_LOADER_DATA: -+ case EFI_BOOT_SERVICES_CODE: -+ case EFI_BOOT_SERVICES_DATA: -+ case EFI_CONVENTIONAL_MEMORY: - return 0; -- -- if (md->attribute & EFI_MEMORY_RUNTIME) -- return 1; -- -- if (md->type == EFI_ACPI_RECLAIM_MEMORY || -- md->type == EFI_RESERVED_TYPE) -- return 1; -- -- return 0; -+ default: -+ break; -+ } -+ return is_normal_ram(md); - } - - static __init void reserve_regions(void) -@@ -471,3 +470,54 @@ err_unmap: - return -1; +@@ -484,3 +484,40 @@ static int __init arm64_dmi_init(void) + return 0; } - early_initcall(arm64_enter_virtual_mode); -+ -+static int __init arm64_dmi_init(void) -+{ -+ /* -+ * On arm64, DMI depends on UEFI, and dmi_scan_machine() needs to -+ * be called early because dmi_id_init(), which is an arch_initcall -+ * itself, depends on dmi_scan_machine() having been called already. -+ */ -+ dmi_scan_machine(); -+ if (dmi_available) -+ dmi_set_dump_stack_arch_desc(); -+ return 0; -+} -+core_initcall(arm64_dmi_init); + core_initcall(arm64_dmi_init); + +/* + * If nothing else is handling pm_power_off, use EFI @@ -4020,208 +1256,6 @@ index 95c49eb..f9de195 100644 + return ret; +} +late_initcall(arm64_register_efi_restart); -diff --git a/arch/arm64/kernel/entry-ftrace.S b/arch/arm64/kernel/entry-ftrace.S -index 38e704e..08cafc5 100644 ---- a/arch/arm64/kernel/entry-ftrace.S -+++ b/arch/arm64/kernel/entry-ftrace.S -@@ -98,8 +98,8 @@ - ENTRY(_mcount) - mcount_enter - -- ldr x0, =ftrace_trace_function -- ldr x2, [x0] -+ adrp x0, ftrace_trace_function -+ ldr x2, [x0, #:lo12:ftrace_trace_function] - adr x0, ftrace_stub - cmp x0, x2 // if (ftrace_trace_function - b.eq skip_ftrace_call // != ftrace_stub) { -@@ -115,14 +115,15 @@ skip_ftrace_call: // return; - mcount_exit // return; - // } - skip_ftrace_call: -- ldr x1, =ftrace_graph_return -- ldr x2, [x1] // if ((ftrace_graph_return -- cmp x0, x2 // != ftrace_stub) -- b.ne ftrace_graph_caller -- -- ldr x1, =ftrace_graph_entry // || (ftrace_graph_entry -- ldr x2, [x1] // != ftrace_graph_entry_stub)) -- ldr x0, =ftrace_graph_entry_stub -+ adrp x1, ftrace_graph_return -+ ldr x2, [x1, #:lo12:ftrace_graph_return] -+ cmp x0, x2 // if ((ftrace_graph_return -+ b.ne ftrace_graph_caller // != ftrace_stub) -+ -+ adrp x1, ftrace_graph_entry // || (ftrace_graph_entry -+ adrp x0, ftrace_graph_entry_stub // != ftrace_graph_entry_stub)) -+ ldr x2, [x1, #:lo12:ftrace_graph_entry] -+ add x0, x0, #:lo12:ftrace_graph_entry_stub - cmp x0, x2 - b.ne ftrace_graph_caller // ftrace_graph_caller(); - -diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S -index 0a6e4f9..5a76e3a 100644 ---- a/arch/arm64/kernel/head.S -+++ b/arch/arm64/kernel/head.S -@@ -132,6 +132,8 @@ efi_head: - #endif - - #ifdef CONFIG_EFI -+ .globl stext_offset -+ .set stext_offset, stext - efi_head - .align 3 - pe_header: - .ascii "PE" -@@ -155,12 +157,12 @@ optional_header: - .long 0 // SizeOfInitializedData - .long 0 // SizeOfUninitializedData - .long efi_stub_entry - efi_head // AddressOfEntryPoint -- .long stext - efi_head // BaseOfCode -+ .long stext_offset // BaseOfCode - - extra_header_fields: - .quad 0 // ImageBase -- .long 0x20 // SectionAlignment -- .long 0x8 // FileAlignment -+ .long 0x1000 // SectionAlignment -+ .long PECOFF_FILE_ALIGNMENT // FileAlignment - .short 0 // MajorOperatingSystemVersion - .short 0 // MinorOperatingSystemVersion - .short 0 // MajorImageVersion -@@ -172,7 +174,7 @@ extra_header_fields: - .long _end - efi_head // SizeOfImage - - // Everything before the kernel image is considered part of the header -- .long stext - efi_head // SizeOfHeaders -+ .long stext_offset // SizeOfHeaders - .long 0 // CheckSum - .short 0xa // Subsystem (EFI application) - .short 0 // DllCharacteristics -@@ -217,16 +219,24 @@ section_table: - .byte 0 - .byte 0 // end of 0 padding of section name - .long _end - stext // VirtualSize -- .long stext - efi_head // VirtualAddress -+ .long stext_offset // VirtualAddress - .long _edata - stext // SizeOfRawData -- .long stext - efi_head // PointerToRawData -+ .long stext_offset // PointerToRawData - - .long 0 // PointerToRelocations (0 for executables) - .long 0 // PointerToLineNumbers (0 for executables) - .short 0 // NumberOfRelocations (0 for executables) - .short 0 // NumberOfLineNumbers (0 for executables) - .long 0xe0500020 // Characteristics (section flags) -- .align 5 -+ -+ /* -+ * EFI will load stext onwards at the 4k section alignment -+ * described in the PE/COFF header. To ensure that instruction -+ * sequences using an adrp and a :lo12: immediate will function -+ * correctly at this alignment, we must ensure that stext is -+ * placed at a 4k boundary in the Image to begin with. -+ */ -+ .align 12 - #endif - - ENTRY(stext) -diff --git a/arch/arm64/kernel/io.c b/arch/arm64/kernel/io.c -index 7d37ead..354be2a 100644 ---- a/arch/arm64/kernel/io.c -+++ b/arch/arm64/kernel/io.c -@@ -25,12 +25,26 @@ - */ - void __memcpy_fromio(void *to, const volatile void __iomem *from, size_t count) - { -- unsigned char *t = to; -- while (count) { -+ while (count && (!IS_ALIGNED((unsigned long)from, 8) || -+ !IS_ALIGNED((unsigned long)to, 8))) { -+ *(u8 *)to = __raw_readb(from); -+ from++; -+ to++; - count--; -- *t = readb(from); -- t++; -+ } -+ -+ while (count >= 8) { -+ *(u64 *)to = __raw_readq(from); -+ from += 8; -+ to += 8; -+ count -= 8; -+ } -+ -+ while (count) { -+ *(u8 *)to = __raw_readb(from); - from++; -+ to++; -+ count--; - } - } - EXPORT_SYMBOL(__memcpy_fromio); -@@ -40,12 +54,26 @@ EXPORT_SYMBOL(__memcpy_fromio); - */ - void __memcpy_toio(volatile void __iomem *to, const void *from, size_t count) - { -- const unsigned char *f = from; -- while (count) { -+ while (count && (!IS_ALIGNED((unsigned long)to, 8) || -+ !IS_ALIGNED((unsigned long)from, 8))) { -+ __raw_writeb(*(volatile u8 *)from, to); -+ from++; -+ to++; - count--; -- writeb(*f, to); -- f++; -+ } -+ -+ while (count >= 8) { -+ __raw_writeq(*(volatile u64 *)from, to); -+ from += 8; -+ to += 8; -+ count -= 8; -+ } -+ -+ while (count) { -+ __raw_writeb(*(volatile u8 *)from, to); -+ from++; - to++; -+ count--; - } - } - EXPORT_SYMBOL(__memcpy_toio); -@@ -55,10 +83,28 @@ EXPORT_SYMBOL(__memcpy_toio); - */ - void __memset_io(volatile void __iomem *dst, int c, size_t count) - { -- while (count) { -+ u64 qc = (u8)c; -+ -+ qc |= qc << 8; -+ qc |= qc << 16; -+ qc |= qc << 32; -+ -+ while (count && !IS_ALIGNED((unsigned long)dst, 8)) { -+ __raw_writeb(c, dst); -+ dst++; - count--; -- writeb(c, dst); -+ } -+ -+ while (count >= 8) { -+ __raw_writeq(qc, dst); -+ dst += 8; -+ count -= 8; -+ } -+ -+ while (count) { -+ __raw_writeb(c, dst); - dst++; -+ count--; - } - } - EXPORT_SYMBOL(__memset_io); diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c index ce5836c..978cd21 100644 --- a/arch/arm64/kernel/pci.c @@ -4351,7 +1385,7 @@ index ce5836c..978cd21 100644 + */ +fs_initcall(pcibios_assign_resources); diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c -index 663da77..2d0deda 100644 +index f1dbca7..dbb3945 100644 --- a/arch/arm64/kernel/psci.c +++ b/arch/arm64/kernel/psci.c @@ -15,6 +15,7 @@ @@ -4475,7 +1509,7 @@ index 663da77..2d0deda 100644 static int __init cpu_psci_cpu_init(struct device_node *dn, unsigned int cpu) diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c -index 2437196..914287d 100644 +index 20fe2932ad0c..cf4ab5661088 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c @@ -43,6 +43,7 @@ @@ -4486,7 +1520,7 @@ index 2437196..914287d 100644 #include <linux/personality.h> #include <asm/fixmap.h> -@@ -59,6 +60,7 @@ +@@ -61,6 +62,7 @@ #include <asm/memblock.h> #include <asm/psci.h> #include <asm/efi.h> @@ -4494,33 +1528,8 @@ index 2437196..914287d 100644 unsigned int processor_id; EXPORT_SYMBOL(processor_id); -@@ -116,12 +118,16 @@ void __init early_print(const char *str, ...) - - void __init smp_setup_processor_id(void) - { -+ u64 mpidr = read_cpuid_mpidr() & MPIDR_HWID_BITMASK; -+ cpu_logical_map(0) = mpidr; -+ - /* - * clear __my_cpu_offset on boot CPU to avoid hang caused by - * using percpu variable early, for example, lockdep will - * access percpu variable inside lock_release - */ - set_my_cpu_offset(0); -+ pr_info("Booting Linux on physical CPU 0x%lx\n", (unsigned long)mpidr); - } - - bool arch_match_cpu_phys_id(int cpu, u64 phys_id) -@@ -312,6 +318,7 @@ static void __init setup_machine_fdt(phys_addr_t dt_phys) - while (true) - cpu_relax(); - } -+ dump_stack_set_arch_desc("%s (DT)", machine_name); - } - - /* -@@ -378,6 +385,8 @@ void __init setup_arch(char **cmdline_p) - +@@ -387,6 +389,8 @@ void __init setup_arch(char **cmdline_p) + early_fixmap_init(); early_ioremap_init(); + disable_acpi(); @@ -4528,7 +1537,7 @@ index 2437196..914287d 100644 parse_early_param(); /* -@@ -389,19 +398,27 @@ void __init setup_arch(char **cmdline_p) +@@ -398,19 +402,29 @@ void __init setup_arch(char **cmdline_p) efi_init(); arm64_memblock_init(); @@ -4539,7 +1548,7 @@ index 2437196..914287d 100644 request_standard_resources(); efi_idmap_init(); - early_ioremap_reset(); + early_ioremap_reset(); - unflatten_device_tree(); - @@ -4556,14 +1565,13 @@ index 2437196..914287d 100644 + acpi_smp_init_cpus(); + } -- cpu_logical_map(0) = read_cpuid_mpidr() & MPIDR_HWID_BITMASK; -- cpu_read_bootcpu_ops(); + cpu_read_bootcpu_ops(); #ifdef CONFIG_SMP - smp_init_cpus(); smp_build_mpidr_hash(); #endif -@@ -506,3 +523,25 @@ const struct seq_operations cpuinfo_op = { +@@ -565,3 +579,25 @@ const struct seq_operations cpuinfo_op = { .stop = c_stop, .show = c_show }; @@ -4590,10 +1598,10 @@ index 2437196..914287d 100644 +} +early_initcall(arm64_console_setup); diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c -index b06d1d9..2988829 100644 +index 7ae6ee0..5aaf5a4 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c -@@ -321,7 +321,7 @@ void __init smp_prepare_boot_cpu(void) +@@ -323,7 +323,7 @@ void __init smp_prepare_boot_cpu(void) * cpu logical map array containing MPIDR values related to logical * cpus. Assumes that cpu_logical_map(0) has already been initialized. */ @@ -4743,58 +1751,6 @@ index 1a7125c..42f9195 100644 arch_timer_rate = arch_timer_get_rate(); if (!arch_timer_rate) panic("Unable to initialise architected timer.\n"); -diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S -index edf8715..4596f46 100644 ---- a/arch/arm64/kernel/vmlinux.lds.S -+++ b/arch/arm64/kernel/vmlinux.lds.S -@@ -32,6 +32,22 @@ jiffies = jiffies_64; - *(.hyp.text) \ - VMLINUX_SYMBOL(__hyp_text_end) = .; - -+/* -+ * The size of the PE/COFF section that covers the kernel image, which -+ * runs from stext to _edata, must be a round multiple of the PE/COFF -+ * FileAlignment, which we set to its minimum value of 0x200. 'stext' -+ * itself is 4 KB aligned, so padding out _edata to a 0x200 aligned -+ * boundary should be sufficient. -+ */ -+PECOFF_FILE_ALIGNMENT = 0x200; -+ -+#ifdef CONFIG_EFI -+#define PECOFF_EDATA_PADDING \ -+ .pecoff_edata_padding : { BYTE(0); . = ALIGN(PECOFF_FILE_ALIGNMENT); } -+#else -+#define PECOFF_EDATA_PADDING -+#endif -+ - SECTIONS - { - /* -@@ -103,6 +119,7 @@ SECTIONS - _data = .; - _sdata = .; - RW_DATA_SECTION(64, PAGE_SIZE, THREAD_SIZE) -+ PECOFF_EDATA_PADDING - _edata = .; - - BSS_SECTION(0, 0, 0) -diff --git a/arch/arm64/kvm/hyp.S b/arch/arm64/kvm/hyp.S -index b72aa9f..fbe909f 100644 ---- a/arch/arm64/kvm/hyp.S -+++ b/arch/arm64/kvm/hyp.S -@@ -761,10 +761,10 @@ - .macro activate_traps - ldr x2, [x0, #VCPU_HCR_EL2] - msr hcr_el2, x2 -- ldr x2, =(CPTR_EL2_TTA) -+ mov x2, #CPTR_EL2_TTA - msr cptr_el2, x2 - -- ldr x2, =(1 << 15) // Trap CP15 Cr=15 -+ mov x2, #(1 << 15) // Trap CP15 Cr=15 - msr hstr_el2, x2 - - mrs x2, mdcr_el2 diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index d920942..cf890e3 100644 --- a/arch/arm64/mm/dma-mapping.c @@ -5705,7 +2661,7 @@ index 0000000..0166475 + +#endif /* CONFIG_ACPI */ diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig -index b23fe37..555e226 100644 +index 8951cef..63aa47c 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -5,8 +5,7 @@ @@ -5736,7 +2692,7 @@ index b23fe37..555e226 100644 help This driver creates entries in /sys/bus/pci/slots/ for all PCI diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile -index c3b2fcb..5a21476 100644 +index f74317c..c346011 100644 --- a/drivers/acpi/Makefile +++ b/drivers/acpi/Makefile @@ -23,7 +23,11 @@ acpi-y += nvs.o @@ -5760,14 +2716,6 @@ index c3b2fcb..5a21476 100644 acpi-y += acpi_lpss.o acpi-y += acpi_platform.o acpi-y += acpi_pnp.o -@@ -47,6 +51,7 @@ acpi-y += int340x_thermal.o - acpi-y += power.o - acpi-y += event.o - acpi-y += sysfs.o -+acpi-y += property.o - acpi-$(CONFIG_X86) += acpi_cmos_rtc.o - acpi-$(CONFIG_DEBUG_FS) += debugfs.o - acpi-$(CONFIG_ACPI_NUMA) += numa.o diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 8b67bd0..c412fdb 100644 --- a/drivers/acpi/bus.c @@ -5783,7 +2731,7 @@ index 8b67bd0..c412fdb 100644 message = "platform specific model"; break; diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h -index 447f6d6..c5ff8ba 100644 +index 163e82f..c5ff8ba 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h @@ -26,8 +26,13 @@ @@ -5800,19 +2748,8 @@ index 447f6d6..c5ff8ba 100644 void acpi_processor_init(void); void acpi_platform_init(void); void acpi_pnp_init(void); -@@ -173,4 +178,10 @@ static inline void suspend_nvs_restore(void) {} - bool acpi_osi_is_win8(void); - #endif - -+/*-------------------------------------------------------------------------- -+ Device properties -+ -------------------------------------------------------------------------- */ -+void acpi_init_properties(struct acpi_device *adev); -+void acpi_free_properties(struct acpi_device *adev); -+ - #endif /* _ACPI_INTERNAL_H_ */ diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c -index 9964f70..5c480d5 100644 +index f9eeae8..581b9f7 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c @@ -336,11 +336,11 @@ acpi_map_lookup_virt(void __iomem *virt, acpi_size size) @@ -5831,7 +2768,7 @@ index 9964f70..5c480d5 100644 static void __iomem *acpi_map(acpi_physical_address pg_off, unsigned long pg_sz) diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c -index ef58f46..5c84e0d 100644 +index 342942f..734c029 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c @@ -64,6 +64,38 @@ static int map_lsapic_id(struct acpi_subtable_header *entry, @@ -5875,751 +2812,23 @@ index ef58f46..5c84e0d 100644 unsigned long madt_end, entry; @@ -99,6 +131,9 @@ static int map_madt_entry(int type, u32 acpi_id) } else if (header->type == ACPI_MADT_TYPE_LOCAL_SAPIC) { - if (!map_lsapic_id(header, type, acpi_id, &apic_id)) + if (!map_lsapic_id(header, type, acpi_id, &phys_id)) break; + } else if (header->type == ACPI_MADT_TYPE_GENERIC_INTERRUPT) { -+ if (!map_gicc_mpidr(header, type, acpi_id, &apic_id)) ++ if (!map_gicc_mpidr(header, type, acpi_id, &phys_id)) + break; } entry += header->length; } @@ -131,6 +166,8 @@ static int map_mat_entry(acpi_handle handle, int type, u32 acpi_id) - map_lsapic_id(header, type, acpi_id, &apic_id); - } else if (header->type == ACPI_MADT_TYPE_LOCAL_X2APIC) { - map_x2apic_id(header, type, acpi_id, &apic_id); -+ } else if (header->type == ACPI_MADT_TYPE_GENERIC_INTERRUPT) { -+ map_gicc_mpidr(header, type, acpi_id, &apic_id); - } + map_lsapic_id(header, type, acpi_id, &phys_id); + else if (header->type == ACPI_MADT_TYPE_LOCAL_X2APIC) + map_x2apic_id(header, type, acpi_id, &phys_id); ++ else if (header->type == ACPI_MADT_TYPE_GENERIC_INTERRUPT) ++ map_gicc_mpidr(header, type, acpi_id, &phys_id); exit: -diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c -new file mode 100644 -index 0000000..0d08373 ---- /dev/null -+++ b/drivers/acpi/property.c -@@ -0,0 +1,551 @@ -+/* -+ * ACPI device specific properties support. -+ * -+ * Copyright (C) 2014, Intel Corporation -+ * All rights reserved. -+ * -+ * Authors: Mika Westerberg <mika.westerberg@linux.intel.com> -+ * Darren Hart <dvhart@linux.intel.com> -+ * Rafael J. Wysocki <rafael.j.wysocki@intel.com> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ */ -+ -+#include <linux/acpi.h> -+#include <linux/device.h> -+#include <linux/export.h> -+ -+#include "internal.h" -+ -+/* ACPI _DSD device properties UUID: daffd814-6eba-4d8c-8a91-bc9bbf4aa301 */ -+static const u8 prp_uuid[16] = { -+ 0x14, 0xd8, 0xff, 0xda, 0xba, 0x6e, 0x8c, 0x4d, -+ 0x8a, 0x91, 0xbc, 0x9b, 0xbf, 0x4a, 0xa3, 0x01 -+}; -+ -+static bool acpi_property_value_ok(const union acpi_object *value) -+{ -+ int j; -+ -+ /* -+ * The value must be an integer, a string, a reference, or a package -+ * whose every element must be an integer, a string, or a reference. -+ */ -+ switch (value->type) { -+ case ACPI_TYPE_INTEGER: -+ case ACPI_TYPE_STRING: -+ case ACPI_TYPE_LOCAL_REFERENCE: -+ return true; -+ -+ case ACPI_TYPE_PACKAGE: -+ for (j = 0; j < value->package.count; j++) -+ switch (value->package.elements[j].type) { -+ case ACPI_TYPE_INTEGER: -+ case ACPI_TYPE_STRING: -+ case ACPI_TYPE_LOCAL_REFERENCE: -+ continue; -+ -+ default: -+ return false; -+ } -+ -+ return true; -+ } -+ return false; -+} -+ -+static bool acpi_properties_format_valid(const union acpi_object *properties) -+{ -+ int i; -+ -+ for (i = 0; i < properties->package.count; i++) { -+ const union acpi_object *property; -+ -+ property = &properties->package.elements[i]; -+ /* -+ * Only two elements allowed, the first one must be a string and -+ * the second one has to satisfy certain conditions. -+ */ -+ if (property->package.count != 2 -+ || property->package.elements[0].type != ACPI_TYPE_STRING -+ || !acpi_property_value_ok(&property->package.elements[1])) -+ return false; -+ } -+ return true; -+} -+ -+static void acpi_init_of_compatible(struct acpi_device *adev) -+{ -+ const union acpi_object *of_compatible; -+ struct acpi_hardware_id *hwid; -+ bool acpi_of = false; -+ int ret; -+ -+ /* -+ * Check if the special PRP0001 ACPI ID is present and in that -+ * case we fill in Device Tree compatible properties for this -+ * device. -+ */ -+ list_for_each_entry(hwid, &adev->pnp.ids, list) { -+ if (!strcmp(hwid->id, "PRP0001")) { -+ acpi_of = true; -+ break; -+ } -+ } -+ -+ if (!acpi_of) -+ return; -+ -+ ret = acpi_dev_get_property_array(adev, "compatible", ACPI_TYPE_STRING, -+ &of_compatible); -+ if (ret) { -+ ret = acpi_dev_get_property(adev, "compatible", -+ ACPI_TYPE_STRING, &of_compatible); -+ if (ret) { -+ acpi_handle_warn(adev->handle, -+ "PRP0001 requires compatible property\n"); -+ return; -+ } -+ } -+ adev->data.of_compatible = of_compatible; -+} -+ -+void acpi_init_properties(struct acpi_device *adev) -+{ -+ struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER }; -+ const union acpi_object *desc; -+ acpi_status status; -+ int i; -+ -+ status = acpi_evaluate_object_typed(adev->handle, "_DSD", NULL, &buf, -+ ACPI_TYPE_PACKAGE); -+ if (ACPI_FAILURE(status)) -+ return; -+ -+ desc = buf.pointer; -+ if (desc->package.count % 2) -+ goto fail; -+ -+ /* Look for the device properties UUID. */ -+ for (i = 0; i < desc->package.count; i += 2) { -+ const union acpi_object *uuid, *properties; -+ -+ uuid = &desc->package.elements[i]; -+ properties = &desc->package.elements[i + 1]; -+ -+ /* -+ * The first element must be a UUID and the second one must be -+ * a package. -+ */ -+ if (uuid->type != ACPI_TYPE_BUFFER || uuid->buffer.length != 16 -+ || properties->type != ACPI_TYPE_PACKAGE) -+ break; -+ -+ if (memcmp(uuid->buffer.pointer, prp_uuid, sizeof(prp_uuid))) -+ continue; -+ -+ /* -+ * We found the matching UUID. Now validate the format of the -+ * package immediately following it. -+ */ -+ if (!acpi_properties_format_valid(properties)) -+ break; -+ -+ adev->data.pointer = buf.pointer; -+ adev->data.properties = properties; -+ -+ acpi_init_of_compatible(adev); -+ return; -+ } -+ -+ fail: -+ dev_warn(&adev->dev, "Returned _DSD data is not valid, skipping\n"); -+ ACPI_FREE(buf.pointer); -+} -+ -+void acpi_free_properties(struct acpi_device *adev) -+{ -+ ACPI_FREE((void *)adev->data.pointer); -+ adev->data.of_compatible = NULL; -+ adev->data.pointer = NULL; -+ adev->data.properties = NULL; -+} -+ -+/** -+ * acpi_dev_get_property - return an ACPI property with given name -+ * @adev: ACPI device to get property -+ * @name: Name of the property -+ * @type: Expected property type -+ * @obj: Location to store the property value (if not %NULL) -+ * -+ * Look up a property with @name and store a pointer to the resulting ACPI -+ * object at the location pointed to by @obj if found. -+ * -+ * Callers must not attempt to free the returned objects. These objects will be -+ * freed by the ACPI core automatically during the removal of @adev. -+ * -+ * Return: %0 if property with @name has been found (success), -+ * %-EINVAL if the arguments are invalid, -+ * %-ENODATA if the property doesn't exist, -+ * %-EPROTO if the property value type doesn't match @type. -+ */ -+int acpi_dev_get_property(struct acpi_device *adev, const char *name, -+ acpi_object_type type, const union acpi_object **obj) -+{ -+ const union acpi_object *properties; -+ int i; -+ -+ if (!adev || !name) -+ return -EINVAL; -+ -+ if (!adev->data.pointer || !adev->data.properties) -+ return -ENODATA; -+ -+ properties = adev->data.properties; -+ for (i = 0; i < properties->package.count; i++) { -+ const union acpi_object *propname, *propvalue; -+ const union acpi_object *property; -+ -+ property = &properties->package.elements[i]; -+ -+ propname = &property->package.elements[0]; -+ propvalue = &property->package.elements[1]; -+ -+ if (!strcmp(name, propname->string.pointer)) { -+ if (type != ACPI_TYPE_ANY && propvalue->type != type) -+ return -EPROTO; -+ else if (obj) -+ *obj = propvalue; -+ -+ return 0; -+ } -+ } -+ return -ENODATA; -+} -+EXPORT_SYMBOL_GPL(acpi_dev_get_property); -+ -+/** -+ * acpi_dev_get_property_array - return an ACPI array property with given name -+ * @adev: ACPI device to get property -+ * @name: Name of the property -+ * @type: Expected type of array elements -+ * @obj: Location to store a pointer to the property value (if not NULL) -+ * -+ * Look up an array property with @name and store a pointer to the resulting -+ * ACPI object at the location pointed to by @obj if found. -+ * -+ * Callers must not attempt to free the returned objects. Those objects will be -+ * freed by the ACPI core automatically during the removal of @adev. -+ * -+ * Return: %0 if array property (package) with @name has been found (success), -+ * %-EINVAL if the arguments are invalid, -+ * %-ENODATA if the property doesn't exist, -+ * %-EPROTO if the property is not a package or the type of its elements -+ * doesn't match @type. -+ */ -+int acpi_dev_get_property_array(struct acpi_device *adev, const char *name, -+ acpi_object_type type, -+ const union acpi_object **obj) -+{ -+ const union acpi_object *prop; -+ int ret, i; -+ -+ ret = acpi_dev_get_property(adev, name, ACPI_TYPE_PACKAGE, &prop); -+ if (ret) -+ return ret; -+ -+ if (type != ACPI_TYPE_ANY) { -+ /* Check that all elements are of correct type. */ -+ for (i = 0; i < prop->package.count; i++) -+ if (prop->package.elements[i].type != type) -+ return -EPROTO; -+ } -+ if (obj) -+ *obj = prop; -+ -+ return 0; -+} -+EXPORT_SYMBOL_GPL(acpi_dev_get_property_array); -+ -+/** -+ * acpi_dev_get_property_reference - returns handle to the referenced object -+ * @adev: ACPI device to get property -+ * @name: Name of the property -+ * @index: Index of the reference to return -+ * @args: Location to store the returned reference with optional arguments -+ * -+ * Find property with @name, verifify that it is a package containing at least -+ * one object reference and if so, store the ACPI device object pointer to the -+ * target object in @args->adev. If the reference includes arguments, store -+ * them in the @args->args[] array. -+ * -+ * If there's more than one reference in the property value package, @index is -+ * used to select the one to return. -+ * -+ * Return: %0 on success, negative error code on failure. -+ */ -+int acpi_dev_get_property_reference(struct acpi_device *adev, -+ const char *name, size_t index, -+ struct acpi_reference_args *args) -+{ -+ const union acpi_object *element, *end; -+ const union acpi_object *obj; -+ struct acpi_device *device; -+ int ret, idx = 0; -+ -+ ret = acpi_dev_get_property(adev, name, ACPI_TYPE_ANY, &obj); -+ if (ret) -+ return ret; -+ -+ /* -+ * The simplest case is when the value is a single reference. Just -+ * return that reference then. -+ */ -+ if (obj->type == ACPI_TYPE_LOCAL_REFERENCE) { -+ if (index) -+ return -EINVAL; -+ -+ ret = acpi_bus_get_device(obj->reference.handle, &device); -+ if (ret) -+ return ret; -+ -+ args->adev = device; -+ args->nargs = 0; -+ return 0; -+ } -+ -+ /* -+ * If it is not a single reference, then it is a package of -+ * references followed by number of ints as follows: -+ * -+ * Package () { REF, INT, REF, INT, INT } -+ * -+ * The index argument is then used to determine which reference -+ * the caller wants (along with the arguments). -+ */ -+ if (obj->type != ACPI_TYPE_PACKAGE || index >= obj->package.count) -+ return -EPROTO; -+ -+ element = obj->package.elements; -+ end = element + obj->package.count; -+ -+ while (element < end) { -+ u32 nargs, i; -+ -+ if (element->type != ACPI_TYPE_LOCAL_REFERENCE) -+ return -EPROTO; -+ -+ ret = acpi_bus_get_device(element->reference.handle, &device); -+ if (ret) -+ return -ENODEV; -+ -+ element++; -+ nargs = 0; -+ -+ /* assume following integer elements are all args */ -+ for (i = 0; element + i < end; i++) { -+ int type = element[i].type; -+ -+ if (type == ACPI_TYPE_INTEGER) -+ nargs++; -+ else if (type == ACPI_TYPE_LOCAL_REFERENCE) -+ break; -+ else -+ return -EPROTO; -+ } -+ -+ if (idx++ == index) { -+ args->adev = device; -+ args->nargs = nargs; -+ for (i = 0; i < nargs; i++) -+ args->args[i] = element[i].integer.value; -+ -+ return 0; -+ } -+ -+ element += nargs; -+ } -+ -+ return -EPROTO; -+} -+EXPORT_SYMBOL_GPL(acpi_dev_get_property_reference); -+ -+int acpi_dev_prop_get(struct acpi_device *adev, const char *propname, -+ void **valptr) -+{ -+ return acpi_dev_get_property(adev, propname, ACPI_TYPE_ANY, -+ (const union acpi_object **)valptr); -+} -+ -+int acpi_dev_prop_read_single(struct acpi_device *adev, const char *propname, -+ enum dev_prop_type proptype, void *val) -+{ -+ const union acpi_object *obj; -+ int ret; -+ -+ if (!val) -+ return -EINVAL; -+ -+ if (proptype >= DEV_PROP_U8 && proptype <= DEV_PROP_U64) { -+ ret = acpi_dev_get_property(adev, propname, ACPI_TYPE_INTEGER, &obj); -+ if (ret) -+ return ret; -+ -+ switch (proptype) { -+ case DEV_PROP_U8: -+ if (obj->integer.value > U8_MAX) -+ return -EOVERFLOW; -+ *(u8 *)val = obj->integer.value; -+ break; -+ case DEV_PROP_U16: -+ if (obj->integer.value > U16_MAX) -+ return -EOVERFLOW; -+ *(u16 *)val = obj->integer.value; -+ break; -+ case DEV_PROP_U32: -+ if (obj->integer.value > U32_MAX) -+ return -EOVERFLOW; -+ *(u32 *)val = obj->integer.value; -+ break; -+ default: -+ *(u64 *)val = obj->integer.value; -+ break; -+ } -+ } else if (proptype == DEV_PROP_STRING) { -+ ret = acpi_dev_get_property(adev, propname, ACPI_TYPE_STRING, &obj); -+ if (ret) -+ return ret; -+ -+ *(char **)val = obj->string.pointer; -+ } else { -+ ret = -EINVAL; -+ } -+ return ret; -+} -+ -+static int acpi_copy_property_array_u8(const union acpi_object *items, u8 *val, -+ size_t nval) -+{ -+ int i; -+ -+ for (i = 0; i < nval; i++) { -+ if (items[i].type != ACPI_TYPE_INTEGER) -+ return -EPROTO; -+ if (items[i].integer.value > U8_MAX) -+ return -EOVERFLOW; -+ -+ val[i] = items[i].integer.value; -+ } -+ return 0; -+} -+ -+static int acpi_copy_property_array_u16(const union acpi_object *items, -+ u16 *val, size_t nval) -+{ -+ int i; -+ -+ for (i = 0; i < nval; i++) { -+ if (items[i].type != ACPI_TYPE_INTEGER) -+ return -EPROTO; -+ if (items[i].integer.value > U16_MAX) -+ return -EOVERFLOW; -+ -+ val[i] = items[i].integer.value; -+ } -+ return 0; -+} -+ -+static int acpi_copy_property_array_u32(const union acpi_object *items, -+ u32 *val, size_t nval) -+{ -+ int i; -+ -+ for (i = 0; i < nval; i++) { -+ if (items[i].type != ACPI_TYPE_INTEGER) -+ return -EPROTO; -+ if (items[i].integer.value > U32_MAX) -+ return -EOVERFLOW; -+ -+ val[i] = items[i].integer.value; -+ } -+ return 0; -+} -+ -+static int acpi_copy_property_array_u64(const union acpi_object *items, -+ u64 *val, size_t nval) -+{ -+ int i; -+ -+ for (i = 0; i < nval; i++) { -+ if (items[i].type != ACPI_TYPE_INTEGER) -+ return -EPROTO; -+ -+ val[i] = items[i].integer.value; -+ } -+ return 0; -+} -+ -+static int acpi_copy_property_array_string(const union acpi_object *items, -+ char **val, size_t nval) -+{ -+ int i; -+ -+ for (i = 0; i < nval; i++) { -+ if (items[i].type != ACPI_TYPE_STRING) -+ return -EPROTO; -+ -+ val[i] = items[i].string.pointer; -+ } -+ return 0; -+} -+ -+int acpi_dev_prop_read(struct acpi_device *adev, const char *propname, -+ enum dev_prop_type proptype, void *val, size_t nval) -+{ -+ const union acpi_object *obj; -+ const union acpi_object *items; -+ int ret; -+ -+ if (val && nval == 1) { -+ ret = acpi_dev_prop_read_single(adev, propname, proptype, val); -+ if (!ret) -+ return ret; -+ } -+ -+ ret = acpi_dev_get_property_array(adev, propname, ACPI_TYPE_ANY, &obj); -+ if (ret) -+ return ret; -+ -+ if (!val) -+ return obj->package.count; -+ else if (nval <= 0) -+ return -EINVAL; -+ -+ if (nval > obj->package.count) -+ return -EOVERFLOW; -+ -+ items = obj->package.elements; -+ switch (proptype) { -+ case DEV_PROP_U8: -+ ret = acpi_copy_property_array_u8(items, (u8 *)val, nval); -+ break; -+ case DEV_PROP_U16: -+ ret = acpi_copy_property_array_u16(items, (u16 *)val, nval); -+ break; -+ case DEV_PROP_U32: -+ ret = acpi_copy_property_array_u32(items, (u32 *)val, nval); -+ break; -+ case DEV_PROP_U64: -+ ret = acpi_copy_property_array_u64(items, (u64 *)val, nval); -+ break; -+ case DEV_PROP_STRING: -+ ret = acpi_copy_property_array_string(items, (char **)val, nval); -+ break; -+ default: -+ ret = -EINVAL; -+ break; -+ } -+ return ret; -+} -diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c -index 0476e90..9cb5cca 100644 ---- a/drivers/acpi/scan.c -+++ b/drivers/acpi/scan.c -@@ -124,17 +124,56 @@ static int create_modalias(struct acpi_device *acpi_dev, char *modalias, - if (list_empty(&acpi_dev->pnp.ids)) - return 0; - -- len = snprintf(modalias, size, "acpi:"); -- size -= len; -- -- list_for_each_entry(id, &acpi_dev->pnp.ids, list) { -- count = snprintf(&modalias[len], size, "%s:", id->id); -- if (count < 0) -- return -EINVAL; -- if (count >= size) -- return -ENOMEM; -- len += count; -- size -= count; -+ /* -+ * If the device has PRP0001 we expose DT compatible modalias -+ * instead in form of of:NnameTCcompatible. -+ */ -+ if (acpi_dev->data.of_compatible) { -+ struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER }; -+ const union acpi_object *of_compatible, *obj; -+ int i, nval; -+ char *c; -+ -+ acpi_get_name(acpi_dev->handle, ACPI_SINGLE_NAME, &buf); -+ /* DT strings are all in lower case */ -+ for (c = buf.pointer; *c != '\0'; c++) -+ *c = tolower(*c); -+ -+ len = snprintf(modalias, size, "of:N%sT", (char *)buf.pointer); -+ ACPI_FREE(buf.pointer); -+ -+ of_compatible = acpi_dev->data.of_compatible; -+ if (of_compatible->type == ACPI_TYPE_PACKAGE) { -+ nval = of_compatible->package.count; -+ obj = of_compatible->package.elements; -+ } else { /* Must be ACPI_TYPE_STRING. */ -+ nval = 1; -+ obj = of_compatible; -+ } -+ for (i = 0; i < nval; i++, obj++) { -+ count = snprintf(&modalias[len], size, "C%s", -+ obj->string.pointer); -+ if (count < 0) -+ return -EINVAL; -+ if (count >= size) -+ return -ENOMEM; -+ -+ len += count; -+ size -= count; -+ } -+ } else { -+ len = snprintf(modalias, size, "acpi:"); -+ size -= len; -+ -+ list_for_each_entry(id, &acpi_dev->pnp.ids, list) { -+ count = snprintf(&modalias[len], size, "%s:", id->id); -+ if (count < 0) -+ return -EINVAL; -+ if (count >= size) -+ return -ENOMEM; -+ len += count; -+ size -= count; -+ } - } - - modalias[len] = '\0'; -@@ -902,6 +941,51 @@ int acpi_match_device_ids(struct acpi_device *device, - } - EXPORT_SYMBOL(acpi_match_device_ids); - -+/* Performs match against special "PRP0001" shoehorn ACPI ID */ -+static bool acpi_of_driver_match_device(struct device *dev, -+ const struct device_driver *drv) -+{ -+ const union acpi_object *of_compatible, *obj; -+ struct acpi_device *adev; -+ int i, nval; -+ -+ adev = ACPI_COMPANION(dev); -+ if (!adev) -+ return false; -+ -+ of_compatible = adev->data.of_compatible; -+ if (!drv->of_match_table || !of_compatible) -+ return false; -+ -+ if (of_compatible->type == ACPI_TYPE_PACKAGE) { -+ nval = of_compatible->package.count; -+ obj = of_compatible->package.elements; -+ } else { /* Must be ACPI_TYPE_STRING. */ -+ nval = 1; -+ obj = of_compatible; -+ } -+ /* Now we can look for the driver DT compatible strings */ -+ for (i = 0; i < nval; i++, obj++) { -+ const struct of_device_id *id; -+ -+ for (id = drv->of_match_table; id->compatible[0]; id++) -+ if (!strcasecmp(obj->string.pointer, id->compatible)) -+ return true; -+ } -+ -+ return false; -+} -+ -+bool acpi_driver_match_device(struct device *dev, -+ const struct device_driver *drv) -+{ -+ if (!drv->acpi_match_table) -+ return acpi_of_driver_match_device(dev, drv); -+ -+ return !!acpi_match_device(drv->acpi_match_table, dev); -+} -+EXPORT_SYMBOL_GPL(acpi_driver_match_device); -+ - static void acpi_free_power_resources_lists(struct acpi_device *device) - { - int i; -@@ -922,6 +1006,7 @@ static void acpi_device_release(struct device *dev) - { - struct acpi_device *acpi_dev = to_acpi_device(dev); - -+ acpi_free_properties(acpi_dev); - acpi_free_pnp_ids(&acpi_dev->pnp); - acpi_free_power_resources_lists(acpi_dev); - kfree(acpi_dev); -@@ -1304,6 +1389,26 @@ int acpi_device_add(struct acpi_device *device, - return result; - } - -+struct acpi_device *acpi_get_next_child(struct device *dev, -+ struct acpi_device *child) -+{ -+ struct acpi_device *adev = ACPI_COMPANION(dev); -+ struct list_head *head, *next; -+ -+ if (!adev) -+ return NULL; -+ -+ head = &adev->children; -+ if (list_empty(head)) -+ return NULL; -+ -+ if (!child) -+ return list_first_entry(head, struct acpi_device, node); -+ -+ next = child->node.next; -+ return next == head ? NULL : list_entry(next, struct acpi_device, node); -+} -+ - /* -------------------------------------------------------------------------- - Driver Management - -------------------------------------------------------------------------- */ -@@ -1923,9 +2028,11 @@ void acpi_init_device_object(struct acpi_device *device, acpi_handle handle, - device->device_type = type; - device->handle = handle; - device->parent = acpi_bus_get_parent(handle); -+ device->fwnode.type = FWNODE_ACPI; - acpi_set_device_status(device, sta); - acpi_device_get_busid(device); - acpi_set_pnp_ids(handle, &device->pnp, type); -+ acpi_init_properties(device); - acpi_bus_get_flags(device); - device->flags.match_driver = false; - device->flags.initialized = true; + kfree(buffer.pointer); diff --git a/drivers/acpi/sleep-arm.c b/drivers/acpi/sleep-arm.c new file mode 100644 index 0000000..54578ef @@ -6655,7 +2864,7 @@ index 0000000..54578ef + return -ENOSYS; +} diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c -index 6d5a6cd..47f36d4 100644 +index 93b8152..122b48f 100644 --- a/drivers/acpi/tables.c +++ b/drivers/acpi/tables.c @@ -183,6 +183,49 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header) @@ -6708,74 +2917,17 @@ index 6d5a6cd..47f36d4 100644 default: pr_warn("Found unsupported MADT entry (type = 0x%x)\n", header->type); -@@ -192,17 +235,14 @@ void acpi_table_print_madt_entry(struct acpi_subtable_header *header) - - - int __init --acpi_table_parse_entries(char *id, -- unsigned long table_size, -- int entry_id, -- acpi_tbl_entry_handler handler, -- unsigned int max_entries) -+acpi_parse_entries(unsigned long table_size, -+ acpi_tbl_entry_handler handler, -+ struct acpi_table_header *table_header, -+ int entry_id, unsigned int max_entries) - { -- struct acpi_table_header *table_header = NULL; - struct acpi_subtable_header *entry; -- unsigned int count = 0; -+ int count = 0; - unsigned long table_end; -- acpi_size tbl_size; - - if (acpi_disabled) - return -ENODEV; -@@ -210,13 +250,11 @@ acpi_table_parse_entries(char *id, - if (!handler) +@@ -210,7 +253,7 @@ acpi_parse_entries(char *id, unsigned long table_size, return -EINVAL; -- if (strncmp(id, ACPI_SIG_MADT, 4) == 0) -- acpi_get_table_with_size(id, acpi_apic_instance, &table_header, &tbl_size); -- else -- acpi_get_table_with_size(id, 0, &table_header, &tbl_size); -+ if (!table_size) -+ return -EINVAL; - if (!table_header) { - pr_warn("%4.4s not present\n", id); + pr_warn("Table header not present\n"); return -ENODEV; } -@@ -230,32 +268,67 @@ acpi_table_parse_entries(char *id, - while (((unsigned long)entry) + sizeof(struct acpi_subtable_header) < - table_end) { - if (entry->type == entry_id -- && (!max_entries || count++ < max_entries)) -+ && (!max_entries || count < max_entries)) { - if (handler(entry, table_end)) -- goto err; -+ return -EINVAL; -+ -+ count++; -+ } - - /* - * If entry->length is 0, break from this loop to avoid - * infinite loop. - */ - if (entry->length == 0) { -- pr_err("[%4.4s:0x%02x] Invalid zero length\n", id, entry_id); -- goto err; -+ pr_err("[0x%02x] Invalid zero length\n", entry_id); -+ return -EINVAL; - } +@@ -246,7 +289,8 @@ acpi_parse_entries(char *id, unsigned long table_size, - entry = (struct acpi_subtable_header *) - ((unsigned long)entry + entry->length); - } -+ if (max_entries && count > max_entries) { pr_warn("[%4.4s:0x%02x] ignored %i entries of %i found\n", - id, entry_id, count - max_entries, count); @@ -6783,52 +2935,12 @@ index 6d5a6cd..47f36d4 100644 + count); } -- early_acpi_os_unmap_memory((char *)table_header, tbl_size); return count; --err: -+} -+ -+int __init -+acpi_table_parse_entries(char *id, -+ unsigned long table_size, -+ int entry_id, -+ acpi_tbl_entry_handler handler, -+ unsigned int max_entries) -+{ -+ struct acpi_table_header *table_header = NULL; -+ acpi_size tbl_size; -+ int count; -+ -+ if (acpi_disabled) -+ return -ENODEV; -+ -+ if (!handler) -+ return -EINVAL; -+ -+ if (strncmp(id, ACPI_SIG_MADT, 4) == 0) -+ acpi_get_table_with_size(id, acpi_apic_instance, &table_header, &tbl_size); -+ else -+ acpi_get_table_with_size(id, 0, &table_header, &tbl_size); -+ -+ if (!table_header) { -+ pr_warn("%4.4s not present\n", id); -+ return -ENODEV; -+ } -+ -+ count = acpi_parse_entries(table_size, handler, table_header, -+ entry_id, max_entries); -+ - early_acpi_os_unmap_memory((char *)table_header, tbl_size); -- return -EINVAL; -+ return count; - } - - int __init diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c -index 371ac12..af325a7 100644 +index cd49a39..7f68f96 100644 --- a/drivers/acpi/utils.c +++ b/drivers/acpi/utils.c -@@ -723,3 +723,29 @@ bool acpi_check_dsm(acpi_handle handle, const u8 *uuid, int rev, u64 funcs) +@@ -712,3 +712,29 @@ bool acpi_check_dsm(acpi_handle handle, const u8 *uuid, int rev, u64 funcs) return false; } EXPORT_SYMBOL(acpi_check_dsm); @@ -6859,7 +2971,7 @@ index 371ac12..af325a7 100644 +} +EXPORT_SYMBOL(acpi_check_coherency); diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig -index cd4cccb..edb00c6 100644 +index a3a1360..edca892 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig @@ -48,7 +48,7 @@ config ATA_VERBOSE_ERROR @@ -6872,7 +2984,7 @@ index cd4cccb..edb00c6 100644 help This option adds support for ATA-related ACPI objects. diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c -index 06f1d59..df2ea85 100644 +index 18d5398..999e577 100644 --- a/drivers/ata/ahci_platform.c +++ b/drivers/ata/ahci_platform.c @@ -20,6 +20,9 @@ @@ -6885,7 +2997,7 @@ index 06f1d59..df2ea85 100644 #include "ahci.h" static const struct ata_port_info ahci_port_info = { -@@ -71,6 +74,13 @@ static const struct of_device_id ahci_of_match[] = { +@@ -71,12 +74,22 @@ static const struct of_device_id ahci_of_match[] = { }; MODULE_DEVICE_TABLE(of, ahci_of_match); @@ -6899,9 +3011,8 @@ index 06f1d59..df2ea85 100644 static struct platform_driver ahci_driver = { .probe = ahci_probe, .remove = ata_platform_remove_one, -@@ -78,6 +88,9 @@ static struct platform_driver ahci_driver = { + .driver = { .name = "ahci", - .owner = THIS_MODULE, .of_match_table = ahci_of_match, +#ifdef CONFIG_ATA_ACPI + .acpi_match_table = ACPI_PTR(ahci_acpi_match), @@ -6910,7 +3021,7 @@ index 06f1d59..df2ea85 100644 }, }; diff --git a/drivers/ata/ahci_xgene.c b/drivers/ata/ahci_xgene.c -index 0f8538f..2d8103a 100644 +index feeb8f1..8f82267 100644 --- a/drivers/ata/ahci_xgene.c +++ b/drivers/ata/ahci_xgene.c @@ -28,6 +28,7 @@ @@ -6921,16 +3032,6 @@ index 0f8538f..2d8103a 100644 #include "ahci.h" /* Max # of disk per a controller */ -@@ -137,7 +138,8 @@ static unsigned int xgene_ahci_qc_issue(struct ata_queued_cmd *qc) - struct xgene_ahci_context *ctx = hpriv->plat_data; - int rc = 0; - -- if (unlikely(ctx->last_cmd[ap->port_no] == ATA_CMD_ID_ATA)) -+ if (unlikely(ctx->last_cmd[ap->port_no] == ATA_CMD_ID_ATA || -+ ctx->last_cmd[ap->port_no] == ATA_CMD_SMART)) - xgene_ahci_restart_engine(ap); - - rc = ahci_qc_issue(qc); @@ -148,14 +150,6 @@ static unsigned int xgene_ahci_qc_issue(struct ata_queued_cmd *qc) return rc; } @@ -6984,466 +3085,16 @@ index 0f8538f..2d8103a 100644 static const struct of_device_id xgene_ahci_of_match[] = { {.compatible = "apm,xgene-ahci"}, {}, -@@ -546,6 +545,7 @@ static struct platform_driver xgene_ahci_driver = { +@@ -545,6 +544,7 @@ static struct platform_driver xgene_ahci_driver = { + .driver = { .name = "xgene-ahci", - .owner = THIS_MODULE, .of_match_table = xgene_ahci_of_match, + .acpi_match_table = ACPI_PTR(xgene_ahci_acpi_match), }, }; -diff --git a/drivers/base/Makefile b/drivers/base/Makefile -index 6922cd6..53c3fe1 100644 ---- a/drivers/base/Makefile -+++ b/drivers/base/Makefile -@@ -4,7 +4,7 @@ obj-y := component.o core.o bus.o dd.o syscore.o \ - driver.o class.o platform.o \ - cpu.o firmware.o init.o map.o devres.o \ - attribute_container.o transport_class.o \ -- topology.o container.o -+ topology.o container.o property.o - obj-$(CONFIG_DEVTMPFS) += devtmpfs.o - obj-$(CONFIG_DMA_CMA) += dma-contiguous.o - obj-y += power/ -diff --git a/drivers/base/property.c b/drivers/base/property.c -new file mode 100644 -index 0000000..c458458 ---- /dev/null -+++ b/drivers/base/property.c -@@ -0,0 +1,431 @@ -+/* -+ * property.c - Unified device property interface. -+ * -+ * Copyright (C) 2014, Intel Corporation -+ * Authors: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -+ * Mika Westerberg <mika.westerberg@linux.intel.com> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ */ -+ -+#include <linux/property.h> -+#include <linux/export.h> -+#include <linux/acpi.h> -+#include <linux/of.h> -+ -+/** -+ * device_property_present - check if a property of a device is present -+ * @dev: Device whose property is being checked -+ * @propname: Name of the property -+ * -+ * Check if property @propname is present in the device firmware description. -+ */ -+bool device_property_present(struct device *dev, const char *propname) -+{ -+ if (IS_ENABLED(CONFIG_OF) && dev->of_node) -+ return of_property_read_bool(dev->of_node, propname); -+ -+ return !acpi_dev_prop_get(ACPI_COMPANION(dev), propname, NULL); -+} -+EXPORT_SYMBOL_GPL(device_property_present); -+ -+/** -+ * fwnode_property_present - check if a property of a firmware node is present -+ * @fwnode: Firmware node whose property to check -+ * @propname: Name of the property -+ */ -+bool fwnode_property_present(struct fwnode_handle *fwnode, const char *propname) -+{ -+ if (is_of_node(fwnode)) -+ return of_property_read_bool(of_node(fwnode), propname); -+ else if (is_acpi_node(fwnode)) -+ return !acpi_dev_prop_get(acpi_node(fwnode), propname, NULL); -+ -+ return false; -+} -+EXPORT_SYMBOL_GPL(fwnode_property_present); -+ -+#define OF_DEV_PROP_READ_ARRAY(node, propname, type, val, nval) \ -+ (val) ? of_property_read_##type##_array((node), (propname), (val), (nval)) \ -+ : of_property_count_elems_of_size((node), (propname), sizeof(type)) -+ -+#define DEV_PROP_READ_ARRAY(_dev_, _propname_, _type_, _proptype_, _val_, _nval_) \ -+ IS_ENABLED(CONFIG_OF) && _dev_->of_node ? \ -+ (OF_DEV_PROP_READ_ARRAY(_dev_->of_node, _propname_, _type_, \ -+ _val_, _nval_)) : \ -+ acpi_dev_prop_read(ACPI_COMPANION(_dev_), _propname_, \ -+ _proptype_, _val_, _nval_) -+ -+/** -+ * device_property_read_u8_array - return a u8 array property of a device -+ * @dev: Device to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Function reads an array of u8 properties with @propname from the device -+ * firmware description and stores them to @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of numbers, -+ * %-EOVERFLOW if the size of the property is not as expected. -+ */ -+int device_property_read_u8_array(struct device *dev, const char *propname, -+ u8 *val, size_t nval) -+{ -+ return DEV_PROP_READ_ARRAY(dev, propname, u8, DEV_PROP_U8, val, nval); -+} -+EXPORT_SYMBOL_GPL(device_property_read_u8_array); -+ -+/** -+ * device_property_read_u16_array - return a u16 array property of a device -+ * @dev: Device to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Function reads an array of u16 properties with @propname from the device -+ * firmware description and stores them to @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of numbers, -+ * %-EOVERFLOW if the size of the property is not as expected. -+ */ -+int device_property_read_u16_array(struct device *dev, const char *propname, -+ u16 *val, size_t nval) -+{ -+ return DEV_PROP_READ_ARRAY(dev, propname, u16, DEV_PROP_U16, val, nval); -+} -+EXPORT_SYMBOL_GPL(device_property_read_u16_array); -+ -+/** -+ * device_property_read_u32_array - return a u32 array property of a device -+ * @dev: Device to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Function reads an array of u32 properties with @propname from the device -+ * firmware description and stores them to @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of numbers, -+ * %-EOVERFLOW if the size of the property is not as expected. -+ */ -+int device_property_read_u32_array(struct device *dev, const char *propname, -+ u32 *val, size_t nval) -+{ -+ return DEV_PROP_READ_ARRAY(dev, propname, u32, DEV_PROP_U32, val, nval); -+} -+EXPORT_SYMBOL_GPL(device_property_read_u32_array); -+ -+/** -+ * device_property_read_u64_array - return a u64 array property of a device -+ * @dev: Device to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Function reads an array of u64 properties with @propname from the device -+ * firmware description and stores them to @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of numbers, -+ * %-EOVERFLOW if the size of the property is not as expected. -+ */ -+int device_property_read_u64_array(struct device *dev, const char *propname, -+ u64 *val, size_t nval) -+{ -+ return DEV_PROP_READ_ARRAY(dev, propname, u64, DEV_PROP_U64, val, nval); -+} -+EXPORT_SYMBOL_GPL(device_property_read_u64_array); -+ -+/** -+ * device_property_read_string_array - return a string array property of device -+ * @dev: Device to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Function reads an array of string properties with @propname from the device -+ * firmware description and stores them to @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO or %-EILSEQ if the property is not an array of strings, -+ * %-EOVERFLOW if the size of the property is not as expected. -+ */ -+int device_property_read_string_array(struct device *dev, const char *propname, -+ const char **val, size_t nval) -+{ -+ return IS_ENABLED(CONFIG_OF) && dev->of_node ? -+ of_property_read_string_array(dev->of_node, propname, val, nval) : -+ acpi_dev_prop_read(ACPI_COMPANION(dev), propname, -+ DEV_PROP_STRING, val, nval); -+} -+EXPORT_SYMBOL_GPL(device_property_read_string_array); -+ -+/** -+ * device_property_read_string - return a string property of a device -+ * @dev: Device to get the property of -+ * @propname: Name of the property -+ * @val: The value is stored here -+ * -+ * Function reads property @propname from the device firmware description and -+ * stores the value into @val if found. The value is checked to be a string. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO or %-EILSEQ if the property type is not a string. -+ */ -+int device_property_read_string(struct device *dev, const char *propname, -+ const char **val) -+{ -+ return IS_ENABLED(CONFIG_OF) && dev->of_node ? -+ of_property_read_string(dev->of_node, propname, val) : -+ acpi_dev_prop_read(ACPI_COMPANION(dev), propname, -+ DEV_PROP_STRING, val, 1); -+} -+EXPORT_SYMBOL_GPL(device_property_read_string); -+ -+#define FWNODE_PROP_READ_ARRAY(_fwnode_, _propname_, _type_, _proptype_, _val_, _nval_) \ -+({ \ -+ int _ret_; \ -+ if (is_of_node(_fwnode_)) \ -+ _ret_ = OF_DEV_PROP_READ_ARRAY(of_node(_fwnode_), _propname_, \ -+ _type_, _val_, _nval_); \ -+ else if (is_acpi_node(_fwnode_)) \ -+ _ret_ = acpi_dev_prop_read(acpi_node(_fwnode_), _propname_, \ -+ _proptype_, _val_, _nval_); \ -+ else \ -+ _ret_ = -ENXIO; \ -+ _ret_; \ -+}) -+ -+/** -+ * fwnode_property_read_u8_array - return a u8 array property of firmware node -+ * @fwnode: Firmware node to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Read an array of u8 properties with @propname from @fwnode and stores them to -+ * @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of numbers, -+ * %-EOVERFLOW if the size of the property is not as expected, -+ * %-ENXIO if no suitable firmware interface is present. -+ */ -+int fwnode_property_read_u8_array(struct fwnode_handle *fwnode, -+ const char *propname, u8 *val, size_t nval) -+{ -+ return FWNODE_PROP_READ_ARRAY(fwnode, propname, u8, DEV_PROP_U8, -+ val, nval); -+} -+EXPORT_SYMBOL_GPL(fwnode_property_read_u8_array); -+ -+/** -+ * fwnode_property_read_u16_array - return a u16 array property of firmware node -+ * @fwnode: Firmware node to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Read an array of u16 properties with @propname from @fwnode and store them to -+ * @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of numbers, -+ * %-EOVERFLOW if the size of the property is not as expected, -+ * %-ENXIO if no suitable firmware interface is present. -+ */ -+int fwnode_property_read_u16_array(struct fwnode_handle *fwnode, -+ const char *propname, u16 *val, size_t nval) -+{ -+ return FWNODE_PROP_READ_ARRAY(fwnode, propname, u16, DEV_PROP_U16, -+ val, nval); -+} -+EXPORT_SYMBOL_GPL(fwnode_property_read_u16_array); -+ -+/** -+ * fwnode_property_read_u32_array - return a u32 array property of firmware node -+ * @fwnode: Firmware node to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Read an array of u32 properties with @propname from @fwnode store them to -+ * @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of numbers, -+ * %-EOVERFLOW if the size of the property is not as expected, -+ * %-ENXIO if no suitable firmware interface is present. -+ */ -+int fwnode_property_read_u32_array(struct fwnode_handle *fwnode, -+ const char *propname, u32 *val, size_t nval) -+{ -+ return FWNODE_PROP_READ_ARRAY(fwnode, propname, u32, DEV_PROP_U32, -+ val, nval); -+} -+EXPORT_SYMBOL_GPL(fwnode_property_read_u32_array); -+ -+/** -+ * fwnode_property_read_u64_array - return a u64 array property firmware node -+ * @fwnode: Firmware node to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Read an array of u64 properties with @propname from @fwnode and store them to -+ * @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of numbers, -+ * %-EOVERFLOW if the size of the property is not as expected, -+ * %-ENXIO if no suitable firmware interface is present. -+ */ -+int fwnode_property_read_u64_array(struct fwnode_handle *fwnode, -+ const char *propname, u64 *val, size_t nval) -+{ -+ return FWNODE_PROP_READ_ARRAY(fwnode, propname, u64, DEV_PROP_U64, -+ val, nval); -+} -+EXPORT_SYMBOL_GPL(fwnode_property_read_u64_array); -+ -+/** -+ * fwnode_property_read_string_array - return string array property of a node -+ * @fwnode: Firmware node to get the property of -+ * @propname: Name of the property -+ * @val: The values are stored here -+ * @nval: Size of the @val array -+ * -+ * Read an string list property @propname from the given firmware node and store -+ * them to @val if found. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO if the property is not an array of strings, -+ * %-EOVERFLOW if the size of the property is not as expected, -+ * %-ENXIO if no suitable firmware interface is present. -+ */ -+int fwnode_property_read_string_array(struct fwnode_handle *fwnode, -+ const char *propname, const char **val, -+ size_t nval) -+{ -+ if (is_of_node(fwnode)) -+ return of_property_read_string_array(of_node(fwnode), propname, -+ val, nval); -+ else if (is_acpi_node(fwnode)) -+ return acpi_dev_prop_read(acpi_node(fwnode), propname, -+ DEV_PROP_STRING, val, nval); -+ -+ return -ENXIO; -+} -+EXPORT_SYMBOL_GPL(fwnode_property_read_string_array); -+ -+/** -+ * fwnode_property_read_string - return a string property of a firmware node -+ * @fwnode: Firmware node to get the property of -+ * @propname: Name of the property -+ * @val: The value is stored here -+ * -+ * Read property @propname from the given firmware node and store the value into -+ * @val if found. The value is checked to be a string. -+ * -+ * Return: %0 if the property was found (success), -+ * %-EINVAL if given arguments are not valid, -+ * %-ENODATA if the property does not have a value, -+ * %-EPROTO or %-EILSEQ if the property is not a string, -+ * %-ENXIO if no suitable firmware interface is present. -+ */ -+int fwnode_property_read_string(struct fwnode_handle *fwnode, -+ const char *propname, const char **val) -+{ -+ if (is_of_node(fwnode)) -+ return of_property_read_string(of_node(fwnode),propname, val); -+ else if (is_acpi_node(fwnode)) -+ return acpi_dev_prop_read(acpi_node(fwnode), propname, -+ DEV_PROP_STRING, val, 1); -+ -+ return -ENXIO; -+} -+EXPORT_SYMBOL_GPL(fwnode_property_read_string); -+ -+/** -+ * device_get_next_child_node - Return the next child node handle for a device -+ * @dev: Device to find the next child node for. -+ * @child: Handle to one of the device's child nodes or a null handle. -+ */ -+struct fwnode_handle *device_get_next_child_node(struct device *dev, -+ struct fwnode_handle *child) -+{ -+ if (IS_ENABLED(CONFIG_OF) && dev->of_node) { -+ struct device_node *node; -+ -+ node = of_get_next_available_child(dev->of_node, of_node(child)); -+ if (node) -+ return &node->fwnode; -+ } else if (IS_ENABLED(CONFIG_ACPI)) { -+ struct acpi_device *node; -+ -+ node = acpi_get_next_child(dev, acpi_node(child)); -+ if (node) -+ return acpi_fwnode_handle(node); -+ } -+ return NULL; -+} -+EXPORT_SYMBOL_GPL(device_get_next_child_node); -+ -+/** -+ * fwnode_handle_put - Drop reference to a device node -+ * @fwnode: Pointer to the device node to drop the reference to. -+ * -+ * This has to be used when terminating device_for_each_child_node() iteration -+ * with break or return to prevent stale device node references from being left -+ * behind. -+ */ -+void fwnode_handle_put(struct fwnode_handle *fwnode) -+{ -+ if (is_of_node(fwnode)) -+ of_node_put(of_node(fwnode)); -+} -+EXPORT_SYMBOL_GPL(fwnode_handle_put); -+ -+/** -+ * device_get_child_node_count - return the number of child nodes for device -+ * @dev: Device to cound the child nodes for -+ */ -+unsigned int device_get_child_node_count(struct device *dev) -+{ -+ struct fwnode_handle *child; -+ unsigned int count = 0; -+ -+ device_for_each_child_node(dev, child) -+ count++; -+ -+ return count; -+} -+EXPORT_SYMBOL_GPL(device_get_child_node_count); diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c -index 43005d4..c9411e6 100644 +index 095c177..fd5ebbf 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -21,6 +21,7 @@ @@ -7479,7 +3130,7 @@ index 43005d4..c9411e6 100644 if (cntbase) arch_timer_rate = readl_relaxed(cntbase + CNTFRQ); else -@@ -687,20 +693,8 @@ static void __init arch_timer_common_init(void) +@@ -690,28 +696,8 @@ static void __init arch_timer_common_init(void) arch_timer_arch_init(); } @@ -7498,10 +3149,18 @@ index 43005d4..c9411e6 100644 - arch_timer_ppi[i] = irq_of_parse_and_map(np, i); - arch_timer_detect_rate(NULL, np); - +- /* +- * If we cannot rely on firmware initializing the timer registers then +- * we should use the physical timers instead. +- */ +- if (IS_ENABLED(CONFIG_ARM) && +- of_property_read_bool(np, "arm,cpu-registers-not-fw-configured")) +- arch_timer_use_virtual = false; +- /* * If HYP mode is available, we know that the physical timer * has been configured to be accessible from PL1. Use it, so -@@ -719,13 +713,31 @@ static void __init arch_timer_init(struct device_node *np) +@@ -730,13 +716,39 @@ static void __init arch_timer_init(struct device_node *np) } } @@ -7517,6 +3176,14 @@ index 43005d4..c9411e6 100644 +{ + int i; + ++ /* ++ * If we cannot rely on firmware initializing the timer registers then ++ * we should use the physical timers instead. ++ */ ++ if (IS_ENABLED(CONFIG_ARM) && ++ of_property_read_bool(np, "arm,cpu-registers-not-fw-configured")) ++ arch_timer_use_virtual = false; ++ + if (arch_timers_present & ARCH_CP15_TIMER) { + pr_warn("arch_timer: multiple nodes in dt, skipping\n"); + return; @@ -7537,7 +3204,7 @@ index 43005d4..c9411e6 100644 static void __init arch_timer_mem_init(struct device_node *np) { -@@ -792,3 +804,71 @@ static void __init arch_timer_mem_init(struct device_node *np) +@@ -803,3 +815,71 @@ static void __init arch_timer_mem_init(struct device_node *np) } CLOCKSOURCE_OF_DECLARE(armv7_arch_timer_mem, "arm,armv7-timer-mem", arch_timer_mem_init); @@ -7609,1163 +3276,23 @@ index 43005d4..c9411e6 100644 + acpi_table_parse(ACPI_SIG_GTDT, arch_timer_acpi_init); +} +#endif -diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c -index 17afc51..c5f7b4e 100644 ---- a/drivers/firmware/dmi_scan.c -+++ b/drivers/firmware/dmi_scan.c -@@ -93,6 +93,12 @@ static void dmi_table(u8 *buf, int len, int num, - const struct dmi_header *dm = (const struct dmi_header *)data; - - /* -+ * 7.45 End-of-Table (Type 127) [SMBIOS reference spec v3.0.0] -+ */ -+ if (dm->type == DMI_ENTRY_END_OF_TABLE) -+ break; -+ -+ /* - * We want to know the total length (formatted area and - * strings) before decoding to make sure we won't run off the - * table in dmi_decode or dmi_string -@@ -107,7 +113,7 @@ static void dmi_table(u8 *buf, int len, int num, - } - } - --static u32 dmi_base; -+static phys_addr_t dmi_base; - static u16 dmi_len; - static u16 dmi_num; - -@@ -467,7 +473,7 @@ static int __init dmi_present(const u8 *buf) - - if (memcmp(buf, "_SM_", 4) == 0 && - buf[5] < 32 && dmi_checksum(buf, buf[5])) { -- smbios_ver = (buf[6] << 8) + buf[7]; -+ smbios_ver = get_unaligned_be16(buf + 6); - - /* Some BIOS report weird SMBIOS version, fix that up */ - switch (smbios_ver) { -@@ -489,10 +495,9 @@ static int __init dmi_present(const u8 *buf) - buf += 16; - - if (memcmp(buf, "_DMI_", 5) == 0 && dmi_checksum(buf, 15)) { -- dmi_num = (buf[13] << 8) | buf[12]; -- dmi_len = (buf[7] << 8) | buf[6]; -- dmi_base = (buf[11] << 24) | (buf[10] << 16) | -- (buf[9] << 8) | buf[8]; -+ dmi_num = get_unaligned_le16(buf + 12); -+ dmi_len = get_unaligned_le16(buf + 6); -+ dmi_base = get_unaligned_le32(buf + 8); - - if (dmi_walk_early(dmi_decode) == 0) { - if (smbios_ver) { -@@ -514,12 +519,72 @@ static int __init dmi_present(const u8 *buf) - return 1; - } - -+/* -+ * Check for the SMBIOS 3.0 64-bit entry point signature. Unlike the legacy -+ * 32-bit entry point, there is no embedded DMI header (_DMI_) in here. -+ */ -+static int __init dmi_smbios3_present(const u8 *buf) -+{ -+ if (memcmp(buf, "_SM3_", 5) == 0 && -+ buf[6] < 32 && dmi_checksum(buf, buf[6])) { -+ dmi_ver = get_unaligned_be16(buf + 7); -+ dmi_len = get_unaligned_le32(buf + 12); -+ dmi_base = get_unaligned_le64(buf + 16); -+ -+ /* -+ * The 64-bit SMBIOS 3.0 entry point no longer has a field -+ * containing the number of structures present in the table. -+ * Instead, it defines the table size as a maximum size, and -+ * relies on the end-of-table structure type (#127) to be used -+ * to signal the end of the table. -+ * So let's define dmi_num as an upper bound as well: each -+ * structure has a 4 byte header, so dmi_len / 4 is an upper -+ * bound for the number of structures in the table. -+ */ -+ dmi_num = dmi_len / 4; -+ -+ if (dmi_walk_early(dmi_decode) == 0) { -+ pr_info("SMBIOS %d.%d present.\n", -+ dmi_ver >> 8, dmi_ver & 0xFF); -+ dmi_format_ids(dmi_ids_string, sizeof(dmi_ids_string)); -+ pr_debug("DMI: %s\n", dmi_ids_string); -+ return 0; -+ } -+ } -+ return 1; -+} -+ - void __init dmi_scan_machine(void) - { - char __iomem *p, *q; - char buf[32]; - - if (efi_enabled(EFI_CONFIG_TABLES)) { -+ /* -+ * According to the DMTF SMBIOS reference spec v3.0.0, it is -+ * allowed to define both the 64-bit entry point (smbios3) and -+ * the 32-bit entry point (smbios), in which case they should -+ * either both point to the same SMBIOS structure table, or the -+ * table pointed to by the 64-bit entry point should contain a -+ * superset of the table contents pointed to by the 32-bit entry -+ * point (section 5.2) -+ * This implies that the 64-bit entry point should have -+ * precedence if it is defined and supported by the OS. If we -+ * have the 64-bit entry point, but fail to decode it, fall -+ * back to the legacy one (if available) -+ */ -+ if (efi.smbios3 != EFI_INVALID_TABLE_ADDR) { -+ p = dmi_early_remap(efi.smbios3, 32); -+ if (p == NULL) -+ goto error; -+ memcpy_fromio(buf, p, 32); -+ dmi_early_unmap(p, 32); -+ -+ if (!dmi_smbios3_present(buf)) { -+ dmi_available = 1; -+ goto out; -+ } -+ } - if (efi.smbios == EFI_INVALID_TABLE_ADDR) - goto error; - -@@ -552,7 +617,7 @@ void __init dmi_scan_machine(void) - memset(buf, 0, 16); - for (q = p; q < p + 0x10000; q += 16) { - memcpy_fromio(buf + 16, q, 16); -- if (!dmi_present(buf)) { -+ if (!dmi_smbios3_present(buf) || !dmi_present(buf)) { - dmi_available = 1; - dmi_early_unmap(p, 0x10000); - goto out; -diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c -index 8590099..9035c1b 100644 ---- a/drivers/firmware/efi/efi.c -+++ b/drivers/firmware/efi/efi.c -@@ -30,6 +30,7 @@ struct efi __read_mostly efi = { - .acpi = EFI_INVALID_TABLE_ADDR, - .acpi20 = EFI_INVALID_TABLE_ADDR, - .smbios = EFI_INVALID_TABLE_ADDR, -+ .smbios3 = EFI_INVALID_TABLE_ADDR, - .sal_systab = EFI_INVALID_TABLE_ADDR, - .boot_info = EFI_INVALID_TABLE_ADDR, - .hcdp = EFI_INVALID_TABLE_ADDR, -@@ -86,6 +87,8 @@ static ssize_t systab_show(struct kobject *kobj, - str += sprintf(str, "ACPI=0x%lx\n", efi.acpi); - if (efi.smbios != EFI_INVALID_TABLE_ADDR) - str += sprintf(str, "SMBIOS=0x%lx\n", efi.smbios); -+ if (efi.smbios3 != EFI_INVALID_TABLE_ADDR) -+ str += sprintf(str, "SMBIOS3=0x%lx\n", efi.smbios3); - if (efi.hcdp != EFI_INVALID_TABLE_ADDR) - str += sprintf(str, "HCDP=0x%lx\n", efi.hcdp); - if (efi.boot_info != EFI_INVALID_TABLE_ADDR) -@@ -260,6 +263,7 @@ static __initdata efi_config_table_type_t common_tables[] = { - {MPS_TABLE_GUID, "MPS", &efi.mps}, - {SAL_SYSTEM_TABLE_GUID, "SALsystab", &efi.sal_systab}, - {SMBIOS_TABLE_GUID, "SMBIOS", &efi.smbios}, -+ {SMBIOS3_TABLE_GUID, "SMBIOS 3.0", &efi.smbios3}, - {UGA_IO_PROTOCOL_GUID, "UGA", &efi.uga}, - {NULL_GUID, NULL, NULL}, - }; -diff --git a/drivers/firmware/efi/libstub/arm-stub.c b/drivers/firmware/efi/libstub/arm-stub.c -index 75ee059..eb48a1a 100644 ---- a/drivers/firmware/efi/libstub/arm-stub.c -+++ b/drivers/firmware/efi/libstub/arm-stub.c -@@ -247,9 +247,18 @@ unsigned long __init efi_entry(void *handle, efi_system_table_t *sys_table, - goto fail_free_cmdline; - } - } -- if (!fdt_addr) -+ -+ if (fdt_addr) { -+ pr_efi(sys_table, "Using DTB from command line\n"); -+ } else { - /* Look for a device tree configuration table entry. */ - fdt_addr = (uintptr_t)get_fdt(sys_table); -+ if (fdt_addr) -+ pr_efi(sys_table, "Using DTB from configuration table\n"); -+ } -+ -+ if (!fdt_addr) -+ pr_efi(sys_table, "Generating empty DTB\n"); - - status = handle_cmdline_files(sys_table, image, cmdline_ptr, - "initrd=", dram_base + SZ_512M, -diff --git a/drivers/gpio/devres.c b/drivers/gpio/devres.c -index 954b9f6..13dbd3d 100644 ---- a/drivers/gpio/devres.c -+++ b/drivers/gpio/devres.c -@@ -109,6 +109,38 @@ struct gpio_desc *__must_check __devm_gpiod_get_index(struct device *dev, - EXPORT_SYMBOL(__devm_gpiod_get_index); - - /** -+ * devm_get_gpiod_from_child - get a GPIO descriptor from a device's child node -+ * @dev: GPIO consumer -+ * @child: firmware node (child of @dev) -+ * -+ * GPIO descriptors returned from this function are automatically disposed on -+ * driver detach. -+ */ -+struct gpio_desc *devm_get_gpiod_from_child(struct device *dev, -+ struct fwnode_handle *child) -+{ -+ struct gpio_desc **dr; -+ struct gpio_desc *desc; -+ -+ dr = devres_alloc(devm_gpiod_release, sizeof(struct gpio_desc *), -+ GFP_KERNEL); -+ if (!dr) -+ return ERR_PTR(-ENOMEM); -+ -+ desc = fwnode_get_named_gpiod(child, "gpios"); -+ if (IS_ERR(desc)) { -+ devres_free(dr); -+ return desc; -+ } -+ -+ *dr = desc; -+ devres_add(dev, dr); -+ -+ return desc; -+} -+EXPORT_SYMBOL(devm_get_gpiod_from_child); -+ -+/** - * devm_gpiod_get_index_optional - Resource-managed gpiod_get_index_optional() - * @dev: GPIO consumer - * @con_id: function within the GPIO consumer -diff --git a/drivers/gpio/gpio-sch.c b/drivers/gpio/gpio-sch.c -index 41e91d7..99720c8 100644 ---- a/drivers/gpio/gpio-sch.c -+++ b/drivers/gpio/gpio-sch.c -@@ -29,290 +29,221 @@ - - #include <linux/gpio.h> - --static DEFINE_SPINLOCK(gpio_lock); -- --#define CGEN (0x00) --#define CGIO (0x04) --#define CGLV (0x08) -- --#define RGEN (0x20) --#define RGIO (0x24) --#define RGLV (0x28) -- --static unsigned short gpio_ba; -- --static int sch_gpio_core_direction_in(struct gpio_chip *gc, unsigned gpio_num) --{ -- u8 curr_dirs; -- unsigned short offset, bit; -- -- spin_lock(&gpio_lock); -- -- offset = CGIO + gpio_num / 8; -- bit = gpio_num % 8; -- -- curr_dirs = inb(gpio_ba + offset); -- -- if (!(curr_dirs & (1 << bit))) -- outb(curr_dirs | (1 << bit), gpio_ba + offset); -+#define GEN 0x00 -+#define GIO 0x04 -+#define GLV 0x08 -+ -+struct sch_gpio { -+ struct gpio_chip chip; -+ spinlock_t lock; -+ unsigned short iobase; -+ unsigned short core_base; -+ unsigned short resume_base; -+}; - -- spin_unlock(&gpio_lock); -- return 0; --} -+#define to_sch_gpio(c) container_of(c, struct sch_gpio, chip) - --static int sch_gpio_core_get(struct gpio_chip *gc, unsigned gpio_num) -+static unsigned sch_gpio_offset(struct sch_gpio *sch, unsigned gpio, -+ unsigned reg) - { -- int res; -- unsigned short offset, bit; -+ unsigned base = 0; - -- offset = CGLV + gpio_num / 8; -- bit = gpio_num % 8; -+ if (gpio >= sch->resume_base) { -+ gpio -= sch->resume_base; -+ base += 0x20; -+ } - -- res = !!(inb(gpio_ba + offset) & (1 << bit)); -- return res; -+ return base + reg + gpio / 8; - } - --static void sch_gpio_core_set(struct gpio_chip *gc, unsigned gpio_num, int val) -+static unsigned sch_gpio_bit(struct sch_gpio *sch, unsigned gpio) - { -- u8 curr_vals; -- unsigned short offset, bit; -- -- spin_lock(&gpio_lock); -- -- offset = CGLV + gpio_num / 8; -- bit = gpio_num % 8; -- -- curr_vals = inb(gpio_ba + offset); -- -- if (val) -- outb(curr_vals | (1 << bit), gpio_ba + offset); -- else -- outb((curr_vals & ~(1 << bit)), gpio_ba + offset); -- spin_unlock(&gpio_lock); -+ if (gpio >= sch->resume_base) -+ gpio -= sch->resume_base; -+ return gpio % 8; - } - --static int sch_gpio_core_direction_out(struct gpio_chip *gc, -- unsigned gpio_num, int val) -+static void sch_gpio_enable(struct sch_gpio *sch, unsigned gpio) - { -- u8 curr_dirs; - unsigned short offset, bit; -+ u8 enable; - -- spin_lock(&gpio_lock); -+ spin_lock(&sch->lock); - -- offset = CGIO + gpio_num / 8; -- bit = gpio_num % 8; -- -- curr_dirs = inb(gpio_ba + offset); -- if (curr_dirs & (1 << bit)) -- outb(curr_dirs & ~(1 << bit), gpio_ba + offset); -+ offset = sch_gpio_offset(sch, gpio, GEN); -+ bit = sch_gpio_bit(sch, gpio); - -- spin_unlock(&gpio_lock); -+ enable = inb(sch->iobase + offset); -+ if (!(enable & (1 << bit))) -+ outb(enable | (1 << bit), sch->iobase + offset); - -- /* -- * according to the datasheet, writing to the level register has no -- * effect when GPIO is programmed as input. -- * Actually the the level register is read-only when configured as input. -- * Thus presetting the output level before switching to output is _NOT_ possible. -- * Hence we set the level after configuring the GPIO as output. -- * But we cannot prevent a short low pulse if direction is set to high -- * and an external pull-up is connected. -- */ -- sch_gpio_core_set(gc, gpio_num, val); -- return 0; -+ spin_unlock(&sch->lock); - } - --static struct gpio_chip sch_gpio_core = { -- .label = "sch_gpio_core", -- .owner = THIS_MODULE, -- .direction_input = sch_gpio_core_direction_in, -- .get = sch_gpio_core_get, -- .direction_output = sch_gpio_core_direction_out, -- .set = sch_gpio_core_set, --}; -- --static int sch_gpio_resume_direction_in(struct gpio_chip *gc, -- unsigned gpio_num) -+static int sch_gpio_direction_in(struct gpio_chip *gc, unsigned gpio_num) - { -+ struct sch_gpio *sch = to_sch_gpio(gc); - u8 curr_dirs; - unsigned short offset, bit; - -- spin_lock(&gpio_lock); -+ spin_lock(&sch->lock); - -- offset = RGIO + gpio_num / 8; -- bit = gpio_num % 8; -+ offset = sch_gpio_offset(sch, gpio_num, GIO); -+ bit = sch_gpio_bit(sch, gpio_num); - -- curr_dirs = inb(gpio_ba + offset); -+ curr_dirs = inb(sch->iobase + offset); - - if (!(curr_dirs & (1 << bit))) -- outb(curr_dirs | (1 << bit), gpio_ba + offset); -+ outb(curr_dirs | (1 << bit), sch->iobase + offset); - -- spin_unlock(&gpio_lock); -+ spin_unlock(&sch->lock); - return 0; - } - --static int sch_gpio_resume_get(struct gpio_chip *gc, unsigned gpio_num) -+static int sch_gpio_get(struct gpio_chip *gc, unsigned gpio_num) - { -+ struct sch_gpio *sch = to_sch_gpio(gc); -+ int res; - unsigned short offset, bit; - -- offset = RGLV + gpio_num / 8; -- bit = gpio_num % 8; -+ offset = sch_gpio_offset(sch, gpio_num, GLV); -+ bit = sch_gpio_bit(sch, gpio_num); -+ -+ res = !!(inb(sch->iobase + offset) & (1 << bit)); - -- return !!(inb(gpio_ba + offset) & (1 << bit)); -+ return res; - } - --static void sch_gpio_resume_set(struct gpio_chip *gc, -- unsigned gpio_num, int val) -+static void sch_gpio_set(struct gpio_chip *gc, unsigned gpio_num, int val) - { -+ struct sch_gpio *sch = to_sch_gpio(gc); - u8 curr_vals; - unsigned short offset, bit; - -- spin_lock(&gpio_lock); -+ spin_lock(&sch->lock); - -- offset = RGLV + gpio_num / 8; -- bit = gpio_num % 8; -+ offset = sch_gpio_offset(sch, gpio_num, GLV); -+ bit = sch_gpio_bit(sch, gpio_num); - -- curr_vals = inb(gpio_ba + offset); -+ curr_vals = inb(sch->iobase + offset); - - if (val) -- outb(curr_vals | (1 << bit), gpio_ba + offset); -+ outb(curr_vals | (1 << bit), sch->iobase + offset); - else -- outb((curr_vals & ~(1 << bit)), gpio_ba + offset); -+ outb((curr_vals & ~(1 << bit)), sch->iobase + offset); - -- spin_unlock(&gpio_lock); -+ spin_unlock(&sch->lock); - } - --static int sch_gpio_resume_direction_out(struct gpio_chip *gc, -- unsigned gpio_num, int val) -+static int sch_gpio_direction_out(struct gpio_chip *gc, unsigned gpio_num, -+ int val) - { -+ struct sch_gpio *sch = to_sch_gpio(gc); - u8 curr_dirs; - unsigned short offset, bit; - -- offset = RGIO + gpio_num / 8; -- bit = gpio_num % 8; -+ spin_lock(&sch->lock); - -- spin_lock(&gpio_lock); -+ offset = sch_gpio_offset(sch, gpio_num, GIO); -+ bit = sch_gpio_bit(sch, gpio_num); - -- curr_dirs = inb(gpio_ba + offset); -+ curr_dirs = inb(sch->iobase + offset); - if (curr_dirs & (1 << bit)) -- outb(curr_dirs & ~(1 << bit), gpio_ba + offset); -+ outb(curr_dirs & ~(1 << bit), sch->iobase + offset); - -- spin_unlock(&gpio_lock); -+ spin_unlock(&sch->lock); - - /* -- * according to the datasheet, writing to the level register has no -- * effect when GPIO is programmed as input. -- * Actually the the level register is read-only when configured as input. -- * Thus presetting the output level before switching to output is _NOT_ possible. -- * Hence we set the level after configuring the GPIO as output. -- * But we cannot prevent a short low pulse if direction is set to high -- * and an external pull-up is connected. -- */ -- sch_gpio_resume_set(gc, gpio_num, val); -+ * according to the datasheet, writing to the level register has no -+ * effect when GPIO is programmed as input. -+ * Actually the the level register is read-only when configured as input. -+ * Thus presetting the output level before switching to output is _NOT_ possible. -+ * Hence we set the level after configuring the GPIO as output. -+ * But we cannot prevent a short low pulse if direction is set to high -+ * and an external pull-up is connected. -+ */ -+ sch_gpio_set(gc, gpio_num, val); - return 0; - } - --static struct gpio_chip sch_gpio_resume = { -- .label = "sch_gpio_resume", -+static struct gpio_chip sch_gpio_chip = { -+ .label = "sch_gpio", - .owner = THIS_MODULE, -- .direction_input = sch_gpio_resume_direction_in, -- .get = sch_gpio_resume_get, -- .direction_output = sch_gpio_resume_direction_out, -- .set = sch_gpio_resume_set, -+ .direction_input = sch_gpio_direction_in, -+ .get = sch_gpio_get, -+ .direction_output = sch_gpio_direction_out, -+ .set = sch_gpio_set, - }; - - static int sch_gpio_probe(struct platform_device *pdev) - { -+ struct sch_gpio *sch; - struct resource *res; -- int err, id; - -- id = pdev->id; -- if (!id) -- return -ENODEV; -+ sch = devm_kzalloc(&pdev->dev, sizeof(*sch), GFP_KERNEL); -+ if (!sch) -+ return -ENOMEM; - - res = platform_get_resource(pdev, IORESOURCE_IO, 0); - if (!res) - return -EBUSY; - -- if (!request_region(res->start, resource_size(res), pdev->name)) -+ if (!devm_request_region(&pdev->dev, res->start, resource_size(res), -+ pdev->name)) - return -EBUSY; - -- gpio_ba = res->start; -+ spin_lock_init(&sch->lock); -+ sch->iobase = res->start; -+ sch->chip = sch_gpio_chip; -+ sch->chip.label = dev_name(&pdev->dev); -+ sch->chip.dev = &pdev->dev; - -- switch (id) { -+ switch (pdev->id) { - case PCI_DEVICE_ID_INTEL_SCH_LPC: -- sch_gpio_core.base = 0; -- sch_gpio_core.ngpio = 10; -- sch_gpio_resume.base = 10; -- sch_gpio_resume.ngpio = 4; -+ sch->core_base = 0; -+ sch->resume_base = 10; -+ sch->chip.ngpio = 14; -+ - /* - * GPIO[6:0] enabled by default - * GPIO7 is configured by the CMC as SLPIOVR - * Enable GPIO[9:8] core powered gpios explicitly - */ -- outb(0x3, gpio_ba + CGEN + 1); -+ sch_gpio_enable(sch, 8); -+ sch_gpio_enable(sch, 9); - /* - * SUS_GPIO[2:0] enabled by default - * Enable SUS_GPIO3 resume powered gpio explicitly - */ -- outb(0x8, gpio_ba + RGEN); -+ sch_gpio_enable(sch, 13); - break; - - case PCI_DEVICE_ID_INTEL_ITC_LPC: -- sch_gpio_core.base = 0; -- sch_gpio_core.ngpio = 5; -- sch_gpio_resume.base = 5; -- sch_gpio_resume.ngpio = 9; -+ sch->core_base = 0; -+ sch->resume_base = 5; -+ sch->chip.ngpio = 14; - break; - - case PCI_DEVICE_ID_INTEL_CENTERTON_ILB: -- sch_gpio_core.base = 0; -- sch_gpio_core.ngpio = 21; -- sch_gpio_resume.base = 21; -- sch_gpio_resume.ngpio = 9; -+ sch->core_base = 0; -+ sch->resume_base = 21; -+ sch->chip.ngpio = 30; - break; - - default: -- err = -ENODEV; -- goto err_sch_gpio_core; -+ return -ENODEV; - } - -- sch_gpio_core.dev = &pdev->dev; -- sch_gpio_resume.dev = &pdev->dev; -- -- err = gpiochip_add(&sch_gpio_core); -- if (err < 0) -- goto err_sch_gpio_core; -+ platform_set_drvdata(pdev, sch); - -- err = gpiochip_add(&sch_gpio_resume); -- if (err < 0) -- goto err_sch_gpio_resume; -- -- return 0; -- --err_sch_gpio_resume: -- gpiochip_remove(&sch_gpio_core); -- --err_sch_gpio_core: -- release_region(res->start, resource_size(res)); -- gpio_ba = 0; -- -- return err; -+ return gpiochip_add(&sch->chip); - } - - static int sch_gpio_remove(struct platform_device *pdev) - { -- struct resource *res; -- if (gpio_ba) { -- -- gpiochip_remove(&sch_gpio_core); -- gpiochip_remove(&sch_gpio_resume); -- -- res = platform_get_resource(pdev, IORESOURCE_IO, 0); -- -- release_region(res->start, resource_size(res)); -- gpio_ba = 0; -- } -+ struct sch_gpio *sch = platform_get_drvdata(pdev); - -+ gpiochip_remove(&sch->chip); - return 0; - } - -diff --git a/drivers/gpio/gpiolib-acpi.c b/drivers/gpio/gpiolib-acpi.c -index 05c6275..ba98bb5 100644 ---- a/drivers/gpio/gpiolib-acpi.c -+++ b/drivers/gpio/gpiolib-acpi.c -@@ -287,9 +287,45 @@ void acpi_gpiochip_free_interrupts(struct gpio_chip *chip) - } - } - -+int acpi_dev_add_driver_gpios(struct acpi_device *adev, -+ const struct acpi_gpio_mapping *gpios) -+{ -+ if (adev && gpios) { -+ adev->driver_gpios = gpios; -+ return 0; -+ } -+ return -EINVAL; -+} -+EXPORT_SYMBOL_GPL(acpi_dev_add_driver_gpios); -+ -+static bool acpi_get_driver_gpio_data(struct acpi_device *adev, -+ const char *name, int index, -+ struct acpi_reference_args *args) -+{ -+ const struct acpi_gpio_mapping *gm; -+ -+ if (!adev->driver_gpios) -+ return false; -+ -+ for (gm = adev->driver_gpios; gm->name; gm++) -+ if (!strcmp(name, gm->name) && gm->data && index < gm->size) { -+ const struct acpi_gpio_params *par = gm->data + index; -+ -+ args->adev = adev; -+ args->args[0] = par->crs_entry_index; -+ args->args[1] = par->line_index; -+ args->args[2] = par->active_low; -+ args->nargs = 3; -+ return true; -+ } -+ -+ return false; -+} -+ - struct acpi_gpio_lookup { - struct acpi_gpio_info info; - int index; -+ int pin_index; - struct gpio_desc *desc; - int n; - }; -@@ -303,13 +339,24 @@ static int acpi_find_gpio(struct acpi_resource *ares, void *data) - - if (lookup->n++ == lookup->index && !lookup->desc) { - const struct acpi_resource_gpio *agpio = &ares->data.gpio; -+ int pin_index = lookup->pin_index; -+ -+ if (pin_index >= agpio->pin_table_length) -+ return 1; - - lookup->desc = acpi_get_gpiod(agpio->resource_source.string_ptr, -- agpio->pin_table[0]); -+ agpio->pin_table[pin_index]); - lookup->info.gpioint = - agpio->connection_type == ACPI_RESOURCE_GPIO_TYPE_INT; -- lookup->info.active_low = -- agpio->polarity == ACPI_ACTIVE_LOW; -+ -+ /* -+ * ActiveLow is only specified for GpioInt resource. If -+ * GpioIo is used then the only way to set the flag is -+ * to use _DSD "gpios" property. -+ */ -+ if (lookup->info.gpioint) -+ lookup->info.active_low = -+ agpio->polarity == ACPI_ACTIVE_LOW; - } - - return 1; -@@ -317,40 +364,79 @@ static int acpi_find_gpio(struct acpi_resource *ares, void *data) - - /** - * acpi_get_gpiod_by_index() - get a GPIO descriptor from device resources -- * @dev: pointer to a device to get GPIO from -+ * @adev: pointer to a ACPI device to get GPIO from -+ * @propname: Property name of the GPIO (optional) - * @index: index of GpioIo/GpioInt resource (starting from %0) - * @info: info pointer to fill in (optional) - * -- * Function goes through ACPI resources for @dev and based on @index looks -+ * Function goes through ACPI resources for @adev and based on @index looks - * up a GpioIo/GpioInt resource, translates it to the Linux GPIO descriptor, - * and returns it. @index matches GpioIo/GpioInt resources only so if there - * are total %3 GPIO resources, the index goes from %0 to %2. - * -+ * If @propname is specified the GPIO is looked using device property. In -+ * that case @index is used to select the GPIO entry in the property value -+ * (in case of multiple). -+ * - * If the GPIO cannot be translated or there is an error an ERR_PTR is - * returned. - * - * Note: if the GPIO resource has multiple entries in the pin list, this - * function only returns the first. - */ --struct gpio_desc *acpi_get_gpiod_by_index(struct device *dev, int index, -+struct gpio_desc *acpi_get_gpiod_by_index(struct acpi_device *adev, -+ const char *propname, int index, - struct acpi_gpio_info *info) - { - struct acpi_gpio_lookup lookup; - struct list_head resource_list; -- struct acpi_device *adev; -- acpi_handle handle; -+ bool active_low = false; - int ret; - -- if (!dev) -- return ERR_PTR(-EINVAL); -- -- handle = ACPI_HANDLE(dev); -- if (!handle || acpi_bus_get_device(handle, &adev)) -+ if (!adev) - return ERR_PTR(-ENODEV); - - memset(&lookup, 0, sizeof(lookup)); - lookup.index = index; - -+ if (propname) { -+ struct acpi_reference_args args; -+ -+ dev_dbg(&adev->dev, "GPIO: looking up %s\n", propname); -+ -+ memset(&args, 0, sizeof(args)); -+ ret = acpi_dev_get_property_reference(adev, propname, -+ index, &args); -+ if (ret) { -+ bool found = acpi_get_driver_gpio_data(adev, propname, -+ index, &args); -+ if (!found) -+ return ERR_PTR(ret); -+ } -+ -+ /* -+ * The property was found and resolved so need to -+ * lookup the GPIO based on returned args instead. -+ */ -+ adev = args.adev; -+ if (args.nargs >= 2) { -+ lookup.index = args.args[0]; -+ lookup.pin_index = args.args[1]; -+ /* -+ * 3rd argument, if present is used to -+ * specify active_low. -+ */ -+ if (args.nargs >= 3) -+ active_low = !!args.args[2]; -+ } -+ -+ dev_dbg(&adev->dev, "GPIO: _DSD returned %s %zd %llu %llu %llu\n", -+ dev_name(&adev->dev), args.nargs, -+ args.args[0], args.args[1], args.args[2]); -+ } else { -+ dev_dbg(&adev->dev, "GPIO: looking up %d in _CRS\n", index); -+ } -+ - INIT_LIST_HEAD(&resource_list); - ret = acpi_dev_get_resources(adev, &resource_list, acpi_find_gpio, - &lookup); -@@ -359,8 +445,11 @@ struct gpio_desc *acpi_get_gpiod_by_index(struct device *dev, int index, - - acpi_dev_free_resource_list(&resource_list); - -- if (lookup.desc && info) -+ if (lookup.desc && info) { - *info = lookup.info; -+ if (active_low) -+ info->active_low = active_low; -+ } - - return lookup.desc ? lookup.desc : ERR_PTR(-ENOENT); - } -diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index e8e98ca..58659db 100644 ---- a/drivers/gpio/gpiolib.c -+++ b/drivers/gpio/gpiolib.c -@@ -1505,14 +1505,36 @@ static struct gpio_desc *acpi_find_gpio(struct device *dev, const char *con_id, - unsigned int idx, - enum gpio_lookup_flags *flags) - { -+ static const char * const suffixes[] = { "gpios", "gpio" }; -+ struct acpi_device *adev = ACPI_COMPANION(dev); - struct acpi_gpio_info info; - struct gpio_desc *desc; -+ char propname[32]; -+ int i; - -- desc = acpi_get_gpiod_by_index(dev, idx, &info); -- if (IS_ERR(desc)) -- return desc; -+ /* Try first from _DSD */ -+ for (i = 0; i < ARRAY_SIZE(suffixes); i++) { -+ if (con_id && strcmp(con_id, "gpios")) { -+ snprintf(propname, sizeof(propname), "%s-%s", -+ con_id, suffixes[i]); -+ } else { -+ snprintf(propname, sizeof(propname), "%s", -+ suffixes[i]); -+ } -+ -+ desc = acpi_get_gpiod_by_index(adev, propname, idx, &info); -+ if (!IS_ERR(desc) || (PTR_ERR(desc) == -EPROBE_DEFER)) -+ break; -+ } - -- if (info.gpioint && info.active_low) -+ /* Then from plain _CRS GPIOs */ -+ if (IS_ERR(desc)) { -+ desc = acpi_get_gpiod_by_index(adev, NULL, idx, &info); -+ if (IS_ERR(desc)) -+ return desc; -+ } -+ -+ if (info.active_low) - *flags |= GPIO_ACTIVE_LOW; - - return desc; -@@ -1713,6 +1735,61 @@ struct gpio_desc *__must_check __gpiod_get_index(struct device *dev, - EXPORT_SYMBOL_GPL(__gpiod_get_index); - - /** -+ * fwnode_get_named_gpiod - obtain a GPIO from firmware node -+ * @fwnode: handle of the firmware node -+ * @propname: name of the firmware property representing the GPIO -+ * -+ * This function can be used for drivers that get their configuration -+ * from firmware. -+ * -+ * Function properly finds the corresponding GPIO using whatever is the -+ * underlying firmware interface and then makes sure that the GPIO -+ * descriptor is requested before it is returned to the caller. -+ * -+ * In case of error an ERR_PTR() is returned. -+ */ -+struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode, -+ const char *propname) -+{ -+ struct gpio_desc *desc = ERR_PTR(-ENODEV); -+ bool active_low = false; -+ int ret; -+ -+ if (!fwnode) -+ return ERR_PTR(-EINVAL); -+ -+ if (is_of_node(fwnode)) { -+ enum of_gpio_flags flags; -+ -+ desc = of_get_named_gpiod_flags(of_node(fwnode), propname, 0, -+ &flags); -+ if (!IS_ERR(desc)) -+ active_low = flags & OF_GPIO_ACTIVE_LOW; -+ } else if (is_acpi_node(fwnode)) { -+ struct acpi_gpio_info info; -+ -+ desc = acpi_get_gpiod_by_index(acpi_node(fwnode), propname, 0, -+ &info); -+ if (!IS_ERR(desc)) -+ active_low = info.active_low; -+ } -+ -+ if (IS_ERR(desc)) -+ return desc; -+ -+ ret = gpiod_request(desc, NULL); -+ if (ret) -+ return ERR_PTR(ret); -+ -+ /* Only value flag can be set from both DT and ACPI is active_low */ -+ if (active_low) -+ set_bit(FLAG_ACTIVE_LOW, &desc->flags); -+ -+ return desc; -+} -+EXPORT_SYMBOL_GPL(fwnode_get_named_gpiod); -+ -+/** - * gpiod_get_index_optional - obtain an optional GPIO from a multi-index GPIO - * function - * @dev: GPIO consumer, can be NULL for system-global GPIOs -diff --git a/drivers/gpio/gpiolib.h b/drivers/gpio/gpiolib.h -index 9db2b6a..e3a5211 100644 ---- a/drivers/gpio/gpiolib.h -+++ b/drivers/gpio/gpiolib.h -@@ -34,7 +34,8 @@ void acpi_gpiochip_remove(struct gpio_chip *chip); - void acpi_gpiochip_request_interrupts(struct gpio_chip *chip); - void acpi_gpiochip_free_interrupts(struct gpio_chip *chip); - --struct gpio_desc *acpi_get_gpiod_by_index(struct device *dev, int index, -+struct gpio_desc *acpi_get_gpiod_by_index(struct acpi_device *adev, -+ const char *propname, int index, - struct acpi_gpio_info *info); - #else - static inline void acpi_gpiochip_add(struct gpio_chip *chip) { } -@@ -47,8 +48,8 @@ static inline void - acpi_gpiochip_free_interrupts(struct gpio_chip *chip) { } - - static inline struct gpio_desc * --acpi_get_gpiod_by_index(struct device *dev, int index, -- struct acpi_gpio_info *info) -+acpi_get_gpiod_by_index(struct acpi_device *adev, const char *propname, -+ int index, struct acpi_gpio_info *info) - { - return ERR_PTR(-ENOSYS); - } diff --git a/drivers/input/keyboard/gpio_keys_polled.c b/drivers/input/keyboard/gpio_keys_polled.c -index 432d363..c9c1c8c 100644 +index 90df4df..c9c1c8c 100644 --- a/drivers/input/keyboard/gpio_keys_polled.c +++ b/drivers/input/keyboard/gpio_keys_polled.c -@@ -23,10 +23,9 @@ - #include <linux/ioport.h> - #include <linux/platform_device.h> - #include <linux/gpio.h> -+#include <linux/gpio/consumer.h> - #include <linux/gpio_keys.h> --#include <linux/of.h> --#include <linux/of_platform.h> --#include <linux/of_gpio.h> -+#include <linux/property.h> - - #define DRV_NAME "gpio-keys-polled" - -@@ -51,15 +50,14 @@ static void gpio_keys_polled_check_state(struct input_dev *input, - int state; - - if (bdata->can_sleep) -- state = !!gpio_get_value_cansleep(button->gpio); -+ state = !!gpiod_get_value_cansleep(button->gpiod); - else -- state = !!gpio_get_value(button->gpio); -+ state = !!gpiod_get_value(button->gpiod); - - if (state != bdata->last_state) { - unsigned int type = button->type ?: EV_KEY; - -- input_event(input, type, button->code, -- !!(state ^ button->active_low)); -+ input_event(input, type, button->code, state); - input_sync(input); - bdata->count = 0; - bdata->last_state = state; -@@ -102,21 +100,15 @@ static void gpio_keys_polled_close(struct input_polled_dev *dev) - pdata->disable(bdev->dev); - } - --#ifdef CONFIG_OF - static struct gpio_keys_platform_data *gpio_keys_polled_get_devtree_pdata(struct device *dev) - { -- struct device_node *node, *pp; - struct gpio_keys_platform_data *pdata; - struct gpio_keys_button *button; -+ struct fwnode_handle *child; - int error; - int nbuttons; -- int i; -- -- node = dev->of_node; -- if (!node) -- return NULL; - -- nbuttons = of_get_child_count(node); -+ nbuttons = device_get_child_node_count(dev); - if (nbuttons == 0) - return NULL; - -@@ -126,52 +118,44 @@ static struct gpio_keys_platform_data *gpio_keys_polled_get_devtree_pdata(struct - return ERR_PTR(-ENOMEM); - - pdata->buttons = (struct gpio_keys_button *)(pdata + 1); -- pdata->nbuttons = nbuttons; - -- pdata->rep = !!of_get_property(node, "autorepeat", NULL); -- of_property_read_u32(node, "poll-interval", &pdata->poll_interval); -+ pdata->rep = device_property_present(dev, "autorepeat"); -+ device_property_read_u32(dev, "poll-interval", &pdata->poll_interval); - -- i = 0; -- for_each_child_of_node(node, pp) { -- int gpio; -- enum of_gpio_flags flags; -+ device_for_each_child_node(dev, child) { -+ struct gpio_desc *desc; - -- if (!of_find_property(pp, "gpios", NULL)) { -- pdata->nbuttons--; -- dev_warn(dev, "Found button without gpios\n"); -- continue; -- } -- -- gpio = of_get_gpio_flags(pp, 0, &flags); -- if (gpio < 0) { -- error = gpio; -+ desc = devm_get_gpiod_from_child(dev, child); -+ if (IS_ERR(desc)) { -+ error = PTR_ERR(desc); - if (error != -EPROBE_DEFER) - dev_err(dev, - "Failed to get gpio flags, error: %d\n", - error); -+ fwnode_handle_put(child); - return ERR_PTR(error); - } - -- button = &pdata->buttons[i++]; -- -- button->gpio = gpio; -- button->active_low = flags & OF_GPIO_ACTIVE_LOW; -+ button = &pdata->buttons[pdata->nbuttons++]; -+ button->gpiod = desc; - -- if (of_property_read_u32(pp, "linux,code", &button->code)) { -- dev_err(dev, "Button without keycode: 0x%x\n", -- button->gpio); -+ if (fwnode_property_read_u32(child, "linux,code", &button->code)) { -+ dev_err(dev, "Button without keycode: %d\n", -+ pdata->nbuttons - 1); -+ fwnode_handle_put(child); - return ERR_PTR(-EINVAL); - } - -- button->desc = of_get_property(pp, "label", NULL); -+ fwnode_property_read_string(child, "label", &button->desc); - -- if (of_property_read_u32(pp, "linux,input-type", &button->type)) -+ if (fwnode_property_read_u32(child, "linux,input-type", -+ &button->type)) - button->type = EV_KEY; - -- button->wakeup = !!of_get_property(pp, "gpio-key,wakeup", NULL); -+ button->wakeup = fwnode_property_present(child, "gpio-key,wakeup"); - -- if (of_property_read_u32(pp, "debounce-interval", -- &button->debounce_interval)) -+ if (fwnode_property_read_u32(child, "debounce-interval", -+ &button->debounce_interval)) - button->debounce_interval = 5; - } - -@@ -187,15 +171,6 @@ static const struct of_device_id gpio_keys_polled_of_match[] = { - }; - MODULE_DEVICE_TABLE(of, gpio_keys_polled_of_match); - --#else -- --static inline struct gpio_keys_platform_data * --gpio_keys_polled_get_devtree_pdata(struct device *dev) --{ -- return NULL; --} --#endif -- - static int gpio_keys_polled_probe(struct platform_device *pdev) - { - struct device *dev = &pdev->dev; -@@ -259,7 +234,6 @@ static int gpio_keys_polled_probe(struct platform_device *pdev) - for (i = 0; i < pdata->nbuttons; i++) { - struct gpio_keys_button *button = &pdata->buttons[i]; - struct gpio_keys_button_data *bdata = &bdev->data[i]; -- unsigned int gpio = button->gpio; - unsigned int type = button->type ?: EV_KEY; - - if (button->wakeup) { -@@ -267,15 +241,31 @@ static int gpio_keys_polled_probe(struct platform_device *pdev) - return -EINVAL; - } - -- error = devm_gpio_request_one(&pdev->dev, gpio, GPIOF_IN, -- button->desc ? : DRV_NAME); -- if (error) { -- dev_err(dev, "unable to claim gpio %u, err=%d\n", -- gpio, error); -- return error; -+ /* -+ * Legacy GPIO number so request the GPIO here and -+ * convert it to descriptor. -+ */ -+ if (!button->gpiod && gpio_is_valid(button->gpio)) { -+ unsigned flags = 0; -+ -+ if (button->active_low) -+ flags |= GPIOF_ACTIVE_LOW; -+ -+ error = devm_gpio_request_one(&pdev->dev, button->gpio, -+ flags, button->desc ? : DRV_NAME); -+ if (error) { -+ dev_err(dev, "unable to claim gpio %u, err=%d\n", -+ button->gpio, error); -+ return error; -+ } -+ -+ button->gpiod = gpio_to_desc(button->gpio); - } - -- bdata->can_sleep = gpio_cansleep(gpio); -+ if (IS_ERR(button->gpiod)) -+ return PTR_ERR(button->gpiod); -+ -+ bdata->can_sleep = gpiod_cansleep(button->gpiod); - bdata->last_state = -1; - bdata->threshold = DIV_ROUND_UP(button->debounce_interval, - pdata->poll_interval); -@@ -308,7 +298,7 @@ static struct platform_driver gpio_keys_polled_driver = { +@@ -297,6 +297,7 @@ static struct platform_driver gpio_keys_polled_driver = { + .probe = gpio_keys_polled_probe, .driver = { .name = DRV_NAME, - .owner = THIS_MODULE, -- .of_match_table = of_match_ptr(gpio_keys_polled_of_match), -+ .of_match_table = gpio_keys_polled_of_match, ++ .owner = THIS_MODULE, + .of_match_table = gpio_keys_polled_of_match, }, }; - module_platform_driver(gpio_keys_polled_driver); diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c -index 60558f7..3b92862 100644 +index 6cd47b7..09f904a 100644 --- a/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c -@@ -444,7 +444,10 @@ static struct device_node *dev_get_dev_node(struct device *dev) +@@ -451,7 +451,10 @@ static struct device_node *dev_get_dev_node(struct device *dev) while (!pci_is_root_bus(bus)) bus = bus->parent; @@ -8777,7 +3304,7 @@ index 60558f7..3b92862 100644 } return dev->of_node; -@@ -560,6 +563,9 @@ static struct arm_smmu_device *find_smmu_for_device(struct device *dev) +@@ -567,6 +570,9 @@ static struct arm_smmu_device *find_smmu_for_device(struct device *dev) struct arm_smmu_master *master = NULL; struct device_node *dev_node = dev_get_dev_node(dev); @@ -8788,10 +3315,10 @@ index 60558f7..3b92862 100644 list_for_each_entry(smmu, &arm_smmu_devices, list) { master = find_smmu_master(smmu, dev_node); diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c -index aa17ae8..d330dab 100644 +index 1a146cc..ab7dfe2 100644 --- a/drivers/irqchip/irq-gic-v3.c +++ b/drivers/irqchip/irq-gic-v3.c -@@ -506,9 +506,19 @@ static void gic_raise_softirq(const struct cpumask *mask, unsigned int irq) +@@ -520,9 +520,19 @@ static void gic_raise_softirq(const struct cpumask *mask, unsigned int irq) isb(); } @@ -8812,7 +3339,7 @@ index aa17ae8..d330dab 100644 } diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c -index 38493ff..26e6773 100644 +index d617ee5..da0cd51 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c @@ -33,12 +33,14 @@ @@ -8844,7 +3371,7 @@ index 38493ff..26e6773 100644 #endif #ifdef CONFIG_BL_SWITCHER -@@ -996,6 +1005,9 @@ void __init gic_init_bases(unsigned int gic_nr, int irq_start, +@@ -1025,6 +1034,9 @@ void __init gic_init_bases(unsigned int gic_nr, int irq_start, #ifdef CONFIG_SMP set_smp_cross_call(gic_raise_softirq); register_cpu_notifier(&gic_cpu_notifier); @@ -8854,7 +3381,7 @@ index 38493ff..26e6773 100644 #endif set_handle_irq(gic_handle_irq); } -@@ -1048,3 +1060,107 @@ IRQCHIP_DECLARE(msm_8660_qgic, "qcom,msm-8660-qgic", gic_of_init); +@@ -1083,3 +1095,109 @@ IRQCHIP_DECLARE(msm_8660_qgic, "qcom,msm-8660-qgic", gic_of_init); IRQCHIP_DECLARE(msm_qgic2, "qcom,msm-qgic2", gic_of_init); #endif @@ -8910,7 +3437,8 @@ index 38493ff..26e6773 100644 + int count; + + /* Collect CPU base addresses */ -+ count = acpi_parse_entries(sizeof(struct acpi_table_madt), ++ count = acpi_parse_entries(ACPI_SIG_MADT, ++ sizeof(struct acpi_table_madt), + gic_acpi_parse_madt_cpu, table, + ACPI_MADT_TYPE_GENERIC_INTERRUPT, 0); + if (count < 0) { @@ -8925,7 +3453,8 @@ index 38493ff..26e6773 100644 + * Find distributor base address. We expect one distributor entry since + * ACPI 5.1 spec neither support multi-GIC instances nor GIC cascade. + */ -+ count = acpi_parse_entries(sizeof(struct acpi_table_madt), ++ count = acpi_parse_entries(ACPI_SIG_MADT, ++ sizeof(struct acpi_table_madt), + gic_acpi_parse_madt_distributor, table, + ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR, 0); + if (count <= 0) { @@ -8982,393 +3511,19 @@ index 0fe2f71..9106c6d 100644 + acpi_gic_init(); } diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c -index b4518c8..b3c5d9d 100644 +index 7ea1ea42..5fb4440 100644 --- a/drivers/leds/leds-gpio.c +++ b/drivers/leds/leds-gpio.c -@@ -12,25 +12,23 @@ - */ - #include <linux/err.h> - #include <linux/gpio.h> -+#include <linux/gpio/consumer.h> - #include <linux/kernel.h> - #include <linux/leds.h> - #include <linux/module.h> --#include <linux/of.h> --#include <linux/of_gpio.h> --#include <linux/of_platform.h> - #include <linux/platform_device.h> -+#include <linux/property.h> - #include <linux/slab.h> - #include <linux/workqueue.h> - - struct gpio_led_data { - struct led_classdev cdev; -- unsigned gpio; -+ struct gpio_desc *gpiod; - struct work_struct work; - u8 new_level; - u8 can_sleep; -- u8 active_low; - u8 blinking; -- int (*platform_gpio_blink_set)(unsigned gpio, int state, -+ int (*platform_gpio_blink_set)(struct gpio_desc *desc, int state, - unsigned long *delay_on, unsigned long *delay_off); - }; - -@@ -40,12 +38,11 @@ static void gpio_led_work(struct work_struct *work) - container_of(work, struct gpio_led_data, work); - - if (led_dat->blinking) { -- led_dat->platform_gpio_blink_set(led_dat->gpio, -- led_dat->new_level, -- NULL, NULL); -+ led_dat->platform_gpio_blink_set(led_dat->gpiod, -+ led_dat->new_level, NULL, NULL); - led_dat->blinking = 0; - } else -- gpio_set_value_cansleep(led_dat->gpio, led_dat->new_level); -+ gpiod_set_value_cansleep(led_dat->gpiod, led_dat->new_level); - } - - static void gpio_led_set(struct led_classdev *led_cdev, -@@ -60,9 +57,6 @@ static void gpio_led_set(struct led_classdev *led_cdev, - else - level = 1; - -- if (led_dat->active_low) -- level = !level; -- - /* Setting GPIOs with I2C/etc requires a task context, and we don't - * seem to have a reliable way to know if we're already in one; so - * let's just assume the worst. -@@ -72,11 +66,11 @@ static void gpio_led_set(struct led_classdev *led_cdev, - schedule_work(&led_dat->work); - } else { - if (led_dat->blinking) { -- led_dat->platform_gpio_blink_set(led_dat->gpio, level, -+ led_dat->platform_gpio_blink_set(led_dat->gpiod, level, - NULL, NULL); - led_dat->blinking = 0; - } else -- gpio_set_value(led_dat->gpio, level); -+ gpiod_set_value(led_dat->gpiod, level); - } - } - -@@ -87,34 +81,49 @@ static int gpio_blink_set(struct led_classdev *led_cdev, - container_of(led_cdev, struct gpio_led_data, cdev); - - led_dat->blinking = 1; -- return led_dat->platform_gpio_blink_set(led_dat->gpio, GPIO_LED_BLINK, -+ return led_dat->platform_gpio_blink_set(led_dat->gpiod, GPIO_LED_BLINK, - delay_on, delay_off); - } - - static int create_gpio_led(const struct gpio_led *template, - struct gpio_led_data *led_dat, struct device *parent, -- int (*blink_set)(unsigned, int, unsigned long *, unsigned long *)) -+ int (*blink_set)(struct gpio_desc *, int, unsigned long *, -+ unsigned long *)) - { - int ret, state; - -- led_dat->gpio = -1; -+ led_dat->gpiod = template->gpiod; -+ if (!led_dat->gpiod) { -+ /* -+ * This is the legacy code path for platform code that -+ * still uses GPIO numbers. Ultimately we would like to get -+ * rid of this block completely. -+ */ -+ unsigned long flags = 0; -+ -+ /* skip leds that aren't available */ -+ if (!gpio_is_valid(template->gpio)) { -+ dev_info(parent, "Skipping unavailable LED gpio %d (%s)\n", -+ template->gpio, template->name); -+ return 0; -+ } - -- /* skip leds that aren't available */ -- if (!gpio_is_valid(template->gpio)) { -- dev_info(parent, "Skipping unavailable LED gpio %d (%s)\n", -- template->gpio, template->name); -- return 0; -- } -+ if (template->active_low) -+ flags |= GPIOF_ACTIVE_LOW; - -- ret = devm_gpio_request(parent, template->gpio, template->name); -- if (ret < 0) -- return ret; -+ ret = devm_gpio_request_one(parent, template->gpio, flags, -+ template->name); -+ if (ret < 0) -+ return ret; -+ -+ led_dat->gpiod = gpio_to_desc(template->gpio); -+ if (IS_ERR(led_dat->gpiod)) -+ return PTR_ERR(led_dat->gpiod); -+ } - - led_dat->cdev.name = template->name; - led_dat->cdev.default_trigger = template->default_trigger; -- led_dat->gpio = template->gpio; -- led_dat->can_sleep = gpio_cansleep(template->gpio); -- led_dat->active_low = template->active_low; -+ led_dat->can_sleep = gpiod_cansleep(led_dat->gpiod); - led_dat->blinking = 0; - if (blink_set) { - led_dat->platform_gpio_blink_set = blink_set; -@@ -122,30 +131,24 @@ static int create_gpio_led(const struct gpio_led *template, - } - led_dat->cdev.brightness_set = gpio_led_set; - if (template->default_state == LEDS_GPIO_DEFSTATE_KEEP) -- state = !!gpio_get_value_cansleep(led_dat->gpio) ^ led_dat->active_low; -+ state = !!gpiod_get_value_cansleep(led_dat->gpiod); - else - state = (template->default_state == LEDS_GPIO_DEFSTATE_ON); - led_dat->cdev.brightness = state ? LED_FULL : LED_OFF; - if (!template->retain_state_suspended) - led_dat->cdev.flags |= LED_CORE_SUSPENDRESUME; - -- ret = gpio_direction_output(led_dat->gpio, led_dat->active_low ^ state); -+ ret = gpiod_direction_output(led_dat->gpiod, state); - if (ret < 0) - return ret; - - INIT_WORK(&led_dat->work, gpio_led_work); - -- ret = led_classdev_register(parent, &led_dat->cdev); -- if (ret < 0) -- return ret; -- -- return 0; -+ return led_classdev_register(parent, &led_dat->cdev); - } - - static void delete_gpio_led(struct gpio_led_data *led) - { -- if (!gpio_is_valid(led->gpio)) -- return; - led_classdev_unregister(&led->cdev); - cancel_work_sync(&led->work); - } -@@ -161,40 +164,37 @@ static inline int sizeof_gpio_leds_priv(int num_leds) - (sizeof(struct gpio_led_data) * num_leds); - } - --/* Code to create from OpenFirmware platform devices */ --#ifdef CONFIG_OF_GPIO --static struct gpio_leds_priv *gpio_leds_create_of(struct platform_device *pdev) -+static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev) - { -- struct device_node *np = pdev->dev.of_node, *child; -+ struct device *dev = &pdev->dev; -+ struct fwnode_handle *child; - struct gpio_leds_priv *priv; - int count, ret; - -- /* count LEDs in this device, so we know how much to allocate */ -- count = of_get_available_child_count(np); -+ count = device_get_child_node_count(dev); - if (!count) - return ERR_PTR(-ENODEV); - -- for_each_available_child_of_node(np, child) -- if (of_get_gpio(child, 0) == -EPROBE_DEFER) -- return ERR_PTR(-EPROBE_DEFER); -- -- priv = devm_kzalloc(&pdev->dev, sizeof_gpio_leds_priv(count), -- GFP_KERNEL); -+ priv = devm_kzalloc(dev, sizeof_gpio_leds_priv(count), GFP_KERNEL); - if (!priv) - return ERR_PTR(-ENOMEM); - -- for_each_available_child_of_node(np, child) { -+ device_for_each_child_node(dev, child) { - struct gpio_led led = {}; -- enum of_gpio_flags flags; -- const char *state; -- -- led.gpio = of_get_gpio_flags(child, 0, &flags); -- led.active_low = flags & OF_GPIO_ACTIVE_LOW; -- led.name = of_get_property(child, "label", NULL) ? : child->name; -- led.default_trigger = -- of_get_property(child, "linux,default-trigger", NULL); -- state = of_get_property(child, "default-state", NULL); -- if (state) { -+ const char *state = NULL; -+ -+ led.gpiod = devm_get_gpiod_from_child(dev, child); -+ if (IS_ERR(led.gpiod)) { -+ fwnode_handle_put(child); -+ goto err; -+ } -+ -+ fwnode_property_read_string(child, "label", &led.name); -+ fwnode_property_read_string(child, "linux,default-trigger", -+ &led.default_trigger); -+ -+ if (!fwnode_property_read_string(child, "linux,default_state", -+ &state)) { - if (!strcmp(state, "keep")) - led.default_state = LEDS_GPIO_DEFSTATE_KEEP; - else if (!strcmp(state, "on")) -@@ -203,13 +203,13 @@ static struct gpio_leds_priv *gpio_leds_create_of(struct platform_device *pdev) - led.default_state = LEDS_GPIO_DEFSTATE_OFF; - } - -- if (of_get_property(child, "retain-state-suspended", NULL)) -+ if (fwnode_property_present(child, "retain-state-suspended")) - led.retain_state_suspended = 1; - - ret = create_gpio_led(&led, &priv->leds[priv->num_leds++], -- &pdev->dev, NULL); -+ dev, NULL); - if (ret < 0) { -- of_node_put(child); -+ fwnode_handle_put(child); - goto err; - } - } -@@ -228,12 +228,6 @@ static const struct of_device_id of_gpio_leds_match[] = { - }; - - MODULE_DEVICE_TABLE(of, of_gpio_leds_match); --#else /* CONFIG_OF_GPIO */ --static struct gpio_leds_priv *gpio_leds_create_of(struct platform_device *pdev) --{ -- return ERR_PTR(-ENODEV); --} --#endif /* CONFIG_OF_GPIO */ - - static int gpio_led_probe(struct platform_device *pdev) - { -@@ -261,7 +255,7 @@ static int gpio_led_probe(struct platform_device *pdev) - } - } - } else { -- priv = gpio_leds_create_of(pdev); -+ priv = gpio_leds_create(pdev); - if (IS_ERR(priv)) - return PTR_ERR(priv); - } -@@ -288,7 +282,7 @@ static struct platform_driver gpio_led_driver = { +@@ -291,6 +291,7 @@ static struct platform_driver gpio_led_driver = { + .remove = gpio_led_remove, .driver = { .name = "leds-gpio", - .owner = THIS_MODULE, -- .of_match_table = of_match_ptr(of_gpio_leds_match), -+ .of_match_table = of_gpio_leds_match, ++ .owner = THIS_MODULE, + .of_match_table = of_gpio_leds_match, }, }; - -diff --git a/drivers/misc/eeprom/at25.c b/drivers/misc/eeprom/at25.c -index 634f729..0a1af93 100644 ---- a/drivers/misc/eeprom/at25.c -+++ b/drivers/misc/eeprom/at25.c -@@ -18,7 +18,7 @@ - - #include <linux/spi/spi.h> - #include <linux/spi/eeprom.h> --#include <linux/of.h> -+#include <linux/property.h> - - /* - * NOTE: this is an *EEPROM* driver. The vagaries of product naming -@@ -301,35 +301,33 @@ static ssize_t at25_mem_write(struct memory_accessor *mem, const char *buf, - - /*-------------------------------------------------------------------------*/ - --static int at25_np_to_chip(struct device *dev, -- struct device_node *np, -- struct spi_eeprom *chip) -+static int at25_fw_to_chip(struct device *dev, struct spi_eeprom *chip) - { - u32 val; - - memset(chip, 0, sizeof(*chip)); -- strncpy(chip->name, np->name, sizeof(chip->name)); -+ strncpy(chip->name, "at25", sizeof(chip->name)); - -- if (of_property_read_u32(np, "size", &val) == 0 || -- of_property_read_u32(np, "at25,byte-len", &val) == 0) { -+ if (device_property_read_u32(dev, "size", &val) == 0 || -+ device_property_read_u32(dev, "at25,byte-len", &val) == 0) { - chip->byte_len = val; - } else { - dev_err(dev, "Error: missing \"size\" property\n"); - return -ENODEV; - } - -- if (of_property_read_u32(np, "pagesize", &val) == 0 || -- of_property_read_u32(np, "at25,page-size", &val) == 0) { -+ if (device_property_read_u32(dev, "pagesize", &val) == 0 || -+ device_property_read_u32(dev, "at25,page-size", &val) == 0) { - chip->page_size = (u16)val; - } else { - dev_err(dev, "Error: missing \"pagesize\" property\n"); - return -ENODEV; - } - -- if (of_property_read_u32(np, "at25,addr-mode", &val) == 0) { -+ if (device_property_read_u32(dev, "at25,addr-mode", &val) == 0) { - chip->flags = (u16)val; - } else { -- if (of_property_read_u32(np, "address-width", &val)) { -+ if (device_property_read_u32(dev, "address-width", &val)) { - dev_err(dev, - "Error: missing \"address-width\" property\n"); - return -ENODEV; -@@ -350,7 +348,7 @@ static int at25_np_to_chip(struct device *dev, - val); - return -ENODEV; - } -- if (of_find_property(np, "read-only", NULL)) -+ if (device_property_present(dev, "read-only")) - chip->flags |= EE_READONLY; - } - return 0; -@@ -360,21 +358,15 @@ static int at25_probe(struct spi_device *spi) - { - struct at25_data *at25 = NULL; - struct spi_eeprom chip; -- struct device_node *np = spi->dev.of_node; - int err; - int sr; - int addrlen; - - /* Chip description */ - if (!spi->dev.platform_data) { -- if (np) { -- err = at25_np_to_chip(&spi->dev, np, &chip); -- if (err) -- return err; -- } else { -- dev_err(&spi->dev, "Error: no chip description\n"); -- return -ENODEV; -- } -+ err = at25_fw_to_chip(&spi->dev, &chip); -+ if (err) -+ return err; - } else - chip = *(struct spi_eeprom *)spi->dev.platform_data; - -diff --git a/drivers/net/ethernet/amd/Kconfig b/drivers/net/ethernet/amd/Kconfig -index 8319c99..6feb6ef3 100644 ---- a/drivers/net/ethernet/amd/Kconfig -+++ b/drivers/net/ethernet/amd/Kconfig -@@ -179,7 +179,7 @@ config SUNLANCE - - config AMD_XGBE - tristate "AMD 10GbE Ethernet driver" -- depends on OF_NET -+ depends on OF_NET || ACPI - select PHYLIB - select AMD_XGBE_PHY - select BITREVERSE diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c -index 9da3a03..a34cad2 100644 +index 53f5f66..3957e63 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-dev.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-dev.c @@ -130,7 +130,7 @@ static unsigned int xgbe_usec_to_riwt(struct xgbe_prv_data *pdata, @@ -9389,7 +3544,7 @@ index 9da3a03..a34cad2 100644 /* * Convert the input watchdog timer value to the usec value. Each -@@ -695,6 +695,18 @@ static int xgbe_read_mmd_regs(struct xgbe_prv_data *pdata, int prtad, +@@ -854,6 +854,18 @@ static int xgbe_read_mmd_regs(struct xgbe_prv_data *pdata, int prtad, else mmd_address = (pdata->mdio_mmd << 16) | (mmd_reg & 0xffff); @@ -9408,22 +3563,8 @@ index 9da3a03..a34cad2 100644 /* The PCS registers are accessed using mmio. The underlying APB3 * management interface uses indirect addressing to access the MMD * register sets. This requires accessing of the PCS register in two -diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c -index 2349ea9..a04b18b 100644 ---- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c -+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c -@@ -425,6 +425,9 @@ void xgbe_get_all_hw_features(struct xgbe_prv_data *pdata) - hw_feat->rx_ch_cnt++; - hw_feat->tx_ch_cnt++; - -+ /* A0 does not support NUMTC, hardcode it for now */ -+ hw_feat->tc_cnt = XGBE_TC_CNT; -+ - DBGPR("<--xgbe_get_all_hw_features\n"); - } - diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-main.c b/drivers/net/ethernet/amd/xgbe/xgbe-main.c -index f5a8fa0..338c0ed 100644 +index dbd3850..74be78e 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-main.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-main.c @@ -124,6 +124,7 @@ @@ -9434,7 +3575,7 @@ index f5a8fa0..338c0ed 100644 #include "xgbe.h" #include "xgbe-common.h" -@@ -215,6 +216,205 @@ static void xgbe_init_all_fptrs(struct xgbe_prv_data *pdata) +@@ -161,6 +162,205 @@ static void xgbe_init_all_fptrs(struct xgbe_prv_data *pdata) xgbe_init_function_ptrs_desc(&pdata->desc_if); } @@ -9640,16 +3781,7 @@ index f5a8fa0..338c0ed 100644 static int xgbe_probe(struct platform_device *pdev) { struct xgbe_prv_data *pdata; -@@ -222,8 +422,6 @@ static int xgbe_probe(struct platform_device *pdev) - struct xgbe_desc_if *desc_if; - struct net_device *netdev; - struct device *dev = &pdev->dev; -- struct resource *res; -- const u8 *mac_addr; - int ret; - - DBGPR("--> xgbe_probe\n"); -@@ -239,6 +437,7 @@ static int xgbe_probe(struct platform_device *pdev) +@@ -186,6 +386,7 @@ static int xgbe_probe(struct platform_device *pdev) pdata = netdev_priv(netdev); pdata->netdev = netdev; pdata->pdev = pdev; @@ -9657,7 +3789,7 @@ index f5a8fa0..338c0ed 100644 pdata->dev = dev; platform_set_drvdata(pdev, netdev); -@@ -264,40 +463,13 @@ static int xgbe_probe(struct platform_device *pdev) +@@ -212,40 +413,13 @@ static int xgbe_probe(struct platform_device *pdev) goto err_io; } @@ -9704,34 +3836,20 @@ index f5a8fa0..338c0ed 100644 /* Set the DMA mask */ if (!dev->dma_mask) -@@ -308,23 +480,16 @@ static int xgbe_probe(struct platform_device *pdev) - goto err_io; - } - -- if (of_property_read_bool(dev->of_node, "dma-coherent")) { -- pdata->axdomain = XGBE_DMA_OS_AXDOMAIN; -- pdata->arcache = XGBE_DMA_OS_ARCACHE; -- pdata->awcache = XGBE_DMA_OS_AWCACHE; -- } else { -- pdata->axdomain = XGBE_DMA_SYS_AXDOMAIN; -- pdata->arcache = XGBE_DMA_SYS_ARCACHE; -- pdata->awcache = XGBE_DMA_SYS_AWCACHE; -- } -- -+ /* Get the device interrupt */ - ret = platform_get_irq(pdev, 0); - if (ret < 0) { - dev_err(dev, "platform_get_irq failed\n"); +@@ -275,10 +449,12 @@ static int xgbe_probe(struct platform_device *pdev) + dev_err(dev, "platform_get_irq 0 failed\n"); goto err_io; } + - netdev->irq = ret; + pdata->dev_irq = ret; + + netdev->irq = pdata->dev_irq; netdev->base_addr = (unsigned long)pdata->xgmac_regs; + memcpy(netdev->dev_addr, pdata->mac_addr, netdev->addr_len); /* Set all the function pointers */ xgbe_init_all_fptrs(pdata); -@@ -337,23 +502,6 @@ static int xgbe_probe(struct platform_device *pdev) +@@ -291,23 +467,6 @@ static int xgbe_probe(struct platform_device *pdev) /* Populate the hardware features */ xgbe_get_all_hw_features(pdata); @@ -9755,7 +3873,7 @@ index f5a8fa0..338c0ed 100644 /* Set default configuration data */ xgbe_default_config(pdata); -@@ -531,10 +679,22 @@ static int xgbe_resume(struct device *dev) +@@ -491,10 +650,22 @@ static int xgbe_resume(struct device *dev) } #endif /* CONFIG_PM */ @@ -9778,7 +3896,7 @@ index f5a8fa0..338c0ed 100644 MODULE_DEVICE_TABLE(of, xgbe_of_match); static SIMPLE_DEV_PM_OPS(xgbe_pm_ops, xgbe_suspend, xgbe_resume); -@@ -542,7 +702,12 @@ static SIMPLE_DEV_PM_OPS(xgbe_pm_ops, xgbe_suspend, xgbe_resume); +@@ -502,7 +673,12 @@ static SIMPLE_DEV_PM_OPS(xgbe_pm_ops, xgbe_suspend, xgbe_resume); static struct platform_driver xgbe_driver = { .driver = { .name = "amd-xgbe", @@ -9885,12 +4003,12 @@ index a1bf9d1c..fa67203 100644 /* Setup the timecounter */ cc->read = xgbe_cc_read; diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h -index 789957d..59498eb 100644 +index f9ec762..6f3a39e 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h -@@ -172,6 +172,12 @@ - #define XGBE_DMA_CLOCK "dma_clk" +@@ -187,6 +187,12 @@ #define XGBE_PTP_CLOCK "ptp_clk" + #define XGBE_DMA_IRQS "amd,per-channel-interrupt" +/* ACPI property names */ +#define XGBE_ACPI_MAC_ADDR "mac-address" @@ -9901,7 +4019,7 @@ index 789957d..59498eb 100644 /* Timestamp support - values based on 50MHz PTP clock * 50MHz => 20 nsec */ -@@ -186,8 +192,11 @@ +@@ -201,8 +207,11 @@ #define XGBE_FIFO_SIZE_B(x) (x) #define XGBE_FIFO_SIZE_KB(x) (x * 1024) @@ -9913,7 +4031,7 @@ index 789957d..59498eb 100644 /* Helper macro for descriptor handling * Always use XGBE_GET_DESC_DATA to access the descriptor data * since the index is free-running and needs to be and-ed -@@ -569,6 +578,7 @@ struct xgbe_hw_features { +@@ -650,6 +659,7 @@ struct xgbe_hw_features { struct xgbe_prv_data { struct net_device *netdev; struct platform_device *pdev; @@ -9921,7 +4039,7 @@ index 789957d..59498eb 100644 struct device *dev; /* XGMAC/XPCS related mmio registers */ -@@ -649,6 +659,7 @@ struct xgbe_prv_data { +@@ -739,6 +749,7 @@ struct xgbe_prv_data { unsigned int phy_rx_pause; /* Netdev related settings */ @@ -9929,7 +4047,7 @@ index 789957d..59498eb 100644 netdev_features_t netdev_features; struct napi_struct napi; struct xgbe_mmc_stats mmc_stats; -@@ -658,7 +669,9 @@ struct xgbe_prv_data { +@@ -748,7 +759,9 @@ struct xgbe_prv_data { /* Device clocks */ struct clk *sysclk; @@ -10047,7 +4165,7 @@ index 7ba83ff..29aad5e 100644 netdev_err(ndev, "Failed to register MDIO bus\n"); mdiobus_free(mdio_bus); diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c -index 1236696..f66598a 100644 +index 83a5028..f66598a 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -746,6 +746,42 @@ static const struct net_device_ops xgene_ndev_ops = { @@ -10093,34 +4211,46 @@ index 1236696..f66598a 100644 static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) { struct platform_device *pdev; -@@ -761,6 +797,8 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) +@@ -761,6 +797,12 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) ndev = pdata->ndev; res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "enet_csr"); + if (!res) + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - dev_err(dev, "Resource enet_csr not defined\n"); - return -ENODEV; -@@ -772,6 +810,8 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) ++ if (!res) { ++ dev_err(dev, "Resource enet_csr not defined\n"); ++ return -ENODEV; ++ } + pdata->base_addr = devm_ioremap_resource(dev, res); + if (IS_ERR(pdata->base_addr)) { + dev_err(dev, "Unable to retrieve ENET Port CSR region\n"); +@@ -768,6 +810,12 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) } res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ring_csr"); + if (!res) + res = platform_get_resource(pdev, IORESOURCE_MEM, 1); - if (!res) { - dev_err(dev, "Resource ring_csr not defined\n"); - return -ENODEV; -@@ -783,6 +823,8 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) ++ if (!res) { ++ dev_err(dev, "Resource ring_csr not defined\n"); ++ return -ENODEV; ++ } + pdata->ring_csr_addr = devm_ioremap_resource(dev, res); + if (IS_ERR(pdata->ring_csr_addr)) { + dev_err(dev, "Unable to retrieve ENET Ring CSR region\n"); +@@ -775,6 +823,12 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) } res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "ring_cmd"); + if (!res) + res = platform_get_resource(pdev, IORESOURCE_MEM, 2); - if (!res) { - dev_err(dev, "Resource ring_cmd not defined\n"); - return -ENODEV; -@@ -804,11 +846,13 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) ++ if (!res) { ++ dev_err(dev, "Resource ring_cmd not defined\n"); ++ return -ENODEV; ++ } + pdata->ring_cmd_addr = devm_ioremap_resource(dev, res); + if (IS_ERR(pdata->ring_cmd_addr)) { + dev_err(dev, "Unable to retrieve ENET Ring command region\n"); +@@ -792,11 +846,13 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) mac = of_get_mac_address(dev->of_node); if (mac) memcpy(ndev->dev_addr, mac, ndev->addr_len); @@ -10135,7 +4265,7 @@ index 1236696..f66598a 100644 if (pdata->phy_mode < 0) { dev_err(dev, "Unable to get phy-connection-type\n"); return pdata->phy_mode; -@@ -821,11 +865,12 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) +@@ -809,11 +865,12 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) } pdata->clk = devm_clk_get(&pdev->dev, NULL); @@ -10152,7 +4282,7 @@ index 1236696..f66598a 100644 } base_addr = pdata->base_addr; -@@ -875,7 +920,7 @@ static int xgene_enet_init_hw(struct xgene_enet_pdata *pdata) +@@ -863,7 +920,7 @@ static int xgene_enet_init_hw(struct xgene_enet_pdata *pdata) pdata->port_ops->cle_bypass(pdata, dst_ring_num, buf_pool->id); pdata->mac_ops->init(pdata); @@ -10161,7 +4291,7 @@ index 1236696..f66598a 100644 } static void xgene_enet_setup_ops(struct xgene_enet_pdata *pdata) -@@ -936,7 +981,7 @@ static int xgene_enet_probe(struct platform_device *pdev) +@@ -924,7 +981,7 @@ static int xgene_enet_probe(struct platform_device *pdev) goto err; } @@ -10170,7 +4300,7 @@ index 1236696..f66598a 100644 if (ret) { netdev_err(ndev, "No usable DMA configuration\n"); goto err; -@@ -984,6 +1029,14 @@ static int xgene_enet_remove(struct platform_device *pdev) +@@ -972,6 +1029,14 @@ static int xgene_enet_remove(struct platform_device *pdev) return 0; } @@ -10185,7 +4315,7 @@ index 1236696..f66598a 100644 static struct of_device_id xgene_enet_match[] = { {.compatible = "apm,xgene-enet",}, {}, -@@ -995,6 +1048,7 @@ static struct platform_driver xgene_enet_driver = { +@@ -983,6 +1048,7 @@ static struct platform_driver xgene_enet_driver = { .driver = { .name = "xgene-enet", .of_match_table = xgene_enet_match, @@ -10206,7 +4336,7 @@ index f9958fa..0e06cad 100644 #define XGENE_DRV_VERSION "v1.0" diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c -index 6cc3cf6..91c36a2 100644 +index 88a55f9..944b177 100644 --- a/drivers/net/ethernet/smsc/smc91x.c +++ b/drivers/net/ethernet/smsc/smc91x.c @@ -82,6 +82,7 @@ static const char version[] = @@ -10232,29 +4362,16 @@ index 6cc3cf6..91c36a2 100644 static struct platform_driver smc_driver = { .probe = smc_drv_probe, .remove = smc_drv_remove, -@@ -2475,6 +2484,7 @@ static struct platform_driver smc_driver = { - .owner = THIS_MODULE, +@@ -2474,6 +2483,7 @@ static struct platform_driver smc_driver = { + .name = CARDNAME, .pm = &smc_drv_pm_ops, .of_match_table = of_match_ptr(smc91x_match), + .acpi_match_table = ACPI_PTR(smc91x_acpi_match), }, }; -diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig -index 75472cf7..bacafe2 100644 ---- a/drivers/net/phy/Kconfig -+++ b/drivers/net/phy/Kconfig -@@ -26,7 +26,7 @@ config AMD_PHY - - config AMD_XGBE_PHY - tristate "Driver for the AMD 10GbE (amd-xgbe) PHYs" -- depends on OF -+ depends on OF || ACPI - ---help--- - Currently supports the AMD 10GbE PHY - diff --git a/drivers/net/phy/amd-xgbe-phy.c b/drivers/net/phy/amd-xgbe-phy.c -index c456559..d852c6e 100644 +index 903dc3d..fcc4fc7 100644 --- a/drivers/net/phy/amd-xgbe-phy.c +++ b/drivers/net/phy/amd-xgbe-phy.c @@ -74,15 +74,19 @@ @@ -10962,7 +5079,7 @@ index c456559..d852c6e 100644 netdev_info(phydev->attached_dev, "%s successful\n", an_supported ? "Auto negotiation" : "Parallel detection"); -@@ -1069,6 +1010,7 @@ static int amd_xgbe_phy_config_aneg(struct phy_device *phydev) +@@ -1070,6 +1011,7 @@ static int amd_xgbe_phy_config_aneg(struct phy_device *phydev) { struct amd_xgbe_phy_priv *priv = phydev->priv; u32 mmd_mask = phydev->c45_ids.devices_in_package; @@ -10970,7 +5087,7 @@ index c456559..d852c6e 100644 if (phydev->autoneg != AUTONEG_ENABLE) return amd_xgbe_phy_setup_forced(phydev); -@@ -1077,6 +1019,11 @@ static int amd_xgbe_phy_config_aneg(struct phy_device *phydev) +@@ -1078,6 +1020,11 @@ static int amd_xgbe_phy_config_aneg(struct phy_device *phydev) if (!(mmd_mask & MDIO_DEVS_AN)) return -EINVAL; @@ -10982,7 +5099,7 @@ index c456559..d852c6e 100644 /* Start/Restart the auto-negotiation state machine */ mutex_lock(&priv->an_mutex); priv->an_result = AMD_XGBE_AN_READY; -@@ -1166,14 +1113,18 @@ static int amd_xgbe_phy_read_status(struct phy_device *phydev) +@@ -1167,14 +1114,18 @@ static int amd_xgbe_phy_read_status(struct phy_device *phydev) { struct amd_xgbe_phy_priv *priv = phydev->priv; u32 mmd_mask = phydev->c45_ids.devices_in_package; @@ -11004,7 +5121,7 @@ index c456559..d852c6e 100644 if (!(mmd_mask & MDIO_DEVS_AN)) return -EINVAL; -@@ -1204,39 +1155,40 @@ static int amd_xgbe_phy_read_status(struct phy_device *phydev) +@@ -1205,39 +1156,40 @@ static int amd_xgbe_phy_read_status(struct phy_device *phydev) ad_ret &= lp_ret; if (ad_ret & 0x80) { phydev->speed = SPEED_10000; @@ -11065,7 +5182,7 @@ index c456559..d852c6e 100644 } phydev->duplex = DUPLEX_FULL; phydev->pause = 0; -@@ -1288,29 +1240,188 @@ unlock: +@@ -1289,29 +1241,188 @@ unlock: return ret; } @@ -11266,7 +5383,7 @@ index c456559..d852c6e 100644 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); if (!priv) { -@@ -1318,86 +1429,54 @@ static int amd_xgbe_phy_probe(struct phy_device *phydev) +@@ -1319,86 +1430,54 @@ static int amd_xgbe_phy_probe(struct phy_device *phydev) goto err_name; } @@ -11375,7 +5492,7 @@ index c456559..d852c6e 100644 err_priv: devm_kfree(dev, priv); -@@ -1405,9 +1484,6 @@ err_priv: +@@ -1406,9 +1485,6 @@ err_priv: err_name: kfree(wq_name); @@ -11385,7 +5502,7 @@ index c456559..d852c6e 100644 return ret; } -@@ -1424,18 +1500,7 @@ static void amd_xgbe_phy_remove(struct phy_device *phydev) +@@ -1425,18 +1501,7 @@ static void amd_xgbe_phy_remove(struct phy_device *phydev) flush_workqueue(priv->an_workqueue); destroy_workqueue(priv->an_workqueue); @@ -11405,52 +5522,8 @@ index c456559..d852c6e 100644 devm_kfree(dev, priv); } -diff --git a/drivers/of/base.c b/drivers/of/base.c -index 3823edf..4c2ccde 100644 ---- a/drivers/of/base.c -+++ b/drivers/of/base.c -@@ -1250,6 +1250,39 @@ int of_property_read_u64(const struct device_node *np, const char *propname, - EXPORT_SYMBOL_GPL(of_property_read_u64); - - /** -+ * of_property_read_u64_array - Find and read an array of 64 bit integers -+ * from a property. -+ * -+ * @np: device node from which the property value is to be read. -+ * @propname: name of the property to be searched. -+ * @out_values: pointer to return value, modified only if return value is 0. -+ * @sz: number of array elements to read -+ * -+ * Search for a property in a device node and read 64-bit value(s) from -+ * it. Returns 0 on success, -EINVAL if the property does not exist, -+ * -ENODATA if property does not have a value, and -EOVERFLOW if the -+ * property data isn't large enough. -+ * -+ * The out_values is modified only if a valid u64 value can be decoded. -+ */ -+int of_property_read_u64_array(const struct device_node *np, -+ const char *propname, u64 *out_values, -+ size_t sz) -+{ -+ const __be32 *val = of_find_property_value_of_size(np, propname, -+ (sz * sizeof(*out_values))); -+ -+ if (IS_ERR(val)) -+ return PTR_ERR(val); -+ -+ while (sz--) { -+ *out_values++ = of_read_number(val, 2); -+ val += 2; -+ } -+ return 0; -+} -+ -+/** - * of_property_read_string - Find and read a string from a property - * @np: device node from which the property value is to be read. - * @propname: name of the property to be searched. diff --git a/drivers/pci/host/pci-xgene.c b/drivers/pci/host/pci-xgene.c -index 2988fe1..9029d59c 100644 +index b1d0596..06b8f97 100644 --- a/drivers/pci/host/pci-xgene.c +++ b/drivers/pci/host/pci-xgene.c @@ -29,6 +29,7 @@ @@ -12052,10 +6125,10 @@ index 0000000..0f44624 + +MODULE_LICENSE("GPL v2"); diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c -index beea6ca..7038a2d 100644 +index 555de07..3991aa0 100644 --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c -@@ -310,10 +310,18 @@ static int dw8250_probe_of(struct uart_port *p, +@@ -351,10 +351,18 @@ static int dw8250_probe_of(struct uart_port *p, static int dw8250_probe_acpi(struct uart_8250_port *up, struct dw8250_data *data) { @@ -12074,7 +6147,7 @@ index beea6ca..7038a2d 100644 p->iotype = UPIO_MEM32; p->serial_in = dw8250_serial_in32; p->serial_out = dw8250_serial_out32; -@@ -536,6 +544,7 @@ static const struct acpi_device_id dw8250_acpi_match[] = { +@@ -577,6 +585,7 @@ static const struct acpi_device_id dw8250_acpi_match[] = { { "INT3435", 0 }, { "80860F0A", 0 }, { "8086228A", 0 }, @@ -12083,7 +6156,7 @@ index beea6ca..7038a2d 100644 }; MODULE_DEVICE_TABLE(acpi, dw8250_acpi_match); diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c -index ef9a165..9f1939c 100644 +index 00d115b..cd9b974 100644 --- a/drivers/virtio/virtio_mmio.c +++ b/drivers/virtio/virtio_mmio.c @@ -100,8 +100,7 @@ @@ -12096,7 +6169,7 @@ index ef9a165..9f1939c 100644 /* The alignment to use between consumer and producer parts of vring. * Currently hardcoded to the page size. */ -@@ -634,6 +633,14 @@ static struct of_device_id virtio_mmio_match[] = { +@@ -635,12 +634,21 @@ static struct of_device_id virtio_mmio_match[] = { }; MODULE_DEVICE_TABLE(of, virtio_mmio_match); @@ -12111,39 +6184,18 @@ index ef9a165..9f1939c 100644 static struct platform_driver virtio_mmio_driver = { .probe = virtio_mmio_probe, .remove = virtio_mmio_remove, -@@ -641,6 +648,7 @@ static struct platform_driver virtio_mmio_driver = { + .driver = { .name = "virtio-mmio", - .owner = THIS_MODULE, .of_match_table = virtio_mmio_match, + .acpi_match_table = ACPI_PTR(virtio_mmio_acpi_match), }, }; -diff --git a/drivers/xen/efi.c b/drivers/xen/efi.c -index 1f850c9..f745db2 100644 ---- a/drivers/xen/efi.c -+++ b/drivers/xen/efi.c -@@ -294,6 +294,7 @@ static const struct efi efi_xen __initconst = { - .acpi = EFI_INVALID_TABLE_ADDR, - .acpi20 = EFI_INVALID_TABLE_ADDR, - .smbios = EFI_INVALID_TABLE_ADDR, -+ .smbios3 = EFI_INVALID_TABLE_ADDR, - .sal_systab = EFI_INVALID_TABLE_ADDR, - .boot_info = EFI_INVALID_TABLE_ADDR, - .hcdp = EFI_INVALID_TABLE_ADDR, diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h -index f34a083..04d02fc 100644 +index 61e32ec..1fec6f5 100644 --- a/include/acpi/acpi_bus.h +++ b/include/acpi/acpi_bus.h -@@ -27,6 +27,7 @@ - #define __ACPI_BUS_H__ - - #include <linux/device.h> -+#include <linux/property.h> - - /* TBD: Make dynamic */ - #define ACPI_MAX_HANDLES 10 -@@ -68,6 +69,8 @@ bool acpi_check_dsm(acpi_handle handle, const u8 *uuid, int rev, u64 funcs); +@@ -69,6 +69,8 @@ bool acpi_check_dsm(acpi_handle handle, const u8 *uuid, int rev, u64 funcs); union acpi_object *acpi_evaluate_dsm(acpi_handle handle, const u8 *uuid, int rev, int func, union acpi_object *argv4); @@ -12152,61 +6204,6 @@ index f34a083..04d02fc 100644 static inline union acpi_object * acpi_evaluate_dsm_typed(acpi_handle handle, const u8 *uuid, int rev, int func, union acpi_object *argv4, acpi_object_type type) -@@ -337,10 +340,20 @@ struct acpi_device_physical_node { - bool put_online:1; - }; - -+/* ACPI Device Specific Data (_DSD) */ -+struct acpi_device_data { -+ const union acpi_object *pointer; -+ const union acpi_object *properties; -+ const union acpi_object *of_compatible; -+}; -+ -+struct acpi_gpio_mapping; -+ - /* Device */ - struct acpi_device { - int device_type; - acpi_handle handle; /* no handle for fixed hardware */ -+ struct fwnode_handle fwnode; - struct acpi_device *parent; - struct list_head children; - struct list_head node; -@@ -353,9 +366,11 @@ struct acpi_device { - struct acpi_device_wakeup wakeup; - struct acpi_device_perf performance; - struct acpi_device_dir dir; -+ struct acpi_device_data data; - struct acpi_scan_handler *handler; - struct acpi_hotplug_context *hp; - struct acpi_driver *driver; -+ const struct acpi_gpio_mapping *driver_gpios; - void *driver_data; - struct device dev; - unsigned int physical_node_count; -@@ -364,6 +379,21 @@ struct acpi_device { - void (*remove)(struct acpi_device *); - }; - -+static inline bool is_acpi_node(struct fwnode_handle *fwnode) -+{ -+ return fwnode && fwnode->type == FWNODE_ACPI; -+} -+ -+static inline struct acpi_device *acpi_node(struct fwnode_handle *fwnode) -+{ -+ return fwnode ? container_of(fwnode, struct acpi_device, fwnode) : NULL; -+} -+ -+static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) -+{ -+ return &adev->fwnode; -+} -+ - static inline void *acpi_driver_data(struct acpi_device *d) - { - return d->driver_data; diff --git a/include/acpi/acpi_io.h b/include/acpi/acpi_io.h index 444671e..9d573db 100644 --- a/include/acpi/acpi_io.h @@ -12230,10 +6227,10 @@ index 444671e..9d573db 100644 } diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h -index aa70cbd..1261fef 100644 +index bee5d68..140d514 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h -@@ -275,6 +275,13 @@ +@@ -276,6 +276,13 @@ VMLINUX_SYMBOL(__end_pci_fixups_suspend_late) = .; \ } \ \ @@ -12248,12 +6245,12 @@ index aa70cbd..1261fef 100644 .builtin_fw : AT(ADDR(.builtin_fw) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start_builtin_fw) = .; \ diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h -index 206dcc3..660dbfc 100644 +index ac4888d..d68268d 100644 --- a/include/kvm/arm_vgic.h +++ b/include/kvm/arm_vgic.h -@@ -289,17 +289,19 @@ bool vgic_handle_mmio(struct kvm_vcpu *vcpu, struct kvm_run *run, - #define irqchip_in_kernel(k) (!!((k)->arch.vgic.in_kernel)) - #define vgic_initialized(k) ((k)->arch.vgic.ready) +@@ -290,17 +290,19 @@ bool vgic_handle_mmio(struct kvm_vcpu *vcpu, struct kvm_run *run, + #define vgic_initialized(k) (!!((k)->arch.vgic.nr_cpus)) + #define vgic_ready(k) ((k)->arch.vgic.ready) -int vgic_v2_probe(struct device_node *vgic_node, - const struct vgic_ops **ops, @@ -12281,18 +6278,10 @@ index 206dcc3..660dbfc 100644 return -ENODEV; } diff --git a/include/linux/acpi.h b/include/linux/acpi.h -index 407a12f..de81de3 100644 +index 856d381..13e6200 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h -@@ -28,6 +28,7 @@ - #include <linux/errno.h> - #include <linux/ioport.h> /* for struct resource */ - #include <linux/device.h> -+#include <linux/property.h> - - #ifndef _LINUX - #define _LINUX -@@ -71,6 +72,7 @@ enum acpi_irq_model_id { +@@ -72,6 +72,7 @@ enum acpi_irq_model_id { ACPI_IRQ_MODEL_IOAPIC, ACPI_IRQ_MODEL_IOSAPIC, ACPI_IRQ_MODEL_PLATFORM, @@ -12300,171 +6289,6 @@ index 407a12f..de81de3 100644 ACPI_IRQ_MODEL_COUNT }; -@@ -123,6 +125,10 @@ int acpi_numa_init (void); - - int acpi_table_init (void); - int acpi_table_parse(char *id, acpi_tbl_table_handler handler); -+int __init acpi_parse_entries(unsigned long table_size, -+ acpi_tbl_entry_handler handler, -+ struct acpi_table_header *table_header, -+ int entry_id, unsigned int max_entries); - int __init acpi_table_parse_entries(char *id, unsigned long table_size, - int entry_id, - acpi_tbl_entry_handler handler, -@@ -423,12 +429,8 @@ extern int acpi_nvs_for_each_region(int (*func)(__u64, __u64, void *), - const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids, - const struct device *dev); - --static inline bool acpi_driver_match_device(struct device *dev, -- const struct device_driver *drv) --{ -- return !!acpi_match_device(drv->acpi_match_table, dev); --} -- -+extern bool acpi_driver_match_device(struct device *dev, -+ const struct device_driver *drv); - int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *); - int acpi_device_modalias(struct device *, char *, int); - -@@ -443,6 +445,23 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *); - #define ACPI_COMPANION_SET(dev, adev) do { } while (0) - #define ACPI_HANDLE(dev) (NULL) - -+struct fwnode_handle; -+ -+static inline bool is_acpi_node(struct fwnode_handle *fwnode) -+{ -+ return false; -+} -+ -+static inline struct acpi_device *acpi_node(struct fwnode_handle *fwnode) -+{ -+ return NULL; -+} -+ -+static inline struct fwnode_handle *acpi_fwnode_handle(struct acpi_device *adev) -+{ -+ return NULL; -+} -+ - static inline const char *acpi_dev_name(struct acpi_device *adev) - { - return NULL; -@@ -659,4 +678,114 @@ do { \ - #endif - #endif - -+struct acpi_gpio_params { -+ unsigned int crs_entry_index; -+ unsigned int line_index; -+ bool active_low; -+}; -+ -+struct acpi_gpio_mapping { -+ const char *name; -+ const struct acpi_gpio_params *data; -+ unsigned int size; -+}; -+ -+#if defined(CONFIG_ACPI) && defined(CONFIG_GPIOLIB) -+int acpi_dev_add_driver_gpios(struct acpi_device *adev, -+ const struct acpi_gpio_mapping *gpios); -+ -+static inline void acpi_dev_remove_driver_gpios(struct acpi_device *adev) -+{ -+ if (adev) -+ adev->driver_gpios = NULL; -+} -+#else -+static inline int acpi_dev_add_driver_gpios(struct acpi_device *adev, -+ const struct acpi_gpio_mapping *gpios) -+{ -+ return -ENXIO; -+} -+static inline void acpi_dev_remove_driver_gpios(struct acpi_device *adev) {} -+#endif -+ -+/* Device properties */ -+ -+#define MAX_ACPI_REFERENCE_ARGS 8 -+struct acpi_reference_args { -+ struct acpi_device *adev; -+ size_t nargs; -+ u64 args[MAX_ACPI_REFERENCE_ARGS]; -+}; -+ -+#ifdef CONFIG_ACPI -+int acpi_dev_get_property(struct acpi_device *adev, const char *name, -+ acpi_object_type type, const union acpi_object **obj); -+int acpi_dev_get_property_array(struct acpi_device *adev, const char *name, -+ acpi_object_type type, -+ const union acpi_object **obj); -+int acpi_dev_get_property_reference(struct acpi_device *adev, -+ const char *name, size_t index, -+ struct acpi_reference_args *args); -+ -+int acpi_dev_prop_get(struct acpi_device *adev, const char *propname, -+ void **valptr); -+int acpi_dev_prop_read_single(struct acpi_device *adev, const char *propname, -+ enum dev_prop_type proptype, void *val); -+int acpi_dev_prop_read(struct acpi_device *adev, const char *propname, -+ enum dev_prop_type proptype, void *val, size_t nval); -+ -+struct acpi_device *acpi_get_next_child(struct device *dev, -+ struct acpi_device *child); -+#else -+static inline int acpi_dev_get_property(struct acpi_device *adev, -+ const char *name, acpi_object_type type, -+ const union acpi_object **obj) -+{ -+ return -ENXIO; -+} -+static inline int acpi_dev_get_property_array(struct acpi_device *adev, -+ const char *name, -+ acpi_object_type type, -+ const union acpi_object **obj) -+{ -+ return -ENXIO; -+} -+static inline int acpi_dev_get_property_reference(struct acpi_device *adev, -+ const char *name, const char *cells_name, -+ size_t index, struct acpi_reference_args *args) -+{ -+ return -ENXIO; -+} -+ -+static inline int acpi_dev_prop_get(struct acpi_device *adev, -+ const char *propname, -+ void **valptr) -+{ -+ return -ENXIO; -+} -+ -+static inline int acpi_dev_prop_read_single(struct acpi_device *adev, -+ const char *propname, -+ enum dev_prop_type proptype, -+ void *val) -+{ -+ return -ENXIO; -+} -+ -+static inline int acpi_dev_prop_read(struct acpi_device *adev, -+ const char *propname, -+ enum dev_prop_type proptype, -+ void *val, size_t nval) -+{ -+ return -ENXIO; -+} -+ -+static inline struct acpi_device *acpi_get_next_child(struct device *dev, -+ struct acpi_device *child) -+{ -+ return NULL; -+} -+ -+#endif -+ - #endif /*_LINUX_ACPI_H*/ diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index abcafaa..4f5caa1 100644 --- a/include/linux/clocksource.h @@ -12480,76 +6304,6 @@ index abcafaa..4f5caa1 100644 +#endif + #endif /* _LINUX_CLOCKSOURCE_H */ -diff --git a/include/linux/efi.h b/include/linux/efi.h -index 0949f9c..0238d61 100644 ---- a/include/linux/efi.h -+++ b/include/linux/efi.h -@@ -547,6 +547,9 @@ void efi_native_runtime_setup(void); - #define SMBIOS_TABLE_GUID \ - EFI_GUID( 0xeb9d2d31, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d ) - -+#define SMBIOS3_TABLE_GUID \ -+ EFI_GUID( 0xf2fd1544, 0x9794, 0x4a2c, 0x99, 0x2e, 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 ) -+ - #define SAL_SYSTEM_TABLE_GUID \ - EFI_GUID( 0xeb9d2d32, 0x2d88, 0x11d3, 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d ) - -@@ -810,7 +813,8 @@ extern struct efi { - unsigned long mps; /* MPS table */ - unsigned long acpi; /* ACPI table (IA64 ext 0.71) */ - unsigned long acpi20; /* ACPI table (ACPI 2.0) */ -- unsigned long smbios; /* SM BIOS table */ -+ unsigned long smbios; /* SMBIOS table (32 bit entry point) */ -+ unsigned long smbios3; /* SMBIOS table (64 bit entry point) */ - unsigned long sal_systab; /* SAL system table */ - unsigned long boot_info; /* boot info table */ - unsigned long hcdp; /* HCDP table */ -diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h -index 12f146f..00b1b70 100644 ---- a/include/linux/gpio/consumer.h -+++ b/include/linux/gpio/consumer.h -@@ -94,6 +94,13 @@ int gpiod_to_irq(const struct gpio_desc *desc); - struct gpio_desc *gpio_to_desc(unsigned gpio); - int desc_to_gpio(const struct gpio_desc *desc); - -+/* Child properties interface */ -+struct fwnode_handle; -+ -+struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode, -+ const char *propname); -+struct gpio_desc *devm_get_gpiod_from_child(struct device *dev, -+ struct fwnode_handle *child); - #else /* CONFIG_GPIOLIB */ - - static inline struct gpio_desc *__must_check __gpiod_get(struct device *dev, -diff --git a/include/linux/gpio_keys.h b/include/linux/gpio_keys.h -index 8b62246..ee2d8c6 100644 ---- a/include/linux/gpio_keys.h -+++ b/include/linux/gpio_keys.h -@@ -2,6 +2,7 @@ - #define _GPIO_KEYS_H - - struct device; -+struct gpio_desc; - - /** - * struct gpio_keys_button - configuration parameters -@@ -17,6 +18,7 @@ struct device; - * disable button via sysfs - * @value: axis value for %EV_ABS - * @irq: Irq number in case of interrupt keys -+ * @gpiod: GPIO descriptor - */ - struct gpio_keys_button { - unsigned int code; -@@ -29,6 +31,7 @@ struct gpio_keys_button { - bool can_disable; - int value; - unsigned int irq; -+ struct gpio_desc *gpiod; - }; - - /** diff --git a/include/linux/irqchip/arm-gic-acpi.h b/include/linux/irqchip/arm-gic-acpi.h new file mode 100644 index 0000000..ad5b577 @@ -12588,7 +6342,7 @@ index 0000000..ad5b577 + +#endif /* ARM_GIC_ACPI_H_ */ diff --git a/include/linux/irqchip/arm-gic.h b/include/linux/irqchip/arm-gic.h -index 13eed92..dc9cb5f 100644 +index 71d706d..5c55f37 100644 --- a/include/linux/irqchip/arm-gic.h +++ b/include/linux/irqchip/arm-gic.h @@ -55,6 +55,8 @@ @@ -12600,131 +6354,11 @@ index 13eed92..dc9cb5f 100644 #define GICH_HCR 0x0 #define GICH_VTR 0x4 #define GICH_VMCR 0x8 -diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h -index a6059bd..e4d8f70 100644 ---- a/include/linux/kvm_host.h -+++ b/include/linux/kvm_host.h -@@ -43,6 +43,7 @@ - * include/linux/kvm_h. - */ - #define KVM_MEMSLOT_INVALID (1UL << 16) -+#define KVM_MEMSLOT_INCOHERENT (1UL << 17) - - /* Two fragments for cross MMIO pages. */ - #define KVM_MAX_MMIO_FRAGMENTS 2 -diff --git a/include/linux/leds.h b/include/linux/leds.h -index a57611d..361101f 100644 ---- a/include/linux/leds.h -+++ b/include/linux/leds.h -@@ -261,6 +261,7 @@ struct gpio_led { - unsigned retain_state_suspended : 1; - unsigned default_state : 2; - /* default_state should be one of LEDS_GPIO_DEFSTATE_(ON|OFF|KEEP) */ -+ struct gpio_desc *gpiod; - }; - #define LEDS_GPIO_DEFSTATE_OFF 0 - #define LEDS_GPIO_DEFSTATE_ON 1 -@@ -273,7 +274,7 @@ struct gpio_led_platform_data { - #define GPIO_LED_NO_BLINK_LOW 0 /* No blink GPIO state low */ - #define GPIO_LED_NO_BLINK_HIGH 1 /* No blink GPIO state high */ - #define GPIO_LED_BLINK 2 /* Please, blink */ -- int (*gpio_blink_set)(unsigned gpio, int state, -+ int (*gpio_blink_set)(struct gpio_desc *desc, int state, - unsigned long *delay_on, - unsigned long *delay_off); - }; -diff --git a/include/linux/of.h b/include/linux/of.h -index 29f0adc..cf79be1 100644 ---- a/include/linux/of.h -+++ b/include/linux/of.h -@@ -23,6 +23,7 @@ - #include <linux/spinlock.h> - #include <linux/topology.h> - #include <linux/notifier.h> -+#include <linux/property.h> - - #include <asm/byteorder.h> - #include <asm/errno.h> -@@ -49,6 +50,7 @@ struct device_node { - const char *type; - phandle phandle; - const char *full_name; -+ struct fwnode_handle fwnode; - - struct property *properties; - struct property *deadprops; /* removed properties */ -@@ -79,6 +81,7 @@ extern struct kobj_type of_node_ktype; - static inline void of_node_init(struct device_node *node) - { - kobject_init(&node->kobj, &of_node_ktype); -+ node->fwnode.type = FWNODE_OF; - } - - /* true when node is initialized */ -@@ -114,6 +117,16 @@ extern struct device_node *of_aliases; - extern struct device_node *of_stdout; - extern raw_spinlock_t devtree_lock; - -+static inline bool is_of_node(struct fwnode_handle *fwnode) -+{ -+ return fwnode && fwnode->type == FWNODE_OF; -+} -+ -+static inline struct device_node *of_node(struct fwnode_handle *fwnode) -+{ -+ return fwnode ? container_of(fwnode, struct device_node, fwnode) : NULL; -+} -+ - static inline bool of_have_populated_dt(void) - { - return of_allnodes != NULL; -@@ -263,6 +276,10 @@ extern int of_property_read_u32_array(const struct device_node *np, - size_t sz); - extern int of_property_read_u64(const struct device_node *np, - const char *propname, u64 *out_value); -+extern int of_property_read_u64_array(const struct device_node *np, -+ const char *propname, -+ u64 *out_values, -+ size_t sz); - - extern int of_property_read_string(struct device_node *np, - const char *propname, -@@ -355,6 +372,16 @@ bool of_console_check(struct device_node *dn, char *name, int index); - - #else /* CONFIG_OF */ - -+static inline bool is_of_node(struct fwnode_handle *fwnode) -+{ -+ return false; -+} -+ -+static inline struct device_node *of_node(struct fwnode_handle *fwnode) -+{ -+ return NULL; -+} -+ - static inline const char* of_node_full_name(const struct device_node *np) - { - return "<no-node>"; -@@ -477,6 +504,13 @@ static inline int of_property_read_u32_array(const struct device_node *np, - return -ENOSYS; - } - -+static inline int of_property_read_u64_array(const struct device_node *np, -+ const char *propname, -+ u64 *out_values, size_t sz) -+{ -+ return -ENOSYS; -+} -+ - static inline int of_property_read_string(struct device_node *np, - const char *propname, - const char **out_string) diff --git a/include/linux/pci.h b/include/linux/pci.h -index 4c8ac5f..ea663d8 100644 +index 360a966..1476a66 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h -@@ -563,15 +563,6 @@ struct pci_ops { +@@ -564,15 +564,6 @@ struct pci_ops { int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val); }; @@ -12740,7 +6374,7 @@ index 4c8ac5f..ea663d8 100644 struct pci_bus_region { dma_addr_t start; dma_addr_t end; -@@ -1326,6 +1317,16 @@ typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode, +@@ -1329,6 +1320,16 @@ typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode, unsigned int command_bits, u32 flags); void pci_register_set_vga_state(arch_set_vga_state_t func); @@ -12757,7 +6391,7 @@ index 4c8ac5f..ea663d8 100644 #else /* CONFIG_PCI is not enabled */ /* -@@ -1427,6 +1428,23 @@ static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus, +@@ -1430,6 +1431,23 @@ static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus, unsigned int devfn) { return NULL; } @@ -12781,7 +6415,7 @@ index 4c8ac5f..ea663d8 100644 static inline int pci_domain_nr(struct pci_bus *bus) { return 0; } static inline struct pci_dev *pci_dev_get(struct pci_dev *dev) { return NULL; } static inline int pci_get_new_domain_nr(void) { return -ENOSYS; } -@@ -1636,7 +1654,6 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev, +@@ -1639,7 +1657,6 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state); int pcibios_add_device(struct pci_dev *dev); void pcibios_release_device(struct pci_dev *dev); @@ -12789,214 +6423,8 @@ index 4c8ac5f..ea663d8 100644 #ifdef CONFIG_HIBERNATE_CALLBACKS extern struct dev_pm_ops pcibios_pm_ops; -diff --git a/include/linux/property.h b/include/linux/property.h -new file mode 100644 -index 0000000..a6a3d98 ---- /dev/null -+++ b/include/linux/property.h -@@ -0,0 +1,143 @@ -+/* -+ * property.h - Unified device property interface. -+ * -+ * Copyright (C) 2014, Intel Corporation -+ * Authors: Rafael J. Wysocki <rafael.j.wysocki@intel.com> -+ * Mika Westerberg <mika.westerberg@linux.intel.com> -+ * -+ * This program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License version 2 as -+ * published by the Free Software Foundation. -+ */ -+ -+#ifndef _LINUX_PROPERTY_H_ -+#define _LINUX_PROPERTY_H_ -+ -+#include <linux/types.h> -+ -+struct device; -+ -+enum dev_prop_type { -+ DEV_PROP_U8, -+ DEV_PROP_U16, -+ DEV_PROP_U32, -+ DEV_PROP_U64, -+ DEV_PROP_STRING, -+ DEV_PROP_MAX, -+}; -+ -+bool device_property_present(struct device *dev, const char *propname); -+int device_property_read_u8_array(struct device *dev, const char *propname, -+ u8 *val, size_t nval); -+int device_property_read_u16_array(struct device *dev, const char *propname, -+ u16 *val, size_t nval); -+int device_property_read_u32_array(struct device *dev, const char *propname, -+ u32 *val, size_t nval); -+int device_property_read_u64_array(struct device *dev, const char *propname, -+ u64 *val, size_t nval); -+int device_property_read_string_array(struct device *dev, const char *propname, -+ const char **val, size_t nval); -+int device_property_read_string(struct device *dev, const char *propname, -+ const char **val); -+ -+enum fwnode_type { -+ FWNODE_INVALID = 0, -+ FWNODE_OF, -+ FWNODE_ACPI, -+}; -+ -+struct fwnode_handle { -+ enum fwnode_type type; -+}; -+ -+bool fwnode_property_present(struct fwnode_handle *fwnode, const char *propname); -+int fwnode_property_read_u8_array(struct fwnode_handle *fwnode, -+ const char *propname, u8 *val, -+ size_t nval); -+int fwnode_property_read_u16_array(struct fwnode_handle *fwnode, -+ const char *propname, u16 *val, -+ size_t nval); -+int fwnode_property_read_u32_array(struct fwnode_handle *fwnode, -+ const char *propname, u32 *val, -+ size_t nval); -+int fwnode_property_read_u64_array(struct fwnode_handle *fwnode, -+ const char *propname, u64 *val, -+ size_t nval); -+int fwnode_property_read_string_array(struct fwnode_handle *fwnode, -+ const char *propname, const char **val, -+ size_t nval); -+int fwnode_property_read_string(struct fwnode_handle *fwnode, -+ const char *propname, const char **val); -+ -+struct fwnode_handle *device_get_next_child_node(struct device *dev, -+ struct fwnode_handle *child); -+ -+#define device_for_each_child_node(dev, child) \ -+ for (child = device_get_next_child_node(dev, NULL); child; \ -+ child = device_get_next_child_node(dev, child)) -+ -+void fwnode_handle_put(struct fwnode_handle *fwnode); -+ -+unsigned int device_get_child_node_count(struct device *dev); -+ -+static inline bool device_property_read_bool(struct device *dev, -+ const char *propname) -+{ -+ return device_property_present(dev, propname); -+} -+ -+static inline int device_property_read_u8(struct device *dev, -+ const char *propname, u8 *val) -+{ -+ return device_property_read_u8_array(dev, propname, val, 1); -+} -+ -+static inline int device_property_read_u16(struct device *dev, -+ const char *propname, u16 *val) -+{ -+ return device_property_read_u16_array(dev, propname, val, 1); -+} -+ -+static inline int device_property_read_u32(struct device *dev, -+ const char *propname, u32 *val) -+{ -+ return device_property_read_u32_array(dev, propname, val, 1); -+} -+ -+static inline int device_property_read_u64(struct device *dev, -+ const char *propname, u64 *val) -+{ -+ return device_property_read_u64_array(dev, propname, val, 1); -+} -+ -+static inline bool fwnode_property_read_bool(struct fwnode_handle *fwnode, -+ const char *propname) -+{ -+ return fwnode_property_present(fwnode, propname); -+} -+ -+static inline int fwnode_property_read_u8(struct fwnode_handle *fwnode, -+ const char *propname, u8 *val) -+{ -+ return fwnode_property_read_u8_array(fwnode, propname, val, 1); -+} -+ -+static inline int fwnode_property_read_u16(struct fwnode_handle *fwnode, -+ const char *propname, u16 *val) -+{ -+ return fwnode_property_read_u16_array(fwnode, propname, val, 1); -+} -+ -+static inline int fwnode_property_read_u32(struct fwnode_handle *fwnode, -+ const char *propname, u32 *val) -+{ -+ return fwnode_property_read_u32_array(fwnode, propname, val, 1); -+} -+ -+static inline int fwnode_property_read_u64(struct fwnode_handle *fwnode, -+ const char *propname, u64 *val) -+{ -+ return fwnode_property_read_u64_array(fwnode, propname, val, 1); -+} -+ -+#endif /* _LINUX_PROPERTY_H_ */ -diff --git a/net/rfkill/rfkill-gpio.c b/net/rfkill/rfkill-gpio.c -index 0f62326..2a47179 100644 ---- a/net/rfkill/rfkill-gpio.c -+++ b/net/rfkill/rfkill-gpio.c -@@ -63,6 +63,15 @@ static const struct rfkill_ops rfkill_gpio_ops = { - .set_block = rfkill_gpio_set_power, - }; - -+static const struct acpi_gpio_params reset_gpios = { 0, 0, false }; -+static const struct acpi_gpio_params shutdown_gpios = { 1, 0, false }; -+ -+static const struct acpi_gpio_mapping acpi_rfkill_default_gpios[] = { -+ { "reset-gpios", &reset_gpios, 1 }, -+ { "shutdown-gpios", &shutdown_gpios, 1 }, -+ { }, -+}; -+ - static int rfkill_gpio_acpi_probe(struct device *dev, - struct rfkill_gpio_data *rfkill) - { -@@ -75,7 +84,8 @@ static int rfkill_gpio_acpi_probe(struct device *dev, - rfkill->name = dev_name(dev); - rfkill->type = (unsigned)id->driver_data; - -- return 0; -+ return acpi_dev_add_driver_gpios(ACPI_COMPANION(dev), -+ acpi_rfkill_default_gpios); - } - - static int rfkill_gpio_probe(struct platform_device *pdev) -@@ -102,7 +112,7 @@ static int rfkill_gpio_probe(struct platform_device *pdev) - - rfkill->clk = devm_clk_get(&pdev->dev, NULL); - -- gpio = devm_gpiod_get_index(&pdev->dev, "reset", 0); -+ gpio = devm_gpiod_get(&pdev->dev, "reset"); - if (!IS_ERR(gpio)) { - ret = gpiod_direction_output(gpio, 0); - if (ret) -@@ -110,7 +120,7 @@ static int rfkill_gpio_probe(struct platform_device *pdev) - rfkill->reset_gpio = gpio; - } - -- gpio = devm_gpiod_get_index(&pdev->dev, "shutdown", 1); -+ gpio = devm_gpiod_get(&pdev->dev, "shutdown"); - if (!IS_ERR(gpio)) { - ret = gpiod_direction_output(gpio, 0); - if (ret) -@@ -150,6 +160,8 @@ static int rfkill_gpio_remove(struct platform_device *pdev) - rfkill_unregister(rfkill->rfkill_dev); - rfkill_destroy(rfkill->rfkill_dev); - -+ acpi_dev_remove_driver_gpios(ACPI_COMPANION(&pdev->dev)); -+ - return 0; - } - diff --git a/virt/kvm/arm/arch_timer.c b/virt/kvm/arm/arch_timer.c -index 22fa819..642dad4 100644 +index 1c0772b..b9d11aa 100644 --- a/virt/kvm/arm/arch_timer.c +++ b/virt/kvm/arm/arch_timer.c @@ -21,9 +21,11 @@ @@ -13011,7 +6439,7 @@ index 22fa819..642dad4 100644 #include <kvm/arm_vgic.h> #include <kvm/arm_arch_timer.h> -@@ -244,60 +246,91 @@ static const struct of_device_id arch_timer_of_match[] = { +@@ -246,60 +248,91 @@ static const struct of_device_id arch_timer_of_match[] = { {}, }; @@ -13301,7 +6729,7 @@ index 1c2c8ee..8b56920 100644 int ret = 0; u32 gicv_idx; diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c -index aacdb59..d972d63 100644 +index 03affc7..cdd4c64 100644 --- a/virt/kvm/arm/vgic.c +++ b/virt/kvm/arm/vgic.c @@ -25,9 +25,11 @@ @@ -13316,7 +6744,7 @@ index aacdb59..d972d63 100644 #include <asm/kvm_emulate.h> #include <asm/kvm_arm.h> #include <asm/kvm_mmu.h> -@@ -2427,8 +2429,8 @@ static struct notifier_block vgic_cpu_nb = { +@@ -2431,8 +2433,8 @@ static struct notifier_block vgic_cpu_nb = { }; static const struct of_device_id vgic_ids[] = { @@ -13327,7 +6755,7 @@ index aacdb59..d972d63 100644 {}, }; -@@ -2438,20 +2440,26 @@ int kvm_vgic_hyp_init(void) +@@ -2442,20 +2444,26 @@ int kvm_vgic_hyp_init(void) const int (*vgic_probe)(struct device_node *,const struct vgic_ops **, const struct vgic_params **); struct device_node *vgic_node; diff --git a/freed-ora/current/f20/kernel.spec b/freed-ora/current/f20/kernel.spec index 5ce50fa9a..1a39fa677 100644 --- a/freed-ora/current/f20/kernel.spec +++ b/freed-ora/current/f20/kernel.spec @@ -68,7 +68,7 @@ Summary: The Linux kernel # base_sublevel is the kernel version we're starting with and patching # on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base, # which yields a base_sublevel of 0. -%define base_sublevel 18 +%define base_sublevel 19 # librev starts empty, then 1, etc, as the linux-libre tarball # changes. This is only used to determine which tarball to use. @@ -112,7 +112,7 @@ Summary: The Linux kernel %if 0%{?released_kernel} # Do we have a -stable update to apply? -%define stable_update 9 +%define stable_update 3 # Is it a -stable RC? %define stable_rc 0 # Set rpm version accordingly @@ -734,7 +734,8 @@ Patch1019: Add-sysrq-option-to-disable-secure-boot-mode.patch # nouveau + drm fixes # intel drm is all merged upstream -Patch1826: drm-i915-tame-the-chattermouth-v2.patch +Patch1825: drm-i915-tame-the-chattermouth-v2.patch +Patch1826: drm-i915-hush-check-crtc-state.patch Patch1827: drm-i915-Disable-verbose-state-checks.patch # Quiet boot fixes @@ -766,7 +767,11 @@ Patch21025: arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch Patch21026: pinctrl-pinctrl-single-must-be-initialized-early.patch Patch21028: arm-i.MX6-Utilite-device-dtb.patch -Patch21029: arm-dts-sun7i-bananapi.patch + +# IOMMU crash fixes - https://lists.linuxfoundation.org/pipermail/iommu/2015-February/012329.html +Patch21030: iommu-omap-Play-nice-in-multi-platform-builds.patch +Patch21031: iommu-exynos-Play-nice-in-multi-platform-builds.patch +Patch21032: iommu-rockchip-Play-nice-in-multi-platform-builds.patch Patch21100: arm-highbank-l2-reverts.patch @@ -781,51 +786,56 @@ Patch21247: ath9k-rx-dma-stop-check.patch Patch22000: weird-root-dentry-name-debug.patch -# Patch series from Hans for various backlight and platform driver fixes -Patch26002: samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch - -#rhbz 1089731 -Patch26058: asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch - -#rhbz 1135338 -Patch26090: HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch - -#rhbz 1173806 -Patch26101: powerpc-powernv-force-all-CPUs-to-be-bootable.patch - -#rhbz 1163927 -Patch26121: Set-UID-in-sess_auth_rawntlmssp_authenticate-too.patch - -#rhbz 1124119 -Patch26126: uas-Do-not-blacklist-ASM1153-disk-enclosures.patch -Patch26127: uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch - -#rhbz 1163574 -Patch26130: acpi-video-Add-disable_native_backlight-quirk-for-De.patch #rhbz 1094948 Patch26131: acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch -# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel -Patch30000: kernel-arm64.patch - -# Fix for big-endian arches, already upstream -Patch30001: mpssd-x86-only.patch - #rhbz 1186097 -Patch30004: acpi-video-add-disable_native_backlight_quirk_for_samsung_510r.patch +Patch26135: acpi-video-add-disable_native_backlight_quirk_for_samsung_510r.patch #CVE-XXXX-XXXX rhbz 1189864 1192079 Patch26136: vhost-scsi-potential-memory-corruption.patch -#rhbz 1185519 -Patch26142: NFS-fix-clp-cl_revoked-list-deletion-causing-softloc.patch - #CVE-2015-0275 rhbz 1193907 1195178 Patch26138: ext4-Allocate-entire-range-in-zero-range.patch #rhbz 1190947 Patch26141: Bluetooth-ath3k-Add-support-Atheros-AR5B195-combo-Mi.patch +#rhbz 1200777 1200778 +Patch26150: Input-synaptics-split-synaptics_resolution-query-fir.patch +Patch26151: Input-synaptics-log-queried-and-quirked-dimension-va.patch +Patch26152: Input-synaptics-query-min-dimensions-for-fw-v8.1.patch +Patch26153: Input-synaptics-remove-obsolete-min-max-quirk-for-X2.patch +Patch26154: Input-synaptics-support-min-max-board-id-in-min_max_.patch +Patch26155: Input-synaptics-skip-quirks-when-post-2013-dimension.patch +Patch26156: Input-synaptics-fix-middle-button-on-Lenovo-2015-pro.patch +Patch26157: Input-synaptics-handle-spurious-release-of-trackstic.patch +Patch26158: Input-synaptics-do-not-retrieve-the-board-id-on-old-.patch +Patch26159: Input-synaptics-retrieve-the-extended-capabilities-i.patch +Patch26160: Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch +Patch26161: Input-synaptics-re-route-tracksticks-buttons-on-the-.patch +Patch26162: Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch +Patch26163: Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch + +#CVE-2014-8159 rhbz 1181166 1200950 +Patch26167: IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch + +#rhbz 1201532 +Patch26168: HID-multitouch-add-support-of-clickpads.patch + +#rhbz 1187004 +Patch26170: acpi-video-Allow-forcing-native-backlight-on-non-win.patch +Patch26171: acpi-video-Add-force-native-backlight-quirk-for-Leno.patch + +#CVE-2015-2666 rhbz 1204724 1204722 +Patch26172: x86-microcode-intel-Guard-against-stack-overflow-in-.patch + +# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel +Patch30000: kernel-arm64.patch + +#rhbz 1204512 +Patch26174: tun-return-proper-error-code-from-tun_do_read.patch + # END OF PATCH DEFINITIONS %endif @@ -1451,7 +1461,10 @@ ApplyPatch arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch ApplyPatch pinctrl-pinctrl-single-must-be-initialized-early.patch ApplyPatch arm-i.MX6-Utilite-device-dtb.patch -ApplyPatch arm-dts-sun7i-bananapi.patch + +ApplyPatch iommu-omap-Play-nice-in-multi-platform-builds.patch +ApplyPatch iommu-exynos-Play-nice-in-multi-platform-builds.patch +ApplyPatch iommu-rockchip-Play-nice-in-multi-platform-builds.patch ApplyPatch arm-highbank-l2-reverts.patch @@ -1547,7 +1560,8 @@ ApplyPatch Add-sysrq-option-to-disable-secure-boot-mode.patch # Intel DRM ApplyPatch drm-i915-tame-the-chattermouth-v2.patch -ApplyPatch drm-i915-Disable-verbose-state-checks.patch +ApplyPatch drm-i915-hush-check-crtc-state.patch +ApplyPatch drm-i915-Disable-verbose-state-checks.patch # Radeon DRM @@ -1573,33 +1587,9 @@ ApplyPatch criu-no-expert.patch #rhbz 892811 ApplyPatch ath9k-rx-dma-stop-check.patch -# Patch series from Hans for various backlight and platform driver fixes -ApplyPatch samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch - -#rhbz 1089731 -ApplyPatch asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch - -#rhbz 1135338 -ApplyPatch HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch - -#rhbz 1173806 -ApplyPatch powerpc-powernv-force-all-CPUs-to-be-bootable.patch - -#rhbz 1163927 -ApplyPatch Set-UID-in-sess_auth_rawntlmssp_authenticate-too.patch - -#rhbz 1124119 -ApplyPatch uas-Do-not-blacklist-ASM1153-disk-enclosures.patch -ApplyPatch uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch - -#rhbz 1163574 -ApplyPatch acpi-video-Add-disable_native_backlight-quirk-for-De.patch #rhbz 1094948 ApplyPatch acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch -# Fix for big-endian arches, already upstream -ApplyPatch mpssd-x86-only.patch - #rhbz 1186097 ApplyPatch acpi-video-add-disable_native_backlight_quirk_for_samsung_510r.patch @@ -1612,8 +1602,34 @@ ApplyPatch ext4-Allocate-entire-range-in-zero-range.patch #rhbz 1190947 ApplyPatch Bluetooth-ath3k-Add-support-Atheros-AR5B195-combo-Mi.patch -#rhbz 1185519 -ApplyPatch NFS-fix-clp-cl_revoked-list-deletion-causing-softloc.patch +#rhbz 1200777 1200778 +ApplyPatch Input-synaptics-split-synaptics_resolution-query-fir.patch +ApplyPatch Input-synaptics-log-queried-and-quirked-dimension-va.patch +ApplyPatch Input-synaptics-query-min-dimensions-for-fw-v8.1.patch +ApplyPatch Input-synaptics-remove-obsolete-min-max-quirk-for-X2.patch +ApplyPatch Input-synaptics-support-min-max-board-id-in-min_max_.patch +ApplyPatch Input-synaptics-skip-quirks-when-post-2013-dimension.patch +ApplyPatch Input-synaptics-fix-middle-button-on-Lenovo-2015-pro.patch +ApplyPatch Input-synaptics-handle-spurious-release-of-trackstic.patch +ApplyPatch Input-synaptics-do-not-retrieve-the-board-id-on-old-.patch +ApplyPatch Input-synaptics-retrieve-the-extended-capabilities-i.patch +ApplyPatch Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch +ApplyPatch Input-synaptics-re-route-tracksticks-buttons-on-the-.patch +ApplyPatch Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch +ApplyPatch Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch + +#CVE-2014-8159 rhbz 1181166 1200950 +ApplyPatch IB-core-Prevent-integer-overflow-in-ib_umem_get-addr.patch + +#rhbz 1201532 +ApplyPatch HID-multitouch-add-support-of-clickpads.patch + +#rhbz 1187004 +ApplyPatch acpi-video-Allow-forcing-native-backlight-on-non-win.patch +ApplyPatch acpi-video-Add-force-native-backlight-quirk-for-Leno.patch + +#CVE-2015-2666 rhbz 1204724 1204722 +ApplyPatch x86-microcode-intel-Guard-against-stack-overflow-in-.patch %if 0%{?aarch64patches} ApplyPatch kernel-arm64.patch @@ -1622,6 +1638,9 @@ ApplyPatch kernel-arm64.patch -R %endif %endif +#rhbz 1204512 +ApplyPatch tun-return-proper-error-code-from-tun_do_read.patch + # END OF PATCH APPLICATIONS %endif @@ -2444,6 +2463,33 @@ fi # ||----w | # || || %changelog +* Fri Mar 27 2015 Alexandre Oliva <lxoliva@fsfla.org> -libre +- GNU Linux-libre 3.19.3-gnu. + +* Fri Mar 27 2015 Justin M. Forbes <jforbes@fedoraproject.org> - 3.19.3-100 +- Linux v3.19.3 rebase (rhbz 1205088) + +* Mon Mar 23 2015 Josh Boyer <jwboyer@fedoraproject.org> +- CVE-2015-2672 unprivileged DoS du to mis-protected xsave/xstor instructions (rhbz 1204724 1204729) +- CVE-2015-2666 execution in the early microcode loader (rhbz 1204724 1204722) + +* Fri Mar 20 2015 Josh Boyer <jwboyer@fedoraproject.org> +- Fix brightness on Lenovo Ideapad Z570 (rhbz 1187004) + +* Fri Mar 13 2015 Josh Boyer <jwboyer@fedoraproject.org> +- Add patch to support clickpads (rhbz 1201532) + +* Thu Mar 12 2015 Josh Boyer <jwboyer@fedoraproject.org> +- CVE-2014-8159 infiniband: uverbs: unprotected physical memory access (rhbz 1181166 1200950) + +* Wed Mar 11 2015 Josh Boyer <jwboyer@fedoraproject.org> +- Fix blank screen after resume with various radeon devices (rhbz 1069027) +- CVE-2015-2150 xen: NMIs triggerable by guests (rhbz 1196266 1200397) +- Patch series to fix Lenovo *40 and Carbon X1 touchpads (rhbz 1200777 1200778) + +* Tue Mar 10 2015 Josh Boyer <jwboyer@fedoraproject.org> +- CVE-2015-2042 rds: information handling flaw in sysctl (rhbz 1195355 1199365) + * Mon Mar 9 2015 Alexandre Oliva <lxoliva@fsfla.org> -libre - GNU Linux-libre 3.18.9-gnu. diff --git a/freed-ora/current/f20/linux-libre-3.18-gnu.tar.xz.sign b/freed-ora/current/f20/linux-libre-3.18-gnu.tar.xz.sign deleted file mode 100644 index 5b21470ec..000000000 --- a/freed-ora/current/f20/linux-libre-3.18-gnu.tar.xz.sign +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2 - -iEYEABECAAYFAlSFABIACgkQvLfPh359R6cTTwCgq7J6DJtWdrAdK7lZC2wv4COn -IPsAnizschjkGqNOn2nmAUCOxRbtJxHQ -=UCBH ------END PGP SIGNATURE----- diff --git a/freed-ora/current/f20/linux-libre-3.18-gnu.xdelta.xz b/freed-ora/current/f20/linux-libre-3.18-gnu.xdelta.xz Binary files differdeleted file mode 100644 index 7079b9a3e..000000000 --- a/freed-ora/current/f20/linux-libre-3.18-gnu.xdelta.xz +++ /dev/null diff --git a/freed-ora/current/f20/linux-libre-3.18-gnu.xdelta.xz.sign b/freed-ora/current/f20/linux-libre-3.18-gnu.xdelta.xz.sign deleted file mode 100644 index 71924c2b0..000000000 --- a/freed-ora/current/f20/linux-libre-3.18-gnu.xdelta.xz.sign +++ /dev/null @@ -1,7 +0,0 @@ ------BEGIN PGP SIGNATURE----- -Version: GnuPG v2 - -iEYEABECAAYFAlSFABMACgkQvLfPh359R6eeIwCffCEotrIP36XvUK5RHzF+y6wA -aBAAnibzfO/Q2WR6ncVD9E68mQfYMbX0 -=nEJo ------END PGP SIGNATURE----- diff --git a/freed-ora/current/f20/linux-libre-3.19-gnu.tar.xz.sign b/freed-ora/current/f20/linux-libre-3.19-gnu.tar.xz.sign new file mode 100644 index 000000000..d05b3f8d1 --- /dev/null +++ b/freed-ora/current/f20/linux-libre-3.19-gnu.tar.xz.sign @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2 + +iEYEABECAAYFAlTYgPwACgkQvLfPh359R6ekQQCeLVyG3LT4cUzmEELHA0XxKURd +368An3/KTqdtOEdz97qB7heNbg42NtZm +=mxBS +-----END PGP SIGNATURE----- diff --git a/freed-ora/current/f20/linux-libre-3.19-gnu.xdelta.xz b/freed-ora/current/f20/linux-libre-3.19-gnu.xdelta.xz Binary files differnew file mode 100644 index 000000000..8e56c1843 --- /dev/null +++ b/freed-ora/current/f20/linux-libre-3.19-gnu.xdelta.xz diff --git a/freed-ora/current/f20/linux-libre-3.19-gnu.xdelta.xz.sign b/freed-ora/current/f20/linux-libre-3.19-gnu.xdelta.xz.sign new file mode 100644 index 000000000..257278d6d --- /dev/null +++ b/freed-ora/current/f20/linux-libre-3.19-gnu.xdelta.xz.sign @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v2 + +iEYEABECAAYFAlTYgTkACgkQvLfPh359R6exFgCglZrgU0m8iB2iWgDHlCkVdP5k +kNkAmwXqyBVJDhOMEuf9ZzWUqYh1igb4 +=cVki +-----END PGP SIGNATURE----- diff --git a/freed-ora/current/f20/mpssd-x86-only.patch b/freed-ora/current/f20/mpssd-x86-only.patch deleted file mode 100644 index 862603d3f..000000000 --- a/freed-ora/current/f20/mpssd-x86-only.patch +++ /dev/null @@ -1,27 +0,0 @@ -commit d47fb4ec7e101a63754939fa49d75fd7e81e94f8 -Author: Ashutosh Dixit <ashutosh.dixit@intel.com> -Date: Thu Dec 4 13:27:29 2014 -0800 - - Documentation: Build mic/mpssd only for x86_64 - - mic/mpssd along with MIC drivers are currently only usable on - x86_64. So build mic/mpssd only for x86_64 to avoid build breaks on - big-endian systems. - - Reported-by: Daniel Borkmann <dborkman@redhat.com> - Reported-by: Dan Streetman <ddstreet@gmail.com> - Suggested-by: Peter Foley <pefoley2@pefoley.com> - Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> - Signed-off-by: Jonathan Corbet <corbet@lwn.net> - -diff --git a/Documentation/mic/mpssd/Makefile b/Documentation/mic/mpssd/Makefile -index 0f31568..f47fe6b 100644 ---- a/Documentation/mic/mpssd/Makefile -+++ b/Documentation/mic/mpssd/Makefile -@@ -1,5 +1,5 @@ - # List of programs to build --hostprogs-y := mpssd -+hostprogs-$(CONFIG_X86_64) := mpssd - - mpssd-objs := mpssd.o sysfs.o - diff --git a/freed-ora/current/f20/powerpc-powernv-force-all-CPUs-to-be-bootable.patch b/freed-ora/current/f20/powerpc-powernv-force-all-CPUs-to-be-bootable.patch deleted file mode 100644 index 1c0b62339..000000000 --- a/freed-ora/current/f20/powerpc-powernv-force-all-CPUs-to-be-bootable.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Greg Kurz <gkurz@linux.vnet.ibm.com> -Date: Fri, 12 Dec 2014 12:37:40 +0100 -Subject: [PATCH] powerpc/powernv: force all CPUs to be bootable - -The subcore logic needs all the CPUs declared in the DT to be bootable, -otherwise the kernel hangs at boot time. Since subcore support starts -with POWER8, we can keep the current behaviour for older CPUs. - -Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> ---- - arch/powerpc/platforms/powernv/smp.c | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c -index 5fcfcf44e3a9..52552e60df36 100644 ---- a/arch/powerpc/platforms/powernv/smp.c -+++ b/arch/powerpc/platforms/powernv/smp.c -@@ -185,13 +185,24 @@ static void pnv_smp_cpu_kill_self(void) - - #endif /* CONFIG_HOTPLUG_CPU */ - -+static int pnv_cpu_bootable(unsigned int nr) -+{ -+ /* Starting with POWER8, all CPUs need to be booted to avoid hangs -+ * during subcore init. -+ */ -+ if (cpu_has_feature(CPU_FTR_ARCH_207S)) -+ return 1; -+ -+ return smp_generic_cpu_bootable(nr); -+} -+ - static struct smp_ops_t pnv_smp_ops = { - .message_pass = smp_muxed_ipi_message_pass, - .cause_ipi = NULL, /* Filled at runtime by xics_smp_probe() */ - .probe = xics_smp_probe, - .kick_cpu = pnv_smp_kick_cpu, - .setup_cpu = pnv_smp_setup_cpu, -- .cpu_bootable = smp_generic_cpu_bootable, -+ .cpu_bootable = pnv_cpu_bootable, - #ifdef CONFIG_HOTPLUG_CPU - .cpu_disable = pnv_smp_cpu_disable, - .cpu_die = generic_cpu_die, --- -2.1.0 - diff --git a/freed-ora/current/f20/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch b/freed-ora/current/f20/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch deleted file mode 100644 index 93c4073ce..000000000 --- a/freed-ora/current/f20/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch +++ /dev/null @@ -1,39 +0,0 @@ -Bugzilla: 861573 -Upstream-status: Waiting for feedback from reporter - -From 2fa2078cdd4198b49c02cb03087158d398476463 Mon Sep 17 00:00:00 2001 -From: Hans de Goede <hdegoede@redhat.com> -Date: Mon, 2 Jun 2014 17:40:59 +0200 -Subject: [PATCH 02/14] samsung-laptop: Add broken-acpi-video quirk for - NC210/NC110 - -Reported (and tested) here: -https://bugzilla.redhat.com/show_bug.cgi?id=861573 - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/platform/x86/samsung-laptop.c | 10 ++++++++++ - 1 file changed, 10 insertions(+) - - -diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c -index 5a5966512277..0d7954e0fc74 100644 ---- a/drivers/platform/x86/samsung-laptop.c -+++ b/drivers/platform/x86/samsung-laptop.c -@@ -1568,6 +1568,16 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = { - }, - .driver_data = &samsung_np740u3e, - }, -+ { -+ .callback = samsung_dmi_matched, -+ .ident = "NC210", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."), -+ DMI_MATCH(DMI_PRODUCT_NAME, "NC210/NC110"), -+ DMI_MATCH(DMI_BOARD_NAME, "NC210/NC110"), -+ }, -+ .driver_data = &samsung_broken_acpi_video, -+ }, - { }, - }; - MODULE_DEVICE_TABLE(dmi, samsung_dmi_table); diff --git a/freed-ora/current/f20/silence-fbcon-logo.patch b/freed-ora/current/f20/silence-fbcon-logo.patch index 45ab73331..baeb94e5c 100644 --- a/freed-ora/current/f20/silence-fbcon-logo.patch +++ b/freed-ora/current/f20/silence-fbcon-logo.patch @@ -1,8 +1,18 @@ +From: "kernel-team@fedoraproject.org" <kernel-team@fedoraproject.org> +Date: Thu, 29 Jul 2010 16:46:31 -0700 +Subject: [PATCH] silence fbcon logo + +Bugzilla: N/A +Upstream-status: Fedora mustard +--- + drivers/video/console/fbcon.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c -index 1657b96..4c5c2be 100644 +index ea437245562e..eefa9c45d2e1 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c -@@ -631,13 +631,15 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info, +@@ -637,13 +637,15 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info, kfree(save); } @@ -25,7 +35,7 @@ index 1657b96..4c5c2be 100644 } } #endif /* MODULE */ -@@ -3489,6 +3491,14 @@ static int __init fb_console_init(void) +@@ -3624,6 +3626,14 @@ static int __init fb_console_init(void) return 0; } @@ -37,6 +47,9 @@ index 1657b96..4c5c2be 100644 + +early_param("quiet", quiet_logo); + - module_init(fb_console_init); + fs_initcall(fb_console_init); #ifdef MODULE +-- +2.1.0 + diff --git a/freed-ora/current/f20/sources b/freed-ora/current/f20/sources index 9b4452879..40dd915c2 100644 --- a/freed-ora/current/f20/sources +++ b/freed-ora/current/f20/sources @@ -1,3 +1,3 @@ -b3c2a6827813398dde7e8a2d4e02a2c3 linux-libre-3.18-gnu.tar.xz -813ccb96f0b379d656e57442c2587ca3 perf-man-3.18.tar.gz -41077062d4b7beefd88d4df6e598e376 patch-3.18.9.xz +6b6245298a846bae9842bc4558eee172 linux-libre-3.19-gnu.tar.xz +15d8d2f97ce056488451a5bfb2944603 perf-man-3.19.tar.gz +1fec75551b2f55fced43df8394b1fd9a patch-3.19.3.xz diff --git a/freed-ora/current/f20/tun-return-proper-error-code-from-tun_do_read.patch b/freed-ora/current/f20/tun-return-proper-error-code-from-tun_do_read.patch new file mode 100644 index 000000000..5f65f324c --- /dev/null +++ b/freed-ora/current/f20/tun-return-proper-error-code-from-tun_do_read.patch @@ -0,0 +1,29 @@ +From: Alex Gartrell <agartrell@fb.com> +Date: Thu, 25 Dec 2014 23:22:49 -0800 +Subject: [PATCH] tun: return proper error code from tun_do_read + +Instead of -1 with EAGAIN, read on a O_NONBLOCK tun fd will return 0. This +fixes this by properly returning the error code from __skb_recv_datagram. + +Signed-off-by: Alex Gartrell <agartrell@fb.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +--- + drivers/net/tun.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/tun.c b/drivers/net/tun.c +index 10f9e4021b5a..9a409a8f3b19 100644 +--- a/drivers/net/tun.c ++++ b/drivers/net/tun.c +@@ -1368,7 +1368,7 @@ static ssize_t tun_do_read(struct tun_struct *tun, struct tun_file *tfile, + skb = __skb_recv_datagram(tfile->socket.sk, noblock ? MSG_DONTWAIT : 0, + &peeked, &off, &err); + if (!skb) +- return 0; ++ return err; + + ret = tun_put_user(tun, tfile, skb, to); + if (unlikely(ret < 0)) +-- +2.1.0 + diff --git a/freed-ora/current/f20/uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch b/freed-ora/current/f20/uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch deleted file mode 100644 index 60e5b2662..000000000 --- a/freed-ora/current/f20/uas-Add-US_FL_NO_ATA_1X-for-2-more-Seagate-disk-encl.patch +++ /dev/null @@ -1,48 +0,0 @@ -From: Hans de Goede <hdegoede@redhat.com> -Date: Thu, 8 Jan 2015 14:54:03 +0100 -Subject: [PATCH] uas: Add US_FL_NO_ATA_1X for 2 more Seagate disk enclosures - -Just like all previous UAS capable Seagate disk enclosures, these need the -US_FL_NO_ATA_1X to not crash when udev probes them. - -Cc: stable@vger.kernel.org # 3.16 -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/usb/storage/unusual_uas.h | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h -index f8492c1fd0e8..9ec4561f6c2c 100644 ---- a/drivers/usb/storage/unusual_uas.h -+++ b/drivers/usb/storage/unusual_uas.h -@@ -75,6 +75,13 @@ UNUSUAL_DEV(0x0bc2, 0xa013, 0x0000, 0x9999, - USB_SC_DEVICE, USB_PR_DEVICE, NULL, - US_FL_NO_ATA_1X), - -+/* Reported-by: Hans de Goede <hdegoede@redhat.com> */ -+UNUSUAL_DEV(0x0bc2, 0xa0a4, 0x0000, 0x9999, -+ "Seagate", -+ "Backup Plus Desk", -+ USB_SC_DEVICE, USB_PR_DEVICE, NULL, -+ US_FL_NO_ATA_1X), -+ - /* https://bbs.archlinux.org/viewtopic.php?id=183190 */ - UNUSUAL_DEV(0x0bc2, 0xab20, 0x0000, 0x9999, - "Seagate", -@@ -89,6 +96,13 @@ UNUSUAL_DEV(0x0bc2, 0xab21, 0x0000, 0x9999, - USB_SC_DEVICE, USB_PR_DEVICE, NULL, - US_FL_NO_ATA_1X), - -+/* Reported-by: G. Richard Bellamy <rbellamy@pteradigm.com> */ -+UNUSUAL_DEV(0x0bc2, 0xab2a, 0x0000, 0x9999, -+ "Seagate", -+ "BUP Fast HDD", -+ USB_SC_DEVICE, USB_PR_DEVICE, NULL, -+ US_FL_NO_ATA_1X), -+ - /* Reported-by: Claudio Bizzarri <claudio.bizzarri@gmail.com> */ - UNUSUAL_DEV(0x152d, 0x0567, 0x0000, 0x9999, - "JMicron", --- -2.1.0 - diff --git a/freed-ora/current/f20/uas-Do-not-blacklist-ASM1153-disk-enclosures.patch b/freed-ora/current/f20/uas-Do-not-blacklist-ASM1153-disk-enclosures.patch deleted file mode 100644 index 5b6702525..000000000 --- a/freed-ora/current/f20/uas-Do-not-blacklist-ASM1153-disk-enclosures.patch +++ /dev/null @@ -1,94 +0,0 @@ -From: Hans de Goede <hdegoede@redhat.com> -Date: Thu, 8 Jan 2015 14:42:01 +0100 -Subject: [PATCH] uas: Do not blacklist ASM1153 disk enclosures - -Our detection logic to avoid doing UAS on ASM1051 bridge chips causes problems -with newer ASM1153 disk enclosures in 2 ways: - -1) Some ASM1153 disk enclosures re-use the ASM1051 device-id of 5106, which - we assume is always an ASM1051, so remove the quirk for 5106, and instead - use the same detection logic as we already use for device-id 55aa, which is - used for all of ASM1051, ASM1053 and ASM1153 devices <sigh>. - -2) Our detection logic to differentiate between ASM1051 and ASM1053 sees - ASM1153 devices as ASM1051 because they have 32 streams like ASM1051 devs. - Luckily the ASM1153 descriptors are not 100% identical, unlike the previous - models the ASM1153 has bMaxPower == 0, so use that to differentiate it. - -Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/usb/storage/uas-detect.h | 33 ++++++++++++++++++++++++++++----- - drivers/usb/storage/unusual_uas.h | 8 -------- - 2 files changed, 28 insertions(+), 13 deletions(-) - -diff --git a/drivers/usb/storage/uas-detect.h b/drivers/usb/storage/uas-detect.h -index 8a6f371ed6e7..9893d696fc97 100644 ---- a/drivers/usb/storage/uas-detect.h -+++ b/drivers/usb/storage/uas-detect.h -@@ -69,16 +69,39 @@ static int uas_use_uas_driver(struct usb_interface *intf, - return 0; - - /* -- * ASM1051 and older ASM1053 devices have the same usb-id, and UAS is -- * broken on the ASM1051, use the number of streams to differentiate. -- * New ASM1053-s also support 32 streams, but have a different prod-id. -+ * ASMedia has a number of usb3 to sata bridge chips, at the time of -+ * this writing the following versions exist: -+ * ASM1051 - no uas support version -+ * ASM1051 - with broken (*) uas support -+ * ASM1053 - with working uas support -+ * ASM1153 - with working uas support -+ * -+ * Devices with these chips re-use a number of device-ids over the -+ * entire line, so the device-id is useless to determine if we're -+ * dealing with an ASM1051 (which we want to avoid). -+ * -+ * The ASM1153 can be identified by config.MaxPower == 0, -+ * where as the ASM105x models have config.MaxPower == 36. -+ * -+ * Differentiating between the ASM1053 and ASM1051 is trickier, when -+ * connected over USB-3 we can look at the number of streams supported, -+ * ASM1051 supports 32 streams, where as early ASM1053 versions support -+ * 16 streams, newer ASM1053-s also support 32 streams, but have a -+ * different prod-id. -+ * -+ * (*) ASM1051 chips do work with UAS with some disks (with the -+ * US_FL_NO_REPORT_OPCODES quirk), but are broken with other disks - */ - if (le16_to_cpu(udev->descriptor.idVendor) == 0x174c && -- le16_to_cpu(udev->descriptor.idProduct) == 0x55aa) { -- if (udev->speed < USB_SPEED_SUPER) { -+ (le16_to_cpu(udev->descriptor.idProduct) == 0x5106 || -+ le16_to_cpu(udev->descriptor.idProduct) == 0x55aa)) { -+ if (udev->actconfig->desc.bMaxPower == 0) { -+ /* ASM1153, do nothing */ -+ } else if (udev->speed < USB_SPEED_SUPER) { - /* No streams info, assume ASM1051 */ - flags |= US_FL_IGNORE_UAS; - } else if (usb_ss_max_streams(&eps[1]->ss_ep_comp) == 32) { -+ /* Possibly an ASM1051, disable uas */ - flags |= US_FL_IGNORE_UAS; - } - } -diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h -index 2f0a3d35269a..f8492c1fd0e8 100644 ---- a/drivers/usb/storage/unusual_uas.h -+++ b/drivers/usb/storage/unusual_uas.h -@@ -96,14 +96,6 @@ UNUSUAL_DEV(0x152d, 0x0567, 0x0000, 0x9999, - USB_SC_DEVICE, USB_PR_DEVICE, NULL, - US_FL_NO_REPORT_OPCODES), - --/* Most ASM1051 based devices have issues with uas, blacklist them all */ --/* Reported-by: Hans de Goede <hdegoede@redhat.com> */ --UNUSUAL_DEV(0x174c, 0x5106, 0x0000, 0x9999, -- "ASMedia", -- "ASM1051", -- USB_SC_DEVICE, USB_PR_DEVICE, NULL, -- US_FL_IGNORE_UAS), -- - /* Reported-by: Hans de Goede <hdegoede@redhat.com> */ - UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999, - "VIA", --- -2.1.0 - diff --git a/freed-ora/current/f20/x86-microcode-intel-Guard-against-stack-overflow-in-.patch b/freed-ora/current/f20/x86-microcode-intel-Guard-against-stack-overflow-in-.patch new file mode 100644 index 000000000..2123a463b --- /dev/null +++ b/freed-ora/current/f20/x86-microcode-intel-Guard-against-stack-overflow-in-.patch @@ -0,0 +1,36 @@ +From 4423997d1e2f479f98b8f0c7ad733607f361ed76 Mon Sep 17 00:00:00 2001 +From: Quentin Casasnovas <quentin.casasnovas@oracle.com> +Date: Tue, 3 Feb 2015 13:00:22 +0100 +Subject: [PATCH] x86/microcode/intel: Guard against stack overflow in the + loader + +mc_saved_tmp is a static array allocated on the stack, we need to make +sure mc_saved_count stays within its bounds, otherwise we're overflowing +the stack in _save_mc(). A specially crafted microcode header could lead +to a kernel crash or potentially kernel execution. + +Signed-off-by: Quentin Casasnovas <quentin.casasnovas@oracle.com> +Cc: "H. Peter Anvin" <hpa@zytor.com> +Cc: Fenghua Yu <fenghua.yu@intel.com> +Link: http://lkml.kernel.org/r/1422964824-22056-1-git-send-email-quentin.casasnovas@oracle.com +Signed-off-by: Borislav Petkov <bp@suse.de> +--- + arch/x86/kernel/cpu/microcode/intel_early.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/x86/kernel/cpu/microcode/intel_early.c b/arch/x86/kernel/cpu/microcode/intel_early.c +index ec9df6f9cd47..5e109a31f62b 100644 +--- a/arch/x86/kernel/cpu/microcode/intel_early.c ++++ b/arch/x86/kernel/cpu/microcode/intel_early.c +@@ -321,7 +321,7 @@ get_matching_model_microcode(int cpu, unsigned long start, + unsigned int mc_saved_count = mc_saved_data->mc_saved_count; + int i; + +- while (leftover) { ++ while (leftover && mc_saved_count < ARRAY_SIZE(mc_saved_tmp)) { + mc_header = (struct microcode_header_intel *)ucode_ptr; + + mc_size = get_totalsize(mc_header); +-- +2.1.0 + |