2022-02-10 08:32:57

by Mohan Kumar

[permalink] [raw]
Subject: [PATCH v2 0/6] Add Tegra234 HDA support

This series add the support for TEGRA234 HDA driver support

Mohan Kumar (6):
ALSA: hda/tegra: Add Tegra234 hda driver support
ALSA: hda/tegra: Hardcode GCAP ISS value on T234
ALSA: hda/tegra: Update scratch reg. communication
dt-bindings: Add HDA support for Tegra234
dt-bindings: Document Tegra234 HDA support
arm64: tegra: Add hda dts node for Tegra234

.../bindings/sound/nvidia,tegra30-hda.yaml | 3 +
.../nvidia/tegra234-p3737-0000+p3701-0000.dts | 6 +
arch/arm64/boot/dts/nvidia/tegra234.dtsi | 18 +++
include/dt-bindings/clock/tegra234-clock.h | 4 +
include/dt-bindings/memory/tegra234-mc.h | 6 +
.../dt-bindings/power/tegra234-powergate.h | 9 ++
include/dt-bindings/reset/tegra234-reset.h | 2 +
sound/pci/hda/hda_tegra.c | 33 ++++-
sound/pci/hda/patch_hdmi.c | 118 ++++++++++++++----
9 files changed, 175 insertions(+), 24 deletions(-)
create mode 100644 include/dt-bindings/power/tegra234-powergate.h

--
2.17.1



2022-02-10 08:57:39

by Mohan Kumar

[permalink] [raw]
Subject: [PATCH v2 4/6] dt-bindings: Add HDA support for Tegra234

Add hda clocks, memory ,power and reset binding entries
for Tegra234.

Signed-off-by: Mohan Kumar <[email protected]>
---
include/dt-bindings/clock/tegra234-clock.h | 4 ++++
include/dt-bindings/memory/tegra234-mc.h | 6 ++++++
include/dt-bindings/power/tegra234-powergate.h | 9 +++++++++
include/dt-bindings/reset/tegra234-reset.h | 2 ++
4 files changed, 21 insertions(+)
create mode 100644 include/dt-bindings/power/tegra234-powergate.h

diff --git a/include/dt-bindings/clock/tegra234-clock.h b/include/dt-bindings/clock/tegra234-clock.h
index 8d7e66e1b6ef..c014269b7245 100644
--- a/include/dt-bindings/clock/tegra234-clock.h
+++ b/include/dt-bindings/clock/tegra234-clock.h
@@ -30,5 +30,9 @@
#define TEGRA234_CLK_PLLC4 237U
/** @brief 32K input clock provided by PMIC */
#define TEGRA234_CLK_CLK_32K 289U
+/** @brief CLK_RST_CONTROLLER_AZA2XBITCLK_OUT_SWITCH_DIVIDER switch divider output (aza_2xbitclk) */
+#define TEGRA234_CLK_AZA_2XBIT 457U
+/** @brief aza_2xbitclk / 2 (aza_bitclk) */
+#define TEGRA234_CLK_AZA_BIT 458U

#endif
diff --git a/include/dt-bindings/memory/tegra234-mc.h b/include/dt-bindings/memory/tegra234-mc.h
index 2662f70c15c6..f538fc442cee 100644
--- a/include/dt-bindings/memory/tegra234-mc.h
+++ b/include/dt-bindings/memory/tegra234-mc.h
@@ -7,6 +7,8 @@
#define TEGRA234_SID_INVALID 0x00
#define TEGRA234_SID_PASSTHROUGH 0x7f

+/* NISO0 SMMU STREAM IDs */
+#define TEGRA234_SID_NISO0_HDA 0x03

/* NISO1 stream IDs */
#define TEGRA234_SID_SDMMC4 0x02
@@ -16,6 +18,10 @@
* memory client IDs
*/

