staging: tidspbridge: use scm functions to set boot address and mode
authorOmar Ramirez Luna <omar.ramirez@copitl.com>
Thu, 10 Jan 2013 09:37:01 +0000 (03:37 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 18 Jan 2013 00:47:13 +0000 (16:47 -0800)
Instead of ioremapping SCM registers, use the correspondent layer
to write into them.

This allows us to get rid of a layer violation, since the registers
are no longer touched by driver code.

Signed-off-by: Omar Ramirez Luna <omar.ramirez@copitl.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/tidspbridge/core/tiomap3430.c

index f619fb3..b770b22 100644 (file)
 #define PAGES_II_LVL_TABLE   512
 #define PHYS_TO_PAGE(phys)      pfn_to_page((phys) >> PAGE_SHIFT)
 
-/*
- * This is a totally ugly layer violation, but needed until
- * omap_ctrl_set_dsp_boot*() are provided.
- */
-#define OMAP3_IVA2_BOOTMOD_IDLE 1
-#define OMAP2_CONTROL_GENERAL 0x270
-#define OMAP343X_CONTROL_IVA2_BOOTADDR (OMAP2_CONTROL_GENERAL + 0x0190)
-#define OMAP343X_CONTROL_IVA2_BOOTMOD (OMAP2_CONTROL_GENERAL + 0x0194)
+/* IVA Boot modes */
+#define DIRECT         0
+#define IDLE           1
 
 /* Forward Declarations: */
 static int bridge_brd_monitor(struct bridge_dev_context *dev_ctxt);
@@ -423,29 +418,14 @@ static int bridge_brd_start(struct bridge_dev_context *dev_ctxt,
 
                /* Assert RST1 i.e only the RST only for DSP megacell */
                if (!status) {
-                       /*
-                        * XXX: OMAP343X_CTRL_BASE ioremapping  MUST be removed once ctrl
-                        * function is made available.
-                        */
-                       void __iomem *ctrl = ioremap(0x48002000, SZ_4K);
-                       if (!ctrl) {
-                               iounmap(sync_addr);
-                               return -ENOMEM;
-                       }
-
                        (*pdata->dsp_prm_rmw_bits)(OMAP3430_RST1_IVA2_MASK,
                                        OMAP3430_RST1_IVA2_MASK, OMAP3430_IVA2_MOD,
                                        OMAP2_RM_RSTCTRL);
-                       /* Mask address with 1K for compatibility */
-                       __raw_writel(dsp_addr & OMAP3_IVA2_BOOTADDR_MASK,
-                                       ctrl + OMAP343X_CONTROL_IVA2_BOOTADDR);
-                       /*
-                        * Set bootmode to self loop if dsp_debug flag is true
-                        */
-                       __raw_writel((dsp_debug) ? OMAP3_IVA2_BOOTMOD_IDLE : 0,
-                                       ctrl + OMAP343X_CONTROL_IVA2_BOOTMOD);
 
-                       iounmap(ctrl);
+                       /* Mask address with 1K for compatibility */
+                       pdata->set_bootaddr(dsp_addr &
+                                               OMAP3_IVA2_BOOTADDR_MASK);
+                       pdata->set_bootmode(dsp_debug ? IDLE : DIRECT);
                }
        }
        if (!status) {