OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Linux device driver for RTL8180 / RTL8185 | 3 * Linux device driver for RTL8180 / RTL8185 |
4 * | 4 * |
5 * Copyright 2007 Michael Wu <flamingice@sourmilk.net> | 5 * Copyright 2007 Michael Wu <flamingice@sourmilk.net> |
6 * Copyright 2007 Andrea Merello <andreamrl@tiscali.it> | 6 * Copyright 2007 Andrea Merello <andreamrl@tiscali.it> |
7 * | 7 * |
8 * Based on the r8180 driver, which is: | 8 * Based on the r8180 driver, which is: |
9 * Copyright 2004-2005 Andrea Merello <andreamrl@tiscali.it>, et al. | 9 * Copyright 2004-2005 Andrea Merello <andreamrl@tiscali.it>, et al. |
10 * | 10 * |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
438 { | 438 { |
439 struct rtl8180_priv *priv = dev->priv; | 439 struct rtl8180_priv *priv = dev->priv; |
440 struct rtl8180_rx_desc *entry; | 440 struct rtl8180_rx_desc *entry; |
441 int i; | 441 int i; |
442 | 442 |
443 priv->rx_ring = pci_alloc_consistent(priv->pdev, | 443 priv->rx_ring = pci_alloc_consistent(priv->pdev, |
444 sizeof(*priv->rx_ring) * 32, | 444 sizeof(*priv->rx_ring) * 32, |
445 &priv->rx_ring_dma); | 445 &priv->rx_ring_dma); |
446 | 446 |
447 if (!priv->rx_ring || (unsigned long)priv->rx_ring & 0xFF) { | 447 if (!priv->rx_ring || (unsigned long)priv->rx_ring & 0xFF) { |
448 » » wiphy_err(dev->wiphy, "cannot allocate rx ring\n"); | 448 » » wiphy_err(dev->wiphy, "Cannot allocate RX ring\n"); |
449 return -ENOMEM; | 449 return -ENOMEM; |
450 } | 450 } |
451 | 451 |
452 memset(priv->rx_ring, 0, sizeof(*priv->rx_ring) * 32); | 452 memset(priv->rx_ring, 0, sizeof(*priv->rx_ring) * 32); |
453 priv->rx_idx = 0; | 453 priv->rx_idx = 0; |
454 | 454 |
455 for (i = 0; i < 32; i++) { | 455 for (i = 0; i < 32; i++) { |
456 struct sk_buff *skb = dev_alloc_skb(MAX_RX_SIZE); | 456 struct sk_buff *skb = dev_alloc_skb(MAX_RX_SIZE); |
457 dma_addr_t *mapping; | 457 dma_addr_t *mapping; |
458 entry = &priv->rx_ring[i]; | 458 entry = &priv->rx_ring[i]; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 static int rtl8180_init_tx_ring(struct ieee80211_hw *dev, | 495 static int rtl8180_init_tx_ring(struct ieee80211_hw *dev, |
496 unsigned int prio, unsigned int entries) | 496 unsigned int prio, unsigned int entries) |
497 { | 497 { |
498 struct rtl8180_priv *priv = dev->priv; | 498 struct rtl8180_priv *priv = dev->priv; |
499 struct rtl8180_tx_desc *ring; | 499 struct rtl8180_tx_desc *ring; |
500 dma_addr_t dma; | 500 dma_addr_t dma; |
501 int i; | 501 int i; |
502 | 502 |
503 ring = pci_alloc_consistent(priv->pdev, sizeof(*ring) * entries, &dma); | 503 ring = pci_alloc_consistent(priv->pdev, sizeof(*ring) * entries, &dma); |
504 if (!ring || (unsigned long)ring & 0xFF) { | 504 if (!ring || (unsigned long)ring & 0xFF) { |
505 » » wiphy_err(dev->wiphy, "cannot allocate tx ring (prio = %d)\n", | 505 » » wiphy_err(dev->wiphy, "Cannot allocate TX ring (prio = %d)\n", |
506 prio); | 506 prio); |
507 return -ENOMEM; | 507 return -ENOMEM; |
508 } | 508 } |
509 | 509 |
510 memset(ring, 0, sizeof(*ring)*entries); | 510 memset(ring, 0, sizeof(*ring)*entries); |
511 priv->tx_ring[prio].desc = ring; | 511 priv->tx_ring[prio].desc = ring; |
512 priv->tx_ring[prio].dma = dma; | 512 priv->tx_ring[prio].dma = dma; |
513 priv->tx_ring[prio].idx = 0; | 513 priv->tx_ring[prio].idx = 0; |
514 priv->tx_ring[prio].entries = entries; | 514 priv->tx_ring[prio].entries = entries; |
515 skb_queue_head_init(&priv->tx_ring[prio].queue); | 515 skb_queue_head_init(&priv->tx_ring[prio].queue); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
561 | 561 |
562 rtl818x_iowrite32(priv, &priv->map->RDSAR, priv->rx_ring_dma); | 562 rtl818x_iowrite32(priv, &priv->map->RDSAR, priv->rx_ring_dma); |
563 rtl818x_iowrite32(priv, &priv->map->TBDA, priv->tx_ring[3].dma); | 563 rtl818x_iowrite32(priv, &priv->map->TBDA, priv->tx_ring[3].dma); |
564 rtl818x_iowrite32(priv, &priv->map->THPDA, priv->tx_ring[2].dma); | 564 rtl818x_iowrite32(priv, &priv->map->THPDA, priv->tx_ring[2].dma); |
565 rtl818x_iowrite32(priv, &priv->map->TNPDA, priv->tx_ring[1].dma); | 565 rtl818x_iowrite32(priv, &priv->map->TNPDA, priv->tx_ring[1].dma); |
566 rtl818x_iowrite32(priv, &priv->map->TLPDA, priv->tx_ring[0].dma); | 566 rtl818x_iowrite32(priv, &priv->map->TLPDA, priv->tx_ring[0].dma); |
567 | 567 |
568 ret = request_irq(priv->pdev->irq, rtl8180_interrupt, | 568 ret = request_irq(priv->pdev->irq, rtl8180_interrupt, |
569 IRQF_SHARED, KBUILD_MODNAME, dev); | 569 IRQF_SHARED, KBUILD_MODNAME, dev); |
570 if (ret) { | 570 if (ret) { |
571 » » wiphy_err(dev->wiphy, "failed to register irq handler\n"); | 571 » » wiphy_err(dev->wiphy, "failed to register IRQ handler\n"); |
572 goto err_free_rings; | 572 goto err_free_rings; |
573 } | 573 } |
574 | 574 |
575 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF); | 575 rtl818x_iowrite16(priv, &priv->map->INT_MASK, 0xFFFF); |
576 | 576 |
577 rtl818x_iowrite32(priv, &priv->map->MAR[0], ~0); | 577 rtl818x_iowrite32(priv, &priv->map->MAR[0], ~0); |
578 rtl818x_iowrite32(priv, &priv->map->MAR[1], ~0); | 578 rtl818x_iowrite32(priv, &priv->map->MAR[1], ~0); |
579 | 579 |
580 reg = RTL818X_RX_CONF_ONLYERLPKT | | 580 reg = RTL818X_RX_CONF_ONLYERLPKT | |
581 RTL818X_RX_CONF_RX_AUTORESETPHY | | 581 RTL818X_RX_CONF_RX_AUTORESETPHY | |
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1185 return pci_register_driver(&rtl8180_driver); | 1185 return pci_register_driver(&rtl8180_driver); |
1186 } | 1186 } |
1187 | 1187 |
1188 static void __exit rtl8180_exit(void) | 1188 static void __exit rtl8180_exit(void) |
1189 { | 1189 { |
1190 pci_unregister_driver(&rtl8180_driver); | 1190 pci_unregister_driver(&rtl8180_driver); |
1191 } | 1191 } |
1192 | 1192 |
1193 module_init(rtl8180_init); | 1193 module_init(rtl8180_init); |
1194 module_exit(rtl8180_exit); | 1194 module_exit(rtl8180_exit); |
OLD | NEW |