Update
[plateforme-wifi:dev-guide.git] / ath9k_init.c
1 /* init.c:933:
2  * Point d'entrée du module ath9k.
3  */
4 static int __init ath9k_init(void)
5 {
6         …
7         ath_rate_control_register();
8         ath_pci_init();
9         ath_ahb_init();
10         …
11 }
12
13 /* pci.c:365:
14  * Syscall de pci_register_driver.
15  * Enregistre le drivers au près du bus PIC.
16  */
17 int ath_pci_init(void)
18 {
19             return pci_register_driver(&ath_pci_driver);
20 }
21
22 /* pci.c:357:
23  * struct pci_driver (en argument de pci_register_driver)
24  * Celle-ci contient des fonctions de callback appelées par le bus PCI.
25  * .probe: appelée lorsqu’un device géré par le module est détecté.
26  */
27 static struct pci_driver ath_pci_driver = {
28     .name       = "ath9k",
29     .id_table   = ath_pci_id_table,
30     .probe      = ath_pci_probe,
31     .remove     = ath_pci_remove,
32     .driver.pm  = ATH9K_PM_OPS,
33 };
34
35 /* pci.c:159:
36  * Fonction appelé lorsqu'un périphérique pci géré par le drivers est détecté.
37  */
38 static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
39 {
40         …
41         ieee80211_alloc_hw(sizeof(struct ath_softc), &ath9k_ops);
42         SET_IEEE80211_DEV(hw, &pdev->dev);
43         pci_set_drvdata(pdev, hw);
44         request_irq(pdev->irq, ath_isr, IRQF_SHARED, "ath9k", sc);
45         ath9k_init_device(id->device, sc, &ath_pci_bus_ops);
46         …
47 }
48
49 /* init.c:780:
50  * Init device.
51  */
52 int ath9k_init_device(u16 devid, struct ath_softc *sc,
53             const struct ath_bus_ops *bus_ops)
54 {
55         …
56         ath9k_init_softc(devid, sc, bus_ops); /* Bring up device */
57         ath_regd_init(&common->regulatory, sc->hw->wiphy, ath9k_reg_notifier); /* Initialize regulatory */
58         ath_tx_init(sc, ATH_TXBUF); /* Setup TX DMA */
59         ath_rx_init(sc, ATH_RXBUF); /* Setup RX DMA */
60         ieee80211_register_hw(hw); /* Register with ieee80211 sub layer */
61         …
62 }
63
64 /* init.c:569:
65  */
66 static int ath9k_init_softc(u16 devid, struct ath_softc *sc,
67                 const struct ath_bus_ops *bus_ops)
68 {
69         …
70         ath9k_hw_init(ah); /* Initializes the hardware for all supported chipsets */
71         ath9k_init_queues(sc);
72         ath9k_init_btcoex(sc);
73         ath9k_init_channels_rates(sc);
74         …
75 }
76
77 /* init.c:482:
78  */
79 static int ath9k_init_queues(struct ath_softc *sc)
80 {
81         sc->beacon.beaconq = ath9k_hw_beaconq_setup(sc->sc_ah);
82     sc->beacon.cabq = ath_txq_setup(sc, ATH9K_TX_QUEUE_CAB, 0);
83         for (i = 0; i < WME_NUM_AC; i++) {
84         sc->tx.txq_map[i] = ath_txq_setup(sc, ATH9K_TX_QUEUE_DATA, i);
85         }
86 }
87
88 /* xmit.c:2378:
89  */
90 int ath_tx_init(struct ath_softc *sc, int nbufs)
91 {
92         ath_descdma_setup(sc, &sc->tx.txdma, &sc->tx.txbuf,"tx", nbufs, 1, 1);
93         ath_descdma_setup(sc, &sc->beacon.bdma, &sc->beacon.bbuf, "beacon", ATH_BCBUF, 1, 1);
94         ath_tx_edma_init(sc);
95 }
96
97 /* recv.c:323:
98  */
99 int ath_rx_init(struct ath_softc *sc, int nbufs)
100 {
101         …
102 }