Merge tag 'asoc-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound...
authorTakashi Iwai <tiwai@suse.de>
Tue, 10 Sep 2019 11:03:08 +0000 (13:03 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 10 Sep 2019 11:03:08 +0000 (13:03 +0200)
ASoC: Updates for v5.4

Quite a big update this time around, particularly in the core
where we've had a lot of cleanups from Morimoto-san - there's
not much functional change but quite a bit of modernization
going on.  We've also seen a lot of driver work, a lot of it
cleanups but also some particular drivers.

 - Lots and lots of cleanups from Morimoto-san and Yue Haibing.
 - Lots of cleanups and enhancements to the Freescale, sunxi dnd
   Intel rivers.
 - Initial Sound Open Firmware suppot for i.MX8.
 - Removal of w90x900 and nuc900 drivers as the platforms are
   being removed.
 - New support for Cirrus Logic CS47L15 and CS47L92, Freescale
   i.MX 7ULP and 8MQ, Meson G12A and NXP UDA1334

1  2 
MAINTAINERS
sound/pci/hda/hda_auto_parser.c
sound/pci/hda/patch_realtek.c

diff --combined MAINTAINERS
@@@ -183,7 -183,7 +183,7 @@@ M: Realtek linux nic maintainers <nic_s
  M:    Heiner Kallweit <hkallweit1@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
- F:    drivers/net/ethernet/realtek/r8169.c
+ F:    drivers/net/ethernet/realtek/r8169*
  
  8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
@@@ -683,7 -683,7 +683,7 @@@ S: Maintaine
  F:    drivers/crypto/sunxi-ss/
  
  ALLWINNER VPU DRIVER
- M:    Maxime Ripard <maxime.ripard@bootlin.com>
+ M:    Maxime Ripard <mripard@kernel.org>
  M:    Paul Kocialkowski <paul.kocialkowski@bootlin.com>
  L:    linux-media@vger.kernel.org
  S:    Maintained
@@@ -899,7 -899,7 +899,7 @@@ L: linux-iio@vger.kernel.or
  W:    http://ez.analog.com/community/linux-device-drivers
  S:    Supported
  F:    drivers/iio/adc/ad7124.c
- F:    Documentation/devicetree/bindings/iio/adc/adi,ad7124.txt
+ F:    Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
  
  ANALOG DEVICES INC AD7606 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
@@@ -1194,7 -1194,7 +1194,7 @@@ F:      include/uapi/linux/if_arcnet.
  
  ARM ARCHITECTED TIMER DRIVER
  M:    Mark Rutland <mark.rutland@arm.com>
- M:    Marc Zyngier <marc.zyngier@arm.com>
+ M:    Marc Zyngier <maz@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/include/asm/arch_timer.h
@@@ -1408,7 -1408,7 +1408,7 @@@ S:      Maintaine
  F:    drivers/clk/sunxi/
  
  ARM/Allwinner sunXi SoC support
- M:    Maxime Ripard <maxime.ripard@bootlin.com>
+ M:    Maxime Ripard <mripard@kernel.org>
  M:    Chen-Yu Tsai <wens@csie.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
@@@ -2155,10 -2155,12 +2155,12 @@@ F:   Documentation/devicetree/bindings/ar
  
  ARM/RENESAS ARM64 ARCHITECTURE
  M:    Simon Horman <horms@verge.net.au>
+ M:    Geert Uytterhoeven <geert+renesas@glider.be>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-renesas-soc@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  S:    Supported
  F:    arch/arm64/boot/dts/renesas/
  F:    Documentation/devicetree/bindings/arm/renesas.yaml
@@@ -2269,10 -2271,12 +2271,12 @@@ F:   drivers/media/platform/s5p-mfc
  
  ARM/SHMOBILE ARM ARCHITECTURE
  M:    Simon Horman <horms@verge.net.au>
+ M:    Geert Uytterhoeven <geert+renesas@glider.be>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-renesas-soc@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  S:    Supported
  F:    arch/arm/boot/dts/emev2*
  F:    arch/arm/boot/dts/gr-peach*
@@@ -3573,7 -3577,7 +3577,7 @@@ F:      Documentation/filesystems/caching/ca
  F:    fs/cachefiles/
  
  CADENCE MIPI-CSI2 BRIDGES
- M:    Maxime Ripard <maxime.ripard@bootlin.com>
+ M:    Maxime Ripard <mripard@kernel.org>
  L:    linux-media@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/media/cdns,*.txt
@@@ -4190,7 -4194,7 +4194,7 @@@ M:      Jens Axboe <axboe@kernel.dk
  L:    cgroups@vger.kernel.org
  L:    linux-block@vger.kernel.org
  T:    git git://git.kernel.dk/linux-block
- F:    Documentation/cgroup-v1/blkio-controller.rst
+ F:    Documentation/admin-guide/cgroup-v1/blkio-controller.rst
  F:    block/blk-cgroup.c
  F:    include/linux/blk-cgroup.h
  F:    block/blk-throttle.c
@@@ -4469,7 -4473,7 +4473,7 @@@ F:      arch/powerpc/platforms/powernv/pci-c
  F:    drivers/misc/cxl/
  F:    include/misc/cxl*
  F:    include/uapi/misc/cxl.h
- F:    Documentation/powerpc/cxl.txt
+ F:    Documentation/powerpc/cxl.rst
  F:    Documentation/ABI/testing/sysfs-class-cxl
  
  CXLFLASH (IBM Coherent Accelerator Processor Interface CAPI Flash) SCSI DRIVER
@@@ -4480,7 -4484,7 +4484,7 @@@ L:      linux-scsi@vger.kernel.or
  S:    Supported
  F:    drivers/scsi/cxlflash/
  F:    include/uapi/scsi/cxlflash_ioctl.h
- F:    Documentation/powerpc/cxlflash.txt
+ F:    Documentation/powerpc/cxlflash.rst
  
  CYBERPRO FB DRIVER
  M:    Russell King <linux@armlinux.org.uk>
@@@ -5291,7 -5295,7 +5295,7 @@@ F:      include/linux/vga
  
  DRM DRIVERS AND MISC GPU PATCHES
  M:    Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
- M:    Maxime Ripard <maxime.ripard@bootlin.com>
+ M:    Maxime Ripard <mripard@kernel.org>
  M:    Sean Paul <sean@poorly.run>
  W:    https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
  S:    Maintained
@@@ -5304,7 -5308,7 +5308,7 @@@ F:      include/uapi/drm/drm
  F:    include/linux/vga*
  
  DRM DRIVERS FOR ALLWINNER A10
- M:    Maxime Ripard  <maxime.ripard@bootlin.com>
+ M:    Maxime Ripard <mripard@kernel.org>
  L:    dri-devel@lists.freedesktop.org
  S:    Supported
  F:    drivers/gpu/drm/sun4i/
@@@ -6061,7 -6065,7 +6065,7 @@@ M:      Florian Fainelli <f.fainelli@gmail.c
  M:    Heiner Kallweit <hkallweit1@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
- F:    Documentation/ABI/testing/sysfs-bus-mdio
+ F:    Documentation/ABI/testing/sysfs-class-net-phydev
  F:    Documentation/devicetree/bindings/net/ethernet-phy.yaml
  F:    Documentation/devicetree/bindings/net/mdio*
  F:    Documentation/networking/phy.rst
@@@ -6264,14 -6268,12 +6268,14 @@@ S:   Maintaine
  F:    drivers/hwmon/f75375s.c
  F:    include/linux/f75375s.h
  
 -FIREWIRE AUDIO DRIVERS
 +FIREWIRE AUDIO DRIVERS and IEC 61883-1/6 PACKET STREAMING ENGINE
  M:    Clemens Ladisch <clemens@ladisch.de>
 +M:    Takashi Sakamoto <o-takashi@sakamocchi.jp>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
  S:    Maintained
  F:    sound/firewire/
 +F:    include/uapi/sound/firewire.h
  
  FIREWIRE MEDIA DRIVERS (firedtv)
  M:    Stefan Richter <stefanr@s5r6.in-berlin.de>
@@@ -6324,7 -6326,8 +6328,8 @@@ F:      Documentation/devicetree/bindings/co
  F:    drivers/counter/ftm-quaddec.c
  
  FLOPPY DRIVER
- S:    Orphan
+ M:    Denis Efremov <efremov@linux.com>
+ S:    Odd Fixes
  L:    linux-block@vger.kernel.org
  F:    drivers/block/floppy.c
  
@@@ -6341,7 -6344,7 +6346,7 @@@ FPGA MANAGER FRAMEWOR
  M:    Moritz Fischer <mdf@kernel.org>
  L:    linux-fpga@vger.kernel.org
  S:    Maintained
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/atull/linux-fpga.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mdf/linux-fpga.git
  Q:    http://patchwork.kernel.org/project/linux-fpga/list/
  F:    Documentation/fpga/
  F:    Documentation/driver-api/fpga/
@@@ -6374,7 -6377,7 +6379,7 @@@ FRAMEBUFFER LAYE
  M:    Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
  L:    dri-devel@lists.freedesktop.org
  L:    linux-fbdev@vger.kernel.org
- T:    git git://github.com/bzolnier/linux.git
+ T:    git git://anongit.freedesktop.org/drm/drm-misc
  Q:    http://patchwork.kernel.org/project/linux-fbdev/list/
  S:    Maintained
  F:    Documentation/fb/
@@@ -6438,6 -6441,14 +6443,14 @@@ S:    Maintaine
  F:    drivers/perf/fsl_imx8_ddr_perf.c
  F:    Documentation/devicetree/bindings/perf/fsl-imx-ddr.txt
  
+ FREESCALE IMX I2C DRIVER
+ M:    Oleksij Rempel <o.rempel@pengutronix.de>
+ R:    Pengutronix Kernel Team <kernel@pengutronix.de>
+ L:    linux-i2c@vger.kernel.org
+ S:    Maintained
+ F:    drivers/i2c/busses/i2c-imx.c
+ F:    Documentation/devicetree/bindings/i2c/i2c-imx.txt
  FREESCALE IMX LPI2C DRIVER
  M:    Dong Aisheng <aisheng.dong@nxp.com>
  L:    linux-i2c@vger.kernel.org
@@@ -6824,13 -6835,6 +6837,6 @@@ F:     Documentation/filesystems/gfs2*.tx
  F:    fs/gfs2/
  F:    include/uapi/linux/gfs2_ondisk.h
  
- GIGASET ISDN DRIVERS
- M:    Paul Bolle <pebolle@tiscali.nl>
- L:    gigaset307x-common@lists.sourceforge.net
- W:    http://gigaset307x.sourceforge.net/
- S:    Odd Fixes
- F:    drivers/staging/isdn/gigaset/
  GNSS SUBSYSTEM
  M:    Johan Hovold <johan@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/johan/gnss.git
@@@ -6858,7 -6862,7 +6864,7 @@@ R:      Sagi Shahar <sagis@google.com
  R:    Jon Olson <jonolson@google.com>
  L:    netdev@vger.kernel.org
  S:    Supported
- F:    Documentation/networking/device_drivers/google/gve.txt
+ F:    Documentation/networking/device_drivers/google/gve.rst
  F:    drivers/net/ethernet/google
  
  GPD POCKET FAN DRIVER
@@@ -7456,7 -7460,7 +7462,7 @@@ F:      drivers/net/hyperv
  F:    drivers/scsi/storvsc_drv.c
  F:    drivers/uio/uio_hv_generic.c
  F:    drivers/video/fbdev/hyperv_fb.c
- F:    drivers/iommu/hyperv_iommu.c
+ F:    drivers/iommu/hyperv-iommu.c
  F:    net/vmw_vsock/hyperv_transport.c
  F:    include/clocksource/hyperv_timer.h
  F:    include/linux/hyperv.h
@@@ -7509,7 -7513,7 +7515,7 @@@ I2C MV64XXX MARVELL AND ALLWINNER DRIVE
  M:    Gregory CLEMENT <gregory.clement@bootlin.com>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
- F:    Documentation/devicetree/bindings/i2c/i2c-mv64xxx.txt
+ F:    Documentation/devicetree/bindings/i2c/marvell,mv64xxx-i2c.yaml
  F:    drivers/i2c/busses/i2c-mv64xxx.c
  
  I2C OVER PARALLEL PORT
@@@ -8068,6 -8072,13 +8074,13 @@@ T:    git git://git.code.sf.net/p/intel-sa
  S:    Supported
  F:    drivers/scsi/isci/
  
+ INTEL CPU family model numbers
+ M:    Tony Luck <tony.luck@intel.com>
+ M:    x86@kernel.org
+ L:    linux-kernel@vger.kernel.org
+ S:    Supported
+ F:    arch/x86/include/asm/intel-family.h
  INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
  M:    Jani Nikula <jani.nikula@linux.intel.com>
  M:    Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
@@@ -8419,7 -8430,6 +8432,6 @@@ L:      linux-xfs@vger.kernel.or
  L:    linux-fsdevel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git
  S:    Supported
- F:    fs/iomap.c
  F:    fs/iomap/
  F:    include/linux/iomap.h
  
@@@ -8444,11 -8454,6 +8456,6 @@@ S:     Maintaine
  F:    fs/io_uring.c
  F:    include/uapi/linux/io_uring.h
  
- IP MASQUERADING
- M:    Juanjo Ciarlante <jjciarla@raiz.uncu.edu.ar>
- S:    Maintained
- F:    net/ipv4/netfilter/ipt_MASQUERADE.c
  IPMI SUBSYSTEM
  M:    Corey Minyard <minyard@acm.org>
  L:    openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
@@@ -8493,7 -8498,7 +8500,7 @@@ S:      Obsolet
  F:    include/uapi/linux/ipx.h
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
- M:    Marc Zyngier <marc.zyngier@arm.com>
+ M:    Marc Zyngier <maz@kernel.org>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
  F:    Documentation/IRQ-domain.txt
@@@ -8511,7 -8516,7 +8518,7 @@@ F:      kernel/irq
  IRQCHIP DRIVERS
  M:    Thomas Gleixner <tglx@linutronix.de>
  M:    Jason Cooper <jason@lakedaemon.net>
- M:    Marc Zyngier <marc.zyngier@arm.com>
+ M:    Marc Zyngier <maz@kernel.org>
  L:    linux-kernel@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
@@@ -8811,7 -8816,7 +8818,7 @@@ L:      kvm@vger.kernel.or
  W:    http://www.linux-kvm.org
  T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
  S:    Supported
- F:    Documentation/virtual/kvm/
+ F:    Documentation/virt/kvm/
  F:    include/trace/events/kvm.h
  F:    include/uapi/asm-generic/kvm*
  F:    include/uapi/linux/kvm*
@@@ -8822,19 -8827,11 +8829,11 @@@ F:   virt/kvm/
  F:    tools/kvm/
  F:    tools/testing/selftests/kvm/
  
- KERNEL VIRTUAL MACHINE FOR AMD-V (KVM/amd)
- M:    Joerg Roedel <joro@8bytes.org>
- L:    kvm@vger.kernel.org
- W:    http://www.linux-kvm.org/
- S:    Maintained
- F:    arch/x86/include/asm/svm.h
- F:    arch/x86/kvm/svm.c
  KERNEL VIRTUAL MACHINE FOR ARM/ARM64 (KVM/arm, KVM/arm64)
- M:    Marc Zyngier <marc.zyngier@arm.com>
+ M:    Marc Zyngier <maz@kernel.org>
  R:    James Morse <james.morse@arm.com>
- R:    Julien Thierry <julien.thierry@arm.com>
- R:    Suzuki K Pouloze <suzuki.poulose@arm.com>
+ R:    Julien Thierry <julien.thierry.kdev@gmail.com>
+ R:    Suzuki K Poulose <suzuki.poulose@arm.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    kvmarm@lists.cs.columbia.edu
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git
@@@ -8872,7 -8869,7 +8871,7 @@@ M:      Christian Borntraeger <borntraeger@d
  M:    Janosch Frank <frankja@linux.ibm.com>
  R:    David Hildenbrand <david@redhat.com>
  R:    Cornelia Huck <cohuck@redhat.com>
- L:    linux-s390@vger.kernel.org
+ L:    kvm@vger.kernel.org
  W:    http://www.ibm.com/developerworks/linux/linux390/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
  S:    Supported
@@@ -8887,6 -8884,11 +8886,11 @@@ F:    tools/testing/selftests/kvm/*/s390x
  KERNEL VIRTUAL MACHINE FOR X86 (KVM/x86)
  M:    Paolo Bonzini <pbonzini@redhat.com>
  M:    Radim Krčmář <rkrcmar@redhat.com>
+ R:    Sean Christopherson <sean.j.christopherson@intel.com>
+ R:    Vitaly Kuznetsov <vkuznets@redhat.com>
+ R:    Wanpeng Li <wanpengli@tencent.com>
+ R:    Jim Mattson <jmattson@google.com>
+ R:    Joerg Roedel <joro@8bytes.org>
  L:    kvm@vger.kernel.org
  W:    http://www.linux-kvm.org
  T:    git git://git.kernel.org/pub/scm/virt/kvm/kvm.git
@@@ -8894,8 -8896,12 +8898,12 @@@ S:    Supporte
  F:    arch/x86/kvm/
  F:    arch/x86/kvm/*/
  F:    arch/x86/include/uapi/asm/kvm*
+ F:    arch/x86/include/uapi/asm/vmx.h
+ F:    arch/x86/include/uapi/asm/svm.h
  F:    arch/x86/include/asm/kvm*
  F:    arch/x86/include/asm/pvclock-abi.h
+ F:    arch/x86/include/asm/svm.h
+ F:    arch/x86/include/asm/vmx.h
  F:    arch/x86/kernel/kvm.c
  F:    arch/x86/kernel/kvmclock.c
  
@@@ -9223,6 -9229,18 +9231,18 @@@ F:    include/linux/nd.
  F:    include/linux/libnvdimm.h
  F:    include/uapi/linux/ndctl.h
  
+ LICENSES and SPDX stuff
+ M:    Thomas Gleixner <tglx@linutronix.de>
+ M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+ L:    linux-spdx@vger.kernel.org
+ S:    Maintained
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/spdx.git
+ F:    COPYING
+ F:    Documentation/process/license-rules.rst
+ F:    LICENSES/
+ F:    scripts/spdxcheck-test.sh
+ F:    scripts/spdxcheck.py
  LIGHTNVM PLATFORM SUPPORT
  M:    Matias Bjorling <mb@lightnvm.io>
  W:    http://github/OpenChannelSSD
@@@ -11075,7 -11093,7 +11095,7 @@@ NET_FAILOVER MODUL
  M:    Sridhar Samudrala <sridhar.samudrala@intel.com>
  L:    netdev@vger.kernel.org
  S:    Supported
- F:    driver/net/net_failover.c
+ F:    drivers/net/net_failover.c
  F:    include/net/net_failover.h
  F:    Documentation/networking/net_failover.rst
  
@@@ -11147,6 -11165,7 +11167,7 @@@ L:   netdev@vger.kernel.or
  S:    Maintained
  W:    https://fedorahosted.org/dropwatch/
  F:    net/core/drop_monitor.c
+ F:    include/uapi/linux/net_dropmon.h
  
  NETWORKING DRIVERS
  M:    "David S. Miller" <davem@davemloft.net>
@@@ -11285,6 -11304,7 +11306,7 @@@ M:   Aviad Yehezkel <aviadye@mellanox.com
  M:    Dave Watson <davejwatson@fb.com>
  M:    John Fastabend <john.fastabend@gmail.com>
  M:    Daniel Borkmann <daniel@iogearbox.net>
+ M:    Jakub Kicinski <jakub.kicinski@netronome.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    net/tls/*
@@@ -12140,7 -12160,7 +12162,7 @@@ M:   Thomas Hellstrom <thellstrom@vmware.
  M:    "VMware, Inc." <pv-drivers@vmware.com>
  L:    virtualization@lists.linux-foundation.org
  S:    Supported
- F:    Documentation/virtual/paravirt_ops.txt
+ F:    Documentation/virt/paravirt_ops.rst
  F:    arch/*/kernel/paravirt*
  F:    arch/*/include/asm/paravirt*.h
  F:    include/linux/hypervisor.h
@@@ -12397,7 -12417,7 +12419,7 @@@ F:   Documentation/PCI/pci-error-recovery
  F:    drivers/pci/pcie/aer.c
  F:    drivers/pci/pcie/dpc.c
  F:    drivers/pci/pcie/err.c
- F:    Documentation/powerpc/eeh-pci-error-recovery.txt
+ F:    Documentation/powerpc/eeh-pci-error-recovery.rst
  F:    arch/powerpc/kernel/eeh*.c
  F:    arch/powerpc/platforms/*/eeh*.c
  F:    arch/powerpc/include/*/eeh*.h
@@@ -13728,6 -13748,7 +13750,7 @@@ F:   drivers/mtd/nand/raw/r852.
  F:    drivers/mtd/nand/raw/r852.h
  
  RISC-V ARCHITECTURE
+ M:    Paul Walmsley <paul.walmsley@sifive.com>
  M:    Palmer Dabbelt <palmer@sifive.com>
  M:    Albert Ou <aou@eecs.berkeley.edu>
  L:    linux-riscv@lists.infradead.org
@@@ -13950,7 -13971,6 +13973,6 @@@ F:   drivers/pci/hotplug/s390_pci_hpc.
  
  S390 VFIO-CCW DRIVER
  M:    Cornelia Huck <cohuck@redhat.com>
- M:    Farhan Ali <alifm@linux.ibm.com>
  M:    Eric Farman <farman@linux.ibm.com>
  R:    Halil Pasic <pasic@linux.ibm.com>
  L:    linux-s390@vger.kernel.org
@@@ -14019,6 -14039,12 +14041,12 @@@ F: drivers/media/common/saa7146
  F:    drivers/media/pci/saa7146/
  F:    include/media/drv-intf/saa7146*
  
+ SAFESETID SECURITY MODULE
+ M:     Micah Morton <mortonm@chromium.org>
+ S:     Supported
+ F:     security/safesetid/
+ F:     Documentation/admin-guide/LSM/SafeSetID.rst
  SAMSUNG AUDIO (ASoC) DRIVERS
  M:    Krzysztof Kozlowski <krzk@kernel.org>
  M:    Sangbeom Kim <sbkim73@samsung.com>
@@@ -14459,6 -14485,7 +14487,7 @@@ F:   drivers/net/phy/phylink.
  F:    drivers/net/phy/sfp*
  F:    include/linux/phylink.h
  F:    include/linux/sfp.h
+ K:    phylink
  
  SGI GRU DRIVER
  M:    Dimitri Sivanich <sivanich@sgi.com>
@@@ -14864,9 -14891,9 +14893,9 @@@ F:   include/linux/arm_sdei.
  F:    include/uapi/linux/arm_sdei.h
  
  SOFTWARE RAID (Multiple Disks) SUPPORT
- M:    Shaohua Li <shli@kernel.org>
+ M:    Song Liu <song@kernel.org>
  L:    linux-raid@vger.kernel.org
- T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shli/md.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/song/md.git
  S:    Supported
  F:    drivers/md/Makefile
  F:    drivers/md/Kconfig
@@@ -16857,7 -16884,7 +16886,7 @@@ W:   http://user-mode-linux.sourceforge.n
  Q:    https://patchwork.ozlabs.org/project/linux-um/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml.git
  S:    Maintained
- F:    Documentation/virtual/uml/
+ F:    Documentation/virt/uml/
  F:    arch/um/
  F:    arch/x86/um/
  F:    fs/hostfs/
@@@ -17126,7 -17153,7 +17155,7 @@@ F:   drivers/virtio/virtio_input.
  F:    include/uapi/linux/virtio_input.h
  
  VIRTIO IOMMU DRIVER
- M:    Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
+ M:    Jean-Philippe Brucker <jean-philippe@linaro.org>
  L:    virtualization@lists.linux-foundation.org
  S:    Maintained
  F:    drivers/iommu/virtio-iommu.c
@@@ -17175,7 -17202,6 +17204,6 @@@ F:   drivers/vme
  F:    include/linux/vme*
  
  VMWARE BALLOON DRIVER
- M:    Julien Freche <jfreche@vmware.com>
  M:    Nadav Amit <namit@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
  L:    linux-kernel@vger.kernel.org
@@@ -17558,7 -17584,6 +17586,6 @@@ M:   Jakub Kicinski <jakub.kicinski@netro
  M:    Jesper Dangaard Brouer <hawk@kernel.org>
  M:    John Fastabend <john.fastabend@gmail.com>
  L:    netdev@vger.kernel.org
- L:    xdp-newbies@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Supported
  F:    net/core/xdp.c
@@@ -824,6 -824,8 +824,8 @@@ static void apply_fixup(struct hda_code
        while (id >= 0) {
                const struct hda_fixup *fix = codec->fixup_list + id;
  
+               if (++depth > 10)
+                       break;
                if (fix->chained_before)
                        apply_fixup(codec, fix->chain_id, action, depth + 1);
  
                }
                if (!fix->chained || fix->chained_before)
                        break;
-               if (++depth > 10)
-                       break;
                id = fix->chain_id;
        }
  }
@@@ -884,8 -884,7 +884,8 @@@ EXPORT_SYMBOL_GPL(snd_hda_apply_fixup)
  #define IGNORE_SEQ_ASSOC (~(AC_DEFCFG_SEQUENCE | AC_DEFCFG_DEF_ASSOC))
  
  static bool pin_config_match(struct hda_codec *codec,
 -                           const struct hda_pintbl *pins)
 +                           const struct hda_pintbl *pins,
 +                           bool match_all_pins)
  {
        const struct hda_pincfg *pin;
        int i;
                                        return false;
                        }
                }
 -              if (!found && (cfg & 0xf0000000) != 0x40000000)
 +              if (match_all_pins &&
 +                  !found && (cfg & 0xf0000000) != 0x40000000)
                        return false;
        }
  
   * @codec: the HDA codec
   * @pin_quirk: zero-terminated pin quirk list
   * @fixlist: the fixup list
 + * @match_all_pins: all valid pins must match with the table entries
   */
  void snd_hda_pick_pin_fixup(struct hda_codec *codec,
                            const struct snd_hda_pin_quirk *pin_quirk,
 -                          const struct hda_fixup *fixlist)
 +                          const struct hda_fixup *fixlist,
 +                          bool match_all_pins)
  {
        const struct snd_hda_pin_quirk *pq;
  
                        continue;
                if (codec->core.vendor_id != pq->codec)
                        continue;
 -              if (pin_config_match(codec, pq->pins)) {
 +              if (pin_config_match(codec, pq->pins, match_all_pins)) {
                        codec->fixup_id = pq->value;
  #ifdef CONFIG_SND_DEBUG_VERBOSE
                        codec->fixup_name = pq->name;
@@@ -837,9 -837,11 +837,11 @@@ static int alc_init(struct hda_codec *c
        if (spec->init_hook)
                spec->init_hook(codec);
  
+       spec->gen.skip_verbs = 1; /* applied in below */
        snd_hda_gen_init(codec);
        alc_fix_pll(codec);
        alc_auto_init_amp(codec, spec->init_amp);
+       snd_hda_apply_verbs(codec); /* apply verbs here after own init */
  
        snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_INIT);
  
@@@ -1056,9 -1058,6 +1058,9 @@@ static const struct snd_pci_quirk beep_
        SND_PCI_QUIRK(0x1043, 0x834a, "EeePC", 1),
        SND_PCI_QUIRK(0x1458, 0xa002, "GA-MA790X", 1),
        SND_PCI_QUIRK(0x8086, 0xd613, "Intel", 1),
 +      /* blacklist -- no beep available */
 +      SND_PCI_QUIRK(0x17aa, 0x309e, "Lenovo ThinkCentre M73", 0),
 +      SND_PCI_QUIRK(0x17aa, 0x30a3, "Lenovo ThinkCentre M93", 0),
        {}
  };
  
@@@ -2842,8 -2841,7 +2844,8 @@@ static int patch_alc268(struct hda_code
                return err;
  
        spec = codec->spec;
 -      spec->gen.beep_nid = 0x01;
 +      if (has_cdefine_beep(codec))
 +              spec->gen.beep_nid = 0x01;
  
        spec->shutup = alc_eapd_shutup;
  
@@@ -3757,72 -3755,6 +3759,72 @@@ static void alc269_x101_hp_automute_hoo
                            vref);
  }
  
 +/*
 + * Magic sequence to make Huawei Matebook X right speaker working (bko#197801)
 + */
 +struct hda_alc298_mbxinit {
 +      unsigned char value_0x23;
 +      unsigned char value_0x25;
 +};
 +
 +static void alc298_huawei_mbx_stereo_seq(struct hda_codec *codec,
 +                                       const struct hda_alc298_mbxinit *initval,
 +                                       bool first)
 +{
 +      snd_hda_codec_write(codec, 0x06, 0, AC_VERB_SET_DIGI_CONVERT_3, 0x0);
 +      alc_write_coef_idx(codec, 0x26, 0xb000);
 +
 +      if (first)
 +              snd_hda_codec_write(codec, 0x21, 0, AC_VERB_GET_PIN_SENSE, 0x0);
 +
 +      snd_hda_codec_write(codec, 0x6, 0, AC_VERB_SET_DIGI_CONVERT_3, 0x80);
 +      alc_write_coef_idx(codec, 0x26, 0xf000);
 +      alc_write_coef_idx(codec, 0x23, initval->value_0x23);
 +
 +      if (initval->value_0x23 != 0x1e)
 +              alc_write_coef_idx(codec, 0x25, initval->value_0x25);
 +
 +      snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_COEF_INDEX, 0x26);
 +      snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, 0xb010);
 +}
 +
 +static void alc298_fixup_huawei_mbx_stereo(struct hda_codec *codec,
 +                                         const struct hda_fixup *fix,
 +                                         int action)
 +{
 +      /* Initialization magic */
 +      static const struct hda_alc298_mbxinit dac_init[] = {
 +              {0x0c, 0x00}, {0x0d, 0x00}, {0x0e, 0x00}, {0x0f, 0x00},
 +              {0x10, 0x00}, {0x1a, 0x40}, {0x1b, 0x82}, {0x1c, 0x00},
 +              {0x1d, 0x00}, {0x1e, 0x00}, {0x1f, 0x00},
 +              {0x20, 0xc2}, {0x21, 0xc8}, {0x22, 0x26}, {0x23, 0x24},
 +              {0x27, 0xff}, {0x28, 0xff}, {0x29, 0xff}, {0x2a, 0x8f},
 +              {0x2b, 0x02}, {0x2c, 0x48}, {0x2d, 0x34}, {0x2e, 0x00},
 +              {0x2f, 0x00},
 +              {0x30, 0x00}, {0x31, 0x00}, {0x32, 0x00}, {0x33, 0x00},
 +              {0x34, 0x00}, {0x35, 0x01}, {0x36, 0x93}, {0x37, 0x0c},
 +              {0x38, 0x00}, {0x39, 0x00}, {0x3a, 0xf8}, {0x38, 0x80},
 +              {}
 +      };
 +      const struct hda_alc298_mbxinit *seq;
 +
 +      if (action != HDA_FIXUP_ACT_INIT)
 +              return;
 +
 +      /* Start */
 +      snd_hda_codec_write(codec, 0x06, 0, AC_VERB_SET_DIGI_CONVERT_3, 0x00);
 +      snd_hda_codec_write(codec, 0x06, 0, AC_VERB_SET_DIGI_CONVERT_3, 0x80);
 +      alc_write_coef_idx(codec, 0x26, 0xf000);
 +      alc_write_coef_idx(codec, 0x22, 0x31);
 +      alc_write_coef_idx(codec, 0x23, 0x0b);
 +      alc_write_coef_idx(codec, 0x25, 0x00);
 +      snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_COEF_INDEX, 0x26);
 +      snd_hda_codec_write(codec, 0x20, 0, AC_VERB_SET_PROC_COEF, 0xb010);
 +
 +      for (seq = dac_init; seq->value_0x23; seq++)
 +              alc298_huawei_mbx_stereo_seq(codec, seq, seq == dac_init);
 +}
 +
  static void alc269_fixup_x101_headset_mic(struct hda_codec *codec,
                                     const struct hda_fixup *fix, int action)
  {
@@@ -5848,7 -5780,6 +5850,7 @@@ enum 
        ALC255_FIXUP_DUMMY_LINEOUT_VERB,
        ALC255_FIXUP_DELL_HEADSET_MIC,
        ALC256_FIXUP_HUAWEI_MACH_WX9_PINS,
 +      ALC298_FIXUP_HUAWEI_MBX_STEREO,
        ALC295_FIXUP_HP_X360,
        ALC221_FIXUP_HP_HEADSET_MIC,
        ALC285_FIXUP_LENOVO_HEADPHONE_NOISE,
        ALC286_FIXUP_ACER_AIO_HEADSET_MIC,
        ALC256_FIXUP_ASUS_MIC_NO_PRESENCE,
        ALC299_FIXUP_PREDATOR_SPK,
+       ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC,
  };
  
  static const struct hda_fixup alc269_fixups[] = {
                .chained = true,
                .chain_id = ALC255_FIXUP_MIC_MUTE_LED
        },
 +      [ALC298_FIXUP_HUAWEI_MBX_STEREO] = {
 +              .type = HDA_FIXUP_FUNC,
 +              .v.func = alc298_fixup_huawei_mbx_stereo,
 +              .chained = true,
 +              .chain_id = ALC255_FIXUP_MIC_MUTE_LED
 +      },
        [ALC269_FIXUP_ASUS_X101_FUNC] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc269_fixup_x101_headset_mic,
                        { }
                }
        },
