Message ID | bddfacd096b6fe927d08e48ad6993c17c9954028.1641972745.git.objelf@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/7] Bluetooth: mt7921s: fix firmware coredump retrieve | expand |
Hi Sean, > 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: db57b625912a ("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> > --- > drivers/bluetooth/btmtksdio.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) all 7 patches have been applied to bluetooth-next tree. Regards Marcel
diff --git a/drivers/bluetooth/btmtksdio.c b/drivers/bluetooth/btmtksdio.c index 25fb9c79b1f4..784e65c3fddd 100644 --- a/drivers/bluetooth/btmtksdio.c +++ b/drivers/bluetooth/btmtksdio.c @@ -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");