mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 13:30:45 -05:00
ASoC: dt-bindings: Add Cirrus Logic CS48L32 audio DSP
The CS48L32 is an Audio DSP with microphone inputs and SPI control interface. It has a programmable DSP and a variety of power-efficient fixed-function audio processors, with configurable digital mixing and routing. Most properties are core properties: supply regulators, gpios, clocks, interrupt parent and SPI interface. The custom properties define the configuration of the microphone inputs to match what is physically attached to them. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Reviewed-by: "Rob Herring (Arm)" <robh@kernel.org> Link: https://patch.msgid.link/20250415115016.505777-2-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
8ffd015db8
commit
ac03495d73
195
Documentation/devicetree/bindings/sound/cirrus,cs48l32.yaml
Normal file
195
Documentation/devicetree/bindings/sound/cirrus,cs48l32.yaml
Normal file
@@ -0,0 +1,195 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/sound/cirrus,cs48l32.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Cirrus Logic CS48L32 audio DSP.
|
||||
|
||||
maintainers:
|
||||
- patches@opensource.cirrus.com
|
||||
|
||||
description: |
|
||||
The CS48L32 is a high-performance low-power audio DSP for smartphones and
|
||||
other portable audio devices. The CS48L32 combines a programmable Halo Core
|
||||
DSP with a variety of power-efficient fixed-function audio processors.
|
||||
|
||||
See also the binding headers:
|
||||
|
||||
include/dt-bindings/sound/cs48l32.yaml
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/spi/spi-peripheral-props.yaml#
|
||||
- $ref: dai-common.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- cirrus,cs48l32
|
||||
|
||||
reg:
|
||||
description: SPI chip-select number.
|
||||
maxItems: 1
|
||||
|
||||
spi-max-frequency:
|
||||
maximum: 25000000
|
||||
|
||||
vdd-a-supply:
|
||||
description: Regulator supplying VDD_A
|
||||
|
||||
vdd-d-supply:
|
||||
description: Regulator supplying VDD_D
|
||||
|
||||
vdd-io-supply:
|
||||
description: Regulator supplying VDD_IO
|
||||
|
||||
vdd-cp-supply:
|
||||
description: Regulator supplying VDD_CP
|
||||
|
||||
reset-gpios:
|
||||
description:
|
||||
One entry specifying the GPIO controlling /RESET. Although optional,
|
||||
it is strongly recommended to use a hardware reset.
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: The clock supplied on MCLK1
|
||||
|
||||
clock-names:
|
||||
const: mclk1
|
||||
|
||||
'#sound-dai-cells':
|
||||
const: 1
|
||||
|
||||
cirrus,in-type:
|
||||
description: |
|
||||
A list of input type settings for each ADC input.
|
||||
Inputs are one of these types:
|
||||
CS48L32_IN_TYPE_DIFF : analog differential (default)
|
||||
CS48L32_IN_TYPE_SE : analog single-ended
|
||||
|
||||
The type of the left (L) and right (R) channel on each input is
|
||||
independently configured, as are the two groups of pins muxable to
|
||||
the input (referred to in the datasheet as "1" and "2").
|
||||
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
items:
|
||||
- description:
|
||||
IN1L_1 analog input type. One of the CS48L32_IN_TYPE_xxx.
|
||||
minimum: 0
|
||||
maximum: 1
|
||||
default: 0
|
||||
- description:
|
||||
IN1R_1 analog input type. One of the CS48L32_IN_TYPE_xxx.
|
||||
minimum: 0
|
||||
maximum: 1
|
||||
default: 0
|
||||
- description:
|
||||
IN1L_2 analog input type. One of the CS48L32_IN_TYPE_xxx.
|
||||
minimum: 0
|
||||
maximum: 1
|
||||
default: 0
|
||||
- description:
|
||||
IN1R_2 analog input type. One of the CS48L32_IN_TYPE_xxx.
|
||||
minimum: 0
|
||||
maximum: 1
|
||||
default: 0
|
||||
|
||||
cirrus,pdm-sup:
|
||||
description: |
|
||||
Indicate which MICBIAS output supplies bias to the microphone.
|
||||
There is one cell per input (IN1, IN2, ...).
|
||||
|
||||
One of the CS48L32_MICBIAS_xxx values.
|
||||
CS48L32_PDM_SUP_VOUT_MIC : mic biased from VOUT_MIC
|
||||
CS48L32_PDM_SUP_MICBIAS1 : mic biased from MICBIAS1
|
||||
|
||||
Also see the INn_PDM_SUP field in the datasheet.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
items:
|
||||
- description: IN1 PDM supply source
|
||||
minimum: 0
|
||||
maximum: 1
|
||||
default: 0
|
||||
- description: IN2 PDM supply source
|
||||
minimum: 0
|
||||
maximum: 1
|
||||
default: 0
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- vdd-a-supply
|
||||
- vdd-d-supply
|
||||
- vdd-io-supply
|
||||
- vdd-cp-supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/sound/cs48l32.h>
|
||||
|
||||
spi@e0006000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xe0006000 0x1000>;
|
||||
|
||||
codec@1 {
|
||||
compatible = "cirrus,cs48l32";
|
||||
|
||||
reg = <0x1>;
|
||||
spi-max-frequency = <2500000>;
|
||||
|
||||
vdd-a-supply = <®ulator_1v8>;
|
||||
vdd-d-supply = <®ulator_1v2>;
|
||||
vdd-io-supply = <®ulator_1v8>;
|
||||
vdd-cp-supply = <®ulator_1v8>;
|
||||
|
||||
reset-gpios = <&gpio 0 0>;
|
||||
|
||||
clocks = <&clks 0>;
|
||||
clock-names = "mclk1";
|
||||
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <56 8>;
|
||||
|
||||
#sound-dai-cells = <1>;
|
||||
|
||||
cirrus,in-type = <
|
||||
CS48L32_IN_TYPE_DIFF CS48L32_IN_TYPE_DIFF
|
||||
CS48L32_IN_TYPE_SE CS48L32_IN_TYPE_SE
|
||||
>;
|
||||
|
||||
cirrus,pdm-sup = <
|
||||
CS48L32_PDM_SUP_MICBIAS1 CS48L32_PDM_SUP_MICBIAS1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
#
|
||||
# Minimal config
|
||||
#
|
||||
- |
|
||||
#include <dt-bindings/sound/cs48l32.h>
|
||||
|
||||
spi@e0006000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <0xe0006000 0x1000>;
|
||||
|
||||
codec@1 {
|
||||
compatible = "cirrus,cs48l32";
|
||||
|
||||
reg = <0x1>;
|
||||
|
||||
vdd-a-supply = <®ulator_1v8>;
|
||||
vdd-d-supply = <®ulator_1v2>;
|
||||
vdd-io-supply = <®ulator_1v8>;
|
||||
vdd-cp-supply = <®ulator_1v8>;
|
||||
};
|
||||
};
|
||||
20
include/dt-bindings/sound/cs48l32.h
Normal file
20
include/dt-bindings/sound/cs48l32.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
|
||||
/*
|
||||
* Device Tree defines for CS48L32 DSP.
|
||||
*
|
||||
* Copyright (C) 2016-2018, 2022, 2025 Cirrus Logic, Inc. and
|
||||
* Cirrus Logic International Semiconductor Ltd.
|
||||
*/
|
||||
|
||||
#ifndef DT_BINDINGS_SOUND_CS48L32_H
|
||||
#define DT_BINDINGS_SOUND_CS48L32_H
|
||||
|
||||
/* Values for cirrus,in-type */
|
||||
#define CS48L32_IN_TYPE_DIFF 0
|
||||
#define CS48L32_IN_TYPE_SE 1
|
||||
|
||||
/* Values for cirrus,pdm-sup */
|
||||
#define CS48L32_PDM_SUP_VOUT_MIC 0
|
||||
#define CS48L32_PDM_SUP_MICBIAS1 1
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user