diff mbox series

[v6,3/3] ACPI: delay enumeration of devices with a _DEP pointing to IVSC device

Message ID 1682387039-16674-4-git-send-email-wentong.wu@intel.com (mailing list archive)
State New, archived
Headers show
Series media: pci: intel: ivsc: Add driver of Intel Visual Sensing Controller(IVSC) | expand

Commit Message

Wu, Wentong April 25, 2023, 1:43 a.m. UTC
Inside IVSC, switching ownership requires an interface with two
different hardware modules, ACE and CSI. The software interface
to these modules is based on Intel MEI framework. Usually mei
client devices are dynamically created, so the info of consumers
depending on mei client devices is not present in the firmware
tables.

This causes problems with the probe ordering with respect to
drivers for consumers of these mei client devices. But on these
camera sensor devices, the ACPI nodes describing the sensors all
have a _DEP dependency on the matching mei bus ACPI device, so
adding IVSC mei bus ACPI device to acpi_honor_dep_ids allows
solving the probe-ordering problem by delaying the enumeration of
ACPI-devices which have a _DEP dependency on an IVSC mei bus ACPI
device.

On TGL platform, the HID of IVSC mei bus ACPI device is INTC1059,
and on ADL platform, the HID is INTC1095. So add both of them to
acpi_honor_dep_ids.

Signed-off-by: Wentong Wu <wentong.wu@intel.com>
---
 drivers/acpi/scan.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Hans de Goede April 25, 2023, 8:05 a.m. UTC | #1
Hi Wentong,

On 4/25/23 03:43, Wentong Wu wrote:
> Inside IVSC, switching ownership requires an interface with two
> different hardware modules, ACE and CSI. The software interface
> to these modules is based on Intel MEI framework. Usually mei
> client devices are dynamically created, so the info of consumers
> depending on mei client devices is not present in the firmware
> tables.
> 
> This causes problems with the probe ordering with respect to
> drivers for consumers of these mei client devices. But on these
> camera sensor devices, the ACPI nodes describing the sensors all
> have a _DEP dependency on the matching mei bus ACPI device, so
> adding IVSC mei bus ACPI device to acpi_honor_dep_ids allows
> solving the probe-ordering problem by delaying the enumeration of
> ACPI-devices which have a _DEP dependency on an IVSC mei bus ACPI
> device.
> 
> On TGL platform, the HID of IVSC mei bus ACPI device is INTC1059,
> and on ADL platform, the HID is INTC1095. So add both of them to
> acpi_honor_dep_ids.
> 
> Signed-off-by: Wentong Wu <wentong.wu@intel.com>
> ---
>  drivers/acpi/scan.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> index 2743444..89368d7 100644
> --- a/drivers/acpi/scan.c
> +++ b/drivers/acpi/scan.c
> @@ -796,6 +796,8 @@ static const char * const acpi_ignore_dep_ids[] = {
>  /* List of HIDs for which we honor deps of matching ACPI devs, when checking _DEP lists. */
>  static const char * const acpi_honor_dep_ids[] = {
>  	"INT3472", /* Camera sensor PMIC / clk and regulator info */
> +	"INTC1059",
> +	"INTC1095",

Can you please add a short comment after these to explain what they are for,
e.g.:

	"INTC1059", /* IVSC (TGL) driver must be loaded to allow i2c access to camera sensors */
	"INTC1095", /* IVSC (ADL) driver must be loaded to allow i2c access to camera sensors */

>  	NULL
>  };
>  

Regards,

Hans
Wu, Wentong April 25, 2023, 8:13 a.m. UTC | #2
Hi Hans,

Thanks for your review

> -----Original Message-----
> From: Hans de Goede <hdegoede@redhat.com>
> Sent: Tuesday, April 25, 2023 4:06 PM
> 
> Hi Wentong,
> 
> On 4/25/23 03:43, Wentong Wu wrote:
> > Inside IVSC, switching ownership requires an interface with two
> > different hardware modules, ACE and CSI. The software interface to
> > these modules is based on Intel MEI framework. Usually mei client
> > devices are dynamically created, so the info of consumers depending on
> > mei client devices is not present in the firmware tables.
> >
> > This causes problems with the probe ordering with respect to drivers
> > for consumers of these mei client devices. But on these camera sensor
> > devices, the ACPI nodes describing the sensors all have a _DEP
> > dependency on the matching mei bus ACPI device, so adding IVSC mei bus
> > ACPI device to acpi_honor_dep_ids allows solving the probe-ordering
> > problem by delaying the enumeration of ACPI-devices which have a _DEP
> > dependency on an IVSC mei bus ACPI device.
> >
> > On TGL platform, the HID of IVSC mei bus ACPI device is INTC1059, and
> > on ADL platform, the HID is INTC1095. So add both of them to
> > acpi_honor_dep_ids.
> >
> > Signed-off-by: Wentong Wu <wentong.wu@intel.com>
> > ---
> >  drivers/acpi/scan.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index
> > 2743444..89368d7 100644
> > --- a/drivers/acpi/scan.c
> > +++ b/drivers/acpi/scan.c
> > @@ -796,6 +796,8 @@ static const char * const acpi_ignore_dep_ids[] =
> > {
> >  /* List of HIDs for which we honor deps of matching ACPI devs, when
> > checking _DEP lists. */  static const char * const acpi_honor_dep_ids[] = {
> >  	"INT3472", /* Camera sensor PMIC / clk and regulator info */
> > +	"INTC1059",
> > +	"INTC1095",
> 
> Can you please add a short comment after these to explain what they are for,
> e.g.:
> 
> 	"INTC1059", /* IVSC (TGL) driver must be loaded to allow i2c access to
> camera sensors */
> 	"INTC1095", /* IVSC (ADL) driver must be loaded to allow i2c access to
> camera sensors */
> 
> >  	NULL
> >  };
> >
> 

Yes, I will add comments in next version patch set, thanks

BR,
Wentong

> Regards,
> 
> Hans
>
diff mbox series

Patch

diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 2743444..89368d7 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -796,6 +796,8 @@  static const char * const acpi_ignore_dep_ids[] = {
 /* List of HIDs for which we honor deps of matching ACPI devs, when checking _DEP lists. */
 static const char * const acpi_honor_dep_ids[] = {
 	"INT3472", /* Camera sensor PMIC / clk and regulator info */
+	"INTC1059",
+	"INTC1095",
 	NULL
 };