PDK-8502: Board: Fix for Uniflash flash programmer failure in UART load mode
authorM V Pratap Reddy <x0257344@ti.com>
Fri, 6 Nov 2020 09:07:51 +0000 (14:37 +0530)
committerSivaraj R <sivaraj@ti.com>
Fri, 6 Nov 2020 09:25:35 +0000 (03:25 -0600)
 - Uniflash flash programmer is hanging in board init with latest sciclient
   driver due to dependency on system firmware.
   Updated the flash programmer init sequence to call board init after
   loading system firmware.
   DMA mode is not functional which is disabled in this update.

packages/ti/board/utils/uniflash/target/build/uart_make.mk
packages/ti/board/utils/uniflash/target/soc/k3/soc.c
packages/ti/board/utils/uniflash/target/src/ospi/ospi.c

index c66fbbdd7264c7fd8f79ffdccf271b8c6c06b53d..aa217466883b0043db964613f48684dda0046046 100755 (executable)
@@ -149,7 +149,7 @@ endif
 
 ifeq ($(BOARD), $(filter $(BOARD), j721e_evm am65xx_evm am65xx_idk am64x_evm))
 ifeq ($(BUILD_HS),no)
-CFLAGS_LOCAL_COMMON += -DSPI_DMA_ENABLE
+#CFLAGS_LOCAL_COMMON += -DSPI_DMA_ENABLE
 endif
 endif
 
index 6c15a9d3a25bde180be006e06120f163eb764fd2..176ab9cf32e1ab71fda23776434b2e617801a27f 100755 (executable)
@@ -327,29 +327,23 @@ int8_t UFP_socInit(Board_initCfg *cfg)
     noBootCfg = UFP_isNoBootEnabled();
 #endif
 
-    if (cfg == NULL)
+    if(noBootCfg == TRUE)
     {
-        boardCfg = BOARD_INIT_PINMUX_CONFIG;
-
-        /* System firmware should be already loaded for no boot mode.
-           Enable PLL and PSC config in board.
+        boardCfg = (BOARD_INIT_PINMUX_CONFIG |
+                    BOARD_INIT_PLL |
+                    BOARD_INIT_MODULE_CLOCK);
+
+        /* Board library init shall be called only in JTAG mode as 
+         * system firmware should be loaded before calling board init.
+         * In case of UART load, system configurations done by RBL
+         * shall be used till the system firmware is loaded and board init
+         * is called for default intializations.
          */
-        if(noBootCfg == TRUE)
+        if (Board_init(boardCfg))
         {
-            boardCfg |= (BOARD_INIT_PLL |
-                         BOARD_INIT_MODULE_CLOCK);
+            return -1;
         }
     }
-    else
-    {
-        boardCfg = *cfg;
-    }
-
-    /* Board Library Init. */
-    if (Board_init(boardCfg))
-    {
-        return -1;
-    }
 
     if(noBootCfg == TRUE)
     {
@@ -395,7 +389,8 @@ int8_t UFP_loadSysFW(void *sysFW)
     UFP_sciclientInit(sysFW);
 
     /* Board Library Init. */
-    boardCfg = (BOARD_INIT_PLL |
+    boardCfg = (BOARD_INIT_PINMUX_CONFIG |
+                BOARD_INIT_PLL |
                 BOARD_INIT_MODULE_CLOCK);
     if (Board_init(boardCfg))
     {
index 8ce2733b26850a3e39d8b8d51f600311dded0ade..e93b3dfff913a34a77309c14b4bdf91da3e6e6d9 100755 (executable)
@@ -369,6 +369,7 @@ static int8_t UFP_ospiFlashErase(uint32_t offset, uint32_t length)
 static int8_t UFP_ospiInit(void)
 {
     OSPI_v0_HwAttrs ospi_cfg;
+    uint32_t tuneEnable = FALSE;
 
     /* Get the default ospi init configurations */
     OSPI_socGetInitCfg(BOARD_OSPI_INSTANCE, &ospi_cfg);
@@ -383,15 +384,15 @@ static int8_t UFP_ospiInit(void)
 
 #if defined(SOC_J7200)
     ospi_cfg.dacEnable  = false;
-    ospi_cfg.phyEnable  = false;
 #endif
+    ospi_cfg.phyEnable  = false;
 
     /* Set the default ospi init configurations */
     OSPI_socSetInitCfg(BOARD_OSPI_INSTANCE, &ospi_cfg);
 
     /* Open the Board ospi NOR device with ospi port 0
        and use default ospi configurations */
-    gOspiHandle = Board_flashOpen(OSPI_FLASH_ID, BOARD_OSPI_INSTANCE, NULL);
+    gOspiHandle = Board_flashOpen(OSPI_FLASH_ID, BOARD_OSPI_INSTANCE, (void *)(&tuneEnable));
 
     if (!gOspiHandle)
     {