[PATCH RESEND] Bluetooth: btmtksdio: Lookup device node only as fallback

AngeloGioacchino Del Regno angelogioacchino.delregno at collabora.com
Tue Oct 15 01:46:00 PDT 2024


Il 08/10/24 15:39, Luiz Augusto von Dentz ha scritto:
> Hi,
> 
> On Tue, Oct 8, 2024 at 4:27 AM Chen-Yu Tsai <wenst at chromium.org> wrote:
>>
>> If the device tree is properly written, the SDIO function device node
>> should be correctly defined, and the mmc core in Linux should correctly
>> tie it to the device being probed.
>>
>> Only fall back to searching for the device node by compatible if the
>> original device node tied to the device is incorrect, as seen in older
>> device trees.
>>
>> Signed-off-by: Chen-Yu Tsai <wenst at chromium.org>
> 
> I was hoping to see some Reviewed-by/Tested-by here, were the mediatek
> made aware of these changes?
> 

Sorry I didn't see this patch in my .. rather big .. stack of patches :-D

I can confirm

Tested-by: AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com> # 
MT8186 Corsola

Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>

Cheers,
Angelo

>> ---
>> Resending after three and a half months.
>>
>> This follows up on the MT7921S bluetooth binding and DT fixup patches [1].
>> This should not be backported.
>>
>> [1] https://lore.kernel.org/linux-bluetooth/20240412073046.1192744-1-wenst@chromium.org/
>>
>>   drivers/bluetooth/btmtksdio.c | 17 +++++++++++++++--
>>   1 file changed, 15 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.c
>> index cc097aedc1e1..a1dfcfe43d3a 100644
>> --- a/drivers/bluetooth/btmtksdio.c
>> +++ b/drivers/bluetooth/btmtksdio.c
>> @@ -1328,6 +1328,8 @@ static int btmtksdio_probe(struct sdio_func *func,
>>   {
>>          struct btmtksdio_dev *bdev;
>>          struct hci_dev *hdev;
>> +       struct device_node *old_node;
>> +       bool restore_node;
>>          int err;
>>
>>          bdev = devm_kzalloc(&func->dev, sizeof(*bdev), GFP_KERNEL);
>> @@ -1411,13 +1413,24 @@ static int btmtksdio_probe(struct sdio_func *func,
>>          if (err)
>>                  bt_dev_err(hdev, "failed to initialize device wakeup");
>>
>> -       bdev->dev->of_node = of_find_compatible_node(NULL, NULL,
>> -                                                    "mediatek,mt7921s-bluetooth");
>> +       restore_node = false;
>> +       if (!of_device_is_compatible(bdev->dev->of_node, "mediatek,mt7921s-bluetooth")) {
>> +               restore_node = true;
>> +               old_node = bdev->dev->of_node;
>> +               bdev->dev->of_node = of_find_compatible_node(NULL, NULL,
>> +                                                            "mediatek,mt7921s-bluetooth");
>> +       }
>> +
>>          bdev->reset = devm_gpiod_get_optional(bdev->dev, "reset",
>>                                                GPIOD_OUT_LOW);
>>          if (IS_ERR(bdev->reset))
>>                  err = PTR_ERR(bdev->reset);
>>
>> +       if (restore_node) {
>> +               of_node_put(bdev->dev->of_node);
>> +               bdev->dev->of_node = old_node;
>> +       }
>> +
>>          return err;
>>   }
>>
>> --
>> 2.47.0.rc0.187.ge670bccf7e-goog
>>
> 
> 




More information about the Linux-mediatek mailing list