+       [ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC] = {
+               .type = HDA_FIXUP_PINS,
+               .v.pins = (const struct hda_pintbl[]) {
+                       { 0x14, 0x411111f0 }, /* disable confusing internal speaker */
+                       { 0x19, 0x04a11150 }, /* use as headset mic, without its own jack detect */
+                       { }
+               },
+               .chained = true,
+               .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
+       },
  };
  
  static const struct snd_pci_quirk alc269_fixup_tbl[] = {
        SND_PCI_QUIRK(0x103c, 0x82c0, "HP G3 mini premium", ALC221_FIXUP_HP_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x103c, 0x83b9, "HP Spectre x360", ALC269_FIXUP_HP_MUTE_LED_MIC3),
        SND_PCI_QUIRK(0x103c, 0x8497, "HP Envy x360", ALC269_FIXUP_HP_MUTE_LED_MIC3),
+       SND_PCI_QUIRK(0x103c, 0x84e7, "HP Pavilion 15", ALC269_FIXUP_HP_MUTE_LED_MIC3),
        SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),
        SND_PCI_QUIRK(0x1043, 0x103f, "ASUS TX300", ALC282_FIXUP_ASUS_TX300),
        SND_PCI_QUIRK(0x1043, 0x106d, "Asus K53BE", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
        SND_PCI_QUIRK(0x1043, 0x1427, "Asus Zenbook UX31E", ALC269VB_FIXUP_ASUS_ZENBOOK),
        SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A),
        SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
