On Mon, Jan 30, 2023 at 11:35:04PM +0530, Neeraj Sanjay Kale wrote: > This adds a driver based on serdev driver for the NXP BT serial > protocol based on running H:4, which can enable the built-in > Bluetooth device inside a generic NXP BT chip. > > This driver has Power Save feature that will put the chip into > sleep state whenever there is no activity for 2000ms, and will > be woken up when any activity is to be initiated. > > This driver enables the power save feature by default by sending > the vendor specific commands to the chip during setup. > > During setup, the driver is capable of validating correct chip > is attached to the host based on the compatibility parameter > from DT and chip's unique bootloader signature, and download > firmware. > > Signed-off-by: Neeraj Sanjay Kale <neeraj.sanjaykale@xxxxxxx> > --- > v2: Removed conf file support and added static data for each chip based > on compatibility devices mentioned in DT bindings. Handled potential > memory leaks and null pointer dereference issues, simplified FW download > feature, handled byte-order and few cosmetic changes. (Ilpo Järvinen, > Alok Tiwari, Hillf Danton) > --- > MAINTAINERS | 1 + > drivers/bluetooth/Kconfig | 11 + > drivers/bluetooth/Makefile | 1 + > drivers/bluetooth/btnxpuart.c | 1145 +++++++++++++++++++++++++++++++++ > drivers/bluetooth/btnxpuart.h | 227 +++++++ > 5 files changed, 1385 insertions(+) > create mode 100644 drivers/bluetooth/btnxpuart.c > create mode 100644 drivers/bluetooth/btnxpuart.h <...> > diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c > new file mode 100644 > index 000000000000..6e6bc5a70af2 > --- /dev/null > +++ b/drivers/bluetooth/btnxpuart.c > @@ -0,0 +1,1145 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * > + * NXP Bluetooth driver > + * Copyright 2018-2023 NXP > + * > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. Please don't add license text, SPDX tag is enough. <...> > + skb = nxp_drv_send_cmd(hdev, HCI_NXP_AUTO_SLEEP_MODE, 1, &pcmd); > + > + if (IS_ERR(skb)) { > + bt_dev_err(hdev, "Setting Power Save mode failed (%ld)", PTR_ERR(skb)); > + return PTR_ERR(skb); > + } > + > + status = skb_pull_data(skb, 1); > + > + if (status) { Please don't add blank lines between function call and error checks of that function. > + if (!*status) > + psdata->cur_psmode = psdata->ps_mode; > + else > + psdata->ps_mode = psdata->cur_psmode; > + if (psdata->cur_psmode == PS_MODE_ENABLE) > + ps_start_timer(nxpdev); > + else > + ps_wakeup(nxpdev); > + BT_INFO("Power Save mode response: status=%d, ps_mode=%d", > + *status, psdata->cur_psmode); > + } > + kfree_skb(skb); <...> > +module_serdev_device_driver(nxp_serdev_driver); > + > +MODULE_AUTHOR("Neeraj Sanjay Kale <neeraj.sanjaykale@xxxxxxx>"); > +MODULE_DESCRIPTION("NXP Bluetooth Serial driver v1.0 "); > +MODULE_VERSION("v1.0"); No module versions in new code. Thanks