Devicetree
 help / color / mirror / Atom feed
* [PATCH v3] ASoC: dt-bindings: sound: atmel_ac97c: Convert to DT schema
@ 2026-05-30  5:28 Manish Baing
  2026-05-30  5:37 ` sashiko-bot
  2026-05-30  9:20 ` Krzysztof Kozlowski
  0 siblings, 2 replies; 4+ messages in thread
From: Manish Baing @ 2026-05-30  5:28 UTC (permalink / raw)
  To: claudiu.beznea, lgirdwood, broonie, robh, krzk+dt, conor+dt,
	nicolas.ferre, alexandre.belloni
  Cc: linux-sound, devicetree, linux-arm-kernel, linux-kernel,
	manishbaing2789

Convert the Atmel AC97 controller binding from text
format to YAML schema.

The binding constraints were updated during conversion to align with
actual driver behavior:
- Added previously undocumented 'clocks' and 'clock-names' properties.
  These are made required, as the driver unconditionally requests them.
- Removed 'ac97-gpios' from the required list, as the driver
  treats the reset pin as optional, and requiring it breaks existing
  .dtsi validation.
- Fixed the ac97-gpios array in the example to use standard
  comma-separated formatting.

Signed-off-by: Manish Baing <manishbaing2789@gmail.com>
---
Changes in v3:
- Updated the commit message to include the reasoning behind the property changes, 
  addressing Sashiko bot feedback.
Changes in v2:
- Added undocumented 'clocks' and 'clock-names' properties which are
  unconditionally required by the driver.
- Removed 'ac97-gpios' from the required list, as the driver treats
  it as optional, fixing validation for existing dtsi files.

 .../sound/atmel,at91sam9263-ac97c.yaml        | 70 +++++++++++++++++++
 .../devicetree/bindings/sound/atmel_ac97c.txt | 20 ------
 2 files changed, 70 insertions(+), 20 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/atmel,at91sam9263-ac97c.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/atmel_ac97c.txt

diff --git a/Documentation/devicetree/bindings/sound/atmel,at91sam9263-ac97c.yaml b/Documentation/devicetree/bindings/sound/atmel,at91sam9263-ac97c.yaml
new file mode 100644
index 000000000000..5f4ebe81bf90
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/atmel,at91sam9263-ac97c.yaml
@@ -0,0 +1,70 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/atmel,at91sam9263-ac97c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel AC97 Controller
+
+maintainers:
+  - Nicolas Ferre <nicolas.ferre@microchip.com>
+  - Alexandre Belloni <alexandre.belloni@bootlin.com>
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    const: atmel,at91sam9263-ac97c
+
+  reg:
+    maxItems: 1
+    description: Address and length of the register set for the device.
+
+  interrupts:
+    maxItems: 1
+    description: Should contain the AC97 interrupt.
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: ac97_clk
+
+  ac97-gpios:
+    minItems: 3
+    maxItems: 4
+    description: |
+      AC97 link GPIOs- sync, sdata_out, reset, and optional sdata_in.
+      The driver primarily uses the reset pin.
+
+  pinctrl-0: true
+
+  pinctrl-names:
+    const: default
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/clock/at91.h>
+
+    sound@fffa0000 {
+        compatible = "atmel,at91sam9263-ac97c";
+        reg = <0xfffa0000 0x4000>;
+        interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>;
+        clocks = <&pmc PMC_TYPE_PERIPHERAL 2>;
+        clock-names = "ac97_clk";
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_ac97>;
+        ac97-gpios = <&pioB 0 0>, <&pioB 2 0>, <&pioC 29 GPIO_ACTIVE_LOW>;
+    };
diff --git a/Documentation/devicetree/bindings/sound/atmel_ac97c.txt b/Documentation/devicetree/bindings/sound/atmel_ac97c.txt
deleted file mode 100644
index b151bd902ce3..000000000000
--- a/Documentation/devicetree/bindings/sound/atmel_ac97c.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-* Atmel AC97 controller
-
-Required properties:
-  - compatible: "atmel,at91sam9263-ac97c"
-  - reg: Address and length of the register set for the device
-  - interrupts: Should contain AC97 interrupt
-  - ac97-gpios: Please refer to soc-ac97link.txt, only ac97-reset is used
-Optional properties:
-  - pinctrl-names, pinctrl-0: Please refer to pinctrl-bindings.txt
-
-Example:
-sound@fffa0000 {
-       compatible = "atmel,at91sam9263-ac97c";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_ac97>;
-       reg = <0xfffa0000 0x4000>;
-       interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>;
-
-       ac97-gpios = <&pioB 0 0 &pioB 2 0 &pioC 29 GPIO_ACTIVE_LOW>;
-};
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] ASoC: dt-bindings: sound: atmel_ac97c: Convert to DT schema
  2026-05-30  5:28 [PATCH v3] ASoC: dt-bindings: sound: atmel_ac97c: Convert to DT schema Manish Baing
