From patchwork Thu Jan 26 07:43:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Francesco Dolcini X-Patchwork-Id: 648773 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99252C54EED for ; Thu, 26 Jan 2023 07:45:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234220AbjAZHpJ (ORCPT ); Thu, 26 Jan 2023 02:45:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234056AbjAZHpH (ORCPT ); Thu, 26 Jan 2023 02:45:07 -0500 Received: from smtp-out-06.comm2000.it (smtp-out-06.comm2000.it [212.97.32.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E45D274A2; Wed, 25 Jan 2023 23:45:04 -0800 (PST) Received: from francesco-nb.pivistrello.it (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: francesco@dolcini.it) by smtp-out-06.comm2000.it (Postfix) with ESMTPSA id F10D5561032; Thu, 26 Jan 2023 08:44:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mailserver.it; s=mailsrv; t=1674719103; bh=I+9f0YVsbAUgKFYQNUMCRXxdRYmo53sGx59fILDVOaw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=uyB/p84YSKtbvLl8XzRJ5OVpSOulMMZVjTwWbtuIXswsNWByb3uFdJpekJDCGRmbT lA8GPQAeq/H3cfpmjK47SqO1OYOqLUpW1FxUSutcU3MUhoG2Ty1eApZhFuMjJJc0TZ +mfGtTYcbpSdqHl1jmBN23rZ3e+wcxPBWkUYRC7teiDkIJ3rk7MYSHVMaoakz3zXH/ u+y+iwnIV/3Bn4EBqaQhzA+QBlYDJgEUUCuU/v/LoKqD4cyrLXGEuFoWGR27k/IX/M t2H/LQzhL4v7SB9ZQ/d7uT10ch23Oj/LK0A3N2Du2TqHRJRjpS+8riZybfeo9kkWgP xLd8kX4cafnYw== From: Francesco Dolcini To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, Marcel Holtmann , Luiz Augusto von Dentz Cc: Stefan Eichenberger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Johan Hedberg , Sascha Hauer , Krzysztof Kozlowski , Francesco Dolcini Subject: [PATCH v2 1/5] dt-bindings: bluetooth: marvell: add 88W8997 Date: Thu, 26 Jan 2023 08:43:52 +0100 Message-Id: <20230126074356.431306-2-francesco@dolcini.it> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230126074356.431306-1-francesco@dolcini.it> References: <20230126074356.431306-1-francesco@dolcini.it> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Stefan Eichenberger Update the documentation with the device tree binding for the Marvell 88W8997 bluetooth device. Signed-off-by: Stefan Eichenberger Acked-by: Krzysztof Kozlowski Signed-off-by: Francesco Dolcini --- v2: - removed redundant "DT binding" from commit message title - add acked-by Krzysztof --- Documentation/devicetree/bindings/net/marvell-bluetooth.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/net/marvell-bluetooth.yaml b/Documentation/devicetree/bindings/net/marvell-bluetooth.yaml index 309ef21a1e37..83b64ed730f5 100644 --- a/Documentation/devicetree/bindings/net/marvell-bluetooth.yaml +++ b/Documentation/devicetree/bindings/net/marvell-bluetooth.yaml @@ -15,7 +15,9 @@ maintainers: properties: compatible: - const: mrvl,88w8897 + enum: + - mrvl,88w8897 + - mrvl,88w8997 required: - compatible From patchwork Thu Jan 26 07:43:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Francesco Dolcini X-Patchwork-Id: 647338 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A2CB5C61DA0 for ; Thu, 26 Jan 2023 07:45:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234999AbjAZHpM (ORCPT ); Thu, 26 Jan 2023 02:45:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57870 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234723AbjAZHpL (ORCPT ); Thu, 26 Jan 2023 02:45:11 -0500 Received: from smtp-out-06.comm2000.it (smtp-out-06.comm2000.it [212.97.32.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EC401E5F8; Wed, 25 Jan 2023 23:45:10 -0800 (PST) Received: from francesco-nb.pivistrello.it (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: francesco@dolcini.it) by smtp-out-06.comm2000.it (Postfix) with ESMTPSA id 6954956120E; Thu, 26 Jan 2023 08:45:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mailserver.it; s=mailsrv; t=1674719109; bh=AcuDn/4mWlB8IF8cO+Min+OObHg8XcxrIBL9Fg4uitM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=0NawDJc6T3hiQeotNnTwdGWgHHfUf6nd7aQkITUaggeki+qeC1TtdEm/5DbABaYWi DLKlXSzP12CB9atu9v9i8TZvUsljq03VvJuvJF+H5ojTSUfhzyEdu/ykSfVOJCBzkT QaS83AZgYzuhQks7Fh66zkzxZ7Uv2nbpVU4vJd/dNS6SMfTmLNYZecq+zVOCjrh508 RthFp3SkAWdKW2wRvDolij6AZDx207iktwqxeBgLbV94FFggGc3l06KR8R8AkuqsBj dBQ97wIuT1QL966LDW2puKHtmIOiosTQkqpPGRS1nrXlnhU4v7SOvlCMaQeToFBfR2 X87wpnfijFxQA== From: Francesco Dolcini To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, Marcel Holtmann , Luiz Augusto von Dentz Cc: Stefan Eichenberger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Johan Hedberg , Sascha Hauer , Francesco Dolcini Subject: [PATCH v2 2/5] dt-bindings: bluetooth: marvell: add max-speed property Date: Thu, 26 Jan 2023 08:43:53 +0100 Message-Id: <20230126074356.431306-3-francesco@dolcini.it> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230126074356.431306-1-francesco@dolcini.it> References: <20230126074356.431306-1-francesco@dolcini.it> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Stefan Eichenberger The 88W8997 bluetooth module supports setting the max-speed property. Signed-off-by: Stefan Eichenberger Signed-off-by: Francesco Dolcini --- v2: fixed indentation --- .../bindings/net/marvell-bluetooth.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Documentation/devicetree/bindings/net/marvell-bluetooth.yaml b/Documentation/devicetree/bindings/net/marvell-bluetooth.yaml index 83b64ed730f5..516c63ad165a 100644 --- a/Documentation/devicetree/bindings/net/marvell-bluetooth.yaml +++ b/Documentation/devicetree/bindings/net/marvell-bluetooth.yaml @@ -19,9 +19,25 @@ properties: - mrvl,88w8897 - mrvl,88w8997 + max-speed: + description: see Documentation/devicetree/bindings/serial/serial.yaml + required: - compatible +allOf: + - if: + properties: + compatible: + contains: + const: mrvl,88w8997 + then: + properties: + max-speed: true + else: + properties: + max-speed: false + additionalProperties: false examples: From patchwork Thu Jan 26 07:43:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Francesco Dolcini X-Patchwork-Id: 648772 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72427C05027 for ; Thu, 26 Jan 2023 07:45:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235269AbjAZHpZ (ORCPT ); Thu, 26 Jan 2023 02:45:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235509AbjAZHpV (ORCPT ); Thu, 26 Jan 2023 02:45:21 -0500 Received: from smtp-out-06.comm2000.it (smtp-out-06.comm2000.it [212.97.32.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8B77266EDF; Wed, 25 Jan 2023 23:45:13 -0800 (PST) Received: from francesco-nb.pivistrello.it (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: francesco@dolcini.it) by smtp-out-06.comm2000.it (Postfix) with ESMTPSA id 1990F5612C2; Thu, 26 Jan 2023 08:45:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mailserver.it; s=mailsrv; t=1674719109; bh=4edNf8hDVsHhrnz0fKugX0626QqWgyq6YjRr6TulDJA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=uDMM+5xmu/TP/EZafXt69VRYkK3eQEOANozP4SUYP9qA7zeT3/sTfig1FmmNmdJcf F7LXFACB4eNswuaZFcs/mdPm1hGFt19dfKyrZ88x+V2+h4beHsgdxEvJa31PL6Trcj H6yfpd9NC1gl15Kb2Q5HNzQGHdy7wh9hy4RjhujbDU5z4KHpva5zMeYEm0WxhTr2Yp smUg8dltKGq8Yj7N5l0G+3YQAmzc95BSexmLy5deAiyyoZZdVZNxDN4eMmXJyXcFqg aLEFPkuAwNYb/B6JgG8jG7y7SqpujnHdnJDi+wGcfolhR4m3XWqIiZVIUVBF3/AFpg f7UCjiSriPs+Q== From: Francesco Dolcini To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, Marcel Holtmann , Luiz Augusto von Dentz Cc: Stefan Eichenberger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Johan Hedberg , Sascha Hauer , Francesco Dolcini Subject: [PATCH v2 3/5] Bluetooth: hci_mrvl: use maybe_unused macro for device tree ids Date: Thu, 26 Jan 2023 08:43:54 +0100 Message-Id: <20230126074356.431306-4-francesco@dolcini.it> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230126074356.431306-1-francesco@dolcini.it> References: <20230126074356.431306-1-francesco@dolcini.it> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Stefan Eichenberger Use the maybe_unused macro for the device tree ids instead of #ifdef CONFIG_OF. This makes it easier to add support for new devices. Signed-off-by: Stefan Eichenberger Signed-off-by: Francesco Dolcini --- v2: new patch --- drivers/bluetooth/hci_mrvl.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/bluetooth/hci_mrvl.c b/drivers/bluetooth/hci_mrvl.c index fbc3f7c3a5c7..eaa9c51cacfa 100644 --- a/drivers/bluetooth/hci_mrvl.c +++ b/drivers/bluetooth/hci_mrvl.c @@ -414,13 +414,11 @@ static void mrvl_serdev_remove(struct serdev_device *serdev) hci_uart_unregister_device(&mrvldev->hu); } -#ifdef CONFIG_OF -static const struct of_device_id mrvl_bluetooth_of_match[] = { +static const struct of_device_id __maybe_unused mrvl_bluetooth_of_match[] = { { .compatible = "mrvl,88w8897" }, { }, }; MODULE_DEVICE_TABLE(of, mrvl_bluetooth_of_match); -#endif static struct serdev_device_driver mrvl_serdev_driver = { .probe = mrvl_serdev_probe, From patchwork Thu Jan 26 07:43:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Francesco Dolcini X-Patchwork-Id: 647337 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 18496C54EED for ; Thu, 26 Jan 2023 07:45:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235633AbjAZHpp (ORCPT ); Thu, 26 Jan 2023 02:45:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235509AbjAZHpd (ORCPT ); Thu, 26 Jan 2023 02:45:33 -0500 Received: from smtp-out-06.comm2000.it (smtp-out-06.comm2000.it [212.97.32.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC7F0677A5; Wed, 25 Jan 2023 23:45:17 -0800 (PST) Received: from francesco-nb.pivistrello.it (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: francesco@dolcini.it) by smtp-out-06.comm2000.it (Postfix) with ESMTPSA id 730725612C9; Thu, 26 Jan 2023 08:45:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mailserver.it; s=mailsrv; t=1674719109; bh=1dGlE1zXTgLSwueDjSOPuoLrwN11J9TEBJkwtVkJcDg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=bcKTqbaBMVr8axqeFTypnV12jUh09CdIyp261MY4eXU57UA5cTIzZW6/yD1sjj9Ro Uu8FXWZiYiow+GxQLN2RMLWmJpj9eSXKI+demuUyylgx7LRH24/qYDpi7J/uW1C+kl JkxlqLv5GlYQPqEVS0X8RInY/RX6EkTtZWB9p0uMb4jTNhHnw1mqGIcOBAaclWEuFc 52Hu76fcPtYB1f5sGQDvJ/zJteNYVTY7qzBPbJbTqjIDjXCormaEFiZCG4DCC20eE7 Ib2pvfdqSrfI1xvTn1r/RsvR4rxxikh96E0wYHn8T85gA6Poe2Ev+PnSu8ppmlTXRL Io0ytOuIryHrw== From: Francesco Dolcini To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, Marcel Holtmann , Luiz Augusto von Dentz Cc: Stefan Eichenberger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Johan Hedberg , Sascha Hauer , Francesco Dolcini Subject: [PATCH v2 4/5] Bluetooth: hci_mrvl: Add serdev support for 88W8997 Date: Thu, 26 Jan 2023 08:43:55 +0100 Message-Id: <20230126074356.431306-5-francesco@dolcini.it> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230126074356.431306-1-francesco@dolcini.it> References: <20230126074356.431306-1-francesco@dolcini.it> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Stefan Eichenberger Add serdev support for the 88W8997 from NXP (previously Marvell). It includes support for changing the baud rate. The command to change the baud rate is taken from the user manual UM11483 Rev. 9 in section 7 (Bring-up of Bluetooth interfaces) from NXP. Signed-off-by: Stefan Eichenberger Signed-off-by: Francesco Dolcini --- v2: no changes --- drivers/bluetooth/hci_mrvl.c | 88 +++++++++++++++++++++++++++++++++--- 1 file changed, 81 insertions(+), 7 deletions(-) diff --git a/drivers/bluetooth/hci_mrvl.c b/drivers/bluetooth/hci_mrvl.c index eaa9c51cacfa..90f921cb2ac8 100644 --- a/drivers/bluetooth/hci_mrvl.c +++ b/drivers/bluetooth/hci_mrvl.c @@ -27,10 +27,12 @@ #define MRVL_ACK 0x5A #define MRVL_NAK 0xBF #define MRVL_RAW_DATA 0x1F +#define MRVL_SET_BAUDRATE 0xFC09 enum { STATE_CHIP_VER_PENDING, STATE_FW_REQ_PENDING, + STATE_FW_LOADED, }; struct mrvl_data { @@ -254,6 +256,14 @@ static int mrvl_recv(struct hci_uart *hu, const void *data, int count) if (!test_bit(HCI_UART_REGISTERED, &hu->flags)) return -EUNATCH; + /* We might receive some noise when there is no firmware loaded. Therefore, + * we drop data if the firmware is not loaded yet and if there is no fw load + * request pending. + */ + if (!test_bit(STATE_FW_REQ_PENDING, &mrvl->flags) && + !test_bit(STATE_FW_LOADED, &mrvl->flags)) + return count; + mrvl->rx_skb = h4_recv_buf(hu->hdev, mrvl->rx_skb, data, count, mrvl_recv_pkts, ARRAY_SIZE(mrvl_recv_pkts)); @@ -354,6 +364,7 @@ static int mrvl_load_firmware(struct hci_dev *hdev, const char *name) static int mrvl_setup(struct hci_uart *hu) { int err; + struct mrvl_data *mrvl = hu->priv; hci_uart_set_flow_control(hu, true); @@ -367,9 +378,9 @@ static int mrvl_setup(struct hci_uart *hu) hci_uart_wait_until_sent(hu); if (hu->serdev) - serdev_device_set_baudrate(hu->serdev, 3000000); + serdev_device_set_baudrate(hu->serdev, hu->oper_speed); else - hci_uart_set_baudrate(hu, 3000000); + hci_uart_set_baudrate(hu, hu->oper_speed); hci_uart_set_flow_control(hu, false); @@ -377,13 +388,56 @@ static int mrvl_setup(struct hci_uart *hu) if (err) return err; + set_bit(STATE_FW_LOADED, &mrvl->flags); + + return 0; +} + +static int mrvl_set_baudrate(struct hci_uart *hu, unsigned int speed) +{ + int err; + struct sk_buff *skb; + struct mrvl_data *mrvl = hu->priv; + __le32 speed_le = cpu_to_le32(speed); + + /* The firmware might be loaded by the Wifi driver over SDIO. We wait + * up to 10s for the CTS to go up. Afterward, we know that the firmware + * is ready. + */ + err = serdev_device_wait_for_cts(hu->serdev, true, 10000); + if (err) { + bt_dev_err(hu->hdev, "Wait for CTS failed with %d\n", err); + return err; + } + + set_bit(STATE_FW_LOADED, &mrvl->flags); + + skb = __hci_cmd_sync(hu->hdev, MRVL_SET_BAUDRATE, + sizeof(speed_le), &speed_le, + HCI_INIT_TIMEOUT); + if (IS_ERR(skb)) { + bt_dev_err(hu->hdev, "send command failed: %ld", PTR_ERR(skb)); + return PTR_ERR(skb); + } + kfree_skb(skb); + + serdev_device_set_baudrate(hu->serdev, speed); + + /* We forcefully have to send a command to the bluetooth module so that + * the driver detects it after a baudrate change. This is foreseen by + * hci_serdev by setting HCI_UART_VND_DETECT which then causes a dummy + * local version read. + */ + set_bit(HCI_UART_VND_DETECT, &hu->hdev_flags); + return 0; } -static const struct hci_uart_proto mrvl_proto = { +static const struct hci_uart_proto mrvl_proto_8897 = { .id = HCI_UART_MRVL, .name = "Marvell", .init_speed = 115200, + .oper_speed = 3000000, .open = mrvl_open, .close = mrvl_close, .flush = mrvl_flush, @@ -393,18 +447,37 @@ static const struct hci_uart_proto mrvl_proto = { .dequeue = mrvl_dequeue, }; +static const struct hci_uart_proto mrvl_proto_8997 = { + .id = HCI_UART_MRVL, + .name = "Marvell 8997", + .init_speed = 115200, + .oper_speed = 3000000, + .open = mrvl_open, + .close = mrvl_close, + .flush = mrvl_flush, + .set_baudrate = mrvl_set_baudrate, + .recv = mrvl_recv, + .enqueue = mrvl_enqueue, + .dequeue = mrvl_dequeue, +}; + static int mrvl_serdev_probe(struct serdev_device *serdev) { struct mrvl_serdev *mrvldev; + const struct hci_uart_proto *mrvl_proto = device_get_match_data(&serdev->dev); mrvldev = devm_kzalloc(&serdev->dev, sizeof(*mrvldev), GFP_KERNEL); if (!mrvldev) return -ENOMEM; + mrvldev->hu.oper_speed = mrvl_proto->oper_speed; + if (mrvl_proto->set_baudrate) + of_property_read_u32(serdev->dev.of_node, "max-speed", &mrvldev->hu.oper_speed); + mrvldev->hu.serdev = serdev; serdev_device_set_drvdata(serdev, mrvldev); - return hci_uart_register_device(&mrvldev->hu, &mrvl_proto); + return hci_uart_register_device(&mrvldev->hu, mrvl_proto); } static void mrvl_serdev_remove(struct serdev_device *serdev) @@ -415,7 +488,8 @@ static void mrvl_serdev_remove(struct serdev_device *serdev) } static const struct of_device_id __maybe_unused mrvl_bluetooth_of_match[] = { - { .compatible = "mrvl,88w8897" }, + { .compatible = "mrvl,88w8897", .data = &mrvl_proto_8897}, + { .compatible = "mrvl,88w8997", .data = &mrvl_proto_8997}, { }, }; MODULE_DEVICE_TABLE(of, mrvl_bluetooth_of_match); @@ -433,12 +507,12 @@ int __init mrvl_init(void) { serdev_device_driver_register(&mrvl_serdev_driver); - return hci_uart_register_proto(&mrvl_proto); + return hci_uart_register_proto(&mrvl_proto_8897); } int __exit mrvl_deinit(void) { serdev_device_driver_unregister(&mrvl_serdev_driver); - return hci_uart_unregister_proto(&mrvl_proto); + return hci_uart_unregister_proto(&mrvl_proto_8897); } From patchwork Thu Jan 26 07:43:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Francesco Dolcini X-Patchwork-Id: 648771 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3B42FC54E94 for ; Thu, 26 Jan 2023 07:46:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236104AbjAZHqJ (ORCPT ); Thu, 26 Jan 2023 02:46:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236130AbjAZHpv (ORCPT ); Thu, 26 Jan 2023 02:45:51 -0500 Received: from smtp-out-06.comm2000.it (smtp-out-06.comm2000.it [212.97.32.74]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8529169B1B; Wed, 25 Jan 2023 23:45:26 -0800 (PST) Received: from francesco-nb.pivistrello.it (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: francesco@dolcini.it) by smtp-out-06.comm2000.it (Postfix) with ESMTPSA id D51BC561372; Thu, 26 Jan 2023 08:45:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mailserver.it; s=mailsrv; t=1674719110; bh=Y9XCnAPij17MA+QoBNd8FvPcBvFaxXeiz+vHwwOCDWE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=I2CYUxZwZ+wcSRyagmyhnstP4jB889U8C2lqZHpElTSvXWVR1/M7WQiK0ZxYc0UKq 0LMoyg4QPXsFwbl4KGpeTUvIguB6XcOlKh/hMUzofuiaMrmsxmuQZnNJXaMIoKd/XM oI4pq0Qa6uQI24787uklIx/aJQ5uwuyYfM5YejbEBGFD2NKqOYJobBaBYLPNIXTZXu 4d4pVwWCZNAewoeChn75KpnBz32Lu2jtDQ3zieRArOSZOEmBR/ie3E7MbDgN04jfdc xh/RqctVwlWC+hcSFFKwoH40lFg8psglNFENlygH5e3aTDy7+Ars85MMWm2vy460W/ Y11hPaXaXkH9A== From: Francesco Dolcini To: netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, Marcel Holtmann , Luiz Augusto von Dentz , linux-arm-kernel@lists.infradead.org, Shawn Guo Cc: Stefan Eichenberger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Johan Hedberg , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Francesco Dolcini Subject: [PATCH v2 5/5] arm64: dts: imx8mp-verdin: add 88W8997 serdev to uart4 Date: Thu, 26 Jan 2023 08:43:56 +0100 Message-Id: <20230126074356.431306-6-francesco@dolcini.it> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230126074356.431306-1-francesco@dolcini.it> References: <20230126074356.431306-1-francesco@dolcini.it> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org From: Stefan Eichenberger Use the serdev feature to load the driver for the 88W8997 bluetooth driver. Signed-off-by: Stefan Eichenberger Signed-off-by: Francesco Dolcini --- v2: no changes --- arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi.dtsi | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi.dtsi index 36289c175e6e..ef94f9a57e20 100644 --- a/arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi.dtsi +++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi.dtsi @@ -65,6 +65,11 @@ &uart4 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_bt_uart>; status = "okay"; + + bluetooth { + compatible = "mrvl,88w8997"; + max-speed = <921600>; + }; }; /* On-module Wi-Fi */