| From 1c75e7d566e29258e9daf7b1548f2d681efb4aea Mon Sep 17 00:00:00 2001 |
| From: Viresh Kumar <viresh.kumar@linaro.org> |
| Date: Wed, 30 Dec 2020 10:12:04 +0530 |
| Subject: [PATCH 05/22] mailbox: arm_mhuv2: Fix sparse warnings |
| |
| This patch fixes a bunch of sparse warnings in the newly added arm_mhuv2 |
| driver. |
| |
| drivers/mailbox/arm_mhuv2.c:506:24: warning: incorrect type in argument 1 (different address spaces) |
| drivers/mailbox/arm_mhuv2.c:506:24: expected void const volatile [noderef] __iomem *addr |
| drivers/mailbox/arm_mhuv2.c:506:24: got unsigned int [usertype] * |
| drivers/mailbox/arm_mhuv2.c:547:42: warning: incorrect type in argument 2 (different address spaces) |
| drivers/mailbox/arm_mhuv2.c:547:42: expected unsigned int [usertype] *reg |
| drivers/mailbox/arm_mhuv2.c:547:42: got unsigned int [noderef] __iomem * |
| drivers/mailbox/arm_mhuv2.c:625:42: warning: incorrect type in argument 2 (different address spaces) |
| drivers/mailbox/arm_mhuv2.c:625:42: expected unsigned int [usertype] *reg |
| drivers/mailbox/arm_mhuv2.c:625:42: got unsigned int [noderef] __iomem * |
| drivers/mailbox/arm_mhuv2.c:972:24: warning: dereference of noderef expression |
| drivers/mailbox/arm_mhuv2.c:973:22: warning: dereference of noderef expression |
| drivers/mailbox/arm_mhuv2.c:993:25: warning: dereference of noderef expression |
| drivers/mailbox/arm_mhuv2.c:1026:24: warning: dereference of noderef expression |
| drivers/mailbox/arm_mhuv2.c:1027:22: warning: dereference of noderef expression |
| drivers/mailbox/arm_mhuv2.c:1048:17: warning: dereference of noderef expression |
| |
| Reported-by: kernel test robot <lkp@intel.com> |
| Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> |
| Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org> |
| |
| Upstream-Status: Backport [https://lkml.org/lkml/2021/2/9/428] |
| Signed-off-by: Arunachalam Ganapathy <arunachalam.ganapathy@arm.com> |
| --- |
| drivers/mailbox/arm_mhuv2.c | 22 +++++++++++----------- |
| 1 file changed, 11 insertions(+), 11 deletions(-) |
| |
| diff --git a/drivers/mailbox/arm_mhuv2.c b/drivers/mailbox/arm_mhuv2.c |
| index 67fb10885bb4..8223c1005254 100644 |
| --- a/drivers/mailbox/arm_mhuv2.c |
| +++ b/drivers/mailbox/arm_mhuv2.c |
| @@ -238,19 +238,19 @@ struct mhuv2_mbox_chan_priv { |
| }; |
| |
| /* Macro for reading a bitfield within a physically mapped packed struct */ |
| -#define readl_relaxed_bitfield(_regptr, _field) \ |
| +#define readl_relaxed_bitfield(_regptr, _type, _field) \ |
| ({ \ |
| u32 _regval; \ |
| _regval = readl_relaxed((_regptr)); \ |
| - (*(typeof((_regptr)))(&_regval))._field; \ |
| + (*(_type *)(&_regval))._field; \ |
| }) |
| |
| /* Macro for writing a bitfield within a physically mapped packed struct */ |
| -#define writel_relaxed_bitfield(_value, _regptr, _field) \ |
| +#define writel_relaxed_bitfield(_value, _regptr, _type, _field) \ |
| ({ \ |
| u32 _regval; \ |
| _regval = readl_relaxed(_regptr); \ |
| - (*(typeof(_regptr))(&_regval))._field = _value; \ |
| + (*(_type *)(&_regval))._field = _value; \ |
| writel_relaxed(_regval, _regptr); \ |
| }) |
| |
| @@ -496,7 +496,7 @@ static const struct mhuv2_protocol_ops mhuv2_data_transfer_ops = { |
| |
| /* Interrupt handlers */ |
| |
| -static struct mbox_chan *get_irq_chan_comb(struct mhuv2 *mhu, u32 *reg) |
| +static struct mbox_chan *get_irq_chan_comb(struct mhuv2 *mhu, u32 __iomem *reg) |
| { |
| struct mbox_chan *chans = mhu->mbox.chans; |
| int channel = 0, i, offset = 0, windows, protocol, ch_wn; |
| @@ -969,8 +969,8 @@ static int mhuv2_tx_init(struct amba_device *adev, struct mhuv2 *mhu, |
| mhu->mbox.ops = &mhuv2_sender_ops; |
| mhu->send = reg; |
| |
| - mhu->windows = readl_relaxed_bitfield(&mhu->send->mhu_cfg, num_ch); |
| - mhu->minor = readl_relaxed_bitfield(&mhu->send->aidr, arch_minor_rev); |
| + mhu->windows = readl_relaxed_bitfield(&mhu->send->mhu_cfg, struct mhu_cfg_t, num_ch); |
| + mhu->minor = readl_relaxed_bitfield(&mhu->send->aidr, struct aidr_t, arch_minor_rev); |
| |
| spin_lock_init(&mhu->doorbell_pending_lock); |
| |
| @@ -990,7 +990,7 @@ static int mhuv2_tx_init(struct amba_device *adev, struct mhuv2 *mhu, |
| mhu->mbox.txdone_poll = false; |
| mhu->irq = adev->irq[0]; |
| |
| - writel_relaxed_bitfield(1, &mhu->send->int_en, chcomb); |
| + writel_relaxed_bitfield(1, &mhu->send->int_en, struct int_en_t, chcomb); |
| |
| /* Disable all channel interrupts */ |
| for (i = 0; i < mhu->windows; i++) |
| @@ -1023,8 +1023,8 @@ static int mhuv2_rx_init(struct amba_device *adev, struct mhuv2 *mhu, |
| mhu->mbox.ops = &mhuv2_receiver_ops; |
| mhu->recv = reg; |
| |
| - mhu->windows = readl_relaxed_bitfield(&mhu->recv->mhu_cfg, num_ch); |
| - mhu->minor = readl_relaxed_bitfield(&mhu->recv->aidr, arch_minor_rev); |
| + mhu->windows = readl_relaxed_bitfield(&mhu->recv->mhu_cfg, struct mhu_cfg_t, num_ch); |
| + mhu->minor = readl_relaxed_bitfield(&mhu->recv->aidr, struct aidr_t, arch_minor_rev); |
| |
| mhu->irq = adev->irq[0]; |
| if (!mhu->irq) { |
| @@ -1045,7 +1045,7 @@ static int mhuv2_rx_init(struct amba_device *adev, struct mhuv2 *mhu, |
| writel_relaxed(0xFFFFFFFF, &mhu->recv->ch_wn[i].mask_set); |
| |
| if (mhu->minor) |
| - writel_relaxed_bitfield(1, &mhu->recv->int_en, chcomb); |
| + writel_relaxed_bitfield(1, &mhu->recv->int_en, struct int_en_t, chcomb); |
| |
| return 0; |
| } |
| -- |
| 2.17.1 |
| |