diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-socfpga/include/mach/scan_manager.h | 12 | ||||
-rw-r--r-- | arch/arm/mach-socfpga/scan_manager.c | 30 |
2 files changed, 11 insertions, 31 deletions
diff --git a/arch/arm/mach-socfpga/include/mach/scan_manager.h b/arch/arm/mach-socfpga/include/mach/scan_manager.h index 3602ace..94ad50b 100644 --- a/arch/arm/mach-socfpga/include/mach/scan_manager.h +++ b/arch/arm/mach-socfpga/include/mach/scan_manager.h @@ -68,15 +68,9 @@ struct socfpga_scan_manager { #define SCANMGR_STAT_ACTIVE_GET(x) (((x) & 0x80000000) >> 31) #define SCANMGR_STAT_WFIFOCNT_GET(x) (((x) & 0x70000000) >> 28) -extern const uint32_t iocsr_scan_chain0_table[ - ((CONFIG_HPS_IOCSR_SCANCHAIN0_LENGTH / 32) + 1)]; -extern const uint32_t iocsr_scan_chain1_table[ - ((CONFIG_HPS_IOCSR_SCANCHAIN1_LENGTH / 32) + 1)]; -extern const uint32_t iocsr_scan_chain2_table[ - ((CONFIG_HPS_IOCSR_SCANCHAIN2_LENGTH / 32) + 1)]; -extern const uint32_t iocsr_scan_chain3_table[ - ((CONFIG_HPS_IOCSR_SCANCHAIN3_LENGTH / 32) + 1)]; - int scan_mgr_configure_iocsr(void); +int iocsr_get_config_table(const unsigned int chain_id, + const unsigned long **table, + unsigned int *table_len); #endif /* _SCAN_MANAGER_H_ */ diff --git a/arch/arm/mach-socfpga/scan_manager.c b/arch/arm/mach-socfpga/scan_manager.c index 135f9f3..ec0c630 100644 --- a/arch/arm/mach-socfpga/scan_manager.c +++ b/arch/arm/mach-socfpga/scan_manager.c @@ -48,29 +48,15 @@ static int scan_mgr_io_scan_chain_prg(const unsigned int io_scan_chain_id) 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 uint32_t *iocsr_scan_chain; - - switch (io_scan_chain_id) { - case 0: - io_scan_chain_len_in_bits = CONFIG_HPS_IOCSR_SCANCHAIN0_LENGTH; - iocsr_scan_chain = iocsr_scan_chain0_table; - break; - case 1: - io_scan_chain_len_in_bits = CONFIG_HPS_IOCSR_SCANCHAIN1_LENGTH; - iocsr_scan_chain = iocsr_scan_chain1_table; - break; - case 2: - io_scan_chain_len_in_bits = CONFIG_HPS_IOCSR_SCANCHAIN2_LENGTH; - iocsr_scan_chain = iocsr_scan_chain2_table; - break; - case 3: - io_scan_chain_len_in_bits = CONFIG_HPS_IOCSR_SCANCHAIN3_LENGTH; - iocsr_scan_chain = iocsr_scan_chain3_table; - break; - } + 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 |