1. 30 Jan, 2023 1 commit
    • Claudiu Beznea's avatar
      ASoC: mchp-spdifrx: fix controls which rely on rsr register · fa09fa60
      Claudiu Beznea authored
      The SPDIFRX block is clocked by 2 clocks: peripheral and generic clocks.
      Peripheral clock feeds user interface (registers) and generic clock feeds
      the receiver.
      
      To enable the receiver the generic clock needs to be enabled and also the
      ENABLE bit of MCHP_SPDIFRX_MR register need to be set.
      
      The signal control exported by mchp-spdifrx driver reports wrong status
      when the receiver is disabled. This can happen when requesting the signal
      and the capture was not previously started. To solve this the receiver
      needs to be enabled (by enabling generic clock and setting ENABLE bit of
      MR register) before reading the signal status.
      
      As with this fix there are 2 paths now that need to control the generic
      clock and ENABLE bit of SPDIFRX_MR register (one path though controls, one
      path though configuration) a mutex has been introduced. We can't rely on
      subsystem locking as the controls are protected by
      struct snd_card::controls_rwsem semaphore and configuration is protected
      by a different lock (embedded in snd_pcm_stream_lock_irq()).
      
      The introduction of mutex is also extended to other controls which rely on
      SPDIFRX_RSR.ULOCK bit as it has been discovered experimentally that having
      both clocks enabled but not the receiver (through ENABLE bit of SPDIFRX.MR)
      leads to inconsistent values of SPDIFRX_RSR.ULOCK. Thus on some controls we
      rely on software state (dev->trigger_enabled protected by mutex) to
      retrieve proper values.
      
      Fixes: ef265c55 ("ASoC: mchp-spdifrx: add driver for SPDIF RX")
      Signed-off-by: default avatarClaudiu Beznea <claudiu.beznea@microchip.com>
      Link: https://lore.kernel.org/r/20230130120647.638049-2-claudiu.beznea@microchip.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
      fa09fa60
  2. 28 Jan, 2023 8 commits
  3. 27 Jan, 2023 22 commits
  4. 26 Jan, 2023 7 commits
  5. 25 Jan, 2023 2 commits