Skip to content

Commit 7362334

Browse files
tszucsholtmann
authored andcommitted
Bluetooth: btmrvl: add support for SD8987 chipset
This patch adds support for Marvell 88W8987 chipset with SDIO interface. Register offsets and supported feature flags are updated. The corresponding firmware image file shall be "mrvl/sd8987_uapsta.bin". Signed-off-by: Tamás Szűcs <tszucs@protonmail.ch> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
1 parent 7f3c563 commit 7362334

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

drivers/bluetooth/Kconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ config BT_MRVL
336336
The core driver to support Marvell Bluetooth devices.
337337

338338
This driver is required if you want to support
339-
Marvell Bluetooth devices, such as 8688/8787/8797/8887/8897/8977/8997.
339+
Marvell Bluetooth devices, such as 8688/8787/8797/8887/8897/8977/8987/8997.
340340

341341
Say Y here to compile Marvell Bluetooth driver
342342
into the kernel or say M to compile it as module.
@@ -350,7 +350,7 @@ config BT_MRVL_SDIO
350350
The driver for Marvell Bluetooth chipsets with SDIO interface.
351351

352352
This driver is required if you want to use Marvell Bluetooth
353-
devices with SDIO interface. Currently SD8688/SD8787/SD8797/SD8887/SD8897/SD8977/SD8997
353+
devices with SDIO interface. Currently SD8688/SD8787/SD8797/SD8887/SD8897/SD8977/SD8987/SD8997
354354
chipsets are supported.
355355

356356
Say Y here to compile support for Marvell BT-over-SDIO driver

drivers/bluetooth/btmrvl_sdio.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,29 @@ static const struct btmrvl_sdio_card_reg btmrvl_reg_8977 = {
235235
.fw_dump_end = 0xf8,
236236
};
237237

238+
static const struct btmrvl_sdio_card_reg btmrvl_reg_8987 = {
239+
.cfg = 0x00,
240+
.host_int_mask = 0x08,
241+
.host_intstatus = 0x0c,
242+
.card_status = 0x5c,
243+
.sq_read_base_addr_a0 = 0xf8,
244+
.sq_read_base_addr_a1 = 0xf9,
245+
.card_revision = 0xc8,
246+
.card_fw_status0 = 0xe8,
247+
.card_fw_status1 = 0xe9,
248+
.card_rx_len = 0xea,
249+
.card_rx_unit = 0xeb,
250+
.io_port_0 = 0xe4,
251+
.io_port_1 = 0xe5,
252+
.io_port_2 = 0xe6,
253+
.int_read_to_clear = true,
254+
.host_int_rsr = 0x04,
255+
.card_misc_cfg = 0xd8,
256+
.fw_dump_ctrl = 0xf0,
257+
.fw_dump_start = 0xf1,
258+
.fw_dump_end = 0xf8,
259+
};
260+
238261
static const struct btmrvl_sdio_card_reg btmrvl_reg_8997 = {
239262
.cfg = 0x00,
240263
.host_int_mask = 0x08,
@@ -312,6 +335,15 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8977 = {
312335
.supports_fw_dump = true,
313336
};
314337

338+
static const struct btmrvl_sdio_device btmrvl_sdio_sd8987 = {
339+
.helper = NULL,
340+
.firmware = "mrvl/sd8987_uapsta.bin",
341+
.reg = &btmrvl_reg_8987,
342+
.support_pscan_win_report = true,
343+
.sd_blksz_fw_dl = 256,
344+
.supports_fw_dump = true,
345+
};
346+
315347
static const struct btmrvl_sdio_device btmrvl_sdio_sd8997 = {
316348
.helper = NULL,
317349
.firmware = "mrvl/sd8997_uapsta.bin",
@@ -343,6 +375,9 @@ static const struct sdio_device_id btmrvl_sdio_ids[] = {
343375
/* Marvell SD8977 Bluetooth device */
344376
{ SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9146),
345377
.driver_data = (unsigned long)&btmrvl_sdio_sd8977 },
378+
/* Marvell SD8987 Bluetooth device */
379+
{ SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x914A),
380+
.driver_data = (unsigned long)&btmrvl_sdio_sd8987 },
346381
/* Marvell SD8997 Bluetooth device */
347382
{ SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9142),
348383
.driver_data = (unsigned long)&btmrvl_sdio_sd8997 },
@@ -1797,4 +1832,5 @@ MODULE_FIRMWARE("mrvl/sd8797_uapsta.bin");
17971832
MODULE_FIRMWARE("mrvl/sd8887_uapsta.bin");
17981833
MODULE_FIRMWARE("mrvl/sd8897_uapsta.bin");
17991834
MODULE_FIRMWARE("mrvl/sd8977_uapsta.bin");
1835+
MODULE_FIRMWARE("mrvl/sd8987_uapsta.bin");
18001836
MODULE_FIRMWARE("mrvl/sd8997_uapsta.bin");

0 commit comments

Comments
 (0)