lkml.org 
[lkml]   [2022]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v1 2/7] platform/x86: serial-multi-instantiate: Improve autodetection
From
Hi,

On 7/9/22 11:52, Andy Shevchenko wrote:
>
>
> On Saturday, July 9, 2022, Hans de Goede <hdegoede@redhat.com <mailto:hdegoede@redhat.com>> 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@linux.intel.com <mailto:andriy.shevchenko@linux.intel.com>>
>
> Only probing for I2C resources if some are present is deliberate:
>
> commit 68f201f9061c000d7a4a9f359f021b1cd535d62b
> Author: Stefan Binding <sbinding@opensource.cirrus.com <mailto:sbinding@opensource.cirrus.com>>
> 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@opensource.cirrus.com <mailto:sbinding@opensource.cirrus.com>>
>     Link: https://lore.kernel.org/r/20220121172431.6876-8-sbinding@opensource.cirrus.com <https://lore.kernel.org/r/20220121172431.6876-8-sbinding@opensource.cirrus.com>
>     Reviewed-by: Hans de Goede <hdegoede@redhat.com <mailto:hdegoede@redhat.com>>
>     Signed-off-by: Hans de Goede <hdegoede@redhat.com <mailto:hdegoede@redhat.com>>
>
> 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
>
>

\
 
 \ /
  Last update: 2022-07-09 13:01    [W:0.390 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site