lantiq: align falcon code with ar9-vr9 code
Signed-off-by: Stefan Koch <stefan.koch10@gmail.com>
This commit is contained in:
parent
001a50d314
commit
49acec5b5f
1 changed files with 3 additions and 70 deletions
|
@ -184,7 +184,7 @@
|
||||||
TRACE (MPS, DBG_LEVEL_HIGH, ("Providing Buffers...\n"));
|
TRACE (MPS, DBG_LEVEL_HIGH, ("Providing Buffers...\n"));
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/mps/drv_mps_vmmc_falcon.c
|
+++ b/src/mps/drv_mps_vmmc_falcon.c
|
||||||
@@ -0,0 +1,463 @@
|
@@ -0,0 +1,396 @@
|
||||||
+/******************************************************************************
|
+/******************************************************************************
|
||||||
+
|
+
|
||||||
+ Copyright (c) 2009
|
+ Copyright (c) 2009
|
||||||
|
@ -254,12 +254,7 @@
|
||||||
+IFX_void_t ifx_mps_release (IFX_void_t);
|
+IFX_void_t ifx_mps_release (IFX_void_t);
|
||||||
+extern IFX_uint32_t ifx_mps_reset_structures (mps_comm_dev * pMPSDev);
|
+extern IFX_uint32_t ifx_mps_reset_structures (mps_comm_dev * pMPSDev);
|
||||||
+extern IFX_int32_t ifx_mps_bufman_close (IFX_void_t);
|
+extern IFX_int32_t ifx_mps_bufman_close (IFX_void_t);
|
||||||
+IFX_int32_t ifx_mps_wdog_callback (IFX_ulong_t wdog_cleared_ok_count);
|
|
||||||
+extern IFXOS_event_t fw_ready_evt;
|
+extern IFXOS_event_t fw_ready_evt;
|
||||||
+/* ============================= */
|
|
||||||
+/* Local function declaration */
|
|
||||||
+/* ============================= */
|
|
||||||
+static IFX_int32_t ifx_mps_fw_wdog_start_ar9(IFX_void_t);
|
|
||||||
+
|
+
|
||||||
+/* ============================= */
|
+/* ============================= */
|
||||||
+/* Local variable definition */
|
+/* Local variable definition */
|
||||||
|
@ -277,20 +272,6 @@
|
||||||
+ ******************************************************************************/
|
+ ******************************************************************************/
|
||||||
+
|
+
|
||||||
+/**
|
+/**
|
||||||
+ * Start AR9 EDSP firmware watchdog mechanism.
|
|
||||||
+ * Called after download and startup of VPE1.
|
|
||||||
+ *
|
|
||||||
+ * \param none
|
|
||||||
+ * \return 0 IFX_SUCCESS
|
|
||||||
+ * \return -1 IFX_ERROR
|
|
||||||
+ * \ingroup Internal
|
|
||||||
+ */
|
|
||||||
+IFX_int32_t ifx_mps_fw_wdog_start_ar9()
|
|
||||||
+{
|
|
||||||
+ return IFX_SUCCESS;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Firmware download to Voice CPU
|
+ * Firmware download to Voice CPU
|
||||||
+ * This function performs a firmware download to the coprocessor.
|
+ * This function performs a firmware download to the coprocessor.
|
||||||
+ *
|
+ *
|
||||||
|
@ -447,7 +428,7 @@
|
||||||
+ TRACE (MPS, DBG_LEVEL_HIGH,
|
+ TRACE (MPS, DBG_LEVEL_HIGH,
|
||||||
+ ("MPS: FW checksum error: img=0x%08x calc=0x%08x\r\n",
|
+ ("MPS: FW checksum error: img=0x%08x calc=0x%08x\r\n",
|
||||||
+ pFW_img_data->crc32, cksum));
|
+ pFW_img_data->crc32, cksum));
|
||||||
+ /*return IFX_ERROR;*/
|
+ return IFX_ERROR;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ else
|
+ else
|
||||||
|
@ -458,10 +439,7 @@
|
||||||
+
|
+
|
||||||
+ /* start VPE1 */
|
+ /* start VPE1 */
|
||||||
+ ifx_mps_release ();
|
+ ifx_mps_release ();
|
||||||
+#if 0
|
+
|
||||||
+ /* start FW watchdog mechanism */
|
|
||||||
+ ifx_mps_fw_wdog_start_ar9();
|
|
||||||
+#endif
|
|
||||||
+ /* get FW version */
|
+ /* get FW version */
|
||||||
+ return ifx_mps_get_fw_version (0);
|
+ return ifx_mps_get_fw_version (0);
|
||||||
+}
|
+}
|
||||||
|
@ -486,8 +464,6 @@
|
||||||
+ ifx_mps_init_gpt ();
|
+ ifx_mps_init_gpt ();
|
||||||
+ /* let CPU1 run */
|
+ /* let CPU1 run */
|
||||||
+ ifx_mps_release ();
|
+ ifx_mps_release ();
|
||||||
+ /* start FW watchdog mechanism */
|
|
||||||
+ ifx_mps_fw_wdog_start_ar9();
|
|
||||||
+ TRACE (MPS, DBG_LEVEL_HIGH, ("IFX_MPS: Restarting firmware..."));
|
+ TRACE (MPS, DBG_LEVEL_HIGH, ("IFX_MPS: Restarting firmware..."));
|
||||||
+ return ifx_mps_get_fw_version (0);
|
+ return ifx_mps_get_fw_version (0);
|
||||||
+}
|
+}
|
||||||
|
@ -502,10 +478,6 @@
|
||||||
+{
|
+{
|
||||||
+ if (vpe1_started)
|
+ if (vpe1_started)
|
||||||
+ {
|
+ {
|
||||||
+ /* stop software watchdog timer */
|
|
||||||
+ vpe1_sw_wdog_stop (0);
|
|
||||||
+ /* clean up the BSP callback function */
|
|
||||||
+ vpe1_sw_wdog_register_reset_handler (IFX_NULL);
|
|
||||||
+ /* stop VPE1 */
|
+ /* stop VPE1 */
|
||||||
+ vpe1_sw_stop (0);
|
+ vpe1_sw_stop (0);
|
||||||
+ vpe1_started = 0;
|
+ vpe1_started = 0;
|
||||||
|
@ -528,8 +500,6 @@
|
||||||
+ /* if VPE1 is already started, stop it */
|
+ /* if VPE1 is already started, stop it */
|
||||||
+ if (vpe1_started)
|
+ if (vpe1_started)
|
||||||
+ {
|
+ {
|
||||||
+ /* stop software watchdog timer first */
|
|
||||||
+ vpe1_sw_wdog_stop (0);
|
|
||||||
+ vpe1_sw_stop (0);
|
+ vpe1_sw_stop (0);
|
||||||
+ vpe1_started = 0;
|
+ vpe1_started = 0;
|
||||||
+ }
|
+ }
|
||||||
|
@ -577,43 +547,6 @@
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
+/**
|
+/**
|
||||||
+ * WDT callback.
|
|
||||||
+ * This function is called by BSP (module softdog_vpe) in case if software
|
|
||||||
+ * watchdog timer expiration is detected by BSP.
|
|
||||||
+ * This function needs to be registered at BSP as WDT callback using
|
|
||||||
+ * vpe1_sw_wdog_register_reset_handler() API.
|
|
||||||
+ *
|
|
||||||
+ * \return 0 IFX_SUCCESS, cannot fail
|
|
||||||
+ * \ingroup Internal
|
|
||||||
+ */
|
|
||||||
+IFX_int32_t ifx_mps_wdog_callback (IFX_ulong_t wdog_cleared_ok_count)
|
|
||||||
+{
|
|
||||||
+#ifdef DEBUG
|
|
||||||
+ TRACE (MPS, DBG_LEVEL_HIGH,
|
|
||||||
+ ("MPS: watchdog callback! arg=0x%08x\r\n", wdog_cleared_ok_count));
|
|
||||||
+#endif /* DEBUG */
|
|
||||||
+
|
|
||||||
+ /* reset SmartSLIC is done by FW */
|
|
||||||
+ /* recalculate and compare the firmware checksum */
|
|
||||||
+ ifx_mps_fw_crc_compare(cpu1_base_addr, pFW_img_data);
|
|
||||||
+
|
|
||||||
+ /* dump exception area on a console */
|
|
||||||
+ ifx_mps_dump_fw_xcpt(cpu1_base_addr, pFW_img_data);
|
|
||||||
+
|
|
||||||
+ if (IFX_NULL != ifx_wdog_callback)
|
|
||||||
+ {
|
|
||||||
+ /* call VMMC driver */
|
|
||||||
+ ifx_wdog_callback (wdog_cleared_ok_count);
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ TRACE (MPS, DBG_LEVEL_HIGH,
|
|
||||||
+ (KERN_WARNING "MPS: VMMC watchdog timer callback is NULL.\r\n"));
|
|
||||||
+ }
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Register WDT callback.
|
+ * Register WDT callback.
|
||||||
+ * This function is called by VMMC driver to register its callback in
|
+ * This function is called by VMMC driver to register its callback in
|
||||||
+ * the MPS driver.
|
+ * the MPS driver.
|
||||||
|
|
Loading…
Reference in a new issue