+/* High-definition audio (HDA) read clients */
+#define TEGRA234_MEMORY_CLIENT_HDAR 0x15
+/* High-definition audio (HDA) write clients */
+#define TEGRA234_MEMORY_CLIENT_HDAW 0x35
/* sdmmcd memory read client */
#define TEGRA234_MEMORY_CLIENT_SDMMCRAB 0x63
/* sdmmcd memory write client */
diff --git a/include/dt-bindings/power/tegra234-powergate.h b/include/dt-bindings/power/tegra234-powergate.h
new file mode 100644
index 000000000000..3c5575a51296
--- /dev/null
+++ b/include/dt-bindings/power/tegra234-powergate.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. */
+
+#ifndef __ABI_MACH_T234_POWERGATE_T234_H_
+#define __ABI_MACH_T234_POWERGATE_T234_H_
+
+#define TEGRA234_POWER_DOMAIN_DISP 3U
+
+#endif
diff --git a/include/dt-bindings/reset/tegra234-reset.h b/include/dt-bindings/reset/tegra234-reset.h
index 50e13bced642..2ab61c69a3d9 100644
--- a/include/dt-bindings/reset/tegra234-reset.h
+++ b/include/dt-bindings/reset/tegra234-reset.h
@@ -10,6 +10,8 @@
* @brief Identifiers for Resets controllable by firmware
* @{
*/
+#define TEGRA234_RESET_HDA 20U
+#define TEGRA234_RESET_HDACODEC 21U
#define TEGRA234_RESET_SDMMC4 85U
#define TEGRA234_RESET_UARTA 100U

--
2.17.1


2022-02-10 09:52:16

by Mohan Kumar

[permalink] [raw]
Subject: [PATCH v2 6/6] arm64: tegra: Add hda dts node for Tegra234

Add HDA dts node for Tegra234 chip and for AGX orin platform.

Signed-off-by: Mohan Kumar <[email protected]>
---
.../nvidia/tegra234-p3737-0000+p3701-0000.dts | 6 ++++++
arch/arm64/boot/dts/nvidia/tegra234.dtsi | 18 ++++++++++++++++++
2 files changed, 24 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts b/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
index efbbb878ba5a..792e4a8b272b 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
@@ -21,4 +21,10 @@
serial {
status = "okay";
};
+
+ bus@0 {
+ hda@3510000 {
+ nvidia,model = "NVIDIA Jetson AGX Orin HDA";
+ };
+ };
};
diff --git a/arch/arm64/boot/dts/nvidia/tegra234.dtsi b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
index 6b6f15804a1a..d39d41968ffb 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra234.dtsi
@@ -4,6 +4,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/mailbox/tegra186-hsp.h>
#include <dt-bindings/memory/tegra234-mc.h>
+#include <dt-bindings/power/tegra234-powergate.h>
#include <dt-bindings/reset/tegra234-reset.h>

/ {
@@ -261,6 +262,23 @@
#interrupt-cells = <3>;
interrupt-controller;
};
+
+ hda@3510000 {
+ compatible = "nvidia,tegra234-hda", "nvidia,tegra30-hda";
+ reg = <0x3510000 0x10000>;
+ interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&bpmp TEGRA234_CLK_AZA_BIT>,
+ <&bpmp TEGRA234_CLK_AZA_2XBIT>;
+ clock-names = "hda", "hda2codec_2x";
+ resets = <&bpmp TEGRA234_RESET_HDA>,
+ <&bpmp TEGRA234_RESET_HDACODEC>;
+ reset-names = "hda", "hda2codec_2x";
+ power-domains = <&bpmp TEGRA234_POWER_DOMAIN_DISP>;
+ interconnects = <&mc TEGRA234_MEMORY_CLIENT_HDAR &emc>,
+ <&mc TEGRA234_MEMORY_CLIENT_HDAW &emc>;
+ interconnect-names = "dma-mem", "write";
+ status = "disabled";
+ };
};

