drivers/bus/mhi/host/pci_generic.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
There are more platforms need support Foxconn T99W696 modem.
This requirement comes from Lenovo side since they want 1 platform
to correspond to 1 modem SKU.
Signed-off-by: Slark Xiao <slark_xiao@163.com>
---
drivers/bus/mhi/host/pci_generic.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
index 4edb5bb476ba..1fc43f1b86be 100644
--- a/drivers/bus/mhi/host/pci_generic.c
+++ b/drivers/bus/mhi/host/pci_generic.c
@@ -932,6 +932,24 @@ static const struct pci_device_id mhi_pci_id_table[] = {
/* Foxconn T99W696.00, Foxconn SKU */
{ PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe146),
.driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
+ /* Foxconn T99W696.05, Lenovo T14 */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe150),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
+ /* Foxconn T99W696.06, Lenovo T15 */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe151),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
+ /* Foxconn T99W696.07, Lenovo T16 */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe152),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
+ /* Foxconn T99W696.08, Lenovo P14s */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe153),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
+ /* Foxconn T99W696.09, Lenovo P16s */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe154),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
+ /* Foxconn T99W696.10, Lenovo P1 */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe155),
+ .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0308),
.driver_data = (kernel_ulong_t) &mhi_qcom_sdx65_info },
/* Telit FN990B40 (sdx72) */
--
2.25.1
On Tue, Jul 29, 2025 at 04:57:26PM GMT, Slark Xiao wrote:
> There are more platforms need support Foxconn T99W696 modem.
> This requirement comes from Lenovo side since they want 1 platform
> to correspond to 1 modem SKU.
>
> Signed-off-by: Slark Xiao <slark_xiao@163.com>
> ---
> drivers/bus/mhi/host/pci_generic.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
> index 4edb5bb476ba..1fc43f1b86be 100644
> --- a/drivers/bus/mhi/host/pci_generic.c
> +++ b/drivers/bus/mhi/host/pci_generic.c
> @@ -932,6 +932,24 @@ static const struct pci_device_id mhi_pci_id_table[] = {
> /* Foxconn T99W696.00, Foxconn SKU */
> { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe146),
> .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> + /* Foxconn T99W696.05, Lenovo T14 */
> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe150),
> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> + /* Foxconn T99W696.06, Lenovo T15 */
> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe151),
> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> + /* Foxconn T99W696.07, Lenovo T16 */
> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe152),
> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> + /* Foxconn T99W696.08, Lenovo P14s */
> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe153),
> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> + /* Foxconn T99W696.09, Lenovo P16s */
> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe154),
> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> + /* Foxconn T99W696.10, Lenovo P1 */
> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe155),
> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
Since all T99W696 derivatives are using the same config, can't you use below?
PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, PCI_ANY_ID),
.driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
I'm presumed that all 0x0308 based modems are T99W696 derivatives.
- Mani
--
மணிவண்ணன் சதாசிவம்
At 2025-08-18 16:14:28, "Manivannan Sadhasivam" <mani@kernel.org> wrote:
>On Tue, Jul 29, 2025 at 04:57:26PM GMT, Slark Xiao wrote:
>> There are more platforms need support Foxconn T99W696 modem.
>> This requirement comes from Lenovo side since they want 1 platform
>> to correspond to 1 modem SKU.
>>
>> Signed-off-by: Slark Xiao <slark_xiao@163.com>
>> ---
>> drivers/bus/mhi/host/pci_generic.c | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>>
>> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
>> index 4edb5bb476ba..1fc43f1b86be 100644
>> --- a/drivers/bus/mhi/host/pci_generic.c
>> +++ b/drivers/bus/mhi/host/pci_generic.c
>> @@ -932,6 +932,24 @@ static const struct pci_device_id mhi_pci_id_table[] = {
>> /* Foxconn T99W696.00, Foxconn SKU */
>> { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe146),
>> .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
>> + /* Foxconn T99W696.05, Lenovo T14 */
>> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe150),
>> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
>> + /* Foxconn T99W696.06, Lenovo T15 */
>> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe151),
>> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
>> + /* Foxconn T99W696.07, Lenovo T16 */
>> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe152),
>> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
>> + /* Foxconn T99W696.08, Lenovo P14s */
>> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe153),
>> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
>> + /* Foxconn T99W696.09, Lenovo P16s */
>> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe154),
>> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
>> + /* Foxconn T99W696.10, Lenovo P1 */
>> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe155),
>> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
>
>Since all T99W696 derivatives are using the same config, can't you use below?
>
> PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, PCI_ANY_ID),
> .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
>
>I'm presumed that all 0x0308 based modems are T99W696 derivatives.
>
>- Mani
>
Hi Mani,
Yeah, this is really helpful.
So shall I update the previous T99W696 IDs with this new match case?
Thanks
>--
>மணிவண்ணன் சதாசிவம்
On Mon, Aug 18, 2025 at 06:45:04PM GMT, Slark Xiao wrote:
>
>
> At 2025-08-18 16:14:28, "Manivannan Sadhasivam" <mani@kernel.org> wrote:
> >On Tue, Jul 29, 2025 at 04:57:26PM GMT, Slark Xiao wrote:
> >> There are more platforms need support Foxconn T99W696 modem.
> >> This requirement comes from Lenovo side since they want 1 platform
> >> to correspond to 1 modem SKU.
> >>
> >> Signed-off-by: Slark Xiao <slark_xiao@163.com>
> >> ---
> >> drivers/bus/mhi/host/pci_generic.c | 18 ++++++++++++++++++
> >> 1 file changed, 18 insertions(+)
> >>
> >> diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
> >> index 4edb5bb476ba..1fc43f1b86be 100644
> >> --- a/drivers/bus/mhi/host/pci_generic.c
> >> +++ b/drivers/bus/mhi/host/pci_generic.c
> >> @@ -932,6 +932,24 @@ static const struct pci_device_id mhi_pci_id_table[] = {
> >> /* Foxconn T99W696.00, Foxconn SKU */
> >> { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe146),
> >> .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> >> + /* Foxconn T99W696.05, Lenovo T14 */
> >> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe150),
> >> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> >> + /* Foxconn T99W696.06, Lenovo T15 */
> >> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe151),
> >> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> >> + /* Foxconn T99W696.07, Lenovo T16 */
> >> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe152),
> >> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> >> + /* Foxconn T99W696.08, Lenovo P14s */
> >> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe153),
> >> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> >> + /* Foxconn T99W696.09, Lenovo P16s */
> >> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe154),
> >> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> >> + /* Foxconn T99W696.10, Lenovo P1 */
> >> + { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, 0xe155),
> >> + .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> >
> >Since all T99W696 derivatives are using the same config, can't you use below?
> >
> > PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0308, PCI_VENDOR_ID_FOXCONN, PCI_ANY_ID),
> > .driver_data = (kernel_ulong_t) &mhi_foxconn_t99w696_info },
> >
> >I'm presumed that all 0x0308 based modems are T99W696 derivatives.
> >
> >- Mani
> >
> Hi Mani,
> Yeah, this is really helpful.
> So shall I update the previous T99W696 IDs with this new match case?
>
Yes please.
- Mani
--
மணிவண்ணன் சதாசிவம்
© 2016 - 2026 Red Hat, Inc.