mbox series

[0/2] bluetooth: mt7921s: Add binding and fixup existing dts

Message ID 20240125095240.2308340-1-wenst@chromium.org
Headers show
Series bluetooth: mt7921s: Add binding and fixup existing dts | expand

Message

Chen-Yu Tsai Jan. 25, 2024, 9:52 a.m. UTC
Hi everyone,

This short series adds a binding document for the MT7921S SDIO Bluetooth
controller. The MT7921S is a SDIO-based WiFi/Bluetooth combo. WiFi and
Bluetooth are separate SDIO functions. The chip has extra per-subsystem
reset lines that can reset only WiFi or Bluetooth cores.

Patch 1 documents the SDIO function and the reset line, based on
existing device tree and driver usage. I listed Sean Wang, the original
driver author and maintainer, as the maintainer of the binding.

Patch 2 fixes up the sole existing usage of the compatible string by
making it a proper SDIO function node.

Please take a look. Not sure which tree patch 1 should be merged
through? I suppose with proper acks it could go through the soc/mediatek
tree together with patch 2.


Regards
ChenYu


Chen-Yu Tsai (2):
  dt-bindings: net: bluetooth: Add MediaTek MT7921S SDIO Bluetooth
  arm64: dts: mediatek: mt8183-pico6: Fix bluetooth node

 .../bluetooth/mediatek,mt7921s-bluetooth.yaml | 49 +++++++++++++++++++
 MAINTAINERS                                   |  1 +
 .../mediatek/mt8183-kukui-jacuzzi-pico6.dts   |  3 +-
 3 files changed, 52 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml

Comments

AngeloGioacchino Del Regno Jan. 25, 2024, 11:39 a.m. UTC | #1
Il 25/01/24 10:52, Chen-Yu Tsai ha scritto:
> The MediaTek MT7921S is a WiFi/Bluetooth combo chip that works over
> SDIO. While the Bluetooth function is fully discoverable, the chip
> has a pin that can reset just the Bluetooth side, as opposed to the
> full chip. This needs to be described in the device tree.
> 
> Add a device tree binding for MT7921S Bluetooth over SDIO specifically
> ot document the reset line.
> 
> Cc: Sean Wang <sean.wang@mediatek.com>
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> ---
>   .../bluetooth/mediatek,mt7921s-bluetooth.yaml | 49 +++++++++++++++++++
>   MAINTAINERS                                   |  1 +
>   2 files changed, 50 insertions(+)
>   create mode 100644 Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
> 
> diff --git a/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml b/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
> new file mode 100644
> index 000000000000..bbe240e7cc40
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
> @@ -0,0 +1,49 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/net/bluetooth/mediatek,mt7921s-bluetooth.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: MediaTek MT7921S Bluetooth
> +

title:

maintainers:

description:

... and then, you missed

allOf:
   - $ref: bluetooth-controller.yaml#

Everything else looks good.

Cheers,
Angelo

> +description:

MT7921S is a (dual?) SDIO-attached dual-radio WiFi+Bluetooth combo chip;
this chip has two dedicated reset lines, one of which is used to reset
the Bluetooth core.
The WiFi part of this chip is described in ....where? :-)

> +  This binding describes the Bluetooth side of the SDIO-attached MT7921S
> +  WiFi+Bluetooth combo chips. These chips are dual-radio chips supporting
> +  WiFi and Bluetooth. Bluetooth works over SDIO just like WiFi. Bluetooth
> +  has its own reset line, separate from WiFi, which can be used to reset
> +  the Bluetooth core.
> +
> +maintainers:
> +  - Sean Wang <sean.wang@mediatek.com>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - mediatek,mt7921s-bluetooth
> +  reg:
> +    const: 2
> +
> +  reset-gpios:
> +    maxItems: 1
> +    description: A GPIO line connected to the Bluetooth subsystem reset line.
> +      Typically the W_DISABLE2# pin on M.2 E-key modules. If present this
> +      shall be flagged as active low.

description:
   An active-low reset line connected for the Bluetooth core;
   on typical M.2 Key-E modules this is the W_DISABLE2# pin.

Cheers,
Angelo

> +
> +required:
> +  - compatible
> +  - reg
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    mmc {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        bluetooth@2 {
> +            compatible = "mediatek,mt7921s-bluetooth";
> +            reg = <2>;
> +            reset-gpios = <&pio 8 GPIO_ACTIVE_LOW>;
> +        };
> +    };
> diff --git a/MAINTAINERS b/MAINTAINERS
> index b64a64ca7916..662957146852 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -13657,6 +13657,7 @@ M:	Sean Wang <sean.wang@mediatek.com>
>   L:	linux-bluetooth@vger.kernel.org
>   L:	linux-mediatek@lists.infradead.org (moderated for non-subscribers)
>   S:	Maintained
> +F:	Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
>   F:	Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
>   F:	drivers/bluetooth/btmtkuart.c
>
Rob Herring Jan. 26, 2024, 3:02 a.m. UTC | #2
On Thu, 25 Jan 2024 17:52:37 +0800, Chen-Yu Tsai wrote:
> The MediaTek MT7921S is a WiFi/Bluetooth combo chip that works over
> SDIO. While the Bluetooth function is fully discoverable, the chip
> has a pin that can reset just the Bluetooth side, as opposed to the
> full chip. This needs to be described in the device tree.
> 
> Add a device tree binding for MT7921S Bluetooth over SDIO specifically
> ot document the reset line.
> 
> Cc: Sean Wang <sean.wang@mediatek.com>
> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> ---
>  .../bluetooth/mediatek,mt7921s-bluetooth.yaml | 49 +++++++++++++++++++
>  MAINTAINERS                                   |  1 +
>  2 files changed, 50 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
> 

