commit:     6580d9fac23bee925ad44b62d9bc581d33e22626
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Tue Apr 14 13:05:39 2015 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Tue Apr 14 13:05:39 2015 +0000
URL:        https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=6580d9fa

Linux patch 3.10.74

 0000_README              |   4 +
 1073_linux-3.10.74.patch | 599 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 603 insertions(+)

diff --git a/0000_README b/0000_README
index 9319079..43a21aa 100644
--- a/0000_README
+++ b/0000_README
@@ -334,6 +334,10 @@ Patch:  1072_linux-3.10.73.patch
 From:   http://www.kernel.org
 Desc:   Linux 3.10.73
 
+Patch:  1073_linux-3.10.74.patch
+From:   http://www.kernel.org
+Desc:   Linux 3.10.74
+
 Patch:  1500_XATTR_USER_PREFIX.patch
 From:   https://bugs.gentoo.org/show_bug.cgi?id=470644
 Desc:   Support for namespace user.pax.* on tmpfs.

diff --git a/1073_linux-3.10.74.patch b/1073_linux-3.10.74.patch
new file mode 100644
index 0000000..7dc6831
--- /dev/null
+++ b/1073_linux-3.10.74.patch
@@ -0,0 +1,599 @@
+diff --git a/Makefile b/Makefile
+index b1129094ebfd..d2a3930159ea 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ VERSION = 3
+ PATCHLEVEL = 10
+-SUBLEVEL = 73
++SUBLEVEL = 74
+ EXTRAVERSION =
+ NAME = TOSSUG Baby Fish
+ 
+diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi 
b/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
+index 1382fec9e8c5..7fcb1ac0f232 100644
+--- a/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
++++ b/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
+@@ -50,6 +50,7 @@ ethernet@b0000 {
+       fsl,num_tx_queues = <0x8>;
+       fsl,magic-packet;
+       local-mac-address = [ 00 00 00 00 00 00 ];
++      ranges;
+ 
+       queue-group@b0000 {
+               #address-cells = <1>;
+diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi 
b/arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi
+index 221cd2ea5b31..9f25427c1527 100644
+--- a/arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi
++++ b/arch/powerpc/boot/dts/fsl/pq3-etsec2-1.dtsi
+@@ -50,6 +50,7 @@ ethernet@b1000 {
+       fsl,num_tx_queues = <0x8>;
+       fsl,magic-packet;
+       local-mac-address = [ 00 00 00 00 00 00 ];
++      ranges;
+ 
+       queue-group@b1000 {
+               #address-cells = <1>;
+diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi 
b/arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi
+index 61456c317609..cd7c318ab131 100644
+--- a/arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi
++++ b/arch/powerpc/boot/dts/fsl/pq3-etsec2-2.dtsi
+@@ -49,6 +49,7 @@ ethernet@b2000 {
+       fsl,num_tx_queues = <0x8>;
+       fsl,magic-packet;
+       local-mac-address = [ 00 00 00 00 00 00 ];
++      ranges;
+ 
+       queue-group@b2000 {
+               #address-cells = <1>;
+diff --git a/drivers/md/dm.c b/drivers/md/dm.c
+index a87f0c42cb8b..f69fed826a56 100644
+--- a/drivers/md/dm.c
++++ b/drivers/md/dm.c
+@@ -2333,10 +2333,16 @@ static void __dm_destroy(struct mapped_device *md, 
bool wait)
+       set_bit(DMF_FREEING, &md->flags);
+       spin_unlock(&_minor_lock);
+ 
++      /*
++       * Take suspend_lock so that presuspend and postsuspend methods
++       * do not race with internal suspend.
++       */
++      mutex_lock(&md->suspend_lock);
+       if (!dm_suspended_md(md)) {
+               dm_table_presuspend_targets(map);
+               dm_table_postsuspend_targets(map);
+       }
++      mutex_unlock(&md->suspend_lock);
+ 
+       /*
+        * Rare, but there may be I/O requests still going to complete,
+diff --git a/drivers/net/ethernet/amd/pcnet32.c 
b/drivers/net/ethernet/amd/pcnet32.c
+index ed2130727643..f6415fda103b 100644
+--- a/drivers/net/ethernet/amd/pcnet32.c
++++ b/drivers/net/ethernet/amd/pcnet32.c
+@@ -1516,7 +1516,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct 
pci_dev *pdev)
+ {
+       struct pcnet32_private *lp;
+       int i, media;
+-      int fdx, mii, fset, dxsuflo;
++      int fdx, mii, fset, dxsuflo, sram;
+       int chip_version;
+       char *chipname;
+       struct net_device *dev;
+@@ -1553,7 +1553,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct 
pci_dev *pdev)
+       }
+ 
+       /* initialize variables */
+-      fdx = mii = fset = dxsuflo = 0;
++      fdx = mii = fset = dxsuflo = sram = 0;
+       chip_version = (chip_version >> 12) & 0xffff;
+ 
+       switch (chip_version) {
+@@ -1586,6 +1586,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct 
pci_dev *pdev)
+               chipname = "PCnet/FAST III 79C973";     /* PCI */
+               fdx = 1;
+               mii = 1;
++              sram = 1;
+               break;
+       case 0x2626:
+               chipname = "PCnet/Home 79C978"; /* PCI */
+@@ -1609,6 +1610,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct 
pci_dev *pdev)
+               chipname = "PCnet/FAST III 79C975";     /* PCI */
+               fdx = 1;
+               mii = 1;
++              sram = 1;
+               break;
+       case 0x2628:
+               chipname = "PCnet/PRO 79C976";
+@@ -1637,6 +1639,31 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct 
pci_dev *pdev)
+               dxsuflo = 1;
+       }
+ 
++      /*
++       * The Am79C973/Am79C975 controllers come with 12K of SRAM
++       * which we can use for the Tx/Rx buffers but most importantly,
++       * the use of SRAM allow us to use the BCR18:NOUFLO bit to avoid
++       * Tx fifo underflows.
++       */
++      if (sram) {
++              /*
++               * The SRAM is being configured in two steps. First we
++               * set the SRAM size in the BCR25:SRAM_SIZE bits. According
++               * to the datasheet, each bit corresponds to a 512-byte
++               * page so we can have at most 24 pages. The SRAM_SIZE
++               * holds the value of the upper 8 bits of the 16-bit SRAM size.
++               * The low 8-bits start at 0x00 and end at 0xff. So the
++               * address range is from 0x0000 up to 0x17ff. Therefore,
++               * the SRAM_SIZE is set to 0x17. The next step is to set
++               * the BCR26:SRAM_BND midway through so the Tx and Rx
++               * buffers can share the SRAM equally.
++               */
++              a->write_bcr(ioaddr, 25, 0x17);
++              a->write_bcr(ioaddr, 26, 0xc);
++              /* And finally enable the NOUFLO bit */
++              a->write_bcr(ioaddr, 18, a->read_bcr(ioaddr, 18) | (1 << 11));
++      }
++
+       dev = alloc_etherdev(sizeof(*lp));
+       if (!dev) {
+               ret = -ENOMEM;
+diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c 
b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+index e6660d692008..ec0d32ad7592 100644
+--- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c
++++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c
+@@ -541,7 +541,7 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw 
*hw,
+ 
+       ret = iwl_mvm_mac_ctxt_add(mvm, vif);
+       if (ret)
+-              goto out_remove_mac;
++              goto out_release;
+ 
+       /*
+        * Update power state on the new interface. Admittedly, based on
+diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c 
b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+index cfd49eca67aa..c81716042073 100644
+--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
++++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+@@ -1465,7 +1465,7 @@ static int tcm_qla2xxx_check_initiator_node_acl(
+       /*
+        * Finally register the new FC Nexus with TCM
+        */
+-      __transport_register_session(se_nacl->se_tpg, se_nacl, se_sess, sess);
++      transport_register_session(se_nacl->se_tpg, se_nacl, se_sess, sess);
+ 
+       return 0;
+ }
+diff --git a/drivers/staging/vt6655/rf.c b/drivers/staging/vt6655/rf.c
+index 6948984a25ab..c2d602825422 100644
+--- a/drivers/staging/vt6655/rf.c
++++ b/drivers/staging/vt6655/rf.c
+@@ -966,6 +966,7 @@ bool RFbSetPower(
+               break;
+       case RATE_6M:
+       case RATE_9M:
++      case RATE_12M:
+       case RATE_18M:
+               byPwr = pDevice->abyOFDMPwrTbl[uCH];
+               if (pDevice->byRFType == RF_UW2452) {
+diff --git a/drivers/target/tcm_fc/tfc_io.c b/drivers/target/tcm_fc/tfc_io.c
+index e415af32115a..c67d3795db4a 100644
+--- a/drivers/target/tcm_fc/tfc_io.c
++++ b/drivers/target/tcm_fc/tfc_io.c
+@@ -346,7 +346,7 @@ void ft_invl_hw_context(struct ft_cmd *cmd)
+               ep = fc_seq_exch(seq);
+               if (ep) {
+                       lport = ep->lp;
+-                      if (lport && (ep->xid <= lport->lro_xid))
++                      if (lport && (ep->xid <= lport->lro_xid)) {
+                               /*
+                                * "ddp_done" trigger invalidation of HW
+                                * specific DDP context
+@@ -361,6 +361,7 @@ void ft_invl_hw_context(struct ft_cmd *cmd)
+                                * identified using ep->xid)
+                                */
+                               cmd->was_ddp_setup = 0;
++                      }
+               }
+       }
+ }
+diff --git a/fs/hfsplus/brec.c b/fs/hfsplus/brec.c
+index 6e560d56094b..754fdf8c6356 100644
+--- a/fs/hfsplus/brec.c
++++ b/fs/hfsplus/brec.c
+@@ -131,13 +131,16 @@ skip:
+       hfs_bnode_write(node, entry, data_off + key_len, entry_len);
+       hfs_bnode_dump(node);
+ 
+-      if (new_node) {
+-              /* update parent key if we inserted a key
+-               * at the start of the first node
+-               */
+-              if (!rec && new_node != node)
+-                      hfs_brec_update_parent(fd);
++      /*
++       * update parent key if we inserted a key
++       * at the start of the node and it is not the new node
++       */
++      if (!rec && new_node != node) {
++              hfs_bnode_read_key(node, fd->search_key, data_off + size);
++              hfs_brec_update_parent(fd);
++      }
+ 
++      if (new_node) {
+               hfs_bnode_put(fd->bnode);
+               if (!new_node->parent) {
+                       hfs_btree_inc_height(tree);
+@@ -168,9 +171,6 @@ skip:
+               goto again;
+       }
+ 
+-      if (!rec)
+-              hfs_brec_update_parent(fd);
+-
+       return 0;
+ }
+ 
+@@ -370,6 +370,8 @@ again:
+       if (IS_ERR(parent))
+               return PTR_ERR(parent);
+       __hfs_brec_find(parent, fd, hfs_find_rec_by_key);
++      if (fd->record < 0)
++              return -ENOENT;
+       hfs_bnode_dump(parent);
+       rec = fd->record;
+ 
+diff --git a/kernel/events/core.c b/kernel/events/core.c
+index 7bf4d519c20f..7daf52c340cd 100644
+--- a/kernel/events/core.c
++++ b/kernel/events/core.c
+@@ -4007,6 +4007,13 @@ static void perf_pending_event(struct irq_work *entry)
+ {
+       struct perf_event *event = container_of(entry,
+                       struct perf_event, pending);
++      int rctx;
++
++      rctx = perf_swevent_get_recursion_context();
++      /*
++       * If we 'fail' here, that's OK, it means recursion is already disabled
++       * and we won't recurse 'further'.
++       */
+ 
+       if (event->pending_disable) {
+               event->pending_disable = 0;
+@@ -4017,6 +4024,9 @@ static void perf_pending_event(struct irq_work *entry)
+               event->pending_wakeup = 0;
+               perf_event_wakeup(event);
+       }
++
++      if (rctx >= 0)
++              perf_swevent_put_recursion_context(rctx);
+ }
+ 
+ /*
+diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
+index 845563b81a0f..9f0ea9d8be73 100644
+--- a/net/mac80211/ieee80211_i.h
++++ b/net/mac80211/ieee80211_i.h
+@@ -60,13 +60,24 @@ struct ieee80211_local;
+ #define IEEE80211_UNSET_POWER_LEVEL   INT_MIN
+ 
+ /*
+- * Some APs experience problems when working with U-APSD. Decrease the
+- * probability of that happening by using legacy mode for all ACs but VO.
+- * The AP that caused us trouble was a Cisco 4410N. It ignores our
+- * setting, and always treats non-VO ACs as legacy.
++ * Some APs experience problems when working with U-APSD. Decreasing the
++ * probability of that happening by using legacy mode for all ACs but VO isn't
++ * enough.
++ *
++ * Cisco 4410N originally forced us to enable VO by default only because it
++ * treated non-VO ACs as legacy.
++ *
++ * However some APs (notably Netgear R7000) silently reclassify packets to
++ * different ACs. Since u-APSD ACs require trigger frames for frame retrieval
++ * clients would never see some frames (e.g. ARP responses) or would fetch 
them
++ * accidentally after a long time.
++ *
++ * It makes little sense to enable u-APSD queues by default because it needs
++ * userspace applications to be aware of it to actually take advantage of the
++ * possible additional powersavings. Implicitly depending on driver 
autotrigger
++ * frame support doesn't make much sense.
+  */
+-#define IEEE80211_DEFAULT_UAPSD_QUEUES \
+-      IEEE80211_WMM_IE_STA_QOSINFO_AC_VO
++#define IEEE80211_DEFAULT_UAPSD_QUEUES 0
+ 
+ #define IEEE80211_DEFAULT_MAX_SP_LEN          \
+       IEEE80211_WMM_IE_STA_QOSINFO_SP_ALL
+diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
+index 9299a38c372e..cd60be8d9aba 100644
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -2023,6 +2023,9 @@ ieee80211_rx_h_mesh_fwding(struct ieee80211_rx_data *rx)
+       hdr = (struct ieee80211_hdr *) skb->data;
+       mesh_hdr = (struct ieee80211s_hdr *) (skb->data + hdrlen);
+ 
++      if (ieee80211_drop_unencrypted(rx, hdr->frame_control))
++              return RX_DROP_MONITOR;
++
+       /* frame is in RMC, don't forward */
+       if (ieee80211_is_data(hdr->frame_control) &&
+           is_multicast_ether_addr(hdr->addr1) &&
+diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
+index dc200bf831ae..90a0e552cb32 100644
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
+@@ -4032,6 +4032,16 @@ static int nl80211_new_station(struct sk_buff *skb, 
struct genl_info *info)
+       if (parse_station_flags(info, dev->ieee80211_ptr->iftype, &params))
+               return -EINVAL;
+ 
++      /* HT/VHT requires QoS, but if we don't have that just ignore HT/VHT
++       * as userspace might just pass through the capabilities from the IEs
++       * directly, rather than enforcing this restriction and returning an
++       * error in this case.
++       */
++      if (!(params.sta_flags_set & BIT(NL80211_STA_FLAG_WME))) {
++              params.ht_capa = NULL;
++              params.vht_capa = NULL;
++      }
++
+       /* When you run into this, adjust the code below for the new flag */
+       BUILD_BUG_ON(NL80211_STA_FLAG_MAX != 7);
+ 
+diff --git a/sound/soc/codecs/adav80x.c b/sound/soc/codecs/adav80x.c
+index 3c839cc4e00e..0ef2b2a33ee5 100644
+--- a/sound/soc/codecs/adav80x.c
++++ b/sound/soc/codecs/adav80x.c
+@@ -307,7 +307,7 @@ static int adav80x_put_deemph(struct snd_kcontrol 
*kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec);
+-      unsigned int deemph = ucontrol->value.enumerated.item[0];
++      unsigned int deemph = ucontrol->value.integer.value[0];
+ 
+       if (deemph > 1)
+               return -EINVAL;
+@@ -323,7 +323,7 @@ static int adav80x_get_deemph(struct snd_kcontrol 
*kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = adav80x->deemph;
++      ucontrol->value.integer.value[0] = adav80x->deemph;
+       return 0;
+ };
+ 
+diff --git a/sound/soc/codecs/ak4641.c b/sound/soc/codecs/ak4641.c
+index 5f9af1fb76e8..68379c14720b 100644
+--- a/sound/soc/codecs/ak4641.c
++++ b/sound/soc/codecs/ak4641.c
+@@ -74,7 +74,7 @@ static int ak4641_put_deemph(struct snd_kcontrol *kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct ak4641_priv *ak4641 = snd_soc_codec_get_drvdata(codec);
+-      int deemph = ucontrol->value.enumerated.item[0];
++      int deemph = ucontrol->value.integer.value[0];
+ 
+       if (deemph > 1)
+               return -EINVAL;
+@@ -90,7 +90,7 @@ static int ak4641_get_deemph(struct snd_kcontrol *kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct ak4641_priv *ak4641 = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = ak4641->deemph;
++      ucontrol->value.integer.value[0] = ak4641->deemph;
+       return 0;
+ };
+ 
+diff --git a/sound/soc/codecs/cs4271.c b/sound/soc/codecs/cs4271.c
+index 03036b326732..ffa4a2d8a4bc 100644
+--- a/sound/soc/codecs/cs4271.c
++++ b/sound/soc/codecs/cs4271.c
+@@ -267,7 +267,7 @@ static int cs4271_get_deemph(struct snd_kcontrol *kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct cs4271_private *cs4271 = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = cs4271->deemph;
++      ucontrol->value.integer.value[0] = cs4271->deemph;
+       return 0;
+ }
+ 
+@@ -277,7 +277,7 @@ static int cs4271_put_deemph(struct snd_kcontrol *kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct cs4271_private *cs4271 = snd_soc_codec_get_drvdata(codec);
+ 
+-      cs4271->deemph = ucontrol->value.enumerated.item[0];
++      cs4271->deemph = ucontrol->value.integer.value[0];
+       return cs4271_set_deemph(codec);
+ }
+ 
+diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
+index 3b5f565a23a5..665e0ddc2ef0 100644
+--- a/sound/soc/codecs/sgtl5000.c
++++ b/sound/soc/codecs/sgtl5000.c
+@@ -1111,13 +1111,7 @@ static int sgtl5000_set_power_regs(struct snd_soc_codec 
*codec)
+               /* Enable VDDC charge pump */
+               ana_pwr |= SGTL5000_VDDC_CHRGPMP_POWERUP;
+       } else if (vddio >= 3100 && vdda >= 3100) {
+-              /*
+-               * if vddio and vddd > 3.1v,
+-               * charge pump should be clean before set ana_pwr
+-               */
+-              snd_soc_update_bits(codec, SGTL5000_CHIP_ANA_POWER,
+-                              SGTL5000_VDDC_CHRGPMP_POWERUP, 0);
+-
++              ana_pwr &= ~SGTL5000_VDDC_CHRGPMP_POWERUP;
+               /* VDDC use VDDIO rail */
+               lreg_ctrl |= SGTL5000_VDDC_ASSN_OVRD;
+               lreg_ctrl |= SGTL5000_VDDC_MAN_ASSN_VDDIO <<
+diff --git a/sound/soc/codecs/tas5086.c b/sound/soc/codecs/tas5086.c
+index d447c4aa1d5e..675a8fd0deed 100644
+--- a/sound/soc/codecs/tas5086.c
++++ b/sound/soc/codecs/tas5086.c
+@@ -173,7 +173,7 @@ static int tas5086_get_deemph(struct snd_kcontrol 
*kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = priv->deemph;
++      ucontrol->value.integer.value[0] = priv->deemph;
+ 
+       return 0;
+ }
+@@ -184,7 +184,7 @@ static int tas5086_put_deemph(struct snd_kcontrol 
*kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct tas5086_private *priv = snd_soc_codec_get_drvdata(codec);
+ 
+-      priv->deemph = ucontrol->value.enumerated.item[0];
++      priv->deemph = ucontrol->value.integer.value[0];
+ 
+       return tas5086_set_deemph(codec);
+ }
+diff --git a/sound/soc/codecs/wm2000.c b/sound/soc/codecs/wm2000.c
+index 7fefd766b582..124fb538dfa9 100644
+--- a/sound/soc/codecs/wm2000.c
++++ b/sound/soc/codecs/wm2000.c
+@@ -605,7 +605,7 @@ static int wm2000_anc_mode_get(struct snd_kcontrol 
*kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev);
+ 
+-      ucontrol->value.enumerated.item[0] = wm2000->anc_active;
++      ucontrol->value.integer.value[0] = wm2000->anc_active;
+ 
+       return 0;
+ }
+@@ -615,7 +615,7 @@ static int wm2000_anc_mode_put(struct snd_kcontrol 
*kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev);
+-      int anc_active = ucontrol->value.enumerated.item[0];
++      int anc_active = ucontrol->value.integer.value[0];
+       int ret;
+ 
+       if (anc_active > 1)
+@@ -638,7 +638,7 @@ static int wm2000_speaker_get(struct snd_kcontrol 
*kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev);
+ 
+-      ucontrol->value.enumerated.item[0] = wm2000->spk_ena;
++      ucontrol->value.integer.value[0] = wm2000->spk_ena;
+ 
+       return 0;
+ }
+@@ -648,7 +648,7 @@ static int wm2000_speaker_put(struct snd_kcontrol 
*kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev);
+-      int val = ucontrol->value.enumerated.item[0];
++      int val = ucontrol->value.integer.value[0];
+       int ret;
+ 
+       if (val > 1)
+diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c
+index 10d492b6a5b4..944b09b1f481 100644
+--- a/sound/soc/codecs/wm8731.c
++++ b/sound/soc/codecs/wm8731.c
+@@ -121,7 +121,7 @@ static int wm8731_get_deemph(struct snd_kcontrol *kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = wm8731->deemph;
++      ucontrol->value.integer.value[0] = wm8731->deemph;
+ 
+       return 0;
+ }
+@@ -131,7 +131,7 @@ static int wm8731_put_deemph(struct snd_kcontrol *kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec);
+-      int deemph = ucontrol->value.enumerated.item[0];
++      int deemph = ucontrol->value.integer.value[0];
+       int ret = 0;
+ 
+       if (deemph > 1)
+diff --git a/sound/soc/codecs/wm8903.c b/sound/soc/codecs/wm8903.c
+index 9d88437cdcd1..79f4a217b5d5 100644
+--- a/sound/soc/codecs/wm8903.c
++++ b/sound/soc/codecs/wm8903.c
+@@ -446,7 +446,7 @@ static int wm8903_get_deemph(struct snd_kcontrol *kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = wm8903->deemph;
++      ucontrol->value.integer.value[0] = wm8903->deemph;
+ 
+       return 0;
+ }
+@@ -456,7 +456,7 @@ static int wm8903_put_deemph(struct snd_kcontrol *kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
+-      int deemph = ucontrol->value.enumerated.item[0];
++      int deemph = ucontrol->value.integer.value[0];
+       int ret = 0;
+ 
+       if (deemph > 1)
+diff --git a/sound/soc/codecs/wm8904.c b/sound/soc/codecs/wm8904.c
+index af62f843a691..c68d541cd350 100644
+--- a/sound/soc/codecs/wm8904.c
++++ b/sound/soc/codecs/wm8904.c
+@@ -523,7 +523,7 @@ static int wm8904_get_deemph(struct snd_kcontrol *kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = wm8904->deemph;
++      ucontrol->value.integer.value[0] = wm8904->deemph;
+       return 0;
+ }
+ 
+@@ -532,7 +532,7 @@ static int wm8904_put_deemph(struct snd_kcontrol *kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec);
+-      int deemph = ucontrol->value.enumerated.item[0];
++      int deemph = ucontrol->value.integer.value[0];
+ 
+       if (deemph > 1)
+               return -EINVAL;
+diff --git a/sound/soc/codecs/wm8955.c b/sound/soc/codecs/wm8955.c
+index 82c8ba975720..1c1fc6119758 100644
+--- a/sound/soc/codecs/wm8955.c
++++ b/sound/soc/codecs/wm8955.c
+@@ -393,7 +393,7 @@ static int wm8955_get_deemph(struct snd_kcontrol *kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = wm8955->deemph;
++      ucontrol->value.integer.value[0] = wm8955->deemph;
+       return 0;
+ }
+ 
+@@ -402,7 +402,7 @@ static int wm8955_put_deemph(struct snd_kcontrol *kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8955_priv *wm8955 = snd_soc_codec_get_drvdata(codec);
+-      int deemph = ucontrol->value.enumerated.item[0];
++      int deemph = ucontrol->value.integer.value[0];
+ 
+       if (deemph > 1)
+               return -EINVAL;
+diff --git a/sound/soc/codecs/wm8960.c b/sound/soc/codecs/wm8960.c
+index 412d90f7b256..4a8decf85a4a 100644
+--- a/sound/soc/codecs/wm8960.c
++++ b/sound/soc/codecs/wm8960.c
+@@ -181,7 +181,7 @@ static int wm8960_get_deemph(struct snd_kcontrol *kcontrol,
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
+ 
+-      ucontrol->value.enumerated.item[0] = wm8960->deemph;
++      ucontrol->value.integer.value[0] = wm8960->deemph;
+       return 0;
+ }
+ 
+@@ -190,7 +190,7 @@ static int wm8960_put_deemph(struct snd_kcontrol *kcontrol,
+ {
+       struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+       struct wm8960_priv *wm8960 = snd_soc_codec_get_drvdata(codec);
+-      int deemph = ucontrol->value.enumerated.item[0];
++      int deemph = ucontrol->value.integer.value[0];
+ 
+       if (deemph > 1)
+               return -EINVAL;

Reply via email to