[PATCH] misc: atsha204a: Don't check for error when waking up the device

Paweł Anikiel pan at semihalf.com
Mon Aug 8 11:29:10 CEST 2022


Hi Pali,

I applied the patch and it works fine on my board. Log from atsha204a_wakeup():
  Waking up ATSHA204A
  Try 1... success

Tested-by: Paweł Anikiel <pan at semihalf.com>

Regards,
Paweł

On Sun, Aug 7, 2022 at 9:30 PM Pali Rohár <pali at kernel.org> wrote:
>
> Paweł, could you please test this change if it works on your board? I
> was that you were fixing another wakeup issue in patch "misc: atsha204a:
> Increase wake delay by tWHI".
>
> On Thursday 04 August 2022 13:03:44 Pali Rohár wrote:
> > 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 at kernel.org>
> > ---
> >  drivers/misc/atsha204a-i2c.c | 11 ++++++-----
> >  1 file changed, 6 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/misc/atsha204a-i2c.c b/drivers/misc/atsha204a-i2c.c
> > index 81ecb5b6177b..fa2d5948f128 100644
> > --- a/drivers/misc/atsha204a-i2c.c
> > +++ b/drivers/misc/atsha204a-i2c.c
> > @@ -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);
> >
> > --
> > 2.20.1
> >


More information about the U-Boot mailing list