From: Sasha Levin Date: Fri, 22 Nov 2019 06:51:08 +0000 (-0500) Subject: fixes for 4.19 X-Git-Tag: v5.3.13~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6226e25951cce32d417e241597f55a899c2485bf;p=thirdparty%2Fkernel%2Fstable-queue.git fixes for 4.19 Signed-off-by: Sasha Levin --- diff --git a/queue-4.19/acpi-lpss-make-acpi_lpss_find_device-also-find-pci-d.patch b/queue-4.19/acpi-lpss-make-acpi_lpss_find_device-also-find-pci-d.patch new file mode 100644 index 00000000000..397563336ce --- /dev/null +++ b/queue-4.19/acpi-lpss-make-acpi_lpss_find_device-also-find-pci-d.patch @@ -0,0 +1,60 @@ +From 5d2929ec438c2e142125d286ab41fd808f83b672 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 23 Sep 2018 15:58:08 +0200 +Subject: ACPI / LPSS: Make acpi_lpss_find_device() also find PCI devices + +From: Hans de Goede + +[ Upstream commit 1e30124ac60abc41d74793900f8b4034f29bcb3d ] + +On some Cherry Trail systems the GPU ACPI fwnode has power-resources which +point to the PMIC, which is connected over one of the LPSS I2C controllers. + +To get the suspend/resume ordering correct for this we need to be able to +add device-links between the GPU and the I2c controller. The GPU is a PCI +device, so this requires acpi_lpss_find_device() to also work on PCI devs. + +Tested-by: Jarkko Nikula +Signed-off-by: Hans de Goede +Reviewed-by: Andy Shevchenko +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Sasha Levin +--- + drivers/acpi/acpi_lpss.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c +index 7eda27d43b482..3ef22d50df302 100644 +--- a/drivers/acpi/acpi_lpss.c ++++ b/drivers/acpi/acpi_lpss.c +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -512,12 +513,18 @@ static int match_hid_uid(struct device *dev, void *data) + + static struct device *acpi_lpss_find_device(const char *hid, const char *uid) + { ++ struct device *dev; ++ + struct hid_uid data = { + .hid = hid, + .uid = uid, + }; + +- return bus_find_device(&platform_bus_type, NULL, &data, match_hid_uid); ++ dev = bus_find_device(&platform_bus_type, NULL, &data, match_hid_uid); ++ if (dev) ++ return dev; ++ ++ return bus_find_device(&pci_bus_type, NULL, &data, match_hid_uid); + } + + static bool acpi_lpss_dep(struct acpi_device *adev, acpi_handle handle) +-- +2.20.1 + diff --git a/queue-4.19/acpi-lpss-resume-byt-cht-i2c-controllers-from-resume.patch b/queue-4.19/acpi-lpss-resume-byt-cht-i2c-controllers-from-resume.patch new file mode 100644 index 00000000000..c19b52531df --- /dev/null +++ b/queue-4.19/acpi-lpss-resume-byt-cht-i2c-controllers-from-resume.patch @@ -0,0 +1,156 @@ +From cfc5f535da9a2836dfdb6eee50897eed1da9b74b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 23 Sep 2018 15:58:11 +0200 +Subject: ACPI / LPSS: Resume BYT/CHT I2C controllers from resume_noirq + +From: Hans de Goede + +[ Upstream commit 48402cee6889fb3fce58e95fea1471626286dc63 ] + +On some Cherry Trail systems the GPU ACPI fwnode has power-resources which +point to the PMIC, which is connected over a LPSS I2C controller. + +We add a device-link to make sure that the I2C controller is resumed before +the GPU is. But the pci-core changes the power-state of PCI devices from +D3 to D0 at noirq time (to restore the PCI config registers) and before +this commit we were bringing up the I2C controllers from a resume_early +handler which runs later. More specifically the pm-core will first run +all resume_noirq handlers in order and then all resume_early handlers. + +So we must not only make sure that the handlers are run in the right order, +but also that the resume of the I2C controller is done at noirq time. + +The behavior before this commit, resuming the I2C controller from a +resume_early handler leads to the following errors: + + i2c_designware 808622C1:06: controller timed out + ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion] + ACPI Error: Method parse/execution failed \_SB.P18W._ON, AE_ERROR + video LNXVIDEO:00: Failed to change power state to D0 + +This commit changes the acpi_lpss.c code to resume the BYT/CHT I2C +controllers at resume_noirq time fixing this. + +Tested-by: Jarkko Nikula +Signed-off-by: Hans de Goede +Reviewed-by: Andy Shevchenko +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Sasha Levin +--- + drivers/acpi/acpi_lpss.c | 61 +++++++++++++++++++++++++++++++++++++--- + 1 file changed, 57 insertions(+), 4 deletions(-) + +diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c +index 3ef22d50df302..dec9024fc49ec 100644 +--- a/drivers/acpi/acpi_lpss.c ++++ b/drivers/acpi/acpi_lpss.c +@@ -84,6 +84,7 @@ struct lpss_device_desc { + size_t prv_size_override; + struct property_entry *properties; + void (*setup)(struct lpss_private_data *pdata); ++ bool resume_from_noirq; + }; + + static const struct lpss_device_desc lpss_dma_desc = { +@@ -293,12 +294,14 @@ static const struct lpss_device_desc byt_i2c_dev_desc = { + .flags = LPSS_CLK | LPSS_SAVE_CTX, + .prv_offset = 0x800, + .setup = byt_i2c_setup, ++ .resume_from_noirq = true, + }; + + static const struct lpss_device_desc bsw_i2c_dev_desc = { + .flags = LPSS_CLK | LPSS_SAVE_CTX | LPSS_NO_D3_DELAY, + .prv_offset = 0x800, + .setup = byt_i2c_setup, ++ .resume_from_noirq = true, + }; + + static const struct lpss_device_desc bsw_spi_dev_desc = { +@@ -1031,7 +1034,7 @@ static int acpi_lpss_resume(struct device *dev) + } + + #ifdef CONFIG_PM_SLEEP +-static int acpi_lpss_suspend_late(struct device *dev) ++static int acpi_lpss_do_suspend_late(struct device *dev) + { + int ret; + +@@ -1042,12 +1045,62 @@ static int acpi_lpss_suspend_late(struct device *dev) + return ret ? ret : acpi_lpss_suspend(dev, device_may_wakeup(dev)); + } + +-static int acpi_lpss_resume_early(struct device *dev) ++static int acpi_lpss_suspend_late(struct device *dev) ++{ ++ struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); ++ ++ if (pdata->dev_desc->resume_from_noirq) ++ return 0; ++ ++ return acpi_lpss_do_suspend_late(dev); ++} ++ ++static int acpi_lpss_suspend_noirq(struct device *dev) ++{ ++ struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); ++ int ret; ++ ++ if (pdata->dev_desc->resume_from_noirq) { ++ ret = acpi_lpss_do_suspend_late(dev); ++ if (ret) ++ return ret; ++ } ++ ++ return acpi_subsys_suspend_noirq(dev); ++} ++ ++static int acpi_lpss_do_resume_early(struct device *dev) + { + int ret = acpi_lpss_resume(dev); + + return ret ? ret : pm_generic_resume_early(dev); + } ++ ++static int acpi_lpss_resume_early(struct device *dev) ++{ ++ struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); ++ ++ if (pdata->dev_desc->resume_from_noirq) ++ return 0; ++ ++ return acpi_lpss_do_resume_early(dev); ++} ++ ++static int acpi_lpss_resume_noirq(struct device *dev) ++{ ++ struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev)); ++ int ret; ++ ++ ret = acpi_subsys_resume_noirq(dev); ++ if (ret) ++ return ret; ++ ++ if (!dev_pm_may_skip_resume(dev) && pdata->dev_desc->resume_from_noirq) ++ ret = acpi_lpss_do_resume_early(dev); ++ ++ return ret; ++} ++ + #endif /* CONFIG_PM_SLEEP */ + + static int acpi_lpss_runtime_suspend(struct device *dev) +@@ -1077,8 +1130,8 @@ static struct dev_pm_domain acpi_lpss_pm_domain = { + .complete = acpi_subsys_complete, + .suspend = acpi_subsys_suspend, + .suspend_late = acpi_lpss_suspend_late, +- .suspend_noirq = acpi_subsys_suspend_noirq, +- .resume_noirq = acpi_subsys_resume_noirq, ++ .suspend_noirq = acpi_lpss_suspend_noirq, ++ .resume_noirq = acpi_lpss_resume_noirq, + .resume_early = acpi_lpss_resume_early, + .freeze = acpi_subsys_freeze, + .freeze_late = acpi_subsys_freeze_late, +-- +2.20.1 + diff --git a/queue-4.19/acpi-lpss-use-acpi_lpss_-instead-of-acpi_subsys_-fun.patch b/queue-4.19/acpi-lpss-use-acpi_lpss_-instead-of-acpi_subsys_-fun.patch new file mode 100644 index 00000000000..7d773507e89 --- /dev/null +++ b/queue-4.19/acpi-lpss-use-acpi_lpss_-instead-of-acpi_subsys_-fun.patch @@ -0,0 +1,55 @@ +From bc02b8abc5ee44ebf933e464a3e7a23361ae2462 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 18 Apr 2019 13:39:33 +0200 +Subject: ACPI / LPSS: Use acpi_lpss_* instead of acpi_subsys_* functions for + hibernate + +From: Hans de Goede + +[ Upstream commit c8afd03486c26accdda4846e5561aa3f8e862a9d ] + +Commit 48402cee6889 ("ACPI / LPSS: Resume BYT/CHT I2C controllers from +resume_noirq") makes acpi_lpss_{suspend_late,resume_early}() bail early +on BYT/CHT as resume_from_noirq is set. + +This means that on resume from hibernate dw_i2c_plat_resume() doesn't get +called by the restore_early callback, acpi_lpss_resume_early(). Instead it +should be called by the restore_noirq callback matching how things are done +when resume_from_noirq is set and we are doing a regular resume. + +Change the restore_noirq callback to acpi_lpss_resume_noirq so that +dw_i2c_plat_resume() gets properly called when resume_from_noirq is set +and we are resuming from hibernate. + +Likewise also change the poweroff_noirq callback so that +dw_i2c_plat_suspend gets called properly. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202139 +Fixes: 48402cee6889 ("ACPI / LPSS: Resume BYT/CHT I2C controllers from resume_noirq") +Reported-by: Kai-Heng Feng +Signed-off-by: Hans de Goede +Cc: 4.20+ # 4.20+ +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Sasha Levin +--- + drivers/acpi/acpi_lpss.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c +index dec9024fc49ec..b21c241aaab9f 100644 +--- a/drivers/acpi/acpi_lpss.c ++++ b/drivers/acpi/acpi_lpss.c +@@ -1139,8 +1139,8 @@ static struct dev_pm_domain acpi_lpss_pm_domain = { + .thaw_noirq = acpi_subsys_thaw_noirq, + .poweroff = acpi_subsys_suspend, + .poweroff_late = acpi_lpss_suspend_late, +- .poweroff_noirq = acpi_subsys_suspend_noirq, +- .restore_noirq = acpi_subsys_resume_noirq, ++ .poweroff_noirq = acpi_lpss_suspend_noirq, ++ .restore_noirq = acpi_lpss_resume_noirq, + .restore_early = acpi_lpss_resume_early, + #endif + .runtime_suspend = acpi_lpss_runtime_suspend, +-- +2.20.1 + diff --git a/queue-4.19/acpi-sbs-fix-rare-oops-when-removing-modules.patch b/queue-4.19/acpi-sbs-fix-rare-oops-when-removing-modules.patch new file mode 100644 index 00000000000..db4887c7c4a --- /dev/null +++ b/queue-4.19/acpi-sbs-fix-rare-oops-when-removing-modules.patch @@ -0,0 +1,66 @@ +From 25deeacb9cac9082f940ab78b5102425ba46b61f Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sun, 30 Sep 2018 19:53:13 -0700 +Subject: ACPI / SBS: Fix rare oops when removing modules +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Ronald Tschalär + +[ Upstream commit 757c968c442397f1249bb775a7c8c03842e3e0c7 ] + +There was a small race when removing the sbshc module where +smbus_alarm() had queued acpi_smbus_callback() for deferred execution +but it hadn't been run yet, so that when it did run hc had been freed +and the module unloaded, resulting in an invalid paging request. + +A similar race existed when removing the sbs module with regards to +acpi_sbs_callback() (which is called from acpi_smbus_callback()). + +We therefore need to ensure no callbacks are pending or executing before +the cleanups are done and the modules are removed. + +Signed-off-by: Ronald Tschalär +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Sasha Levin +--- + drivers/acpi/osl.c | 1 + + drivers/acpi/sbshc.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c +index ed73f6fb0779b..b48874b8e1ea0 100644 +--- a/drivers/acpi/osl.c ++++ b/drivers/acpi/osl.c +@@ -1132,6 +1132,7 @@ void acpi_os_wait_events_complete(void) + flush_workqueue(kacpid_wq); + flush_workqueue(kacpi_notify_wq); + } ++EXPORT_SYMBOL(acpi_os_wait_events_complete); + + struct acpi_hp_work { + struct work_struct work; +diff --git a/drivers/acpi/sbshc.c b/drivers/acpi/sbshc.c +index 7a3431018e0ab..5008ead4609a4 100644 +--- a/drivers/acpi/sbshc.c ++++ b/drivers/acpi/sbshc.c +@@ -196,6 +196,7 @@ int acpi_smbus_unregister_callback(struct acpi_smb_hc *hc) + hc->callback = NULL; + hc->context = NULL; + mutex_unlock(&hc->lock); ++ acpi_os_wait_events_complete(); + return 0; + } + +@@ -292,6 +293,7 @@ static int acpi_smbus_hc_remove(struct acpi_device *device) + + hc = acpi_driver_data(device); + acpi_ec_remove_query_handler(hc->ec, hc->query_bit); ++ acpi_os_wait_events_complete(); + kfree(hc); + device->driver_data = NULL; + return 0; +-- +2.20.1 + diff --git a/queue-4.19/acpica-never-run-_reg-on-system_memory-and-system_io.patch b/queue-4.19/acpica-never-run-_reg-on-system_memory-and-system_io.patch new file mode 100644 index 00000000000..00d64248a89 --- /dev/null +++ b/queue-4.19/acpica-never-run-_reg-on-system_memory-and-system_io.patch @@ -0,0 +1,134 @@ +From 150ce146b13b1ff4e5b0c28f61f10d1b336a96c5 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 3 Oct 2018 11:45:38 -0700 +Subject: ACPICA: Never run _REG on system_memory and system_IO + +From: Bob Moore + +[ Upstream commit 8b1cafdcb4b75c5027c52f1e82b47ebe727ad7ed ] + +These address spaces are defined by the ACPI spec to be +"always available", and thus _REG should never be run on them. +Provides compatibility with other ACPI implementations. + +Signed-off-by: Bob Moore +Signed-off-by: Erik Schmauss +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Sasha Levin +--- + drivers/acpi/acpica/acevents.h | 2 ++ + drivers/acpi/acpica/aclocal.h | 2 +- + drivers/acpi/acpica/evregion.c | 17 +++++++++++++++-- + drivers/acpi/acpica/evrgnini.c | 6 +----- + drivers/acpi/acpica/evxfregn.c | 1 - + 5 files changed, 19 insertions(+), 9 deletions(-) + +diff --git a/drivers/acpi/acpica/acevents.h b/drivers/acpi/acpica/acevents.h +index 298180bf7e3c1..bfcc68b9f708d 100644 +--- a/drivers/acpi/acpica/acevents.h ++++ b/drivers/acpi/acpica/acevents.h +@@ -230,6 +230,8 @@ acpi_ev_default_region_setup(acpi_handle handle, + + acpi_status acpi_ev_initialize_region(union acpi_operand_object *region_obj); + ++u8 acpi_ev_is_pci_root_bridge(struct acpi_namespace_node *node); ++ + /* + * evsci - SCI (System Control Interrupt) handling/dispatch + */ +diff --git a/drivers/acpi/acpica/aclocal.h b/drivers/acpi/acpica/aclocal.h +index 0f28a38a43ea1..99b0da8991098 100644 +--- a/drivers/acpi/acpica/aclocal.h ++++ b/drivers/acpi/acpica/aclocal.h +@@ -395,9 +395,9 @@ struct acpi_simple_repair_info { + /* Info for running the _REG methods */ + + struct acpi_reg_walk_info { +- acpi_adr_space_type space_id; + u32 function; + u32 reg_run_count; ++ acpi_adr_space_type space_id; + }; + + /***************************************************************************** +diff --git a/drivers/acpi/acpica/evregion.c b/drivers/acpi/acpica/evregion.c +index 70c2bd169f669..49decca4e08ff 100644 +--- a/drivers/acpi/acpica/evregion.c ++++ b/drivers/acpi/acpica/evregion.c +@@ -653,6 +653,19 @@ acpi_ev_execute_reg_methods(struct acpi_namespace_node *node, + + ACPI_FUNCTION_TRACE(ev_execute_reg_methods); + ++ /* ++ * These address spaces do not need a call to _REG, since the ACPI ++ * specification defines them as: "must always be accessible". Since ++ * they never change state (never become unavailable), no need to ever ++ * call _REG on them. Also, a data_table is not a "real" address space, ++ * so do not call _REG. September 2018. ++ */ ++ if ((space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY) || ++ (space_id == ACPI_ADR_SPACE_SYSTEM_IO) || ++ (space_id == ACPI_ADR_SPACE_DATA_TABLE)) { ++ return_VOID; ++ } ++ + info.space_id = space_id; + info.function = function; + info.reg_run_count = 0; +@@ -714,8 +727,8 @@ acpi_ev_reg_run(acpi_handle obj_handle, + } + + /* +- * We only care about regions.and objects that are allowed to have address +- * space handlers ++ * We only care about regions and objects that are allowed to have ++ * address space handlers + */ + if ((node->type != ACPI_TYPE_REGION) && (node != acpi_gbl_root_node)) { + return (AE_OK); +diff --git a/drivers/acpi/acpica/evrgnini.c b/drivers/acpi/acpica/evrgnini.c +index 39284deedd885..17df5dacd43cf 100644 +--- a/drivers/acpi/acpica/evrgnini.c ++++ b/drivers/acpi/acpica/evrgnini.c +@@ -16,9 +16,6 @@ + #define _COMPONENT ACPI_EVENTS + ACPI_MODULE_NAME("evrgnini") + +-/* Local prototypes */ +-static u8 acpi_ev_is_pci_root_bridge(struct acpi_namespace_node *node); +- + /******************************************************************************* + * + * FUNCTION: acpi_ev_system_memory_region_setup +@@ -33,7 +30,6 @@ static u8 acpi_ev_is_pci_root_bridge(struct acpi_namespace_node *node); + * DESCRIPTION: Setup a system_memory operation region + * + ******************************************************************************/ +- + acpi_status + acpi_ev_system_memory_region_setup(acpi_handle handle, + u32 function, +@@ -313,7 +309,7 @@ acpi_ev_pci_config_region_setup(acpi_handle handle, + * + ******************************************************************************/ + +-static u8 acpi_ev_is_pci_root_bridge(struct acpi_namespace_node *node) ++u8 acpi_ev_is_pci_root_bridge(struct acpi_namespace_node *node) + { + acpi_status status; + struct acpi_pnp_device_id *hid; +diff --git a/drivers/acpi/acpica/evxfregn.c b/drivers/acpi/acpica/evxfregn.c +index 091415b14fbf1..3b3a25d9f0e6d 100644 +--- a/drivers/acpi/acpica/evxfregn.c ++++ b/drivers/acpi/acpica/evxfregn.c +@@ -193,7 +193,6 @@ acpi_remove_address_space_handler(acpi_handle device, + */ + region_obj = + handler_obj->address_space.region_list; +- + } + + /* Remove this Handler object from the list */ +-- +2.20.1 + diff --git a/queue-4.19/alsa-hda-ca0132-fix-input-effect-controls-for-deskto.patch b/queue-4.19/alsa-hda-ca0132-fix-input-effect-controls-for-deskto.patch new file mode 100644 index 00000000000..01168d6aa36 --- /dev/null +++ b/queue-4.19/alsa-hda-ca0132-fix-input-effect-controls-for-deskto.patch @@ -0,0 +1,56 @@ +From e9ff35c900cbb480617a0c528e6ddf9c21b98fd7 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 8 Oct 2018 15:40:00 -0400 +Subject: ALSA: hda/ca0132 - Fix input effect controls for desktop cards + +From: Connor McAdams + +[ Upstream commit 7a2dc84fc480aec4f8f96e152327423014edf668 ] + +This patch removes the echo cancellation control for desktop cards, and +makes use of the special 0x47 SCP command for noise reduction. + +Signed-off-by: Connor McAdams +Reviewed-by: Takashi Sakamoto +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_ca0132.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/sound/pci/hda/patch_ca0132.c b/sound/pci/hda/patch_ca0132.c +index f2cabfdced05c..6a9b89e05daea 100644 +--- a/sound/pci/hda/patch_ca0132.c ++++ b/sound/pci/hda/patch_ca0132.c +@@ -4521,7 +4521,7 @@ static int ca0132_effects_set(struct hda_codec *codec, hda_nid_t nid, long val) + val = 0; + + /* If Voice Focus on SBZ, set to two channel. */ +- if ((nid == VOICE_FOCUS) && (spec->quirk == QUIRK_SBZ) ++ if ((nid == VOICE_FOCUS) && (spec->use_pci_mmio) + && (spec->cur_mic_type != REAR_LINE_IN)) { + if (spec->effects_switch[CRYSTAL_VOICE - + EFFECT_START_NID]) { +@@ -4540,7 +4540,7 @@ static int ca0132_effects_set(struct hda_codec *codec, hda_nid_t nid, long val) + * For SBZ noise reduction, there's an extra command + * to module ID 0x47. No clue why. + */ +- if ((nid == NOISE_REDUCTION) && (spec->quirk == QUIRK_SBZ) ++ if ((nid == NOISE_REDUCTION) && (spec->use_pci_mmio) + && (spec->cur_mic_type != REAR_LINE_IN)) { + if (spec->effects_switch[CRYSTAL_VOICE - + EFFECT_START_NID]) { +@@ -5856,8 +5856,8 @@ static int ca0132_build_controls(struct hda_codec *codec) + */ + num_fx = OUT_EFFECTS_COUNT + IN_EFFECTS_COUNT; + for (i = 0; i < num_fx; i++) { +- /* SBZ and R3D break if Echo Cancellation is used. */ +- if (spec->quirk == QUIRK_SBZ || spec->quirk == QUIRK_R3D) { ++ /* Desktop cards break if Echo Cancellation is used. */ ++ if (spec->use_pci_mmio) { + if (i == (ECHO_CANCELLATION - IN_EFFECT_START_NID + + OUT_EFFECTS_COUNT)) + continue; +-- +2.20.1 + diff --git a/queue-4.19/alsa-hda-fix-mismatch-for-register-mask-and-value-in.patch b/queue-4.19/alsa-hda-fix-mismatch-for-register-mask-and-value-in.patch new file mode 100644 index 00000000000..76a370f7a6b --- /dev/null +++ b/queue-4.19/alsa-hda-fix-mismatch-for-register-mask-and-value-in.patch @@ -0,0 +1,87 @@ +From 4599e9c975d1ec487d8f12eff0a193157c5a3d10 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 28 Sep 2018 17:38:59 +0800 +Subject: ALSA: hda: Fix mismatch for register mask and value in ext + controller. + +From: Keyon Jie + +[ Upstream commit c32bf867cb6721d6ea04044d33f19c8bd81280c1 ] + +E.g. for snd_hdac_ext_bus_link_power_up(), we should set mask to be +AZX_MLCTL_SPA(it was 0), and AZX_MLCTL_SPA as value to power up it, +here correct it and several similar mismatches. + +Signed-off-by: Keyon Jie +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/hda/ext/hdac_ext_controller.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +diff --git a/sound/hda/ext/hdac_ext_controller.c b/sound/hda/ext/hdac_ext_controller.c +index 5bc4a1d587d4f..60cb00fd0c693 100644 +--- a/sound/hda/ext/hdac_ext_controller.c ++++ b/sound/hda/ext/hdac_ext_controller.c +@@ -48,9 +48,11 @@ void snd_hdac_ext_bus_ppcap_enable(struct hdac_bus *bus, bool enable) + } + + if (enable) +- snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, 0, AZX_PPCTL_GPROCEN); ++ snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, ++ AZX_PPCTL_GPROCEN, AZX_PPCTL_GPROCEN); + else +- snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, AZX_PPCTL_GPROCEN, 0); ++ snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, ++ AZX_PPCTL_GPROCEN, 0); + } + EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_ppcap_enable); + +@@ -68,9 +70,11 @@ void snd_hdac_ext_bus_ppcap_int_enable(struct hdac_bus *bus, bool enable) + } + + if (enable) +- snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, 0, AZX_PPCTL_PIE); ++ snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, ++ AZX_PPCTL_PIE, AZX_PPCTL_PIE); + else +- snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, AZX_PPCTL_PIE, 0); ++ snd_hdac_updatel(bus->ppcap, AZX_REG_PP_PPCTL, ++ AZX_PPCTL_PIE, 0); + } + EXPORT_SYMBOL_GPL(snd_hdac_ext_bus_ppcap_int_enable); + +@@ -194,7 +198,8 @@ static int check_hdac_link_power_active(struct hdac_ext_link *link, bool enable) + */ + int snd_hdac_ext_bus_link_power_up(struct hdac_ext_link *link) + { +- snd_hdac_updatel(link->ml_addr, AZX_REG_ML_LCTL, 0, AZX_MLCTL_SPA); ++ snd_hdac_updatel(link->ml_addr, AZX_REG_ML_LCTL, ++ AZX_MLCTL_SPA, AZX_MLCTL_SPA); + + return check_hdac_link_power_active(link, true); + } +@@ -222,8 +227,8 @@ int snd_hdac_ext_bus_link_power_up_all(struct hdac_bus *bus) + int ret; + + list_for_each_entry(hlink, &bus->hlink_list, list) { +- snd_hdac_updatel(hlink->ml_addr, +- AZX_REG_ML_LCTL, 0, AZX_MLCTL_SPA); ++ snd_hdac_updatel(hlink->ml_addr, AZX_REG_ML_LCTL, ++ AZX_MLCTL_SPA, AZX_MLCTL_SPA); + ret = check_hdac_link_power_active(hlink, true); + if (ret < 0) + return ret; +@@ -243,7 +248,8 @@ int snd_hdac_ext_bus_link_power_down_all(struct hdac_bus *bus) + int ret; + + list_for_each_entry(hlink, &bus->hlink_list, list) { +- snd_hdac_updatel(hlink->ml_addr, AZX_REG_ML_LCTL, AZX_MLCTL_SPA, 0); ++ snd_hdac_updatel(hlink->ml_addr, AZX_REG_ML_LCTL, ++ AZX_MLCTL_SPA, 0); + ret = check_hdac_link_power_active(hlink, false); + if (ret < 0) + return ret; +-- +2.20.1 + diff --git a/queue-4.19/alsa-hda-sigmatel-disable-automute-for-elo-vupoint.patch b/queue-4.19/alsa-hda-sigmatel-disable-automute-for-elo-vupoint.patch new file mode 100644 index 00000000000..fa0af49c2d6 --- /dev/null +++ b/queue-4.19/alsa-hda-sigmatel-disable-automute-for-elo-vupoint.patch @@ -0,0 +1,85 @@ +From c5c47ddca06984288257f52e4f27f85985515ab5 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 4 Oct 2018 14:58:21 -0400 +Subject: ALSA: hda/sigmatel - Disable automute for Elo VuPoint + +From: Michael Pobega + +[ Upstream commit d153135e93a50cdb6f1b52e238909e9965b56056 ] + +The Elo VuPoint 15MX has two headphone jacks of which neither work by +default. Disabling automute allows ALSA to work normally with the +speakers & left headphone jack. + +Future pin configuration changes may be required in the future to get +the right headphone jack working in tandem. + +Signed-off-by: Michael Pobega +Signed-off-by: Takashi Iwai +Signed-off-by: Sasha Levin +--- + sound/pci/hda/patch_sigmatel.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c +index 046705b4691af..d8168aa2cef38 100644 +--- a/sound/pci/hda/patch_sigmatel.c ++++ b/sound/pci/hda/patch_sigmatel.c +@@ -77,6 +77,7 @@ enum { + STAC_DELL_M6_BOTH, + STAC_DELL_EQ, + STAC_ALIENWARE_M17X, ++ STAC_ELO_VUPOINT_15MX, + STAC_92HD89XX_HP_FRONT_JACK, + STAC_92HD89XX_HP_Z1_G2_RIGHT_MIC_JACK, + STAC_92HD73XX_ASUS_MOBO, +@@ -1879,6 +1880,18 @@ static void stac92hd73xx_fixup_no_jd(struct hda_codec *codec, + codec->no_jack_detect = 1; + } + ++ ++static void stac92hd73xx_disable_automute(struct hda_codec *codec, ++ const struct hda_fixup *fix, int action) ++{ ++ struct sigmatel_spec *spec = codec->spec; ++ ++ if (action != HDA_FIXUP_ACT_PRE_PROBE) ++ return; ++ ++ spec->gen.suppress_auto_mute = 1; ++} ++ + static const struct hda_fixup stac92hd73xx_fixups[] = { + [STAC_92HD73XX_REF] = { + .type = HDA_FIXUP_FUNC, +@@ -1904,6 +1917,10 @@ static const struct hda_fixup stac92hd73xx_fixups[] = { + .type = HDA_FIXUP_FUNC, + .v.func = stac92hd73xx_fixup_alienware_m17x, + }, ++ [STAC_ELO_VUPOINT_15MX] = { ++ .type = HDA_FIXUP_FUNC, ++ .v.func = stac92hd73xx_disable_automute, ++ }, + [STAC_92HD73XX_INTEL] = { + .type = HDA_FIXUP_PINS, + .v.pins = intel_dg45id_pin_configs, +@@ -1942,6 +1959,7 @@ static const struct hda_model_fixup stac92hd73xx_models[] = { + { .id = STAC_DELL_M6_BOTH, .name = "dell-m6" }, + { .id = STAC_DELL_EQ, .name = "dell-eq" }, + { .id = STAC_ALIENWARE_M17X, .name = "alienware" }, ++ { .id = STAC_ELO_VUPOINT_15MX, .name = "elo-vupoint-15mx" }, + { .id = STAC_92HD73XX_ASUS_MOBO, .name = "asus-mobo" }, + {} + }; +@@ -1991,6 +2009,8 @@ static const struct snd_pci_quirk stac92hd73xx_fixup_tbl[] = { + "Alienware M17x", STAC_ALIENWARE_M17X), + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0490, + "Alienware M17x R3", STAC_DELL_EQ), ++ SND_PCI_QUIRK(0x1059, 0x1011, ++ "ELO VuPoint 15MX", STAC_ELO_VUPOINT_15MX), + SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x1927, + "HP Z1 G2", STAC_92HD89XX_HP_Z1_G2_RIGHT_MIC_JACK), + SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x2b17, +-- +2.20.1 + diff --git a/queue-4.19/arm-8802-1-call-syscall_trace_exit-even-when-system-.patch b/queue-4.19/arm-8802-1-call-syscall_trace_exit-even-when-system-.patch new file mode 100644 index 00000000000..d42c409fac1 --- /dev/null +++ b/queue-4.19/arm-8802-1-call-syscall_trace_exit-even-when-system-.patch @@ -0,0 +1,57 @@ +From 8a68e3bc082db76c43073b3b47e14fc9ddf06ea7 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 8 Oct 2018 19:26:48 +0100 +Subject: ARM: 8802/1: Call syscall_trace_exit even when system call skipped + +From: Timothy E Baldwin + +[ Upstream commit f18aef742c8fbd68e280dff0a63ba0ca6ee8ad85 ] + +On at least x86 and ARM64, and as documented in the ptrace man page +a skipped system call will still cause a syscall exit ptrace stop. + +Previous to this commit 32-bit ARM did not, resulting in strace +being confused when seccomp skips system calls. + +This change also impacts programs that use ptrace to skip system calls. + +Fixes: ad75b51459ae ("ARM: 7579/1: arch/allow a scno of -1 to not cause a SIGILL") +Signed-off-by: Timothy E Baldwin +Signed-off-by: Eugene Syromyatnikov +Reviewed-by: Kees Cook +Tested-by: Kees Cook +Tested-by: Eugene Syromyatnikov +Signed-off-by: Russell King +Signed-off-by: Sasha Levin +--- + arch/arm/kernel/entry-common.S | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S +index 746565a876dcd..0465d65d23de5 100644 +--- a/arch/arm/kernel/entry-common.S ++++ b/arch/arm/kernel/entry-common.S +@@ -296,16 +296,15 @@ __sys_trace: + cmp scno, #-1 @ skip the syscall? + bne 2b + add sp, sp, #S_OFF @ restore stack +- b ret_slow_syscall + +-__sys_trace_return: +- str r0, [sp, #S_R0 + S_OFF]! @ save returned r0 ++__sys_trace_return_nosave: ++ enable_irq_notrace + mov r0, sp + bl syscall_trace_exit + b ret_slow_syscall + +-__sys_trace_return_nosave: +- enable_irq_notrace ++__sys_trace_return: ++ str r0, [sp, #S_R0 + S_OFF]! @ save returned r0 + mov r0, sp + bl syscall_trace_exit + b ret_slow_syscall +-- +2.20.1 + diff --git a/queue-4.19/arm-dts-at91-at91sam9x5cm-fix-addressable-nand-flash.patch b/queue-4.19/arm-dts-at91-at91sam9x5cm-fix-addressable-nand-flash.patch new file mode 100644 index 00000000000..6a901c9349f --- /dev/null +++ b/queue-4.19/arm-dts-at91-at91sam9x5cm-fix-addressable-nand-flash.patch @@ -0,0 +1,35 @@ +From 313b09c8604108626b90408dcf234693fffa1cb7 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 2 Oct 2018 16:00:36 +0300 +Subject: ARM: dts: at91: at91sam9x5cm: fix addressable nand flash size + +From: Tudor Ambarus + +[ Upstream commit 6f270d88a0c4a11725afd8fd2001ae408733afbf ] + +at91sam9x5cm comes with a 2Gb NAND flash. Fix the rootfs size to +match this limit. + +Signed-off-by: Tudor Ambarus +Signed-off-by: Ludovic Desroches +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/at91sam9x5cm.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/at91sam9x5cm.dtsi b/arch/arm/boot/dts/at91sam9x5cm.dtsi +index 4908ee07e6287..993eabe1cf7a5 100644 +--- a/arch/arm/boot/dts/at91sam9x5cm.dtsi ++++ b/arch/arm/boot/dts/at91sam9x5cm.dtsi +@@ -100,7 +100,7 @@ + + rootfs@800000 { + label = "rootfs"; +- reg = <0x800000 0x1f800000>; ++ reg = <0x800000 0x0f800000>; + }; + }; + }; +-- +2.20.1 + diff --git a/queue-4.19/arm-dts-at91-sama5d2_ptc_ek-fix-bootloader-env-offse.patch b/queue-4.19/arm-dts-at91-sama5d2_ptc_ek-fix-bootloader-env-offse.patch new file mode 100644 index 00000000000..1f0f8df95af --- /dev/null +++ b/queue-4.19/arm-dts-at91-sama5d2_ptc_ek-fix-bootloader-env-offse.patch @@ -0,0 +1,46 @@ +From 6d1f5c6210f960ea2acd3c6d647caa4ef872c242 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 2 Oct 2018 16:20:35 +0300 +Subject: ARM: dts: at91: sama5d2_ptc_ek: fix bootloader env offsets + +From: Tudor Ambarus + +[ Upstream commit f602b4871c5f7ac01d37d8b285ca947ba7613065 ] + +The offsets for the bootloader environment and its redundant partition +were inverted. Fix the addresses to match our nand flash map available at: + +http://www.at91.com/linux4sam/pub/Linux4SAM/SambaSubsections//demo_nandflash_map_lnx4sam5x.png + +Signed-off-by: Tudor Ambarus +Signed-off-by: Ludovic Desroches +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts +index 3b1baa8605a77..2214bfe7aa205 100644 +--- a/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts ++++ b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts +@@ -92,13 +92,13 @@ + reg = <0x40000 0xc0000>; + }; + +- bootloaderenv@0x100000 { +- label = "bootloader env"; ++ bootloaderenvred@0x100000 { ++ label = "bootloader env redundant"; + reg = <0x100000 0x40000>; + }; + +- bootloaderenvred@0x140000 { +- label = "bootloader env redundant"; ++ bootloaderenv@0x140000 { ++ label = "bootloader env"; + reg = <0x140000 0x40000>; + }; + +-- +2.20.1 + diff --git a/queue-4.19/arm-dts-at91-sama5d4_xplained-fix-addressable-nand-f.patch b/queue-4.19/arm-dts-at91-sama5d4_xplained-fix-addressable-nand-f.patch new file mode 100644 index 00000000000..0d98680aeda --- /dev/null +++ b/queue-4.19/arm-dts-at91-sama5d4_xplained-fix-addressable-nand-f.patch @@ -0,0 +1,35 @@ +From ee995e1c40b89e848587a0bf909c6a6f9ad9b482 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 2 Oct 2018 16:00:35 +0300 +Subject: ARM: dts: at91: sama5d4_xplained: fix addressable nand flash size + +From: Tudor Ambarus + +[ Upstream commit df90fc64367ffdb6f1b5c0f0c4940d44832b0174 ] + +sama5d4_xplained comes with a 4Gb NAND flash. Increase the rootfs +size to match this limit. + +Signed-off-by: Tudor Ambarus +Signed-off-by: Ludovic Desroches +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/at91-sama5d4_xplained.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/at91-sama5d4_xplained.dts b/arch/arm/boot/dts/at91-sama5d4_xplained.dts +index 4b7c762d5f223..7d554b9ab27fd 100644 +--- a/arch/arm/boot/dts/at91-sama5d4_xplained.dts ++++ b/arch/arm/boot/dts/at91-sama5d4_xplained.dts +@@ -252,7 +252,7 @@ + + rootfs@800000 { + label = "rootfs"; +- reg = <0x800000 0x0f800000>; ++ reg = <0x800000 0x1f800000>; + }; + }; + }; +-- +2.20.1 + diff --git a/queue-4.19/arm-dts-dra7-enable-workaround-for-errata-i870-in-pc.patch b/queue-4.19/arm-dts-dra7-enable-workaround-for-errata-i870-in-pc.patch new file mode 100644 index 00000000000..2f23f9dfb5b --- /dev/null +++ b/queue-4.19/arm-dts-dra7-enable-workaround-for-errata-i870-in-pc.patch @@ -0,0 +1,43 @@ +From 075145915dafdedb04ab1122f3771eeed9fe5016 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 28 Sep 2018 11:34:42 +0530 +Subject: ARM: dts: dra7: Enable workaround for errata i870 in PCIe host mode + +From: Vignesh R + +[ Upstream commit b830526f304764753fcb8b4a563a94080e982a6c ] + +Add ti,syscon-unaligned-access property to PCIe RC nodes to set +appropriate bits in CTRL_CORE_SMA_SW_7 register to enable workaround for +errata i870. + +Signed-off-by: Vignesh R +Signed-off-by: Tony Lindgren +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/dra7.dtsi | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi +index 9136b3cf9a2ce..7ce24b282d421 100644 +--- a/arch/arm/boot/dts/dra7.dtsi ++++ b/arch/arm/boot/dts/dra7.dtsi +@@ -336,6 +336,7 @@ + <0 0 0 2 &pcie1_intc 2>, + <0 0 0 3 &pcie1_intc 3>, + <0 0 0 4 &pcie1_intc 4>; ++ ti,syscon-unaligned-access = <&scm_conf1 0x14 1>; + status = "disabled"; + pcie1_intc: interrupt-controller { + interrupt-controller; +@@ -387,6 +388,7 @@ + <0 0 0 2 &pcie2_intc 2>, + <0 0 0 3 &pcie2_intc 3>, + <0 0 0 4 &pcie2_intc 4>; ++ ti,syscon-unaligned-access = <&scm_conf1 0x14 2>; + pcie2_intc: interrupt-controller { + interrupt-controller; + #address-cells = <0>; +-- +2.20.1 + diff --git a/queue-4.19/arm-dts-omap5-enable-otg-role-for-dwc3-controller.patch b/queue-4.19/arm-dts-omap5-enable-otg-role-for-dwc3-controller.patch new file mode 100644 index 00000000000..03fa404cb96 --- /dev/null +++ b/queue-4.19/arm-dts-omap5-enable-otg-role-for-dwc3-controller.patch @@ -0,0 +1,42 @@ +From 05bf98536d85ac518abb40bc829c4834d3d911d3 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 28 Sep 2018 17:54:00 +0200 +Subject: ARM: dts: omap5: enable OTG role for DWC3 controller + +From: H. Nikolaus Schaller + +[ Upstream commit 656c1a65ab555ee5c7cd0d6aee8ab82ca3c1795f ] + +Since SMPS10 and OTG cable detection extcon are described here, and +work to enable OTG power when an OTG cable is plugged in, we can +define OTG mode in the controller (which is disabled by default in +omap5.dtsi). + +Tested on OMAP5EVM and Pyra. + +Suggested-by: Roger Quadros +Signed-off-by: H. Nikolaus Schaller +Signed-off-by: Tony Lindgren +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/omap5-board-common.dtsi | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/arch/arm/boot/dts/omap5-board-common.dtsi b/arch/arm/boot/dts/omap5-board-common.dtsi +index 8b8db9d8e9126..c2dc4199b4ec2 100644 +--- a/arch/arm/boot/dts/omap5-board-common.dtsi ++++ b/arch/arm/boot/dts/omap5-board-common.dtsi +@@ -703,6 +703,10 @@ + vbus-supply = <&smps10_out1_reg>; + }; + ++&dwc3 { ++ dr_mode = "otg"; ++}; ++ + &mcspi1 { + + }; +-- +2.20.1 + diff --git a/queue-4.19/arm-dts-omap5-fix-dual-role-mode-on-super-speed-port.patch b/queue-4.19/arm-dts-omap5-fix-dual-role-mode-on-super-speed-port.patch new file mode 100644 index 00000000000..c3669995dbf --- /dev/null +++ b/queue-4.19/arm-dts-omap5-fix-dual-role-mode-on-super-speed-port.patch @@ -0,0 +1,39 @@ +From 61cdff34b919aaa06a489782dfc94e18bd8ee343 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 5 Dec 2018 19:27:44 +0200 +Subject: ARM: dts: omap5: Fix dual-role mode on Super-Speed port + +From: Roger Quadros + +[ Upstream commit a763ecc15d0e37c3a15ff6825183061209832685 ] + +OMAP5's Super-Speed USB port has a software mailbox register +that needs to be fed with VBUS and ID events from an external +VBUS/ID comparator. + +Without this, Host role will not work correctly. + +Fixes: 656c1a65ab55 ("ARM: dts: omap5: enable OTG role for DWC3 controller") +Reported-by: H. Nikolaus Schaller +Signed-off-by: Roger Quadros +Signed-off-by: Tony Lindgren +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/omap5-board-common.dtsi | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/arch/arm/boot/dts/omap5-board-common.dtsi b/arch/arm/boot/dts/omap5-board-common.dtsi +index c2dc4199b4ec2..61a06f6add3ca 100644 +--- a/arch/arm/boot/dts/omap5-board-common.dtsi ++++ b/arch/arm/boot/dts/omap5-board-common.dtsi +@@ -704,6 +704,7 @@ + }; + + &dwc3 { ++ extcon = <&extcon_usb3>; + dr_mode = "otg"; + }; + +-- +2.20.1 + diff --git a/queue-4.19/arm-dts-sun8i-h3-bpi-m2-plus-fix-address-for-externa.patch b/queue-4.19/arm-dts-sun8i-h3-bpi-m2-plus-fix-address-for-externa.patch new file mode 100644 index 00000000000..58c7ddc2a1d --- /dev/null +++ b/queue-4.19/arm-dts-sun8i-h3-bpi-m2-plus-fix-address-for-externa.patch @@ -0,0 +1,39 @@ +From b3a55a8ec889eb65e565c9273828f6a678d59592 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 30 Aug 2018 16:09:24 +0800 +Subject: ARM: dts: sun8i: h3: bpi-m2-plus: Fix address for external RGMII + Ethernet PHY + +From: Chen-Yu Tsai + +[ Upstream commit db9fd9d13e30fc67737ac9893a82e6b095e85a64 ] + +The external RTL8211E RGMII Ethernet PHY is configured via external +resistors to use the address 0x1. The 0x0 address is a broadcast address +for this family of PHYs, and should not be used explicitly. + +Fixes: 8c7ba536e709 ("ARM: sun8i: bananapi-m2-plus: Enable dwmac-sun8i") +Fixes: 4904337fe34f ("ARM: dts: sunxi: Restore EMAC changes (boards)") +Acked-by: Maxime Ripard +Signed-off-by: Chen-Yu Tsai +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts b/arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts +index 30540dc8e0c5f..bdda0d99128e5 100644 +--- a/arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts ++++ b/arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts +@@ -140,7 +140,7 @@ + &external_mdio { + ext_rgmii_phy: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; +- reg = <0>; ++ reg = <1>; + }; + }; + +-- +2.20.1 + diff --git a/queue-4.19/arm-dts-sun8i-h3-h5-ir-register-size-should-be-the-w.patch b/queue-4.19/arm-dts-sun8i-h3-h5-ir-register-size-should-be-the-w.patch new file mode 100644 index 00000000000..619875cb8c4 --- /dev/null +++ b/queue-4.19/arm-dts-sun8i-h3-h5-ir-register-size-should-be-the-w.patch @@ -0,0 +1,37 @@ +From 80fba55e302904c7de88e2cbf698a5969317a622 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 1 Aug 2018 11:48:01 +0200 +Subject: ARM: dts: sun8i: h3-h5: ir register size should be the whole memory + block + +From: Philipp Rossak + +[ Upstream commit 6c700289a3e84d5d3f2a95cf27732a7f7fce105b ] + +The size of the register should be the size of the whole memory block, +not just the registers, that are needed. + +Signed-off-by: Philipp Rossak +Acked-by: Maxime Ripard +Signed-off-by: Chen-Yu Tsai +Signed-off-by: Sasha Levin +--- + arch/arm/boot/dts/sunxi-h3-h5.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi +index fc6131315c47f..4b1530ebe4272 100644 +--- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi ++++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi +@@ -816,7 +816,7 @@ + clock-names = "apb", "ir"; + resets = <&r_ccu RST_APB0_IR>; + interrupts = ; +- reg = <0x01f02000 0x40>; ++ reg = <0x01f02000 0x400>; + status = "disabled"; + }; + +-- +2.20.1 + diff --git a/queue-4.19/arm64-numa-report-correct-memblock-range-for-the-dum.patch b/queue-4.19/arm64-numa-report-correct-memblock-range-for-the-dum.patch new file mode 100644 index 00000000000..b8335d40ae1 --- /dev/null +++ b/queue-4.19/arm64-numa-report-correct-memblock-range-for-the-dum.patch @@ -0,0 +1,39 @@ +From 49d19abb9e17e52f967e71e243609dd7643c2631 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 22 Sep 2018 21:09:55 +0530 +Subject: arm64/numa: Report correct memblock range for the dummy node + +From: Anshuman Khandual + +[ Upstream commit 77cfe950901e5c13aca2df6437a05f39dd9a929b ] + +The dummy node ID is marked into all memory ranges on the system. So the +dummy node really extends the entire memblock.memory. Hence report correct +extent information for the dummy node using memblock range helper functions +instead of the range [0LLU, PFN_PHYS(max_pfn) - 1)]. + +Fixes: 1a2db30034 ("arm64, numa: Add NUMA support for arm64 platforms") +Acked-by: Punit Agrawal +Signed-off-by: Anshuman Khandual +Signed-off-by: Catalin Marinas +Signed-off-by: Sasha Levin +--- + arch/arm64/mm/numa.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c +index 146c04ceaa514..54529b4ed5130 100644 +--- a/arch/arm64/mm/numa.c ++++ b/arch/arm64/mm/numa.c +@@ -432,7 +432,7 @@ static int __init dummy_numa_init(void) + if (numa_off) + pr_info("NUMA disabled\n"); /* Forced off on command line. */ + pr_info("Faking a node at [mem %#018Lx-%#018Lx]\n", +- 0LLU, PFN_PHYS(max_pfn) - 1); ++ memblock_start_of_DRAM(), memblock_end_of_DRAM() - 1); + + for_each_memblock(memory, mblk) { + ret = numa_add_memblk(0, mblk->base, mblk->base + mblk->size); +-- +2.20.1 + diff --git a/queue-4.19/asoc-qdsp6-q6asm-dai-checking-null-vs-is_err.patch b/queue-4.19/asoc-qdsp6-q6asm-dai-checking-null-vs-is_err.patch new file mode 100644 index 00000000000..ace8305c1f8 --- /dev/null +++ b/queue-4.19/asoc-qdsp6-q6asm-dai-checking-null-vs-is_err.patch @@ -0,0 +1,41 @@ +From 9a3f093025888bd5f0b892aaf2ee187523e9600c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 1 Oct 2018 19:44:30 +0300 +Subject: ASoC: qdsp6: q6asm-dai: checking NULL vs IS_ERR() + +From: Dan Carpenter + +[ Upstream commit 8e9f7265eda9f3a662ca1ca47a69042a7840735b ] + +The q6asm_audio_client_alloc() doesn't return NULL, it returns error +pointers. + +Fixes: 2a9e92d371db ("ASoC: qdsp6: q6asm: Add q6asm dai driver") +Signed-off-by: Dan Carpenter +Signed-off-by: Mark Brown +Signed-off-by: Sasha Levin +--- + sound/soc/qcom/qdsp6/q6asm-dai.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/sound/soc/qcom/qdsp6/q6asm-dai.c b/sound/soc/qcom/qdsp6/q6asm-dai.c +index 9db9a2944ef26..c1a7d376a3fea 100644 +--- a/sound/soc/qcom/qdsp6/q6asm-dai.c ++++ b/sound/soc/qcom/qdsp6/q6asm-dai.c +@@ -319,10 +319,11 @@ static int q6asm_dai_open(struct snd_pcm_substream *substream) + prtd->audio_client = q6asm_audio_client_alloc(dev, + (q6asm_cb)event_handler, prtd, stream_id, + LEGACY_PCM_MODE); +- if (!prtd->audio_client) { ++ if (IS_ERR(prtd->audio_client)) { + pr_info("%s: Could not allocate memory\n", __func__); ++ ret = PTR_ERR(prtd->audio_client); + kfree(prtd); +- return -ENOMEM; ++ return ret; + } + + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) +-- +2.20.1 + diff --git a/queue-4.19/ata-ahci_brcm-allow-using-driver-or-dsl-socs.patch b/queue-4.19/ata-ahci_brcm-allow-using-driver-or-dsl-socs.patch new file mode 100644 index 00000000000..e4064f77250 --- /dev/null +++ b/queue-4.19/ata-ahci_brcm-allow-using-driver-or-dsl-socs.patch @@ -0,0 +1,36 @@ +From 98a6ea9fb59d8b094c9b8c39c81ff6381c66f37b Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 1 Oct 2018 10:33:02 -0700 +Subject: ata: ahci_brcm: Allow using driver or DSL SoCs + +From: Florian Fainelli + +[ Upstream commit 7fb44929cb0e5cdcde143e1ca3ca57b5b8247db0 ] + +The Broadcom STB AHCI controller is the same as the one found on DSL +SoCs, so we will utilize the same driver on these systems as well. + +Signed-off-by: Florian Fainelli +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + drivers/ata/Kconfig | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig +index 39b181d6bd0d8..99698d7fe585a 100644 +--- a/drivers/ata/Kconfig ++++ b/drivers/ata/Kconfig +@@ -121,7 +121,8 @@ config SATA_AHCI_PLATFORM + + config AHCI_BRCM + tristate "Broadcom AHCI SATA support" +- depends on ARCH_BRCMSTB || BMIPS_GENERIC || ARCH_BCM_NSP ++ depends on ARCH_BRCMSTB || BMIPS_GENERIC || ARCH_BCM_NSP || \ ++ ARCH_BCM_63XX + help + This option enables support for the AHCI SATA3 controller found on + Broadcom SoC's. +-- +2.20.1 + diff --git a/queue-4.19/ata-ep93xx-use-proper-enums-for-directions.patch b/queue-4.19/ata-ep93xx-use-proper-enums-for-directions.patch new file mode 100644 index 00000000000..7a06a5e73e6 --- /dev/null +++ b/queue-4.19/ata-ep93xx-use-proper-enums-for-directions.patch @@ -0,0 +1,89 @@ +From cca93deb57131db1516e692f6aa68ff2f46ba517 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Wed, 3 Oct 2018 19:37:54 -0700 +Subject: ata: ep93xx: Use proper enums for directions + +From: Nathan Chancellor + +[ Upstream commit 6adde4a36f1b6a562a1057fbb1065007851050e7 ] + +Clang warns when one enumerated type is implicitly converted to another. + +drivers/ata/pata_ep93xx.c:662:36: warning: implicit conversion from +enumeration type 'enum dma_data_direction' to different enumeration type +'enum dma_transfer_direction' [-Wenum-conversion] + drv_data->dma_rx_data.direction = DMA_FROM_DEVICE; + ~ ^~~~~~~~~~~~~~~ +drivers/ata/pata_ep93xx.c:670:36: warning: implicit conversion from +enumeration type 'enum dma_data_direction' to different enumeration type +'enum dma_transfer_direction' [-Wenum-conversion] + drv_data->dma_tx_data.direction = DMA_TO_DEVICE; + ~ ^~~~~~~~~~~~~ +drivers/ata/pata_ep93xx.c:681:19: warning: implicit conversion from +enumeration type 'enum dma_data_direction' to different enumeration type +'enum dma_transfer_direction' [-Wenum-conversion] + conf.direction = DMA_FROM_DEVICE; + ~ ^~~~~~~~~~~~~~~ +drivers/ata/pata_ep93xx.c:692:19: warning: implicit conversion from +enumeration type 'enum dma_data_direction' to different enumeration type +'enum dma_transfer_direction' [-Wenum-conversion] + conf.direction = DMA_TO_DEVICE; + ~ ^~~~~~~~~~~~~ + +Use the equivalent valued enums from the expected type so that Clang no +longer warns about a conversion. + +DMA_TO_DEVICE = DMA_MEM_TO_DEV = 1 +DMA_FROM_DEVICE = DMA_DEV_TO_MEM = 2 + +Acked-by: Bartlomiej Zolnierkiewicz +Signed-off-by: Nathan Chancellor +Signed-off-by: Jens Axboe +Signed-off-by: Sasha Levin +--- + drivers/ata/pata_ep93xx.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/drivers/ata/pata_ep93xx.c b/drivers/ata/pata_ep93xx.c +index 0a550190955ad..cc6d06c1b2c70 100644 +--- a/drivers/ata/pata_ep93xx.c ++++ b/drivers/ata/pata_ep93xx.c +@@ -659,7 +659,7 @@ static void ep93xx_pata_dma_init(struct ep93xx_pata_data *drv_data) + * start of new transfer. + */ + drv_data->dma_rx_data.port = EP93XX_DMA_IDE; +- drv_data->dma_rx_data.direction = DMA_FROM_DEVICE; ++ drv_data->dma_rx_data.direction = DMA_DEV_TO_MEM; + drv_data->dma_rx_data.name = "ep93xx-pata-rx"; + drv_data->dma_rx_channel = dma_request_channel(mask, + ep93xx_pata_dma_filter, &drv_data->dma_rx_data); +@@ -667,7 +667,7 @@ static void ep93xx_pata_dma_init(struct ep93xx_pata_data *drv_data) + return; + + drv_data->dma_tx_data.port = EP93XX_DMA_IDE; +- drv_data->dma_tx_data.direction = DMA_TO_DEVICE; ++ drv_data->dma_tx_data.direction = DMA_MEM_TO_DEV; + drv_data->dma_tx_data.name = "ep93xx-pata-tx"; + drv_data->dma_tx_channel = dma_request_channel(mask, + ep93xx_pata_dma_filter, &drv_data->dma_tx_data); +@@ -678,7 +678,7 @@ static void ep93xx_pata_dma_init(struct ep93xx_pata_data *drv_data) + + /* Configure receive channel direction and source address */ + memset(&conf, 0, sizeof(conf)); +- conf.direction = DMA_FROM_DEVICE; ++ conf.direction = DMA_DEV_TO_MEM; + conf.src_addr = drv_data->udma_in_phys; + conf.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + if (dmaengine_slave_config(drv_data->dma_rx_channel, &conf)) { +@@ -689,7 +689,7 @@ static void ep93xx_pata_dma_init(struct ep93xx_pata_data *drv_data) + + /* Configure transmit channel direction and destination address */ + memset(&conf, 0, sizeof(conf)); +- conf.direction = DMA_TO_DEVICE; ++ conf.direction = DMA_MEM_TO_DEV; + conf.dst_addr = drv_data->udma_out_phys; + conf.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; + if (dmaengine_slave_config(drv_data->dma_tx_channel, &conf)) { +-- +2.20.1 + diff --git a/queue-4.19/ath10k-fix-vdev-start-timeout-on-error.patch b/queue-4.19/ath10k-fix-vdev-start-timeout-on-error.patch new file mode 100644 index 00000000000..88db0c7e53c --- /dev/null +++ b/queue-4.19/ath10k-fix-vdev-start-timeout-on-error.patch @@ -0,0 +1,117 @@ +From 0f30d1b207d3afe6735186725b15831d272ca8ad Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Thu, 6 Sep 2018 19:46:20 +0300 +Subject: ath10k: fix vdev-start timeout on error + +From: Ben Greear + +[ Upstream commit 833fd34d743c728afe6d127ef7bee67e7d9199a8 ] + +The vdev-start-response message should cause the +completion to fire, even in the error case. Otherwise, +the user still gets no useful information and everything +is blocked until the timeout period. + +Add some warning text to print out the invalid status +code to aid debugging, and propagate failure code. + +Signed-off-by: Ben Greear +Signed-off-by: Kalle Valo +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/ath/ath10k/core.h | 1 + + drivers/net/wireless/ath/ath10k/mac.c | 2 +- + drivers/net/wireless/ath/ath10k/wmi.c | 19 ++++++++++++++++--- + drivers/net/wireless/ath/ath10k/wmi.h | 8 +++++++- + 4 files changed, 25 insertions(+), 5 deletions(-) + +diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h +index 9feea02e7d373..5c9fc4070fd24 100644 +--- a/drivers/net/wireless/ath/ath10k/core.h ++++ b/drivers/net/wireless/ath/ath10k/core.h +@@ -1003,6 +1003,7 @@ struct ath10k { + + struct completion install_key_done; + ++ int last_wmi_vdev_start_status; + struct completion vdev_setup_done; + + struct workqueue_struct *workqueue; +diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c +index 9d033da46ec2e..d3d33cc2adfde 100644 +--- a/drivers/net/wireless/ath/ath10k/mac.c ++++ b/drivers/net/wireless/ath/ath10k/mac.c +@@ -968,7 +968,7 @@ static inline int ath10k_vdev_setup_sync(struct ath10k *ar) + if (time_left == 0) + return -ETIMEDOUT; + +- return 0; ++ return ar->last_wmi_vdev_start_status; + } + + static int ath10k_monitor_vdev_start(struct ath10k *ar, int vdev_id) +diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c +index 40b36e73bb48c..aefc92d2c09b9 100644 +--- a/drivers/net/wireless/ath/ath10k/wmi.c ++++ b/drivers/net/wireless/ath/ath10k/wmi.c +@@ -3248,18 +3248,31 @@ void ath10k_wmi_event_vdev_start_resp(struct ath10k *ar, struct sk_buff *skb) + { + struct wmi_vdev_start_ev_arg arg = {}; + int ret; ++ u32 status; + + ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_VDEV_START_RESP_EVENTID\n"); + ++ ar->last_wmi_vdev_start_status = 0; ++ + ret = ath10k_wmi_pull_vdev_start(ar, skb, &arg); + if (ret) { + ath10k_warn(ar, "failed to parse vdev start event: %d\n", ret); +- return; ++ ar->last_wmi_vdev_start_status = ret; ++ goto out; + } + +- if (WARN_ON(__le32_to_cpu(arg.status))) +- return; ++ status = __le32_to_cpu(arg.status); ++ if (WARN_ON_ONCE(status)) { ++ ath10k_warn(ar, "vdev-start-response reports status error: %d (%s)\n", ++ status, (status == WMI_VDEV_START_CHAN_INVALID) ? ++ "chan-invalid" : "unknown"); ++ /* Setup is done one way or another though, so we should still ++ * do the completion, so don't return here. ++ */ ++ ar->last_wmi_vdev_start_status = -EINVAL; ++ } + ++out: + complete(&ar->vdev_setup_done); + } + +diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h +index 36220258e3c7e..e341cfb3fcc26 100644 +--- a/drivers/net/wireless/ath/ath10k/wmi.h ++++ b/drivers/net/wireless/ath/ath10k/wmi.h +@@ -6642,11 +6642,17 @@ struct wmi_ch_info_ev_arg { + __le32 rx_frame_count; + }; + ++/* From 10.4 firmware, not sure all have the same values. */ ++enum wmi_vdev_start_status { ++ WMI_VDEV_START_OK = 0, ++ WMI_VDEV_START_CHAN_INVALID, ++}; ++ + struct wmi_vdev_start_ev_arg { + __le32 vdev_id; + __le32 req_id; + __le32 resp_type; /* %WMI_VDEV_RESP_ */ +- __le32 status; ++ __le32 status; /* See wmi_vdev_start_status enum above */ + }; + + struct wmi_peer_kick_ev_arg { +-- +2.20.1 + diff --git a/queue-4.19/ath9k-fix-reporting-calculated-new-fft-upper-max.patch b/queue-4.19/ath9k-fix-reporting-calculated-new-fft-upper-max.patch new file mode 100644 index 00000000000..4bb2d97253d --- /dev/null +++ b/queue-4.19/ath9k-fix-reporting-calculated-new-fft-upper-max.patch @@ -0,0 +1,36 @@ +From 000ffebfc41926e1bdab07188fd45dfb5d6af6d5 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 1 Oct 2018 17:26:59 +0300 +Subject: ath9k: fix reporting calculated new FFT upper max + +From: Simon Wunderlich + +[ Upstream commit 4fb5837ac2bd46a85620b297002c704e9958f64d ] + +Since the debug print code is outside of the loop, it shouldn't use the loop +iterator anymore but instead print the found maximum index. + +Cc: Nick Kossifidis +Signed-off-by: Simon Wunderlich +Signed-off-by: Kalle Valo +Signed-off-by: Sasha Levin +--- + drivers/net/wireless/ath/ath9k/common-spectral.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/net/wireless/ath/ath9k/common-spectral.c b/drivers/net/wireless/ath/ath9k/common-spectral.c +index 440e16e641e4a..f75eb068e6cfc 100644 +--- a/drivers/net/wireless/ath/ath9k/common-spectral.c ++++ b/drivers/net/wireless/ath/ath9k/common-spectral.c +@@ -411,7 +411,7 @@ ath_cmn_process_ht20_40_fft(struct ath_rx_status *rs, + + ath_dbg(common, SPECTRAL_SCAN, + "Calculated new upper max 0x%X at %i\n", +- tmp_mag, i); ++ tmp_mag, fft_sample_40.upper_max_index); + } else + for (i = dc_pos; i < SPECTRAL_HT20_40_NUM_BINS; i++) { + if (fft_sample_40.data[i] == (upper_mag >> max_exp)) +-- +2.20.1 + diff --git a/queue-4.19/atmel_lcdfb-support-native-mode-display-timings.patch b/queue-4.19/atmel_lcdfb-support-native-mode-display-timings.patch new file mode 100644 index 00000000000..a229c3e7720 --- /dev/null +++ b/queue-4.19/atmel_lcdfb-support-native-mode-display-timings.patch @@ -0,0 +1,116 @@ +From c2d21efb6189588787aead5cb0379b66f65a827c Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 8 Oct 2018 12:57:35 +0200 +Subject: atmel_lcdfb: support native-mode display-timings + +From: Sam Ravnborg + +[ Upstream commit 60e5e48dba72c6b59a7a9c7686ba320766913368 ] + +When a device tree set a display-timing using native-mode +then according to the bindings doc this should: + + native-mode: + The native mode for the display, in case multiple + modes are provided. + When omitted, assume the first node is the native. + +The atmel_lcdfb used the last timing subnode and did not +respect the timing mode specified with native-mode. + +Introduce use of of_get_videomode() which allowed +a nice simplification of the code while also +added support for native-mode. + +As a nice side-effect this fixes a memory leak where the +data used for timings and the display_np was not freed. + +Signed-off-by: Sam Ravnborg +Cc: Nicolas Ferre +Cc: Alexandre Belloni +Signed-off-by: Bartlomiej Zolnierkiewicz +Signed-off-by: Sasha Levin +--- + drivers/video/fbdev/atmel_lcdfb.c | 43 +++++++------------------------ + 1 file changed, 9 insertions(+), 34 deletions(-) + +diff --git a/drivers/video/fbdev/atmel_lcdfb.c b/drivers/video/fbdev/atmel_lcdfb.c +index 076d24afbd728..4ed55e6bbb840 100644 +--- a/drivers/video/fbdev/atmel_lcdfb.c ++++ b/drivers/video/fbdev/atmel_lcdfb.c +@@ -22,6 +22,7 @@ + #include + #include + #include ++#include