Commit 0fb410c9 authored by Bartosz Golaszewski's avatar Bartosz Golaszewski Committed by Luiz Augusto von Dentz
Browse files

Bluetooth: hci_qca: move the SoC type check to the right place



Commit 3d05fc82 ("Bluetooth: qca: set power_ctrl_enabled on NULL
returned by gpiod_get_optional()") accidentally changed the prevous
behavior where power control would be disabled without the BT_EN GPIO
only on QCA_WCN6750 and QCA_WCN6855 while also getting the error check
wrong. We should treat every IS_ERR() return value from
devm_gpiod_get_optional() as a reason to bail-out while we should only
set power_ctrl_enabled to false on the two models mentioned above. While
at it: use dev_err_probe() to save a LOC.

Cc: stable@vger.kernel.org
Fixes: 3d05fc82 ("Bluetooth: qca: set power_ctrl_enabled on NULL returned by gpiod_get_optional()")
Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Tested-by: default avatarHsin-chen Chuang <chharry@chromium.org>
Reviewed-by: default avatarHsin-chen Chuang <chharry@chromium.org>
Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
parent edc14f2a
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -2415,14 +2415,14 @@ static int qca_serdev_probe(struct serdev_device *serdev)

		qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
					       GPIOD_OUT_LOW);
		if (IS_ERR(qcadev->bt_en) &&
		    (data->soc_type == QCA_WCN6750 ||
		     data->soc_type == QCA_WCN6855)) {
			dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n");
			return PTR_ERR(qcadev->bt_en);
		}
		if (IS_ERR(qcadev->bt_en))
			return dev_err_probe(&serdev->dev,
					     PTR_ERR(qcadev->bt_en),
					     "failed to acquire BT_EN gpio\n");

		if (!qcadev->bt_en)
		if (!qcadev->bt_en &&
		    (data->soc_type == QCA_WCN6750 ||
		     data->soc_type == QCA_WCN6855))
			power_ctrl_enabled = false;

		qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",