[PATCH v10 0/3] add support for Bluetooth on MT7622 SoC

From: sean.wang
Date: Tue Aug 07 2018 - 13:53:00 EST


From: Sean Wang <sean.wang@xxxxxxxxxxxx>

v10 and changes since v9:
- Add a fixup that is __be16 is required instead of dlen1 + dlen2 in STP header.
- Align a few one-line comments style as they're made in v9
- Fix two warnings catched by checkpatch.pl
WARNING:TYPO_SPELLING: 'specifc' may be misspelled - perhaps 'specific'?
at 248: FILE: drivers/bluetooth/btmtkuart.c:186:

WARNING:MEMORY_BARRIER: memory barrier without comment
at 260: FILE: drivers/bluetooth/btmtkuart.c:198:

v9 and changes since v8:
- Marcel Holtmann helps to add v9, which includes did a bunch of cosmetic minor cleanup,
spelling correction and added __hci_cmd_send and its event synchronization scheme.
For details, they can be found in [1].

[1] http://lists.infradead.org/pipermail/linux-mediatek/2018-August/014587.html

v8 and changes since v7:
- add updates per these suggestions mentioned in [1][2]
- remove the hack atomic_inc(&hdev->cmd_cnt) mentioned in [2] because it should
be better to be considered in the core

[1] http://lists.infradead.org/pipermail/linux-mediatek/2018-August/014516.html
[2] http://lists.infradead.org/pipermail/linux-mediatek/2018-August/014518.html

v7 and changes since v6:
- drop already applied patches
- move clk_* and pm_* operation to ->open and ->close
- label this driver as BT_MTKUART
- make code style aligned with the other drivers and code better to read
as these suggestions and fixes are mentioned in [1]

[1] http://lists.infradead.org/pipermail/linux-mediatek/2018-July/014458.html

v6 and changes since v5:
- make btmtkuart become a separate driver.
- drop already applied patches and the patch for btuart driver
- refine comments in driver allowing people know that mtk extra header
+ length doesn't indicate a full H:4 frame, things can fragment.
- enhance dt-binding document with removing mistaken added " and improve
English sentence.
- remove unnecessary '\n' with bt_dev_err.
- refine code style.
- set hdev->manufacturer as mtk id.

v5 and changes since v4:
- add Reviewed-by Tag from Ulf Hansson for patch 2
- remove default y in Kconfig for btmtkuart selection to avoid overkill for
users which would like to have less an amount on stuff in kernel.
- list header declarations in alphabetical order and add a proper blank line
within.
- remove unused macro.
- use sizeof to calculate structure size instead of an aextra macro to hardcode.
- use struct hci_dev * as input paraments for mtk_hci_wmt_sync and mtk_setup_fw
for that can be reused in mtk bluetooth with other interfaces.
- remove unused local variabled in mtk_btuart_recv.
- remove superfluous :8 for dlen2 in struct mtk_stp_hdr definition.
- give a reasonable naming for these labels and add a pm_runtime_put_noidle()
in the path undoing failing pm_runtime_get_sync().
- Turn __u8 into u8 in struct mtk_stp_hdr.

Really thanks for these reviews by Johan Hovold and Andy Shevchenko

v4 and changes since v3:
- refine patch 2 based on commit 919b7308fcc4 to allow that
dev_pm_domain_attach() will return better error codes.

v3 and changes since v2
* all changes happen on patch 6
- fix up SPDX license style for btmtkuart.h.
- change firmware download from in ACL data to in HCI commands
and then remove unused mtk_acl_wmt_sync and related code.
- add a workaround replacing bad vendor event id 0xe4 with 0xff every
vendor should use.
- add a sanity check for mtk_hci_wmt_sync to verifying if
input parameters are valid.
- add an atomic_inc(&bdev->hdev->cmd_cnt) for __hci_cmd_sync_ev.
- be changed to use firmware with a header called mt7622pr2h.bin.

v2 and changes since v1
- Dropped patches already being applied
- Rewirte the whole driver using btuart [1], and add slight extension
of btuart to fit into btmtkuart driver. Beware that [1] is also pulled
into one part of the series for avoiding any breakage when the patchset
is being compiled.

[1] btuart
https://www.spinics.net/lists/linux-bluetooth/msg74918.html

v1:

Hi,

This patchset introduces built-in Bluetooth support on MT7622 SoC.
And, it should be simple to make an extension to support other
MediaTek SoCs with adjusting a few of changes on the initialization
sequence of the device.

Before the main driver is being introduced, a few of things about
power-domain management should be re-worked for serdev core and MediaTek
SCPSYS to allow the Bluetooth to properly power up.

Patch 2: add a generic way attaching power domain to serdev
Patch 3 and 4: add cleanups with reuse APIs from Linux core
Patch 5: fix a limitation about power enablement Bluetooth depends on
Patch 1, 6 and 7: the major part of adding Bluetooth support to MT7622

Sean

Sean Wang (3):
dt-bindings: net: bluetooth: Add mediatek-bluetooth
Bluetooth: mediatek: Add protocol support for MediaTek serial devices
MAINTAINERS: add an entry for MediaTek Bluetooth driver

.../devicetree/bindings/net/mediatek-bluetooth.txt | 35 ++
MAINTAINERS | 8 +
drivers/bluetooth/Kconfig | 11 +
drivers/bluetooth/Makefile | 1 +
drivers/bluetooth/btmtkuart.c | 629 +++++++++++++++++++++
5 files changed, 684 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
create mode 100644 drivers/bluetooth/btmtkuart.c

--
2.7.4