return status;
}
-/*
- * ======== bridge_brd_delete ========
- * purpose:
- * Puts DSP in Low power mode
- *
- * Preconditions :
- * a) None
- */
-static int bridge_brd_delete(struct bridge_dev_context *dev_ctxt)
-{
- int status = 0;
- struct bridge_dev_context *dev_context = dev_ctxt;
- struct pg_table_attrs *pt_attrs;
- int clk_status;
- struct dspbridge_platform_data *pdata =
- omap_dspbridge_dev->dev.platform_data;
-
- if (dev_context->dw_brd_state == BRD_STOPPED)
- return status;
-
- /* as per TRM, it is advised to first drive
- * the IVA2 to 'Standby' mode, before turning off the clocks.. This is
- * to ensure that there are no pending L3 or other transactons from
- * IVA2 */
- status = sleep_dsp(dev_context, PWR_EMERGENCYDEEPSLEEP, NULL);
- clk_status = dsp_clk_disable(DSP_CLK_IVA2);
-
- /* Release the Ext Base virtual Address as the next DSP Program
- * may have a different load address */
- if (dev_context->dw_dsp_ext_base_addr)
- dev_context->dw_dsp_ext_base_addr = 0;
-
- dev_context->dw_brd_state = BRD_STOPPED; /* update board state */
-
- /* This is a good place to clear the MMU page tables as well */
- if (dev_context->pt_attrs) {
- pt_attrs = dev_context->pt_attrs;
- memset((u8 *) pt_attrs->l1_base_va, 0x00, pt_attrs->l1_size);
- memset((u8 *) pt_attrs->l2_base_va, 0x00, pt_attrs->l2_size);
- memset((u8 *) pt_attrs->pg_info, 0x00,
- (pt_attrs->l2_num_pages * sizeof(struct page_info)));
- }
- /* Disable the mail box interrupts */
- if (dev_context->mbox) {
- omap_mbox_disable_irq(dev_context->mbox, IRQ_RX);
- omap_mbox_put(dev_context->mbox);
- dev_context->mbox = NULL;
- }
- /* Reset IVA2 clocks*/
- (*pdata->dsp_prm_write)(OMAP3430_RST1_IVA2_MASK | OMAP3430_RST2_IVA2_MASK |
- OMAP3430_RST3_IVA2_MASK, OMAP3430_IVA2_MOD, OMAP2_RM_RSTCTRL);
-
- return status;
-}
-
/*
* ======== bridge_brd_status ========
* Returns the board status.
return -EFAULT;
/* first put the device to stop state */
- bridge_brd_delete(dev_context);
+ bridge_brd_stop(dev_context);
if (dev_context->pt_attrs) {
pt_attrs = dev_context->pt_attrs;
kfree(pt_attrs->pg_info);