[PATCH V3 11/11] i3c: mipi-i3c-hci-pci: Define Multi-Bus instances for supported controllers

Frank Li Frank.li at nxp.com
Tue Dec 16 09:18:08 PST 2025


On Tue, Dec 16, 2025 at 06:56:42PM +0200, Adrian Hunter wrote:
> Define Multi-Bus Instances at offset 0x400 for Intel controllers.
>
> Intel SoCs include two I3C PCI devices in the Low Power Subsystem (LPSS),
> each capable of hosting two I3C buses. Panther Lake and Wildcat Lake
> support three buses in total (IDs 0–2), while Nova Lake supports four
> (IDs 0–3).
>
> Signed-off-by: Adrian Hunter <adrian.hunter at intel.com>
> ---

Reviewed-by: Frank Li <Frank.Li at nxp.com>

>
>
> Changes in V3:
>
> 	Adjust for doing away with dynamic devid allocation
>
> Changes in V2:
>
> 	Also define instance 0 in driver_data
>
>
>  .../master/mipi-i3c-hci/mipi-i3c-hci-pci.c    | 35 ++++++++++++-------
>  1 file changed, 22 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c b/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c
> index 782f46989423..458f871a2e61 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c
> +++ b/drivers/i3c/master/mipi-i3c-hci/mipi-i3c-hci-pci.c
> @@ -181,16 +181,25 @@ static void intel_i3c_exit(struct mipi_i3c_hci_pci *hci)
>  	intel_ltr_hide(&hci->pci->dev);
>  }
>
> -static const struct mipi_i3c_hci_pci_info intel_1_info = {
> +static const struct mipi_i3c_hci_pci_info intel_mi_1_info = {
>  	.init = intel_i3c_init,
>  	.exit = intel_i3c_exit,
>  	.name = "intel-lpss-i3c",
> -	.id = {0},
> -	.instance_offset = {0},
> -	.instance_count = 1,
> +	.id = {0, 1},
> +	.instance_offset = {0, 0x400},
> +	.instance_count = 2,
> +};
> +
> +static const struct mipi_i3c_hci_pci_info intel_mi_2_info = {
> +	.init = intel_i3c_init,
> +	.exit = intel_i3c_exit,
> +	.name = "intel-lpss-i3c",
> +	.id = {2, 3},
> +	.instance_offset = {0, 0x400},
> +	.instance_count = 2,
>  };
>
> -static const struct mipi_i3c_hci_pci_info intel_2_info = {
> +static const struct mipi_i3c_hci_pci_info intel_si_2_info = {
>  	.init = intel_i3c_init,
>  	.exit = intel_i3c_exit,
>  	.name = "intel-lpss-i3c",
> @@ -296,17 +305,17 @@ static void mipi_i3c_hci_pci_remove(struct pci_dev *pci)
>
>  static const struct pci_device_id mipi_i3c_hci_pci_devices[] = {
>  	/* Wildcat Lake-U */
> -	{ PCI_VDEVICE(INTEL, 0x4d7c), (kernel_ulong_t)&intel_1_info},
> -	{ PCI_VDEVICE(INTEL, 0x4d6f), (kernel_ulong_t)&intel_2_info},
> +	{ PCI_VDEVICE(INTEL, 0x4d7c), (kernel_ulong_t)&intel_mi_1_info},
> +	{ PCI_VDEVICE(INTEL, 0x4d6f), (kernel_ulong_t)&intel_si_2_info},
>  	/* Panther Lake-H */
> -	{ PCI_VDEVICE(INTEL, 0xe37c), (kernel_ulong_t)&intel_1_info},
> -	{ PCI_VDEVICE(INTEL, 0xe36f), (kernel_ulong_t)&intel_2_info},
> +	{ PCI_VDEVICE(INTEL, 0xe37c), (kernel_ulong_t)&intel_mi_1_info},
> +	{ PCI_VDEVICE(INTEL, 0xe36f), (kernel_ulong_t)&intel_si_2_info},
>  	/* Panther Lake-P */
> -	{ PCI_VDEVICE(INTEL, 0xe47c), (kernel_ulong_t)&intel_1_info},
> -	{ PCI_VDEVICE(INTEL, 0xe46f), (kernel_ulong_t)&intel_2_info},
> +	{ PCI_VDEVICE(INTEL, 0xe47c), (kernel_ulong_t)&intel_mi_1_info},
> +	{ PCI_VDEVICE(INTEL, 0xe46f), (kernel_ulong_t)&intel_si_2_info},
>  	/* Nova Lake-S */
> -	{ PCI_VDEVICE(INTEL, 0x6e2c), (kernel_ulong_t)&intel_1_info},
> -	{ PCI_VDEVICE(INTEL, 0x6e2d), (kernel_ulong_t)&intel_2_info},
> +	{ PCI_VDEVICE(INTEL, 0x6e2c), (kernel_ulong_t)&intel_mi_1_info},
> +	{ PCI_VDEVICE(INTEL, 0x6e2d), (kernel_ulong_t)&intel_mi_2_info},
>  	{ },
>  };
>  MODULE_DEVICE_TABLE(pci, mipi_i3c_hci_pci_devices);
> --
> 2.51.0
>
>
> --
> linux-i3c mailing list
> linux-i3c at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-i3c



More information about the linux-i3c mailing list