Re: [PATCH v1 2/7] platform/x86: serial-multi-instantiate: Improve autodetection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 7/9/22 11:52, Andy Shevchenko wrote:
> 
> 
> On Saturday, July 9, 2022, Hans de Goede <hdegoede@xxxxxxxxxx <mailto:hdegoede@xxxxxxxxxx>> wrote:
> 
>     Hi,
> 
>     On 7/9/22 02:06, Andy Shevchenko wrote:
>     > Instead of calling specific resource counter, let just probe each
>     > of the type and see what it says. Also add a debug message when
>     > none is found.
>     >
>     > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx <mailto:andriy.shevchenko@xxxxxxxxxxxxxxx>>
> 
>     Only probing for I2C resources if some are present is deliberate:
> 
>     commit 68f201f9061c000d7a4a9f359f021b1cd535d62b
>     Author: Stefan Binding <sbinding@xxxxxxxxxxxxxxxxxxxxx <mailto:sbinding@xxxxxxxxxxxxxxxxxxxxx>>
>     Date:   Fri Jan 21 17:24:29 2022 +0000
> 
>         platform/x86: serial-multi-instantiate: Add SPI support
> 
>         Add support for spi bus in serial-multi-instantiate driver
> 
>         Some peripherals can have either a I2C or a SPI connection
>         to the host (but not both) but use the same HID for both
>         types. So it is not possible to use the HID to determine
>         whether it is I2C or SPI. The driver must check the node
>         to see if it contains I2cSerialBus or SpiSerialBus entries.
> 
>         For backwards-compatibility with the existing nodes I2C is
>         checked first and if such entries are found ONLY I2C devices
>         are created. Since some existing nodes that were already
>         handled by this driver could also contain unrelated
>         SpiSerialBus nodes that were previously ignored, and this
>         preserves that behavior. If there is ever a need to handle
>         a node where both I2C and SPI devices must be instantiated
>         this can be added in future.
> 
>         Signed-off-by: Stefan Binding <sbinding@xxxxxxxxxxxxxxxxxxxxx <mailto:sbinding@xxxxxxxxxxxxxxxxxxxxx>>
>         Link: https://lore.kernel.org/r/20220121172431.6876-8-sbinding@xxxxxxxxxxxxxxxxxxxxx <https://lore.kernel.org/r/20220121172431.6876-8-sbinding@xxxxxxxxxxxxxxxxxxxxx>
>         Reviewed-by: Hans de Goede <hdegoede@xxxxxxxxxx <mailto:hdegoede@xxxxxxxxxx>>
>         Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx <mailto:hdegoede@xxxxxxxxxx>>
> 
>     So nack for this 
> 
> 
> 
> This effectively means nack to the series.
> But it’s easy to fix. I can add check for ret == 0.

I don't see how this is a nack for the series, just drop 1/7 + 2/7
and rebase the rest. Yes there will be conflicts to resolve in
the rebase, but the rest of the cleanups can still go upstream
after the rebase.

Regards,

Hans



>     > ---
>     >  drivers/platform/x86/serial-multi-instantiate.c | 16 +++++++++++-----
>     >  1 file changed, 11 insertions(+), 5 deletions(-)
>     >
>     > diff --git a/drivers/platform/x86/serial-multi-instantiate.c b/drivers/platform/x86/serial-multi-instantiate.c
>     > index 97db23243018..e599058196bb 100644
>     > --- a/drivers/platform/x86/serial-multi-instantiate.c
>     > +++ b/drivers/platform/x86/serial-multi-instantiate.c
>     > @@ -232,6 +232,7 @@ static int smi_probe(struct platform_device *pdev)
>     >       const struct smi_node *node;
>     >       struct acpi_device *adev;
>     >       struct smi *smi;
>     > +     int ret;
>
>     >       adev = ACPI_COMPANION(dev);
>     >       if (!adev)
>     > @@ -255,15 +256,20 @@ static int smi_probe(struct platform_device *pdev)
>     >       case SMI_SPI:
>     >               return smi_spi_probe(pdev, adev, smi, node->instances);
>     >       case SMI_AUTO_DETECT:
>     > -             if (i2c_acpi_client_count(adev) > 0)
>     > -                     return smi_i2c_probe(pdev, adev, smi, node->instances);
>     > -             else
>     > -                     return smi_spi_probe(pdev, adev, smi, node->instances);
>     > +             ret = smi_i2c_probe(pdev, adev, smi, node->instances);
>     > +             if (ret && ret != -ENOENT)
>     > +                     return ret;
>     > +             ret = smi_spi_probe(pdev, adev, smi, node->instances);
>     > +             if (ret && ret != -ENOENT)
>     > +                     return ret;
>     > +             if (ret)
>     > +                     return dev_err_probe(dev, ret, "Error No resources found\n");
>     > +             break;
>     >       default:
>     >               return -EINVAL;
>     >       }
>
>     > -     return 0; /* never reached */
>     > +     return 0;
>     >  }
>
>     >  static int smi_remove(struct platform_device *pdev)
> 
> 
> 
> -- 
> With Best Regards,
> Andy Shevchenko
> 
> 




[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux