> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf > Of Madhu Chittim > Sent: Friday, September 26, 2025 8:46 PM > To: [email protected] > Cc: [email protected]; Lobakin, Aleksander > <[email protected]>; [email protected]; Samudrala, Sridhar > <[email protected]> > Subject: [Intel-wired-lan] [PATCH iwl-next v5] idpf: add support for > IDPF PCI programming interface > > From: Pavan Kumar Linga <[email protected]> > > At present IDPF supports only 0x1452 and 0x145C as PF and VF device > IDs on our current generation hardware. Future hardware exposes a new > set of device IDs for each generation. To avoid adding a new device ID > for each generation and to make the driver forward and backward > compatible, make use of the IDPF PCI programming interface to load the > driver. > > Write and read the VF_ARQBAL mailbox register to find if the current > device is a PF or a VF. > > PCI SIG allocated a new programming interface for the IDPF compliant > ethernet network controller devices. It can be found at: > https://members.pcisig.com/wg/PCI-SIG/document/20113 > with the document titled as 'PCI Code and ID Assignment Revision 1.16' > or any latest revisions. > > Tested this patch by doing a simple driver load/unload on Intel IPU > E2000 hardware which supports 0x1452 and 0x145C device IDs and new > hardware which supports the IDPF PCI programming interface. > > Reviewed-by: Sridhar Samudrala <[email protected]> > Reviewed-by: Simon Horman <[email protected]> > Signed-off-by: Pavan Kumar Linga <[email protected]> > Signed-off-by: Madhu Chittim <[email protected]> > --- > v5: > - Removed use of resource_set_range > - ioremap only the register which we would like write and read back > - Renamed function from idpf_is_vf_device to idpf_get_device_type and > moved it idpf_main.c as it is not specific to VF > - idpf_get_device_type now returns device type > > v4: > - add testing info > - use resource_size_t instead of long > - add error statement for ioremap failure > > v3: > - reworked logic to avoid gotos > > v2: > - replace *u8 with *bool in idpf_is_vf_device function parameter > - use ~0 instead of 0xffffff in PCI_DEVICE_CLASS parameter > > drivers/net/ethernet/intel/idpf/idpf.h | 1 + > drivers/net/ethernet/intel/idpf/idpf_main.c | 105 ++++++++++++++++--- > - > 2 files changed, 89 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/ethernet/intel/idpf/idpf.h > b/drivers/net/ethernet/intel/idpf/idpf.h > index 8cfc68cbfa06..bdabea45e81f 100644 > --- a/drivers/net/ethernet/intel/idpf/idpf.h > +++ b/drivers/net/ethernet/intel/idpf/idpf.h > @@ -1005,6 +1005,7 @@ void idpf_mbx_task(struct work_struct *work); > void idpf_vc_event_task(struct work_struct *work); void > idpf_dev_ops_init(struct idpf_adapter *adapter); void > idpf_vf_dev_ops_init(struct idpf_adapter *adapter); > +int idpf_get_device_type(struct pci_dev *pdev); > int idpf_intr_req(struct idpf_adapter *adapter); void > idpf_intr_rel(struct idpf_adapter *adapter); > u16 idpf_get_max_tx_hdr_size(struct idpf_adapter *adapter); diff -- > git a/drivers/net/ethernet/intel/idpf/idpf_main.c > b/drivers/net/ethernet/intel/idpf/idpf_main.c > index 8c46481d2e1f..f1af7dadf179 100644 > --- a/drivers/net/ethernet/intel/idpf/idpf_main.c > +++ b/drivers/net/ethernet/intel/idpf/idpf_main.c > @@ -3,15 +3,93 @@ > ... > -- > 2.51.0 Reviewed-by: Aleksandr Loktionov <[email protected]>