My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):

yamllint warnings/errors:

dtschema/dtc warnings/errors:
Error: Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.example.dts:25.39-40 syntax error
FATAL ERROR: Unable to parse input tree
make[2]: *** [scripts/Makefile.lib:419: Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.example.dtb] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/builds/robherring/dt-review-ci/linux/Makefile:1428: dt_binding_check] Error 2
make: *** [Makefile:240: __sub-make] Error 2

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240125095240.2308340-2-wenst@chromium.org

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.
Chen-Yu Tsai Jan. 26, 2024, 3:26 a.m. UTC | #3
On Thu, Jan 25, 2024 at 7:39 PM AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com> wrote:
>
> Il 25/01/24 10:52, Chen-Yu Tsai ha scritto:
> > The MediaTek MT7921S is a WiFi/Bluetooth combo chip that works over
> > SDIO. While the Bluetooth function is fully discoverable, the chip
> > has a pin that can reset just the Bluetooth side, as opposed to the
> > full chip. This needs to be described in the device tree.
> >
> > Add a device tree binding for MT7921S Bluetooth over SDIO specifically
> > ot document the reset line.
> >
> > Cc: Sean Wang <sean.wang@mediatek.com>
> > Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
> > ---
> >   .../bluetooth/mediatek,mt7921s-bluetooth.yaml | 49 +++++++++++++++++++
> >   MAINTAINERS                                   |  1 +
> >   2 files changed, 50 insertions(+)
> >   create mode 100644 Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml b/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
> > new file mode 100644
> > index 000000000000..bbe240e7cc40
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
> > @@ -0,0 +1,49 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/net/bluetooth/mediatek,mt7921s-bluetooth.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: MediaTek MT7921S Bluetooth
> > +
>
> title:
>
> maintainers:
>
> description:
>
> ... and then, you missed
>
> allOf:
>    - $ref: bluetooth-controller.yaml#

(facepalm)

> Everything else looks good.
>
> Cheers,
> Angelo
>
> > +description:
>
> MT7921S is a (dual?) SDIO-attached dual-radio WiFi+Bluetooth combo chip;
> this chip has two dedicated reset lines, one of which is used to reset
> the Bluetooth core.
> The WiFi part of this chip is described in ....where? :-)

The function itself is fully probable and the implementation doesn't make
use of the WiFi's reset line, so I don't see any reason to describe it?
I don't actually know what the reset line does in the chip hardware.
This patch is just described what is already used.

> > +  This binding describes the Bluetooth side of the SDIO-attached MT7921S
> > +  WiFi+Bluetooth combo chips. These chips are dual-radio chips supporting
> > +  WiFi and Bluetooth. Bluetooth works over SDIO just like WiFi. Bluetooth
> > +  has its own reset line, separate from WiFi, which can be used to reset
> > +  the Bluetooth core.
> > +
> > +maintainers:
> > +  - Sean Wang <sean.wang@mediatek.com>
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - mediatek,mt7921s-bluetooth
> > +  reg:
> > +    const: 2
> > +
> > +  reset-gpios:
> > +    maxItems: 1
> > +    description: A GPIO line connected to the Bluetooth subsystem reset line.
> > +      Typically the W_DISABLE2# pin on M.2 E-key modules. If present this
> > +      shall be flagged as active low.
>
> description:
>    An active-low reset line connected for the Bluetooth core;

connected to?

>    on typical M.2 Key-E modules this is the W_DISABLE2# pin.

Otherwise this looks better. Thanks.


ChenYu

