Magellan Linux

Annotation of /trunk/kernel-alx/patches-3.10/0173-3.10.74-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2661 - (hide annotations) (download)
Tue Jul 21 16:20:23 2015 UTC (8 years, 9 months ago) by niro
File size: 21445 byte(s)
-linux-3.10.74
1 niro 2661 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, &params))
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;