diff options
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/mt76x2/pci.c')
| -rw-r--r-- | drivers/net/wireless/mediatek/mt76/mt76x2/pci.c | 26 |
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[] = { | |||
| 30 | static int | 30 | static int |
| 31 | mt76pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) | 31 | mt76pci_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; |
