[PATCH v3 00/17] ASoC: Add support for GPIOs driven amplifiers

Herve Codina posted 17 patches 1 month ago
.../bindings/sound/gpio-audio-amp.yaml        | 270 ++++++
MAINTAINERS                                   |   7 +
include/linux/of.h                            |   7 +
sound/soc/codecs/simple-amplifier.c           | 918 +++++++++++++++++-
4 files changed, 1176 insertions(+), 26 deletions(-)
create mode 100644 Documentation/devicetree/bindings/sound/gpio-audio-amp.yaml
[PATCH v3 00/17] ASoC: Add support for GPIOs driven amplifiers
Posted by Herve Codina 1 month ago
On some embedded system boards, audio amplifiers are designed using
discrete components such as op-amp, several resistors and switches to
either adjust the gain (switching resistors) or fully switch the
audio signal path (mute and/or bypass features).

Those switches are usually driven by simple GPIOs.

This kind of amplifiers are not handled in ASoC and the fallback is to
let the user-space handle those GPIOs out of the ALSA world.

In order to have those kind of amplifiers fully integrated in the audio
stack, this series introduces the audio-gpio-amp to handle them.

This new ASoC component allows to have the amplifiers seen as ASoC
auxiliarty devices and so it allows to control them through audio mixer
controls.

Compared to previous iteration, this v3 series takes into account
feedback received from Mark and also some comments from Shashiko.

In order to ease the review, I choose to split modifications related
to the merge of the gpio-audio-amp part into the simple-amplfier driver
in several commits.

Best regards,
Hervé

---
Changes v2 -> v3
  v2: https://lore.kernel.org/all/20260429074356.118420-1-herve.codina@bootlin.com/

  Patch 2:
  - Fix a typo s/rignt/right/ (Sashiko)
  - Use the 'int32-matrix' type for gain-ranges property. Indeed the
    gain value can be a negative value (Sashiko).
  - Add 'Reviewed-by: Rob Herring'

  Patch 8:
  - Fix error message

  Patch 11:
  - Clamp the value received in simple_amp_single_kctrl_put() in order
    to have a more robust code (Sashiko)

  Patch 14:
  - Return 'unsigned int *' in simple_amp_alloc_tlv_ranges()
  - Check for existing ranges entirely inside the new one in
    simple_amp_check_new_range().
  - Don't allow an empty ranges array. nb_ranges cannot be set to 0
    anymore (Sahiko).

  Patch 15:
  - Don't allow an empty labels array. nb_labels cannot be set to 0
    anymore (Sahiko).

  Other patches:
    No changes

Changes v1 -> v2
  v1: https://lore.kernel.org/all/20260330101610.57942-1-herve.codina@bootlin.com/

  Rebase on top of v7.1-rc1.

  Patch 1:
  - Add 'Acked-by: Rob Herring'

  Patch 2:
  - Use gpio-audio-amp-* instead of audio-gpio-amp
  - Introduce mono/stereo channel distinction with gpio-audio-amp-mono
    and gpio-audio-amp-stereo compatible strings (needed if the
    "simple-amplifier" compatible string is deprecated in the near
    future).
  - Reduce the maximum numbers of gpios used for gain setting to 16.
  - Use amplifier-N instead of amplifierN in examples
  - Introduce gpio-ranges property and remove the no more needed
    gpio-points and gpio-range properties

  Other patches (full rework):
  - Merge the new audio-gpio-amp driver provided in v1 into the
    existing simple-amplifier driver.
  - Slit modification in several commits.
  - Reduce the maximum number of gpios used for gain setting to 16.
  - Fix a memory leak in case of error in simple_amp_multi_add_kcontrol()
    (Reported by Shahiko).
  - Handle the new gpio-ranges property and drop the support for the no
    more needed properties (gpio-points and gpio-range).
  - Update author and copyright.