sram@40000000 {
--
2.17.1


2022-02-10 10:35:11

by Mohan Kumar

[permalink] [raw]
Subject: [PATCH v2 5/6] dt-bindings: Document Tegra234 HDA support

Update binding document for HDA support on Tegra234 chip.

Tegra234 has max of 2 clocks and 2 resets which requires to add
minItems and maxItems for clocks and resets as Tegra chips can
now have minimum of 2 and maximum of 3 clocks and reset support.

Signed-off-by: Mohan Kumar <[email protected]>
---
.../devicetree/bindings/sound/nvidia,tegra30-hda.yaml | 3 +++
1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.yaml b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.yaml
index 2c913aa44fee..12c31b4b99e1 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.yaml
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra30-hda.yaml
@@ -23,6 +23,7 @@ properties:
- const: nvidia,tegra30-hda
- items:
- enum:
+ - nvidia,tegra234-hda
- nvidia,tegra194-hda
- nvidia,tegra186-hda
- nvidia,tegra210-hda
@@ -41,9 +42,11 @@ properties:
maxItems: 1

clocks:
+ minItems: 2
maxItems: 3

clock-names:
+ minItems: 2
items:
- const: hda
- const: hda2hdmi
--
2.17.1


2022-02-15 14:49:01

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] Add Tegra234 HDA support

On Thu, 10 Feb 2022 07:50:51 +0100,
Mohan Kumar wrote:
>
> This series add the support for TEGRA234 HDA driver support
>
> Mohan Kumar (6):
> ALSA: hda/tegra: Add Tegra234 hda driver support
> ALSA: hda/tegra: Hardcode GCAP ISS value on T234
> ALSA: hda/tegra: Update scratch reg. communication
> dt-bindings: Add HDA support for Tegra234
> dt-bindings: Document Tegra234 HDA support
> arm64: tegra: Add hda dts node for Tegra234

Applied all six patches to for-next branch now.


thanks,

Takashi

2022-02-16 06:30:21

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] Add Tegra234 HDA support

On Tue, 15 Feb 2022 14:29:54 +0100,
Takashi Iwai wrote:
>
> On Thu, 10 Feb 2022 07:50:51 +0100,
> Mohan Kumar wrote:
> >
> > This series add the support for TEGRA234 HDA driver support
> >
> > Mohan Kumar (6):
> > ALSA: hda/tegra: Add Tegra234 hda driver support
> > ALSA: hda/tegra: Hardcode GCAP ISS value on T234
> > ALSA: hda/tegra: Update scratch reg. communication
> > dt-bindings: Add HDA support for Tegra234
> > dt-bindings: Document Tegra234 HDA support
> > arm64: tegra: Add hda dts node for Tegra234
>
> Applied all six patches to for-next branch now.

... and now I realized that it's conflicting with the latest Tegra234
reset stuff on linux-next.

Maybe better to split the patches to be merged through several trees?


Takashi

2022-02-16 07:59:27

by Mohan Kumar

[permalink] [raw]
Subject: RE: [PATCH v2 0/6] Add Tegra234 HDA support

Ok, Let me resync linux-next to clear the conflict and will resend patches with v3.

-----Original Message-----
From: Takashi Iwai <[email protected]>
Sent: Tuesday, February 15, 2022 7:04 PM
To: Mohan Kumar D <[email protected]>
Cc: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; Jonathan Hunter <[email protected]>; Sameer Pujar <[email protected]>; [email protected]; [email protected]; [email protected]; [email protected]
Subject: Re: [PATCH v2 0/6] Add Tegra234 HDA support

External email: Use caution opening links or attachments


On Tue, 15 Feb 2022 14:29:54 +0100,
Takashi Iwai wrote:
>
> On Thu, 10 Feb 2022 07:50:51 +0100,
> Mohan Kumar wrote:
> >
> > This series add the support for TEGRA234 HDA driver support
> >
> > Mohan Kumar (6):
> > ALSA: hda/tegra: Add Tegra234 hda driver support
> > ALSA: hda/tegra: Hardcode GCAP ISS value on T234
> > ALSA: hda/tegra: Update scratch reg. communication
> > dt-bindings: Add HDA support for Tegra234
> > dt-bindings: Document Tegra234 HDA support
> > arm64: tegra: Add hda dts node for Tegra234
>
> Applied all six patches to for-next branch now.

