aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorten Borup Petersen <morten.petersen@arm.com>2019-06-25 13:23:51 +0100
committerTushar Khandelwal <tushar.khandelwal@arm.com>2019-06-27 18:13:37 +0100
commiteb54338f4b52c70f368a2c54d42c6826435b181a (patch)
treee4327da0a10c94176129e38ba12dc279603826ba
parentab574f22b8fbb0382b6971c95d0d67c8f13cde1f (diff)
mailbox: enable combined receiver interrupt when using MHUv2.1CORSTONE-700-19.02corstone700-19.02
Signed-off-by: Morten Borup Petersen <morten.petersen@arm.com>
-rw-r--r--drivers/mailbox/arm_mhu_v2.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/mailbox/arm_mhu_v2.c b/drivers/mailbox/arm_mhu_v2.c
index 44ad125bf1c6..7780958a16ab 100644
--- a/drivers/mailbox/arm_mhu_v2.c
+++ b/drivers/mailbox/arm_mhu_v2.c
@@ -24,6 +24,11 @@
#define MHU_V2_REG_MSG_NO_CAP_OFS 0xF80
#define MHU_V2_REG_ACC_REQ_OFS 0xF88
#define MHU_V2_REG_ACC_RDY_OFS 0xF8C
+#define MHU_V2_INT_EN_OFS 0xF98
+#define MHU_V2_AIDR_OFS 0xFCC
+
+#define MHU_V2_CHCOMB BIT(2)
+#define MHU_V2_AIDR_MINOR(_reg) ((_reg) & 0xF)
#define MHU_V2_CHANS 2
@@ -117,6 +122,16 @@ static const struct mbox_chan_ops mhuv2_ops = {
.last_tx_done = mhuv2_last_tx_done,
};
+void mhuv2_check_enable_cmbint(struct mhuv2_link *link)
+{
+ const u32 aidr = readl_relaxed(link->rx_reg + MHU_V2_AIDR_OFS);
+
+ if (MHU_V2_AIDR_MINOR(aidr) == 1) {
+ // Enable combined receiver interrupt for MHUv2.1
+ writel_relaxed(MHU_V2_CHCOMB, link->rx_reg + MHU_V2_INT_EN_OFS);
+ }
+}
+
static int mhuv2_probe(struct amba_device *adev, const struct amba_id *id)
{
int i, err;
@@ -157,6 +172,7 @@ static int mhuv2_probe(struct amba_device *adev, const struct amba_id *id)
mhuv2->mlink[i].irq = adev->irq[i];
mhuv2->mlink[i].rx_reg = rx_base + i*0x4;
mhuv2->mlink[i].tx_reg = tx_base + i*0x4;
+ mhuv2_check_enable_cmbint(&mhuv2->mlink[i]);
}
mhuv2->base = tx_base;