2 * omap iommu: omap3 device registration
4 * Copyright (C) 2008-2009 Nokia Corporation
6 * Written by Hiroshi DOYU <Hiroshi.DOYU@nokia.com>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
13 #include <linux/platform_device.h>
15 #include <mach/iommu.h>
17 #define OMAP3_MMU1_BASE 0x480bd400
18 #define OMAP3_MMU2_BASE 0x5d000000
19 #define OMAP3_MMU1_IRQ 24
20 #define OMAP3_MMU2_IRQ 28
23 static unsigned long iommu_base
[] __initdata
= {
28 static int iommu_irq
[] __initdata
= {
33 static const struct iommu_platform_data omap3_iommu_pdata
[] __initconst
= {
37 .clk_name
= "cam_ick",
39 #if defined(CONFIG_MPU_BRIDGE_IOMMU)
43 .clk_name
= "iva2_ck",
47 #define NR_IOMMU_DEVICES ARRAY_SIZE(omap3_iommu_pdata)
49 static struct platform_device
*omap3_iommu_pdev
[NR_IOMMU_DEVICES
];
51 static int __init
omap3_iommu_init(void)
55 for (i
= 0; i
< NR_IOMMU_DEVICES
; i
++) {
56 struct platform_device
*pdev
;
57 struct resource res
[2];
59 pdev
= platform_device_alloc("omap-iommu", i
);
65 memset(res
, 0, sizeof(res
));
66 res
[0].start
= iommu_base
[i
];
67 res
[0].end
= iommu_base
[i
] + MMU_REG_SIZE
- 1;
68 res
[0].flags
= IORESOURCE_MEM
;
69 res
[1].start
= res
[1].end
= iommu_irq
[i
];
70 res
[1].flags
= IORESOURCE_IRQ
;
72 err
= platform_device_add_resources(pdev
, res
,
76 err
= platform_device_add_data(pdev
, &omap3_iommu_pdata
[i
],
77 sizeof(omap3_iommu_pdata
[0]));
80 err
= platform_device_add(pdev
);
83 omap3_iommu_pdev
[i
] = pdev
;
89 platform_device_put(omap3_iommu_pdev
[i
]);
92 module_init(omap3_iommu_init
);
94 static void __exit
omap3_iommu_exit(void)
98 for (i
= 0; i
< NR_IOMMU_DEVICES
; i
++)
99 platform_device_unregister(omap3_iommu_pdev
[i
]);
101 module_exit(omap3_iommu_exit
);
103 MODULE_AUTHOR("Hiroshi DOYU");
104 MODULE_DESCRIPTION("omap iommu: omap3 device registration");
105 MODULE_LICENSE("GPL v2");