[v6,0/7] Add the Lantiq PEF2256 audio support

Message ID 20230417171601.74656-1-herve.codina@bootlin.com
Headers
Series Add the Lantiq PEF2256 audio support |

Message

Herve Codina April 17, 2023, 5:15 p.m. UTC
  Hi,

This series adds support for audio using the Lantiq PEF2256 framer.

The Lantiq PEF2256 is a framer and line interface component designed to
fulfill all required interfacing between an analog E1/T1/J1 line and the
digital PCM system highway/H.100 bus.

The first part of this series (patches 1 to 4) adds the Lantiq PEF2256
driver core fixing a MFD core issue at patch 2.
The patch 5 adds the PEF2256 pinmux support.
The patch 6 adds the audio support using the Lantiq PEF2256 driver core.
The last patch adds myself as the PEF2256 maintainer.

The consumer/provider relation between the codec and the driver core
allows to use the PEF2256 framer for other purpose than audio support.

Compared to the previous iteration
  https://lore.kernel.org/all/20230328092645.634375-1-herve.codina@bootlin.com/
This v6 series mainly:
  - Use regmap
  - Move the pinmux part to the pinctrl subsystem
  - Move register definitions to header files.
  - Split pef2256_setup_e1() in several parts.
  - Fixed issues raised by checkpatch.pl.
  - Removed debug prints.

Best regards,
Herve Codina

Changes v5 -> v6
  - Patch 1
    Add 'Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>'

  - Patch 2
    New patch added fixing an MFD core issue.

  - Patch 3 (patch 2 in v5)
    Remove the pinmux part.
    Move registers definition to a header file and rework the
    definition.
    Use a regmap for register accesses
    Various minor fixes (typos, comments, ...)
    Fixed issues raised by checkpatch.pl --strict
    Removed debug prints.

  - Patch 4 (patch 3 in v5)
    No changes

  - Patch 5
    New patch adding the PEF2256 pinmux part in the pinctrl subsystem.

  - Patch 6 (patch 4 in v5)
    Fixed issues raised by checkpatch.pl --strict

  - Patch 7 (patch 5 in v5)
    Updated according to files creation and move.

Changes v4 -> v5
  - Patch 1
    Fix 'additionalProperties' and 'unevaluatedProperties' positions
    Fix sub-nodes names suffixes

Changes v3 -> v4
  - Patch 1
    Merge the codec sub-node description.
    Move the 'allOf' property after the 'required' property.
    Rework the example to be more complete.

  - Patches 2 and 5
    Drop of_match_ptr()

  - Patch 2
    Add 'depends on OF' as pinconf_generic_dt_node_to_map_pin() needs OF
    support to be compiled (error raised by the kernel test robot).

  - Patch 4
    Remove patch (merged in patch 1)

Changes v2 -> v3
  - Patch 1
    Remove unneeded 'allOf' and quotes.
    Add several 'additionalProperties: false'
    Fix example (node name, interrupts and reg properties)
    Replace the lantiq,sysclk-rate-hz property by sclkr and sclkx clocks.
    Define 'lantiq,frame-format' property in top level.
    Move to MFD

  - Patch 2
    Fix some #define.
    Compact the register accessor helpers.
    Rework pef2256_get_version().
    Merge v1.2 and v2.x GCM setup functions into one pef2256_setup_gcm().
    Update comments, avoid duplicates and change some conditionals.
    Remove the carrier spinlock and use atomic_t.
    Make exported symbol consistent and use EXPORT_SYMBOL_GPL.
    Remove the no more needed pef2256_get_byphandle() and
    devm_pef2256_get_byphandle().
    Replace the lantiq,sysclk-rate-hz property by sclkr and sclkx clocks.
    Move to MFD

  - Patch 4
    Remove, merged with patch 7

  - Patch 4 (patch 5 in v2)
    Update title and description.
    Remove incorrect SPI reference.
    Remove the 'lantiq,pef2256' phandle.
    Fix commit log

  - Patch 5 (patch 6 in v2)
    Remove devm_pef2256_get_byphandle().
    Fix commit log

  - Patch 6 (patch 7 in v2)
    Merge v2 patch 4. One entry only for PEF2256

Changes v1 -> v2
  - Patch 2
    Remove duplicate const qualifiers.
    Add HAS_IOMEM as a dependency

  - Patch 3
    Fix a "Block quote ends without a blank line; unexpected unindent"
    syntax issue.

Herve Codina (7):
  dt-bindings: mfd: Add the Lantiq  PEF2256 E1/T1/J1 framer
  mfd: core: Ensure disabled devices are skiped without aborting
  mfd: Add support for the Lantiq PEF2256 framer
  Documentation: sysfs: Document the Lantiq PEF2256 sysfs entry
  pinctrl: Add support for the Lantic PEF2256 pinmux
  ASoC: codecs: Add support for the Lantiq PEF2256 codec
  MAINTAINERS: Add the Lantiq PEF2256 driver entry

 .../sysfs-bus-platform-devices-pef2256        |  12 +
 .../bindings/mfd/lantiq,pef2256.yaml          | 267 +++++
 MAINTAINERS                                   |  12 +
 drivers/mfd/Kconfig                           |  16 +
 drivers/mfd/Makefile                          |   1 +
 drivers/mfd/mfd-core.c                        |  18 +-
 drivers/mfd/pef2256-regs.h                    | 250 +++++
 drivers/mfd/pef2256.c                         | 950 ++++++++++++++++++
 drivers/pinctrl/Kconfig                       |  14 +
 drivers/pinctrl/Makefile                      |   1 +
 drivers/pinctrl/pinctrl-pef2256-regs.h        |  65 ++
 drivers/pinctrl/pinctrl-pef2256.c             | 310 ++++++
 include/linux/mfd/pef2256.h                   |  52 +
 sound/soc/codecs/Kconfig                      |  14 +
 sound/soc/codecs/Makefile                     |   2 +
 sound/soc/codecs/pef2256-codec.c              | 390 +++++++
 16 files changed, 2369 insertions(+), 5 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-platform-devices-pef2256
 create mode 100644 Documentation/devicetree/bindings/mfd/lantiq,pef2256.yaml
 create mode 100644 drivers/mfd/pef2256-regs.h
 create mode 100644 drivers/mfd/pef2256.c
 create mode 100644 drivers/pinctrl/pinctrl-pef2256-regs.h
 create mode 100644 drivers/pinctrl/pinctrl-pef2256.c
 create mode 100644 include/linux/mfd/pef2256.h
 create mode 100644 sound/soc/codecs/pef2256-codec.c