Message ID | dc0eaa024838f4ef34913aed63315771ac81dcc1.1495814872.git.jan.kiszka@siemens.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, May 26, 2017 at 7:07 PM, Jan Kiszka <jan.kiszka@siemens.com> wrote: > Make stmmac_default_data compatible with stmmac_pci_info.setup and use > an info structure for all devices. This allows to make the probing more > regular. > +#define STMMAC_DEVICE(vendor_id, dev_id, info) { \ > + PCI_DEVICE(vendor_id, dev_id), \ Perhaps #define STMMAC_DEVICE(_vid, _did, info) { \ PCI_DEVICE(PCI_VENDOR_ID_##_vid, _did), \ Or converting defines first to PCI_DEVICE_ID_* and #define STMMAC_DEVICE(_vid, _did, info) { \ PCI_DEVICE(PCI_VENDOR_ID_##_vid, PCI_DEVICE_ID_##_did), \ which I like even better. > + .driver_data = (kernel_ulong_t)&info \ > + } > + > static const struct pci_device_id stmmac_id_table[] = { > - {PCI_DEVICE(STMMAC_VENDOR_ID, STMMAC_DEVICE_ID)}, > - {PCI_DEVICE(PCI_VENDOR_ID_STMICRO, PCI_DEVICE_ID_STMICRO_MAC)}, > - {PCI_VDEVICE(INTEL, STMMAC_QUARK_ID), (kernel_ulong_t)&quark_pci_info}, > + STMMAC_DEVICE(STMMAC_VENDOR_ID, STMMAC_DEVICE_ID, stmmac_pci_info), > + STMMAC_DEVICE(PCI_VENDOR_ID_STMICRO, PCI_DEVICE_ID_STMICRO_MAC, > + stmmac_pci_info), > + STMMAC_DEVICE(PCI_VENDOR_ID_INTEL, STMMAC_QUARK_ID, quark_pci_info),
On Sat, May 27, 2017 at 4:13 PM, Andy Shevchenko <andy.shevchenko@gmail.com> wrote: > On Fri, May 26, 2017 at 7:07 PM, Jan Kiszka <jan.kiszka@siemens.com> wrote: >> Make stmmac_default_data compatible with stmmac_pci_info.setup and use >> an info structure for all devices. This allows to make the probing more >> regular. > Or converting defines first to PCI_DEVICE_ID_* It looks even for previously mentioned approach we need to rename constants first. > and > > #define STMMAC_DEVICE(_vid, _did, info) { \ > PCI_DEVICE(PCI_VENDOR_ID_##_vid, PCI_DEVICE_ID_##_did), > \ > > which I like even better. Or even #define STMMAC_DEVICE(_vid, _did, info) { \ PCI_VDEVICE(_vid, PCI_DEVICE_ID_##_did), \
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c index 0efe42659a37..9aca14f8b55e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c @@ -100,7 +100,9 @@ static void common_default_data(struct plat_stmmacenet_data *plat) plat->rx_queues_cfg[0].pkt_route = 0x0; } -static void stmmac_default_data(struct plat_stmmacenet_data *plat) +static int stmmac_default_data(struct pci_dev *pdev, + struct plat_stmmacenet_data *plat, + const struct stmmac_pci_info *info) { /* Set common default data first */ common_default_data(plat); @@ -112,8 +114,14 @@ static void stmmac_default_data(struct plat_stmmacenet_data *plat) plat->dma_cfg->pbl = 32; plat->dma_cfg->pblx8 = true; /* TODO: AXI */ + + return 0; } +static const struct stmmac_pci_info stmmac_pci_info = { + .setup = stmmac_default_data, +}; + static int quark_default_data(struct pci_dev *pdev, struct plat_stmmacenet_data *plat, const struct stmmac_pci_info *info) @@ -236,14 +244,9 @@ static int stmmac_pci_probe(struct pci_dev *pdev, pci_set_master(pdev); - if (info) { - if (info->setup) { - ret = info->setup(pdev, plat, info); - if (ret) - return ret; - } - } else - stmmac_default_data(plat); + ret = info->setup(pdev, plat, info); + if (ret) + return ret; pci_enable_msi(pdev); @@ -273,10 +276,16 @@ static SIMPLE_DEV_PM_OPS(stmmac_pm_ops, stmmac_suspend, stmmac_resume); #define STMMAC_QUARK_ID 0x0937 #define STMMAC_DEVICE_ID 0x1108 +#define STMMAC_DEVICE(vendor_id, dev_id, info) { \ + PCI_DEVICE(vendor_id, dev_id), \ + .driver_data = (kernel_ulong_t)&info \ + } + static const struct pci_device_id stmmac_id_table[] = { - {PCI_DEVICE(STMMAC_VENDOR_ID, STMMAC_DEVICE_ID)}, - {PCI_DEVICE(PCI_VENDOR_ID_STMICRO, PCI_DEVICE_ID_STMICRO_MAC)}, - {PCI_VDEVICE(INTEL, STMMAC_QUARK_ID), (kernel_ulong_t)&quark_pci_info}, + STMMAC_DEVICE(STMMAC_VENDOR_ID, STMMAC_DEVICE_ID, stmmac_pci_info), + STMMAC_DEVICE(PCI_VENDOR_ID_STMICRO, PCI_DEVICE_ID_STMICRO_MAC, + stmmac_pci_info), + STMMAC_DEVICE(PCI_VENDOR_ID_INTEL, STMMAC_QUARK_ID, quark_pci_info), {} };
Make stmmac_default_data compatible with stmmac_pci_info.setup and use an info structure for all devices. This allows to make the probing more regular. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> --- drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 33 +++++++++++++++--------- 1 file changed, 21 insertions(+), 12 deletions(-)