On Tue, Nov 06, 2018 at 06:44:07PM +0530, Balakrishna Godavarthi wrote: > Hi Marcel, > > On 2018-11-06 18:32, Marcel Holtmann wrote: > > Hi Balakrishna, > > > > > > > During hci down we are sending reset command to chip, which > > > > > is not required for wcn3990, as hdev->shutdown() will turn off the > > > > > regulators. > > > > > Signed-off-by: Balakrishna Godavarthi <bgodavar@xxxxxxxxxxxxxx> > > > > > --- > > > > > drivers/bluetooth/hci_qca.c | 1 + > > > > > 1 file changed, 1 insertion(+) > > > > > diff --git a/drivers/bluetooth/hci_qca.c > > > > > b/drivers/bluetooth/hci_qca.c > > > > > index 8301663f0004..97b57e0f4725 100644 > > > > > --- a/drivers/bluetooth/hci_qca.c > > > > > +++ b/drivers/bluetooth/hci_qca.c > > > > > @@ -1190,6 +1190,7 @@ static int qca_setup(struct hci_uart *hu) > > > > > */ > > > > > set_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks); > > > > > set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks); > > > > > + clear_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); This patch doesn't apply cleanly against bluetooth-next, looks like you have the unrelated "Bluetooth: hci_qca: Set HCI_QUIRK_USE_BDADDR_PROPERTY for wcn3990" (https://lore.kernel.org/patchwork/patch/1004372/) in your tree. > > > > > hu->hdev->shutdown = qca_power_off; > > > > > ret = qca_wcn3990_init(hu); > > > > > if (ret) > > > > I am pretty certain that you didn’t want this quirk: > > > > /* When this quirk is set, the HCI Reset command is send when > > > > * closing the transport instead of when opening it. > > > > This quirk is for Bluetooth 1.0b devices where the HCI_Reset behavior > > > > was not clear or for devices that actually misbehave with the initial > > > > HCI_Reset. > > > > In addition, you commit message is totally misleading. That is not > > > > what is happening with this quirk. > > > > Regards > > > > Marcel > > > > > > My intention was reset command is not required when we do an hci down. > > > this is because of hdev->shutdown will turn off the regulators. > > > It is like turning off the chip. sending reset command after turning > > > off the chip is not required. > > > > > > I understand the usage of the quirk, will update the commit text. > > > > you are papering over the issue. Actually > > hci_serdev.c:hci_uart_register_device() is the culprit with the legacy > > code copied over from hci_ldisc.c:hci_uart_register_dev(). I think > > there is no point doing all this legacy line discipline quirk handling > > until it is really needed. The serdev drivers are all for recent > > hardware. > > > > That said, having moved over to a btuart.c approach and killed the > > whole hci_serdev.c thing would have been a lot better here. You will > > keep running in weird situations where 18 year old code keeps > > surprising you. > > [Bala]: even i feel the same. they are lot such kind of HACK's we need to do > with current arch. > when can we expect btuart.c merged to bt-next. i think having btuart > will helps us to have the control of > vendor porto's call's like in btusb.c btuart was initially part of the 'add support for Bluetooth on MT7622 SoC' series (https://lore.kernel.org/patchwork/patch/960806/), but was dropped with v6 (https://lore.kernel.org/patchwork/project/lkml/list/?series=360046) upon Marcel's request: 'Frankly I prefer to keep the btuart.c driver for drivers that really just use H:4 as transport protocol. If the protocol is only H:4 alike and has extra headers, then it should be a separate driver.' (https://lore.kernel.org/patchwork/patch/960806/#1148426). Cheers Matthias