1. 19 11月, 2020 3 次提交
  2. 29 10月, 2020 1 次提交
  3. 28 10月, 2020 1 次提交
    • M
      drm/vc4: hdmi: Avoid sleeping in atomic context · 58d04369
      Maxime Ripard 提交于
      When running the trigger hook, ALSA by default will take a spinlock, and
      thus will run the trigger hook in atomic context.
      
      However, our HDMI driver will send the infoframes as part of the trigger
      hook, and part of that process is to wait for a bit to be cleared for up to
      100ms. To be nicer to the system, that wait has some usleep_range that
      interact poorly with the atomic context.
      
      There's several ways we can fix this, but the more obvious one is to make
      ALSA take a mutex instead by setting the nonatomic flag on the DAI link.
      That doesn't work though, since now the cyclic callback installed by the
      dmaengine helpers in ALSA will take a mutex, while that callback is run by
      dmaengine's virt-chan code in a tasklet where sleeping is not allowed
      either.
      
      Given the delay we need to poll the bit for, changing the usleep_range for
      a udelay and keep running it from a context where interrupts are disabled
      is not really a good option either.
      
      However, we can move the infoframe setup code in the hw_params hook, like
      is usually done in other HDMI controllers, that isn't protected by a
      spinlock and thus where we can sleep. Infoframes will be sent on a regular
      basis anyway, and since hw_params is where the audio parameters that end up
      in the infoframes are setup, this also makes a bit more sense.
      
      Fixes: bb7d7856 ("drm/vc4: Add HDMI audio support")
      Suggested-by: NMark Brown <broonie@kernel.org>
      Signed-off-by: NMaxime Ripard <maxime@cerno.tech>
      Reviewed-by: NMark Brown <broonie@kernel.org>
      Reviewed-by: NTakashi Iwai <tiwai@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201027101558.427256-1-maxime@cerno.tech
      58d04369
  4. 10 9月, 2020 1 次提交
  5. 09 9月, 2020 1 次提交
    • M
      drm/vc4/vc4_hdmi: fill ASoC card owner · ec653df2
      Marek Szyprowski 提交于
      card->owner is a required property and since commit 81033c6b ("ALSA:
      core: Warn on empty module") a warning is issued if it is empty. Fix lack
      of it. This fixes following warning observed on RaspberryPi 3B board
      with ARM 32bit kernel and multi_v7_defconfig:
      
      ------------[ cut here ]------------
      WARNING: CPU: 1 PID: 210 at sound/core/init.c:207 snd_card_new+0x378/0x398 [snd]
      Modules linked in: vc4(+) snd_soc_core ac97_bus snd_pcm_dmaengine bluetooth snd_pcm snd_timer crc32_arm_ce raspberrypi_hwmon snd soundcore ecdh_generic ecc bcm2835_thermal phy_generic
      CPU: 1 PID: 210 Comm: systemd-udevd Not tainted 5.8.0-rc1-00027-g81033c6b #1087
      Hardware name: BCM2835
      [<c03113c0>] (unwind_backtrace) from [<c030bcb4>] (show_stack+0x10/0x14)
      [<c030bcb4>] (show_stack) from [<c071cef8>] (dump_stack+0xd4/0xe8)
      [<c071cef8>] (dump_stack) from [<c0345bfc>] (__warn+0xdc/0xf4)
      [<c0345bfc>] (__warn) from [<c0345cc4>] (warn_slowpath_fmt+0xb0/0xb8)
      [<c0345cc4>] (warn_slowpath_fmt) from [<bf02ff74>] (snd_card_new+0x378/0x398 [snd])
      [<bf02ff74>] (snd_card_new [snd]) from [<bf11f0b4>] (snd_soc_bind_card+0x280/0x99c [snd_soc_core])
      [<bf11f0b4>] (snd_soc_bind_card [snd_soc_core]) from [<bf12f000>] (devm_snd_soc_register_card+0x34/0x6c [snd_soc_core])
      [<bf12f000>] (devm_snd_soc_register_card [snd_soc_core]) from [<bf165654>] (vc4_hdmi_bind+0x43c/0x5f4 [vc4])
      [<bf165654>] (vc4_hdmi_bind [vc4]) from [<c09d660c>] (component_bind_all+0xec/0x24c)
      [<c09d660c>] (component_bind_all) from [<bf15c44c>] (vc4_drm_bind+0xd4/0x174 [vc4])
      [<bf15c44c>] (vc4_drm_bind [vc4]) from [<c09d6ac0>] (try_to_bring_up_master+0x160/0x1b0)
      [<c09d6ac0>] (try_to_bring_up_master) from [<c09d6f38>] (component_master_add_with_match+0xd0/0x104)
      [<c09d6f38>] (component_master_add_with_match) from [<bf15c588>] (vc4_platform_drm_probe+0x9c/0xbc [vc4])
      [<bf15c588>] (vc4_platform_drm_probe [vc4]) from [<c09df740>] (platform_drv_probe+0x6c/0xa4)
      [<c09df740>] (platform_drv_probe) from [<c09dd6f0>] (really_probe+0x210/0x350)
      [<c09dd6f0>] (really_probe) from [<c09dd940>] (driver_probe_device+0x5c/0xb4)
      [<c09dd940>] (driver_probe_device) from [<c09ddb38>] (device_driver_attach+0x58/0x60)
      [<c09ddb38>] (device_driver_attach) from [<c09ddbc0>] (__driver_attach+0x80/0xbc)
      [<c09ddbc0>] (__driver_attach) from [<c09db820>] (bus_for_each_dev+0x68/0xb4)
      [<c09db820>] (bus_for_each_dev) from [<c09dc9f8>] (bus_add_driver+0x130/0x1e8)
      [<c09dc9f8>] (bus_add_driver) from [<c09de648>] (driver_register+0x78/0x110)
      [<c09de648>] (driver_register) from [<c0302038>] (do_one_initcall+0x50/0x220)
      [<c0302038>] (do_one_initcall) from [<c03db544>] (do_init_module+0x60/0x210)
      [<c03db544>] (do_init_module) from [<c03da4f8>] (load_module+0x1e34/0x2338)
      [<c03da4f8>] (load_module) from [<c03dac00>] (sys_finit_module+0xac/0xbc)
      [<c03dac00>] (sys_finit_module) from [<c03000c0>] (ret_fast_syscall+0x0/0x54)
      Exception stack(0xeded9fa8 to 0xeded9ff0)
      ...
      ---[ end trace 6414689569c2bc08 ]---
      
      Fixes: bb7d7856 ("drm/vc4: Add HDMI audio support")
      Suggested-by: NTakashi Iwai <tiwai@suse.de>
      Signed-off-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Tested-by: NStefan Wahren <stefan.wahren@i2se.com>
      Signed-off-by: NMaxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20200701073949.28941-1-m.szyprowski@samsung.com
      ec653df2
  6. 08 9月, 2020 33 次提交