... and now I realized that it's conflicting with the latest Tegra234 reset stuff on linux-next.

Maybe better to split the patches to be merged through several trees?


Takashi

2022-02-16 08:40:02

by Mikko Perttunen

[permalink] [raw]
Subject: Re: [PATCH v2 4/6] dt-bindings: Add HDA support for Tegra234

On 2/10/22 08:50, Mohan Kumar wrote:
> Add hda clocks, memory ,power and reset binding entries
> for Tegra234.
>
> Signed-off-by: Mohan Kumar <[email protected]>
> ---
> include/dt-bindings/clock/tegra234-clock.h | 4 ++++
> include/dt-bindings/memory/tegra234-mc.h | 6 ++++++
> include/dt-bindings/power/tegra234-powergate.h | 9 +++++++++
> include/dt-bindings/reset/tegra234-reset.h | 2 ++
> 4 files changed, 21 insertions(+)
> create mode 100644 include/dt-bindings/power/tegra234-powergate.h
>
> diff --git a/include/dt-bindings/clock/tegra234-clock.h b/include/dt-bindings/clock/tegra234-clock.h
> index 8d7e66e1b6ef..c014269b7245 100644
> --- a/include/dt-bindings/clock/tegra234-clock.h
> +++ b/include/dt-bindings/clock/tegra234-clock.h
> @@ -30,5 +30,9 @@
> #define TEGRA234_CLK_PLLC4 237U
> /** @brief 32K input clock provided by PMIC */
> #define TEGRA234_CLK_CLK_32K 289U
> +/** @brief CLK_RST_CONTROLLER_AZA2XBITCLK_OUT_SWITCH_DIVIDER switch divider output (aza_2xbitclk) */
> +#define TEGRA234_CLK_AZA_2XBIT 457U
> +/** @brief aza_2xbitclk / 2 (aza_bitclk) */
> +#define TEGRA234_CLK_AZA_BIT 458U
>
> #endif
> diff --git a/include/dt-bindings/memory/tegra234-mc.h b/include/dt-bindings/memory/tegra234-mc.h
> index 2662f70c15c6..f538fc442cee 100644
> --- a/include/dt-bindings/memory/tegra234-mc.h
> +++ b/include/dt-bindings/memory/tegra234-mc.h
> @@ -7,6 +7,8 @@
> #define TEGRA234_SID_INVALID 0x00
> #define TEGRA234_SID_PASSTHROUGH 0x7f
>
> +/* NISO0 SMMU STREAM IDs */
> +#define TEGRA234_SID_NISO0_HDA 0x03

Please follow the existing convention in this file.

/* NISO0 stream IDs */
#define TEGRA234_SID_HDA 0x03

>
> /* NISO1 stream IDs */
> #define TEGRA234_SID_SDMMC4 0x02
> @@ -16,6 +18,10 @@
> * memory client IDs
> */
>
> +/* High-definition audio (HDA) read clients */
> +#define TEGRA234_MEMORY_CLIENT_HDAR 0x15
> +/* High-definition audio (HDA) write clients */
> +#define TEGRA234_MEMORY_CLIENT_HDAW 0x35
> /* sdmmcd memory read client */
> #define TEGRA234_MEMORY_CLIENT_SDMMCRAB 0x63
> /* sdmmcd memory write client */
> diff --git a/include/dt-bindings/power/tegra234-powergate.h b/include/dt-bindings/power/tegra234-powergate.h
> new file mode 100644
> index 000000000000..3c5575a51296
> --- /dev/null
> +++ b/include/dt-bindings/power/tegra234-powergate.h
> @@ -0,0 +1,9 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/* Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. */
> +
> +#ifndef __ABI_MACH_T234_POWERGATE_T234_H_
> +#define __ABI_MACH_T234_POWERGATE_T234_H_
> +
> +#define TEGRA234_POWER_DOMAIN_DISP 3U
> +
> +#endif
> diff --git a/include/dt-bindings/reset/tegra234-reset.h b/include/dt-bindings/reset/tegra234-reset.h
> index 50e13bced642..2ab61c69a3d9 100644
> --- a/include/dt-bindings/reset/tegra234-reset.h
> +++ b/include/dt-bindings/reset/tegra234-reset.h
> @@ -10,6 +10,8 @@
> * @brief Identifiers for Resets controllable by firmware
> * @{
> */
> +#define TEGRA234_RESET_HDA 20U
> +#define TEGRA234_RESET_HDACODEC 21U
> #define TEGRA234_RESET_SDMMC4 85U
> #define TEGRA234_RESET_UARTA 100U
>

2022-02-16 15:29:42

by Thierry Reding

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] Add Tegra234 HDA support

