]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/ftdi-la/api.c
ftdi-la: add TUMPA VID:PID and JTAG pin names
[libsigrok.git] / src / hardware / ftdi-la / api.c
index 1a6c3f3556ab81fca081659357c95371a59e3a78..6eb51763853f96195e799169ef8cdf85a114a5dc 100644 (file)
@@ -57,6 +57,17 @@ static const struct ftdi_chip_desc ft2232h_desc = {
        }
 };
 
+static const struct ftdi_chip_desc ft2232h_tumpa_desc = {
+       .vendor = 0x0403,
+       .product = 0x8a98,
+       .samplerate_div = 20,
+       /* 20 pin JTAG header */
+       .channel_names = {
+               "TCK", "TDI", "TDO", "TMS", "RST", "nTRST", "DBGRQ", "RTCK",
+               NULL
+       }
+};
+
 static const struct ftdi_chip_desc ft232r_desc = {
        .vendor = 0x0403,
        .product = 0x6001,
@@ -67,9 +78,22 @@ static const struct ftdi_chip_desc ft232r_desc = {
        }
 };
 
+static const struct ftdi_chip_desc ft232h_desc = {
+       .vendor = 0x0403,
+       .product = 0x6014,
+       .samplerate_div = 30,
+       .channel_names = {
+               "ADBUS0", "ADBUS1", "ADBUS2", "ADBUS3", "ADBUS4", "ADBUS5", "ADBUS6", "ADBUS7",
+               NULL
+       }
+};
+
 static const struct ftdi_chip_desc *chip_descs[] = {
        &ft2232h_desc,
+       &ft2232h_tumpa_desc,
        &ft232r_desc,
+       &ft232h_desc,
+       NULL,
 };
 
 static void scan_device(struct ftdi_context *ftdic,
@@ -87,13 +111,15 @@ static void scan_device(struct ftdi_context *ftdic,
        desc = NULL;
        for (unsigned long i = 0; i < ARRAY_SIZE(chip_descs); i++) {
                desc = chip_descs[i];
+               if (!desc)
+                       break;
                if (desc->vendor == usb_desc.idVendor &&
                        desc->product == usb_desc.idProduct)
                        break;
        }
 
        if (!desc) {
-               sr_spew("Unsupported FTDI device 0x%4x:0x%4x.",
+               sr_spew("Unsupported FTDI device 0x%04x:0x%04x.",
                        usb_desc.idVendor, usb_desc.idProduct);
                return;
        }
@@ -346,10 +372,9 @@ static int config_set(uint32_t key, GVariant *data,
        case SR_CONF_LIMIT_MSEC:
                value = g_variant_get_uint64(data);
                /* TODO: Implement. */
+               (void)value;
                return SR_ERR_NA;
        case SR_CONF_LIMIT_SAMPLES:
-               if (g_variant_get_uint64(data) == 0)
-                       return SR_ERR_ARG;
                devc->limit_samples = g_variant_get_uint64(data);
                break;
        case SR_CONF_SAMPLERATE: