]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
arm: socfpga: scan: Clean up horrible macros
authorMarek Vasut <marex@denx.de>
Sat, 1 Aug 2015 01:18:50 +0000 (03:18 +0200)
committerLothar Waßmann <LW@KARO-electronics.de>
Thu, 10 Sep 2015 06:17:38 +0000 (08:17 +0200)
Clean up the horrible macros present in the scan_manager.h . Firstly,
the function scan_mgr_io_scan_chain_prg() is static, yet all the macros
are used only within it, thus there is no point in having them in the
header file. Moreover, the macros are just making the code much less
readable, so remove them instead.

Signed-off-by: Marek Vasut <marex@denx.de>
Acked-by: Dinh Nguyen <dinguyen@opensource.altera.com>
arch/arm/mach-socfpga/include/mach/scan_manager.h
arch/arm/mach-socfpga/scan_manager.c

index ddf879053690488ed66be93cfca5c8efc97e94ca..3b55e370f2f4d1077a4f03ccc8016698e23a6d02 100644 (file)
@@ -17,48 +17,6 @@ struct socfpga_scan_manager {
        u32     fifo_quad_byte;
 };
 
-/*
- * Shift count to get number of IO scan chain data in granularity
- * of 128-bit ( N / 128 )
- */
-#define IO_SCAN_CHAIN_128BIT_SHIFT             7
-
-/*
- * Mask to get residual IO scan chain data in
- * granularity of 128-bit ( N mod 128 )
- */
-#define IO_SCAN_CHAIN_128BIT_MASK              0x7F
-
-/*
- * Shift count to get number of IO scan chain
- * data in granularity of 32-bit ( N / 32 )
- */
-#define IO_SCAN_CHAIN_32BIT_SHIFT              5
-
-/*
- * Mask to get residual IO scan chain data in
- * granularity of 32-bit ( N mod 32 )
- */
-#define IO_SCAN_CHAIN_32BIT_MASK               0x1F
-
-/* Byte mask */
-#define IO_SCAN_CHAIN_BYTE_MASK                        0xFF
-
-/* 24-bits (3 bytes) IO scan chain payload definition */
-#define IO_SCAN_CHAIN_PAYLOAD_24BIT            24
-
-/*
- * Maximum length of TDI_TDO packet payload is 128 bits,
- * represented by (length - 1) in TDI_TDO header
- */
-#define TDI_TDO_MAX_PAYLOAD                    127
-
-/* TDI_TDO packet header for IO scan chain program */
-#define TDI_TDO_HEADER_FIRST_BYTE              0x80
-
-/* Position of second command byte for TDI_TDO packet */
-#define TDI_TDO_HEADER_SECOND_BYTE_SHIFT       8
-
 int scan_mgr_configure_iocsr(void);
 int iocsr_get_config_table(const unsigned int chain_id,
                           const unsigned long **table,
index a7434e4010073e8d793eaa10fa36a0e1a1de90b0..dd32195d6a436d19773817bd797419b8b896d6de 100644 (file)
  */
 #define SCANMGR_MAX_DELAY              100
 
+/*
+ * Maximum length of TDI_TDO packet payload is 128 bits,
+ * represented by (length - 1) in TDI_TDO header.
+ */
+#define TDI_TDO_MAX_PAYLOAD            127
+
 #define SCANMGR_STAT_ACTIVE            (1 << 31)
 #define SCANMGR_STAT_WFIFOCNT_MASK     0x70000000
 
@@ -101,13 +107,10 @@ static void scan_mgr_jtag_io(const u32 flags, const u8 iarg, const u32 parg)
  */
 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, ret;
-       uint32_t index = 0;
-       uint32_t io_scan_chain_len_in_bits;
+       u32 residual;
+       u32 io_scan_chain_len_in_bits;
        const unsigned long *iocsr_scan_chain;
+       int i, ret, index = 0;
 
        ret = iocsr_get_config_table(io_scan_chain_id, &iocsr_scan_chain,
                                     &io_scan_chain_len_in_bits);
@@ -136,17 +139,8 @@ static int scan_mgr_io_scan_chain_prg(const unsigned int io_scan_chain_id)
         */
        setbits_le32(&scan_manager_base->en, 1 << io_scan_chain_id);
 
-       /*
-        * Calculate number of iteration needed for full 128-bit (4 x32-bits)
-        * bits shifting. Each TDI_TDO packet can shift in maximum 128-bits
-        */
-       io_program_iter = io_scan_chain_len_in_bits >>
-               IO_SCAN_CHAIN_128BIT_SHIFT;
-       io_scan_chain_data_residual = io_scan_chain_len_in_bits &
-               IO_SCAN_CHAIN_128BIT_MASK;
-
        /* Program IO scan chain in 128-bit iteration */
-       for (i = 0; i < io_program_iter; i++) {
+       for (i = 0; i < io_scan_chain_len_in_bits / 128; i++) {
                /* Write TDI_TDO packet header for 128-bit IO scan chain */
                scan_mgr_jtag_io(JTAG_BP_INSN | JTAG_BP_2BYTE, 0x0,
                                 TDI_TDO_MAX_PAYLOAD);
@@ -166,23 +160,18 @@ static int scan_mgr_io_scan_chain_prg(const unsigned int io_scan_chain_id)
                        goto error;
        }
 
-       /* Final TDI_TDO packet if any */
-       if (io_scan_chain_data_residual) {
-               /*
-                * Calculate number of quad bytes FIFO write
-                * needed for the final TDI_TDO packet
-                */
-               io_program_iter = io_scan_chain_data_residual >>
-                       IO_SCAN_CHAIN_32BIT_SHIFT;
+       residual = io_scan_chain_len_in_bits % 128;
 
+       /* Final TDI_TDO packet (if chain length is not aligned to 128 bits) */
+       if (residual) {
                /*
                 * Program the last part of IO scan chain write TDI_TDO
                 * packet header (2 bytes) to scan manager.
                 */
                scan_mgr_jtag_io(JTAG_BP_INSN | JTAG_BP_2BYTE, 0x0,
-                                io_scan_chain_data_residual - 1);
+                                residual - 1);
 
-               for (i = 0; i < io_program_iter; i++) {
+               for (i = 0; i < residual / 32; i++) {
                        /*
                         * write remaining scan chain data into scan
                         * manager WFIFO with 4 bytes write
@@ -191,10 +180,8 @@ static int scan_mgr_io_scan_chain_prg(const unsigned int io_scan_chain_id)
                                         iocsr_scan_chain[index++]);
                }
 
-               residual = io_scan_chain_data_residual &
-                       IO_SCAN_CHAIN_32BIT_MASK;
-
-               if (IO_SCAN_CHAIN_PAYLOAD_24BIT < residual) {
+               residual = io_scan_chain_len_in_bits % 32;
+               if (residual > 24) {
                        /*
                         * write the last 4B scan chain data
                         * into scan manager WFIFO