X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fsysclk-lwla%2Flwla.c;h=aee9d060503f37bff3c0008242f6bae079e4cb65;hb=e1172cf847e522b07d063c36c3f54b0a5dc8429f;hp=1934d61724f07bb9eaa80700707a9ac15cd42c3c;hpb=3a322bbc3b0f4d79a79cffac00aeb05ff69ce535;p=libsigrok.git diff --git a/src/hardware/sysclk-lwla/lwla.c b/src/hardware/sysclk-lwla/lwla.c index 1934d617..aee9d060 100644 --- a/src/hardware/sysclk-lwla/lwla.c +++ b/src/hardware/sysclk-lwla/lwla.c @@ -191,6 +191,33 @@ SR_PRIV int lwla_read_reg(const struct sr_usb_dev_inst *usb, return ret; } +SR_PRIV int lwla_read_long_reg(const struct sr_usb_dev_inst *usb, + uint32_t addr, uint64_t *value) +{ + uint32_t low, high, dummy; + int ret; + + ret = lwla_write_reg(usb, REG_LONG_ADDR, addr); + if (ret != SR_OK) + return ret; + + ret = lwla_read_reg(usb, REG_LONG_STROBE, &dummy); + if (ret != SR_OK) + return ret; + + ret = lwla_read_reg(usb, REG_LONG_HIGH, &high); + if (ret != SR_OK) + return ret; + + ret = lwla_read_reg(usb, REG_LONG_LOW, &low); + if (ret != SR_OK) + return ret; + + *value = ((uint64_t)high << 32) | low; + + return SR_OK; +} + SR_PRIV int lwla_write_reg(const struct sr_usb_dev_inst *usb, uint16_t reg, uint32_t value) {