Contents of /trunk/kernel26-alx/patches-3.10/0173-3.10.74-all-fixes.patch
Parent Directory | Revision Log
Revision 2672 -
(show annotations)
(download)
Tue Jul 21 16:46:35 2015 UTC (9 years, 3 months ago) by niro
File size: 21445 byte(s)
Tue Jul 21 16:46:35 2015 UTC (9 years, 3 months ago) by niro
File size: 21445 byte(s)
-3.10.84-alx-r1
1 | diff --git a/Makefile b/Makefile |
2 | index b1129094ebfd..d2a3930159ea 100644 |
3 | --- a/Makefile |
4 | +++ b/Makefile |
5 | @@ -1,6 +1,6 @@ |
6 | VERSION = 3 |
7 | PATCHLEVEL = 10 |
8 | -SUBLEVEL = 73 |
9 | +SUBLEVEL = 74 |
10 | EXTRAVERSION = |
11 | NAME = TOSSUG Baby Fish |
12 | |
13 | diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi b/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi |
14 | index 1382fec9e8c5..7fcb1ac0f232 100644 |
15 | --- a/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi |
16 | +++ b/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi |
17 | @@ -50,6 +50,7 @@ ethernet@b0000 { |
18 | fsl,num_tx_queues = <0x8>; |
19 | fsl,magic-packet; |
20 | local-mac-address = [ 00 00 00 00 00 00 ]; |
21 | + ranges; |
22 | |
23 | queue-group@b0000 { |
24 | #address-cells = <1>; |
25 | diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi b/arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi |
26 | index 221cd2ea5b31..9f25427c1527 100644 |
27 | --- a/arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi |
28 | +++ b/arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi |
29 | @@ -50,6 +50,7 @@ ethernet@b1000 { |
30 | fsl,num_tx_queues = <0x8>; |
31 | fsl,magic-packet; |
32 | local-mac-address = [ 00 00 00 00 00 00 ]; |
33 | + ranges; |
34 | |
35 | queue-group@b1000 { |
36 | #address-cells = <1>; |
37 | diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi b/arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi |
38 | index 61456c317609..cd7c318ab131 100644 |
39 | --- a/arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi |
40 | +++ b/arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi |
41 | @@ -49,6 +49,7 @@ ethernet@b2000 { |
42 | fsl,num_tx_queues = <0x8>; |
43 | fsl,magic-packet; |
44 | local-mac-address = [ 00 00 00 00 00 00 ]; |
45 | + ranges; |
46 | |
47 | queue-group@b2000 { |
48 | #address-cells = <1>; |
49 | diff --git a/drivers/md/dm.c b/drivers/md/dm.c |
50 | index a87f0c42cb8b..f69fed826a56 100644 |
51 | --- a/drivers/md/dm.c |
52 | +++ b/drivers/md/dm.c |
53 | @@ -2333,10 +2333,16 @@ static void __dm_destroy(struct mapped_device *md, bool wait) |
54 | set_bit(DMF_FREEING, &md->flags); |
55 | spin_unlock(&_minor_lock); |
56 | |
57 | + /* |
58 | + * Take suspend_lock so that presuspend and postsuspend methods |
59 | + * do not race with internal suspend. |
60 | + */ |
61 | + mutex_lock(&md->suspend_lock); |
62 | if (!dm_suspended_md(md)) { |
63 | dm_table_presuspend_targets(map); |
64 | dm_table_postsuspend_targets(map); |
65 | } |
66 | + mutex_unlock(&md->suspend_lock); |
67 | |
68 | /* |
69 | * Rare, but there may be I/O requests still going to complete, |
70 | diff --git a/drivers/net/ethernet/amd/pcnet32.c b/drivers/net/ethernet/amd/pcnet32.c |
71 | index ed2130727643..f6415fda103b 100644 |
72 | --- a/drivers/net/ethernet/amd/pcnet32.c |
73 | +++ b/drivers/net/ethernet/amd/pcnet32.c |
74 | @@ -1516,7 +1516,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev) |
75 | { |
76 | struct pcnet32_private *lp; |
77 | int i, media; |
78 | - int fdx, mii, fset, dxsuflo; |
79 | + int fdx, mii, fset, dxsuflo, sram; |
80 | int chip_version; |
81 | char *chipname; |
82 | struct net_device *dev; |
83 | @@ -1553,7 +1553,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev) |
84 | } |
85 | |
86 | /* initialize variables */ |
87 | - fdx = mii = fset = dxsuflo = 0; |
88 | + fdx = mii = fset = dxsuflo = sram = 0; |
89 | chip_version = (chip_version >> 12) & 0xffff; |
90 | |
91 | switch (chip_version) { |
92 | @@ -1586,6 +1586,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev) |
93 | chipname = "PCnet/FAST III 79C973"; /* PCI */ |
94 | fdx = 1; |
95 | mii = 1; |
96 | + sram = 1; |
97 | break; |
98 | case 0x2626: |
99 | chipname = "PCnet/Home 79C978"; /* PCI */ |
100 | @@ -1609,6 +1610,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev) |
101 | chipname = "PCnet/FAST III 79C975"; /* PCI */ |
102 | fdx = 1; |
103 | mii = 1; |
104 | + sram = 1; |
105 | break; |
106 | case 0x2628: |
107 | chipname = "PCnet/PRO 79C976"; |
108 | @@ -1637,6 +1639,31 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev) |
109 | dxsuflo = 1; |
110 | } |
111 | |
112 | + /* |
113 | + * The Am79C973/Am79C975 controllers come with 12K of SRAM |
114 | + * which we can use for the Tx/Rx buffers but most importantly, |
115 | + * the use of SRAM allow us to use the BCR18:NOUFLO bit to avoid |
116 | + * Tx fifo underflows. |
117 | + */ |
118 | + if (sram) { |
119 | + /* |
120 | + * The SRAM is being configured in two steps. First we |
121 | + * set the SRAM size in the BCR25:SRAM_SIZE bits. According |
122 | + * to the datasheet, each bit corresponds to a 512-byte |
123 | + * page so we can have at most 24 pages. The SRAM_SIZE |
124 | + * holds the value of the upper 8 bits of the 16-bit SRAM size. |
125 | + * The low 8-bits start at 0x00 and end at 0xff. So the |
126 | + * address range is from 0x0000 up to 0x17ff. Therefore, |
127 | + * the SRAM_SIZE is set to 0x17. The next step is to set |
128 | + * the BCR26:SRAM_BND midway through so the Tx and Rx |
129 | + * buffers can share the SRAM equally. |
130 | + */ |
131 | + a->write_bcr(ioaddr, 25, 0x17); |
132 | + a->write_bcr(ioaddr, 26, 0xc); |
133 | + /* And finally enable the NOUFLO bit */ |
134 | + a->write_bcr(ioaddr, 18, a->read_bcr(ioaddr, 18) | (1 << 11)); |
135 | + } |
136 | + |
137 | dev = alloc_etherdev(sizeof(*lp)); |
138 | if (!dev) { |
139 | ret = -ENOMEM; |
140 | diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c |
141 | index e6660d692008..ec0d32ad7592 100644 |
142 | --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c |
143 | +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c |
144 | @@ -541,7 +541,7 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw, |
145 | |
146 | ret = iwl_mvm_mac_ctxt_add(mvm, vif); |
147 | if (ret) |
148 | - goto out_remove_mac; |
149 | + goto out_release; |
150 | |
151 | /* |
152 | * Update power state on the new interface. Admittedly, based on |
153 | diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c |
154 | index cfd49eca67aa..c81716042073 100644 |
155 | --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c |
156 | +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c |
157 | @@ -1465,7 +1465,7 @@ static int tcm_qla2xxx_check_initiator_node_acl( |
158 | /* |
159 | * Finally register the new FC Nexus with TCM |
160 | */ |
161 | - __transport_register_session(se_nacl->se_tpg, se_nacl, se_sess, sess); |
162 | + transport_register_session(se_nacl->se_tpg, se_nacl, se_sess, sess); |
163 | |
164 | return 0; |
165 | } |
166 | diff --git a/drivers/staging/vt6655/rf.c b/drivers/staging/vt6655/rf.c |
167 | index 6948984a25ab..c2d602825422 100644 |
168 | --- a/drivers/staging/vt6655/rf.c |
169 | +++ b/drivers/staging/vt6655/rf.c |
170 | @@ -966,6 +966,7 @@ bool RFbSetPower( |
171 | break; |
172 | case RATE_6M: |
173 | case RATE_9M: |
174 | + case RATE_12M: |
175 | case RATE_18M: |
176 | byPwr = pDevice->abyOFDMPwrTbl[uCH]; |
177 | if (pDevice->byRFType == RF_UW2452) { |
178 | diff --git a/drivers/target/tcm_fc/tfc_io.c b/drivers/target/tcm_fc/tfc_io.c |
179 | index e415af32115a..c67d3795db4a 100644 |
180 | --- a/drivers/target/tcm_fc/tfc_io.c |
181 | +++ b/drivers/target/tcm_fc/tfc_io.c |
182 | @@ -346,7 +346,7 @@ void ft_invl_hw_context(struct ft_cmd *cmd) |
183 | ep = fc_seq_exch(seq); |
184 | if (ep) { |
185 | lport = ep->lp; |
186 | - if (lport && (ep->xid <= lport->lro_xid)) |
187 | + if (lport && (ep->xid <= lport->lro_xid)) { |
188 | /* |
189 | * "ddp_done" trigger invalidation of HW |
190 | * specific DDP context |
191 | @@ -361,6 +361,7 @@ void ft_invl_hw_context(struct ft_cmd *cmd) |
192 | * identified using ep->xid) |
193 | */ |
194 | cmd->was_ddp_setup = 0; |
195 | + } |
196 | } |
197 | } |
198 | } |
199 | diff --git a/fs/hfsplus/brec.c b/fs/hfsplus/brec.c |
200 | index 6e560d56094b..754fdf8c6356 100644 |
201 | --- a/fs/hfsplus/brec.c |
202 | +++ b/fs/hfsplus/brec.c |
203 | @@ -131,13 +131,16 @@ skip: |
204 | hfs_bnode_write(node, entry, data_off + key_len, entry_len); |
205 | hfs_bnode_dump(node); |
206 | |
207 | - if (new_node) { |
208 | - /* update parent key if we inserted a key |
209 | - * at the start of the first node |
210 | - */ |
211 | - if (!rec && new_node != node) |
212 | - hfs_brec_update_parent(fd); |
213 | + /* |
214 | + * update parent key if we inserted a key |
215 | + * at the start of the node and it is not the new node |
216 | + */ |
217 | + if (!rec && new_node != node) { |
218 | + hfs_bnode_read_key(node, fd->search_key, data_off + size); |
219 | + hfs_brec_update_parent(fd); |
220 | + } |
221 | |
222 | + if (new_node) { |
223 | hfs_bnode_put(fd->bnode); |
224 | if (!new_node->parent) { |
225 | hfs_btree_inc_height(tree); |
226 | @@ -168,9 +171,6 @@ skip: |
227 | goto again; |
228 | } |
229 | |
230 | - if (!rec) |
231 | - hfs_brec_update_parent(fd); |
232 | - |
233 | return 0; |
234 | } |
235 | |
236 | @@ -370,6 +370,8 @@ again: |
237 | if (IS_ERR(parent)) |
238 | return PTR_ERR(parent); |
239 | __hfs_brec_find(parent, fd, hfs_find_rec_by_key); |
240 | + if (fd->record < 0) |
241 | + return -ENOENT; |
242 | hfs_bnode_dump(parent); |
243 | rec = fd->record; |
244 | |
245 | diff --git a/kernel/events/core.c b/kernel/events/core.c |
246 | index 7bf4d519c20f..7daf52c340cd 100644 |
247 | --- a/kernel/events/core.c |
248 | +++ b/kernel/events/core.c |
249 | @@ -4007,6 +4007,13 @@ static void perf_pending_event(struct irq_work *entry) |
250 | { |
251 | struct perf_event *event = container_of(entry, |
252 | struct perf_event, pending); |
253 | + int rctx; |
254 | + |
255 | + rctx = perf_swevent_get_recursion_context(); |
256 | + /* |
257 | + * If we 'fail' here, that's OK, it means recursion is already disabled |
258 | + * and we won't recurse 'further'. |
259 | + */ |
260 | |
261 | if (event->pending_disable) { |
262 | event->pending_disable = 0; |
263 | @@ -4017,6 +4024,9 @@ static void perf_pending_event(struct irq_work *entry) |
264 | event->pending_wakeup = 0; |
265 | perf_event_wakeup(event); |
266 | } |
267 | + |
268 | + if (rctx >= 0) |
269 | + perf_swevent_put_recursion_context(rctx); |
270 | } |
271 | |
272 | /* |
273 | diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h |
274 | index 845563b81a0f..9f0ea9d8be73 100644 |
275 | --- a/net/mac80211/ieee80211_i.h |
276 | +++ b/net/mac80211/ieee80211_i.h |
277 | @@ -60,13 +60,24 @@ struct ieee80211_local; |
278 | #define IEEE80211_UNSET_POWER_LEVEL INT_MIN |
279 | |
280 | /* |
281 | - * Some APs experience problems when working with U-APSD. Decrease the |
282 | - * probability of that happening by using legacy mode for all ACs but VO. |
283 | - * The AP that caused us trouble was a Cisco 4410N. It ignores our |
284 | - * setting, and always treats non-VO ACs as legacy. |
285 | + * Some APs experience problems when working with U-APSD. Decreasing the |
286 | + * probability of that happening by using legacy mode for all ACs but VO isn't |
287 | + * enough. |
288 | + * |
289 | + * Cisco 4410N originally forced us to enable VO by default only because it |
290 | + * treated non-VO ACs as legacy. |
291 | + * |
292 | + * However some APs (notably Netgear R7000) silently reclassify packets to |
293 | + * different ACs. Since u-APSD ACs require trigger frames for frame retrieval |
294 | + * clients would never see some frames (e.g. ARP responses) or would fetch them |
295 | + * accidentally after a long time. |
296 | + * |
297 | + * It makes little sense to enable u-APSD queues by default because it needs |
298 | + * userspace applications to be aware of it to actually take advantage of the |
299 | + * possible additional powersavings. Implicitly depending on driver autotrigger |
300 | + * frame support doesn't make much sense. |
301 | */ |
302 | -#define IEEE80211_DEFAULT_UAPSD_QUEUES \ |
303 | - IEEE80211_WMM_IE_STA_QOSINFO_AC_VO |
304 | +#define IEEE80211_DEFAULT_UAPSD_QUEUES 0 |
305 | |
306 | #define IEEE80211_DEFAULT_MAX_SP_LEN \ |
307 | IEEE80211_WMM_IE_STA_QOSINFO_SP_ALL |
308 | diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c |
309 | index 9299a38c372e..cd60be8d9aba 100644 |
310 | --- a/net/mac80211/rx.c |
311 | +++ b/net/mac80211/rx.c |
312 | @@ -2023,6 +2023,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx) |
313 | hdr = (struct ieee80211_hdr *) skb->data; |
314 | mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen); |
315 | |
316 | + if (ieee80211_drop_unencrypted(rx, hdr->frame_control)) |
317 | + return RX_DROP_MONITOR; |
318 | + |
319 | /* frame is in RMC, don't forward */ |
320 | if (ieee80211_is_data(hdr->frame_control) && |
321 | is_multicast_ether_addr(hdr->addr1) && |
322 | diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c |
323 | index dc200bf831ae..90a0e552cb32 100644 |
324 | --- a/net/wireless/nl80211.c |
325 | +++ b/net/wireless/nl80211.c |
326 | @@ -4032,6 +4032,16 @@ static int nl80211_new_station(struct sk_buff *skb, struct genl_info *info) |
327 | if (parse_station_flags(info, dev->ieee80211_ptr->iftype, ¶ms)) |
328 | return -EINVAL; |
329 | |
330 | + /* HT/VHT requires QoS, but if we don't have that just ignore HT/VHT |
331 | + * as userspace might just pass through the capabilities from the IEs |
332 | + * directly, rather than enforcing this restriction and returning an |
333 | + * error in this case. |
334 | + */ |
335 | + if (!(params.sta_flags_set & BIT(NL80211_STA_FLAG_WME))) { |
336 | + params.ht_capa = NULL; |
337 | + params.vht_capa = NULL; |
338 | + } |
339 | + |
340 | /* When you run into this, adjust the code below for the new flag */ |
341 | BUILD_BUG_ON(NL80211_STA_FLAG_MAX != 7); |
342 | |
343 | diff --git a/sound/soc/codecs/adav80x.c b/sound/soc/codecs/adav80x.c |
344 | index 3c839cc4e00e..0ef2b2a33ee5 100644 |
345 | --- a/sound/soc/codecs/adav80x.c |
346 | +++ b/sound/soc/codecs/adav80x.c |
347 | @@ -307,7 +307,7 @@ static int adav80x_put_deemph(struct snd_kcontrol *kcontrol, |
348 | { |
349 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
350 | struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); |
351 | - unsigned int deemph = ucontrol->value.enumerated.item[0]; |
352 | + unsigned int deemph = ucontrol->value.integer.value[0]; |
353 | |
354 | if (deemph > 1) |
355 | return -EINVAL; |
356 | @@ -323,7 +323,7 @@ static int adav80x_get_deemph(struct snd_kcontrol *kcontrol, |
357 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
358 | struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); |
359 | |
360 | - ucontrol->value.enumerated.item[0] = adav80x->deemph; |
361 | + ucontrol->value.integer.value[0] = adav80x->deemph; |
362 | return 0; |
363 | }; |
364 | |
365 | diff --git a/sound/soc/codecs/ak4641.c b/sound/soc/codecs/ak4641.c |
366 | index 5f9af1fb76e8..68379c14720b 100644 |
367 | --- a/sound/soc/codecs/ak4641.c |
368 | +++ b/sound/soc/codecs/ak4641.c |
369 | @@ -74,7 +74,7 @@ static int ak4641_put_deemph(struct snd_kcontrol *kcontrol, |
370 | { |
371 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
372 | struct ak4641_priv *ak4641 = snd_soc_codec_get_drvdata(codec); |
373 | - int deemph = ucontrol->value.enumerated.item[0]; |
374 | + int deemph = ucontrol->value.integer.value[0]; |
375 | |
376 | if (deemph > 1) |
377 | return -EINVAL; |
378 | @@ -90,7 +90,7 @@ static int ak4641_get_deemph(struct snd_kcontrol *kcontrol, |
379 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
380 | struct ak4641_priv *ak4641 = snd_soc_codec_get_drvdata(codec); |
381 | |
382 | - ucontrol->value.enumerated.item[0] = ak4641->deemph; |
383 | + ucontrol->value.integer.value[0] = ak4641->deemph; |
384 | return 0; |
385 | }; |
386 | |
387 | diff --git a/sound/soc/codecs/cs4271.c b/sound/soc/codecs/cs4271.c |
388 | index 03036b326732..ffa4a2d8a4bc 100644 |
389 | --- a/sound/soc/codecs/cs4271.c |
390 | +++ b/sound/soc/codecs/cs4271.c |
391 | @@ -267,7 +267,7 @@ static int cs4271_get_deemph(struct snd_kcontrol *kcontrol, |
392 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
393 | struct cs4271_private *cs4271 = snd_soc_codec_get_drvdata(codec); |
394 | |
395 | - ucontrol->value.enumerated.item[0] = cs4271->deemph; |
396 | + ucontrol->value.integer.value[0] = cs4271->deemph; |
397 | return 0; |
398 | } |
399 | |
400 | @@ -277,7 +277,7 @@ static int cs4271_put_deemph(struct snd_kcontrol *kcontrol, |
401 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
402 | struct cs4271_private *cs4271 = snd_soc_codec_get_drvdata(codec); |
403 | |
404 | - cs4271->deemph = ucontrol->value.enumerated.item[0]; |
405 | + cs4271->deemph = ucontrol->value.integer.value[0]; |
406 | return cs4271_set_deemph(codec); |
407 | } |
408 | |
409 | diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c |
410 | index 3b5f565a23a5..665e0ddc2ef0 100644 |
411 | --- a/sound/soc/codecs/sgtl5000.c |
412 | +++ b/sound/soc/codecs/sgtl5000.c |
413 | @@ -1111,13 +1111,7 @@ static int sgtl5000_set_power_regs(struct snd_soc_codec *codec) |
414 | /* Enable VDDC charge pump */ |
415 | ana_pwr |= SGTL5000_VDDC_CHRGPMP_POWERUP; |
416 | } else if (vddio >= 3100 && vdda >= 3100) { |
417 | - /* |
418 | - * if vddio and vddd > 3.1v, |
419 | - * charge pump should be clean before set ana_pwr |
420 | - */ |
421 | - snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER, |
422 | - SGTL5000_VDDC_CHRGPMP_POWERUP, 0); |
423 | - |
424 | + ana_pwr &= ~SGTL5000_VDDC_CHRGPMP_POWERUP; |
425 | /* VDDC use VDDIO rail */ |
426 | lreg_ctrl |= SGTL5000_VDDC_ASSN_OVRD; |
427 | lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO << |
428 | diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c |
429 | index d447c4aa1d5e..675a8fd0deed 100644 |
430 | --- a/sound/soc/codecs/tas5086.c |
431 | +++ b/sound/soc/codecs/tas5086.c |
432 | @@ -173,7 +173,7 @@ static int tas5086_get_deemph(struct snd_kcontrol *kcontrol, |
433 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
434 | struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec); |
435 | |
436 | - ucontrol->value.enumerated.item[0] = priv->deemph; |
437 | + ucontrol->value.integer.value[0] = priv->deemph; |
438 | |
439 | return 0; |
440 | } |
441 | @@ -184,7 +184,7 @@ static int tas5086_put_deemph(struct snd_kcontrol *kcontrol, |
442 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
443 | struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec); |
444 | |
445 | - priv->deemph = ucontrol->value.enumerated.item[0]; |
446 | + priv->deemph = ucontrol->value.integer.value[0]; |
447 | |
448 | return tas5086_set_deemph(codec); |
449 | } |
450 | diff --git a/sound/soc/codecs/wm2000.c b/sound/soc/codecs/wm2000.c |
451 | index 7fefd766b582..124fb538dfa9 100644 |
452 | --- a/sound/soc/codecs/wm2000.c |
453 | +++ b/sound/soc/codecs/wm2000.c |
454 | @@ -605,7 +605,7 @@ static int wm2000_anc_mode_get(struct snd_kcontrol *kcontrol, |
455 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
456 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); |
457 | |
458 | - ucontrol->value.enumerated.item[0] = wm2000->anc_active; |
459 | + ucontrol->value.integer.value[0] = wm2000->anc_active; |
460 | |
461 | return 0; |
462 | } |
463 | @@ -615,7 +615,7 @@ static int wm2000_anc_mode_put(struct snd_kcontrol *kcontrol, |
464 | { |
465 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
466 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); |
467 | - int anc_active = ucontrol->value.enumerated.item[0]; |
468 | + int anc_active = ucontrol->value.integer.value[0]; |
469 | int ret; |
470 | |
471 | if (anc_active > 1) |
472 | @@ -638,7 +638,7 @@ static int wm2000_speaker_get(struct snd_kcontrol *kcontrol, |
473 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
474 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); |
475 | |
476 | - ucontrol->value.enumerated.item[0] = wm2000->spk_ena; |
477 | + ucontrol->value.integer.value[0] = wm2000->spk_ena; |
478 | |
479 | return 0; |
480 | } |
481 | @@ -648,7 +648,7 @@ static int wm2000_speaker_put(struct snd_kcontrol *kcontrol, |
482 | { |
483 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
484 | struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); |
485 | - int val = ucontrol->value.enumerated.item[0]; |
486 | + int val = ucontrol->value.integer.value[0]; |
487 | int ret; |
488 | |
489 | if (val > 1) |
490 | diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c |
491 | index 10d492b6a5b4..944b09b1f481 100644 |
492 | --- a/sound/soc/codecs/wm8731.c |
493 | +++ b/sound/soc/codecs/wm8731.c |
494 | @@ -121,7 +121,7 @@ static int wm8731_get_deemph(struct snd_kcontrol *kcontrol, |
495 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
496 | struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec); |
497 | |
498 | - ucontrol->value.enumerated.item[0] = wm8731->deemph; |
499 | + ucontrol->value.integer.value[0] = wm8731->deemph; |
500 | |
501 | return 0; |
502 | } |
503 | @@ -131,7 +131,7 @@ static int wm8731_put_deemph(struct snd_kcontrol *kcontrol, |
504 | { |
505 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
506 | struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec); |
507 | - int deemph = ucontrol->value.enumerated.item[0]; |
508 | + int deemph = ucontrol->value.integer.value[0]; |
509 | int ret = 0; |
510 | |
511 | if (deemph > 1) |
512 | diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c |
513 | index 9d88437cdcd1..79f4a217b5d5 100644 |
514 | --- a/sound/soc/codecs/wm8903.c |
515 | +++ b/sound/soc/codecs/wm8903.c |
516 | @@ -446,7 +446,7 @@ static int wm8903_get_deemph(struct snd_kcontrol *kcontrol, |
517 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
518 | struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); |
519 | |
520 | - ucontrol->value.enumerated.item[0] = wm8903->deemph; |
521 | + ucontrol->value.integer.value[0] = wm8903->deemph; |
522 | |
523 | return 0; |
524 | } |
525 | @@ -456,7 +456,7 @@ static int wm8903_put_deemph(struct snd_kcontrol *kcontrol, |
526 | { |
527 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
528 | struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); |
529 | - int deemph = ucontrol->value.enumerated.item[0]; |
530 | + int deemph = ucontrol->value.integer.value[0]; |
531 | int ret = 0; |
532 | |
533 | if (deemph > 1) |
534 | diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c |
535 | index af62f843a691..c68d541cd350 100644 |
536 | --- a/sound/soc/codecs/wm8904.c |
537 | +++ b/sound/soc/codecs/wm8904.c |
538 | @@ -523,7 +523,7 @@ static int wm8904_get_deemph(struct snd_kcontrol *kcontrol, |
539 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
540 | struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); |
541 | |
542 | - ucontrol->value.enumerated.item[0] = wm8904->deemph; |
543 | + ucontrol->value.integer.value[0] = wm8904->deemph; |
544 | return 0; |
545 | } |
546 | |
547 | @@ -532,7 +532,7 @@ static int wm8904_put_deemph(struct snd_kcontrol *kcontrol, |
548 | { |
549 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
550 | struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); |
551 | - int deemph = ucontrol->value.enumerated.item[0]; |
552 | + int deemph = ucontrol->value.integer.value[0]; |
553 | |
554 | if (deemph > 1) |
555 | return -EINVAL; |
556 | diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c |
557 | index 82c8ba975720..1c1fc6119758 100644 |
558 | --- a/sound/soc/codecs/wm8955.c |
559 | +++ b/sound/soc/codecs/wm8955.c |
560 | @@ -393,7 +393,7 @@ static int wm8955_get_deemph(struct snd_kcontrol *kcontrol, |
561 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
562 | struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec); |
563 | |
564 | - ucontrol->value.enumerated.item[0] = wm8955->deemph; |
565 | + ucontrol->value.integer.value[0] = wm8955->deemph; |
566 | return 0; |
567 | } |
568 | |
569 | @@ -402,7 +402,7 @@ static int wm8955_put_deemph(struct snd_kcontrol *kcontrol, |
570 | { |
571 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
572 | struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec); |
573 | - int deemph = ucontrol->value.enumerated.item[0]; |
574 | + int deemph = ucontrol->value.integer.value[0]; |
575 | |
576 | if (deemph > 1) |
577 | return -EINVAL; |
578 | diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c |
579 | index 412d90f7b256..4a8decf85a4a 100644 |
580 | --- a/sound/soc/codecs/wm8960.c |
581 | +++ b/sound/soc/codecs/wm8960.c |
582 | @@ -181,7 +181,7 @@ static int wm8960_get_deemph(struct snd_kcontrol *kcontrol, |
583 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
584 | struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); |
585 | |
586 | - ucontrol->value.enumerated.item[0] = wm8960->deemph; |
587 | + ucontrol->value.integer.value[0] = wm8960->deemph; |
588 | return 0; |
589 | } |
590 | |
591 | @@ -190,7 +190,7 @@ static int wm8960_put_deemph(struct snd_kcontrol *kcontrol, |
592 | { |
593 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
594 | struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec); |
595 | - int deemph = ucontrol->value.enumerated.item[0]; |
596 | + int deemph = ucontrol->value.integer.value[0]; |
597 | |
598 | if (deemph > 1) |
599 | return -EINVAL; |