Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Bluetooth: hci_qca: Replace devm_gpiod_get() with devm_gpiod_get_optional()

This patch replaces devm_gpiod_get() with devm_gpiod_get_optional() to get
bt_en and replaces devm_clk_get() with devm_clk_get_optional() to get
susclk. It also uses NULL check to determine whether the resource is
available or not.

Fixes: 8a208b24d770 ("Bluetooth: hci_qca: Make bt_en and susclk not mandatory for QCA Rome")
Signed-off-by: Rocky Liao <rjliao@codeaurora.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>

authored by

Rocky Liao and committed by
Marcel Holtmann
77131dfe eb82dfe6

+8 -8
+8 -8
drivers/bluetooth/hci_qca.c
··· 1562 1562 ret = qca_wcn3990_init(hu); 1563 1563 } else { 1564 1564 qcadev = serdev_device_get_drvdata(hu->serdev); 1565 - if (!IS_ERR(qcadev->bt_en)) { 1565 + if (qcadev->bt_en) { 1566 1566 gpiod_set_value_cansleep(qcadev->bt_en, 1); 1567 1567 /* Controller needs time to bootup. */ 1568 1568 msleep(150); ··· 1752 1752 host_set_baudrate(hu, 2400); 1753 1753 qca_send_power_pulse(hu, false); 1754 1754 qca_regulator_disable(qcadev); 1755 - } else if (!IS_ERR(qcadev->bt_en)) { 1755 + } else if (qcadev->bt_en) { 1756 1756 gpiod_set_value_cansleep(qcadev->bt_en, 0); 1757 1757 } 1758 1758 } ··· 1901 1901 } 1902 1902 } else { 1903 1903 qcadev->btsoc_type = QCA_ROME; 1904 - qcadev->bt_en = devm_gpiod_get(&serdev->dev, "enable", 1904 + qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable", 1905 1905 GPIOD_OUT_LOW); 1906 - if (IS_ERR(qcadev->bt_en)) { 1906 + if (!qcadev->bt_en) { 1907 1907 dev_warn(&serdev->dev, "failed to acquire enable gpio\n"); 1908 1908 power_ctrl_enabled = false; 1909 1909 } 1910 1910 1911 - qcadev->susclk = devm_clk_get(&serdev->dev, NULL); 1912 - if (IS_ERR(qcadev->susclk)) { 1911 + qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL); 1912 + if (!qcadev->susclk) { 1913 1913 dev_warn(&serdev->dev, "failed to acquire clk\n"); 1914 1914 } else { 1915 1915 err = clk_set_rate(qcadev->susclk, SUSCLK_RATE_32KHZ); ··· 1924 1924 err = hci_uart_register_device(&qcadev->serdev_hu, &qca_proto); 1925 1925 if (err) { 1926 1926 BT_ERR("Rome serdev registration failed"); 1927 - if (!IS_ERR(qcadev->susclk)) 1927 + if (qcadev->susclk) 1928 1928 clk_disable_unprepare(qcadev->susclk); 1929 1929 return err; 1930 1930 } ··· 1945 1945 1946 1946 if (qca_is_wcn399x(qcadev->btsoc_type)) 1947 1947 qca_power_shutdown(&qcadev->serdev_hu); 1948 - else if (!IS_ERR(qcadev->susclk)) 1948 + else if (qcadev->susclk) 1949 1949 clk_disable_unprepare(qcadev->susclk); 1950 1950 1951 1951 hci_uart_unregister_device(&qcadev->serdev_hu);