Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4cb55ca1 authored by Omar Ramirez Luna's avatar Omar Ramirez Luna Committed by Greg Kroah-Hartman
Browse files

staging: tidspbridge: use scm functions to set boot address and mode



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: default avatarOmar Ramirez Luna <omar.ramirez@copitl.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 49720e01
Loading
Loading
Loading
Loading
+7 −27
Original line number Diff line number Diff line
@@ -70,14 +70,9 @@
#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) {