]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/asix-sigma/api.c
asix-sigma: Acquisition stop, symbolic identifiers for mode register fields
[libsigrok.git] / src / hardware / asix-sigma / api.c
index 3ea726d8a1f2118af2585a80c9c7d02ef39e5df7..c8665aae9f106a7c6845eaae1bd988e7fa8334ce 100644 (file)
@@ -292,9 +292,10 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
        struct dev_context *devc;
        struct clockselect_50 clockselect;
        int frac, triggerpin, ret;
-       uint8_t triggerselect = 0;
+       uint8_t triggerselect;
        struct triggerinout triggerinout_conf;
        struct triggerlut lut;
+       uint8_t regval;
 
        if (sdi->status != SR_ST_ACTIVE)
                return SR_ERR_DEV_CLOSED;
@@ -315,8 +316,9 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
        /* Enter trigger programming mode. */
        sigma_set_register(WRITE_TRIGGER_SELECT1, 0x20, devc);
 
-       /* 100 and 200 MHz mode. */
+       triggerselect = 0;
        if (devc->cur_samplerate >= SR_MHZ(100)) {
+               /* 100 and 200 MHz mode. */
                sigma_set_register(WRITE_TRIGGER_SELECT1, 0x81, devc);
 
                /* Find which pin to trigger on from mask. */
@@ -332,8 +334,8 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
                if (devc->trigger.fallingmask)
                        triggerselect |= 1 << 3;
 
-       /* All other modes. */
        } else if (devc->cur_samplerate <= SR_MHZ(50)) {
+               /* All other modes. */
                sigma_build_basic_trigger(&lut, devc);
 
                sigma_write_trigger_lut(&lut, devc);
@@ -382,7 +384,11 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
 
        /* Start acqusition. */
        gettimeofday(&devc->start_tv, 0);
-       sigma_set_register(WRITE_MODE, 0x0d, devc);
+       regval =  WMR_TRGRES | WMR_SDRAMWRITEEN;
+#if ASIX_SIGMA_WITH_TRIGGER
+       regval |= WMR_TRGEN;
+#endif
+       sigma_set_register(WRITE_MODE, regval, devc);
 
        std_session_send_df_header(sdi);