diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2013-12-06 05:58:45 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-12-09 15:37:58 -0500 |
commit | 0f978bfaf2600040f9826f394eb12e023bef3068 (patch) | |
tree | 57d58a226a986fc7cf0ed4db0c9d041d0f68884e | |
parent | 492f478d89b28c97166e4540aa13ac0e7abaa29f (diff) |
ath9k: Use a separate TX gain table for WZR-HP-G450H
The Buffalo device WZR-HP-G450H uses the index 3 for TX gain,
which is set to the high_power table currently. Later variants
of the router use the same index, but instead refer to the
low_ob_db gain table. This is not handled in the driver since
there is no way to distinguish board revisions and the high_power
table is used (incorrectly) for the newer variants.
By default, devices based on AR9300 using the TX gain index 3 have
to use the high_power table. To make sure that WZR-HP-G450H is not
broken when the high_power table is updated, use a separate array
based on information obtained from the platform data.
The current situation where only the original variant of WZR-HP-G450H
works properly stays unchanged.
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_buffalo_initvals.h | 126 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_hw.c | 12 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/init.c | 36 | ||||
-rw-r--r-- | include/linux/ath9k_platform.h | 2 |
5 files changed, 165 insertions, 12 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_buffalo_initvals.h b/drivers/net/wireless/ath/ath9k/ar9003_buffalo_initvals.h new file mode 100644 index 000000000000..59cf738f70df --- /dev/null +++ b/drivers/net/wireless/ath/ath9k/ar9003_buffalo_initvals.h | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2013 Qualcomm Atheros Inc. | ||
3 | * | ||
4 | * Permission to use, copy, modify, and/or distribute this software for any | ||
5 | * purpose with or without fee is hereby granted, provided that the above | ||
6 | * copyright notice and this permission notice appear in all copies. | ||
7 | * | ||
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
15 | */ | ||
16 | |||
17 | #ifndef INITVALS_9003_BUFFALO_H | ||
18 | #define INITVALS_9003_BUFFALO_H | ||
19 | |||
20 | static const u32 ar9300Modes_high_power_tx_gain_table_buffalo[][5] = { | ||
21 | /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */ | ||
22 | {0x0000a2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, | ||
23 | {0x0000a2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, | ||
24 | {0x0000a2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, | ||
25 | {0x0000a2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, | ||
26 | {0x0000a410, 0x000050d8, 0x000050d8, 0x000050d9, 0x000050d9}, | ||
27 | {0x0000a500, 0x00002220, 0x00002220, 0x00000000, 0x00000000}, | ||
28 | {0x0000a504, 0x04002222, 0x04002222, 0x04000002, 0x04000002}, | ||
29 | {0x0000a508, 0x09002421, 0x09002421, 0x08000004, 0x08000004}, | ||
30 | {0x0000a50c, 0x0d002621, 0x0d002621, 0x0b000200, 0x0b000200}, | ||
31 | {0x0000a510, 0x13004620, 0x13004620, 0x0f000202, 0x0f000202}, | ||
32 | {0x0000a514, 0x19004a20, 0x19004a20, 0x11000400, 0x11000400}, | ||
33 | {0x0000a518, 0x1d004e20, 0x1d004e20, 0x15000402, 0x15000402}, | ||
34 | {0x0000a51c, 0x21005420, 0x21005420, 0x19000404, 0x19000404}, | ||
35 | {0x0000a520, 0x26005e20, 0x26005e20, 0x1b000603, 0x1b000603}, | ||
36 | {0x0000a524, 0x2b005e40, 0x2b005e40, 0x1f000a02, 0x1f000a02}, | ||
37 | {0x0000a528, 0x2f005e42, 0x2f005e42, 0x23000a04, 0x23000a04}, | ||
38 | {0x0000a52c, 0x33005e44, 0x33005e44, 0x26000a20, 0x26000a20}, | ||
39 | {0x0000a530, 0x38005e65, 0x38005e65, 0x2a000e20, 0x2a000e20}, | ||
40 | {0x0000a534, 0x3c005e69, 0x3c005e69, 0x2e000e22, 0x2e000e22}, | ||
41 | {0x0000a538, 0x40005e6b, 0x40005e6b, 0x31000e24, 0x31000e24}, | ||
42 | {0x0000a53c, 0x44005e6d, 0x44005e6d, 0x34001640, 0x34001640}, | ||
43 | {0x0000a540, 0x49005e72, 0x49005e72, 0x38001660, 0x38001660}, | ||
44 | {0x0000a544, 0x4e005eb2, 0x4e005eb2, 0x3b001861, 0x3b001861}, | ||
45 | {0x0000a548, 0x53005f12, 0x53005f12, 0x3e001a81, 0x3e001a81}, | ||
46 | {0x0000a54c, 0x59025eb2, 0x59025eb2, 0x42001a83, 0x42001a83}, | ||
47 | {0x0000a550, 0x5e025f12, 0x5e025f12, 0x44001c84, 0x44001c84}, | ||
48 | {0x0000a554, 0x61027f12, 0x61027f12, 0x48001ce3, 0x48001ce3}, | ||
49 | {0x0000a558, 0x6702bf12, 0x6702bf12, 0x4c001ce5, 0x4c001ce5}, | ||
50 | {0x0000a55c, 0x6b02bf14, 0x6b02bf14, 0x50001ce9, 0x50001ce9}, | ||
51 | {0x0000a560, 0x6f02bf16, 0x6f02bf16, 0x54001ceb, 0x54001ceb}, | ||
52 | {0x0000a564, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, | ||
53 | {0x0000a568, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, | ||
54 | {0x0000a56c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, | ||
55 | {0x0000a570, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, | ||
56 | {0x0000a574, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, | ||
57 | {0x0000a578, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, | ||
58 | {0x0000a57c, 0x6f02bf16, 0x6f02bf16, 0x56001eec, 0x56001eec}, | ||
59 | {0x0000a580, 0x00802220, 0x00802220, 0x00800000, 0x00800000}, | ||
60 | {0x0000a584, 0x04802222, 0x04802222, 0x04800002, 0x04800002}, | ||
61 | {0x0000a588, 0x09802421, 0x09802421, 0x08800004, 0x08800004}, | ||
62 | {0x0000a58c, 0x0d802621, 0x0d802621, 0x0b800200, 0x0b800200}, | ||
63 | {0x0000a590, 0x13804620, 0x13804620, 0x0f800202, 0x0f800202}, | ||
64 | {0x0000a594, 0x19804a20, 0x19804a20, 0x11800400, 0x11800400}, | ||
65 | {0x0000a598, 0x1d804e20, 0x1d804e20, 0x15800402, 0x15800402}, | ||
66 | {0x0000a59c, 0x21805420, 0x21805420, 0x19800404, 0x19800404}, | ||
67 | {0x0000a5a0, 0x26805e20, 0x26805e20, 0x1b800603, 0x1b800603}, | ||
68 | {0x0000a5a4, 0x2b805e40, 0x2b805e40, 0x1f800a02, 0x1f800a02}, | ||
69 | {0x0000a5a8, 0x2f805e42, 0x2f805e42, 0x23800a04, 0x23800a04}, | ||
70 | {0x0000a5ac, 0x33805e44, 0x33805e44, 0x26800a20, 0x26800a20}, | ||
71 | {0x0000a5b0, 0x38805e65, 0x38805e65, 0x2a800e20, 0x2a800e20}, | ||
72 | {0x0000a5b4, 0x3c805e69, 0x3c805e69, 0x2e800e22, 0x2e800e22}, | ||
73 | {0x0000a5b8, 0x40805e6b, 0x40805e6b, 0x31800e24, 0x31800e24}, | ||
74 | {0x0000a5bc, 0x44805e6d, 0x44805e6d, 0x34801640, 0x34801640}, | ||
75 | {0x0000a5c0, 0x49805e72, 0x49805e72, 0x38801660, 0x38801660}, | ||
76 | {0x0000a5c4, 0x4e805eb2, 0x4e805eb2, 0x3b801861, 0x3b801861}, | ||
77 | {0x0000a5c8, 0x53805f12, 0x53805f12, 0x3e801a81, 0x3e801a81}, | ||
78 | {0x0000a5cc, 0x59825eb2, 0x59825eb2, 0x42801a83, 0x42801a83}, | ||
79 | {0x0000a5d0, 0x5e825f12, 0x5e825f12, 0x44801c84, 0x44801c84}, | ||
80 | {0x0000a5d4, 0x61827f12, 0x61827f12, 0x48801ce3, 0x48801ce3}, | ||
81 | {0x0000a5d8, 0x6782bf12, 0x6782bf12, 0x4c801ce5, 0x4c801ce5}, | ||
82 | {0x0000a5dc, 0x6b82bf14, 0x6b82bf14, 0x50801ce9, 0x50801ce9}, | ||
83 | {0x0000a5e0, 0x6f82bf16, 0x6f82bf16, 0x54801ceb, 0x54801ceb}, | ||
84 | {0x0000a5e4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | ||
85 | {0x0000a5e8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | ||
86 | {0x0000a5ec, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | ||
87 | {0x0000a5f0, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | ||
88 | {0x0000a5f4, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | ||
89 | {0x0000a5f8, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | ||
90 | {0x0000a5fc, 0x6f82bf16, 0x6f82bf16, 0x56801eec, 0x56801eec}, | ||
91 | {0x0000a600, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
92 | {0x0000a604, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
93 | {0x0000a608, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
94 | {0x0000a60c, 0x00000000, 0x00000000, 0x00000000, 0x00000000}, | ||
95 | {0x0000a610, 0x00804000, 0x00804000, 0x00000000, 0x00000000}, | ||
96 | {0x0000a614, 0x00804201, 0x00804201, 0x01404000, 0x01404000}, | ||
97 | {0x0000a618, 0x0280c802, 0x0280c802, 0x01404501, 0x01404501}, | ||
98 | {0x0000a61c, 0x0280ca03, 0x0280ca03, 0x02008501, 0x02008501}, | ||
99 | {0x0000a620, 0x04c15104, 0x04c15104, 0x0280ca03, 0x0280ca03}, | ||
100 | {0x0000a624, 0x04c15305, 0x04c15305, 0x03010c04, 0x03010c04}, | ||
101 | {0x0000a628, 0x04c15305, 0x04c15305, 0x04014c04, 0x04014c04}, | ||
102 | {0x0000a62c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
103 | {0x0000a630, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
104 | {0x0000a634, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
105 | {0x0000a638, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
106 | {0x0000a63c, 0x04c15305, 0x04c15305, 0x04015005, 0x04015005}, | ||
107 | {0x0000b2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, | ||
108 | {0x0000b2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, | ||
109 | {0x0000b2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, | ||
110 | {0x0000b2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, | ||
111 | {0x0000c2dc, 0x0380c7fc, 0x0380c7fc, 0x03aaa352, 0x03aaa352}, | ||
112 | {0x0000c2e0, 0x0000f800, 0x0000f800, 0x03ccc584, 0x03ccc584}, | ||
113 | {0x0000c2e4, 0x03ff0000, 0x03ff0000, 0x03f0f800, 0x03f0f800}, | ||
114 | {0x0000c2e8, 0x00000000, 0x00000000, 0x03ff0000, 0x03ff0000}, | ||
115 | {0x00016044, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, | ||
116 | {0x00016048, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, | ||
117 | {0x00016068, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, | ||
118 | {0x00016444, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, | ||
119 | {0x00016448, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, | ||
120 | {0x00016468, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, | ||
121 | {0x00016844, 0x012492d4, 0x012492d4, 0x012492d4, 0x012492d4}, | ||
122 | {0x00016848, 0x66480001, 0x66480001, 0x66480001, 0x66480001}, | ||
123 | {0x00016868, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c, 0x6db6db6c}, | ||
124 | }; | ||
125 | |||
126 | #endif /* INITVALS_9003_BUFFALO_H */ | ||
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_hw.c b/drivers/net/wireless/ath/ath9k/ar9003_hw.c index 4e8ae4a79dc0..29613ebbc5d7 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include "hw.h" | 17 | #include "hw.h" |
18 | #include "ar9003_mac.h" | 18 | #include "ar9003_mac.h" |
19 | #include "ar9003_2p2_initvals.h" | 19 | #include "ar9003_2p2_initvals.h" |
20 | #include "ar9003_buffalo_initvals.h" | ||
20 | #include "ar9485_initvals.h" | 21 | #include "ar9485_initvals.h" |
21 | #include "ar9340_initvals.h" | 22 | #include "ar9340_initvals.h" |
22 | #include "ar9330_1p1_initvals.h" | 23 | #include "ar9330_1p1_initvals.h" |
@@ -592,9 +593,14 @@ static void ar9003_tx_gain_table_mode3(struct ath_hw *ah) | |||
592 | else if (AR_SREV_9565(ah)) | 593 | else if (AR_SREV_9565(ah)) |
593 | INIT_INI_ARRAY(&ah->iniModesTxGain, | 594 | INIT_INI_ARRAY(&ah->iniModesTxGain, |
594 | ar9565_1p0_modes_high_power_tx_gain_table); | 595 | ar9565_1p0_modes_high_power_tx_gain_table); |
595 | else | 596 | else { |
596 | INIT_INI_ARRAY(&ah->iniModesTxGain, | 597 | if (ah->config.tx_gain_buffalo) |
597 | ar9300Modes_high_power_tx_gain_table_2p2); | 598 | INIT_INI_ARRAY(&ah->iniModesTxGain, |
599 | ar9300Modes_high_power_tx_gain_table_buffalo); | ||
600 | else | ||
601 | INIT_INI_ARRAY(&ah->iniModesTxGain, | ||
602 | ar9300Modes_high_power_tx_gain_table_2p2); | ||
603 | } | ||
598 | } | 604 | } |
599 | 605 | ||
600 | static void ar9003_tx_gain_table_mode4(struct ath_hw *ah) | 606 | static void ar9003_tx_gain_table_mode4(struct ath_hw *ah) |
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h index 7490047acd11..b1ff54631dca 100644 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h | |||
@@ -316,6 +316,7 @@ struct ath9k_ops_config { | |||
316 | bool xatten_margin_cfg; | 316 | bool xatten_margin_cfg; |
317 | bool alt_mingainidx; | 317 | bool alt_mingainidx; |
318 | bool no_pll_pwrsave; | 318 | bool no_pll_pwrsave; |
319 | bool tx_gain_buffalo; | ||
319 | }; | 320 | }; |
320 | 321 | ||
321 | enum ath9k_int { | 322 | enum ath9k_int { |
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index 5a0b7e82c85f..609b7e13f3f0 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c | |||
@@ -554,7 +554,7 @@ static void ath9k_init_misc(struct ath_softc *sc) | |||
554 | sc->spec_config.fft_period = 0xF; | 554 | sc->spec_config.fft_period = 0xF; |
555 | } | 555 | } |
556 | 556 | ||
557 | static void ath9k_init_platform(struct ath_softc *sc) | 557 | static void ath9k_init_pcoem_platform(struct ath_softc *sc) |
558 | { | 558 | { |
559 | struct ath_hw *ah = sc->sc_ah; | 559 | struct ath_hw *ah = sc->sc_ah; |
560 | struct ath9k_hw_capabilities *pCap = &ah->caps; | 560 | struct ath9k_hw_capabilities *pCap = &ah->caps; |
@@ -664,6 +664,27 @@ static void ath9k_eeprom_release(struct ath_softc *sc) | |||
664 | release_firmware(sc->sc_ah->eeprom_blob); | 664 | release_firmware(sc->sc_ah->eeprom_blob); |
665 | } | 665 | } |
666 | 666 | ||
667 | static int ath9k_init_soc_platform(struct ath_softc *sc) | ||
668 | { | ||
669 | struct ath9k_platform_data *pdata = sc->dev->platform_data; | ||
670 | struct ath_hw *ah = sc->sc_ah; | ||
671 | int ret = 0; | ||
672 | |||
673 | if (!pdata) | ||
674 | return 0; | ||
675 | |||
676 | if (pdata->eeprom_name) { | ||
677 | ret = ath9k_eeprom_request(sc, pdata->eeprom_name); | ||
678 | if (ret) | ||
679 | return ret; | ||
680 | } | ||
681 | |||
682 | if (pdata->tx_gain_buffalo) | ||
683 | ah->config.tx_gain_buffalo = true; | ||
684 | |||
685 | return ret; | ||
686 | } | ||
687 | |||
667 | static int ath9k_init_softc(u16 devid, struct ath_softc *sc, | 688 | static int ath9k_init_softc(u16 devid, struct ath_softc *sc, |
668 | const struct ath_bus_ops *bus_ops) | 689 | const struct ath_bus_ops *bus_ops) |
669 | { | 690 | { |
@@ -717,7 +738,11 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, | |||
717 | /* | 738 | /* |
718 | * Platform quirks. | 739 | * Platform quirks. |
719 | */ | 740 | */ |
720 | ath9k_init_platform(sc); | 741 | ath9k_init_pcoem_platform(sc); |
742 | |||
743 | ret = ath9k_init_soc_platform(sc); | ||
744 | if (ret) | ||
745 | return ret; | ||
721 | 746 | ||
722 | /* | 747 | /* |
723 | * Enable WLAN/BT RX Antenna diversity only when: | 748 | * Enable WLAN/BT RX Antenna diversity only when: |
@@ -731,7 +756,6 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, | |||
731 | common->bt_ant_diversity = 1; | 756 | common->bt_ant_diversity = 1; |
732 | 757 | ||
733 | spin_lock_init(&common->cc_lock); | 758 | spin_lock_init(&common->cc_lock); |
734 | |||
735 | spin_lock_init(&sc->sc_serial_rw); | 759 | spin_lock_init(&sc->sc_serial_rw); |
736 | spin_lock_init(&sc->sc_pm_lock); | 760 | spin_lock_init(&sc->sc_pm_lock); |
737 | mutex_init(&sc->mutex); | 761 | mutex_init(&sc->mutex); |
@@ -753,12 +777,6 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, | |||
753 | ath_read_cachesize(common, &csz); | 777 | ath_read_cachesize(common, &csz); |
754 | common->cachelsz = csz << 2; /* convert to bytes */ | 778 | common->cachelsz = csz << 2; /* convert to bytes */ |
755 | 779 | ||
756 | if (pdata && pdata->eeprom_name) { | ||
757 | ret = ath9k_eeprom_request(sc, pdata->eeprom_name); | ||
758 | if (ret) | ||
759 | return ret; | ||
760 | } | ||
761 | |||
762 | /* Initializes the hardware for all supported chipsets */ | 780 | /* Initializes the hardware for all supported chipsets */ |
763 | ret = ath9k_hw_init(ah); | 781 | ret = ath9k_hw_init(ah); |
764 | if (ret) | 782 | if (ret) |
diff --git a/include/linux/ath9k_platform.h b/include/linux/ath9k_platform.h index fcdd81bd5314..8598f8eacb20 100644 --- a/include/linux/ath9k_platform.h +++ b/include/linux/ath9k_platform.h | |||
@@ -32,6 +32,8 @@ struct ath9k_platform_data { | |||
32 | u32 gpio_val; | 32 | u32 gpio_val; |
33 | 33 | ||
34 | bool is_clk_25mhz; | 34 | bool is_clk_25mhz; |
35 | bool tx_gain_buffalo; | ||
36 | |||
35 | int (*get_mac_revision)(void); | 37 | int (*get_mac_revision)(void); |
36 | int (*external_reset)(void); | 38 | int (*external_reset)(void); |
37 | }; | 39 | }; |