]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Bluetooth: btmrvl: add support for SD8987 chipset
authorTamás Szűcs <tszucs@protonmail.ch>
Sun, 14 Apr 2019 18:38:14 +0000 (20:38 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 23 Apr 2019 17:01:45 +0000 (19:01 +0200)
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>
drivers/bluetooth/Kconfig
drivers/bluetooth/btmrvl_sdio.c

index b0f9a20401d6d8b6a8476166e0f275c93227bc45..b9c34ff9a0d310ad450f68ff83465707ffdad1e1 100644 (file)
@@ -336,7 +336,7 @@ config BT_MRVL
          The core driver to support Marvell Bluetooth devices.
 
          This driver is required if you want to support
          The core driver to support Marvell Bluetooth devices.
 
          This driver is required if you want to support
-         Marvell Bluetooth devices, such as 8688/8787/8797/8887/8897/8977/8997.
+         Marvell Bluetooth devices, such as 8688/8787/8797/8887/8897/8977/8987/8997.
 
          Say Y here to compile Marvell Bluetooth driver
          into the kernel or say M to compile it as module.
 
          Say Y here to compile Marvell Bluetooth driver
          into the kernel or say M to compile it as module.
@@ -350,7 +350,7 @@ config BT_MRVL_SDIO
          The driver for Marvell Bluetooth chipsets with SDIO interface.
 
          This driver is required if you want to use Marvell Bluetooth
          The driver for Marvell Bluetooth chipsets with SDIO interface.
 
          This driver is required if you want to use Marvell Bluetooth
-         devices with SDIO interface. Currently SD8688/SD8787/SD8797/SD8887/SD8897/SD8977/SD8997
+         devices with SDIO interface. Currently SD8688/SD8787/SD8797/SD8887/SD8897/SD8977/SD8987/SD8997
          chipsets are supported.
 
          Say Y here to compile support for Marvell BT-over-SDIO driver
          chipsets are supported.
 
          Say Y here to compile support for Marvell BT-over-SDIO driver
index 047b75ce1deb76b31d6d52a78028967f954a1a9d..0f3a020703ab233d871752f9c6f6d9bce7408f42 100644 (file)
@@ -235,6 +235,29 @@ static const struct btmrvl_sdio_card_reg btmrvl_reg_8977 = {
        .fw_dump_end = 0xf8,
 };
 
        .fw_dump_end = 0xf8,
 };
 
+static const struct btmrvl_sdio_card_reg btmrvl_reg_8987 = {
+       .cfg = 0x00,
+       .host_int_mask = 0x08,
+       .host_intstatus = 0x0c,
+       .card_status = 0x5c,
+       .sq_read_base_addr_a0 = 0xf8,
+       .sq_read_base_addr_a1 = 0xf9,
+       .card_revision = 0xc8,
+       .card_fw_status0 = 0xe8,
+       .card_fw_status1 = 0xe9,
+       .card_rx_len = 0xea,
+       .card_rx_unit = 0xeb,
+       .io_port_0 = 0xe4,
+       .io_port_1 = 0xe5,
+       .io_port_2 = 0xe6,
+       .int_read_to_clear = true,
+       .host_int_rsr = 0x04,
+       .card_misc_cfg = 0xd8,
+       .fw_dump_ctrl = 0xf0,
+       .fw_dump_start = 0xf1,
+       .fw_dump_end = 0xf8,
+};
+
 static const struct btmrvl_sdio_card_reg btmrvl_reg_8997 = {
        .cfg = 0x00,
        .host_int_mask = 0x08,
 static const struct btmrvl_sdio_card_reg btmrvl_reg_8997 = {
        .cfg = 0x00,
        .host_int_mask = 0x08,
@@ -312,6 +335,15 @@ static const struct btmrvl_sdio_device btmrvl_sdio_sd8977 = {
        .supports_fw_dump = true,
 };
 
        .supports_fw_dump = true,
 };
 
+static const struct btmrvl_sdio_device btmrvl_sdio_sd8987 = {
+       .helper         = NULL,
+       .firmware       = "mrvl/sd8987_uapsta.bin",
+       .reg            = &btmrvl_reg_8987,
+       .support_pscan_win_report = true,
+       .sd_blksz_fw_dl = 256,
+       .supports_fw_dump = true,
+};
+
 static const struct btmrvl_sdio_device btmrvl_sdio_sd8997 = {
        .helper         = NULL,
        .firmware       = "mrvl/sd8997_uapsta.bin",
 static const struct btmrvl_sdio_device btmrvl_sdio_sd8997 = {
        .helper         = NULL,
        .firmware       = "mrvl/sd8997_uapsta.bin",
@@ -343,6 +375,9 @@ static const struct sdio_device_id btmrvl_sdio_ids[] = {
        /* Marvell SD8977 Bluetooth device */
        { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9146),
                        .driver_data = (unsigned long)&btmrvl_sdio_sd8977 },
        /* Marvell SD8977 Bluetooth device */
        { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9146),
                        .driver_data = (unsigned long)&btmrvl_sdio_sd8977 },
+       /* Marvell SD8987 Bluetooth device */
+       { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x914A),
+                       .driver_data = (unsigned long)&btmrvl_sdio_sd8987 },
        /* Marvell SD8997 Bluetooth device */
        { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9142),
                        .driver_data = (unsigned long)&btmrvl_sdio_sd8997 },
        /* Marvell SD8997 Bluetooth device */
        { SDIO_DEVICE(SDIO_VENDOR_ID_MARVELL, 0x9142),
                        .driver_data = (unsigned long)&btmrvl_sdio_sd8997 },
@@ -1797,4 +1832,5 @@ MODULE_FIRMWARE("mrvl/sd8797_uapsta.bin");
 MODULE_FIRMWARE("mrvl/sd8887_uapsta.bin");
 MODULE_FIRMWARE("mrvl/sd8897_uapsta.bin");
 MODULE_FIRMWARE("mrvl/sd8977_uapsta.bin");
 MODULE_FIRMWARE("mrvl/sd8887_uapsta.bin");
 MODULE_FIRMWARE("mrvl/sd8897_uapsta.bin");
 MODULE_FIRMWARE("mrvl/sd8977_uapsta.bin");
+MODULE_FIRMWARE("mrvl/sd8987_uapsta.bin");
 MODULE_FIRMWARE("mrvl/sd8997_uapsta.bin");
 MODULE_FIRMWARE("mrvl/sd8997_uapsta.bin");