On Wed, Jun 29, 2016 at 05:03:39PM +0300, Jarkko Sakkinen wrote:
> On Wed, Jun 29, 2016 at 12:58:49PM +0300, andrew zamansky wrote:
> > if irq==0 (actualy invalid value) then error is printed to dmesg after
> > trying to register to 0 interrupt
> >
> > drivers/char/tpm/tpm_i2c_nuvoton.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/char/tpm/tpm_i2c_nuvoton.c
> > b/drivers/char/tpm/tpm_i2c_nuvoton.c
> > index 75a80e466..3081529 100644
> > +++ b/drivers/char/tpm/tpm_i2c_nuvoton.c
> > @@ -554,7 +554,9 @@ static int i2c_nuvoton_probe(struct i2c_client *client,
> > * TPM_INTF_INT_LEVEL_LOW | TPM_INTF_DATA_AVAIL_INT
> > * The IRQ should be set in the i2c_board_info (which is done
> > * automatically in of_i2c_register_devices, for device tree users */
> > - chip->flags |= TPM_CHIP_FLAG_IRQ;
> > + if(chip->flags)
> > + chip->flags |= TPM_CHIP_FLAG_IRQ;
> > +
> > priv->irq = client->irq;
> >
> > if (chip->flags & TPM_CHIP_FLAG_IRQ) {
>
> Reviewed-by: Jarkko Sakkinen <[email protected]>
>
> PS. There's a style error. "if()" should be "if ()". I don't mind fixing
> that. Just remember that next time.
Andrew/Jarkko:
Uhm, this looks wrong to me.. The original code was like this:
- chip->vendor.irq = client->irq;
- if (chip->vendor.irq) {
And was wrongly changed to this:
+ chip->flags |= TPM_CHIP_FLAG_IRQ;
+ priv->irq = client->irq;
+ if (chip->flags & TPM_CHIP_FLAG_IRQ) {
Jarkko, can you fold this into the patch to fix it please:
diff --git a/drivers/char/tpm/tpm_i2c_nuvoton.c
b/drivers/char/tpm/tpm_i2c_nuvoton.c
index e63ea1652d8d..826698234336 100644
--- a/drivers/char/tpm/tpm_i2c_nuvoton.c
+++ b/drivers/char/tpm/tpm_i2c_nuvoton.c
@@ -559,12 +559,8 @@ static int i2c_nuvoton_probe(struct i2c_client *client,
* TPM_INTF_INT_LEVEL_LOW | TPM_INTF_DATA_AVAIL_INT
* The IRQ should be set in the i2c_board_info (which is done
* automatically in of_i2c_register_devices, for device tree users */
- if(chip->flags)
- chip->flags |= TPM_CHIP_FLAG_IRQ;
-
priv->irq = client->irq;
-
- if (chip->flags & TPM_CHIP_FLAG_IRQ) {
+ if (client->irq) {
dev_dbg(dev, "%s() priv->irq\n", __func__);
rc = devm_request_irq(dev, client->irq,
i2c_nuvoton_int_handler,
@@ -574,9 +570,9 @@ static int i2c_nuvoton_probe(struct i2c_client *client,
if (rc) {
dev_err(dev, "%s() Unable to request irq: %d for use\n",
__func__, priv->irq);
- chip->flags &= ~TPM_CHIP_FLAG_IRQ;
priv->irq = 0;
} else {
+ chip->flags |= TPM_CHIP_FLAG_IRQ;
/* Clear any pending interrupt */
i2c_nuvoton_ready(chip);
/* - wait for TPM_STS==0xA0 (stsValid, commandReady) */
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
tpmdd-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tpmdd-devel