21 lines
871 B
Diff
21 lines
871 B
Diff
diff --git a/drivers/bluetooth/btintel_pcie.c b/drivers/bluetooth/btintel_pcie.c
|
|
--- a/drivers/bluetooth/btintel_pcie.c
|
|
+++ b/drivers/bluetooth/btintel_pcie.c
|
|
@@ -3069,10 +3069,12 @@ static int btintel_pcie_set_dxstate(struct btintel_pcie_data *data, u32 dxstate)
|
|
"Timeout (%u ms) on alive interrupt for D%d entry, retry count %d",
|
|
dx_intr_timeout_ms, dxstate, retry);
|
|
|
|
- /* clear gp0 cause */
|
|
- btintel_pcie_clr_reg_bits(data,
|
|
- BTINTEL_PCIE_CSR_MSIX_HW_INT_CAUSES,
|
|
- BTINTEL_PCIE_MSIX_HW_INT_CAUSES_GP0);
|
|
+ /* MSIX_HW_INT_CAUSES is W1C. Write only GP0 so other
|
|
+ * pending causes are not acknowledged here.
|
|
+ */
|
|
+ btintel_pcie_wr_reg32(data,
|
|
+ BTINTEL_PCIE_CSR_MSIX_HW_INT_CAUSES,
|
|
+ BTINTEL_PCIE_MSIX_HW_INT_CAUSES_GP0);
|
|
}
|
|
|
|
/* gp0_received is set at the top of the handler, before the switch on
|