aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt76x2/pci.c')
-rw-r--r--drivers/net/wireless/mediatek/mt76/mt76x2/pci.c26
1 files changed, 20 insertions, 6 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c b/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c
index 92432fe97312..6274655e1f7e 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c
+++ b/drivers/net/wireless/mediatek/mt76/mt76x2/pci.c
@@ -30,7 +30,19 @@ static const struct pci_device_id mt76pci_device_table[] = {
30static int 30static int
31mt76pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) 31mt76pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
32{ 32{
33 static const struct mt76_driver_ops drv_ops = {
34 .txwi_size = sizeof(struct mt76x02_txwi),
35 .update_survey = mt76x02_update_channel,
36 .tx_prepare_skb = mt76x02_tx_prepare_skb,
37 .tx_complete_skb = mt76x02_tx_complete_skb,
38 .rx_skb = mt76x02_queue_rx_skb,
39 .rx_poll_complete = mt76x02_rx_poll_complete,
40 .sta_ps = mt76x02_sta_ps,
41 .sta_add = mt76x02_sta_add,
42 .sta_remove = mt76x02_sta_remove,
43 };
33 struct mt76x02_dev *dev; 44 struct mt76x02_dev *dev;
45 struct mt76_dev *mdev;
34 int ret; 46 int ret;
35 47
36 ret = pcim_enable_device(pdev); 48 ret = pcim_enable_device(pdev);
@@ -47,17 +59,19 @@ mt76pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
47 if (ret) 59 if (ret)
48 return ret; 60 return ret;
49 61
50 dev = mt76x2_alloc_device(&pdev->dev); 62 mdev = mt76_alloc_device(&pdev->dev, sizeof(*dev), &mt76x2_ops,
51 if (!dev) 63 &drv_ops);
64 if (!mdev)
52 return -ENOMEM; 65 return -ENOMEM;
53 66
54 mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]); 67 dev = container_of(mdev, struct mt76x02_dev, mt76);
68 mt76_mmio_init(mdev, pcim_iomap_table(pdev)[0]);
55 mt76x2_reset_wlan(dev, false); 69 mt76x2_reset_wlan(dev, false);
56 70
57 dev->mt76.rev = mt76_rr(dev, MT_ASIC_VERSION); 71 mdev->rev = mt76_rr(dev, MT_ASIC_VERSION);
58 dev_info(dev->mt76.dev, "ASIC revision: %08x\n", dev->mt76.rev); 72 dev_info(mdev->dev, "ASIC revision: %08x\n", mdev->rev);
59 73
60 ret = devm_request_irq(dev->mt76.dev, pdev->irq, mt76x02_irq_handler, 74 ret = devm_request_irq(mdev->dev, pdev->irq, mt76x02_irq_handler,
61 IRQF_SHARED, KBUILD_MODNAME, dev); 75 IRQF_SHARED, KBUILD_MODNAME, dev);
62 if (ret) 76 if (ret)
63 goto error; 77 goto error;