lantiq: align falcon code with ar9-vr9 code
authorStefan Koch <stefan.koch10@gmail.com>
Fri, 24 Mar 2017 16:18:06 +0000 (17:18 +0100)
committerJohn Crispin <john@phrozen.org>
Mon, 27 Mar 2017 06:05:53 +0000 (08:05 +0200)
Signed-off-by: Stefan Koch <stefan.koch10@gmail.com>
package/kernel/lantiq/ltq-vmmc/patches/400-falcon.patch

index 9095d38..efd3f85 100644 (file)
     TRACE (MPS, DBG_LEVEL_HIGH, ("Providing Buffers...\n"));
 --- /dev/null
 +++ b/src/mps/drv_mps_vmmc_falcon.c
     TRACE (MPS, DBG_LEVEL_HIGH, ("Providing Buffers...\n"));
 --- /dev/null
 +++ b/src/mps/drv_mps_vmmc_falcon.c
-@@ -0,0 +1,463 @@
+@@ -0,0 +1,396 @@
 +/******************************************************************************
 +
 +                              Copyright (c) 2009
 +/******************************************************************************
 +
 +                              Copyright (c) 2009
 +IFX_void_t ifx_mps_release (IFX_void_t);
 +extern IFX_uint32_t ifx_mps_reset_structures (mps_comm_dev * pMPSDev);
 +extern IFX_int32_t ifx_mps_bufman_close (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_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     */
 + ******************************************************************************/
 +
 +/**
 + ******************************************************************************/
 +
 +/**
-+ * 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
 + * This function performs a firmware download to the coprocessor.
 + *
 + * Firmware download to Voice CPU
 + * This function performs a firmware download to the coprocessor.
 + *
 +         TRACE (MPS, DBG_LEVEL_HIGH,
 +                ("MPS: FW checksum error: img=0x%08x calc=0x%08x\r\n",
 +                pFW_img_data->crc32, cksum));
 +         TRACE (MPS, DBG_LEVEL_HIGH,
 +                ("MPS: FW checksum error: img=0x%08x calc=0x%08x\r\n",
 +                pFW_img_data->crc32, cksum));
-+         /*return IFX_ERROR;*/
++         return IFX_ERROR;
 +      }
 +   }
 +   else
 +      }
 +   }
 +   else
 +
 +   /* start VPE1 */
 +   ifx_mps_release ();
 +
 +   /* start VPE1 */
 +   ifx_mps_release ();
-+#if 0
-+   /* start FW watchdog mechanism */
-+   ifx_mps_fw_wdog_start_ar9();
-+#endif
++
 +   /* get FW version */
 +   return ifx_mps_get_fw_version (0);
 +}
 +   /* get FW version */
 +   return ifx_mps_get_fw_version (0);
 +}
 +   ifx_mps_init_gpt ();
 +   /* let CPU1 run */
 +   ifx_mps_release ();
 +   ifx_mps_init_gpt ();
 +   /* let CPU1 run */
 +   ifx_mps_release ();
-+   /* start FW watchdog mechanism */
-+   ifx_mps_fw_wdog_start_ar9();
 +   TRACE (MPS, DBG_LEVEL_HIGH, ("IFX_MPS: Restarting firmware..."));
 +   return ifx_mps_get_fw_version (0);
 +}
 +   TRACE (MPS, DBG_LEVEL_HIGH, ("IFX_MPS: Restarting firmware..."));
 +   return ifx_mps_get_fw_version (0);
 +}
 +{
 +   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 */
 +      vpe1_sw_stop (0);
 +      vpe1_started = 0;
 +      /* stop VPE1 */
 +      vpe1_sw_stop (0);
 +      vpe1_started = 0;
 +   /* if VPE1 is already started, stop it */
 +   if (vpe1_started)
 +   {
 +   /* if VPE1 is already started, stop it */
 +   if (vpe1_started)
 +   {
-+      /* stop software watchdog timer first */
-+      vpe1_sw_wdog_stop (0);
 +      vpe1_sw_stop (0);
 +      vpe1_started = 0;
 +   }
 +      vpe1_sw_stop (0);
 +      vpe1_started = 0;
 +   }
 +}
 +
 +/**
 +}
 +
 +/**
-+ * 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.
 + * This function is called by VMMC driver to register its callback in
 + * the MPS driver.
 + * Register WDT callback.
 + * This function is called by VMMC driver to register its callback in
 + * the MPS driver.