mbox series

[v3,0/4] ASoC platform driver for Apple MCA

Message ID 20220824160715.95779-1-povik+lin@cutebit.org
Headers show
Series ASoC platform driver for Apple MCA | expand

Message

Martin Povišer Aug. 24, 2022, 4:07 p.m. UTC
Hi all,

sending what should be the final touches on Apple MCA driver. It most
likely goes without saying but please do not merge the DT additions
into the ASoC tree.

Martin

Changes since v2:
 - fix Mark's style nit
 - order compatibles in schema
 - redo the DT additions for t8103
 - remove stray unlock in mca_be_prepare (and rename the locking patch)
Link: https://lore.kernel.org/asahi/20220819125430.4920-1-povik+lin@cutebit.org/T/#t

Changes since v1:
 - reflect the set_fmt provider/consumer change in 6.0-rc1
 - fix the probe function requesting optional reset
 - unroll 'dma-names' in schema
 - fix binding schema/code discrepancy in register ranges
 - minor things
Link: https://lore.kernel.org/asahi/20220808224153.3634-1-povik+lin@cutebit.org/T/#t

Changes since 'macaudio RFC v2' [0]:
 - addition of locking (extra commit)
 - transition to set_bclk_ratio (instead of getting the bclk ratio from set_sysclk)
 - using shared reset control and documenting the reset in binding
 - formatting, comments, and a minor fix to hw driving
Link: https://lore.kernel.org/asahi/20220606191910.16580-1-povik+lin@cutebit.org/T/#t

Martin Povišer (4):
  dt-bindings: sound: Add Apple MCA I2S transceiver
  arm64: dts: apple: t8103: Add MCA and its support
  ASoC: apple: mca: Start new platform driver
  ASoC: apple: mca: Add locking

 .../devicetree/bindings/sound/apple,mca.yaml  |  131 ++
 MAINTAINERS                                   |    8 +
 arch/arm64/boot/dts/apple/t8103-jxxx.dtsi     |    4 +
 arch/arm64/boot/dts/apple/t8103.dtsi          |   73 ++
 sound/soc/Kconfig                             |    1 +
 sound/soc/Makefile                            |    1 +
 sound/soc/apple/Kconfig                       |    9 +
 sound/soc/apple/Makefile                      |    3 +
 sound/soc/apple/mca.c                         | 1167 +++++++++++++++++
 9 files changed, 1397 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/apple,mca.yaml
 create mode 100644 sound/soc/apple/Kconfig
 create mode 100644 sound/soc/apple/Makefile
 create mode 100644 sound/soc/apple/mca.c

Comments

Mark Brown Aug. 25, 2022, 3:28 p.m. UTC | #1
On Wed, 24 Aug 2022 18:07:11 +0200, Martin Povišer wrote:
> sending what should be the final touches on Apple MCA driver. It most
> likely goes without saying but please do not merge the DT additions
> into the ASoC tree.
> 
> Martin
> 
> Changes since v2:
>  - fix Mark's style nit
>  - order compatibles in schema
>  - redo the DT additions for t8103
>  - remove stray unlock in mca_be_prepare (and rename the locking patch)
> Link: https://lore.kernel.org/asahi/20220819125430.4920-1-povik+lin@cutebit.org/T/#t
> 
> [...]

Applied to

   broonie/sound.git for-next

Thanks!

[1/4] dt-bindings: sound: Add Apple MCA I2S transceiver
      commit: 6ed462d1c1167506479089e655355b3c123fee89
[3/4] ASoC: apple: mca: Start new platform driver
      commit: 3df5d0d972893d3c0df5aead8152fe1ad48ef45c
