From 6df303ff19b978375058ef8e3f79233f3bea7e76 Mon Sep 17 00:00:00 2001 From: deadprogram Date: Thu, 23 Feb 2023 16:06:02 +0100 Subject: [PATCH] machine/rp2040: correct issue with i2c pin validation Signed-off-by: deadprogram --- src/machine/machine_rp2040_i2c.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/machine/machine_rp2040_i2c.go b/src/machine/machine_rp2040_i2c.go index 2c0c2e6e..0c5b688e 100644 --- a/src/machine/machine_rp2040_i2c.go +++ b/src/machine/machine_rp2040_i2c.go @@ -103,21 +103,23 @@ func (i2c *I2C) Configure(config I2CConfig) error { config.SDA = I2C1_SDA_PIN } } - var okSDA, okSCL bool + var okSCL, okSDA bool switch i2c.Bus { case rp.I2C0: - okSDA = config.SDA%4 == 0 - okSCL = (config.SCL+1)%4 == 0 - case rp.I2C1: - okSDA = (config.SDA+2)%4 == 0 okSCL = (config.SCL+3)%4 == 0 + okSDA = (config.SDA+4)%4 == 0 + case rp.I2C1: + okSCL = (config.SCL+1)%4 == 0 + okSDA = (config.SDA+2)%4 == 0 } - if !okSDA { - return errInvalidI2CSDA - } else if !okSCL { + switch { + case !okSCL: return errInvalidI2CSCL + case !okSDA: + return errInvalidI2CSDA } + if config.Frequency == 0 { config.Frequency = defaultBaud }