+       SND_PCI_QUIRK(0x1043, 0x17d1, "ASUS UX431FL", ALC294_FIXUP_ASUS_INTSPK_HEADSET_MIC),
        SND_PCI_QUIRK(0x1043, 0x1a13, "Asus G73Jw", ALC269_FIXUP_ASUS_G73JW),
        SND_PCI_QUIRK(0x1043, 0x1a30, "ASUS X705UD", ALC256_FIXUP_ASUS_MIC),
        SND_PCI_QUIRK(0x1043, 0x1b13, "Asus U41SV", ALC269_FIXUP_INV_DMIC),
        SND_PCI_QUIRK(0x17aa, 0x312a, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
        SND_PCI_QUIRK(0x17aa, 0x312f, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
        SND_PCI_QUIRK(0x17aa, 0x313c, "ThinkCentre Station", ALC294_FIXUP_LENOVO_MIC_LOCATION),
+       SND_PCI_QUIRK(0x17aa, 0x3151, "ThinkCentre Station", ALC283_FIXUP_HEADSET_MIC),
        SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
        SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC),
        SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo B50-70", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
@@@ -7341,7 -7280,6 +7357,7 @@@ static const struct hda_model_fixup alc
        {.id = ALC225_FIXUP_HEADSET_JACK, .name = "alc-headset-jack"},
        {.id = ALC295_FIXUP_CHROME_BOOK, .name = "alc-chrome-book"},
        {.id = ALC299_FIXUP_PREDATOR_SPK, .name = "predator-spk"},
 +      {.id = ALC298_FIXUP_HUAWEI_MBX_STEREO, .name = "huawei-mbx-stereo"},
        {}
  };
  #define ALC225_STANDARD_PINS \
