misc: atsha204a: Don't check for error when waking up the device
authorPali Rohár <pali@kernel.org>
Thu, 4 Aug 2022 11:03:44 +0000 (13:03 +0200)
committerStefan Roese <sr@denx.de>
Tue, 9 Aug 2022 08:01:31 +0000 (10:01 +0200)
The device ignores any levels or transitions on the SCL pin when the device
is idle, asleep or during waking up.

Linux kernel driver for atsha204a (atmel-sha204a.ko) also ignores return
value from i2c wakeup send command, see:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/crypto/atmel-i2c.c?h=v5.19#n174

And also userspace Turris libatsha204 library ignores return value from
wakeup send command, see:
https://gitlab.nic.cz/turris/libatsha204/-/blob/v29.2/src/libatsha204/layer_ni2c.c#L75-76

U-Boot driver should do same thing.

Fixes waking up ATSHA204 on Turris 1.x boards.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-by: Paweł Anikiel <pan@semihalf.com>
Reviewed-by: Marek Behún <kabel@kernel.org>
drivers/misc/atsha204a-i2c.c

index e7c6be5..d3c5158 100644 (file)
@@ -103,12 +103,13 @@ int atsha204a_wakeup(struct udevice *dev)
        for (try = 1; try <= 10; ++try) {
                debug("Try %i... ", try);
 
+               /*
+                * The device ignores any levels or transitions on the SCL pin
+                * when the device is idle, asleep or during waking up.
+                * Don't check for error when waking up the device.
+                */
                memset(req, 0, 4);
-               res = atsha204a_send(dev, req, 4);
-               if (res) {
-                       debug("failed on I2C send, trying again\n");
-                       continue;
-               }
+               atsha204a_send(dev, req, 4);
 
                udelay(ATSHA204A_TWLO_US + ATSHA204A_TWHI_US);