|
@@ -225,3 +225,97 @@ static struct platform_device omap3isp_device = {
|
|
|
.resource = omap3isp_resources,
|
|
|
};
|
|
|
|
|
|
+static struct omap_iommu_arch_data omap3_isp_iommu = {
|
|
|
+ .name = "mmu_isp",
|
|
|
+};
|
|
|
+
|
|
|
+int omap3_init_camera(struct isp_platform_data *pdata)
|
|
|
+{
|
|
|
+ omap3isp_device.dev.platform_data = pdata;
|
|
|
+ omap3isp_device.dev.archdata.iommu = &omap3_isp_iommu;
|
|
|
+
|
|
|
+ return platform_device_register(&omap3isp_device);
|
|
|
+}
|
|
|
+
|
|
|
+#else /* !CONFIG_IOMMU_API */
|
|
|
+
|
|
|
+int omap3_init_camera(struct isp_platform_data *pdata)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+#endif
|
|
|
+
|
|
|
+static inline void omap_init_camera(void)
|
|
|
+{
|
|
|
+#if defined(CONFIG_VIDEO_OMAP2) || defined(CONFIG_VIDEO_OMAP2_MODULE)
|
|
|
+ if (cpu_is_omap24xx())
|
|
|
+ platform_device_register(&omap2cam_device);
|
|
|
+#endif
|
|
|
+}
|
|
|
+
|
|
|
+int __init omap4_keyboard_init(struct omap4_keypad_platform_data
|
|
|
+ *sdp4430_keypad_data, struct omap_board_data *bdata)
|
|
|
+{
|
|
|
+ struct platform_device *pdev;
|
|
|
+ struct omap_hwmod *oh;
|
|
|
+ struct omap4_keypad_platform_data *keypad_data;
|
|
|
+ unsigned int id = -1;
|
|
|
+ char *oh_name = "kbd";
|
|
|
+ char *name = "omap4-keypad";
|
|
|
+
|
|
|
+ oh = omap_hwmod_lookup(oh_name);
|
|
|
+ if (!oh) {
|
|
|
+ pr_err("Could not look up %s\n", oh_name);
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
+ keypad_data = sdp4430_keypad_data;
|
|
|
+
|
|
|
+ pdev = omap_device_build(name, id, oh, keypad_data,
|
|
|
+ sizeof(struct omap4_keypad_platform_data), NULL, 0, 0);
|
|
|
+
|
|
|
+ if (IS_ERR(pdev)) {
|
|
|
+ WARN(1, "Can't build omap_device for %s:%s.\n",
|
|
|
+ name, oh->name);
|
|
|
+ return PTR_ERR(pdev);
|
|
|
+ }
|
|
|
+ oh->mux = omap_hwmod_mux_init(bdata->pads, bdata->pads_cnt);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+#if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
|
|
|
+static inline void __init omap_init_mbox(void)
|
|
|
+{
|
|
|
+ struct omap_hwmod *oh;
|
|
|
+ struct platform_device *pdev;
|
|
|
+
|
|
|
+ oh = omap_hwmod_lookup("mailbox");
|
|
|
+ if (!oh) {
|
|
|
+ pr_err("%s: unable to find hwmod\n", __func__);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0, NULL, 0, 0);
|
|
|
+ WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n",
|
|
|
+ __func__, PTR_ERR(pdev));
|
|
|
+}
|
|
|
+#else
|
|
|
+static inline void omap_init_mbox(void) { }
|
|
|
+#endif /* CONFIG_OMAP_MBOX_FWK */
|
|
|
+
|
|
|
+static inline void omap_init_sti(void) {}
|
|
|
+
|
|
|
+#if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE)
|
|
|
+
|
|
|
+static struct platform_device omap_pcm = {
|
|
|
+ .name = "omap-pcm-audio",
|
|
|
+ .id = -1,
|
|
|
+};
|
|
|
+
|
|
|
+static void omap_init_audio(void)
|
|
|
+{
|
|
|
+ platform_device_register(&omap_pcm);
|
|
|
+}
|
|
|
+
|