@@@ -7652,6 -7590,10 +7668,6 @@@ static const struct snd_hda_pin_quirk a
                {0x12, 0x90a60120},
                {0x14, 0x90170110},
                {0x21, 0x0321101f}),
 -      SND_HDA_PIN_QUIRK(0x10ec0289, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
 -              {0x12, 0xb7a60130},
 -              {0x14, 0x90170110},
 -              {0x21, 0x04211020}),
        SND_HDA_PIN_QUIRK(0x10ec0290, 0x103c, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC1,
                ALC290_STANDARD_PINS,
                {0x15, 0x04211040},
        {}
  };
  
 +/* This is the fallback pin_fixup_tbl for alc269 family, to make the tbl match
 + * more machines, don't need to match all valid pins, just need to match
 + * all the pins defined in the tbl. Just because of this reason, it is possible
 + * that a single machine matches multiple tbls, so there is one limitation:
 + *   at most one tbl is allowed to define for the same vendor and same codec
 + */
 +static const struct snd_hda_pin_quirk alc269_fallback_pin_fixup_tbl[] = {
 +      SND_HDA_PIN_QUIRK(0x10ec0289, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
 +              {0x19, 0x40000000},
 +              {0x1b, 0x40000000}),
 +      {}
 +};
 +
  static void alc269_fill_coef(struct hda_codec *codec)
  {
        struct alc_spec *spec = codec->spec;
@@@ -7963,8 -7892,7 +7979,8 @@@ static int patch_alc269(struct hda_code
  
        snd_hda_pick_fixup(codec, alc269_fixup_models,
                       alc269_fixup_tbl, alc269_fixups);
 -      snd_hda_pick_pin_fixup(codec, alc269_pin_fixup_tbl, alc269_fixups);
 +      snd_hda_pick_pin_fixup(codec, alc269_pin_fixup_tbl, alc269_fixups, true);
 +      snd_hda_pick_pin_fixup(codec, alc269_fallback_pin_fixup_tbl, alc269_fixups, false);
        snd_hda_pick_fixup(codec, NULL, alc269_fixup_vendor_tbl,
                           alc269_fixups);
        snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
@@@ -8098,8 -8026,7 +8114,8 @@@ static int patch_alc861(struct hda_code
                return err;
  
        spec = codec->spec;
 -      spec->gen.beep_nid = 0x23;
 +      if (has_cdefine_beep(codec))
 +              spec->gen.beep_nid = 0x23;
  
  #ifdef CONFIG_PM
        spec->power_hook = alc_power_eapd;
@@@ -8200,8 -8127,7 +8216,8 @@@ static int patch_alc861vd(struct hda_co
                return err;
  
        spec = codec->spec;
 -      spec->gen.beep_nid = 0x23;
 +      if (has_cdefine_beep(codec))
 +              spec->gen.beep_nid = 0x23;
  
        spec->shutup = alc_eapd_shutup;
  
@@@ -8341,45 -8267,6 +8357,45 @@@ static void alc662_fixup_usi_headset_mi
        }
  }
  
 +static void alc662_aspire_ethos_mute_speakers(struct hda_codec *codec,
 +                                      struct hda_jack_callback *cb)
 +{
 +      /* surround speakers at 0x1b already get muted automatically when
 +       * headphones are plugged in, but we have to mute/unmute the remaining
 +       * channels manually:
 +       * 0x15 - front left/front right
 +       * 0x18 - front center/ LFE
 +       */
 +      if (snd_hda_jack_detect_state(codec, 0x1b) == HDA_JACK_PRESENT) {
 +              snd_hda_set_pin_ctl_cache(codec, 0x15, 0);
 +              snd_hda_set_pin_ctl_cache(codec, 0x18, 0);
 +      } else {
 +              snd_hda_set_pin_ctl_cache(codec, 0x15, PIN_OUT);
 +              snd_hda_set_pin_ctl_cache(codec, 0x18, PIN_OUT);
 +      }
 +}
 +
 +static void alc662_fixup_aspire_ethos_hp(struct hda_codec *codec,
 +                                      const struct hda_fixup *fix, int action)
 +{
 +    /* Pin 0x1b: shared headphones jack and surround speakers */
 +      if (!is_jack_detectable(codec, 0x1b))
 +              return;
 +
 +      switch (action) {
 +      case HDA_FIXUP_ACT_PRE_PROBE:
 +              snd_hda_jack_detect_enable_callback(codec, 0x1b,
 +                              alc662_aspire_ethos_mute_speakers);
 +              break;
 +      case HDA_FIXUP_ACT_INIT:
 +              /* Make sure to start in a correct state, i.e. if
 +               * headphones have been plugged in before powering up the system
 +               */
 +              alc662_aspire_ethos_mute_speakers(codec, NULL);
 +              break;
 +      }
 +}
 +
  static struct coef_fw alc668_coefs[] = {
        WRITE_COEF(0x01, 0xbebe), WRITE_COEF(0x02, 0xaaaa), WRITE_COEF(0x03,    0x0),
        WRITE_COEF(0x04, 0x0180), WRITE_COEF(0x06,    0x0), WRITE_COEF(0x07, 0x0f80),
@@@ -8451,9 -8338,6 +8467,9 @@@ enum 
        ALC662_FIXUP_USI_FUNC,
        ALC662_FIXUP_USI_HEADSET_MODE,
        ALC662_FIXUP_LENOVO_MULTI_CODECS,
 +      ALC669_FIXUP_ACER_ASPIRE_ETHOS,
 +      ALC669_FIXUP_ACER_ASPIRE_ETHOS_SUBWOOFER,
 +      ALC669_FIXUP_ACER_ASPIRE_ETHOS_HEADSET,
  };
  
  static const struct hda_fixup alc662_fixups[] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc233_alc662_fixup_lenovo_dual_codecs,
        },
 +      [ALC669_FIXUP_ACER_ASPIRE_ETHOS_HEADSET] = {
 +              .type = HDA_FIXUP_FUNC,
 +              .v.func = alc662_fixup_aspire_ethos_hp,
 +      },
 +      [ALC669_FIXUP_ACER_ASPIRE_ETHOS_SUBWOOFER] = {
 +              .type = HDA_FIXUP_VERBS,
 +              /* subwoofer needs an extra GPIO setting to become audible */
 +              .v.verbs = (const struct hda_verb[]) {
 +                      {0x01, AC_VERB_SET_GPIO_MASK, 0x02},
 +                      {0x01, AC_VERB_SET_GPIO_DIRECTION, 0x02},
 +                      {0x01, AC_VERB_SET_GPIO_DATA, 0x00},
 +                      { }
 +              },
 +              .chained = true,
 +              .chain_id = ALC669_FIXUP_ACER_ASPIRE_ETHOS_HEADSET
 +      },
 +      [ALC669_FIXUP_ACER_ASPIRE_ETHOS] = {
 +              .type = HDA_FIXUP_PINS,
 +              .v.pins = (const struct hda_pintbl[]) {
 +                      { 0x15, 0x92130110 }, /* front speakers */
 +                      { 0x18, 0x99130111 }, /* center/subwoofer */
 +                      { 0x1b, 0x11130012 }, /* surround plus jack for HP */
 +                      { }
 +              },
 +              .chained = true,
 +              .chain_id = ALC669_FIXUP_ACER_ASPIRE_ETHOS_SUBWOOFER
 +      },
  };
  
  static const struct snd_pci_quirk alc662_fixup_tbl[] = {
        SND_PCI_QUIRK(0x19da, 0xa130, "Zotac Z68", ALC662_FIXUP_ZOTAC_Z68),
        SND_PCI_QUIRK(0x1b0a, 0x01b8, "ACER Veriton", ALC662_FIXUP_ACER_VERITON),
        SND_PCI_QUIRK(0x1b35, 0x2206, "CZC P10T", ALC662_FIXUP_CZC_P10T),
 +      SND_PCI_QUIRK(0x1025, 0x0566, "Acer Aspire Ethos 8951G", ALC669_FIXUP_ACER_ASPIRE_ETHOS),
  
  #if 0
        /* Below is a quirk table taken from the old code.
@@@ -8946,7 -8802,6 +8962,7 @@@ static const struct hda_model_fixup alc
        {.id = ALC892_FIXUP_ASROCK_MOBO, .name = "asrock-mobo"},
        {.id = ALC662_FIXUP_USI_HEADSET_MODE, .name = "usi-headset"},
        {.id = ALC662_FIXUP_LENOVO_MULTI_CODECS, .name = "dual-codecs"},
 +      {.id = ALC669_FIXUP_ACER_ASPIRE_ETHOS, .name = "aspire-ethos"},
        {}
  };
  
@@@ -9022,7 -8877,7 +9038,7 @@@ static int patch_alc662(struct hda_code
  
        snd_hda_pick_fixup(codec, alc662_fixup_models,
                       alc662_fixup_tbl, alc662_fixups);
 -      snd_hda_pick_pin_fixup(codec, alc662_pin_fixup_tbl, alc662_fixups);
 +      snd_hda_pick_pin_fixup(codec, alc662_pin_fixup_tbl, alc662_fixups, true);
        snd_hda_apply_fixup(codec, HDA_FIXUP_ACT_PRE_PROBE);
  
        alc_auto_parse_customize_define(codec);
@@@ -9107,6 -8962,7 +9123,7 @@@ static int patch_alc680(struct hda_code
  static const struct hda_device_id snd_hda_id_realtek[] = {
        HDA_CODEC_ENTRY(0x10ec0215, "ALC215", patch_alc269),
        HDA_CODEC_ENTRY(0x10ec0221, "ALC221", patch_alc269),
+       HDA_CODEC_ENTRY(0x10ec0222, "ALC222", patch_alc269),
        HDA_CODEC_ENTRY(0x10ec0225, "ALC225", patch_alc269),
        HDA_CODEC_ENTRY(0x10ec0231, "ALC231", patch_alc269),
        HDA_CODEC_ENTRY(0x10ec0233, "ALC233", patch_alc269),