Blame view

drivers/staging/vt6656/channel.c 4.97 KB
6b4c6ce89   Greg Kroah-Hartman   staging: vt6656: ...
1
  // SPDX-License-Identifier: GPL-2.0+
92b967971   Forest Bond   Staging: Add pris...
2
3
4
5
  /*
   * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
   * All rights reserved.
   *
92b967971   Forest Bond   Staging: Add pris...
6
7
   * File: channel.c
   *
bbc9a9916   AndrĂ© Goddard Rosa   Staging: fix asso...
8
   * Purpose: Channel number mapping
92b967971   Forest Bond   Staging: Add pris...
9
10
11
12
13
14
15
16
   *
   * Author: Lucas Lin
   *
   * Date: Dec 24, 2004
   *
   *
   *
   * Revision History:
618d7d07b   Peter Senna Tschudin   staging: vt6556: ...
17
18
19
   *	01-18-2005	RobertYu:	remove the for loop searching in
   *					ChannelValid, change ChannelRuleTab
   *					to lookup-type, reorder table items.
92b967971   Forest Bond   Staging: Add pris...
20
21
22
   *
   *
   */
110f97e93   Malcolm Priestley   staging: vt6656: ...
23
  #include "device.h"
92b967971   Forest Bond   Staging: Add pris...
24
  #include "channel.h"
92b967971   Forest Bond   Staging: Add pris...
25
  #include "rf.h"
92b967971   Forest Bond   Staging: Add pris...
26

