On Wed, Apr 24, 2024 at 3:31 PM Wren Turkal <wt@xxxxxxxxxxxxxxxx> wrote: > > On 4/24/24 6:22 AM, quic_zijuhu wrote: > > On 4/24/2024 9:18 PM, Bartosz Golaszewski wrote: > >> On Wed, 24 Apr 2024 at 15:10, Wren Turkal <wt@xxxxxxxxxxxxxxxx> wrote: > >>> > >>> On 4/24/24 5:29 AM, Bartosz Golaszewski wrote: > >>>> From: Bartosz Golaszewski<bartosz.golaszewski@xxxxxxxxxx> > >>>> > >>>> Any return value from gpiod_get_optional() other than a pointer to a > >>>> GPIO descriptor or a NULL-pointer is an error and the driver should > >>>> abort probing. That being said: commit 56d074d26c58 ("Bluetooth: hci_qca: > >>>> don't use IS_ERR_OR_NULL() with gpiod_get_optional()") no longer sets > >>>> power_ctrl_enabled on NULL-pointer returned by > >>>> devm_gpiod_get_optional(). Restore this behavior but bail-out on errors. > >>>> While at it: also bail-out on error returned when trying to get the > >>>> "swctrl" GPIO. > >>>> > >>>> Reported-by: Wren Turkal<wt@xxxxxxxxxxxxxxxx> > >>>> Reported-by: Zijun Hu<quic_zijuhu@xxxxxxxxxxx> > >>>> Closes:https://lore.kernel.org/linux-bluetooth/1713449192-25926-2-git-send-email-quic_zijuhu@xxxxxxxxxxx/ > >>>> Fixes: 56d074d26c58 ("Bluetooth: hci_qca: don't use IS_ERR_OR_NULL() with gpiod_get_optional()") > >>>> Reviewed-by: Krzysztof Kozlowski<krzysztof.kozlowski@xxxxxxxxxx> > >>>> Signed-off-by: Bartosz Golaszewski<bartosz.golaszewski@xxxxxxxxxx> > >>> > >>> Tested-by: "Wren Turkal" <wt@xxxxxxxxxxxxxxxx> > >>> > >>> > >>> Like this? > >> > >> Yes, awesome, thanks. > >> > >> This is how reviewing works too in the kernel, look at what Krzysztof > >> did under v1, he just wrote: > >> > >> Reviewed-by: Krzysztof Kozlowski<krzysztof.kozlowski@xxxxxxxxxx> > >> > > v1 have obvious something wrong as i pointed and verified. > > so i think it is not suitable to attach v1's review-by tag to v2 anyway. > > @Zijun, your concern is that current DTs may not define the gpio and > this will cause the bluetooth not to work? > This is simply not true. If the GPIO is not specified, gpiod_get_optional() will return NULL and GPIO APIs will work just fine. That being said: the contract for whether a GPIO is needed or not is not in the driver C code or released DT sources. It's in the bindings documents under Documentation/devicetree/bindings/. This is the source of truth. So if the binding for a given model has always said "required: enable-gpios" then we're absolutely in our rights to fix the driver to conform to that even if previously omitted. If you think otherwise - relax the bindings first. Bart > Would that not more appropriately be fixed by machine-specific fixups > for the DT? > > > > >> And mailing list tools will pick it up. > >> > >> Bartosz > > > > -- > You're more amazing than you think!