On Tue, Feb 15, 2022 at 02:34:01PM +0100, Takashi Iwai wrote:
> On Tue, 15 Feb 2022 14:29:54 +0100,
> Takashi Iwai wrote:
> >
> > On Thu, 10 Feb 2022 07:50:51 +0100,
> > Mohan Kumar wrote:
> > >
> > > This series add the support for TEGRA234 HDA driver support
> > >
> > > Mohan Kumar (6):
> > > ALSA: hda/tegra: Add Tegra234 hda driver support
> > > ALSA: hda/tegra: Hardcode GCAP ISS value on T234
> > > ALSA: hda/tegra: Update scratch reg. communication
> > > dt-bindings: Add HDA support for Tegra234
> > > dt-bindings: Document Tegra234 HDA support
> > > arm64: tegra: Add hda dts node for Tegra234
> >
> > Applied all six patches to for-next branch now.
>
> ... and now I realized that it's conflicting with the latest Tegra234
> reset stuff on linux-next.
>
> Maybe better to split the patches to be merged through several trees?

It's usually best for me to pick up at least the DT changes (patch 6)
into the Tegra tree, that way I can easily resolve conflicts there when
they arise.

The device tree bindings (patches 3 & 4) traditionally go along with
the driver changes, though.

If you prefer the patch series to be split, that's fine. For other
subsystems we usually deal with this by having one series and then the
subsystem maintainer picking up all the non-DT changes and I take the
rest.

Thierry


Attachments:
(No filename) (1.34 kB)
signature.asc (849.00 B)
Download all attachments

2022-02-16 15:31:26

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH v2 0/6] Add Tegra234 HDA support

On Wed, 16 Feb 2022 15:23:27 +0100,
Thierry Reding wrote:
>
> On Tue, Feb 15, 2022 at 02:34:01PM +0100, Takashi Iwai wrote:
> > On Tue, 15 Feb 2022 14:29:54 +0100,
> > Takashi Iwai wrote:
> > >
> > > On Thu, 10 Feb 2022 07:50:51 +0100,
> > > Mohan Kumar wrote:
> > > >
> > > > This series add the support for TEGRA234 HDA driver support
> > > >
> > > > Mohan Kumar (6):
> > > > ALSA: hda/tegra: Add Tegra234 hda driver support
> > > > ALSA: hda/tegra: Hardcode GCAP ISS value on T234
> > > > ALSA: hda/tegra: Update scratch reg. communication
> > > > dt-bindings: Add HDA support for Tegra234
> > > > dt-bindings: Document Tegra234 HDA support
> > > > arm64: tegra: Add hda dts node for Tegra234
> > >
> > > Applied all six patches to for-next branch now.
> >
> > ... and now I realized that it's conflicting with the latest Tegra234
> > reset stuff on linux-next.
> >
> > Maybe better to split the patches to be merged through several trees?
>
> It's usually best for me to pick up at least the DT changes (patch 6)
> into the Tegra tree, that way I can easily resolve conflicts there when
> they arise.
>
> The device tree bindings (patches 3 & 4) traditionally go along with
> the driver changes, though.
>
> If you prefer the patch series to be split, that's fine. For other
> subsystems we usually deal with this by having one series and then the
> subsystem maintainer picking up all the non-DT changes and I take the
> rest.

OK, that's fine for me.
Let's revisit the latest patchset.


thanks,

Takashi