110f97e93   Malcolm Priestley   staging: vt6656: ...
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
  static struct ieee80211_rate vnt_rates_bg[] = {
  	{ .bitrate = 10,  .hw_value = RATE_1M },
  	{ .bitrate = 20,  .hw_value = RATE_2M },
  	{ .bitrate = 55,  .hw_value = RATE_5M },
  	{ .bitrate = 110, .hw_value = RATE_11M },
  	{ .bitrate = 60,  .hw_value = RATE_6M },
  	{ .bitrate = 90,  .hw_value = RATE_9M },
  	{ .bitrate = 120, .hw_value = RATE_12M },
  	{ .bitrate = 180, .hw_value = RATE_18M },
  	{ .bitrate = 240, .hw_value = RATE_24M },
  	{ .bitrate = 360, .hw_value = RATE_36M },
  	{ .bitrate = 480, .hw_value = RATE_48M },
  	{ .bitrate = 540, .hw_value = RATE_54M },
  };
  
  static struct ieee80211_rate vnt_rates_a[] = {
  	{ .bitrate = 60,  .hw_value = RATE_6M },
  	{ .bitrate = 90,  .hw_value = RATE_9M },
  	{ .bitrate = 120, .hw_value = RATE_12M },
  	{ .bitrate = 180, .hw_value = RATE_18M },
  	{ .bitrate = 240, .hw_value = RATE_24M },
  	{ .bitrate = 360, .hw_value = RATE_36M },
  	{ .bitrate = 480, .hw_value = RATE_48M },
  	{ .bitrate = 540, .hw_value = RATE_54M },
  };
  
  static struct ieee80211_channel vnt_channels_2ghz[] = {
  	{ .center_freq = 2412, .hw_value = 1 },
  	{ .center_freq = 2417, .hw_value = 2 },
  	{ .center_freq = 2422, .hw_value = 3 },
  	{ .center_freq = 2427, .hw_value = 4 },
  	{ .center_freq = 2432, .hw_value = 5 },
  	{ .center_freq = 2437, .hw_value = 6 },
  	{ .center_freq = 2442, .hw_value = 7 },
  	{ .center_freq = 2447, .hw_value = 8 },
  	{ .center_freq = 2452, .hw_value = 9 },
  	{ .center_freq = 2457, .hw_value = 10 },
  	{ .center_freq = 2462, .hw_value = 11 },
  	{ .center_freq = 2467, .hw_value = 12 },
  	{ .center_freq = 2472, .hw_value = 13 },
  	{ .center_freq = 2484, .hw_value = 14 }
  };
  
  static struct ieee80211_channel vnt_channels_5ghz[] = {
  	{ .center_freq = 4915, .hw_value = 15 },
  	{ .center_freq = 4920, .hw_value = 16 },
  	{ .center_freq = 4925, .hw_value = 17 },
  	{ .center_freq = 4935, .hw_value = 18 },
  	{ .center_freq = 4940, .hw_value = 19 },
  	{ .center_freq = 4945, .hw_value = 20 },
  	{ .center_freq = 4960, .hw_value = 21 },
  	{ .center_freq = 4980, .hw_value = 22 },
  	{ .center_freq = 5035, .hw_value = 23 },
  	{ .center_freq = 5040, .hw_value = 24 },
  	{ .center_freq = 5045, .hw_value = 25 },
  	{ .center_freq = 5055, .hw_value = 26 },
  	{ .center_freq = 5060, .hw_value = 27 },
  	{ .center_freq = 5080, .hw_value = 28 },
  	{ .center_freq = 5170, .hw_value = 29 },
  	{ .center_freq = 5180, .hw_value = 30 },
  	{ .center_freq = 5190, .hw_value = 31 },
  	{ .center_freq = 5200, .hw_value = 32 },
  	{ .center_freq = 5210, .hw_value = 33 },
  	{ .center_freq = 5220, .hw_value = 34 },
  	{ .center_freq = 5230, .hw_value = 35 },
  	{ .center_freq = 5240, .hw_value = 36 },
  	{ .center_freq = 5260, .hw_value = 37 },
  	{ .center_freq = 5280, .hw_value = 38 },
  	{ .center_freq = 5300, .hw_value = 39 },
  	{ .center_freq = 5320, .hw_value = 40 },
  	{ .center_freq = 5500, .hw_value = 41 },
  	{ .center_freq = 5520, .hw_value = 42 },
  	{ .center_freq = 5540, .hw_value = 43 },
  	{ .center_freq = 5560, .hw_value = 44 },
  	{ .center_freq = 5580, .hw_value = 45 },
  	{ .center_freq = 5600, .hw_value = 46 },
  	{ .center_freq = 5620, .hw_value = 47 },
  	{ .center_freq = 5640, .hw_value = 48 },
  	{ .center_freq = 5660, .hw_value = 49 },
  	{ .center_freq = 5680, .hw_value = 50 },
  	{ .center_freq = 5700, .hw_value = 51 },
  	{ .center_freq = 5745, .hw_value = 52 },
  	{ .center_freq = 5765, .hw_value = 53 },
  	{ .center_freq = 5785, .hw_value = 54 },
  	{ .center_freq = 5805, .hw_value = 55 },
  	{ .center_freq = 5825, .hw_value = 56 }
  };
  
  static struct ieee80211_supported_band vnt_supported_2ghz_band = {
  	.channels = vnt_channels_2ghz,
  	.n_channels = ARRAY_SIZE(vnt_channels_2ghz),
  	.bitrates = vnt_rates_bg,
  	.n_bitrates = ARRAY_SIZE(vnt_rates_bg),
  };
  
  static struct ieee80211_supported_band vnt_supported_5ghz_band = {
  	.channels = vnt_channels_5ghz,
  	.n_channels = ARRAY_SIZE(vnt_channels_5ghz),
  	.bitrates = vnt_rates_a,
  	.n_bitrates = ARRAY_SIZE(vnt_rates_a),
  };
  
  void vnt_init_bands(struct vnt_private *priv)
  {
  	struct ieee80211_channel *ch;
  	int i;
6242ecaeb   Malcolm Priestley   staging: vt6656: ...
133
  	switch (priv->rf_type) {
110f97e93   Malcolm Priestley   staging: vt6656: ...
134
135
  	case RF_AIROHA7230:
  	case RF_VT3342A0:
b63d6ed6c   Malcolm Priestley   staging: vt6656: ...
136
  	default:
110f97e93   Malcolm Priestley   staging: vt6656: ...
137
138
139
140
141
142
  		ch = vnt_channels_5ghz;
  
  		for (i = 0; i < ARRAY_SIZE(vnt_channels_5ghz); i++) {
  			ch[i].max_power = VNT_RF_MAX_POWER;
  			ch[i].flags = IEEE80211_CHAN_NO_HT40;
  		}
57fbcce37   Johannes Berg   cfg80211: remove ...
143
  		priv->hw->wiphy->bands[NL80211_BAND_5GHZ] =
110f97e93   Malcolm Priestley   staging: vt6656: ...
144
145
146
147
148
149
150
151
152
153
154
155
  						&vnt_supported_5ghz_band;
  	/* fallthrough */
  	case RF_AL2230:
  	case RF_AL2230S:
  	case RF_VT3226:
  	case RF_VT3226D0:
  		ch = vnt_channels_2ghz;
  
  		for (i = 0; i < ARRAY_SIZE(vnt_channels_2ghz); i++) {
  			ch[i].max_power = VNT_RF_MAX_POWER;
  			ch[i].flags = IEEE80211_CHAN_NO_HT40;
  		}
57fbcce37   Johannes Berg   cfg80211: remove ...
156
  		priv->hw->wiphy->bands[NL80211_BAND_2GHZ] =
110f97e93   Malcolm Priestley   staging: vt6656: ...
157
158
159
160
  						&vnt_supported_2ghz_band;
  		break;
  	}
  }