Received: by 2002:a05:6358:f14:b0:e5:3b68:ec04 with SMTP id b20csp2370675rwj; Mon, 19 Dec 2022 03:46:43 -0800 (PST) X-Google-Smtp-Source: AA0mqf4j439ZHaXFgUUBOQrz5qrKtceXuVFKSYV401mUOn5sIu4evv+MkEnyvwspHR4KNOb/psSa X-Received: by 2002:a17:906:f10b:b0:7c1:727c:5f70 with SMTP id gv11-20020a170906f10b00b007c1727c5f70mr23319964ejb.46.1671450402725; Mon, 19 Dec 2022 03:46:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1671450402; cv=none; d=google.com; s=arc-20160816; b=v3l1v/33HiYUW1BxMXP8iCcBKDscg+5NAwOwhMurlfuWgYJ+ngOVQJejP+6Pw31x7y PzvZyTe0mBIDLSsWj2zFBQPTbS15uaRwamwD0Yf0/p/GpR1h6riMtul8lLQ6Y1hcYlL2 9j7pTlUwJdV1+m47DNTLDBzgLyaOrEXuYIdPse9fG3bVmpZ6LGoCap5bvPhkuqy8XpSh 0k2mKExjMpEsbtfLIYGPaMFU2Dy7JxveSkmkA34pZH39/kd11BRQTxH+FAvKE78b+OiN GYCgvZbhQOpqqEWeriC1vWP1m6XPOWMYKtD2z5xp66md29WWobbc1k2ZQNg1izP4As01 GZjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version; bh=yQpEeWtP1yQImKf3ueAX8L28nUFjw+hsTEAk/MYXWx0=; b=py7tBN6fJx/PweTej9KO2FQrFlYsK8AM7zxYbJAqVARwN2D827vaMmOp3KCVHIcybn OXhhRDBEnngDmAXX4z1UrqTcORQ+yextiyzbBhiQaj3v4FjnwlmEsDvTEaFUgCUNo5RD Z+pasu5yXj+czV3ok0lXgpgBAtBg/XjJbBbw9vFMQQ97jitlwO7Ll2Q6drrv+GlKPgaG MwgdTdN8q8MXsRw5cHmga5S3Hxr5fdEiGLAP6c91c/XvGkGVw4SVY9mXyYgpPi0ekUnV 6fsMyiJdx0RNBYDHFFOI1H7AlaLOm0T3LBPm/EPB0mBa3pIArY0WHinIAc3IaYLZD72W 6DrA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s6-20020a05640217c600b0046e635ee69esi7709389edy.210.2022.12.19.03.46.18; Mon, 19 Dec 2022 03:46:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231969AbiLSLmK convert rfc822-to-8bit (ORCPT + 99 others); Mon, 19 Dec 2022 06:42:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231197AbiLSLmJ (ORCPT ); Mon, 19 Dec 2022 06:42:09 -0500 Received: from mail.holtmann.org (coyote.holtmann.net [212.227.132.17]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id C661660E8; Mon, 19 Dec 2022 03:42:04 -0800 (PST) Received: from smtpclient.apple (p4fefcc21.dip0.t-ipconnect.de [79.239.204.33]) by mail.holtmann.org (Postfix) with ESMTPSA id BEF6ECECF2; Mon, 19 Dec 2022 12:42:03 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\)) Subject: Re: [PATCH v5] Bluetooth: Add hci_nxp to hci_uart module to support NXP BT chipsets From: Marcel Holtmann In-Reply-To: Date: Mon, 19 Dec 2022 12:42:03 +0100 Cc: Neeraj Sanjay Kale , Johan Hedberg , Paul Menzel , amitkumar.karwar@nxp.com, rohit.fule@nxp.com, sherry.sun@nxp.com, LKML , linux-bluetooth@vger.kernel.org Content-Transfer-Encoding: 8BIT Message-Id: <5742801D-881A-45BC-A8A7-28D694179D8E@holtmann.org> References: <20221216094350.1121354-1-neeraj.sanjaykale@nxp.com> <85D2AE3F-97A5-4C88-8FC4-1684F3FD4438@holtmann.org> To: Luiz Augusto von Dentz X-Mailer: Apple Mail (2.3696.120.41.1.1) X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Hi Luiz, >>> Add hci_nxp to the hci_uart module which adds support for the NXP BT >>> chips. This driver has Power Save feature that will put the NXP bluetooth >>> chip into sleep state, whenever there is no activity for certain duration >>> of time (2000ms), and will be woken up when any activity is to be >>> initiated. >>> >>> The Power Save feature can be configured with the following set >>> of commands (optional): >>> hcitool -i hci0 cmd 3F 23 02 00 00 (enable Power Save) >>> hcitool -i hci0 cmd 3F 23 03 00 00 (disable Power Save) >>> where, >>> OGF = 0x3F (vendor specific command) >>> OCF = 0x23 (command to set Power Save state) >>> arg[0] = 0x02 (disable Power Save) >>> arg[0] = 0x03 (enable Power Save) >>> arg[1,2,...] = XX (don't care) >>> >>> The sleep/wake-up source can be configured with the following set >>> of commands (optional): >>> hcitool -i hci0 cmd 3F 53 03 14 01 FF (set UART break method) >>> hcitool -i hci0 cmd 3F 53 03 14 00 FF (set UART DSR method) >>> where, >>> OGF = 0x3F (vendor specific command) >>> OCF = 0x53 (command to set sleep and wake-up source) >>> arg[0] = 0x00 (Chip to host method NONE) >>> arg[0] = 0x01 (Chip to host method UART DTR) >>> arg[0] = 0x02 (Chip to host method UART BREAK) >>> arg[0] = 0x03 (Chip to host method GPIO) >>> arg[1] = 0x14 (Chip to host GPIO[20] if arg[0] is 0x03, else 0xFF) >>> arg[2] = 0x00 (Host to chip method UART DSR) >>> arg[2] = 0x01 (Host to chip method UART BREAK) >>> arg[3] = 0xXX (Reserved for future use) >>> >>> By default, the hci_nxp sets power save enable, chip to host wake-up >>> source as GPIO and host to chip sleep and wake-up source as UART >>> break during driver initialization, by sending the respective >>> commands to the chip. >>> >>> Signed-off-by: Neeraj Sanjay Kale >>> --- >>> v2: Changed the subject/summary lines and added more details in the >>> description. (Paul Menzel) >>> v3: Made internal functions static, optimized the code, added few >>> comments. (Sherry Sun) >>> v4: Reworked entire code to send vendor commands cmd23 and cmd53 by >>> using __hci_cmd_sync. (Luiz Augusto von Dentz) >>> v5: Used hci_command_hdr and combined OGF+OCF into a single opcode. >>> (Luiz Augusto von Dentz) >>> --- >>> MAINTAINERS | 6 + >>> drivers/bluetooth/Kconfig | 10 + >>> drivers/bluetooth/Makefile | 1 + >>> drivers/bluetooth/hci_ldisc.c | 6 + >>> drivers/bluetooth/hci_nxp.c | 592 ++++++++++++++++++++++++++++++++++ >>> drivers/bluetooth/hci_nxp.h | 94 ++++++ >>> drivers/bluetooth/hci_uart.h | 8 +- >>> 7 files changed, 716 insertions(+), 1 deletion(-) >>> create mode 100644 drivers/bluetooth/hci_nxp.c >>> create mode 100644 drivers/bluetooth/hci_nxp.h >> >> so this is a clear NAK. Add this as serdev driver and not hook further into the >> mess that is the HCI line discipline. > > I wonder if we should make it more clear somehow, perhaps include a > text on the likes of BT_HCIUART that is deprecated and new drivers > shall use BT_HCIUART_SERDEV instead. not even that. They need to be separate drivers. A long time ago I posted the skeleton for btuart.ko and bt3wire.ko and that is where this has to go. Regards Marcel