static int __devexit omap2_mbox_remove(struct platform_device *pdev) { #if defined(CONFIG_ARCH_OMAP2420) omap_mbox_unregister(&mbox_iva_info); #endif omap_mbox_unregister(&mbox_dsp_info); iounmap(mbox_base); return 0; }
static int __devexit omap2_mbox_remove(struct platform_device *pdev) { #if defined(CONFIG_ARCH_OMAP2420) omap_mbox_unregister(&mbox_iva_info); #endif if (cpu_is_omap44xx()) { omap_mbox_unregister(&mbox_2_info); omap_mbox_unregister(&mbox_1_info); } else omap_mbox_unregister(&mbox_dsp_info); iounmap(mbox_base); return 0; }
static int __devinit omap2_mbox_probe(struct platform_device *pdev) { struct resource *res; int ret; /* MBOX base */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (unlikely(!res)) { dev_err(&pdev->dev, "invalid mem resource\n"); return -ENODEV; } mbox_base = ioremap(res->start, res->end - res->start); if (!mbox_base) return -ENOMEM; /* DSP or IVA2 IRQ */ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (unlikely(!res)) { dev_err(&pdev->dev, "invalid irq resource\n"); ret = -ENODEV; goto err_dsp; } mbox_dsp_info.irq = res->start; ret = omap_mbox_register(&pdev->dev, &mbox_dsp_info); if (ret) goto err_dsp; #if defined(CONFIG_ARCH_OMAP2420) /* IVA */ if (cpu_is_omap2420()) { /* IVA IRQ */ res = platform_get_resource(pdev, IORESOURCE_IRQ, 1); if (unlikely(!res)) { dev_err(&pdev->dev, "invalid irq resource\n"); ret = -ENODEV; goto err_iva1; } mbox_iva_info.irq = res->start; ret = omap_mbox_register(&pdev->dev, &mbox_iva_info); if (ret) goto err_iva1; } #endif return 0; err_iva1: omap_mbox_unregister(&mbox_dsp_info); err_dsp: iounmap(mbox_base); return ret; }
static int __devexit omap1_mbox_remove(struct platform_device *pdev) { omap_mbox_unregister(); iounmap(mbox_base); return 0; }
static int __devexit omap1_mbox_remove(struct platform_device *pdev) { omap_mbox_unregister(&mbox_dsp_info); return 0; }
static int __devinit omap2_mbox_probe(struct platform_device *pdev) { struct resource *res; int ret; /* MBOX base */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (unlikely(!res)) { dev_err(&pdev->dev, "invalid mem resource\n"); return -ENODEV; } mbox_base = ioremap(res->start, resource_size(res)); if (!mbox_base) return -ENOMEM; if (cpu_is_omap44xx()) { mbox_ctx = kzalloc(sizeof(u32) * OMAP4_MBOX_NR_REGS, GFP_KERNEL); nr_mbox_users = OMAP4_MBOX_NUM_USER; } else { mbox_ctx = kzalloc(sizeof(u32) * MBOX_NR_REGS, GFP_KERNEL); nr_mbox_users = MBOX_NUM_USER; } if (!mbox_ctx) { ret = -ENOMEM; goto err_dsp; } /* DSP or IVA2 IRQ */ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (unlikely(!res)) { dev_err(&pdev->dev, "invalid irq resource\n"); ret = -ENODEV; goto err_dsp; } if (cpu_is_omap44xx()) { mbox_1_info.irq = res->start; ret = omap_mbox_register(&pdev->dev, &mbox_1_info); } else { mbox_dsp_info.irq = res->start; ret = omap_mbox_register(&pdev->dev, &mbox_dsp_info); } if (ret) goto err_dsp; if (cpu_is_omap44xx()) { mbox_2_info.irq = res->start; ret = omap_mbox_register(&pdev->dev, &mbox_2_info); if (ret) { omap_mbox_unregister(&mbox_1_info); goto err_dsp; } } #if defined(CONFIG_ARCH_OMAP2420) /* IVA */ if (cpu_is_omap2420()) { /* IVA IRQ */ res = platform_get_resource(pdev, IORESOURCE_IRQ, 1); if (unlikely(!res)) { dev_err(&pdev->dev, "invalid irq resource\n"); ret = -ENODEV; omap_mbox_unregister(&mbox_dsp_info); goto err_dsp; } mbox_iva_info.irq = res->start; ret = omap_mbox_register(&pdev->dev, &mbox_iva_info); if (ret) { omap_mbox_unregister(&mbox_dsp_info); goto err_dsp; } } #endif return 0; err_dsp: iounmap(mbox_base); return ret; }