public inbox for linux-bluetooth@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: Zijun Hu <zijuhu@codeaurora.org>
Cc: marcel@holtmann.org, johan.hedberg@gmail.com,
	linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org,
	linux-arm-msm@vger.kernel.org, bgodavar@codeaurora.org,
	c-hbandi@codeaurora.org, hemantg@codeaurora.org,
	mka@chromium.org, rjliao@codeaurora.org,
	Zijun Hu <quic_zijuhu@quicinc.com>
Subject: Re: [PATCH v1 3/3] Bluetooth: hci_qca: Add support for QTI bluetooth MAPLE
Date: Tue, 2 Nov 2021 09:22:20 +0100	[thread overview]
Message-ID: <YYD1PJrFw/xmEXIW@kroah.com> (raw)
In-Reply-To: <4f6aee28-4d86-116c-6c47-bfce5de6551b@codeaurora.org>

On Tue, Nov 02, 2021 at 03:53:33PM +0800, Zijun Hu wrote:
> 
> 
> On 11/2/2021 3:35 PM, Greg KH wrote:
> > On Tue, Nov 02, 2021 at 03:12:57PM +0800, Zijun Hu wrote:
> >> From: Zijun Hu <quic_zijuhu@quicinc.com>
> >>
> >> Add support for MAPLE integrated within SOC, it is mounted on
> >> a virtual tty port and powered on/off via relevant IOCTL, neither
> >> IBS nor RAMPATCH downloading is not required.
> >>
> >> Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
> >> ---
> >>  drivers/bluetooth/btqca.c   | 13 ++++++++++++-
> >>  drivers/bluetooth/btqca.h   | 13 +++++++++++++
> >>  drivers/bluetooth/hci_qca.c | 47 ++++++++++++++++++++++++++++++++++++++++++++-
> >>  3 files changed, 71 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c
> >> index be04d74037d2..b83d2ecefe5d 100644
> >> --- a/drivers/bluetooth/btqca.c
> >> +++ b/drivers/bluetooth/btqca.c
> >> @@ -255,6 +255,8 @@ static void qca_tlv_check_data(struct hci_dev *hdev,
> >>  		BT_DBG("TLV Type\t\t : 0x%x", type_len & 0x000000ff);
> >>  		BT_DBG("Length\t\t : %d bytes", length);
> >>  
> >> +		if (qca_is_maple(soc_type))
> >> +			break;
> >>  		idx = 0;
> >>  		data = tlv->data;
> >>  		while (idx < length) {
> >> @@ -552,6 +554,9 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
> >>  	rom_ver = ((soc_ver & 0x00000f00) >> 0x04) | (soc_ver & 0x0000000f);
> >>  
> >>  	/* Download rampatch file */
> >> +	if (qca_is_maple(soc_type))
> >> +		goto download_nvm;
> >> +
> >>  	config.type = TLV_TYPE_PATCH;
> >>  	if (qca_is_wcn399x(soc_type)) {
> >>  		snprintf(config.fwname, sizeof(config.fwname),
> >> @@ -580,6 +585,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
> >>  	/* Give the controller some time to get ready to receive the NVM */
> >>  	msleep(10);
> >>  
> >> +download_nvm:
> >>  	/* Download NVM configuration */
> >>  	config.type = TLV_TYPE_NVM;
> >>  	if (firmware_name)
> >> @@ -597,6 +603,9 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
> >>  	else if (soc_type == QCA_QCA6390)
> >>  		snprintf(config.fwname, sizeof(config.fwname),
> >>  			 "qca/htnv%02x.bin", rom_ver);
> >> +	else if (qca_is_maple(soc_type))
> >> +		snprintf(config.fwname, sizeof(config.fwname),
> >> +			 "qca/mpnv%02x.bin", rom_ver);
> >>  	else if (soc_type == QCA_WCN6750)
> >>  		snprintf(config.fwname, sizeof(config.fwname),
> >>  			 "qca/msnv%02x.bin", rom_ver);
> >> @@ -609,6 +618,8 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
> >>  		bt_dev_err(hdev, "QCA Failed to download NVM (%d)", err);
> >>  		return err;
> >>  	}
> >> +	if (qca_is_maple(soc_type))
> >> +		msleep(MAPLE_NVM_READY_DELAY_MS);
> >>  
> >>  	if (soc_type >= QCA_WCN3991) {
> >>  		err = qca_disable_soc_logging(hdev);
> >> @@ -637,7 +648,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,
> >>  		return err;
> >>  	}
> >>  
> >> -	if (soc_type == QCA_WCN3991 || soc_type == QCA_WCN6750) {
> >> +	if (soc_type == QCA_WCN3991 || soc_type == QCA_WCN6750 || qca_is_maple(soc_type)) {
> >>  		/* get fw build info */
> >>  		err = qca_read_fw_build_info(hdev);
> >>  		if (err < 0)
> >> diff --git a/drivers/bluetooth/btqca.h b/drivers/bluetooth/btqca.h
> >> index 30afa7703afd..0a5a7d1daa71 100644
> >> --- a/drivers/bluetooth/btqca.h
> >> +++ b/drivers/bluetooth/btqca.h
> >> @@ -46,6 +46,8 @@
> >>  
> >>  #define QCA_FW_BUILD_VER_LEN		255
> >>  
> >> +#define MAPLE_NVM_READY_DELAY_MS        1500
> >> +#define MAPLE_POWER_CONTROL_DELAY_MS    50
> >>  
> >>  enum qca_baudrate {
> >>  	QCA_BAUDRATE_115200 	= 0,
> >> @@ -145,6 +147,7 @@ enum qca_btsoc_type {
> >>  	QCA_WCN3991,
> >>  	QCA_QCA6390,
> >>  	QCA_WCN6750,
> >> +	QCA_MAPLE,
> >>  };
> >>  
> >>  #if IS_ENABLED(CONFIG_BT_QCA)
> >> @@ -167,6 +170,11 @@ static inline bool qca_is_wcn6750(enum qca_btsoc_type soc_type)
> >>  	return soc_type == QCA_WCN6750;
> >>  }
> >>  
> >> +static inline bool qca_is_maple(enum qca_btsoc_type soc_type)
> >> +{
> >> +	return soc_type == QCA_MAPLE;
> >> +}
> >> +
> >>  #else
> >>  
> >>  static inline int qca_set_bdaddr_rome(struct hci_dev *hdev, const bdaddr_t *bdaddr)
> >> @@ -204,6 +212,11 @@ static inline bool qca_is_wcn6750(enum qca_btsoc_type soc_type)
> >>  	return false;
> >>  }
> >>  
> >> +static inline bool qca_is_maple(enum qca_btsoc_type soc_type)
> >> +{
> >> +	return false;
> >> +}
> >> +
> >>  static inline int qca_send_pre_shutdown_cmd(struct hci_dev *hdev)
> >>  {
> >>  	return -EOPNOTSUPP;
> >> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
> >> index dd768a8ed7cb..f1d9670719c4 100644
> >> --- a/drivers/bluetooth/hci_qca.c
> >> +++ b/drivers/bluetooth/hci_qca.c
> >> @@ -70,6 +70,10 @@
> >>  #define QCA_CRASHBYTE_PACKET_LEN	1096
> >>  #define QCA_MEMDUMP_BYTE		0xFB
> >>  
> >> +#ifndef IOCTL_IPC_BOOT
> >> +#define IOCTL_IPC_BOOT                  0xBE
> >> +#endif
> > 
> > You send this command, but never use it.  Where is the driver code that
> > uses this command?
> > 
> qca_maple_power_control() will use it.  this driver depends on bt_tty kernel module
> https://source.codeaurora.org/quic/qsdk/oss/kernel/linux-ipq-5.4/tree/drivers/soc/qcom/bt_tty.c?h=NHSS.QSDK.11.5.0.5.r2

You can not add code to the kernel that is not used by the kernel
itself.  That driver needs to be in the tree as well, why is it not
submitted now too?

> > And why not tabs?
> > 
> > And why is this patch series not properly threaded so tools can pick it
> > up and find them?
> > 
> > And why the odd named ioctl that is different from other ones in this
> > file?
> > 
> that IOCTL name is defined by that module.
> https://source.codeaurora.org/quic/qsdk/oss/kernel/linux-ipq-5.4/tree/include/linux/bt.h?h=NHSS.QSDK.11.5.0.5.r2

Again, it needs to be in the tree.

> > And why not just use normal power management hooks for doing things like
> > turning on and off the hardware like all other drivers?
> > 
> this device is special.

All drivers and devices are special and unique.  Just like all of them :)

What is so odd about this device that it can not work with the existing
infrastructure that the kernel has for all of the hundreds of thousands
of other devices it supports?

> it seems BT maintainer decides to drop this patch.

Of course, at the very least because there is no in-kernel user, why
would you accept such a patch if you were the maintainer?

Please submit your driver first.

thanks,

greg k-h

  reply	other threads:[~2021-11-02  8:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-02  7:12 [PATCH v1 3/3] Bluetooth: hci_qca: Add support for QTI bluetooth MAPLE Zijun Hu
2021-11-02  7:35 ` Greg KH
2021-11-02  7:40   ` Marcel Holtmann
2021-11-02  7:53   ` Zijun Hu
2021-11-02  8:22     ` Greg KH [this message]
2021-11-02  8:38       ` Marcel Holtmann
2021-11-02  9:00         ` Zijun Hu
2021-11-02  9:22           ` Marcel Holtmann
2021-11-02  9:42             ` Zijun Hu
2021-11-02 11:24               ` Marcel Holtmann
2021-11-02  8:54       ` Zijun Hu
2021-11-02 13:23         ` Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YYD1PJrFw/xmEXIW@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=bgodavar@codeaurora.org \
    --cc=c-hbandi@codeaurora.org \
    --cc=hemantg@codeaurora.org \
    --cc=johan.hedberg@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcel@holtmann.org \
    --cc=mka@chromium.org \
    --cc=quic_zijuhu@quicinc.com \
    --cc=rjliao@codeaurora.org \
    --cc=zijuhu@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox