[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <154a12ef-29a7-8189-1a5d-648dc92cffd3@redhat.com>
Date: Sat, 9 Jul 2022 13:00:11 +0200
From: Hans de Goede <hdegoede@...hat.com>
To: Andy Shevchenko <andy.shevchenko@...il.com>
Cc: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
"platform-driver-x86@...r.kernel.org"
<platform-driver-x86@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Mark Gross <markgross@...nel.org>
Subject: Re: [PATCH v1 2/7] platform/x86: serial-multi-instantiate: Improve
autodetection
Hi,
On 7/9/22 11:52, Andy Shevchenko wrote:
>
>
> On Saturday, July 9, 2022, Hans de Goede <hdegoede@...hat.com <mailto:hdegoede@...hat.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@...ux.intel.com <mailto:andriy.shevchenko@...ux.intel.com>>
>
> Only probing for I2C resources if some are present is deliberate:
>
> commit 68f201f9061c000d7a4a9f359f021b1cd535d62b
> Author: Stefan Binding <sbinding@...nsource.cirrus.com <mailto:sbinding@...nsource.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@...nsource.cirrus.com <mailto:sbinding@...nsource.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@...hat.com <mailto:hdegoede@...hat.com>>
> Signed-off-by: Hans de Goede <hdegoede@...hat.com <mailto:hdegoede@...hat.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
>
>
Powered by blists - more mailing lists