All of lore.kernel.org
 help / color / mirror / Atom feed
From: Balakrishna Godavarthi <bgodavar@codeaurora.org>
To: Matthias Kaehlcke <mka@chromium.org>
Cc: marcel@holtmann.org, johan.hedberg@gmail.com,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-bluetooth@vger.kernel.org, rtatiya@codeaurora.org,
	hemantg@codeaurora.org, linux-arm-msm@vger.kernel.org
Subject: Re: [PATCH v8 7/7] Bluetooth: hci_qca: Add support for Qualcomm Bluetooth chip wcn3990
Date: Fri, 29 Jun 2018 23:07:22 +0530	[thread overview]
Message-ID: <364baccde12829e0c160a3ba2bbcdee0@codeaurora.org> (raw)
In-Reply-To: <20180626010559.GK129942@google.com>

Hi Matthias,

On 2018-06-26 06:35, Matthias Kaehlcke wrote:
> On Mon, Jun 25, 2018 at 07:10:13PM +0530, Balakrishna Godavarthi wrote:
>> Add support to set voltage/current of various regulators
>> to power up/down Bluetooth chip wcn3990.
>> 
>> Signed-off-by: Balakrishna Godavarthi <bgodavar@codeaurora.org>
>> ---
>> changes in v8:
>>     * closing qca buffer, if qca_power_setup fails
>>     * chnaged ibs start timer function call location.
>>     * updated review comments.
>> 
>> changes in v7:
>>     * addressed review comments.
>> 
>> changes in v6:
>>     * Hooked up qca_power to qca_serdev.
>>     * renamed all the naming inconsistency functions with qca_*
>>     * leveraged common code of ROME for wcn3990.
>>     * created wrapper functions for re-usable blocks.
>>     * updated function of _*regulator_enable and _*regualtor_disable.
>>     * removed redundant comments and functions.
>>     * addressed review comments.
>> 
>> Changes in v5:
>>     * updated regulator vddpa min_uV to 1304000.
>>       * addressed review comments.
>> 
>> Changes in v4:
>>     * Segregated the changes of btqca from hci_qca
>>     * rebased all changes on top of bluetooth-next.
>>     * addressed review comments.
>> 
>> ---
>> diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
>> index 28187a89b850..bd4c9a78716f 100644
>> --- a/drivers/bluetooth/hci_qca.c
>> +++ b/drivers/bluetooth/hci_qca.c
>> ...
>> +static int qca_send_vendor_cmd(struct hci_dev *hdev, u8 cmd)
>> +{
>> +	struct hci_uart *hu = hci_get_drvdata(hdev);
>> +	struct qca_data *qca = hu->priv;
>> +	struct sk_buff *skb;
>> +
>> +	bt_dev_dbg(hdev, "sending command %02x to SoC", cmd);
>> +
>> +	skb = bt_skb_alloc(sizeof(cmd), GFP_KERNEL);
>> +	if (!skb) {
>> +		bt_dev_err(hdev, "Failed to allocate memory for vendor packet");
> 
> As mentioned on v7, custom OOM messages should be avoided.
> 

[Bala]: sry i might have missed it, will update.

>>  static int qca_set_speed(struct hci_uart *hu, enum qca_speed_type 
>> speed_type)
>>  {
>> +	struct qca_serdev *qcadev;
>>  	unsigned int speed, qca_baudrate;
>>  	int ret;
>> 
>> @@ -971,6 +1054,13 @@ static int qca_set_speed(struct hci_uart *hu, 
>> enum qca_speed_type speed_type)
>>  		return 0;
>>  	}
>> 
>> +	qcadev = serdev_device_get_drvdata(hu->serdev);
>> +	/* Disabling hardware flow control is preferred while
>> +	 * sending change baud rate command to SoC.
>> +	 */
> 
> Is it only preferred or must be?
> 

[Bala]: must be. will update.

>> +	if (qcadev->btsoc_type == QCA_WCN3990)
>> +		hci_uart_set_flow_control(hu, true);
>> +
> 
> nit: consider doing this just before qca_set_baudrate(). It doesn't
> make a difference but leaves it clearer what exactly needs to be
> 'protected' (analogy to locking).

[Bala] : will do it.

> 
>>  	qca_baudrate = qca_get_baudrate_value(speed);
>>  	bt_dev_info(hu->hdev, "Set UART speed to %d", speed);
>>  	ret = qca_set_baudrate(hu->hdev, qca_baudrate);
>> @@ -980,8 +1070,10 @@ static int qca_set_speed(struct hci_uart *hu, 
>> enum qca_speed_type speed_type)
>>  	}
>> 
>>  	host_set_baudrate(hu, speed);
>> +	if (qcadev->btsoc_type == QCA_WCN3990)
>> +		hci_uart_set_flow_control(hu, false);
> 
>>  static int qca_setup(struct hci_uart *hu)
>> @@ -989,10 +1081,11 @@ static int qca_setup(struct hci_uart *hu)
>>  	struct hci_dev *hdev = hu->hdev;
>>  	struct qca_data *qca = hu->priv;
>>  	unsigned int speed, qca_baudrate = QCA_BAUDRATE_115200;
>> +	struct qca_serdev *qcadev;
>>  	int ret;
>>  	int soc_ver = 0;
>> 
>> -	bt_dev_info(hdev, "ROME setup");
>> +	qcadev = serdev_device_get_drvdata(hu->serdev);
>> 
>>  	/* Patch downloading has to be done without IBS mode */
>>  	clear_bit(STATE_IN_BAND_SLEEP_ENABLED, &qca->flags);
>> @@ -1000,6 +1093,35 @@ static int qca_setup(struct hci_uart *hu)
>>  	/* Setup initial baudrate */
>>  	qca_set_speed(hu, QCA_INIT_SPEED);
>> 
>> +	if (qcadev->btsoc_type == QCA_WCN3990) {
>> +		bt_dev_dbg(hdev, "setting up wcn3990");
>> +		hci_uart_set_flow_control(hu, true);
>> +		ret = qca_send_vendor_cmd(hdev, QCA_WCN3990_POWERON_PULSE);
>> +		if (ret)
>> +			return ret;
>> +
>> +		hci_uart_set_flow_control(hu, false);
>> +		serdev_device_close(hu->serdev);
>> +		ret = serdev_device_open(hu->serdev);
>> +		if (ret) {
>> +			bt_dev_err(hdev, "failed to open port");
>> +			return ret;
>> +		}
>> +
>> +		msleep(100);
> 
> Is the sleep really related with _open() or is it rather that the
> device needs to settle after the power on pulse? In the latter case
> I'd suggest to do the sleep before _open(), if it doesn't make a
> functional difference (makes the code a bit more self documenting).
> 
>> +		/* Setup initial baudrate */
>> +		qca_set_speed(hu, QCA_INIT_SPEED);
>> +		hci_uart_set_flow_control(hu, false);
> 
> This is still a bit noisy with all the open/close and flow control
> stuff. If I understand correctly this essentially switches the
> controller on (or resets it?) and brings it (and the driver) into a
> sane state. Would it make sense to move the above block into a
> wcn3990_init/reset() or so?

[Bala]: It is very good idea, may be future chips also will flow same 
functions with some initial setup changes.
         will group these functions into a common functions.


-- 
Regards
Balakrishna.

      reply	other threads:[~2018-06-29 17:37 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-25 13:40 [PATCH v8 0/7] Enable Bluetooth functionality for WCN3990 Balakrishna Godavarthi
2018-06-25 13:40 ` [PATCH v8 1/7] dt-bindings: net: bluetooth: Add device tree bindings for QTI chip wcn3990 Balakrishna Godavarthi
2018-06-25 14:58   ` Rob Herring
2018-07-05 15:47     ` Balakrishna Godavarthi
2018-06-25 13:40 ` [PATCH v8 2/7] Bluetooth: btqca: Rename ROME specific functions to Generic functions Balakrishna Godavarthi
2018-06-25 23:00   ` Matthias Kaehlcke
2018-06-25 13:40 ` [PATCH v8 3/7] Bluetooth: btqca: Redefine qca_uart_setup() to generic function Balakrishna Godavarthi
2018-06-25 23:20   ` Matthias Kaehlcke
2018-06-26  1:23     ` Balakrishna Godavarthi
2018-06-26 19:53       ` Matthias Kaehlcke
2018-06-29 15:32         ` Balakrishna Godavarthi
2018-06-25 13:40 ` [PATCH v8 4/7] Bluetooth: hci_qca: Add wrapper functions for setting UART speed Balakrishna Godavarthi
2018-06-25 23:43   ` Matthias Kaehlcke
2018-06-26  0:05     ` Matthias Kaehlcke
2018-06-26  5:13       ` Balakrishna Godavarthi
2018-06-26 18:32         ` Matthias Kaehlcke
2018-06-26 18:45           ` Balakrishna Godavarthi
2018-06-26  1:31     ` Balakrishna Godavarthi
2018-06-26 19:02       ` Matthias Kaehlcke
2018-06-29 15:29         ` Balakrishna Godavarthi
2018-06-29 21:01           ` Matthias Kaehlcke
2018-07-03 15:59             ` Balakrishna Godavarthi
2018-06-25 13:40 ` [PATCH v8 5/7] Bluetooth: hci_qca: Enable 3.2 Mbps operating speed Balakrishna Godavarthi
2018-06-25 13:40 ` [PATCH v8 6/7] Bluetooth: btqca: Add wcn3990 firmware download support Balakrishna Godavarthi
2018-06-25 13:40 ` [PATCH v8 7/7] Bluetooth: hci_qca: Add support for Qualcomm Bluetooth chip wcn3990 Balakrishna Godavarthi
2018-06-26  1:05   ` Matthias Kaehlcke
2018-06-29 17:37     ` Balakrishna Godavarthi [this message]

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=364baccde12829e0c160a3ba2bbcdee0@codeaurora.org \
    --to=bgodavar@codeaurora.org \
    --cc=devicetree@vger.kernel.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=rtatiya@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.