> Cheers,
> Angelo
>
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    mmc {
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        bluetooth@2 {
> > +            compatible = "mediatek,mt7921s-bluetooth";
> > +            reg = <2>;
> > +            reset-gpios = <&pio 8 GPIO_ACTIVE_LOW>;
> > +        };
> > +    };
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index b64a64ca7916..662957146852 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -13657,6 +13657,7 @@ M:    Sean Wang <sean.wang@mediatek.com>
> >   L:  linux-bluetooth@vger.kernel.org
> >   L:  linux-mediatek@lists.infradead.org (moderated for non-subscribers)
> >   S:  Maintained
> > +F:   Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
> >   F:  Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
> >   F:  drivers/bluetooth/btmtkuart.c
> >
>
AngeloGioacchino Del Regno Jan. 26, 2024, 9:12 a.m. UTC | #4
Il 26/01/24 04:26, Chen-Yu Tsai ha scritto:
> On Thu, Jan 25, 2024 at 7:39 PM AngeloGioacchino Del Regno
> <angelogioacchino.delregno@collabora.com> wrote:
>>
>> Il 25/01/24 10:52, Chen-Yu Tsai ha scritto:
>>> The MediaTek MT7921S is a WiFi/Bluetooth combo chip that works over
>>> SDIO. While the Bluetooth function is fully discoverable, the chip
>>> has a pin that can reset just the Bluetooth side, as opposed to the
>>> full chip. This needs to be described in the device tree.
>>>
>>> Add a device tree binding for MT7921S Bluetooth over SDIO specifically
>>> ot document the reset line.
>>>
>>> Cc: Sean Wang <sean.wang@mediatek.com>
>>> Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
>>> ---
>>>    .../bluetooth/mediatek,mt7921s-bluetooth.yaml | 49 +++++++++++++++++++
>>>    MAINTAINERS                                   |  1 +
>>>    2 files changed, 50 insertions(+)
>>>    create mode 100644 Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
>>>
>>> diff --git a/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml b/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
>>> new file mode 100644
>>> index 000000000000..bbe240e7cc40
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
>>> @@ -0,0 +1,49 @@
>>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/net/bluetooth/mediatek,mt7921s-bluetooth.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: MediaTek MT7921S Bluetooth
>>> +
>>
>> title:
>>
>> maintainers:
>>
>> description:
>>
>> ... and then, you missed
>>
>> allOf:
>>     - $ref: bluetooth-controller.yaml#
> 
> (facepalm)
> 
>> Everything else looks good.
>>
>> Cheers,
>> Angelo
>>
>>> +description:
>>
>> MT7921S is a (dual?) SDIO-attached dual-radio WiFi+Bluetooth combo chip;
>> this chip has two dedicated reset lines, one of which is used to reset
>> the Bluetooth core.
>> The WiFi part of this chip is described in ....where? :-)
> 
> The function itself is fully probable and the implementation doesn't make
> use of the WiFi's reset line, so I don't see any reason to describe it?
> I don't actually know what the reset line does in the chip hardware.
> This patch is just described what is already used.
> 
>>> +  This binding describes the Bluetooth side of the SDIO-attached MT7921S
>>> +  WiFi+Bluetooth combo chips. These chips are dual-radio chips supporting
>>> +  WiFi and Bluetooth. Bluetooth works over SDIO just like WiFi. Bluetooth
>>> +  has its own reset line, separate from WiFi, which can be used to reset
>>> +  the Bluetooth core.
>>> +
>>> +maintainers:
>>> +  - Sean Wang <sean.wang@mediatek.com>
>>> +
>>> +properties:
>>> +  compatible:
>>> +    enum:
>>> +      - mediatek,mt7921s-bluetooth
>>> +  reg:
>>> +    const: 2
>>> +
>>> +  reset-gpios:
>>> +    maxItems: 1
>>> +    description: A GPIO line connected to the Bluetooth subsystem reset line.
>>> +      Typically the W_DISABLE2# pin on M.2 E-key modules. If present this
>>> +      shall be flagged as active low.
>>
>> description:
>>     An active-low reset line connected for the Bluetooth core;
> 
> connected to?

Eh yes, sorry - I edited that statement multiple times and that "for" stuck
there for reasons :-)

> 
>>     on typical M.2 Key-E modules this is the W_DISABLE2# pin.
> 
> Otherwise this looks better. Thanks.

You're welcome!

Cheers!

> 
> 
> ChenYu
> 
>> Cheers,
>> Angelo
>>
>>> +
>>> +required:
>>> +  - compatible
>>> +  - reg
>>> +
>>> +additionalProperties: false
>>> +
>>> +examples:
>>> +  - |
>>> +    mmc {
>>> +        #address-cells = <1>;
>>> +        #size-cells = <0>;
>>> +
>>> +        bluetooth@2 {
>>> +            compatible = "mediatek,mt7921s-bluetooth";
>>> +            reg = <2>;
>>> +            reset-gpios = <&pio 8 GPIO_ACTIVE_LOW>;
>>> +        };
>>> +    };
>>> diff --git a/MAINTAINERS b/MAINTAINERS
>>> index b64a64ca7916..662957146852 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -13657,6 +13657,7 @@ M:    Sean Wang <sean.wang@mediatek.com>
>>>    L:  linux-bluetooth@vger.kernel.org
>>>    L:  linux-mediatek@lists.infradead.org (moderated for non-subscribers)
>>>    S:  Maintained
>>> +F:   Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml
>>>    F:  Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
>>>    F:  drivers/bluetooth/btmtkuart.c
>>>
>>