omap: mailbox: reorganize registering
It's more extensible this way. Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
This commit is contained in:

committed by
Hiroshi DOYU

parent
1f2c4dfd30
commit
898ee75623
@@ -29,6 +29,8 @@
|
||||
|
||||
static void __iomem *mbox_base;
|
||||
|
||||
static struct omap_mbox **list;
|
||||
|
||||
struct omap_mbox1_fifo {
|
||||
unsigned long cmd;
|
||||
unsigned long data;
|
||||
@@ -142,44 +144,44 @@ struct omap_mbox mbox_dsp_info = {
|
||||
.priv = &omap1_mbox_dsp_priv,
|
||||
};
|
||||
|
||||
struct omap_mbox *omap1_mboxes[] = { &mbox_dsp_info, NULL };
|
||||
|
||||
static int __devinit omap1_mbox_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct resource *res;
|
||||
struct resource *mem;
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
/* MBOX base */
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (unlikely(!res)) {
|
||||
dev_err(&pdev->dev, "invalid mem resource\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
list = omap1_mboxes;
|
||||
|
||||
mbox_base = ioremap(res->start, resource_size(res));
|
||||
list[0]->irq = platform_get_irq_byname(pdev, "dsp");
|
||||
|
||||
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
mbox_base = ioremap(mem->start, resource_size(mem));
|
||||
if (!mbox_base)
|
||||
return -ENOMEM;
|
||||
|
||||
/* DSP IRQ */
|
||||
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
||||
if (unlikely(!res)) {
|
||||
dev_err(&pdev->dev, "invalid irq resource\n");
|
||||
ret = -ENODEV;
|
||||
goto err_out;
|
||||
for (i = 0; list[i]; i++) {
|
||||
ret = omap_mbox_register(&pdev->dev, list[i]);
|
||||
if (ret)
|
||||
goto err_out;
|
||||
}
|
||||
mbox_dsp_info.irq = res->start;
|
||||
|
||||
ret = omap_mbox_register(&pdev->dev, &mbox_dsp_info);
|
||||
if (ret)
|
||||
goto err_out;
|
||||
return 0;
|
||||
|
||||
err_out:
|
||||
while (i--)
|
||||
omap_mbox_unregister(list[i]);
|
||||
iounmap(mbox_base);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __devexit omap1_mbox_remove(struct platform_device *pdev)
|
||||
{
|
||||
omap_mbox_unregister(&mbox_dsp_info);
|
||||
int i;
|
||||
|
||||
for (i = 0; list[i]; i++)
|
||||
omap_mbox_unregister(list[i]);
|
||||
|
||||
iounmap(mbox_base);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user