]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - arch/arm/mach-socfpga/scan_manager.c
arm: socfpga: Add temporary workaround for missing SD/MMC patches
[karo-tx-uboot.git] / arch / arm / mach-socfpga / scan_manager.c
index a820b1b1bfcb5d8c674a8f21c26f048fac927fc2..ec0c630323c4b860c3fed28638f2fba706a48e5d 100644 (file)
@@ -38,18 +38,25 @@ static inline uint32_t scan_chain_engine_is_idle(uint32_t max_iter)
        return 1;
 }
 
-/* Program HPS IO Scan Chain */
-uint32_t scan_mgr_io_scan_chain_prg(
-       uint32_t io_scan_chain_id,
-       uint32_t io_scan_chain_len_in_bits,
-       const uint32_t *iocsr_scan_chain)
+/**
+ * scan_mgr_io_scan_chain_prg() - Program HPS IO Scan Chain
+ * @io_scan_chain_id:          IO scan chain ID
+ */
+static int scan_mgr_io_scan_chain_prg(const unsigned int io_scan_chain_id)
 {
        uint16_t tdi_tdo_header;
        uint32_t io_program_iter;
        uint32_t io_scan_chain_data_residual;
        uint32_t residual;
-       uint32_t i;
+       uint32_t i, ret;
        uint32_t index = 0;
+       uint32_t io_scan_chain_len_in_bits;
+       const unsigned long *iocsr_scan_chain;
+
+       ret = iocsr_get_config_table(io_scan_chain_id, &iocsr_scan_chain,
+                                    &io_scan_chain_len_in_bits);
+       if (ret)
+               return 1;
 
        /*
         * De-assert reinit if the IO scan chain is intended for HIO. In
@@ -197,13 +204,9 @@ int scan_mgr_configure_iocsr(void)
        int status = 0;
 
        /* configure the IOCSR through scan chain */
-       status |= scan_mgr_io_scan_chain_prg(0,
-               CONFIG_HPS_IOCSR_SCANCHAIN0_LENGTH, iocsr_scan_chain0_table);
-       status |= scan_mgr_io_scan_chain_prg(1,
-               CONFIG_HPS_IOCSR_SCANCHAIN1_LENGTH, iocsr_scan_chain1_table);
-       status |= scan_mgr_io_scan_chain_prg(2,
-               CONFIG_HPS_IOCSR_SCANCHAIN2_LENGTH, iocsr_scan_chain2_table);
-       status |= scan_mgr_io_scan_chain_prg(3,
-               CONFIG_HPS_IOCSR_SCANCHAIN3_LENGTH, iocsr_scan_chain3_table);
+       status |= scan_mgr_io_scan_chain_prg(0);
+       status |= scan_mgr_io_scan_chain_prg(1);
+       status |= scan_mgr_io_scan_chain_prg(2);
+       status |= scan_mgr_io_scan_chain_prg(3);
        return status;
 }