Convert the existing text-based DT bindings for Marvell 8897/8997
(sd8897/sd8997) bluetooth devices controller to a YAML schema.
While here, bindings for "usb1286,204e" (USB interface) are dropped from
the YAML definition as these are currently documented in file:
- Documentation/devicetree/bindings/net/btusb.txt
Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
---
.../bindings/net/marvell,sd8897-bt.yaml | 91 +++++++++++++++++++
.../bindings/net/marvell-bt-8xxx.txt | 83 -----------------
2 files changed, 91 insertions(+), 83 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
delete mode 100644 Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
diff --git a/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml b/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
new file mode 100644
index 0000000000000..6539868c08b8a
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
@@ -0,0 +1,91 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/marvell,sd8897-bt.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell 8897/8997 (sd8897/sd8997) bluetooth devices (SDIO)
+
+maintainers:
+ - Ariel D'Alessandro <ariel.dalessandro@collabora.com>
+
+properties:
+ compatible:
+ enum:
+ - marvell,sd8897-bt
+ - marvell,sd8997-bt
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ marvell,cal-data:
+ $ref: /schemas/types.yaml#/definitions/uint8-array
+ description:
+ Calibration data downloaded to the device during initialization.
+ minItems: 28
+
+ marvell,wakeup-pin:
+ $ref: /schemas/types.yaml#/definitions/uint16
+ description:
+ Wakeup pin number of the bluetooth chip. Used by firmware to wakeup host
+ system.
+
+ marvell,wakeup-gap-ms:
+ description:
+ Wakeup latency of the host platform. Required by the chip sleep feature.
+
+required:
+ - compatible
+ - reg
+ - interrupts
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/pinctrl/rockchip.h>
+
+ sdio0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ btmrvl: btmrvl@2 {
+ compatible = "marvell,sd8897-bt";
+ reg = <2>;
+ interrupt-parent = <&gpio4>;
+ interrupts = <RK_PD7 IRQ_TYPE_LEVEL_LOW>;
+ marvell,wakeup-pin = /bits/ 16 <13>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&bt_host_wake_l>;
+ };
+ };
+
+ mmc3 {
+ vmmc-supply = <&wlan_en_reg>;
+ bus-width = <4>;
+ cap-power-off-card;
+ keep-power-in-suspend;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ bluetooth: bluetooth@2 {
+ compatible = "marvell,sd8897-bt";
+ reg = <2>;
+ interrupt-parent = <&pio>;
+ interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
+
+ marvell,cal-data = /bits/ 8 <
+ 0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
+ 0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
+ 0x00 0x00 0xf0 0x00>;
+ marvell,wakeup-pin = /bits/ 16 <0x0d>;
+ marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
+ };
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt b/Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
deleted file mode 100644
index 957e5e5c2927c..0000000000000
--- a/Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
+++ /dev/null
@@ -1,83 +0,0 @@
-Marvell 8897/8997 (sd8897/sd8997) bluetooth devices (SDIO or USB based)
-------
-The 8997 devices supports multiple interfaces. When used on SDIO interfaces,
-the btmrvl driver is used and when used on USB interface, the btusb driver is
-used.
-
-Required properties:
-
- - compatible : should be one of the following:
- * "marvell,sd8897-bt" (for SDIO)
- * "marvell,sd8997-bt" (for SDIO)
- * "usb1286,204e" (for USB)
-
-Optional properties:
-
- - marvell,cal-data: Calibration data downloaded to the device during
- initialization. This is an array of 28 values(u8).
- This is only applicable to SDIO devices.
-
- - marvell,wakeup-pin: It represents wakeup pin number of the bluetooth chip.
- firmware will use the pin to wakeup host system (u16).
- - marvell,wakeup-gap-ms: wakeup gap represents wakeup latency of the host
- platform. The value will be configured to firmware. This
- is needed to work chip's sleep feature as expected (u16).
- - interrupt-names: Used only for USB based devices (See below)
- - interrupts : specifies the interrupt pin number to the cpu. For SDIO, the
- driver will use the first interrupt specified in the interrupt
- array. For USB based devices, the driver will use the interrupt
- named "wakeup" from the interrupt-names and interrupt arrays.
- The driver will request an irq based on this interrupt number.
- During system suspend, the irq will be enabled so that the
- bluetooth chip can wakeup host platform under certain
- conditions. During system resume, the irq will be disabled
- to make sure unnecessary interrupt is not received.
-
-Example:
-
-IRQ pin 119 is used as system wakeup source interrupt.
-wakeup pin 13 and gap 100ms are configured so that firmware can wakeup host
-using this device side pin and wakeup latency.
-
-Example for SDIO device follows (calibration data is also available in
-below example).
-
-&mmc3 {
- vmmc-supply = <&wlan_en_reg>;
- bus-width = <4>;
- cap-power-off-card;
- keep-power-in-suspend;
-
- #address-cells = <1>;
- #size-cells = <0>;
- btmrvl: bluetooth@2 {
- compatible = "marvell,sd8897-bt";
- reg = <2>;
- interrupt-parent = <&pio>;
- interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
-
- marvell,cal-data = /bits/ 8 <
- 0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
- 0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
- 0x00 0x00 0xf0 0x00>;
- marvell,wakeup-pin = /bits/ 16 <0x0d>;
- marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
- };
-};
-
-Example for USB device:
-
-&usb_host1_ohci {
- #address-cells = <1>;
- #size-cells = <0>;
-
- mvl_bt1: bt@1 {
- compatible = "usb1286,204e";
- reg = <1>;
- interrupt-parent = <&gpio0>;
- interrupt-names = "wakeup";
- interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
- marvell,wakeup-pin = /bits/ 16 <0x0d>;
- marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
- };
-};
--
2.50.1
On Wed, Aug 20, 2025 at 12:15 PM Ariel D'Alessandro
<ariel.dalessandro@collabora.com> wrote:
>
> Convert the existing text-based DT bindings for Marvell 8897/8997
> (sd8897/sd8997) bluetooth devices controller to a YAML schema.
>
> While here, bindings for "usb1286,204e" (USB interface) are dropped from
> the YAML definition as these are currently documented in file:
>
> - Documentation/devicetree/bindings/net/btusb.txt
>
> Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
> ---
> .../bindings/net/marvell,sd8897-bt.yaml | 91 +++++++++++++++++++
This needs to move to net/bluetooth/
> .../bindings/net/marvell-bt-8xxx.txt | 83 -----------------
> 2 files changed, 91 insertions(+), 83 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
> delete mode 100644 Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
>
> diff --git a/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml b/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
> new file mode 100644
> index 0000000000000..6539868c08b8a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
> @@ -0,0 +1,91 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/net/marvell,sd8897-bt.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Marvell 8897/8997 (sd8897/sd8997) bluetooth devices (SDIO)
> +
> +maintainers:
> + - Ariel D'Alessandro <ariel.dalessandro@collabora.com>
> +
Needs a $ref to bluetooth-controller.yaml
> +properties:
> + compatible:
> + enum:
> + - marvell,sd8897-bt
> + - marvell,sd8997-bt
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + marvell,cal-data:
> + $ref: /schemas/types.yaml#/definitions/uint8-array
> + description:
> + Calibration data downloaded to the device during initialization.
> + minItems: 28
Just: maxItems: 28
> +
> + marvell,wakeup-pin:
> + $ref: /schemas/types.yaml#/definitions/uint16
> + description:
> + Wakeup pin number of the bluetooth chip. Used by firmware to wakeup host
> + system.
> +
> + marvell,wakeup-gap-ms:
This unfortunately needs a uint16 type. That will cause a warning
which has to be fixed on the dtschema side.
> + description:
> + Wakeup latency of the host platform. Required by the chip sleep feature.
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/interrupt-controller/irq.h>
> + #include <dt-bindings/pinctrl/rockchip.h>
Please drop this and just use a number below.
> +
> + sdio0 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + btmrvl: btmrvl@2 {
> + compatible = "marvell,sd8897-bt";
> + reg = <2>;
> + interrupt-parent = <&gpio4>;
> + interrupts = <RK_PD7 IRQ_TYPE_LEVEL_LOW>;
> + marvell,wakeup-pin = /bits/ 16 <13>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&bt_host_wake_l>;
> + };
> + };
I would drop this example.
> +
> + mmc3 {
mmc {
> + vmmc-supply = <&wlan_en_reg>;
> + bus-width = <4>;
> + cap-power-off-card;
> + keep-power-in-suspend;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + bluetooth: bluetooth@2 {
Drop the label.
> + compatible = "marvell,sd8897-bt";
> + reg = <2>;
> + interrupt-parent = <&pio>;
> + interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
> +
> + marvell,cal-data = /bits/ 8 <
> + 0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
> + 0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
> + 0x00 0x00 0xf0 0x00>;
> + marvell,wakeup-pin = /bits/ 16 <0x0d>;
> + marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
> + };
> + };
> +
> +...
> diff --git a/Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt b/Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
> deleted file mode 100644
> index 957e5e5c2927c..0000000000000
> --- a/Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
> +++ /dev/null
> @@ -1,83 +0,0 @@
> -Marvell 8897/8997 (sd8897/sd8997) bluetooth devices (SDIO or USB based)
> -------
> -The 8997 devices supports multiple interfaces. When used on SDIO interfaces,
> -the btmrvl driver is used and when used on USB interface, the btusb driver is
> -used.
> -
> -Required properties:
> -
> - - compatible : should be one of the following:
> - * "marvell,sd8897-bt" (for SDIO)
> - * "marvell,sd8997-bt" (for SDIO)
> - * "usb1286,204e" (for USB)
> -
> -Optional properties:
> -
> - - marvell,cal-data: Calibration data downloaded to the device during
> - initialization. This is an array of 28 values(u8).
> - This is only applicable to SDIO devices.
> -
> - - marvell,wakeup-pin: It represents wakeup pin number of the bluetooth chip.
> - firmware will use the pin to wakeup host system (u16).
> - - marvell,wakeup-gap-ms: wakeup gap represents wakeup latency of the host
> - platform. The value will be configured to firmware. This
> - is needed to work chip's sleep feature as expected (u16).
> - - interrupt-names: Used only for USB based devices (See below)
> - - interrupts : specifies the interrupt pin number to the cpu. For SDIO, the
> - driver will use the first interrupt specified in the interrupt
> - array. For USB based devices, the driver will use the interrupt
> - named "wakeup" from the interrupt-names and interrupt arrays.
> - The driver will request an irq based on this interrupt number.
> - During system suspend, the irq will be enabled so that the
> - bluetooth chip can wakeup host platform under certain
> - conditions. During system resume, the irq will be disabled
> - to make sure unnecessary interrupt is not received.
> -
> -Example:
> -
> -IRQ pin 119 is used as system wakeup source interrupt.
> -wakeup pin 13 and gap 100ms are configured so that firmware can wakeup host
> -using this device side pin and wakeup latency.
> -
> -Example for SDIO device follows (calibration data is also available in
> -below example).
> -
> -&mmc3 {
> - vmmc-supply = <&wlan_en_reg>;
> - bus-width = <4>;
> - cap-power-off-card;
> - keep-power-in-suspend;
> -
> - #address-cells = <1>;
> - #size-cells = <0>;
> - btmrvl: bluetooth@2 {
> - compatible = "marvell,sd8897-bt";
> - reg = <2>;
> - interrupt-parent = <&pio>;
> - interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
> -
> - marvell,cal-data = /bits/ 8 <
> - 0x37 0x01 0x1c 0x00 0xff 0xff 0xff 0xff 0x01 0x7f 0x04 0x02
> - 0x00 0x00 0xba 0xce 0xc0 0xc6 0x2d 0x00 0x00 0x00 0x00 0x00
> - 0x00 0x00 0xf0 0x00>;
> - marvell,wakeup-pin = /bits/ 16 <0x0d>;
> - marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
> - };
> -};
> -
> -Example for USB device:
> -
> -&usb_host1_ohci {
> - #address-cells = <1>;
> - #size-cells = <0>;
> -
> - mvl_bt1: bt@1 {
> - compatible = "usb1286,204e";
> - reg = <1>;
> - interrupt-parent = <&gpio0>;
> - interrupt-names = "wakeup";
> - interrupts = <119 IRQ_TYPE_LEVEL_LOW>;
> - marvell,wakeup-pin = /bits/ 16 <0x0d>;
> - marvell,wakeup-gap-ms = /bits/ 16 <0x64>;
> - };
> -};
> --
> 2.50.1
>
Hi Rob,
On 8/21/25 11:28 AM, Rob Herring wrote:
> On Wed, Aug 20, 2025 at 12:15 PM Ariel D'Alessandro
> <ariel.dalessandro@collabora.com> wrote:
>>
>> Convert the existing text-based DT bindings for Marvell 8897/8997
>> (sd8897/sd8997) bluetooth devices controller to a YAML schema.
>>
>> While here, bindings for "usb1286,204e" (USB interface) are dropped from
>> the YAML definition as these are currently documented in file:
>>
>> - Documentation/devicetree/bindings/net/btusb.txt
>>
>> Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com>
>> ---
>> .../bindings/net/marvell,sd8897-bt.yaml | 91 +++++++++++++++++++
>
> This needs to move to net/bluetooth/
Ack.
>
>> .../bindings/net/marvell-bt-8xxx.txt | 83 -----------------
>> 2 files changed, 91 insertions(+), 83 deletions(-)
>> create mode 100644 Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
>> delete mode 100644 Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt
>>
>> diff --git a/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml b/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
>> new file mode 100644
>> index 0000000000000..6539868c08b8a
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml
>> @@ -0,0 +1,91 @@
>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/net/marvell,sd8897-bt.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Marvell 8897/8997 (sd8897/sd8997) bluetooth devices (SDIO)
>> +
>> +maintainers:
>> + - Ariel D'Alessandro <ariel.dalessandro@collabora.com>
>> +
>
> Needs a $ref to bluetooth-controller.yaml
Ack.
>
>> +properties:
>> + compatible:
>> + enum:
>> + - marvell,sd8897-bt
>> + - marvell,sd8997-bt
>> +
>> + reg:
>> + maxItems: 1
>> +
>> + interrupts:
>> + maxItems: 1
>> +
>> + marvell,cal-data:
>> + $ref: /schemas/types.yaml#/definitions/uint8-array
>> + description:
>> + Calibration data downloaded to the device during initialization.
>> + minItems: 28
>
> Just: maxItems: 28
Ack.
>
>> +
>> + marvell,wakeup-pin:
>> + $ref: /schemas/types.yaml#/definitions/uint16
>> + description:
>> + Wakeup pin number of the bluetooth chip. Used by firmware to wakeup host
>> + system.
>> +
>> + marvell,wakeup-gap-ms:
>
> This unfortunately needs a uint16 type. That will cause a warning
> which has to be fixed on the dtschema side.
Yeah, that's what I thought but wasn't sure on the proper solution. Will
fix in v2.
>
>> + description:
>> + Wakeup latency of the host platform. Required by the chip sleep feature.
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - interrupts
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/interrupt-controller/irq.h>
>> + #include <dt-bindings/pinctrl/rockchip.h>
>
> Please drop this and just use a number below.
Ack.
>
>> +
>> + sdio0 {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + btmrvl: btmrvl@2 {
>> + compatible = "marvell,sd8897-bt";
>> + reg = <2>;
>> + interrupt-parent = <&gpio4>;
>> + interrupts = <RK_PD7 IRQ_TYPE_LEVEL_LOW>;
>> + marvell,wakeup-pin = /bits/ 16 <13>;
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&bt_host_wake_l>;
>> + };
>> + };
>
> I would drop this example.
Agreed.
>
>> +
>> + mmc3 {
>
> mmc {
Ack.
>
>> + vmmc-supply = <&wlan_en_reg>;
>> + bus-width = <4>;
>> + cap-power-off-card;
>> + keep-power-in-suspend;
>> +
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + bluetooth: bluetooth@2 {
>
> Drop the label.
Ack.
Thanks a lot for your feedback and help!
Regards,
--
Ariel D'Alessandro
Software Engineer
Collabora Ltd.
Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, UK
Registered in England & Wales, no. 5513718
On Wed, 20 Aug 2025 14:12:52 -0300, Ariel D'Alessandro wrote: > Convert the existing text-based DT bindings for Marvell 8897/8997 > (sd8897/sd8997) bluetooth devices controller to a YAML schema. > > While here, bindings for "usb1286,204e" (USB interface) are dropped from > the YAML definition as these are currently documented in file: > > - Documentation/devicetree/bindings/net/btusb.txt > > Signed-off-by: Ariel D'Alessandro <ariel.dalessandro@collabora.com> > --- > .../bindings/net/marvell,sd8897-bt.yaml | 91 +++++++++++++++++++ > .../bindings/net/marvell-bt-8xxx.txt | 83 ----------------- > 2 files changed, 91 insertions(+), 83 deletions(-) > create mode 100644 Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml > delete mode 100644 Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/net/marvell,sd8897-bt.yaml: marvell,wakeup-gap-ms: missing type definition /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/net/marvell,sd8897-bt.example.dtb: bluetooth@2 (marvell,sd8897-bt): marvell,wakeup-gap-ms: b'\x00d' is not of type 'object', 'integer', 'array', 'boolean', 'null' from schema $id: http://devicetree.org/schemas/dt-core.yaml# doc reference errors (make refcheckdocs): Warning: Documentation/devicetree/bindings/net/btusb.txt references a file that doesn't exist: Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt Documentation/devicetree/bindings/net/btusb.txt: Documentation/devicetree/bindings/net/marvell-bt-8xxx.txt See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250820171302.324142-5-ariel.dalessandro@collabora.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
© 2016 - 2026 Red Hat, Inc.