Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Tamás Szűcs and committed by
Marcel Holtmann
73623340 7f3c563c

+38 -2
+2 -2
drivers/bluetooth/Kconfig
··· 336 336 The core driver to support Marvell Bluetooth devices. 337 337 338 338 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. 340 340 341 341 Say Y here to compile Marvell Bluetooth driver 342 342 into the kernel or say M to compile it as module. ··· 350 350 The driver for Marvell Bluetooth chipsets with SDIO interface. 351 351 352 352 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 354 354 chipsets are supported. 355 355 356 356 Say Y here to compile support for Marvell BT-over-SDIO driver
+36
drivers/bluetooth/btmrvl_sdio.c
··· 235 235 .fw_dump_end = 0xf8, 236 236 }; 237 237 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 + 238 261 static const struct btmrvl_sdio_card_reg btmrvl_reg_8997 = { 239 262 .cfg = 0x00, 240 263 .host_int_mask = 0x08, ··· 335 312 .supports_fw_dump = true, 336 313 }; 337 314 315 + static const struct btmrvl_sdio_device btmrvl_sdio_sd8987 = { 316 + .helper = NULL, 317 + .firmware = "mrvl/sd8987_uapsta.bin", 318 + .reg = &btmrvl_reg_8987, 319 + .support_pscan_win_report = true, 320 + .sd_blksz_fw_dl = 256, 321 + .supports_fw_dump = true, 322 + }; 323 + 338 324 static const struct btmrvl_sdio_device btmrvl_sdio_sd8997 = { 339 325 .helper = NULL, 340 326 .firmware = "mrvl/sd8997_uapsta.bin", ··· 375 343 /* Marvell SD8977 Bluetooth device */ 376 344 { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9146), 377 345 .driver_data = (unsigned long)&btmrvl_sdio_sd8977 }, 346 + /* Marvell SD8987 Bluetooth device */ 347 + { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x914A), 348 + .driver_data = (unsigned long)&btmrvl_sdio_sd8987 }, 378 349 /* Marvell SD8997 Bluetooth device */ 379 350 { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9142), 380 351 .driver_data = (unsigned long)&btmrvl_sdio_sd8997 }, ··· 1832 1797 MODULE_FIRMWARE("mrvl/sd8887_uapsta.bin"); 1833 1798 MODULE_FIRMWARE("mrvl/sd8897_uapsta.bin"); 1834 1799 MODULE_FIRMWARE("mrvl/sd8977_uapsta.bin"); 1800 + MODULE_FIRMWARE("mrvl/sd8987_uapsta.bin"); 1835 1801 MODULE_FIRMWARE("mrvl/sd8997_uapsta.bin");