Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mailbox/omap: simplify the fifo assignment by using macros

The OMAP mailbox IP has two different type of interrupt configuration
registers between OMAP4+ SoCs and OMAP2/3 SoCs. Simplify the current
interrupt configuration by using a single macro that translates the
two variants.

Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>

authored by

Suman Anna and committed by
Tony Lindgren
ef45eae6 fe714a46

+16 -13
+16 -13
drivers/mailbox/mailbox-omap2.c
··· 25 25 #define MAILBOX_MESSAGE(m) (0x040 + 4 * (m)) 26 26 #define MAILBOX_FIFOSTATUS(m) (0x080 + 4 * (m)) 27 27 #define MAILBOX_MSGSTATUS(m) (0x0c0 + 4 * (m)) 28 - #define MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u)) 29 - #define MAILBOX_IRQENABLE(u) (0x104 + 8 * (u)) 28 + 29 + #define OMAP2_MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u)) 30 + #define OMAP2_MAILBOX_IRQENABLE(u) (0x104 + 8 * (u)) 30 31 31 32 #define OMAP4_MAILBOX_IRQSTATUS(u) (0x104 + 0x10 * (u)) 32 33 #define OMAP4_MAILBOX_IRQENABLE(u) (0x108 + 0x10 * (u)) 33 34 #define OMAP4_MAILBOX_IRQENABLE_CLR(u) (0x10c + 0x10 * (u)) 35 + 36 + #define MAILBOX_IRQSTATUS(type, u) (type ? OMAP4_MAILBOX_IRQSTATUS(u) : \ 37 + OMAP2_MAILBOX_IRQSTATUS(u)) 38 + #define MAILBOX_IRQENABLE(type, u) (type ? OMAP4_MAILBOX_IRQENABLE(u) : \ 39 + OMAP2_MAILBOX_IRQENABLE(u)) 40 + #define MAILBOX_IRQDISABLE(type, u) (type ? OMAP4_MAILBOX_IRQENABLE_CLR(u) \ 41 + : OMAP2_MAILBOX_IRQENABLE(u)) 34 42 35 43 #define MAILBOX_IRQ_NEWMSG(m) (1 << (2 * (m))) 36 44 #define MAILBOX_IRQ_NOTFULL(m) (1 << (2 * (m) + 1)) ··· 235 227 struct omap_mbox2_priv *priv, *privblk; 236 228 struct omap_mbox_pdata *pdata = pdev->dev.platform_data; 237 229 struct omap_mbox_dev_info *info; 230 + u32 intr_type; 238 231 int i; 239 232 240 233 if (!pdata || !pdata->info_cnt || !pdata->info) { ··· 260 251 return -ENOMEM; 261 252 262 253 info = pdata->info; 254 + intr_type = pdata->intr_type; 263 255 mbox = mboxblk; 264 256 priv = privblk; 265 257 for (i = 0; i < pdata->info_cnt; i++, info++, priv++) { ··· 270 260 priv->rx_fifo.msg_stat = MAILBOX_MSGSTATUS(info->rx_id); 271 261 priv->notfull_bit = MAILBOX_IRQ_NOTFULL(info->tx_id); 272 262 priv->newmsg_bit = MAILBOX_IRQ_NEWMSG(info->rx_id); 273 - if (pdata->intr_type) { 274 - priv->irqenable = OMAP4_MAILBOX_IRQENABLE(info->usr_id); 275 - priv->irqstatus = OMAP4_MAILBOX_IRQSTATUS(info->usr_id); 276 - priv->irqdisable = 277 - OMAP4_MAILBOX_IRQENABLE_CLR(info->usr_id); 278 - } else { 279 - priv->irqenable = MAILBOX_IRQENABLE(info->usr_id); 280 - priv->irqstatus = MAILBOX_IRQSTATUS(info->usr_id); 281 - priv->irqdisable = MAILBOX_IRQENABLE(info->usr_id); 282 - } 283 - priv->intr_type = pdata->intr_type; 263 + priv->irqenable = MAILBOX_IRQENABLE(intr_type, info->usr_id); 264 + priv->irqstatus = MAILBOX_IRQSTATUS(intr_type, info->usr_id); 265 + priv->irqdisable = MAILBOX_IRQDISABLE(intr_type, info->usr_id); 266 + priv->intr_type = intr_type; 284 267 285 268 mbox->priv = priv; 286 269 mbox->name = info->name;