Herve Codina (17):
  of: Introduce of_property_read_s32_index()
  ASoC: dt-bindings: Add support for the GPIOs driven amplifier
  ASoC: simple-amplifier: Remove DRV_NAME defined value
  ASoC: simple-amplifier: Add missing headers
  ASoC: simple-amplifier: Remove CONFIG_OF flag and of_match_ptr()
  ASoC: simple-amplifier: Rename drv_event() function
  ASoC: simple-amplifier: Use 'simple_amp' variable name instead of
    'priv'
  ASoC: simple-amplifier: Remove DAPM widgets and routes from the ASoC
    component driver
  ASoC: simple-amplifier: Introduce support for gpio-audio-amp
  ASoC: simple-amplifier: gpio-audio-amp: Add support for extra power
    supplies
  ASoC: simple-amplifier: gpio-audio-amp: Add support for mute gpio
  ASoC: simple-amplifier: gpio-audio-amp: Add support for bypass gpio
  ASoC: simple-amplifier: gpio-audio-amp: Add support for basic gain
  ASoC: simple-amplifier: gpio-audio-amp: Add support for gain-ranges
  ASoC: simple-amplifier: gpio-audio-amp: Add support for gain-labels
  ASoC: simple-amplifier: Update author and copyright
  MAINTAINERS: Add the ASoC gpio audio amplifier entry

 .../bindings/sound/gpio-audio-amp.yaml        | 270 ++++++
 MAINTAINERS                                   |   7 +
 include/linux/of.h                            |   7 +
 sound/soc/codecs/simple-amplifier.c           | 918 +++++++++++++++++-
 4 files changed, 1176 insertions(+), 26 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/gpio-audio-amp.yaml

-- 
2.54.0

Re: [PATCH v3 00/17] ASoC: Add support for GPIOs driven amplifiers
Posted by Mark Brown 3 weeks, 4 days ago
On Wed, 13 May 2026 10:16:44 +0200, Herve Codina wrote:
> ASoC: Add support for GPIOs driven amplifiers
> 
> On some embedded system boards, audio amplifiers are designed using
> discrete components such as op-amp, several resistors and switches to
> either adjust the gain (switching resistors) or fully switch the
> audio signal path (mute and/or bypass features).
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-7.2

Thanks!

[01/17] of: Introduce of_property_read_s32_index()
        https://git.kernel.org/broonie/sound/c/37dba38ac8d0
[02/17] ASoC: dt-bindings: Add support for the GPIOs driven amplifier
        https://git.kernel.org/broonie/sound/c/04a1fe8e6582
[03/17] ASoC: simple-amplifier: Remove DRV_NAME defined value
        https://git.kernel.org/broonie/sound/c/28188a6d8869
[04/17] ASoC: simple-amplifier: Add missing headers
        https://git.kernel.org/broonie/sound/c/23cf9e3ca498
[05/17] ASoC: simple-amplifier: Remove CONFIG_OF flag and of_match_ptr()
        https://git.kernel.org/broonie/sound/c/2c562adb159e
[06/17] ASoC: simple-amplifier: Rename drv_event() function
        https://git.kernel.org/broonie/sound/c/dc8beaad2926
[07/17] ASoC: simple-amplifier: Use 'simple_amp' variable name instead of 'priv'
        https://git.kernel.org/broonie/sound/c/34ddd2d368c3
[08/17] ASoC: simple-amplifier: Remove DAPM widgets and routes from the ASoC component driver
        https://git.kernel.org/broonie/sound/c/4d84b75e5eec
[09/17] ASoC: simple-amplifier: Introduce support for gpio-audio-amp
        https://git.kernel.org/broonie/sound/c/41e3ebbfcab1
[10/17] ASoC: simple-amplifier: gpio-audio-amp: Add support for extra power supplies
        https://git.kernel.org/broonie/sound/c/f68933d0eb67
[11/17] ASoC: simple-amplifier: gpio-audio-amp: Add support for mute gpio
        https://git.kernel.org/broonie/sound/c/432331970eca
[12/17] ASoC: simple-amplifier: gpio-audio-amp: Add support for bypass gpio
        https://git.kernel.org/broonie/sound/c/46c21e55c3bf
[13/17] ASoC: simple-amplifier: gpio-audio-amp: Add support for basic gain
        https://git.kernel.org/broonie/sound/c/5796026b8e90
[14/17] ASoC: simple-amplifier: gpio-audio-amp: Add support for gain-ranges
        https://git.kernel.org/broonie/sound/c/d25e00ecd5c5
[15/17] ASoC: simple-amplifier: gpio-audio-amp: Add support for gain-labels
        https://git.kernel.org/broonie/sound/c/fb757dfa039f
[16/17] ASoC: simple-amplifier: Update author and copyright
        https://git.kernel.org/broonie/sound/c/7b295a6fc632
[17/17] MAINTAINERS: Add the ASoC gpio audio amplifier entry
        https://git.kernel.org/broonie/sound/c/5bd8c4b7d3bb

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark