On Tue, Jul 12, 2016 at 11:33:26AM -0600, Jason Gunthorpe wrote:
> 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:

Right. Sure. It's not merged to my next nor it has been part of any pull
request so this is still doable.

/Jarkko

> 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

Reply via email to