@ 2026-05-30  5:37 ` sashiko-bot
  2026-05-30  9:20 ` Krzysztof Kozlowski
  1 sibling, 0 replies; 4+ messages in thread
From: sashiko-bot @ 2026-05-30  5:37 UTC (permalink / raw)
  To: Manish Baing; +Cc: conor+dt, devicetree, robh

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:

Pre-existing issues:
- [High] The driver fails to properly handle -EPROBE_DEFER when requesting the reset GPIO, incorrectly bypassing hardware reset and permanently falling back to software reset.
- [High] Incorrect initialization and teardown ordering of hardware resources (IRQs, memory maps, clocks) leading to potential kernel panics due to NULL pointer dereferences or unmapped memory access.
--

commit dce8eddfc311c261daebe971da37753c69680689
Author: Manish Baing <manishbaing2789@gmail.com>

ASoC: dt-bindings: sound: atmel_ac97c: Convert to DT schema
    
Convert the Atmel AC97 controller binding from text format to YAML schema.
The binding constraints were updated during conversion to align with actual
driver behavior.

>     - Added previously undocumented 'clocks' and 'clock-names' properties.
>       These are made required, as the driver unconditionally requests them.

[Severity: High]
This isn't a bug introduced by this patch, but since we are aligning with driver
behavior regarding clocks, is the initialization and teardown ordering in
sound/atmel/ac97c.c safe?

In atmel_ac97c_probe(), request_irq() is called before ioremap():

	retval = request_irq(irq, atmel_ac97c_interrupt, 0, "AC97C", chip);
	...
	chip->regs = ioremap(regs->start, resource_size(regs));

If an interrupt fires immediately, will the handler atmel_ac97c_interrupt()
dereference chip->regs via ac97c_readl() while it is still NULL?

Additionally, in the probe error path and atmel_ac97c_remove(), iounmap() and
clk_disable_unprepare() are called before free_irq():

	clk_disable_unprepare(chip->pclk);
	clk_put(chip->pclk);
	iounmap(chip->regs);
	free_irq(chip->irq, chip);

	snd_card_free(card);

Could an interrupt occurring in this window cause the handler to attempt access
to unmapped I/O memory or registers with a disabled clock?

>     - Removed 'ac97-gpios' from the required list, as the driver
>       treats the reset pin as optional, and requiring it breaks existing
>       .dtsi validation.

[Severity: High]
This is a pre-existing issue, but does the driver properly handle probe
deferral when treating the reset pin as optional?

In sound/atmel/ac97c.c:atmel_ac97c_probe(), when requesting the GPIO:

	chip->reset_pin = devm_gpiod_get_index(dev, "ac97", 2, GPIOD_OUT_HIGH);
	if (IS_ERR(chip->reset_pin))
		dev_dbg(dev, "reset pin not available\n");

	atmel_ac97c_reset(chip);

