Annotation of /trunk/kernel26-alx/patches-3.10/0173-3.10.74-all-fixes.patch
Parent Directory | Revision Log
Revision 2672 -
(hide annotations)
(download)
Tue Jul 21 16:46:35 2015 UTC (9 years, 2 months ago) by niro
File size: 21445 byte(s)
Tue Jul 21 16:46:35 2015 UTC (9 years, 2 months ago) by niro
File size: 21445 byte(s)
-3.10.84-alx-r1
1 | niro | 2672 | 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; |