asix-sigma: more trigger LUT download rephrase, think 16bit entities

Further rephrase the sigma_write_trigger_lut() routine. It's helpful to
"think" in BE16 quantities to improve readability of LUT address and
parameter downloads. Better matches the vendor's documentation. Also use
a better name for the "trigger select 2" register content.
This commit is contained in:
Gerhard Sittig 2020-05-18 22:09:39 +02:00
parent ee5cef7103
commit 1385f791b0
1 changed files with 11 additions and 6 deletions

View File

@ -435,8 +435,9 @@ SR_PRIV int sigma_write_trigger_lut(struct dev_context *devc,
size_t lut_addr; size_t lut_addr;
uint16_t bit; uint16_t bit;
uint8_t m3d, m2d, m1d, m0d; uint8_t m3d, m2d, m1d, m0d;
uint8_t buf[6], *wrptr, v8; uint8_t buf[6], *wrptr;
uint16_t selreg; uint8_t trgsel2;
uint16_t lutreg, selreg;
int ret; int ret;
/* /*
@ -497,15 +498,19 @@ SR_PRIV int sigma_write_trigger_lut(struct dev_context *devc,
* programming. * programming.
*/ */
wrptr = buf; wrptr = buf;
write_u8_inc(&wrptr, (m3d << 4) | (m2d << 0)); lutreg = 0;
write_u8_inc(&wrptr, (m1d << 4) | (m0d << 0)); lutreg <<= 4; lutreg |= m3d;
lutreg <<= 4; lutreg |= m2d;
lutreg <<= 4; lutreg |= m1d;
lutreg <<= 4; lutreg |= m0d;
write_u16be_inc(&wrptr, lutreg);
ret = sigma_write_register(devc, WRITE_TRIGGER_SELECT, ret = sigma_write_register(devc, WRITE_TRIGGER_SELECT,
buf, wrptr - buf); buf, wrptr - buf);
if (ret != SR_OK) if (ret != SR_OK)
return ret; return ret;
v8 = TRGSEL2_RESET | TRGSEL2_LUT_WRITE | trgsel2 = TRGSEL2_RESET | TRGSEL2_LUT_WRITE |
(lut_addr & TRGSEL2_LUT_ADDR_MASK); (lut_addr & TRGSEL2_LUT_ADDR_MASK);
ret = sigma_set_register(devc, WRITE_TRIGGER_SELECT2, v8); ret = sigma_set_register(devc, WRITE_TRIGGER_SELECT2, trgsel2);
if (ret != SR_OK) if (ret != SR_OK)
return ret; return ret;
} }