Clean up the way decode_chunk_ts() is called a little. Introduce a variable
which will not be -1 only in case a trigger happened on the particular DRAM
line.

Signed-off-by: Marek Vasut <[email protected]>
---
 hardware/asix-sigma/asix-sigma.c | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/hardware/asix-sigma/asix-sigma.c b/hardware/asix-sigma/asix-sigma.c
index a4d6076..e573732 100644
--- a/hardware/asix-sigma/asix-sigma.c
+++ b/hardware/asix-sigma/asix-sigma.c
@@ -1083,7 +1083,7 @@ static int download_capture(struct sr_dev_inst *sdi)
        uint32_t i;
        uint32_t dl_lines_total, dl_lines_curr, dl_lines_done;
        uint32_t dl_trailing_events;
-       uint32_t trg_line;
+       uint32_t trg_line = ~0;
 
        dram_line = g_try_malloc0(chunks_per_read * sizeof(*dram_line));
        if (!dram_line)
@@ -1106,8 +1106,6 @@ static int download_capture(struct sr_dev_inst *sdi)
        modestatus = sigma_get_register(READ_MODE, devc);
        if (modestatus & 0x20)
                trg_line = triggerpos >> 9;
-       else
-               trg_line = ~0;
 
        /*
         * Determine how many 1024b "DRAM lines" do we need to read from the
@@ -1135,22 +1133,19 @@ static int download_capture(struct sr_dev_inst *sdi)
 
                for (i = 0; i < dl_lines_curr; i++) {
                        uint32_t dl_limit = 0;
+                       int trigger_line = -1;
                        /* The last "DRAM line" can be only partially full. */
                        if (dl_lines_done + i == dl_lines_total - 1)
                                dl_limit = dl_trailing_events;
 
+                       /* Test if the trigger happened on this line. */
                        if (dl_lines_done + i == trg_line)
-                               decode_chunk_ts(buf + (i * CHUNK_SIZE),
-                                               &devc->state.lastts,
-                                               &devc->state.lastsample,
-                                               triggerpos & 0x1ff,
-                                               dl_limit, sdi);
-                       else
-                               decode_chunk_ts(buf + (i * CHUNK_SIZE),
-                                               &devc->state.lastts,
-                                               &devc->state.lastsample,
-                                               -1,
-                                               dl_limit, sdi);
+                               trigger_line = trg_line;
+
+                       decode_chunk_ts(buf + (i * CHUNK_SIZE),
+                                       &devc->state.lastts,
+                                       &devc->state.lastsample,
+                                       trigger_line, dl_limit, sdi);
                }
 
                dl_lines_done += dl_lines_curr;
-- 
1.8.5.3


------------------------------------------------------------------------------
Start Your Social Network Today - Download eXo Platform
Build your Enterprise Intranet with eXo Platform Software
Java Based Open Source Intranet - Social, Extensible, Cloud Ready
Get Started Now And Turn Your Intranet Into A Collaboration Platform
http://p.sf.net/sfu/ExoPlatform
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel

Reply via email to