1. 05 Dec, 2019 13 commits
    • Alexandre Belloni's avatar
      clk: at91: avoid sleeping early · 15fc2f3c
      Alexandre Belloni authored
      [ Upstream commit 658fd65c ]
      
      It is not allowed to sleep to early in the boot process and this may lead
      to kernel issues if the bootloader didn't prepare the slow clock and main
      clock.
      
      This results in the following error and dump stack on the AriettaG25:
         bad: scheduling from the idle thread!
      
      Ensure it is possible to sleep, else simply have a delay.
      Reported-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@bootlin.com>
      Link: https://lkml.kernel.org/r/20190920153906.20887-1-alexandre.belloni@bootlin.com
      Fixes: 80eded6c ("clk: at91: add slow clks driver")
      Tested-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      15fc2f3c
    • Randy Dunlap's avatar
      reset: fix reset_control_ops kerneldoc comment · 8885552a
      Randy Dunlap authored
      [ Upstream commit f430c7ed ]
      
      Add a missing short description to the reset_control_ops documentation.
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      [p.zabel@pengutronix.de: rebased and updated commit message]
      Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      8885552a
    • Fabio Estevam's avatar
      ARM: dts: imx6qdl-sabreauto: Fix storm of accelerometer interrupts · a94913c0
      Fabio Estevam authored
      [ Upstream commit 7e5d0bf6 ]
      
      Since commit a211b8c5 ("ARM: dts: imx6qdl-sabreauto: Add sensors")
      a storm of accelerometer interrupts is seen:
      
      [  114.211283] irq 260: nobody cared (try booting with the "irqpoll" option)
      [  114.218108] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.3.4 #1
      [  114.223960] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
      [  114.230531] [<c0112858>] (unwind_backtrace) from [<c010cdc8>] (show_stack+0x10/0x14)
      [  114.238301] [<c010cdc8>] (show_stack) from [<c0c1aa1c>] (dump_stack+0xd8/0x110)
      [  114.245644] [<c0c1aa1c>] (dump_stack) from [<c0193594>] (__report_bad_irq+0x30/0xc0)
      [  114.253417] [<c0193594>] (__report_bad_irq) from [<c01933ac>] (note_interrupt+0x108/0x298)
      [  114.261707] [<c01933ac>] (note_interrupt) from [<c018ffe4>] (handle_irq_event_percpu+0x70/0x80)
      [  114.270433] [<c018ffe4>] (handle_irq_event_percpu) from [<c019002c>] (handle_irq_event+0x38/0x5c)
      [  114.279326] [<c019002c>] (handle_irq_event) from [<c019438c>] (handle_level_irq+0xc8/0x154)
      [  114.287701] [<c019438c>] (handle_level_irq) from [<c018eda0>] (generic_handle_irq+0x20/0x34)
      [  114.296166] [<c018eda0>] (generic_handle_irq) from [<c0534214>] (mxc_gpio_irq_handler+0x30/0xf0)
      [  114.304975] [<c0534214>] (mxc_gpio_irq_handler) from [<c0534334>] (mx3_gpio_irq_handler+0x60/0xb0)
      [  114.313955] [<c0534334>] (mx3_gpio_irq_handler) from [<c018eda0>] (generic_handle_irq+0x20/0x34)
      [  114.322762] [<c018eda0>] (generic_handle_irq) from [<c018f3ac>] (__handle_domain_irq+0x64/0xe0)
      [  114.331485] [<c018f3ac>] (__handle_domain_irq) from [<c05215a8>] (gic_handle_irq+0x4c/0xa8)
      [  114.339862] [<c05215a8>] (gic_handle_irq) from [<c0101a70>] (__irq_svc+0x70/0x98)
      [  114.347361] Exception stack(0xc1301ec0 to 0xc1301f08)
      [  114.352435] 1ec0: 00000001 00000006 00000000 c130c340 00000001 c130f688 9785636d c13ea2e8
      [  114.360635] 1ee0: 9784907d 0000001a eaf99d78 0000001a 00000000 c1301f10 c0182b00 c0878de4
      [  114.368830] 1f00: 20000013 ffffffff
      [  114.372349] [<c0101a70>] (__irq_svc) from [<c0878de4>] (cpuidle_enter_state+0x168/0x5f4)
      [  114.380464] [<c0878de4>] (cpuidle_enter_state) from [<c08792ac>] (cpuidle_enter+0x28/0x38)
      [  114.388751] [<c08792ac>] (cpuidle_enter) from [<c015ef9c>] (do_idle+0x224/0x2a8)
      [  114.396168] [<c015ef9c>] (do_idle) from [<c015f3b8>] (cpu_startup_entry+0x18/0x20)
      [  114.403765] [<c015f3b8>] (cpu_startup_entry) from [<c1200e54>] (start_kernel+0x43c/0x500)
      [  114.411958] handlers:
      [  114.414302] [<a01028b8>] irq_default_primary_handler threaded [<fd7a3b08>] mma8452_interrupt
      [  114.422974] Disabling IRQ #260
      
                 CPU0       CPU1
      ....
      260:     100001          0  gpio-mxc  31 Level     mma8451
      
      The MMA8451 interrupt triggers as low level, so the GPIO6_IO31 pin
      needs to activate its pull up, otherwise it will stay always at low level
      generating multiple interrupts.
      
      The current device tree does not configure the IOMUX for this pin, so
      it uses whathever comes configured from the bootloader.
      
      The IOMUXC_SW_PAD_CTL_PAD_EIM_BCLK register value comes as 0x8000 from
      the bootloader, which has PKE bit cleared, hence disabling the
      pull-up.
      
      Instead of relying on a previous configuration from the bootloader,
      configure the GPIO6_IO31 pin with pull-up enabled in order to fix
      this problem.
      
      Fixes: a211b8c5 ("ARM: dts: imx6qdl-sabreauto: Add sensors")
      Signed-off-by: default avatarFabio Estevam <festevam@gmail.com>
      Reviewed-By: default avatarLeonard Crestez <leonard.crestez@nxp.com>
      Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      a94913c0
    • Andy Shevchenko's avatar
      pinctrl: cherryview: Allocate IRQ chip dynamic · 5b15b1bf
      Andy Shevchenko authored
      [ Upstream commit 67d33aec ]
      
      Keeping the IRQ chip definition static shares it with multiple instances
      of the GPIO chip in the system. This is bad and now we get this warning
      from GPIO library:
      
      "detected irqchip that is shared with multiple gpiochips: please fix the driver."
      
      Hence, move the IRQ chip definition from being driver static into the struct
      intel_pinctrl. So a unique IRQ chip is used for each GPIO chip instance.
      
      This patch is heavily based on the attachment to the bug by Christoph Marz.
      
      BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=202543
      Fixes: 6e08d6bb ("pinctrl: Add Intel Cherryview/Braswell pin controller support")
      Depends-on: 83b9dc11 ("pinctrl: cherryview: Associate IRQ descriptors to irqdomain")
      Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      5b15b1bf
    • Marek Szyprowski's avatar
      clk: samsung: exynos5420: Preserve PLL configuration during suspend/resume · a0554203
      Marek Szyprowski authored
      [ Upstream commit e9323b66 ]
      
      Properly save and restore all top PLL related configuration registers
      during suspend/resume cycle. So far driver only handled EPLL and RPLL
      clocks, all other were reset to default values after suspend/resume cycle.
      This caused for example lower G3D (MALI Panfrost) performance after system
      resume, even if performance governor has been selected.
      Reported-by: default avatarReported-by: Marian Mihailescu <mihailescu2m@gmail.com>
      Fixes: 77342432 ("clk: samsung: exynos5420: add more registers to restore list")
      Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      a0554203
    • Russell King's avatar
      ASoC: kirkwood: fix device remove ordering · 80e28fa2
      Russell King authored
      [ Upstream commit dc39596a ]
      
      The devm conversion of kirkwood was incorrect; on removal, devm takes
      effect after the "remove" function has returned.  So, the effect of
      the conversion was to change the order during remove from:
      
        - snd_soc_unregister_component() (unpublishes interfaces)
        - clk_disable_unprepare()
        - cleanup resources
      
      After the conversion, this became:
      
        - clk_disable_unprepare() - while the device may still be active
        - snd_soc_unregister_component()
        - cleanup resources
      
      Hence, it introduces a bug, where the internal clock for the device
      may be shut down before the device itself has been shut down.  It is
      known that Marvell SoCs, including Dove, locks up if registers for a
      peripheral that has its clocks disabled are accessed.
      
      Fixes: f98fc0f8 ("ASoC: kirkwood: replace platform to component")
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Link: https://lore.kernel.org/r/E1iNGyP-0004oN-BA@rmk-PC.armlinux.org.ukSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      80e28fa2
    • Russell King's avatar
      ASoC: kirkwood: fix external clock probe defer · 6a7472ad
      Russell King authored
      [ Upstream commit 4523817d ]
      
      When our call to get the external clock fails, we forget to clean up
      the enabled internal clock correctly.  Enable the clock after we have
      obtained all our resources.
      
      Fixes: 84aac6c7 ("ASoC: kirkwood: fix loss of external clock at probe time")
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Link: https://lore.kernel.org/r/E1iNGyK-0004oF-6A@rmk-PC.armlinux.org.ukSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      6a7472ad
    • Marek Szyprowski's avatar
      clk: samsung: exynos5433: Fix error paths · a2c2cf16
      Marek Szyprowski authored
      [ Upstream commit faac3604 ]
      
      Add checking the value returned by samsung_clk_alloc_reg_dump() and
      devm_kcalloc(). While fixing this, also release all gathered clocks.
      
      Fixes: 523d3de4 ("clk: samsung: exynos5433: Add support for runtime PM")
      Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Reviewed-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Acked-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
      [s.nawrocki: squashed patch from K. Kozlowski adding missing slab.h header]
      Reported-by: default avatarkbuild test robot <lkp@intel.com>
      Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      a2c2cf16
    • Kishon Vijay Abraham I's avatar
      reset: Fix memory leak in reset_control_array_put() · 9a5933aa
      Kishon Vijay Abraham I authored
      [ Upstream commit 532f9cd6 ]
      
      Memory allocated for 'struct reset_control_array' in
      of_reset_control_array_get() is never freed in
      reset_control_array_put() resulting in kmemleak showing
      the following backtrace.
      
        backtrace:
          [<00000000c5f17595>] __kmalloc+0x1b0/0x2b0
          [<00000000bd499e13>] of_reset_control_array_get+0xa4/0x180
          [<000000004cc02754>] 0xffff800008c669e4
          [<0000000050a83b24>] platform_drv_probe+0x50/0xa0
          [<00000000d3a0b0bc>] really_probe+0x108/0x348
          [<000000005aa458ac>] driver_probe_device+0x58/0x100
          [<000000008853626c>] device_driver_attach+0x6c/0x90
          [<0000000085308d19>] __driver_attach+0x84/0xc8
          [<00000000080d35f2>] bus_for_each_dev+0x74/0xc8
          [<00000000dd7f015b>] driver_attach+0x20/0x28
          [<00000000923ba6e6>] bus_add_driver+0x148/0x1f0
          [<0000000061473b66>] driver_register+0x60/0x110
          [<00000000c5bec167>] __platform_driver_register+0x40/0x48
          [<000000007c764b4f>] 0xffff800008c6c020
          [<0000000047ec2e8c>] do_one_initcall+0x5c/0x1b0
          [<0000000093d4b50d>] do_init_module+0x54/0x1d0
      
      Fixes: 17c82e20 ("reset: Add APIs to manage array of resets")
      Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
      Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      9a5933aa
    • Xiaojun Sang's avatar
      ASoC: compress: fix unsigned integer overflow check · e8eb6233
      Xiaojun Sang authored
      [ Upstream commit d3645b05 ]
      
      Parameter fragments and fragment_size are type of u32. U32_MAX is
      the correct check.
      Signed-off-by: default avatarXiaojun Sang <xsang@codeaurora.org>
      Signed-off-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Acked-by: default avatarVinod Koul <vkoul@kernel.org>
      Link: https://lore.kernel.org/r/20191021095432.5639-1-srinivas.kandagatla@linaro.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      e8eb6233
    • Stephan Gerhold's avatar
      ASoC: msm8916-wcd-analog: Fix RX1 selection in RDAC2 MUX · 7971b7fd
      Stephan Gerhold authored
      [ Upstream commit 9110d1b0 ]
      
      According to the PM8916 Hardware Register Description,
      CDC_D_CDC_CONN_HPHR_DAC_CTL has only a single bit (RX_SEL)
      to switch between RX1 (0) and RX2 (1). It is not possible to
      disable it entirely to achieve the "ZERO" state.
      
      However, at the moment the "RDAC2 MUX" mixer defines three possible
      values ("ZERO", "RX2" and "RX1"). Setting the mixer to "ZERO"
      actually configures it to RX1. Setting the mixer to "RX1" has
      (seemingly) no effect.
      
      Remove "ZERO" and replace it with "RX1" to fix this.
      
      Fixes: 585e881e ("ASoC: codecs: Add msm8916-wcd analog codec")
      Signed-off-by: default avatarStephan Gerhold <stephan@gerhold.net>
      Acked-by: default avatarSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
      Link: https://lore.kernel.org/r/20191020153007.206070-1-stephan@gerhold.netSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      7971b7fd
    • Fabien Parent's avatar
      clocksource/drivers/mediatek: Fix error handling · daa2c403
      Fabien Parent authored
      [ Upstream commit 41d49e79 ]
      
      When timer_of_init fails, it cleans up after itself by undoing
      everything it did during the initialization function.
      
      mtk_syst_init and mtk_gpt_init both call timer_of_cleanup if
      timer_of_init fails. timer_of_cleanup try to release the resource
      taken.  Since these resources have already been cleaned up by
      timer_of_init, we end up getting a few warnings printed:
      
      [    0.001935] WARNING: CPU: 0 PID: 0 at __clk_put+0xe8/0x128
      [    0.002650] Modules linked in:
      [    0.003058] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.67+ #1
      [    0.003852] Hardware name: MediaTek MT8183 (DT)
      [    0.004446] pstate: 20400085 (nzCv daIf +PAN -UAO)
      [    0.005073] pc : __clk_put+0xe8/0x128
      [    0.005555] lr : clk_put+0xc/0x14
      [    0.005988] sp : ffffff80090b3ea0
      [    0.006422] x29: ffffff80090b3ea0 x28: 0000000040e20018
      [    0.007121] x27: ffffffc07bfff780 x26: 0000000000000001
      [    0.007819] x25: ffffff80090bda80 x24: ffffff8008ec5828
      [    0.008517] x23: ffffff80090bd000 x22: ffffff8008d8b2e8
      [    0.009216] x21: 0000000000000001 x20: fffffffffffffdfb
      [    0.009914] x19: ffffff8009166180 x18: 00000000002bffa8
      [    0.010612] x17: ffffffc012996980 x16: 0000000000000000
      [    0.011311] x15: ffffffbf004a6800 x14: 3536343038393334
      [    0.012009] x13: 2079726576652073 x12: 7eb9c62c5c38f100
      [    0.012707] x11: ffffff80090b3ba0 x10: ffffff80090b3ba0
      [    0.013405] x9 : 0000000000000004 x8 : 0000000000000040
      [    0.014103] x7 : ffffffc079400270 x6 : 0000000000000000
      [    0.014801] x5 : ffffffc079400248 x4 : 0000000000000000
      [    0.015499] x3 : 0000000000000000 x2 : 0000000000000000
      [    0.016197] x1 : ffffff80091661c0 x0 : fffffffffffffdfb
      [    0.016896] Call trace:
      [    0.017218]  __clk_put+0xe8/0x128
      [    0.017654]  clk_put+0xc/0x14
      [    0.018048]  timer_of_cleanup+0x60/0x7c
      [    0.018551]  mtk_syst_init+0x8c/0x9c
      [    0.019020]  timer_probe+0x6c/0xe0
      [    0.019469]  time_init+0x14/0x44
      [    0.019893]  start_kernel+0x2d0/0x46c
      [    0.020378] ---[ end trace 8c1efabea1267649 ]---
      [    0.020982] ------------[ cut here ]------------
      [    0.021586] Trying to vfree() nonexistent vm area ((____ptrval____))
      [    0.022427] WARNING: CPU: 0 PID: 0 at __vunmap+0xd0/0xd8
      [    0.023119] Modules linked in:
      [    0.023524] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W         4.19.67+ #1
      [    0.024498] Hardware name: MediaTek MT8183 (DT)
      [    0.025091] pstate: 60400085 (nZCv daIf +PAN -UAO)
      [    0.025718] pc : __vunmap+0xd0/0xd8
      [    0.026176] lr : __vunmap+0xd0/0xd8
      [    0.026632] sp : ffffff80090b3e90
      [    0.027066] x29: ffffff80090b3e90 x28: 0000000040e20018
      [    0.027764] x27: ffffffc07bfff780 x26: 0000000000000001
      [    0.028462] x25: ffffff80090bda80 x24: ffffff8008ec5828
      [    0.029160] x23: ffffff80090bd000 x22: ffffff8008d8b2e8
      [    0.029858] x21: 0000000000000000 x20: 0000000000000000
      [    0.030556] x19: ffffff800800d000 x18: 00000000002bffa8
      [    0.031254] x17: 0000000000000000 x16: 0000000000000000
      [    0.031952] x15: ffffffbf004a6800 x14: 3536343038393334
      [    0.032651] x13: 2079726576652073 x12: 7eb9c62c5c38f100
      [    0.033349] x11: ffffff80090b3b40 x10: ffffff80090b3b40
      [    0.034047] x9 : 0000000000000005 x8 : 5f5f6c6176727470
      [    0.034745] x7 : 5f5f5f5f28282061 x6 : ffffff80091c86ef
      [    0.035443] x5 : ffffff800852b690 x4 : 0000000000000000
      [    0.036141] x3 : 0000000000000002 x2 : 0000000000000002
      [    0.036839] x1 : 7eb9c62c5c38f100 x0 : 7eb9c62c5c38f100
      [    0.037536] Call trace:
      [    0.037859]  __vunmap+0xd0/0xd8
      [    0.038271]  vunmap+0x24/0x30
      [    0.038664]  __iounmap+0x2c/0x34
      [    0.039088]  timer_of_cleanup+0x70/0x7c
      [    0.039591]  mtk_syst_init+0x8c/0x9c
      [    0.040060]  timer_probe+0x6c/0xe0
      [    0.040507]  time_init+0x14/0x44
      [    0.040932]  start_kernel+0x2d0/0x46c
      
      This commit remove the calls to timer_of_cleanup when timer_of_init
      fails since it is unnecessary and actually cause warnings to be printed.
      
      Fixes: a0858f93 ("mediatek: Convert the driver to timer-of")
      Signed-off-by: default avatarFabien Parent <fparent@baylibre.com>
      Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
      Link: https://lore.kernel.org/linux-arm-kernel/20190919191315.25190-1-fparent@baylibre.com/Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      daa2c403
    • Martin Blumenstingl's avatar
      clk: meson: gxbb: let sar_adc_clk_div set the parent clock rate · 9c65bb95
      Martin Blumenstingl authored
      [ Upstream commit 44b09b11 ]
      
      The meson-saradc driver manually sets the input clock for
      sar_adc_clk_sel. Update the GXBB clock driver (which is used on GXBB,
      GXL and GXM) so the rate settings on sar_adc_clk_div are propagated up
      to sar_adc_clk_sel which will let the common clock framework select the
      best matching parent clock if we want that.
      
      This makes sar_adc_clk_div consistent with the axg-aoclk and g12a-aoclk
      drivers, which both also specify CLK_SET_RATE_PARENT.
      
      Fixes: 33d0fcdf ("clk: gxbb: add the SAR ADC clocks and expose them")
      Signed-off-by: default avatarMartin Blumenstingl <martin.blumenstingl@googlemail.com>
      Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      9c65bb95
  2. 01 Dec, 2019 27 commits