RE: [EXTERNAL] Re: [PATCH v5] ASoC: dt-bindings: Add tas2781 amplifier

From: Ding, Shenghao
Date: Sun Feb 05 2023 - 07:33:22 EST


Hi Rob
Thanks for your review comments. My answers are inline
with prefix [DING]

-----Original Message-----
From: Rob Herring <robh@xxxxxxxxxx>
Sent: Saturday, February 4, 2023 5:57 AM
To: Shenghao Ding <13916275206@xxxxxxx>
Cc: krzysztof.kozlowski+dt@xxxxxxxxxx; broonie@xxxxxxxxxx; lgirdwood@xxxxxxxxx; Lu, Kevin <kevin-lu@xxxxxx>; Ding, Shenghao <shenghao-ding@xxxxxx>; alsa-devel@xxxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
Subject: [EXTERNAL] Re: [PATCH v5] ASoC: dt-bindings: Add tas2781 amplifier

On Fri, Feb 03, 2023 at 12:01:15PM +0800, Shenghao Ding wrote:
> Create tas2781.yaml for tas2781 driver.
>
> Signed-off-by: Shenghao Ding <13916275206@xxxxxxx>
>
> ---
> Changes in v5:
> - Drop the full stop in the Subject.
> - Drop the reset-gpios reference to gpio.txt.
> - Add Changelog.
> Changes to be committed:
> new file: Documentation/devicetree/bindings/sound/ti,tas2781.yaml
> ---
> .../devicetree/bindings/sound/ti,tas2781.yaml | 87
> +++++++++++++++++++
> 1 file changed, 87 insertions(+)
> create mode 100644
> Documentation/devicetree/bindings/sound/ti,tas2781.yaml
>
> diff --git a/Documentation/devicetree/bindings/sound/ti,tas2781.yaml
> b/Documentation/devicetree/bindings/sound/ti,tas2781.yaml
> new file mode 100644
> index 000000000000..8af44792a904
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/ti,tas2781.yaml
> @@ -0,0 +1,87 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) # Copyright
> +(C) 2022 - 2023 Texas Instruments Incorporated %YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/ti,tas2781.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Texas Instruments TAS2781 SmartAMP
> +
> +maintainers:
> + - Shenghao Ding <shenghao-ding@xxxxxx>
> + - Kevin Lu <kevin-lu@xxxxxx>
> +
> +description: |

Don't need '|' unless you need line endings preserved. Wrap lines at 80 chars.
[DING] Accept this comment. I will remove all the "|" after "description:"
> + The TAS2781 is a mono, digital input Class-D audio amplifier
> + optimized for efficiently driving high peak power into small
> + loudspeakers. Integrated an on-chip DSP supports Texas Instruments
> + Smart Amp speaker protection algorithm. The integrated speaker
> + voltage and current sense provides for real time monitoring of
> + loudspeaker behavior.
> +
> +properties:
> + compatible:
> + enum:
> + - ti,tas2781
> +
> + reg:
> + maxItems: 1
> + description: |
> + I2C address of the device can be in range from 0x38 to 0x40.

Express as constraints instead:

items:
minimum: 0x38
maximum: 0x40
[DING] Accept this comment.
Or was this the range of the slot addresses?
[DING] Yes.
> +
> + reset-gpios:
> + maxItems: 1
> + description: |
> + A GPIO line handling reset of the chip. As the line is active high,
> + it should be marked GPIO_ACTIVE_HIGH.

The description doesn't add anything. Drop.

> +
> + interrupts:
> + maxItems: 1
> +
> + ti,audio-slots:
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 1
> + maxItems: 4
> + description: |
> + I2c address of the device for different audio slots,

I2C

> + useless in mono case.
> +
> + ti,broadcast-addr:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: |
> + Generic i2c address for all the tas2781 devices in

I2C

Be consistent.
[DING] Accept this comment.
> + purpose of I2C broadcast during the multi-device
> + writes, useless in mono case.
> +
> + '#sound-dai-cells':
> + const: 1
> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> + i2c {
> + /* example with quad support, such as tablet or pad device */
> + #address-cells = <1>;
> + #size-cells = <0>;
> + quad: codec@38 {
> + compatible = "ti,tas2781";
> + reg = <0x38>;
> + #sound-dai-cells = <1>;
> + reset-gpios = < &gpio1 10 GPIO_ACTIVE_HIGH >;
> + interrupt-parent = <&gpio1>;
> + interrupts = <15>;
> + ti,audio-slots = < 0x38 /* topleft-channel */
> + 0x39 /* topright-channel */
> + 0x3a /* bottomleft-channel */
> + 0x3b /* bottomright-channel */

Do these vary? Or the slot addresses are fixed and which slots are used varies?
[DING] Yes, these will vary with different projects. In some projects there're two addresses,
in some there're six addresses, in others the I2C addresses may be out of order.
> + >;
> + ti,broadcast-addr = <0x40>;

I tend to think the I2C addresses should all be in 'reg'.
[DING] broadcast-addr item is used in multiple tas2781s case to enable the
broadcast mode to download dsp fw simultaneously. Without this item,
broadcast mode will be disabled, and downloading dsp fw will be one by one.
As you know, not all project will enable the broadcast feature, so we have to
add this item. As to reg item, it is only stored the primary tas2781 I2C addr.
> + };
> + };
> +...
> --
> 2.34.1
>
>