Bluetooth: mt7921s: fix firmware coredump retrieve
According to the MCU firmware behavior, as the driver is aware of the
notification of the interrupt source FW_MAILBOX_INT that shows the MCU
completed delivered a core dump piece to the host, the driver must
acknowledge the MCU with the register PH2DSM0R bit PH2DSM0R_DRIVER_OWN
to notify the MCU to handle the next core dump piece.
Fixes: db57b62591
("Bluetooth: btmtksdio: add support of processing firmware coredump and log")
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Mark Chen <mark-yw.chen@mediatek.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
9d7cbe2b9c
commit
2fc967cc0d
@ -87,8 +87,12 @@ MODULE_DEVICE_TABLE(sdio, btmtksdio_table);
|
||||
#define RX_DONE_INT BIT(1)
|
||||
#define TX_EMPTY BIT(2)
|
||||
#define TX_FIFO_OVERFLOW BIT(8)
|
||||
#define FW_MAILBOX_INT BIT(15)
|
||||
#define RX_PKT_LEN GENMASK(31, 16)
|
||||
|
||||
#define MTK_REG_PH2DSM0R 0xc4
|
||||
#define PH2DSM0R_DRIVER_OWN BIT(0)
|
||||
|
||||
#define MTK_REG_CTDR 0x18
|
||||
|
||||
#define MTK_REG_CRDR 0x1c
|
||||
@ -481,6 +485,12 @@ static void btmtksdio_txrx_work(struct work_struct *work)
|
||||
*/
|
||||
sdio_writel(bdev->func, int_status, MTK_REG_CHISR, NULL);
|
||||
|
||||
if ((int_status & FW_MAILBOX_INT) &&
|
||||
bdev->data->chipid == 0x7921) {
|
||||
sdio_writel(bdev->func, PH2DSM0R_DRIVER_OWN,
|
||||
MTK_REG_PH2DSM0R, 0);
|
||||
}
|
||||
|
||||
if (int_status & FW_OWN_BACK_INT)
|
||||
bt_dev_dbg(bdev->hdev, "Get fw own back");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user