From f265976df62ec5bc358de68f8808ade96198ae15 Mon Sep 17 00:00:00 2001 From: Donald Sebastian Leung Date: Fri, 3 Jul 2020 15:55:11 +0800 Subject: [PATCH] i2c: duplicate TCA9548 control byte --- artiq/firmware/libboard_misoc/i2c.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/artiq/firmware/libboard_misoc/i2c.rs b/artiq/firmware/libboard_misoc/i2c.rs index acade0c24..9e62a97ff 100644 --- a/artiq/firmware/libboard_misoc/i2c.rs +++ b/artiq/firmware/libboard_misoc/i2c.rs @@ -183,8 +183,11 @@ mod imp { if !write(busno, address << 1)? { return Err("PCA9548 failed to ack write address") } - if !write(busno, channels)? { - return Err("PCA9548 failed to ack control word") + // Duplicate control byte: one for SCL, one for SDA + for _ in 0..2 { + if !write(busno, channels)? { + return Err("PCA9548 failed to ack control word") + } } stop(busno)?; Ok(())