[4/4] ASoC: apple: mca: Add locking
      commit: 4065f0b25b7b30ba4dd4665deb5305ead1c0db25

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
Janne Grunau Sept. 5, 2022, 10:39 p.m. UTC | #2
On 2022-08-24 18:07:13 +0200, Martin Povišer wrote:
> Add the MCA I2S transceiver node and its supporting NCO, ADMAC nodes.
> 
> Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
> ---
>  arch/arm64/boot/dts/apple/t8103-jxxx.dtsi |  4 ++
>  arch/arm64/boot/dts/apple/t8103.dtsi      | 73 +++++++++++++++++++++++
>  2 files changed, 77 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
> index fe2ae40fa9dd..503a1b243efa 100644
> --- a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
> +++ b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
> @@ -76,3 +76,7 @@ wifi0: network@0,0 {
>  		local-mac-address = [00 00 00 00 00 00];
>  	};
>  };
> +
> +&nco_clkref {
> +	clock-frequency = <900000000>;
> +};
> diff --git a/arch/arm64/boot/dts/apple/t8103.dtsi b/arch/arm64/boot/dts/apple/t8103.dtsi
> index 51a63b29d404..5c01d5318386 100644
> --- a/arch/arm64/boot/dts/apple/t8103.dtsi
> +++ b/arch/arm64/boot/dts/apple/t8103.dtsi
> @@ -532,6 +532,79 @@ port02: pci@2,0 {
>  						<0 0 0 4 &port02 0 0 0 3>;
>  			};
>  		};
> +
> +		dart_sio: iommu@235004000 {

this and all other nodes are not sorted by address wrt to the existing 
nodes.

> +			compatible = "apple,t8103-dart", "apple,dart";

The generic compatible "apple,dart" is not part of the DART bindings

> +			reg = <0x2 0x35004000 0x0 0x4000>;
> +			interrupt-parent = <&aic>;
> +			interrupts = <AIC_IRQ 635 IRQ_TYPE_LEVEL_HIGH>;
> +			#iommu-cells = <1>;
> +			power-domains = <&ps_sio_cpu>;
> +		};
> +
> +		/*
> +		 * This is a fabulated representation of the input clock
> +		 * to NCO since we don't know the true clock tree.
> +		 */
> +		nco_clkref: clock-ref {

clocks are not valid inside "simple-bus", the node name "clock-ref" 
conflicts in "/", maybe use "clock-nco"?

> +			compatible = "fixed-clock";
> +			#clock-cells = <0>;
> +			clock-output-names = "nco_ref";
> +		};
> +
> +		nco: clock-controller@23b044000 {
> +			compatible = "apple,t8103-nco", "apple,nco";
> +			reg = <0x2 0x3b044000 0x0 0x14000>;
> +			clocks = <&nco_clkref>;
> +			#clock-cells = <1>;
> +		};
> +
> +		admac: dma-controller@238200000 {
> +			compatible = "apple,t8103-admac", "apple,admac";
> +			reg = <0x2 0x38200000 0x0 0x34000>;
> +			dma-channels = <24>;
> +			interrupts-extended = <0>,
> +					      <&aic AIC_IRQ 626 IRQ_TYPE_LEVEL_HIGH>,
> +					      <0>,
> +					      <0>;
> +			#dma-cells = <1>;
> +			iommus = <&dart_sio 2>;
> +			power-domains = <&ps_sio_adma>;

The admac bindinds don't have "iommus" or "power-domains". Fix in 
https://github.com/jannau/linux/commit/c9a0ff4581197064c560b05e2a6861d723a8909d 
as preparation for Apple t600x (M1 Pro/Max/Ultra) devicetree patches.

> +		};
> +
> +		mca: i2s@38400000 {

missing range offset in the node name

> +			compatible = "apple,t8103-mca", "apple,mca";
> +			reg = <0x2 0x38400000 0x0 0x18000>,
> +			      <0x2 0x38300000 0x0 0x30000>;
> +
> +			interrupt-parent = <&aic>;
> +			interrupts = <AIC_IRQ 619 IRQ_TYPE_LEVEL_HIGH>,
> +				     <AIC_IRQ 620 IRQ_TYPE_LEVEL_HIGH>,
> +				     <AIC_IRQ 621 IRQ_TYPE_LEVEL_HIGH>,
> +				     <AIC_IRQ 622 IRQ_TYPE_LEVEL_HIGH>,
> +				     <AIC_IRQ 623 IRQ_TYPE_LEVEL_HIGH>,
> +				     <AIC_IRQ 624 IRQ_TYPE_LEVEL_HIGH>;
> +
> +			resets = <&ps_audio_p>;
> +			clocks = <&nco 0>, <&nco 1>, <&nco 2>,
> +				 <&nco 3>, <&nco 4>, <&nco 4>;
> +			power-domains = <&ps_audio_p>, <&ps_mca0>, <&ps_mca1>,
> +					<&ps_mca2>, <&ps_mca3>, <&ps_mca4>, <&ps_mca5>;
> +			dmas = <&admac 0>, <&admac 1>, <&admac 2>, <&admac 3>,
> +			       <&admac 4>, <&admac 5>, <&admac 6>, <&admac 7>,
> +			       <&admac 8>, <&admac 9>, <&admac 10>, <&admac 11>,
> +			       <&admac 12>, <&admac 13>, <&admac 14>, <&admac 15>,
> +			       <&admac 16>, <&admac 17>, <&admac 18>, <&admac 19>,
> +			       <&admac 20>, <&admac 21>, <&admac 22>, <&admac 23>;
> +			dma-names = "tx0a", "rx0a", "tx0b", "rx0b",
> +				"tx1a", "rx1a", "tx1b", "rx1b",
> +				"tx2a", "rx2a", "tx2b", "rx2b",
> +				"tx3a", "rx3a", "tx3b", "rx3b",
> +				"tx4a", "rx4a", "tx4b", "rx4b",
> +				"tx5a", "rx5a", "tx5b", "rx5b";
> +
> +			#sound-dai-cells = <1>;
> +		};
>  	};
>  };

I've have a fixed version of this patch in 
https://github.com/jannau/linux/commit/6ff76db8221d0f71cbacd9f6add58354350fcf56

I was preparing the same change for t600x so it made sense to apply 
changes to this patch as well. Except for order and the wrong address 
all issue were discovered by `make dtbs_check`.

I plan to send 
https://github.com/jannau/linux/tree/apple-t600x-dts-for-v6.1 tomorrow.

ciao

Janne
Martin Povišer Sept. 5, 2022, 11:52 p.m. UTC | #3
Ciao Janne, thanks for the comments and fixes.

> On 6. 9. 2022, at 0:39, Janne Grunau <janne@jannau.net> wrote:
> 
> On 2022-08-24 18:07:13 +0200, Martin Povišer wrote:
>> Add the MCA I2S transceiver node and its supporting NCO, ADMAC nodes.
>> 
>> Signed-off-by: Martin Povišer <povik+lin@cutebit.org>
>> ---
>> arch/arm64/boot/dts/apple/t8103-jxxx.dtsi | 4 ++
>> arch/arm64/boot/dts/apple/t8103.dtsi | 73 +++++++++++++++++++++++
>> 2 files changed, 77 insertions(+)


>> +		/*
>> +		 * This is a fabulated representation of the input clock
>> +		 * to NCO since we don't know the true clock tree.
>> +		 */
>> +		nco_clkref: clock-ref {
> 
> clocks are not valid inside "simple-bus", the node name "clock-ref" 
> conflicts in "/", maybe use "clock-nco"?

I would smuggle ‘ref’ or something to that effect into the name,
otherwise sure, let’s do it.

Martin