Re: [PATCH] misc: atsha204a: Don't check for error when waking up the device
On 04.08.22 13:03, 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 Applied to u-boot-marvell/master Thanks, Stefan --- 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); Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de
Re: [PATCH] misc: atsha204a: Don't check for error when waking up the device
On 09.08.22 09:56, Marek Behún wrote: On Thu, 4 Aug 2022 13:03:44 +0200 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 Reviewed-by: Marek Behún Stefan, will you apply this via marvell? I can do this, let me check. I plan to send a pull request soon anyways. Thanks, Stefan
Re: [PATCH] misc: atsha204a: Don't check for error when waking up the device
On Thu, 4 Aug 2022 13:03:44 +0200 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 Reviewed-by: Marek Behún Stefan, will you apply this via marvell?
Re: [PATCH] misc: atsha204a: Don't check for error when waking up the device
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 Regards, Paweł On Sun, Aug 7, 2022 at 9:30 PM Pali Rohár 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 > > --- > > 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 > >
Re: [PATCH] misc: atsha204a: Don't check for error when waking up the device
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 > --- > 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 >
Re: [PATCH] misc: atsha204a: Don't check for error when waking up the device
On 04.08.22 13:03, 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 Reviewed-by: Stefan Roese Thanks, Stefan --- 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); Viele Grüße, Stefan Roese -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: s...@denx.de
[PATCH] misc: atsha204a: Don't check for error when waking up the device
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 --- 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