X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=arch%2Farm%2Fmach-socfpga%2Fscan_manager.c;h=ec0c630323c4b860c3fed28638f2fba706a48e5d;hb=6f4e80abb6dc7c62e578fb6c276c56c5e497dfd2;hp=a820b1b1bfcb5d8c674a8f21c26f048fac927fc2;hpb=211172373870f4584e835d1d97fa4cb68f7eeecd;p=karo-tx-uboot.git diff --git a/arch/arm/mach-socfpga/scan_manager.c b/arch/arm/mach-socfpga/scan_manager.c index a820b1b1bf..ec0c630323 100644 --- a/arch/arm/mach-socfpga/scan_manager.c +++ b/arch/arm/mach-socfpga/scan_manager.c @@ -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; }