Skip to content
  1. Oct 17, 2021
    • Nicolas Frattaroli's avatar
      ASoC: rockchip: i2s-tdm: Strip out direct CRU use · d6365d0f
      Nicolas Frattaroli authored
      
      
      In cases where both rx and tx lrck are synced to the same source,
      the resets for rx and tx need to be triggered simultaneously,
      according to the downstream driver.
      
      As there is no reset API to atomically bulk (de)assert two resets
      at once, what the driver did was implement half a reset controller
      specific to Rockchip, which tried to write the registers for the
      resets within one write ideally or several writes within an irqsave
      section.
      
      This of course violates abstractions quite badly. The driver should
      not write to the CRU's registers directly.
      
      In practice, for the cases I tested the driver with, which is audio
      playback, replacing the synchronised asserts with just individual
      ones does not seem to make any difference.
      
      If it turns out that this breaks something in the future, it should
      be fixed through the specification and implementation of an atomic
      bulk reset API, not with a CRU hack.
      
      Signed-off-by: default avatarNicolas Frattaroli <frattaroli.nicolas@gmail.com>
      Reviewed-by: default avatarHeiko Stuebner <heiko@sntech.de>
      Message-Id: <20211016105354.116513-2-frattaroli.nicolas@gmail.com>
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      d6365d0f
  2. Oct 16, 2021
    • Mark Brown's avatar
      Merge series "ASoC: Add Audio Graph Card2 support" from Kuninori Morimoto... · 9a61277a
      Mark Brown authored
      Merge series "ASoC: Add Audio Graph Card2 support" from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:
      
      Hi Mark
      
      We already have Audio-Graph-Card which is Of-Graph base general sound
      card driver. Basically it supports basic CPU-Codec connection, and is
      also supporting DPCM connection. Because it was forcibly expanded to
      DPCM, DT parsing is very limited and very difficult to add new features
      on it, for example Multi-CPU/Codec support, Codec2Codec support, etc.
      
      This patch adds more flexible new Audio-Graph-Card2 driver for it.
      Audio-Graph-Card and Audio-Graph-Card2 are similar, but don't have
      full compatibility.
      The reason why I need Audio-Graph-Card2 instead of updating Audio-Graph-Card
      is that it is very difficult to keep compatibility.
      
      Audio-Graph-Card2 supports Normal/DPCM/Codec2Codec Connection wich
      Single/Multi DAIs. And it is possible to Customizing.
      
      This patch-set adds Audio-Graph-Card2 driver and its custom driver
      sample, and DT settings sample which can be used for testing.
      
      To enable testing/debuging, this patch-set also adds Test-Component
      driver. We already have Dummy Component and/or Dummy DAI on soc-utils,
      but 1) we can't use it from DT, 2) it do nothing.
      Added new Test-Component can be used from DT, and it can indicate called
      function name. We can use it to trace callback order, understanding
      ALSA SoC behavior, etc, etc...
      Sample DT settings of Audio Graph Card2 is using Test-Component as CPU/Codec DAI.
      
      You can easily try to use/test it if you added below line to your DT file.
      Your .config needs to have below CONFIGs to use/test it.
      It will probe sample Sound Card which has Normal/DPCM/Multi/Codec2Codec
      connections.
      
      	#include "../../../../../sound/soc/generic/audio-graph-card2-custom-sample.dtsi"
      
      	CONFIG_SND_AUDIO_GRAPH_CARD2
      	CONFIG_SND_AUDIO_GRAPH_CARD2_CUSTOM_SAMPLE
      	CONFIG_SND_TEST_COMPONENT
      
      Because Audio Graph Card2 is still under experimental stage, it will
      indicate such warning when probing, and the DT might be updated/exchanged.
      
      It can use Codec2Codec, but it will start automatically when probed,
      and can't stop it so far. It should be updated.
      
      Link: https://lore.kernel.org/r/87k0xszlep.wl-kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/871r8u4s6q.wl-kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87a6mhwyqn.wl-kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87tuitusy4.wl-kuninori.morimoto.gx@renesas.com
      Link: https://lore.kernel.org/r/87a6jn56x0.wl-kuninori.morimoto.gx@renesas.com
      
      v1 -> v2
      	- don't use "port" base for_each loop
      
      v2 -> v3
      	- Rename audio-graph-card2 to rich-graph-card
      	- Rename DSP to DPCM not to confuse
      	- Normal/DPCM/Codec2Codec can use Single/Multi DAIs.
      	- use dpcm/multi/codec2codec node instead of using extra compatible
      	- Sample DTSI patch is separated to Single/Multi.
      
      v3 -> v4
      	- Rename rich-graph-card to audio-graph-card2
      	- fixup custom sample driver's connection bug
      	- test-component compatible uses "verbose" instead of "vv"
      
      v4 -> v5
      	- tidyup git-log comment at
      	- tidyup Custom Sample comment
      
      Kuninori Morimoto (16):
        ASoC: test-component: add Test Component YAML bindings
        ASoC: test-component: add Test Component for Sound debug/test
        ASoC: simple-card-utils: add asoc_graph_is_ports0()
        ASoC: simple-card-utils: add codec2codec support
        ASoC: add Audio Graph Card2 driver
        ASoC: audio-graph-card2: add Multi CPU/Codec support
        ASoC: audio-graph-card2: add DPCM support
        ASoC: audio-graph-card2: add Codec2Codec support
        ASoC: add Audio Graph Card2 Yaml Document
        ASoC: add Audio Graph Card2 Custom Sample
        ASoC: audio-graph-card2-custom-sample.dtsi: add Sample DT for Normal (Single)
        ASoC: audio-graph-card2-custom-sample.dtsi: add Sample DT for Normal (Nulti)
        ASoC: audio-graph-card2-custom-sample.dtsi: add DPCM sample (Single)
        ASoC: audio-graph-card2-custom-sample.dtsi: add DPCM sample (Multi)
        ASoC: audio-graph-card2-custom-sample.dtsi: add Codec2Codec sample (Single)
        ASoC: audio-graph-card2-custom-sample.dtsi: add Codec2Codec sample (Multi)
      
       .../bindings/sound/audio-graph-card2.yaml     |   57 +
       .../bindings/sound/test-component.yaml        |   33 +
       include/sound/graph_card.h                    |   21 +
       include/sound/simple_card_utils.h             |    4 +
       sound/soc/generic/Kconfig                     |   20 +
       sound/soc/generic/Makefile                    |    6 +
       .../generic/audio-graph-card2-custom-sample.c |  183 +++
       .../audio-graph-card2-custom-sample.dtsi      |  227 +++
       sound/soc/generic/audio-graph-card2.c         | 1281 +++++++++++++++++
       sound/soc/generic/simple-card-utils.c         |   46 +-
       sound/soc/generic/test-component.c            |  659 +++++++++
       11 files changed, 2536 insertions(+), 1 deletion(-)
       create mode 100644 Documentation/devicetree/bindings/sound/audio-graph-card2.yaml
       create mode 100644 Documentation/devicetree/bindings/sound/test-component.yaml
       create mode 100644 sound/soc/generic/audio-graph-card2-custom-sample.c
       create mode 100644 sound/soc/generic/audio-graph-card2-custom-sample.dtsi
       create mode 100644 sound/soc/generic/audio-graph-card2.c
       create mode 100644 sound/soc/generic/test-component.c
      
      --
      2.25.1
      9a61277a
  3. Oct 15, 2021
  4. Oct 14, 2021
  5. Oct 13, 2021
  6. Oct 12, 2021
  7. Oct 11, 2021