If devm_gpiod_get_index() returns -EPROBE_DEFER, does this check swallow the
deferral request and permanently fall back to a software register reset in
atmel_ac97c_reset() instead of waiting for the hardware reset pin?

	} else {
		ac97c_writel(chip, MR, AC97C_MR_WRST | AC97C_MR_ENA);
		udelay(2);
		ac97c_writel(chip, MR, AC97C_MR_ENA);
	}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260530052812.115994-1-manishbaing2789@gmail.com?part=1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] ASoC: dt-bindings: sound: atmel_ac97c: Convert to DT schema
  2026-05-30  5:28 [PATCH v3] ASoC: dt-bindings: sound: atmel_ac97c: Convert to DT schema Manish Baing
  2026-05-30  5:37 ` sashiko-bot
@ 2026-05-30  9:20 ` Krzysztof Kozlowski
  2026-05-30  9:47   ` Manish Baing
  1 sibling, 1 reply; 4+ messages in thread
From: Krzysztof Kozlowski @ 2026-05-30  9:20 UTC (permalink / raw)
  To: Manish Baing, claudiu.beznea, lgirdwood, broonie, robh, krzk+dt,
	conor+dt, nicolas.ferre, alexandre.belloni
  Cc: linux-sound, devicetree, linux-arm-kernel, linux-kernel

On 30/05/2026 07:28, Manish Baing wrote:
> Convert the Atmel AC97 controller binding from text
> format to YAML schema.
> 
> The binding constraints were updated during conversion to align with
> actual driver behavior:
> - Added previously undocumented 'clocks' and 'clock-names' properties.
>   These are made required, as the driver unconditionally requests them.
> - Removed 'ac97-gpios' from the required list, as the driver
>   treats the reset pin as optional, and requiring it breaks existing
>   .dtsi validation.
> - Fixed the ac97-gpios array in the example to use standard
>   comma-separated formatting.
> 
> Signed-off-by: Manish Baing <manishbaing2789@gmail.com>
> ---
> Changes in v3:
> - Updated the commit message to include the reasoning behind the property changes, 
>   addressing Sashiko bot feedback.
> Changes in v2:
> - Added undocumented 'clocks' and 'clock-names' properties which are
>   unconditionally required by the driver.
> - Removed 'ac97-gpios' from the required list, as the driver treats


Srsly, stop. I don't even know where to reply...

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] ASoC: dt-bindings: sound: atmel_ac97c: Convert to DT schema
  2026-05-30  9:20 ` Krzysztof Kozlowski
@ 2026-05-30  9:47   ` Manish Baing
  0 siblings, 0 replies; 4+ messages in thread
From: Manish Baing @ 2026-05-30  9:47 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: claudiu.beznea, lgirdwood, broonie, robh, krzk+dt, conor+dt,
	nicolas.ferre, alexandre.belloni, linux-sound, devicetree,
	linux-arm-kernel, linux-kernel

Hi Krzysztof,

I sincerely apologize for the massive amount of noise I have created
on the mailing lists today.
I am new to the kernel patch submission process and made several major
workflow mistakes in rapid succession.
I am stopping all patch submissions immediately.
I will hold off on further submissions until I have properly verified
all in-tree users. I will then send a single, consolidated patch
series with corrected terminology and constraints.

Thank you for your patience and for taking the time to correct my
workflow. I will do better.

On Sat, May 30, 2026 at 2:50 PM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On 30/05/2026 07:28, Manish Baing wrote:
> > Convert the Atmel AC97 controller binding from text
> > format to YAML schema.
> >
> > The binding constraints were updated during conversion to align with
> > actual driver behavior:
> > - Added previously undocumented 'clocks' and 'clock-names' properties.
> >   These are made required, as the driver unconditionally requests them.
> > - Removed 'ac97-gpios' from the required list, as the driver
> >   treats the reset pin as optional, and requiring it breaks existing
> >   .dtsi validation.
> > - Fixed the ac97-gpios array in the example to use standard
> >   comma-separated formatting.
> >
> > Signed-off-by: Manish Baing <manishbaing2789@gmail.com>
> > ---
> > Changes in v3:
> > - Updated the commit message to include the reasoning behind the property changes,
> >   addressing Sashiko bot feedback.
> > Changes in v2:
> > - Added undocumented 'clocks' and 'clock-names' properties which are
> >   unconditionally required by the driver.
> > - Removed 'ac97-gpios' from the required list, as the driver treats
>
>
> Srsly, stop. I don't even know where to reply...
>
> Best regards,
> Krzysztof

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-05-30  9:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-30  5:28 [PATCH v3] ASoC: dt-bindings: sound: atmel_ac97c: Convert to DT schema Manish Baing
2026-05-30  5:37 ` sashiko-bot
2026-05-30  9:20 ` Krzysztof Kozlowski
2026-05-30  9:47   ` Manish Baing

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox