* [PATCH v7 0/2] Enable Bluetooth functionality for WCN3998. @ 2019-04-25 12:13 Harish Bandi 2019-04-25 12:13 ` [PATCH v7 1/2] Bluetooth: hci_qca: Added support " Harish Bandi 2019-04-25 12:13 ` [PATCH v7 2/2] dt-bindings: net: bluetooth: Add device tree bindings for QTI chip WCN3998 Harish Bandi 0 siblings, 2 replies; 8+ messages in thread From: Harish Bandi @ 2019-04-25 12:13 UTC (permalink / raw) To: marcel, johan.hedberg Cc: mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm, bgodavar, anubhavg, devicetree, mark.rutland, robh+dt, Harish Bandi This patch series we add support for WCN3998 BT chip set. This new chip set is based from the WCN3990 with minimal power numbers. So here in this patch The major difference between wcn3990 and WCN3998 is only power numbers. where as init process and fw download is same with wcn3990. So we add new compatible for WCN3998. Removed the Reading of regulator values from dts. Added new compatible for WCN3998. Changes in V6: Initialized rom_ver to 0 to fix compiler warning Changed Commit text for DT patch Changes in V6: changed return value to false in the qca_is_wcn399x()stub Changes in V5: changed is_qca_soc_type_wcn399x_family to qca_is_wcn399x helper function Moved the qca_is_wcn399x function to btqca.c modified the DT document for wcn399x as per driver code Changes in V4: Added is_qca_soc_type_wcn399x_family helper function to get the soc type is wcn399x or not. Changes in V3: updated to latest code base. Harish Bandi (2): Bluetooth: hci_qca: Added support for WCN3998 dt-bindings: net: bluetooth: Add device tree bindings for QTI chip WCN3998 .../devicetree/bindings/net/qualcomm-bluetooth.txt | 5 +-- drivers/bluetooth/btqca.c | 12 +++++-- drivers/bluetooth/btqca.h | 8 ++++- drivers/bluetooth/hci_qca.c | 40 ++++++++++++++-------- 4 files changed, 45 insertions(+), 20 deletions(-) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v7 1/2] Bluetooth: hci_qca: Added support for WCN3998 2019-04-25 12:13 [PATCH v7 0/2] Enable Bluetooth functionality for WCN3998 Harish Bandi @ 2019-04-25 12:13 ` Harish Bandi 2019-04-25 12:47 ` Marcel Holtmann 2019-04-25 12:13 ` [PATCH v7 2/2] dt-bindings: net: bluetooth: Add device tree bindings for QTI chip WCN3998 Harish Bandi 1 sibling, 1 reply; 8+ messages in thread From: Harish Bandi @ 2019-04-25 12:13 UTC (permalink / raw) To: marcel, johan.hedberg Cc: mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm, bgodavar, anubhavg, devicetree, mark.rutland, robh+dt, Harish Bandi Added new compatible for WCN3998 and corresponding voltage and current values to WCN3998 compatible. Changed driver code to support WCN3998 Signed-off-by: Harish Bandi <c-hbandi@codeaurora.org> Reviewed-by: Matthias Kaehlcke <mka@chromium.org> --- Changes in V7: - Initialized rom_ver to 0 to fix compiler warning --- drivers/bluetooth/btqca.c | 12 +++++++++--- drivers/bluetooth/btqca.h | 8 +++++++- drivers/bluetooth/hci_qca.c | 40 ++++++++++++++++++++++++++-------------- 3 files changed, 42 insertions(+), 18 deletions(-) diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c index 6122685..495a52f 100644 --- a/drivers/bluetooth/btqca.c +++ b/drivers/bluetooth/btqca.c @@ -336,7 +336,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, { struct rome_config config; int err; - u8 rom_ver; + u8 rom_ver = 0; bt_dev_dbg(hdev, "QCA setup on UART"); @@ -344,7 +344,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, /* Download rampatch file */ config.type = TLV_TYPE_PATCH; - if (soc_type == QCA_WCN3990) { + if (qca_is_wcn399x(soc_type)) { /* Firmware files to download are based on ROM version. * ROM version is derived from last two bytes of soc_ver. */ @@ -365,7 +365,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, /* Download NVM configuration */ config.type = TLV_TYPE_NVM; - if (soc_type == QCA_WCN3990) + if (qca_is_wcn399x(soc_type)) snprintf(config.fwname, sizeof(config.fwname), "qca/crnv%02x.bin", rom_ver); else @@ -410,6 +410,12 @@ int qca_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) } EXPORT_SYMBOL_GPL(qca_set_bdaddr); +bool qca_is_wcn399x(enum qca_btsoc_type soc_type) +{ + return ((soc_type == QCA_WCN3990) || (soc_type == QCA_WCN3998)); +} +EXPORT_SYMBOL_GPL(qca_is_wcn399x); + MODULE_AUTHOR("Ben Young Tae Kim <ytkim@qca.qualcomm.com>"); MODULE_DESCRIPTION("Bluetooth support for Qualcomm Atheros family ver " VERSION); MODULE_VERSION(VERSION); diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h index 6fdc25d..0f68c9e7 100644 --- a/drivers/bluetooth/btqca.h +++ b/drivers/bluetooth/btqca.h @@ -132,7 +132,8 @@ enum qca_btsoc_type { QCA_INVALID = -1, QCA_AR3002, QCA_ROME, - QCA_WCN3990 + QCA_WCN3990, + QCA_WCN3998, }; #if IS_ENABLED(CONFIG_BT_QCA) @@ -142,6 +143,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, enum qca_btsoc_type soc_type, u32 soc_ver); int qca_read_soc_version(struct hci_dev *hdev, u32 *soc_version); int qca_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr); +bool qca_is_wcn399x(enum qca_btsoc_type soc_type); #else static inline int qca_set_bdaddr_rome(struct hci_dev *hdev, const bdaddr_t *bdaddr) @@ -165,4 +167,8 @@ static inline int qca_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) return -EOPNOTSUPP; } +static inline bool qca_is_wcn399x(enum qca_btsoc_type soc_type) +{ + return false; +} #endif diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 7f75652..c53ee8d 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -521,7 +521,7 @@ static int qca_open(struct hci_uart *hu) if (hu->serdev) { qcadev = serdev_device_get_drvdata(hu->serdev); - if (qcadev->btsoc_type != QCA_WCN3990) { + if (!qca_is_wcn399x(qcadev->btsoc_type)) { gpiod_set_value_cansleep(qcadev->bt_en, 1); /* Controller needs time to bootup. */ msleep(150); @@ -629,7 +629,7 @@ static int qca_close(struct hci_uart *hu) if (hu->serdev) { qcadev = serdev_device_get_drvdata(hu->serdev); - if (qcadev->btsoc_type == QCA_WCN3990) + if (qca_is_wcn399x(qcadev->btsoc_type)) qca_power_shutdown(hu); else gpiod_set_value_cansleep(qcadev->bt_en, 0); @@ -1011,7 +1011,7 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate) msecs_to_jiffies(CMD_TRANS_TIMEOUT_MS)); /* Give the controller time to process the request */ - if (qca_soc_type(hu) == QCA_WCN3990) + if (qca_is_wcn399x(qca_soc_type(hu))) msleep(10); else msleep(300); @@ -1087,7 +1087,7 @@ static unsigned int qca_get_speed(struct hci_uart *hu, static int qca_check_speeds(struct hci_uart *hu) { - if (qca_soc_type(hu) == QCA_WCN3990) { + if (qca_is_wcn399x(qca_soc_type(hu))) { if (!qca_get_speed(hu, QCA_INIT_SPEED) && !qca_get_speed(hu, QCA_OPER_SPEED)) return -EINVAL; @@ -1119,7 +1119,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type) /* Disable flow control for wcn3990 to deassert RTS while * changing the baudrate of chip and host. */ - if (soc_type == QCA_WCN3990) + if (qca_is_wcn399x(soc_type)) hci_uart_set_flow_control(hu, true); qca_baudrate = qca_get_baudrate_value(speed); @@ -1131,7 +1131,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type) host_set_baudrate(hu, speed); error: - if (soc_type == QCA_WCN3990) + if (qca_is_wcn399x(soc_type)) hci_uart_set_flow_control(hu, false); } @@ -1204,7 +1204,7 @@ static int qca_setup(struct hci_uart *hu) /* Patch downloading has to be done without IBS mode */ clear_bit(STATE_IN_BAND_SLEEP_ENABLED, &qca->flags); - if (soc_type == QCA_WCN3990) { + if (qca_is_wcn399x(soc_type)) { bt_dev_info(hdev, "setting up wcn3990"); /* Enable NON_PERSISTENT_SETUP QUIRK to ensure to execute @@ -1235,7 +1235,7 @@ static int qca_setup(struct hci_uart *hu) qca_baudrate = qca_get_baudrate_value(speed); } - if (soc_type != QCA_WCN3990) { + if (!qca_is_wcn399x(soc_type)) { /* Get QCA version information */ ret = qca_read_soc_version(hdev, &soc_ver); if (ret) @@ -1260,7 +1260,7 @@ static int qca_setup(struct hci_uart *hu) } /* Setup bdaddr */ - if (soc_type == QCA_WCN3990) + if (qca_is_wcn399x(soc_type)) hu->hdev->set_bdaddr = qca_set_bdaddr; else hu->hdev->set_bdaddr = qca_set_bdaddr_rome; @@ -1283,7 +1283,7 @@ static int qca_setup(struct hci_uart *hu) .dequeue = qca_dequeue, }; -static const struct qca_vreg_data qca_soc_data = { +static const struct qca_vreg_data qca_soc_data_wcn3990 = { .soc_type = QCA_WCN3990, .vregs = (struct qca_vreg []) { { "vddio", 1800000, 1900000, 15000 }, @@ -1294,6 +1294,17 @@ static int qca_setup(struct hci_uart *hu) .num_vregs = 4, }; +static const struct qca_vreg_data qca_soc_data_wcn3998 = { + .soc_type = QCA_WCN3998, + .vregs = (struct qca_vreg []) { + { "vddio", 1800000, 1900000, 10000 }, + { "vddxo", 1800000, 1900000, 80000 }, + { "vddrf", 1300000, 1352000, 300000 }, + { "vddch0", 3300000, 3300000, 450000 }, + }, + .num_vregs = 4, +}; + static void qca_power_shutdown(struct hci_uart *hu) { struct qca_data *qca = hu->priv; @@ -1427,8 +1438,8 @@ static int qca_serdev_probe(struct serdev_device *serdev) qcadev->serdev_hu.serdev = serdev; data = of_device_get_match_data(&serdev->dev); serdev_device_set_drvdata(serdev, qcadev); - if (data && data->soc_type == QCA_WCN3990) { - qcadev->btsoc_type = QCA_WCN3990; + if (data && qca_is_wcn399x(data->soc_type)) { + qcadev->btsoc_type = data->soc_type; qcadev->bt_power = devm_kzalloc(&serdev->dev, sizeof(struct qca_power), GFP_KERNEL); @@ -1492,7 +1503,7 @@ static void qca_serdev_remove(struct serdev_device *serdev) { struct qca_serdev *qcadev = serdev_device_get_drvdata(serdev); - if (qcadev->btsoc_type == QCA_WCN3990) + if (qca_is_wcn399x(qcadev->btsoc_type)) qca_power_shutdown(&qcadev->serdev_hu); else clk_disable_unprepare(qcadev->susclk); @@ -1502,7 +1513,8 @@ static void qca_serdev_remove(struct serdev_device *serdev) static const struct of_device_id qca_bluetooth_of_match[] = { { .compatible = "qcom,qca6174-bt" }, - { .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data}, + { .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data_wcn3990}, + { .compatible = "qcom,wcn3998-bt", .data = &qca_soc_data_wcn3998}, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, qca_bluetooth_of_match); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v7 1/2] Bluetooth: hci_qca: Added support for WCN3998 2019-04-25 12:13 ` [PATCH v7 1/2] Bluetooth: hci_qca: Added support " Harish Bandi @ 2019-04-25 12:47 ` Marcel Holtmann 2019-04-25 13:40 ` Harish Bandi 0 siblings, 1 reply; 8+ messages in thread From: Marcel Holtmann @ 2019-04-25 12:47 UTC (permalink / raw) To: Harish Bandi Cc: Johan Hedberg, mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm, bgodavar, anubhavg, devicetree, mark.rutland, robh+dt Hi Harish, > Added new compatible for WCN3998 and corresponding voltage > and current values to WCN3998 compatible. > Changed driver code to support WCN3998 > > Signed-off-by: Harish Bandi <c-hbandi@codeaurora.org> > Reviewed-by: Matthias Kaehlcke <mka@chromium.org> > --- > Changes in V7: > - Initialized rom_ver to 0 to fix compiler warning > --- > drivers/bluetooth/btqca.c | 12 +++++++++--- > drivers/bluetooth/btqca.h | 8 +++++++- > drivers/bluetooth/hci_qca.c | 40 ++++++++++++++++++++++++++-------------- > 3 files changed, 42 insertions(+), 18 deletions(-) > > diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c > index 6122685..495a52f 100644 > --- a/drivers/bluetooth/btqca.c > +++ b/drivers/bluetooth/btqca.c > @@ -336,7 +336,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, > { > struct rome_config config; > int err; > - u8 rom_ver; > + u8 rom_ver = 0; what is this change for? > bt_dev_dbg(hdev, "QCA setup on UART"); > > @@ -344,7 +344,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, > > /* Download rampatch file */ > config.type = TLV_TYPE_PATCH; > - if (soc_type == QCA_WCN3990) { > + if (qca_is_wcn399x(soc_type)) { > /* Firmware files to download are based on ROM version. > * ROM version is derived from last two bytes of soc_ver. > */ > @@ -365,7 +365,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, > > /* Download NVM configuration */ > config.type = TLV_TYPE_NVM; > - if (soc_type == QCA_WCN3990) > + if (qca_is_wcn399x(soc_type)) > snprintf(config.fwname, sizeof(config.fwname), > "qca/crnv%02x.bin", rom_ver); > else > @@ -410,6 +410,12 @@ int qca_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) > } > EXPORT_SYMBOL_GPL(qca_set_bdaddr); > > +bool qca_is_wcn399x(enum qca_btsoc_type soc_type) > +{ > + return ((soc_type == QCA_WCN3990) || (soc_type == QCA_WCN3998)); no () needed around soc_type = check. > +} > +EXPORT_SYMBOL_GPL(qca_is_wcn399x); > + Why is this exported. Make this an inline function in btqca.h. > MODULE_AUTHOR("Ben Young Tae Kim <ytkim@qca.qualcomm.com>"); > MODULE_DESCRIPTION("Bluetooth support for Qualcomm Atheros family ver " VERSION); > MODULE_VERSION(VERSION); > diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h > index 6fdc25d..0f68c9e7 100644 > --- a/drivers/bluetooth/btqca.h > +++ b/drivers/bluetooth/btqca.h > @@ -132,7 +132,8 @@ enum qca_btsoc_type { > QCA_INVALID = -1, > QCA_AR3002, > QCA_ROME, > - QCA_WCN3990 > + QCA_WCN3990, > + QCA_WCN3998, > }; > > #if IS_ENABLED(CONFIG_BT_QCA) > @@ -142,6 +143,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, > enum qca_btsoc_type soc_type, u32 soc_ver); > int qca_read_soc_version(struct hci_dev *hdev, u32 *soc_version); > int qca_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr); > +bool qca_is_wcn399x(enum qca_btsoc_type soc_type); > #else > > static inline int qca_set_bdaddr_rome(struct hci_dev *hdev, const bdaddr_t *bdaddr) > @@ -165,4 +167,8 @@ static inline int qca_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr) > return -EOPNOTSUPP; > } > > +static inline bool qca_is_wcn399x(enum qca_btsoc_type soc_type) > +{ > + return false; > +} > #endif > diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c > index 7f75652..c53ee8d 100644 > --- a/drivers/bluetooth/hci_qca.c > +++ b/drivers/bluetooth/hci_qca.c > @@ -521,7 +521,7 @@ static int qca_open(struct hci_uart *hu) > if (hu->serdev) { > > qcadev = serdev_device_get_drvdata(hu->serdev); > - if (qcadev->btsoc_type != QCA_WCN3990) { > + if (!qca_is_wcn399x(qcadev->btsoc_type)) { > gpiod_set_value_cansleep(qcadev->bt_en, 1); > /* Controller needs time to bootup. */ > msleep(150); > @@ -629,7 +629,7 @@ static int qca_close(struct hci_uart *hu) > > if (hu->serdev) { > qcadev = serdev_device_get_drvdata(hu->serdev); > - if (qcadev->btsoc_type == QCA_WCN3990) > + if (qca_is_wcn399x(qcadev->btsoc_type)) > qca_power_shutdown(hu); > else > gpiod_set_value_cansleep(qcadev->bt_en, 0); > @@ -1011,7 +1011,7 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate) > msecs_to_jiffies(CMD_TRANS_TIMEOUT_MS)); > > /* Give the controller time to process the request */ > - if (qca_soc_type(hu) == QCA_WCN3990) > + if (qca_is_wcn399x(qca_soc_type(hu))) > msleep(10); > else > msleep(300); > @@ -1087,7 +1087,7 @@ static unsigned int qca_get_speed(struct hci_uart *hu, > > static int qca_check_speeds(struct hci_uart *hu) > { > - if (qca_soc_type(hu) == QCA_WCN3990) { > + if (qca_is_wcn399x(qca_soc_type(hu))) { > if (!qca_get_speed(hu, QCA_INIT_SPEED) && > !qca_get_speed(hu, QCA_OPER_SPEED)) > return -EINVAL; > @@ -1119,7 +1119,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type) > /* Disable flow control for wcn3990 to deassert RTS while > * changing the baudrate of chip and host. > */ > - if (soc_type == QCA_WCN3990) > + if (qca_is_wcn399x(soc_type)) > hci_uart_set_flow_control(hu, true); > > qca_baudrate = qca_get_baudrate_value(speed); > @@ -1131,7 +1131,7 @@ static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type speed_type) > host_set_baudrate(hu, speed); > > error: > - if (soc_type == QCA_WCN3990) > + if (qca_is_wcn399x(soc_type)) > hci_uart_set_flow_control(hu, false); > } > > @@ -1204,7 +1204,7 @@ static int qca_setup(struct hci_uart *hu) > /* Patch downloading has to be done without IBS mode */ > clear_bit(STATE_IN_BAND_SLEEP_ENABLED, &qca->flags); > > - if (soc_type == QCA_WCN3990) { > + if (qca_is_wcn399x(soc_type)) { > bt_dev_info(hdev, "setting up wcn3990"); > > /* Enable NON_PERSISTENT_SETUP QUIRK to ensure to execute > @@ -1235,7 +1235,7 @@ static int qca_setup(struct hci_uart *hu) > qca_baudrate = qca_get_baudrate_value(speed); > } > > - if (soc_type != QCA_WCN3990) { > + if (!qca_is_wcn399x(soc_type)) { > /* Get QCA version information */ > ret = qca_read_soc_version(hdev, &soc_ver); > if (ret) > @@ -1260,7 +1260,7 @@ static int qca_setup(struct hci_uart *hu) > } > > /* Setup bdaddr */ > - if (soc_type == QCA_WCN3990) > + if (qca_is_wcn399x(soc_type)) > hu->hdev->set_bdaddr = qca_set_bdaddr; > else > hu->hdev->set_bdaddr = qca_set_bdaddr_rome; > @@ -1283,7 +1283,7 @@ static int qca_setup(struct hci_uart *hu) > .dequeue = qca_dequeue, > }; > > -static const struct qca_vreg_data qca_soc_data = { > +static const struct qca_vreg_data qca_soc_data_wcn3990 = { > .soc_type = QCA_WCN3990, > .vregs = (struct qca_vreg []) { > { "vddio", 1800000, 1900000, 15000 }, > @@ -1294,6 +1294,17 @@ static int qca_setup(struct hci_uart *hu) > .num_vregs = 4, > }; > > +static const struct qca_vreg_data qca_soc_data_wcn3998 = { > + .soc_type = QCA_WCN3998, > + .vregs = (struct qca_vreg []) { > + { "vddio", 1800000, 1900000, 10000 }, > + { "vddxo", 1800000, 1900000, 80000 }, > + { "vddrf", 1300000, 1352000, 300000 }, > + { "vddch0", 3300000, 3300000, 450000 }, > + }, > + .num_vregs = 4, > +}; > + > static void qca_power_shutdown(struct hci_uart *hu) > { > struct qca_data *qca = hu->priv; > @@ -1427,8 +1438,8 @@ static int qca_serdev_probe(struct serdev_device *serdev) > qcadev->serdev_hu.serdev = serdev; > data = of_device_get_match_data(&serdev->dev); > serdev_device_set_drvdata(serdev, qcadev); > - if (data && data->soc_type == QCA_WCN3990) { > - qcadev->btsoc_type = QCA_WCN3990; > + if (data && qca_is_wcn399x(data->soc_type)) { > + qcadev->btsoc_type = data->soc_type; > qcadev->bt_power = devm_kzalloc(&serdev->dev, > sizeof(struct qca_power), > GFP_KERNEL); > @@ -1492,7 +1503,7 @@ static void qca_serdev_remove(struct serdev_device *serdev) > { > struct qca_serdev *qcadev = serdev_device_get_drvdata(serdev); > > - if (qcadev->btsoc_type == QCA_WCN3990) > + if (qca_is_wcn399x(qcadev->btsoc_type)) > qca_power_shutdown(&qcadev->serdev_hu); > else > clk_disable_unprepare(qcadev->susclk); > @@ -1502,7 +1513,8 @@ static void qca_serdev_remove(struct serdev_device *serdev) > > static const struct of_device_id qca_bluetooth_of_match[] = { > { .compatible = "qcom,qca6174-bt" }, > - { .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data}, > + { .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data_wcn3990}, > + { .compatible = "qcom,wcn3998-bt", .data = &qca_soc_data_wcn3998}, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, qca_bluetooth_of_match); Regards Marcel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v7 1/2] Bluetooth: hci_qca: Added support for WCN3998 2019-04-25 12:47 ` Marcel Holtmann @ 2019-04-25 13:40 ` Harish Bandi 2019-04-25 16:46 ` Matthias Kaehlcke 0 siblings, 1 reply; 8+ messages in thread From: Harish Bandi @ 2019-04-25 13:40 UTC (permalink / raw) To: Marcel Holtmann Cc: Johan Hedberg, mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm, bgodavar, anubhavg, devicetree, mark.rutland, robh+dt Hi Marcel, On 2019-04-25 18:17, Marcel Holtmann wrote: > Hi Harish, > >> Added new compatible for WCN3998 and corresponding voltage >> and current values to WCN3998 compatible. >> Changed driver code to support WCN3998 >> >> Signed-off-by: Harish Bandi <c-hbandi@codeaurora.org> >> Reviewed-by: Matthias Kaehlcke <mka@chromium.org> >> --- >> Changes in V7: >> - Initialized rom_ver to 0 to fix compiler warning >> --- >> drivers/bluetooth/btqca.c | 12 +++++++++--- >> drivers/bluetooth/btqca.h | 8 +++++++- >> drivers/bluetooth/hci_qca.c | 40 >> ++++++++++++++++++++++++++-------------- >> 3 files changed, 42 insertions(+), 18 deletions(-) >> >> diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c >> index 6122685..495a52f 100644 >> --- a/drivers/bluetooth/btqca.c >> +++ b/drivers/bluetooth/btqca.c >> @@ -336,7 +336,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t >> baudrate, >> { >> struct rome_config config; >> int err; >> - u8 rom_ver; >> + u8 rom_ver = 0; > > what is this change for? [Harish] - kbuild test robot gave compiler warning. So initialized. drivers/bluetooth/btqca.c:369:3: warning: 'rom_ver' may be used uninitialized in this function [-Wmaybe-uninitialized] > >> bt_dev_dbg(hdev, "QCA setup on UART"); >> >> @@ -344,7 +344,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t >> baudrate, >> >> /* Download rampatch file */ >> config.type = TLV_TYPE_PATCH; >> - if (soc_type == QCA_WCN3990) { >> + if (qca_is_wcn399x(soc_type)) { >> /* Firmware files to download are based on ROM version. >> * ROM version is derived from last two bytes of soc_ver. >> */ >> @@ -365,7 +365,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t >> baudrate, >> >> /* Download NVM configuration */ >> config.type = TLV_TYPE_NVM; >> - if (soc_type == QCA_WCN3990) >> + if (qca_is_wcn399x(soc_type)) >> snprintf(config.fwname, sizeof(config.fwname), >> "qca/crnv%02x.bin", rom_ver); >> else >> @@ -410,6 +410,12 @@ int qca_set_bdaddr(struct hci_dev *hdev, const >> bdaddr_t *bdaddr) >> } >> EXPORT_SYMBOL_GPL(qca_set_bdaddr); >> >> +bool qca_is_wcn399x(enum qca_btsoc_type soc_type) >> +{ >> + return ((soc_type == QCA_WCN3990) || (soc_type == QCA_WCN3998)); > > no () needed around soc_type = check. [Harish] - OK, will change it. > >> +} >> +EXPORT_SYMBOL_GPL(qca_is_wcn399x); >> + > > Why is this exported. Make this an inline function in btqca.h. [Harish] - This was used in btqca.c also to check the soc_type - if (soc_type == QCA_WCN3990) { >> + if (qca_is_wcn399x(soc_type)) { > >> MODULE_AUTHOR("Ben Young Tae Kim <ytkim@qca.qualcomm.com>"); >> MODULE_DESCRIPTION("Bluetooth support for Qualcomm Atheros family ver >> " VERSION); >> MODULE_VERSION(VERSION); >> diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h >> index 6fdc25d..0f68c9e7 100644 >> --- a/drivers/bluetooth/btqca.h >> +++ b/drivers/bluetooth/btqca.h >> @@ -132,7 +132,8 @@ enum qca_btsoc_type { >> QCA_INVALID = -1, >> QCA_AR3002, >> QCA_ROME, >> - QCA_WCN3990 >> + QCA_WCN3990, >> + QCA_WCN3998, >> }; >> >> #if IS_ENABLED(CONFIG_BT_QCA) >> @@ -142,6 +143,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t >> baudrate, >> enum qca_btsoc_type soc_type, u32 soc_ver); >> int qca_read_soc_version(struct hci_dev *hdev, u32 *soc_version); >> int qca_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr); >> +bool qca_is_wcn399x(enum qca_btsoc_type soc_type); >> #else >> >> static inline int qca_set_bdaddr_rome(struct hci_dev *hdev, const >> bdaddr_t *bdaddr) >> @@ -165,4 +167,8 @@ static inline int qca_set_bdaddr(struct hci_dev >> *hdev, const bdaddr_t *bdaddr) >> return -EOPNOTSUPP; >> } >> >> +static inline bool qca_is_wcn399x(enum qca_btsoc_type soc_type) >> +{ >> + return false; >> +} >> #endif >> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c >> index 7f75652..c53ee8d 100644 >> --- a/drivers/bluetooth/hci_qca.c >> +++ b/drivers/bluetooth/hci_qca.c >> @@ -521,7 +521,7 @@ static int qca_open(struct hci_uart *hu) >> if (hu->serdev) { >> >> qcadev = serdev_device_get_drvdata(hu->serdev); >> - if (qcadev->btsoc_type != QCA_WCN3990) { >> + if (!qca_is_wcn399x(qcadev->btsoc_type)) { >> gpiod_set_value_cansleep(qcadev->bt_en, 1); >> /* Controller needs time to bootup. */ >> msleep(150); >> @@ -629,7 +629,7 @@ static int qca_close(struct hci_uart *hu) >> >> if (hu->serdev) { >> qcadev = serdev_device_get_drvdata(hu->serdev); >> - if (qcadev->btsoc_type == QCA_WCN3990) >> + if (qca_is_wcn399x(qcadev->btsoc_type)) >> qca_power_shutdown(hu); >> else >> gpiod_set_value_cansleep(qcadev->bt_en, 0); >> @@ -1011,7 +1011,7 @@ static int qca_set_baudrate(struct hci_dev >> *hdev, uint8_t baudrate) >> msecs_to_jiffies(CMD_TRANS_TIMEOUT_MS)); >> >> /* Give the controller time to process the request */ >> - if (qca_soc_type(hu) == QCA_WCN3990) >> + if (qca_is_wcn399x(qca_soc_type(hu))) >> msleep(10); >> else >> msleep(300); >> @@ -1087,7 +1087,7 @@ static unsigned int qca_get_speed(struct >> hci_uart *hu, >> >> static int qca_check_speeds(struct hci_uart *hu) >> { >> - if (qca_soc_type(hu) == QCA_WCN3990) { >> + if (qca_is_wcn399x(qca_soc_type(hu))) { >> if (!qca_get_speed(hu, QCA_INIT_SPEED) && >> !qca_get_speed(hu, QCA_OPER_SPEED)) >> return -EINVAL; >> @@ -1119,7 +1119,7 @@ static int qca_set_speed(struct hci_uart *hu, >> enum qca_speed_type speed_type) >> /* Disable flow control for wcn3990 to deassert RTS while >> * changing the baudrate of chip and host. >> */ >> - if (soc_type == QCA_WCN3990) >> + if (qca_is_wcn399x(soc_type)) >> hci_uart_set_flow_control(hu, true); >> >> qca_baudrate = qca_get_baudrate_value(speed); >> @@ -1131,7 +1131,7 @@ static int qca_set_speed(struct hci_uart *hu, >> enum qca_speed_type speed_type) >> host_set_baudrate(hu, speed); >> >> error: >> - if (soc_type == QCA_WCN3990) >> + if (qca_is_wcn399x(soc_type)) >> hci_uart_set_flow_control(hu, false); >> } >> >> @@ -1204,7 +1204,7 @@ static int qca_setup(struct hci_uart *hu) >> /* Patch downloading has to be done without IBS mode */ >> clear_bit(STATE_IN_BAND_SLEEP_ENABLED, &qca->flags); >> >> - if (soc_type == QCA_WCN3990) { >> + if (qca_is_wcn399x(soc_type)) { >> bt_dev_info(hdev, "setting up wcn3990"); >> >> /* Enable NON_PERSISTENT_SETUP QUIRK to ensure to execute >> @@ -1235,7 +1235,7 @@ static int qca_setup(struct hci_uart *hu) >> qca_baudrate = qca_get_baudrate_value(speed); >> } >> >> - if (soc_type != QCA_WCN3990) { >> + if (!qca_is_wcn399x(soc_type)) { >> /* Get QCA version information */ >> ret = qca_read_soc_version(hdev, &soc_ver); >> if (ret) >> @@ -1260,7 +1260,7 @@ static int qca_setup(struct hci_uart *hu) >> } >> >> /* Setup bdaddr */ >> - if (soc_type == QCA_WCN3990) >> + if (qca_is_wcn399x(soc_type)) >> hu->hdev->set_bdaddr = qca_set_bdaddr; >> else >> hu->hdev->set_bdaddr = qca_set_bdaddr_rome; >> @@ -1283,7 +1283,7 @@ static int qca_setup(struct hci_uart *hu) >> .dequeue = qca_dequeue, >> }; >> >> -static const struct qca_vreg_data qca_soc_data = { >> +static const struct qca_vreg_data qca_soc_data_wcn3990 = { >> .soc_type = QCA_WCN3990, >> .vregs = (struct qca_vreg []) { >> { "vddio", 1800000, 1900000, 15000 }, >> @@ -1294,6 +1294,17 @@ static int qca_setup(struct hci_uart *hu) >> .num_vregs = 4, >> }; >> >> +static const struct qca_vreg_data qca_soc_data_wcn3998 = { >> + .soc_type = QCA_WCN3998, >> + .vregs = (struct qca_vreg []) { >> + { "vddio", 1800000, 1900000, 10000 }, >> + { "vddxo", 1800000, 1900000, 80000 }, >> + { "vddrf", 1300000, 1352000, 300000 }, >> + { "vddch0", 3300000, 3300000, 450000 }, >> + }, >> + .num_vregs = 4, >> +}; >> + >> static void qca_power_shutdown(struct hci_uart *hu) >> { >> struct qca_data *qca = hu->priv; >> @@ -1427,8 +1438,8 @@ static int qca_serdev_probe(struct serdev_device >> *serdev) >> qcadev->serdev_hu.serdev = serdev; >> data = of_device_get_match_data(&serdev->dev); >> serdev_device_set_drvdata(serdev, qcadev); >> - if (data && data->soc_type == QCA_WCN3990) { >> - qcadev->btsoc_type = QCA_WCN3990; >> + if (data && qca_is_wcn399x(data->soc_type)) { >> + qcadev->btsoc_type = data->soc_type; >> qcadev->bt_power = devm_kzalloc(&serdev->dev, >> sizeof(struct qca_power), >> GFP_KERNEL); >> @@ -1492,7 +1503,7 @@ static void qca_serdev_remove(struct >> serdev_device *serdev) >> { >> struct qca_serdev *qcadev = serdev_device_get_drvdata(serdev); >> >> - if (qcadev->btsoc_type == QCA_WCN3990) >> + if (qca_is_wcn399x(qcadev->btsoc_type)) >> qca_power_shutdown(&qcadev->serdev_hu); >> else >> clk_disable_unprepare(qcadev->susclk); >> @@ -1502,7 +1513,8 @@ static void qca_serdev_remove(struct >> serdev_device *serdev) >> >> static const struct of_device_id qca_bluetooth_of_match[] = { >> { .compatible = "qcom,qca6174-bt" }, >> - { .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data}, >> + { .compatible = "qcom,wcn3990-bt", .data = &qca_soc_data_wcn3990}, >> + { .compatible = "qcom,wcn3998-bt", .data = &qca_soc_data_wcn3998}, >> { /* sentinel */ } >> }; >> MODULE_DEVICE_TABLE(of, qca_bluetooth_of_match); > > Regards > > Marcel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v7 1/2] Bluetooth: hci_qca: Added support for WCN3998 2019-04-25 13:40 ` Harish Bandi @ 2019-04-25 16:46 ` Matthias Kaehlcke 0 siblings, 0 replies; 8+ messages in thread From: Matthias Kaehlcke @ 2019-04-25 16:46 UTC (permalink / raw) To: Harish Bandi Cc: Marcel Holtmann, Johan Hedberg, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm, bgodavar, anubhavg, devicetree, mark.rutland, robh+dt On Thu, Apr 25, 2019 at 07:10:51PM +0530, Harish Bandi wrote: > Hi Marcel, > > On 2019-04-25 18:17, Marcel Holtmann wrote: > > Hi Harish, > > > > > Added new compatible for WCN3998 and corresponding voltage > > > and current values to WCN3998 compatible. > > > Changed driver code to support WCN3998 > > > > > > Signed-off-by: Harish Bandi <c-hbandi@codeaurora.org> > > > Reviewed-by: Matthias Kaehlcke <mka@chromium.org> > > > --- > > > Changes in V7: > > > - Initialized rom_ver to 0 to fix compiler warning > > > --- > > > drivers/bluetooth/btqca.c | 12 +++++++++--- > > > drivers/bluetooth/btqca.h | 8 +++++++- > > > drivers/bluetooth/hci_qca.c | 40 > > > ++++++++++++++++++++++++++-------------- > > > 3 files changed, 42 insertions(+), 18 deletions(-) > > > > > > diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c > > > index 6122685..495a52f 100644 > > > --- a/drivers/bluetooth/btqca.c > > > +++ b/drivers/bluetooth/btqca.c > > > @@ -336,7 +336,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t > > > baudrate, > > > { > > > struct rome_config config; > > > int err; > > > - u8 rom_ver; > > > + u8 rom_ver = 0; > > > > what is this change for? > [Harish] - kbuild test robot gave compiler warning. So initialized. > drivers/bluetooth/btqca.c:369:3: warning: 'rom_ver' may be used > uninitialized in this function [-Wmaybe-uninitialized] > > > > > > bt_dev_dbg(hdev, "QCA setup on UART"); > > > > > > @@ -344,7 +344,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t > > > baudrate, > > > > > > /* Download rampatch file */ > > > config.type = TLV_TYPE_PATCH; > > > - if (soc_type == QCA_WCN3990) { > > > + if (qca_is_wcn399x(soc_type)) { > > > /* Firmware files to download are based on ROM version. > > > * ROM version is derived from last two bytes of soc_ver. > > > */ > > > @@ -365,7 +365,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t > > > baudrate, > > > > > > /* Download NVM configuration */ > > > config.type = TLV_TYPE_NVM; > > > - if (soc_type == QCA_WCN3990) > > > + if (qca_is_wcn399x(soc_type)) > > > snprintf(config.fwname, sizeof(config.fwname), > > > "qca/crnv%02x.bin", rom_ver); > > > else > > > @@ -410,6 +410,12 @@ int qca_set_bdaddr(struct hci_dev *hdev, const > > > bdaddr_t *bdaddr) > > > } > > > EXPORT_SYMBOL_GPL(qca_set_bdaddr); > > > > > > +bool qca_is_wcn399x(enum qca_btsoc_type soc_type) > > > +{ > > > + return ((soc_type == QCA_WCN3990) || (soc_type == QCA_WCN3998)); > > > > no () needed around soc_type = check. > > [Harish] - OK, will change it. > > > > > +} > > > +EXPORT_SYMBOL_GPL(qca_is_wcn399x); > > > + > > > > Why is this exported. Make this an inline function in btqca.h. > [Harish] - This was used in btqca.c also to check the soc_type true, but this is still possible with an inline function in btqca.h. ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v7 2/2] dt-bindings: net: bluetooth: Add device tree bindings for QTI chip WCN3998 2019-04-25 12:13 [PATCH v7 0/2] Enable Bluetooth functionality for WCN3998 Harish Bandi 2019-04-25 12:13 ` [PATCH v7 1/2] Bluetooth: hci_qca: Added support " Harish Bandi @ 2019-04-25 12:13 ` Harish Bandi 2019-04-25 12:43 ` Marcel Holtmann 1 sibling, 1 reply; 8+ messages in thread From: Harish Bandi @ 2019-04-25 12:13 UTC (permalink / raw) To: marcel, johan.hedberg Cc: mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm, bgodavar, anubhavg, devicetree, mark.rutland, robh+dt, Harish Bandi Add compatible string for the Qualcomm WCN3998 Bluetooth controller Signed-off-by: Harish Bandi <c-hbandi@codeaurora.org> --- Changes in V6: - Changed Commit text --- Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt index 824c0e2..7ef6118 100644 --- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt @@ -11,20 +11,21 @@ Required properties: - compatible: should contain one of the following: * "qcom,qca6174-bt" * "qcom,wcn3990-bt" + * "qcom,wcn3998-bt" Optional properties for compatible string qcom,qca6174-bt: - enable-gpios: gpio specifier used to enable chip - clocks: clock provided to the controller (SUSCLK_32KHZ) -Required properties for compatible string qcom,wcn3990-bt: +Required properties for compatible string qcom,wcn399x-bt: - vddio-supply: VDD_IO supply regulator handle. - vddxo-supply: VDD_XO supply regulator handle. - vddrf-supply: VDD_RF supply regulator handle. - vddch0-supply: VDD_CH0 supply regulator handle. -Optional properties for compatible string qcom,wcn3990-bt: +Optional properties for compatible string qcom,wcn399x-bt: - max-speed: see Documentation/devicetree/bindings/serial/slave-device.txt -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v7 2/2] dt-bindings: net: bluetooth: Add device tree bindings for QTI chip WCN3998 2019-04-25 12:13 ` [PATCH v7 2/2] dt-bindings: net: bluetooth: Add device tree bindings for QTI chip WCN3998 Harish Bandi @ 2019-04-25 12:43 ` Marcel Holtmann 2019-04-25 18:47 ` Rob Herring 0 siblings, 1 reply; 8+ messages in thread From: Marcel Holtmann @ 2019-04-25 12:43 UTC (permalink / raw) To: Harish Bandi Cc: Johan Hedberg, mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm, bgodavar, anubhavg, devicetree, mark.rutland, robh+dt Hi Harish, > Add compatible string for the Qualcomm WCN3998 Bluetooth controller > > Signed-off-by: Harish Bandi <c-hbandi@codeaurora.org> > --- > Changes in V6: > - Changed Commit text > --- > Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt > index 824c0e2..7ef6118 100644 > --- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt > +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt > @@ -11,20 +11,21 @@ Required properties: > - compatible: should contain one of the following: > * "qcom,qca6174-bt" > * "qcom,wcn3990-bt" > + * "qcom,wcn3998-bt" > > Optional properties for compatible string qcom,qca6174-bt: > > - enable-gpios: gpio specifier used to enable chip > - clocks: clock provided to the controller (SUSCLK_32KHZ) > > -Required properties for compatible string qcom,wcn3990-bt: > +Required properties for compatible string qcom,wcn399x-bt: > > - vddio-supply: VDD_IO supply regulator handle. > - vddxo-supply: VDD_XO supply regulator handle. > - vddrf-supply: VDD_RF supply regulator handle. > - vddch0-supply: VDD_CH0 supply regulator handle. > > -Optional properties for compatible string qcom,wcn3990-bt: > +Optional properties for compatible string qcom,wcn399x-bt: wasn’t the conclusion to _not_ use x things in compatible strings? I would personally prefer you list these two compatible strings separately. However I let Rob comment and Ack this if this is fine for him. Regards Marcel ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v7 2/2] dt-bindings: net: bluetooth: Add device tree bindings for QTI chip WCN3998 2019-04-25 12:43 ` Marcel Holtmann @ 2019-04-25 18:47 ` Rob Herring 0 siblings, 0 replies; 8+ messages in thread From: Rob Herring @ 2019-04-25 18:47 UTC (permalink / raw) To: Marcel Holtmann Cc: Harish Bandi, Johan Hedberg, mka, linux-kernel, linux-bluetooth, hemantg, linux-arm-msm, bgodavar, anubhavg, devicetree, mark.rutland On Thu, Apr 25, 2019 at 02:43:56PM +0200, Marcel Holtmann wrote: > Hi Harish, > > > Add compatible string for the Qualcomm WCN3998 Bluetooth controller > > > > Signed-off-by: Harish Bandi <c-hbandi@codeaurora.org> > > --- > > Changes in V6: > > - Changed Commit text > > --- > > Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt > > index 824c0e2..7ef6118 100644 > > --- a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt > > +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt > > @@ -11,20 +11,21 @@ Required properties: > > - compatible: should contain one of the following: > > * "qcom,qca6174-bt" > > * "qcom,wcn3990-bt" > > + * "qcom,wcn3998-bt" > > > > Optional properties for compatible string qcom,qca6174-bt: > > > > - enable-gpios: gpio specifier used to enable chip > > - clocks: clock provided to the controller (SUSCLK_32KHZ) > > > > -Required properties for compatible string qcom,wcn3990-bt: > > +Required properties for compatible string qcom,wcn399x-bt: > > > > - vddio-supply: VDD_IO supply regulator handle. > > - vddxo-supply: VDD_XO supply regulator handle. > > - vddrf-supply: VDD_RF supply regulator handle. > > - vddch0-supply: VDD_CH0 supply regulator handle. > > > > -Optional properties for compatible string qcom,wcn3990-bt: > > +Optional properties for compatible string qcom,wcn399x-bt: > > wasn’t the conclusion to _not_ use x things in compatible strings? I would personally prefer you list these two compatible strings separately. However I let Rob comment and Ack this if this is fine for him. It's fine for me as it isn't the actual string used. Reviewed-by: Rob Herring <robh@kernel.org> Rob ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-04-25 18:47 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-25 12:13 [PATCH v7 0/2] Enable Bluetooth functionality for WCN3998 Harish Bandi 2019-04-25 12:13 ` [PATCH v7 1/2] Bluetooth: hci_qca: Added support " Harish Bandi 2019-04-25 12:47 ` Marcel Holtmann 2019-04-25 13:40 ` Harish Bandi 2019-04-25 16:46 ` Matthias Kaehlcke 2019-04-25 12:13 ` [PATCH v7 2/2] dt-bindings: net: bluetooth: Add device tree bindings for QTI chip WCN3998 Harish Bandi 2019-04-25 12:43 ` Marcel Holtmann 2019-04-25 18:47 ` Rob Herring
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).