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