Alsa-devel
Threads by month
- ----- 2025 -----
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2014
- 127 participants
- 277 discussions
The following changes since commit 9296f4da3bafa23d8b9abc5cd271a66ea8f90cd2:
ASoC: tlv320aic31xx: Staticise non-exported symbols (2014-03-13 17:44:22 +0000)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git tags/asoc-v3.15-3
for you to fetch changes up to e090d5b6ad20056ec0ef58727e3ae95fd82be090:
Merge remote-tracking branches 'asoc/topic/simple' and 'asoc/topic/sirf' into asoc-next (2014-03-23 14:00:59 +0000)
----------------------------------------------------------------
ASoC: Updates for v3.15
A few more updates for the merge window:
- Fixes for the simple-card DAI format DT mess.
- A new driver for Cirrus cs42xx8 devices.
- DT support for a couple more devices.
- A revert of a previous buggy fix for soc-pcm, plus a few more fixes
and cleanups.
----------------------------------------------------------------
Al Viro (3):
ocfs2 syncs the wrong range...
sockfd_lookup_light(): switch to fdget^W^Waway from fget_light
get rid of fget_light()
Ales Novak (1):
[SCSI] storvsc: NULL pointer dereference fix
Alex Deucher (4):
drm/radeon: fix runpm disabling on non-PX harder
drm/radeon/cik: properly set sdma ring status on disable
drm/radeon/cik: stop the sdma engines in the enable() function
drm/radeon/cik: properly set compute ring status on disable
Alexander Aring (1):
at86rf230: fix lockdep splats
Alexei Starovoitov (1):
x86: bpf_jit: support negative offsets
Amir Vadai (2):
net/mlx4_core: Fix memory access error in mlx4_QUERY_DEV_CAP_wrapper()
net/mlx4_core: mlx4_init_slave() shouldn't access comm channel before PF is ready
Amitkumar Karwar (2):
mwifiex: copy AP's HT capability info correctly
mwifiex: save and copy AP's VHT capability info correctly
Andrew Lutomirski (1):
net: Improve SO_TIMESTAMPING documentation and fix a minor code bug
Andrew Morton (1):
revert "kallsyms: fix absolute addresses for kASLR"
Annie Li (1):
Xen-netback: Fix issue caused by using gso_type wrongly
Anton Blanchard (2):
net: unix socket code abuses csum_partial
ibmveth: Fix endian issues with MAC addresses
Anton Nayshtut (1):
ipv6: Fix exthdrs offload registration.
Arnd Bergmann (1):
vmxnet3: fix building without CONFIG_PCI_MSI
Artem Fetishev (1):
fs/proc/base.c: fix GPF in /proc/$PID/map_files
Axel Lin (1):
ASoC: tlv320aic31xx: Don't call kfree for memory allocated by devm_kzalloc
Ben Hutchings (3):
perf trace: Decode architecture-specific signal numbers
bna: Replace large udelay() with mdelay()
mm/Kconfig: fix URL for zsmalloc benchmark
Bjorn Helgaas (3):
phy: fix compiler array bounds warning on settings[]
PCI: Enable INTx in pci_reenable_device() only when MSI/MSI-X not enabled
PCI: Don't check resource_size() in pci_bus_alloc_resource()
Brian Austin (3):
ASoC: cs42l73: Fix mask bits for SOC_VALUE_ENUM_SINGLE
ASoC: cs42l52: Fix mask bits for SOC_VALUE_ENUM_SINGLE
ASoC: cs42l51: Fix SOC_DOUBLE_R_SX_TLV shift values for ADC, PCM, and Analog kcontrols
Chad Dupuis (1):
[SCSI] qla2xxx: Fix multiqueue MSI-X registration.
Colin Ian King (1):
tools/testing/selftests/ipc/msgque.c: handle msgget failure return correctly
Dan Williams (1):
[SCSI] isci: fix reset timeout handling
Daniel Borkmann (2):
net: sctp: fix skb leakage in COOKIE ECHO path of chunk->auth_chunk
MAINTAINERS: add networking selftests to NETWORKING
Daniel J Blueman (1):
x86/amd/numa: Fix northbridge quirk to assign correct NUMA node
Dave Airlie (3):
Merge tag 'vmwgfx-fixes-3.14-2014-03-13' of git://people.freedesktop.org/~thomash/linux into drm-fixes
Merge branch 'drm-fixes-3.14' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
Merge tag 'ttm-fixes-3.14-2014-03-12' of git://people.freedesktop.org/~thomash/linux into drm-fixes
Dave Jones (2):
perf/x86: Fix leak in uncore_type_init failure paths
x86: Remove CONFIG_X86_OOSTORE
David S. Miller (5):
Merge branch 'tipc'
Merge branch 'for-davem' of git://git.kernel.org/.../linville/wireless
Merge branch 'stmmac'
Merge branch 'skb_frags'
Merge branch 'mlx4'
Don Zickus (1):
perf machine: Use map as success in ip__resolve_ams
Dylan Reid (1):
ASoC: tegra: Use flat regcache
Eliad Peller (1):
mac80211: consider virtual mon when calculating min_def
Emmanuel Grumbach (1):
iwlwifi: mvm: don't WARN when statistics are handled late
Eric Dumazet (3):
pkt_sched: move the sanity test in qdisc_list_add()
pkt_sched: fq: do not hold qdisc lock while allocating memory
tcp: tcp_release_cb() should release socket ownership
Eric W. Biederman (3):
audit: Use struct net not pid_t to remember the network namespce to reply in
audit: Send replies in the proper network namespace.
audit: Update kdoc for audit_send_reply and audit_list_rules_send
Erik Hugne (3):
tipc: drop subscriber connection id invalidation
tipc: fix memory leak during module removal
tipc: don't log disabled tasklet handler errors
Fernando Luis Vazquez Cao (1):
sched/clock: Prevent tracing recursion in sched_clock_cpu()
Florian Westphal (1):
inet: frag: make sure forced eviction removes all frags
Gavin Shan (1):
net/mlx4: Support shutdown() interface
Geert Uytterhoeven (2):
cris: convert ffs from an object-like macro to a function-like macro
packet: doc: Spelling s/than/that/
Giridhar Malavali (1):
[SCSI] qla2xxx: Poll during initialization for ISP25xx and ISP83xx
Giuseppe CAVALLARO (4):
stmmac: disable at run-time the EEE if not supported
stmmac: fix and better tune the default buffer sizes
stmmac: fix chained mode
stmmac: dwmac-sti: fix broken STiD127 compatibility
Guillaume Nault (2):
l2tp: fix manual sequencing (de)activation in L2TPv2
l2tp: fix userspace reception on plain L2TP sockets
Haiyang Zhang (1):
hyperv: Move state setting for link query
Heiner Kallweit (1):
ipv6: Avoid unnecessary temporary addresses being generated
Heinz Mauelshagen (2):
dm cache: fix truncation bug when copying a block to/from >2TB fast device
dm cache: fix access beyond end of origin device
Ingo Molnar (1):
Merge tag 'perf-urgent-for-mingo' of git://git.kernel.org/.../acme/linux into perf/urgent
Ivaylo Dimitrov (1):
wl1251: use skb_trim to make skb shorter
Jean-Francois Moine (2):
ASoC: simple-card: Fix the reference count of device nodes
ASoC: simple-card: Simplify code
Jeff Layton (2):
cifs: sanity check length of data to send before sending
cifs: mask off top byte in get_rfc1002_length()
Jiri Olsa (1):
perf symbols: Fix crash in elf_section_by_name
Johannes Berg (2):
cfg80211: remove racy beacon_interval assignment
mac80211: clear sequence/fragment number in QoS-null frames
Johannes Weiner (1):
mm: fix GFP_THISNODE callers and clarify
John W. Linville (3):
Merge branch 'for-john' of git://git.kernel.org/.../iwlwifi/iwlwifi-fixes
Merge branch 'for-john' of git://git.kernel.org/.../jberg/mac80211
Merge branch 'master' of git://git.kernel.org/.../linville/wireless into for-davem
Juri Lelli (1):
sched/deadline: Deny unprivileged users to set/change SCHED_DEADLINE policy
Jyri Sarha (1):
ASoC: tlv320aic31xx: Turn power off only once.
Kuninori Morimoto (4):
ASoC: fsi: fixup SND_SOC_DAIFMT_CBx_CFx flags
ASoC: rcar: fixup SND_SOC_DAIFMT_CBx_CFx flags
ASoC: fsi: fixup compile error for simple-card
ASoC: rsnd: add DeviceTree support
Lars-Peter Clausen (8):
ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card
ASoC: davinci-evm: Register machine level DAPM elements with the card
ASoC: max98090: Remove unused control_data field
ASoC: sirf-audio-codec: Remove snd_soc_codec_set_cache_io() call
ASoC: codecs: Replace instances of rtd->codec with dai->codec
ASoC: Add helper function to cast component back to CODEC
ASoC: mfld_machine: Convert to table based DAPM and control setup
ASoC: mfld_machine: Fix compile error
Laura Abbott (1):
mm/compaction: break out of loop on !PageBuddy in isolate_freepages_block
Linus Lüssing (3):
bridge: multicast: add sanity check for query source addresses
bridge: multicast: add sanity check for general query destination
bridge: multicast: enable snooping on general queries only
Linus Torvalds (19):
vfs: atomic f_pos accesses as per POSIX
Merge branch 'for-3.14-fixes' of git://git.kernel.org/.../tj/libata
Merge branch 'for-linus' of git://git.kernel.org/.../viro/vfs
Merge branch 'akpm' (patches from Andrew Morton)
Merge branch 'for-linus' of git://git.kernel.org/.../ebiederm/user-namespace
Merge branch 'for-next' of git://git.samba.org/sfrench/cifs-2.6
Merge tag 'sound-3.14-rc7' of git://git.kernel.org/.../tiwai/sound
Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
Merge tag 'pci-v3.14-fixes-2' of git://git.kernel.org/.../helgaas/pci
Merge git://git.kernel.org/.../davem/net
Merge branch 'i2c/for-current' of git://git.kernel.org/.../wsa/linux
Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux
Merge tag 'dm-3.14-fixes-4' of git://git.kernel.org/.../device-mapper/linux-dm
Merge tag 'pm+acpi-3.14-rc7' of git://git.kernel.org/.../rafael/linux-pm
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/.../tip/tip
Merge tag 'scsi-fixes' of git://git.kernel.org/.../jejb/scsi
Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/.../tip/tip
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/.../tip/tip
Linux 3.14-rc7
Lukasz Dorau (1):
[SCSI] isci: correct erroneous for_each_isci_host macro
Marc Zyngier (1):
ARM: KVM: fix non-VGIC compilation
Mark Brown (13):
ASoC: io: Remove support for ASoC cache in conjunction with regmap
ASoC: pcm: Drop incorrect double/extra frees
Merge remote-tracking branches 'asoc/fix/cs42l51', 'asoc/fix/cs42l52', 'asoc/fix/cs42l73', 'asoc/fix/rcar', 'asoc/fix/spear' and 'asoc/fix/tegra' into asoc-linus
Merge tag 'asoc-v3.15' into asoc-next
Merge tag 'asoc-v3.15-2' into asoc-next
Merge remote-tracking branch 'asoc/topic/core' into asoc-next
Merge remote-tracking branch 'asoc/topic/codecs' into asoc-next
Merge remote-tracking branch 'asoc/topic/cs42xx8' into asoc-next
Merge remote-tracking branch 'asoc/topic/davinci' into asoc-next
Merge remote-tracking branches 'asoc/topic/intel', 'asoc/topic/io' and 'asoc/topic/kirkwood' into asoc-next
Merge remote-tracking branches 'asoc/topic/max98090' and 'asoc/topic/omap' into asoc-next
Merge remote-tracking branch 'asoc/topic/rcar' into asoc-next
Merge remote-tracking branches 'asoc/topic/simple' and 'asoc/topic/sirf' into asoc-next
Markos Chandras (1):
tools/net/Makefile: Define PACKAGE to fix build problems
Matthew Leach (1):
net: socket: error on a negative msg_namelen
Michael Chan (1):
bnx2: Fix shutdown sequence
Michael Kerrisk (1):
ipc: Fix 2 bugs in msgrcv() MSG_COPY implementation
Michael Opdenacker (1):
MAINTAINERS: blackfin: add git repository
Michael S. Tsirkin (5):
skbuff: skb_segment: s/frag/nskb_frag/
skbuff: skb_segment: s/skb_frag/frag/
skbuff: skb_segment: s/skb/head_skb/
skbuff: skb_segment: s/fskb/list_skb/
skbuff: skb_segment: orphan frags before copying
Mike Christie (1):
[SCSI] be2iscsi: fix bad if expression
Neil Horman (1):
vmxnet3: fix netpoll race condition
Nenghua Cao (1):
asoc: soc-core: fix coccinelle warnings
Nicolin Chen (2):
ASoC: simple-card: overwrite cpu_dai->fmt with codec_dai->fmt
ASoC: cs42xx8: Add codec driver support for CS42448/CS42888
Nikolay Aleksandrov (1):
net: fix for a race condition in the inet frag code
Or Gerlitz (4):
net/mlx4_core: Fix wrong dump of the vxlan offloads device capability
net/mlx4_en: Handle vxlan steering rules for mac address changes
net/mlx4_core: Load the IB driver when the device supports IBoE
net/mlx4_en: Deregister multicast vxlan steering rules when going down
Oren Givon (1):
iwlwifi: fix and add 7265 series HW IDs
Pavel Shilovsky (1):
CIFS: Fix wrong pos argument of cifs_find_lock_conflict
Peter Boström (1):
vlan: Set correct source MAC address with TX VLAN offload enabled
Peter Ujfalusi (2):
ASoC: davinci: Add edma dmaengine platform driver
ASoC: davinci-mcasp: Provide correct filter_data for dmaengine for non-DT boot
Peter Zijlstra (1):
stop_machine: Fix^2 race between stop_two_cpus() and stop_cpus()
Radim Krčmář (1):
KVM: SVM: fix cr8 intercept window
Rafael J. Wysocki (4):
cpufreq: Skip current frequency initialization for ->setpolicy drivers
ACPI / init: Invoke early ACPI initialization later
ACPI / sleep: Add extra checks for HW Reduced ACPI mode sleep states
Merge branches 'pnp', 'acpi-init', 'acpi-sleep' and 'pm-cpufreq'
Richard Weinberger (1):
i2c: Remove usage of orphaned symbol OF_I2C
Rob Clark (1):
drm/ttm: don't oops if no invalidate_caches()
Sabrina Dubroca (1):
ipv6: don't set DST_NOCOUNT for remotely added routes
Sasha Levin (1):
bonding: correctly handle out of range parameters for lp_interval
Sergei Antonov (1):
hfsplus: add HFSX subfolder count support
Soren Brinkmann (2):
net: macb: Check DMA mappings for error
net: macb: DMA-unmap full rx-buffer
Stefan Wahren (1):
eth: fec: Fix lost promiscuous mode after reconnecting cable
Suresh Siddha (1):
x86, fpu: Check tsk_used_math() in kernel_fpu_end() for eager FPU
Tejun Heo (1):
libata: use wider match for blacklisting Crucial M500
Thomas Hellstrom (2):
drm/ttm: Work around performance regression with VM_PFNMAP
drm/vmwgfx: Fix a surface reference corner-case in legacy emulation mode
Thomas Petazzoni (1):
ASoC: add S/PDIF support to Armada 370 DB ASoC driver
Tobias Klauser (1):
MAINTAINERS: Add tools/net to NETWORKING [GENERAL]
Wei Liu (1):
xen-netback: use skb_is_gso in xenvif_start_xmit
Ying Xue (3):
tipc: allow connection shutdown callback to be invoked in advance
tipc: fix connection refcount leak
tipc: avoid to unnecessary process switch under non-block mode
Zhang Rui (1):
PNP / ACPI: proper handling of ACPI IO/Memory resource parsing failures
dingtianhong (1):
bonding: set correct vlan id for alb xmit path
hayeswang (2):
r8152: disable the ECM mode
r8169: fix the incorrect tx descriptor version
.gitignore | 3 +
Documentation/00-INDEX | 24 +-
Documentation/PCI/MSI-HOWTO.txt | 119 +-
Documentation/RCU/00-INDEX | 2 +
Documentation/arm/00-INDEX | 14 +
Documentation/blackfin/00-INDEX | 6 +-
Documentation/block/00-INDEX | 2 +
Documentation/device-mapper/cache.txt | 11 +-
Documentation/device-mapper/thin-provisioning.txt | 34 +-
Documentation/devicetree/00-INDEX | 2 +
.../devicetree/bindings/arm/omap/omap.txt | 2 +-
.../bindings/clock/renesas,cpg-mstp-clocks.txt | 4 +-
.../devicetree/bindings/dma/fsl-imx-sdma.txt | 16 +-
.../devicetree/bindings/i2c/trivial-devices.txt | 1 +
.../interrupt-controller/lsi,zevio-intc.txt | 18 +
.../devicetree/bindings/misc/atmel-ssc.txt | 8 +
.../devicetree/bindings/mmc/atmel-hsmci.txt | 5 +
.../bindings/net/allwinner,sun4i-emac.txt | 5 +-
.../bindings/net/allwinner,sun4i-mdio.txt | 5 +-
.../devicetree/bindings/net/opencores-ethoc.txt | 22 +
.../devicetree/bindings/net/sti-dwmac.txt | 58 +
...capri-pinctrl.txt => brcm,bcm11351-pinctrl.txt} | 8 +-
.../devicetree/bindings/power/bq2415x.txt | 47 +
.../bindings/sound/armada-370db-audio.txt | 27 +
.../devicetree/bindings/sound/cs42xx8.txt | 28 +
Documentation/devicetree/bindings/sound/da9055.txt | 22 +
.../bindings/sound/davinci-evm-audio.txt | 9 +-
.../devicetree/bindings/sound/eukrea-tlv320.txt | 21 +
.../devicetree/bindings/sound/fsl,esai.txt | 5 +
.../devicetree/bindings/sound/fsl,spdif.txt | 5 +
.../devicetree/bindings/sound/mvebu-audio.txt | 1 +
.../devicetree/bindings/sound/pcm512x.txt | 30 +
.../devicetree/bindings/sound/renesas,rsnd.txt | 96 ++
.../devicetree/bindings/sound/simple-card.txt | 23 +-
.../devicetree/bindings/sound/sirf-audio-codec.txt | 17 +
.../devicetree/bindings/sound/sirf-audio-port.txt | 20 +
.../devicetree/bindings/sound/sirf-audio.txt | 41 +
.../devicetree/bindings/sound/tdm-slot.txt | 20 +
.../devicetree/bindings/sound/tlv320aic3x.txt | 1 -
.../devicetree/bindings/sound/widgets.txt | 20 +
.../devicetree/bindings/spi/spi_atmel.txt | 5 +
.../devicetree/bindings/vendor-prefixes.txt | 6 +-
Documentation/dvb/contributors.txt | 2 +-
Documentation/fb/00-INDEX | 6 +
Documentation/filesystems/00-INDEX | 2 +
Documentation/filesystems/nfs/00-INDEX | 4 +-
Documentation/i2c/instantiating-devices | 41 +-
Documentation/ide/00-INDEX | 2 +
Documentation/kernel-parameters.txt | 8 +-
Documentation/laptops/00-INDEX | 6 +-
Documentation/leds/00-INDEX | 8 +
Documentation/m68k/00-INDEX | 2 +
Documentation/networking/00-INDEX | 30 +-
Documentation/networking/3c505.txt | 45 -
Documentation/networking/can.txt | 6 -
Documentation/networking/packet_mmap.txt | 2 +-
Documentation/networking/timestamping.txt | 52 +-
Documentation/phy.txt | 26 +-
Documentation/power/00-INDEX | 6 +-
Documentation/ptp/testptp.c | 11 +-
Documentation/s390/00-INDEX | 8 +-
Documentation/scheduler/00-INDEX | 2 +
Documentation/scsi/00-INDEX | 16 +
Documentation/serial/00-INDEX | 6 +-
Documentation/spi/00-INDEX | 22 +
Documentation/spi/spi-summary | 17 +-
Documentation/timers/00-INDEX | 2 +
Documentation/virtual/kvm/00-INDEX | 2 +
Documentation/vm/00-INDEX | 4 +-
Documentation/w1/masters/00-INDEX | 4 +-
Documentation/w1/slaves/00-INDEX | 2 +
Documentation/x86/00-INDEX | 18 +-
Documentation/zh_CN/arm64/booting.txt | 65 +-
Documentation/zh_CN/arm64/memory.txt | 46 +-
Documentation/zh_CN/arm64/tagged-pointers.txt | 52 +
MAINTAINERS | 168 +-
Makefile | 10 +-
arch/arc/mm/cache_arc700.c | 4 +-
arch/arm/Kconfig | 3 +
arch/arm/boot/compressed/.gitignore | 1 +
arch/arm/boot/dts/Makefile | 4 +-
arch/arm/boot/dts/am335x-evmsk.dts | 11 +-
arch/arm/boot/dts/armada-xp-mv78260.dtsi | 3 +-
arch/arm/boot/dts/at91-sama5d3_xplained.dts | 229 +++
arch/arm/boot/dts/at91sam9263.dtsi | 2 +-
arch/arm/boot/dts/at91sam9n12ek.dts | 4 +
arch/arm/boot/dts/bcm11351.dtsi | 2 +-
arch/arm/boot/dts/dove.dtsi | 11 -
arch/arm/boot/dts/imx6dl-hummingboard.dts | 10 +-
arch/arm/boot/dts/imx6qdl-cubox-i.dtsi | 10 +-
arch/arm/boot/dts/keystone-clocks.dtsi | 2 +-
arch/arm/boot/dts/omap3-gta04.dts | 8 +-
arch/arm/boot/dts/omap3-igep0020.dts | 2 +-
arch/arm/boot/dts/omap3-igep0030.dts | 2 +-
arch/arm/boot/dts/omap3-n9.dts | 2 +-
arch/arm/boot/dts/omap3-n900.dts | 4 +-
arch/arm/boot/dts/omap3-n950.dts | 2 +-
arch/arm/boot/dts/omap3-overo-storm-tobi.dts | 22 +
...omap3-tobi.dts => omap3-overo-tobi-common.dtsi} | 3 -
arch/arm/boot/dts/omap3-overo-tobi.dts | 22 +
arch/arm/boot/dts/omap3-overo.dtsi | 3 -
arch/arm/boot/dts/sama5d3.dtsi | 2 +-
arch/arm/boot/dts/ste-href.dtsi | 1 -
arch/arm/boot/dts/sun4i-a10.dtsi | 6 +-
arch/arm/boot/dts/sun5i-a10s.dtsi | 6 +-
arch/arm/boot/dts/sun5i-a13.dtsi | 2 +-
arch/arm/boot/dts/sun7i-a20.dtsi | 16 +-
arch/arm/boot/dts/tegra114.dtsi | 4 +
arch/arm/boot/dts/tegra20.dtsi | 4 +
arch/arm/boot/dts/tegra30-cardhu.dtsi | 2 +-
arch/arm/boot/dts/tegra30.dtsi | 4 +
arch/arm/boot/dts/testcases/tests.dtsi | 2 -
arch/arm/boot/dts/versatile-pb.dts | 4 +-
arch/arm/configs/multi_v7_defconfig | 1 +
arch/arm/configs/tegra_defconfig | 3 +
arch/arm/include/asm/cacheflush.h | 1 +
arch/arm/include/asm/memory.h | 9 +-
arch/arm/include/asm/pgtable-3level.h | 15 +-
arch/arm/include/asm/spinlock.h | 15 +-
arch/arm/kernel/head-common.S | 12 +
arch/arm/kernel/head.S | 2 +-
arch/arm/kernel/setup.c | 2 +-
arch/arm/kvm/arm.c | 3 +-
arch/arm/kvm/interrupts.S | 11 +-
arch/arm/mach-hisi/Kconfig | 2 +-
arch/arm/mach-imx/Makefile | 2 -
arch/arm/mach-imx/clk-imx6q.c | 3 +
arch/arm/mach-imx/clk-imx6sl.c | 3 +
arch/arm/mach-imx/common.h | 4 +-
arch/arm/mach-imx/pm-imx6q.c | 2 -
arch/arm/mach-moxart/Kconfig | 1 -
arch/arm/mach-omap1/board-nokia770.c | 1 +
arch/arm/mach-omap2/Kconfig | 10 +-
arch/arm/mach-omap2/cclock3xxx_data.c | 2 +
arch/arm/mach-omap2/cpuidle44xx.c | 8 +-
arch/arm/mach-omap2/dpll3xxx.c | 92 +-
arch/arm/mach-omap2/gpmc.c | 4 +-
arch/arm/mach-omap2/io.c | 9 -
arch/arm/mach-omap2/omap_hwmod.c | 20 +-
arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 9 +-
arch/arm/mach-omap2/pdata-quirks.c | 21 +-
arch/arm/mach-omap2/prminst44xx.c | 4 +-
arch/arm/mach-pxa/am300epd.c | 1 +
arch/arm/mach-pxa/include/mach/balloon3.h | 2 +
arch/arm/mach-pxa/include/mach/corgi.h | 1 +
arch/arm/mach-pxa/include/mach/csb726.h | 2 +
arch/arm/mach-pxa/include/mach/gumstix.h | 1 +
arch/arm/mach-pxa/include/mach/idp.h | 1 +
arch/arm/mach-pxa/include/mach/palmld.h | 2 +
arch/arm/mach-pxa/include/mach/palmt5.h | 2 +
arch/arm/mach-pxa/include/mach/palmtc.h | 2 +
arch/arm/mach-pxa/include/mach/palmtx.h | 2 +
arch/arm/mach-pxa/include/mach/pcm027.h | 2 +
arch/arm/mach-pxa/include/mach/pcm990_baseboard.h | 1 +
arch/arm/mach-pxa/include/mach/poodle.h | 2 +
arch/arm/mach-pxa/include/mach/spitz.h | 2 +-
arch/arm/mach-pxa/include/mach/tosa.h | 2 +
arch/arm/mach-pxa/include/mach/trizeps4.h | 2 +
arch/arm/mach-pxa/mioa701.c | 9 +
arch/arm/mach-sa1100/include/mach/collie.h | 2 +
arch/arm/mach-shmobile/Kconfig | 2 +-
arch/arm/mach-shmobile/board-armadillo800eva.c | 4 +-
arch/arm/mach-shmobile/board-kzm9g.c | 4 +-
arch/arm/mach-shmobile/board-mackerel.c | 6 +-
arch/arm/mach-tegra/pm.c | 1 +
arch/arm/mach-tegra/tegra.c | 10 +
arch/arm/mach-zynq/common.c | 14 +
arch/arm/mm/dma-mapping.c | 2 +-
arch/arm/mm/dump.c | 3 +
arch/arm/mm/mm.h | 1 +
arch/arm/mm/mmu.c | 7 +-
arch/arm/mm/proc-v6.S | 3 +-
arch/arm/mm/proc-v7.S | 2 +-
arch/arm64/Kconfig | 1 +
arch/arm64/configs/defconfig | 18 +-
arch/arm64/include/asm/atomic.h | 53 +-
arch/arm64/include/asm/barrier.h | 2 +-
arch/arm64/include/asm/cacheflush.h | 1 +
arch/arm64/include/asm/cmpxchg.h | 17 +-
arch/arm64/include/asm/esr.h | 2 +-
arch/arm64/include/asm/futex.h | 10 +-
arch/arm64/include/asm/kvm_arm.h | 2 +-
arch/arm64/include/asm/percpu.h | 8 +
arch/arm64/include/asm/pgtable.h | 10 +-
arch/arm64/include/asm/spinlock.h | 10 +-
arch/arm64/include/asm/unistd32.h | 5 +-
arch/arm64/include/uapi/asm/kvm.h | 9 +
arch/arm64/kernel/kuser32.S | 6 +-
arch/arm64/kernel/stacktrace.c | 6 +-
arch/arm64/kernel/vdso.c | 4 +-
arch/arm64/kernel/vdso/Makefile | 2 +-
arch/arm64/kernel/vdso/gettimeofday.S | 7 +-
arch/arm64/kvm/hyp.S | 27 +-
arch/arm64/lib/bitops.S | 3 +-
arch/arm64/mm/dma-mapping.c | 1 +
arch/arm64/mm/mmu.c | 12 +-
arch/arm64/mm/pgd.c | 11 +-
arch/avr32/Makefile | 2 +-
arch/avr32/boards/mimc200/fram.c | 1 +
arch/avr32/include/asm/Kbuild | 1 +
arch/avr32/include/asm/io.h | 2 +
arch/c6x/include/asm/cache.h | 1 +
arch/cris/include/asm/bitops.h | 2 +-
arch/ia64/include/asm/unistd.h | 2 +-
arch/ia64/include/uapi/asm/unistd.h | 2 +
arch/ia64/kernel/entry.S | 2 +
arch/ia64/kernel/uncached.c | 2 +-
arch/m68k/include/asm/Kbuild | 6 +-
arch/m68k/include/asm/barrier.h | 8 -
arch/m68k/include/asm/unistd.h | 2 +-
arch/m68k/include/uapi/asm/unistd.h | 2 +
arch/m68k/kernel/syscalltable.S | 2 +
arch/microblaze/include/asm/delay.h | 2 +
arch/microblaze/include/asm/io.h | 6 +
arch/microblaze/kernel/head.S | 2 +-
arch/mips/alchemy/devboards/db1000.c | 7 +-
arch/mips/include/asm/fpu.h | 2 +
arch/mips/include/uapi/asm/unistd.h | 18 +-
arch/mips/kernel/scall32-o32.S | 2 +
arch/mips/kernel/scall64-64.S | 2 +
arch/mips/kernel/scall64-n32.S | 2 +
arch/mips/kernel/scall64-o32.S | 2 +
arch/parisc/hpux/fs.c | 15 +-
arch/powerpc/include/asm/compat.h | 5 +-
arch/powerpc/include/asm/dma-mapping.h | 1 +
arch/powerpc/include/asm/eeh.h | 21 +-
arch/powerpc/include/asm/hugetlb.h | 2 +-
arch/powerpc/include/asm/iommu.h | 1 +
arch/powerpc/include/asm/opal.h | 4 +-
arch/powerpc/include/asm/pgtable-ppc64.h | 26 +-
arch/powerpc/include/asm/pgtable.h | 22 +
arch/powerpc/include/asm/ptrace.h | 16 +-
arch/powerpc/include/asm/sections.h | 12 +
arch/powerpc/include/asm/vdso.h | 6 +-
arch/powerpc/kernel/crash_dump.c | 8 +-
arch/powerpc/kernel/dma.c | 10 +-
arch/powerpc/kernel/eeh.c | 32 +-
arch/powerpc/kernel/eeh_driver.c | 8 +-
arch/powerpc/kernel/ftrace.c | 1 +
arch/powerpc/kernel/iommu.c | 12 +
arch/powerpc/kernel/irq.c | 5 +
arch/powerpc/kernel/machine_kexec.c | 14 +-
arch/powerpc/kernel/machine_kexec_64.c | 6 +-
arch/powerpc/kernel/misc_32.S | 5 +-
arch/powerpc/kernel/process.c | 9 +
arch/powerpc/kernel/reloc_64.S | 5 +-
arch/powerpc/kernel/setup_32.c | 5 +
arch/powerpc/kernel/signal_64.c | 4 +-
arch/powerpc/kernel/vdso32/vdso32_wrapper.S | 2 +-
arch/powerpc/kernel/vdso64/vdso64_wrapper.S | 2 +-
arch/powerpc/mm/hash_utils_64.c | 14 +
arch/powerpc/mm/pgtable_64.c | 12 +-
arch/powerpc/mm/subpage-prot.c | 2 +-
arch/powerpc/perf/core-book3s.c | 5 +-
arch/powerpc/perf/power8-pmu.c | 144 ++
arch/powerpc/platforms/cell/ras.c | 3 +-
arch/powerpc/platforms/powernv/eeh-ioda.c | 128 +-
arch/powerpc/platforms/powernv/eeh-powernv.c | 2 +-
arch/powerpc/platforms/powernv/opal-xscom.c | 21 +-
arch/powerpc/platforms/powernv/pci-ioda.c | 84 +
arch/powerpc/platforms/powernv/pci.c | 230 +--
arch/powerpc/platforms/powernv/pci.h | 6 +-
arch/powerpc/platforms/powernv/powernv.h | 8 +
arch/powerpc/platforms/powernv/setup.c | 9 +
arch/powerpc/platforms/pseries/Kconfig | 1 +
arch/powerpc/platforms/pseries/eeh_pseries.c | 2 +-
arch/powerpc/platforms/pseries/hotplug-cpu.c | 22 +-
arch/powerpc/platforms/pseries/pci.c | 22 +-
arch/powerpc/platforms/pseries/setup.c | 3 +-
arch/powerpc/sysdev/mpic.c | 38 +-
arch/powerpc/xmon/xmon.c | 24 +-
arch/s390/appldata/appldata_base.c | 1 +
arch/s390/crypto/aes_s390.c | 65 +-
arch/s390/crypto/des_s390.c | 95 +-
arch/s390/kernel/compat_wrapper.S | 2 +-
arch/s390/kernel/head64.S | 7 +-
arch/s390/mm/page-states.c | 10 +
arch/s390/pci/pci_dma.c | 8 +-
arch/sh/boards/mach-ecovec24/setup.c | 4 +-
arch/sh/boards/mach-se/7724/setup.c | 4 +-
arch/sh/include/cpu-sh2/cpu/cache.h | 2 +-
arch/sh/include/cpu-sh2a/cpu/cache.h | 4 +-
arch/sh/include/cpu-sh3/cpu/cache.h | 2 +-
arch/sh/include/cpu-sh4/cpu/cache.h | 2 +-
arch/sh/kernel/cpu/init.c | 4 +-
arch/sh/mm/cache-debugfs.c | 2 +-
arch/sh/mm/cache-sh2.c | 4 +-
arch/sh/mm/cache-sh2a.c | 6 +-
arch/sh/mm/cache-sh4.c | 4 +-
arch/sh/mm/cache-shx3.c | 4 +-
arch/sh/mm/cache.c | 4 +-
arch/sparc/Kconfig | 2 +-
arch/sparc/mm/srmmu.c | 2 +
arch/x86/Kconfig | 7 +-
arch/x86/Kconfig.cpu | 4 -
arch/x86/Kconfig.debug | 1 +
arch/x86/boot/compressed/aslr.c | 9 +-
arch/x86/include/asm/amd_nb.h | 2 +-
arch/x86/include/asm/barrier.h | 8 +-
arch/x86/include/asm/efi.h | 3 +
arch/x86/include/asm/io.h | 2 +-
arch/x86/include/asm/pgtable.h | 14 +-
arch/x86/include/asm/spinlock.h | 5 +-
arch/x86/include/asm/tlbflush.h | 6 +-
arch/x86/include/asm/tsc.h | 2 +-
arch/x86/include/asm/xen/page.h | 5 +-
arch/x86/kernel/amd_nb.c | 2 +-
arch/x86/kernel/cpu/amd.c | 5 +-
arch/x86/kernel/cpu/centaur.c | 272 ---
arch/x86/kernel/cpu/common.c | 7 +-
arch/x86/kernel/cpu/intel.c | 10 +-
arch/x86/kernel/cpu/microcode/amd_early.c | 43 +-
arch/x86/kernel/cpu/mtrr/generic.c | 4 +-
arch/x86/kernel/cpu/perf_event.c | 11 +-
arch/x86/kernel/cpu/perf_event.h | 1 +
arch/x86/kernel/cpu/perf_event_intel.c | 11 +-
arch/x86/kernel/cpu/perf_event_intel_uncore.c | 13 +-
arch/x86/kernel/cpu/perf_event_p6.c | 48 +-
arch/x86/kernel/ftrace.c | 83 +-
arch/x86/kernel/head_32.S | 7 +-
arch/x86/kernel/head_64.S | 6 +-
arch/x86/kernel/i387.c | 15 +-
arch/x86/kernel/irq.c | 9 +-
arch/x86/kernel/machine_kexec_64.c | 2 +
arch/x86/kernel/pci-dma.c | 4 +-
arch/x86/kernel/quirks.c | 39 +-
arch/x86/kernel/setup.c | 10 +-
arch/x86/kernel/tsc.c | 11 +-
arch/x86/kernel/tsc_msr.c | 30 +-
arch/x86/kvm/mmu.c | 1 +
arch/x86/kvm/svm.c | 6 +-
arch/x86/kvm/vmx.c | 2 +-
arch/x86/kvm/x86.c | 2 +-
arch/x86/mm/fault.c | 61 +-
arch/x86/mm/numa.c | 21 +-
arch/x86/mm/numa_32.c | 2 +
arch/x86/mm/srat.c | 16 +-
arch/x86/mm/tlb.c | 52 +-
arch/x86/net/bpf_jit.S | 2 +-
arch/x86/platform/efi/efi-bgrt.c | 12 +-
arch/x86/platform/efi/efi.c | 25 +-
arch/x86/platform/efi/efi_32.c | 6 +
arch/x86/platform/efi/efi_64.c | 9 +
arch/x86/um/asm/barrier.h | 4 -
arch/x86/xen/enlighten.c | 12 +
arch/x86/xen/mmu.c | 4 +-
arch/x86/xen/p2m.c | 17 +-
arch/xtensa/Kconfig | 3 +-
arch/xtensa/boot/dts/xtfpga.dtsi | 12 +-
arch/xtensa/include/asm/io.h | 2 +-
arch/xtensa/include/asm/traps.h | 44 +-
arch/xtensa/include/asm/vectors.h | 2 +-
arch/xtensa/include/uapi/asm/unistd.h | 7 +-
arch/xtensa/kernel/entry.S | 449 ++---
arch/xtensa/kernel/setup.c | 2 +
arch/xtensa/kernel/time.c | 1 +
arch/xtensa/kernel/vectors.S | 2 +-
arch/xtensa/kernel/xtensa_ksyms.c | 2 -
arch/xtensa/mm/init.c | 13 +-
arch/xtensa/mm/mmu.c | 2 +-
arch/xtensa/platforms/xtfpga/setup.c | 7 +-
arch/xtensa/variants/fsf/include/variant/tie.h | 9 +-
block/blk-core.c | 20 +-
block/blk-exec.c | 2 +-
block/blk-flush.c | 105 +-
block/blk-lib.c | 8 +
block/blk-merge.c | 91 +-
block/blk-mq-cpu.c | 14 +-
block/blk-mq-tag.c | 2 +-
block/blk-mq.c | 237 ++-
block/blk-mq.h | 5 +-
block/blk-sysfs.c | 2 +
block/blk-timeout.c | 2 +-
block/blk.h | 2 +-
drivers/acpi/ac.c | 2 +
drivers/acpi/battery.c | 4 +-
drivers/acpi/blacklist.c | 58 -
drivers/acpi/button.c | 2 +
drivers/acpi/container.c | 5 +-
drivers/acpi/dock.c | 13 +-
drivers/acpi/ec.c | 64 +
drivers/acpi/fan.c | 3 +
drivers/acpi/pci_irq.c | 1 +
drivers/acpi/proc.c | 2 +-
drivers/acpi/processor_throttling.c | 69 +-
drivers/acpi/resource.c | 10 +
drivers/acpi/sbs.c | 4 +-
drivers/acpi/scan.c | 6 +-
drivers/acpi/sleep.c | 32 +-
drivers/acpi/thermal.c | 2 +
drivers/acpi/utils.c | 4 -
drivers/acpi/video.c | 147 +-
drivers/acpi/video_detect.c | 8 -
drivers/ata/Kconfig | 1 +
drivers/ata/ahci.c | 18 +-
drivers/ata/libata-core.c | 3 +-
drivers/ata/libata-pmp.c | 7 +-
drivers/ata/pata_imx.c | 8 +-
drivers/ata/sata_mv.c | 16 +-
drivers/ata/sata_sil.c | 1 +
drivers/base/component.c | 8 +
drivers/base/dma-buf.c | 25 +-
drivers/base/firmware_class.c | 1 +
drivers/base/regmap/regmap.c | 12 +
drivers/block/aoe/aoecmd.c | 4 +-
drivers/block/mtip32xx/mtip32xx.h | 2 +-
drivers/block/null_blk.c | 97 +-
drivers/block/nvme-core.c | 610 +++++--
drivers/block/nvme-scsi.c | 147 ++
drivers/block/virtio_blk.c | 7 +-
drivers/block/xen-blkback/blkback.c | 81 +-
drivers/block/xen-blkback/common.h | 5 +-
drivers/block/xen-blkback/xenbus.c | 14 +
drivers/block/xen-blkfront.c | 11 +-
drivers/block/zram/zram_drv.c | 2 +
drivers/char/Kconfig | 1 +
drivers/char/raw.c | 2 +-
drivers/char/virtio_console.c | 9 +-
drivers/clk/at91/clk-master.c | 2 +-
drivers/clk/clk-nomadik.c | 3 +
drivers/clk/clk.c | 13 +-
drivers/clk/keystone/gate.c | 1 +
drivers/clk/mvebu/armada-370.c | 21 +-
drivers/clk/mvebu/armada-xp.c | 20 +-
drivers/clk/mvebu/dove.c | 19 +-
drivers/clk/mvebu/kirkwood.c | 34 +-
drivers/clk/shmobile/clk-rcar-gen2.c | 48 +-
drivers/clk/tegra/clk-divider.c | 2 +-
drivers/clk/tegra/clk-id.h | 4 +
drivers/clk/tegra/clk-tegra-periph.c | 10 +-
drivers/clk/tegra/clk-tegra-super-gen4.c | 2 +-
drivers/clk/tegra/clk-tegra114.c | 8 +-
drivers/clk/tegra/clk-tegra124.c | 48 +-
drivers/clk/tegra/clk-tegra20.c | 2 +
drivers/clocksource/bcm_kona_timer.c | 54 +-
drivers/cpufreq/cpufreq.c | 58 +-
drivers/cpufreq/intel_pstate.c | 61 +-
drivers/cpufreq/powernow-k8.c | 10 +-
drivers/crypto/nx/nx-842.c | 29 +-
drivers/dma/Kconfig | 1 +
drivers/dma/imx-sdma.c | 1 +
drivers/dma/ioat/dma.c | 52 +-
drivers/dma/ioat/dma.h | 1 +
drivers/dma/ioat/dma_v2.c | 11 +-
drivers/dma/ioat/dma_v3.c | 3 +
drivers/dma/mv_xor.c | 24 +-
drivers/dma/ste_dma40.c | 4 +-
drivers/edac/edac_mc.c | 13 +-
drivers/edac/edac_mc_sysfs.c | 10 +-
drivers/edac/edac_module.h | 2 +-
drivers/edac/i7300_edac.c | 38 +-
drivers/edac/i7core_edac.c | 9 +-
drivers/extcon/extcon-arizona.c | 12 -
drivers/firewire/core-device.c | 22 +-
drivers/firewire/net.c | 6 +-
drivers/firewire/ohci.c | 15 +-
drivers/firewire/sbp2.c | 17 +-
drivers/fmc/fmc-write-eeprom.c | 2 +-
drivers/gpio/Kconfig | 1 +
drivers/gpio/gpio-bcm-kona.c | 4 +-
drivers/gpio/gpio-clps711x.c | 1 +
drivers/gpio/gpio-intel-mid.c | 4 +-
drivers/gpio/gpio-xtensa.c | 16 +
drivers/gpu/drm/armada/armada_drv.c | 10 +-
drivers/gpu/drm/ast/ast_fb.c | 2 +-
drivers/gpu/drm/bochs/Kconfig | 1 +
drivers/gpu/drm/cirrus/cirrus_fbdev.c | 2 +-
drivers/gpu/drm/drm_ioctl.c | 12 +
drivers/gpu/drm/exynos/Kconfig | 4 +-
drivers/gpu/drm/exynos/exynos_drm_drv.c | 14 +-
drivers/gpu/drm/exynos/exynos_drm_g2d.c | 2 +-
drivers/gpu/drm/exynos/exynos_drm_ipp.c | 3 +-
drivers/gpu/drm/exynos/exynos_hdmi.c | 66 +-
drivers/gpu/drm/i2c/tda998x_drv.c | 19 +-
drivers/gpu/drm/i915/i915_drv.c | 23 +-
drivers/gpu/drm/i915/i915_drv.h | 8 +
drivers/gpu/drm/i915/i915_gem_stolen.c | 19 +-
drivers/gpu/drm/i915/i915_gpu_error.c | 5 +-
drivers/gpu/drm/i915/i915_irq.c | 3 +-
drivers/gpu/drm/i915/intel_display.c | 22 +-
drivers/gpu/drm/i915/intel_dp.c | 31 +-
drivers/gpu/drm/i915/intel_hdmi.c | 6 +-
drivers/gpu/drm/i915/intel_i2c.c | 7 -
drivers/gpu/drm/i915/intel_opregion.c | 9 +-
drivers/gpu/drm/i915/intel_panel.c | 4 +-
drivers/gpu/drm/i915/intel_pm.c | 6 +-
drivers/gpu/drm/i915/intel_ringbuffer.c | 21 +
drivers/gpu/drm/i915/intel_ringbuffer.h | 1 +
drivers/gpu/drm/mgag200/mgag200_fb.c | 2 +-
drivers/gpu/drm/mgag200/mgag200_mode.c | 4 +-
drivers/gpu/drm/msm/mdp/mdp4/mdp4_crtc.c | 179 +-
drivers/gpu/drm/msm/mdp/mdp4/mdp4_plane.c | 4 +-
drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c | 7 +-
drivers/gpu/drm/msm/msm_gem.c | 2 +-
drivers/gpu/drm/msm/msm_gem_submit.c | 9 +-
drivers/gpu/drm/msm/msm_gpu.c | 3 -
drivers/gpu/drm/nouveau/Makefile | 1 +
drivers/gpu/drm/nouveau/core/engine/device/nv40.c | 10 +-
drivers/gpu/drm/nouveau/core/engine/disp/nv50.c | 2 +-
drivers/gpu/drm/nouveau/core/engine/fifo/nve0.c | 2 +-
drivers/gpu/drm/nouveau/core/engine/graph/nv50.c | 2 +-
drivers/gpu/drm/nouveau/core/include/subdev/mc.h | 1 +
drivers/gpu/drm/nouveau/core/subdev/bios/base.c | 4 +
drivers/gpu/drm/nouveau/core/subdev/fb/nv1a.c | 2 +-
drivers/gpu/drm/nouveau/core/subdev/mc/nv04.h | 1 +
drivers/gpu/drm/nouveau/core/subdev/mc/nv44.c | 2 +-
drivers/gpu/drm/nouveau/core/subdev/mc/nv4c.c | 45 +
drivers/gpu/drm/nouveau/nouveau_acpi.c | 26 +-
drivers/gpu/drm/nouveau/nouveau_bo.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_drm.c | 3 +
drivers/gpu/drm/nouveau/nouveau_vga.c | 4 +-
drivers/gpu/drm/radeon/atombios_crtc.c | 31 +-
drivers/gpu/drm/radeon/atombios_encoders.c | 9 +-
drivers/gpu/drm/radeon/btc_dpm.c | 32 +
drivers/gpu/drm/radeon/btcd.h | 4 +
drivers/gpu/drm/radeon/cik.c | 10 +-
drivers/gpu/drm/radeon/cik_sdma.c | 14 +-
drivers/gpu/drm/radeon/dce6_afmt.c | 15 +-
drivers/gpu/drm/radeon/evergreen.c | 7 +-
drivers/gpu/drm/radeon/evergreen_hdmi.c | 26 +-
drivers/gpu/drm/radeon/evergreen_smc.h | 2 +-
drivers/gpu/drm/radeon/kv_dpm.c | 2 +-
drivers/gpu/drm/radeon/ni.c | 3 +-
drivers/gpu/drm/radeon/ni_dpm.c | 10 +-
drivers/gpu/drm/radeon/r100.c | 2 -
drivers/gpu/drm/radeon/r300.c | 2 -
drivers/gpu/drm/radeon/r420.c | 2 -
drivers/gpu/drm/radeon/r520.c | 2 -
drivers/gpu/drm/radeon/r600.c | 7 +-
drivers/gpu/drm/radeon/r600_audio.c | 14 +-
drivers/gpu/drm/radeon/r600_cs.c | 18 +-
drivers/gpu/drm/radeon/r600_hdmi.c | 15 +-
drivers/gpu/drm/radeon/radeon.h | 10 +-
drivers/gpu/drm/radeon/radeon_asic.c | 2 +-
drivers/gpu/drm/radeon/radeon_asic.h | 2 +
drivers/gpu/drm/radeon/radeon_atpx_handler.c | 3 +-
drivers/gpu/drm/radeon/radeon_device.c | 5 +-
drivers/gpu/drm/radeon/radeon_display.c | 2 +
drivers/gpu/drm/radeon/radeon_drv.c | 3 +-
drivers/gpu/drm/radeon/radeon_kms.c | 16 +-
drivers/gpu/drm/radeon/radeon_ring.c | 2 +-
drivers/gpu/drm/radeon/radeon_semaphore.c | 19 +-
drivers/gpu/drm/radeon/radeon_ttm.c | 5 +-
drivers/gpu/drm/radeon/radeon_uvd.c | 2 +
drivers/gpu/drm/radeon/reg_srcs/r600 | 1 +
drivers/gpu/drm/radeon/rs400.c | 2 -
drivers/gpu/drm/radeon/rs600.c | 2 -
drivers/gpu/drm/radeon/rs690.c | 2 -
drivers/gpu/drm/radeon/rv515.c | 2 -
drivers/gpu/drm/radeon/rv770.c | 5 +-
drivers/gpu/drm/radeon/rv770_dpm.c | 14 +-
drivers/gpu/drm/radeon/si.c | 7 +-
drivers/gpu/drm/radeon/si_dpm.c | 5 +-
drivers/gpu/drm/radeon/sumo_dpm.c | 2 +-
drivers/gpu/drm/radeon/trinity_dpm.c | 3 +-
drivers/gpu/drm/radeon/uvd_v2_2.c | 1 -
drivers/gpu/drm/tegra/drm.c | 2 +-
drivers/gpu/drm/tegra/rgb.c | 11 +
drivers/gpu/drm/ttm/ttm_agp_backend.c | 1 +
drivers/gpu/drm/ttm/ttm_bo.c | 8 +-
drivers/gpu/drm/ttm/ttm_bo_vm.c | 12 +-
drivers/gpu/drm/ttm/ttm_object.c | 2 +-
drivers/gpu/drm/ttm/ttm_tt.c | 3 +
drivers/gpu/drm/vmwgfx/svga3d_reg.h | 153 +-
drivers/gpu/drm/vmwgfx/svga3d_surfacedefs.h | 11 +-
drivers/gpu/drm/vmwgfx/svga_reg.h | 9 +-
drivers/gpu/drm/vmwgfx/vmwgfx_context.c | 141 +-
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 10 +
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 38 +-
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 337 +++-
drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c | 96 +-
drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 36 +-
drivers/gpu/drm/vmwgfx/vmwgfx_resource.c | 14 +-
drivers/gpu/drm/vmwgfx/vmwgfx_shader.c | 469 ++++-
drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 24 +-
drivers/gpu/host1x/job.c | 2 +-
drivers/hid/hid-apple.c | 3 +
drivers/hid/hid-core.c | 3 +
drivers/hid/hid-hyperv.c | 11 +-
drivers/hid/hid-ids.h | 8 +
drivers/hid/hid-input.c | 2 +-
drivers/hid/hid-microsoft.c | 4 +
drivers/hid/hid-multitouch.c | 5 +
drivers/hid/hid-sensor-hub.c | 3 +
drivers/hid/i2c-hid/i2c-hid.c | 2 +-
drivers/hid/usbhid/hid-quirks.c | 1 +
drivers/hv/connection.c | 13 +-
drivers/hwmon/da9055-hwmon.c | 4 -
drivers/hwmon/max1668.c | 2 +-
drivers/hwmon/ntc_thermistor.c | 6 +-
drivers/hwmon/pmbus/pmbus_core.c | 68 +-
drivers/i2c/busses/Kconfig | 2 +-
drivers/i2c/busses/i2c-mv64xxx.c | 33 +-
drivers/iio/accel/bma180.c | 16 +-
drivers/iio/adc/max1363.c | 2 +-
drivers/iio/gyro/Kconfig | 2 +-
drivers/iio/gyro/st_gyro.h | 1 -
drivers/iio/gyro/st_gyro_core.c | 9 +-
drivers/iio/gyro/st_gyro_i2c.c | 1 -
drivers/iio/gyro/st_gyro_spi.c | 1 -
drivers/iio/imu/adis16400.h | 1 +
drivers/iio/imu/adis16400_core.c | 10 +-
drivers/iio/light/cm32181.c | 16 +-
drivers/iio/light/cm36651.c | 45 +-
drivers/iio/light/tsl2563.c | 16 +-
drivers/iio/magnetometer/ak8975.c | 16 +-
drivers/iio/magnetometer/mag3110.c | 8 +-
drivers/infiniband/hw/amso1100/c2.c | 4 +-
drivers/infiniband/hw/amso1100/c2_rnic.c | 3 +-
drivers/infiniband/hw/cxgb4/cm.c | 1 +
drivers/infiniband/hw/mlx4/main.c | 189 ++-
drivers/infiniband/hw/mlx5/Kconfig | 2 +-
drivers/infiniband/hw/mlx5/main.c | 26 +-
drivers/infiniband/hw/mlx5/qp.c | 18 +-
drivers/infiniband/hw/mlx5/user.h | 7 +
drivers/infiniband/hw/nes/nes.c | 5 +-
drivers/infiniband/hw/ocrdma/ocrdma_main.c | 2 +-
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 4 +-
drivers/infiniband/hw/qib/qib_iba7322.c | 5 +
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c | 9 +-
drivers/infiniband/ulp/iser/iser_initiator.c | 3 +-
drivers/infiniband/ulp/iser/iser_verbs.c | 10 +-
drivers/infiniband/ulp/isert/ib_isert.c | 181 +-
drivers/infiniband/ulp/isert/ib_isert.h | 7 +-
drivers/infiniband/ulp/srpt/ib_srpt.c | 14 +-
drivers/input/misc/arizona-haptics.c | 19 -
drivers/iommu/arm-smmu.c | 105 +-
drivers/iommu/omap-iommu-debug.c | 4 +-
drivers/irqchip/Makefile | 1 +
drivers/irqchip/irq-armada-370-xp.c | 4 +-
drivers/irqchip/irq-metag-ext.c | 2 +-
drivers/irqchip/irq-metag.c | 2 +-
drivers/irqchip/irq-orion.c | 22 +-
drivers/irqchip/irq-zevio.c | 127 ++
drivers/isdn/hisax/q931.c | 2 +-
drivers/md/Kconfig | 10 -
drivers/md/bcache/bcache.h | 4 +-
drivers/md/bcache/bset.c | 7 +-
drivers/md/bcache/btree.c | 4 +-
drivers/md/bcache/extents.c | 2 +-
drivers/md/bcache/request.c | 6 +-
drivers/md/bcache/sysfs.c | 2 +-
drivers/md/dm-cache-policy-mq.c | 4 +-
drivers/md/dm-cache-target.c | 24 +-
drivers/md/dm-io.c | 23 +-
drivers/md/dm-mpath.c | 7 +-
drivers/md/dm-raid1.c | 3 +
drivers/md/dm-snap-persistent.c | 3 +
drivers/md/dm-thin-metadata.c | 58 +-
drivers/md/dm-thin-metadata.h | 21 +-
drivers/md/dm-thin.c | 343 +++-
drivers/md/persistent-data/Kconfig | 10 +
drivers/md/persistent-data/dm-space-map-metadata.c | 115 +-
drivers/md/persistent-data/dm-space-map-metadata.h | 11 +
drivers/md/raid1.c | 13 +-
drivers/md/raid5.c | 90 +-
drivers/media/dvb-frontends/cx24117.c | 10 +-
drivers/media/dvb-frontends/nxt200x.c | 2 +-
drivers/media/i2c/adv7842.c | 2 +-
drivers/media/i2c/s5k5baf.c | 30 +-
drivers/media/pci/bt8xx/bttv-cards.c | 2 +-
drivers/media/pci/bt8xx/bttv-gpio.c | 2 +-
drivers/media/pci/saa7134/saa7134-cards.c | 2 +-
drivers/media/platform/exynos4-is/fimc-core.c | 5 +-
drivers/media/platform/exynos4-is/fimc-lite.c | 7 +-
drivers/media/platform/s5p-jpeg/jpeg-core.c | 8 +-
drivers/media/usb/dvb-usb-v2/af9035.c | 2 +
drivers/media/usb/dvb-usb-v2/mxl111sf-demod.c | 4 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-demod.h | 2 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-gpio.c | 2 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-gpio.h | 2 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-i2c.c | 2 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-i2c.h | 2 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-phy.c | 2 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-phy.h | 2 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-reg.h | 2 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.c | 4 +-
drivers/media/usb/dvb-usb-v2/mxl111sf-tuner.h | 4 +-
drivers/media/usb/dvb-usb-v2/mxl111sf.c | 6 +-
drivers/media/usb/dvb-usb-v2/mxl111sf.h | 2 +-
drivers/media/usb/hdpvr/hdpvr-core.c | 4 +-
drivers/media/v4l2-core/v4l2-dv-timings.c | 1 +
drivers/media/v4l2-core/videobuf-dma-contig.c | 12 +-
drivers/media/v4l2-core/videobuf-dma-sg.c | 10 +-
drivers/media/v4l2-core/videobuf-vmalloc.c | 10 +-
drivers/media/v4l2-core/videobuf2-core.c | 5 +
drivers/message/i2o/i2o_config.c | 4 +-
drivers/mfd/da9055-i2c.c | 12 +-
drivers/mfd/max14577.c | 2 +
drivers/mfd/max8997.c | 6 +-
drivers/mfd/max8998.c | 6 +-
drivers/mfd/sec-core.c | 2 +
drivers/mfd/tps65217.c | 4 +-
drivers/mfd/wm8994-core.c | 2 +-
drivers/misc/atmel-ssc.c | 6 +
drivers/misc/genwqe/card_dev.c | 1 +
drivers/misc/mei/client.c | 15 +-
drivers/misc/mic/host/mic_virtio.c | 3 +-
drivers/misc/sgi-gru/grukdump.c | 11 +-
drivers/misc/sgi-xp/xpc_uv.c | 2 +-
drivers/mmc/card/queue.c | 2 +-
drivers/mtd/nand/nand_base.c | 2 +-
drivers/mtd/nand/omap2.c | 61 +-
drivers/mtd/ubi/fastmap.c | 8 +-
drivers/net/Kconfig | 2 +-
drivers/net/bonding/bond_3ad.c | 22 +-
drivers/net/bonding/bond_3ad.h | 1 +
drivers/net/bonding/bond_alb.c | 2 +-
drivers/net/bonding/bond_main.c | 159 +-
drivers/net/bonding/bond_options.c | 3 +-
drivers/net/bonding/bonding.h | 47 +-
drivers/net/can/Kconfig | 2 +-
drivers/net/can/dev.c | 15 +-
drivers/net/can/flexcan.c | 179 +-
drivers/net/can/janz-ican3.c | 20 +-
drivers/net/can/usb/kvaser_usb.c | 2 +
drivers/net/can/vcan.c | 9 +-
drivers/net/ethernet/3com/3c59x.c | 2 -
drivers/net/ethernet/allwinner/sun4i-emac.c | 3 +
drivers/net/ethernet/atheros/alx/main.c | 1 +
drivers/net/ethernet/broadcom/b44.c | 14 +-
drivers/net/ethernet/broadcom/bnx2.c | 39 +-
drivers/net/ethernet/broadcom/bnx2.h | 5 +
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 13 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 4 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 12 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c | 6 +-
drivers/net/ethernet/broadcom/tg3.c | 20 +-
drivers/net/ethernet/broadcom/tg3.h | 6 +-
drivers/net/ethernet/brocade/bna/bfa_ioc.c | 2 +-
drivers/net/ethernet/brocade/bna/bnad.c | 40 +-
drivers/net/ethernet/cadence/macb.c | 16 +-
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c | 1 +
drivers/net/ethernet/dec/tulip/tulip_core.c | 1 +
drivers/net/ethernet/emulex/benet/be.h | 4 +-
drivers/net/ethernet/emulex/benet/be_main.c | 84 +-
drivers/net/ethernet/ethoc.c | 138 +-
drivers/net/ethernet/freescale/fec_main.c | 31 +-
drivers/net/ethernet/ibm/ibmveth.c | 25 +-
drivers/net/ethernet/ibm/ibmveth.h | 1 -
drivers/net/ethernet/intel/e100.c | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 6 +-
drivers/net/ethernet/lantiq_etop.c | 2 +-
drivers/net/ethernet/marvell/Kconfig | 6 +-
drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 10 +
drivers/net/ethernet/mellanox/mlx4/en_tx.c | 4 +-
drivers/net/ethernet/mellanox/mlx4/fw.c | 11 +-
drivers/net/ethernet/mellanox/mlx4/main.c | 14 +-
drivers/net/ethernet/mellanox/mlx4/mlx4.h | 4 +-
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 6 +-
drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 2 +-
drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 +-
drivers/net/ethernet/neterion/vxge/vxge-main.c | 6 -
.../net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 1 +
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c | 4 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 5 +-
.../net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c | 9 -
drivers/net/ethernet/realtek/r8169.c | 4 +-
drivers/net/ethernet/sfc/ptp.c | 7 +
drivers/net/ethernet/sfc/tx.c | 2 +
drivers/net/ethernet/stmicro/stmmac/Kconfig | 11 +
drivers/net/ethernet/stmicro/stmmac/Makefile | 1 +
drivers/net/ethernet/stmicro/stmmac/chain_mode.c | 2 +-
drivers/net/ethernet/stmicro/stmmac/common.h | 20 +-
drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c | 330 ++++
drivers/net/ethernet/stmicro/stmmac/ring_mode.c | 9 +-
drivers/net/ethernet/stmicro/stmmac/stmmac.h | 3 +
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 93 +-
.../net/ethernet/stmicro/stmmac/stmmac_platform.c | 5 +
drivers/net/ethernet/ti/cpsw.c | 31 +-
drivers/net/ethernet/tile/tilegx.c | 2 +-
drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 13 +-
drivers/net/hyperv/netvsc_drv.c | 53 +-
drivers/net/hyperv/rndis_filter.c | 21 +-
drivers/net/ieee802154/at86rf230.c | 11 +-
drivers/net/irda/Kconfig | 7 -
drivers/net/irda/Makefile | 1 -
drivers/net/irda/ep7211-sir.c | 70 -
drivers/net/irda/irtty-sir.c | 1 -
drivers/net/macvlan.c | 12 +-
drivers/net/phy/dp83640.c | 32 +-
drivers/net/phy/mdio-sun4i.c | 3 +
drivers/net/phy/phy.c | 11 +-
drivers/net/phy/phy_device.c | 54 +-
drivers/net/team/team.c | 2 +-
drivers/net/tun.c | 6 +-
drivers/net/usb/Kconfig | 15 +
drivers/net/usb/Makefile | 3 +-
drivers/net/usb/asix_devices.c | 3 +-
drivers/net/usb/ax88179_178a.c | 46 +-
drivers/net/usb/cdc_ether.c | 7 +
drivers/net/usb/gl620a.c | 4 +
drivers/net/usb/hso.c | 32 +-
drivers/net/usb/mcs7830.c | 5 +-
drivers/net/usb/net1080.c | 4 +
drivers/net/usb/qmi_wwan.c | 11 +-
drivers/net/usb/r8152.c | 32 +-
drivers/net/usb/r815x.c | 248 ---
drivers/net/usb/rndis_host.c | 4 +
drivers/net/usb/smsc75xx.c | 4 +
drivers/net/usb/smsc95xx.c | 4 +
drivers/net/usb/sr9800.c | 874 ++++++++++
drivers/net/usb/sr9800.h | 202 +++
drivers/net/usb/usbnet.c | 25 +-
drivers/net/veth.c | 3 +-
drivers/net/virtio_net.c | 3 +-
drivers/net/vmxnet3/vmxnet3_drv.c | 19 +-
drivers/net/vxlan.c | 3 -
drivers/net/wan/dlci.c | 5 -
drivers/net/wireless/ath/ar5523/ar5523.c | 2 +-
drivers/net/wireless/ath/ath5k/phy.c | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 4 +
.../net/wireless/ath/ath9k/ar9462_2p0_initvals.h | 4 +-
drivers/net/wireless/ath/ath9k/htc.h | 2 +
drivers/net/wireless/ath/ath9k/htc_drv_init.c | 8 +-
drivers/net/wireless/ath/ath9k/htc_drv_main.c | 63 +-
drivers/net/wireless/ath/ath9k/hw.c | 13 +-
drivers/net/wireless/ath/ath9k/init.c | 8 +-
drivers/net/wireless/ath/ath9k/recv.c | 70 +-
drivers/net/wireless/ath/ath9k/xmit.c | 13 +-
drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 14 +-
drivers/net/wireless/hostap/hostap_ap.c | 2 +-
drivers/net/wireless/hostap/hostap_proc.c | 2 +-
drivers/net/wireless/iwlwifi/dvm/mac80211.c | 22 +-
drivers/net/wireless/iwlwifi/dvm/sta.c | 1 +
drivers/net/wireless/iwlwifi/dvm/tx.c | 14 +-
drivers/net/wireless/iwlwifi/iwl-drv.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-modparams.h | 11 +-
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c | 5 +
drivers/net/wireless/iwlwifi/mvm/bt-coex.c | 7 +-
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h | 4 +-
drivers/net/wireless/iwlwifi/mvm/mac80211.c | 24 +-
drivers/net/wireless/iwlwifi/mvm/mvm.h | 2 +-
drivers/net/wireless/iwlwifi/mvm/scan.c | 5 +-
drivers/net/wireless/iwlwifi/mvm/sta.c | 2 +-
drivers/net/wireless/iwlwifi/mvm/tx.c | 91 +-
drivers/net/wireless/iwlwifi/mvm/utils.c | 2 +
drivers/net/wireless/iwlwifi/pcie/drv.c | 8 +-
drivers/net/wireless/libertas/cfg.c | 2 +-
drivers/net/wireless/mwifiex/11ac.c | 3 +-
drivers/net/wireless/mwifiex/11n.c | 3 +-
drivers/net/wireless/mwifiex/main.c | 2 +-
drivers/net/wireless/mwifiex/pcie.c | 34 +-
drivers/net/wireless/mwifiex/scan.c | 8 +-
drivers/net/wireless/mwifiex/usb.c | 12 +-
drivers/net/wireless/mwifiex/wmm.c | 3 +-
drivers/net/wireless/rt2x00/rt2500pci.c | 5 +
drivers/net/wireless/rt2x00/rt2500usb.c | 5 +
drivers/net/wireless/rt2x00/rt2800lib.c | 5 +-
drivers/net/wireless/rtl818x/rtl8180/dev.c | 23 +-
drivers/net/wireless/rtl818x/rtl8187/rtl8187.h | 10 +-
drivers/net/wireless/rtlwifi/ps.c | 2 +-
drivers/net/wireless/rtlwifi/rtl8192ce/hw.c | 18 +-
drivers/net/wireless/ti/wl1251/rx.c | 2 +-
drivers/net/xen-netback/common.h | 6 +-
drivers/net/xen-netback/interface.c | 4 +-
drivers/net/xen-netback/netback.c | 55 +-
drivers/net/xen-netfront.c | 6 +-
drivers/of/address.c | 5 +-
drivers/of/base.c | 128 +-
drivers/of/of_mdio.c | 22 +-
drivers/of/selftest.c | 67 +
drivers/of/testcase-data/testcases.dtsi | 3 +
.../of/testcase-data}/tests-interrupts.dtsi | 0
drivers/of/testcase-data/tests-match.dtsi | 19 +
.../of/testcase-data}/tests-phandle.dtsi | 0
drivers/pci/bus.c | 2 -
drivers/pci/host/pci-mvebu.c | 11 +-
drivers/pci/hotplug/acpiphp_glue.c | 70 +-
drivers/pci/msi.c | 10 +-
drivers/pci/pci.c | 13 +
drivers/phy/Kconfig | 3 +-
drivers/phy/phy-core.c | 76 +-
drivers/phy/phy-exynos-dp-video.c | 8 +-
drivers/phy/phy-exynos-mipi-video.c | 10 +-
drivers/phy/phy-mvebu-sata.c | 10 +-
drivers/phy/phy-omap-usb2.c | 10 +-
drivers/phy/phy-twl4030-usb.c | 10 +-
drivers/pinctrl/Kconfig | 2 +-
drivers/pinctrl/core.c | 8 +-
drivers/pinctrl/pinctrl-at91.c | 10 +-
drivers/pinctrl/pinctrl-capri.c | 2 +-
drivers/pinctrl/pinctrl-imx1-core.c | 10 +-
drivers/pinctrl/pinctrl-sunxi.c | 6 +-
drivers/pinctrl/pinctrl-sunxi.h | 6 +-
drivers/pinctrl/pinctrl-tegra.c | 2 +-
drivers/pinctrl/sh-pfc/pfc-r8a7791.c | 6 +-
drivers/pinctrl/sirf/pinctrl-prima2.c | 2 +-
drivers/pinctrl/sirf/pinctrl-sirf.c | 4 +-
drivers/pinctrl/vt8500/pinctrl-wmt.c | 15 +-
drivers/pnp/pnpacpi/rsparser.c | 15 +-
drivers/power/ds2782_battery.c | 2 +-
drivers/power/isp1704_charger.c | 2 -
drivers/power/max17040_battery.c | 5 +-
drivers/pwm/pwm-lp3943.c | 4 +-
drivers/rapidio/devices/tsi721.h | 1 +
drivers/rapidio/devices/tsi721_dma.c | 27 +-
drivers/regulator/ab3100.c | 4 +-
drivers/regulator/core.c | 59 +-
drivers/regulator/da9055-regulator.c | 4 +-
drivers/regulator/da9063-regulator.c | 4 +-
drivers/regulator/max14577.c | 10 +-
drivers/regulator/s2mps11.c | 1 +
drivers/regulator/s5m8767.c | 4 +-
drivers/rtc/rtc-s3c.c | 17 +-
drivers/s390/cio/chsc.c | 1 +
drivers/s390/cio/cio.c | 40 +-
drivers/s390/cio/qdio.h | 14 +-
drivers/s390/cio/qdio_main.c | 2 +-
drivers/s390/crypto/zcrypt_msgtype6.c | 24 +-
drivers/s390/net/qeth_core_main.c | 5 +-
drivers/s390/net/qeth_l2_main.c | 3 +
drivers/s390/net/qeth_l3_main.c | 3 +
drivers/sbus/char/jsflash.c | 1 -
drivers/scsi/be2iscsi/be_main.c | 2 +-
drivers/scsi/isci/host.h | 5 +-
drivers/scsi/isci/port_config.c | 7 -
drivers/scsi/isci/task.c | 2 +-
drivers/scsi/qla2xxx/qla_def.h | 3 +-
drivers/scsi/qla2xxx/qla_isr.c | 46 +-
drivers/scsi/qla2xxx/qla_target.c | 44 +-
drivers/scsi/qla2xxx/qla_target.h | 3 +-
drivers/scsi/qla2xxx/tcm_qla2xxx.c | 158 +-
drivers/scsi/qla2xxx/tcm_qla2xxx.h | 7 +-
drivers/scsi/scsi_lib.c | 2 +-
drivers/scsi/storvsc_drv.c | 3 +
drivers/spi/Kconfig | 4 +-
drivers/spi/spi-ath79.c | 4 +-
drivers/spi/spi-atmel.c | 17 +-
drivers/spi/spi-coldfire-qspi.c | 6 +-
drivers/spi/spi-fsl-dspi.c | 6 +-
drivers/spi/spi-imx.c | 4 +-
drivers/spi/spi-nuc900.c | 2 +
drivers/spi/spi-topcliff-pch.c | 15 +-
drivers/spi/spi.c | 4 +-
drivers/staging/android/ashmem.c | 45 +-
drivers/staging/android/binder.c | 3 +-
drivers/staging/android/ion/compat_ion.c | 26 +-
drivers/staging/android/ion/ion_dummy_driver.c | 12 +-
drivers/staging/android/ion/ion_heap.c | 2 +-
drivers/staging/android/ion/ion_priv.h | 1 +
drivers/staging/android/ion/ion_system_heap.c | 6 +-
drivers/staging/android/sw_sync.h | 17 +
drivers/staging/android/sync.c | 14 +-
drivers/staging/bcm/Bcmnet.c | 2 +-
drivers/staging/comedi/drivers.c | 2 -
drivers/staging/comedi/drivers/adv_pci1710.c | 17 +-
drivers/staging/comedi/drivers/usbduxsigma.c | 6 +-
drivers/staging/cxt1e1/linux.c | 2 +
drivers/staging/dgrp/dgrp_net_ops.c | 330 ++--
drivers/staging/gdm72xx/gdm_usb.c | 3 +
drivers/staging/iio/Documentation/iio_utils.h | 6 +-
drivers/staging/iio/adc/ad799x_core.c | 13 +-
drivers/staging/iio/adc/mxs-lradc.c | 7 +-
drivers/staging/iio/impedance-analyzer/ad5933.c | 2 +-
drivers/staging/imx-drm/imx-drm-core.c | 55 +-
drivers/staging/imx-drm/imx-hdmi.c | 22 +-
drivers/staging/lustre/TODO | 5 +-
.../include/linux/libcfs/libcfs_kernelcomm.h | 2 +
.../lustre/include/linux/libcfs/libcfs_private.h | 2 +-
.../staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c | 2 +-
.../staging/lustre/lnet/klnds/socklnd/socklnd_cb.c | 5 +-
.../lustre/lustre/include/lustre/lustre_user.h | 3 +-
drivers/staging/lustre/lustre/llite/dir.c | 2 +-
drivers/staging/lustre/lustre/mdc/mdc_request.c | 6 +-
drivers/staging/media/go7007/go7007-loader.c | 4 +-
drivers/staging/netlogic/xlr_net.c | 7 +-
drivers/staging/octeon-usb/octeon-hcd.c | 273 ++-
drivers/staging/ozwpan/ozproto.c | 3 +-
drivers/staging/rtl8188eu/core/rtw_wlan_util.c | 22 +-
drivers/staging/rtl8188eu/os_dep/ioctl_linux.c | 12 +-
drivers/staging/rtl8188eu/os_dep/os_intfs.c | 2 +-
drivers/staging/rtl8188eu/os_dep/usb_intf.c | 3 +-
drivers/staging/rtl8821ae/Kconfig | 2 +-
drivers/staging/rtl8821ae/wifi.h | 2 +-
drivers/staging/usbip/userspace/libsrc/names.c | 8 +-
drivers/staging/usbip/vhci_sysfs.c | 3 +-
drivers/staging/wlags49_h2/wl_wext.c | 2 +-
drivers/target/iscsi/iscsi_target.c | 10 +-
drivers/target/iscsi/iscsi_target_erl1.c | 4 +-
drivers/target/iscsi/iscsi_target_erl2.c | 16 +-
drivers/target/iscsi/iscsi_target_tpg.c | 2 +-
drivers/target/target_core_alua.c | 2 +-
drivers/target/target_core_pr.c | 11 +-
drivers/target/target_core_sbc.c | 39 +-
drivers/target/target_core_spc.c | 4 +-
drivers/target/target_core_transport.c | 8 +-
drivers/thermal/Kconfig | 13 +-
drivers/thermal/thermal_core.c | 27 +-
drivers/thermal/x86_pkg_temp_thermal.c | 11 +-
drivers/tty/hvc/hvc_opal.c | 8 +-
drivers/tty/hvc/hvc_rtas.c | 12 +-
drivers/tty/hvc/hvc_udbg.c | 9 +-
drivers/tty/hvc/hvc_xen.c | 17 +-
drivers/tty/n_gsm.c | 11 +
drivers/tty/n_tty.c | 14 +-
drivers/tty/serial/8250/8250_core.c | 18 +
drivers/tty/serial/8250/8250_dw.c | 4 +-
drivers/tty/serial/8250/8250_pci.c | 3 +-
drivers/tty/serial/omap-serial.c | 11 +-
drivers/tty/serial/sirfsoc_uart.c | 4 +-
drivers/tty/vt/vt.c | 2 +
drivers/usb/chipidea/udc.c | 4 +-
drivers/usb/core/config.c | 4 +
drivers/usb/core/driver.c | 24 +-
drivers/usb/core/hcd.c | 1 -
drivers/usb/core/hub.c | 7 +-
drivers/usb/core/quirks.c | 4 +
drivers/usb/core/usb.h | 1 -
drivers/usb/dwc2/core.c | 2 +-
drivers/usb/dwc2/hcd.c | 11 -
drivers/usb/dwc2/platform.c | 3 +
drivers/usb/gadget/bcm63xx_udc.c | 58 +-
drivers/usb/gadget/f_fs.c | 7 +-
drivers/usb/gadget/printer.c | 2 +-
drivers/usb/gadget/s3c2410_udc.c | 2 +-
drivers/usb/host/ehci-hcd.c | 13 +-
drivers/usb/host/ehci-hub.c | 26 +-
drivers/usb/host/xhci-dbg.c | 6 +-
drivers/usb/host/xhci-mem.c | 14 +-
drivers/usb/host/xhci-pci.c | 5 +
drivers/usb/host/xhci-ring.c | 68 +-
drivers/usb/host/xhci.c | 24 +-
drivers/usb/host/xhci.h | 41 +-
drivers/usb/musb/musb_core.c | 15 +-
drivers/usb/musb/musb_host.c | 3 +
drivers/usb/musb/musb_virthub.c | 26 +-
drivers/usb/musb/omap2430.c | 2 -
drivers/usb/phy/phy-msm-usb.c | 57 +-
drivers/usb/phy/phy.c | 8 +-
drivers/usb/serial/ftdi_sio.c | 5 +
drivers/usb/serial/ftdi_sio_ids.h | 13 +
drivers/usb/serial/option.c | 6 +-
drivers/usb/serial/qcserial.c | 3 +
drivers/usb/serial/usb-serial-simple.c | 3 +-
drivers/usb/storage/Kconfig | 4 +-
drivers/usb/storage/scsiglue.c | 6 +
drivers/usb/storage/unusual_cypress.h | 2 +-
drivers/usb/storage/unusual_devs.h | 7 +
drivers/vfio/vfio_iommu_type1.c | 4 +-
drivers/vhost/net.c | 47 +-
drivers/vhost/scsi.c | 6 +
drivers/video/Kconfig | 2 +-
drivers/video/exynos/Kconfig | 3 +-
drivers/video/omap2/dss/dispc.c | 16 +-
drivers/video/omap2/dss/dpi.c | 2 +-
drivers/video/omap2/dss/sdi.c | 2 +-
drivers/vme/bridges/vme_ca91cx42.c | 4 +-
drivers/vme/bridges/vme_tsi148.c | 4 +-
drivers/watchdog/Kconfig | 1 +
drivers/watchdog/w83697hf_wdt.c | 2 +-
drivers/xen/Makefile | 1 -
drivers/xen/events/events_base.c | 2 +
drivers/xen/gntdev.c | 13 +-
drivers/xen/grant-table.c | 89 +-
drivers/xen/xencomm.c | 219 ---
fs/bio-integrity.c | 18 +-
fs/bio.c | 15 +-
fs/btrfs/check-integrity.c | 4 +-
fs/btrfs/compression.c | 2 +
fs/btrfs/disk-io.c | 5 +-
fs/btrfs/extent-tree.c | 1 +
fs/btrfs/inode.c | 4 +-
fs/btrfs/ioctl.c | 22 +-
fs/btrfs/send.c | 22 +-
fs/btrfs/super.c | 13 +-
fs/btrfs/sysfs.c | 10 +-
fs/buffer.c | 6 +-
fs/ceph/acl.c | 11 +-
fs/ceph/dir.c | 23 +-
fs/ceph/file.c | 1 +
fs/ceph/super.c | 32 +-
fs/ceph/super.h | 7 +-
fs/ceph/xattr.c | 54 +-
fs/cifs/cifsacl.c | 61 +-
fs/cifs/cifsglob.h | 13 +-
fs/cifs/cifsproto.h | 9 +-
fs/cifs/cifssmb.c | 15 +-
fs/cifs/dir.c | 2 +-
fs/cifs/file.c | 94 +-
fs/cifs/inode.c | 15 +-
fs/cifs/smb1ops.c | 9 +
fs/cifs/smb2glob.h | 3 +
fs/cifs/smb2ops.c | 14 +-
fs/cifs/smb2pdu.c | 9 +-
fs/cifs/smb2proto.h | 3 +-
fs/cifs/transport.c | 29 +
fs/cifs/xattr.c | 15 +-
fs/exec.c | 45 +-
fs/ext4/ext4.h | 2 +
fs/ext4/extents.c | 1 +
fs/ext4/file.c | 2 +-
fs/ext4/ioctl.c | 3 +-
fs/ext4/resize.c | 34 +-
fs/ext4/super.c | 20 +-
fs/file.c | 58 +-
fs/file_table.c | 1 +
fs/fs-writeback.c | 33 +-
fs/fscache/object-list.c | 5 +
fs/fscache/object.c | 3 +
fs/hfsplus/catalog.c | 41 +
fs/hfsplus/hfsplus_fs.h | 1 +
fs/hfsplus/hfsplus_raw.h | 6 +-
fs/hfsplus/inode.c | 9 +
fs/hfsplus/options.c | 2 +-
fs/jbd2/transaction.c | 6 +-
fs/jfs/acl.c | 2 +
fs/jfs/xattr.c | 14 +-
fs/kernfs/dir.c | 12 +-
fs/kernfs/mount.c | 8 +-
fs/lockd/svclock.c | 8 +
fs/namei.c | 32 +-
fs/nfs/delegation.c | 11 +-
fs/nfs/dir.c | 5 +
fs/nfs/inode.c | 14 +-
fs/nfs/internal.h | 12 +-
fs/nfs/nfs3acl.c | 34 +-
fs/nfs/nfs3proc.c | 1 +
fs/nfs/nfs4client.c | 9 +-
fs/nfs/nfs4filelayout.c | 10 +-
fs/nfs/nfs4namespace.c | 12 +-
fs/nfs/nfs4proc.c | 32 +-
fs/nfs/nfs4session.c | 25 +-
fs/nfs/nfs4session.h | 2 +-
fs/nfs/nfs4state.c | 19 +-
fs/nfsd/nfs4acl.c | 9 +-
fs/notify/dnotify/dnotify.c | 2 +-
fs/notify/fanotify/fanotify.c | 8 +-
fs/notify/fanotify/fanotify_user.c | 13 +
fs/notify/fsnotify.c | 2 +-
fs/notify/group.c | 8 +-
fs/notify/inotify/inotify.h | 2 +-
fs/notify/inotify/inotify_fsnotify.c | 3 +-
fs/notify/inotify/inotify_user.c | 14 +-
fs/notify/notification.c | 20 +-
fs/ntfs/file.c | 2 +-
fs/ocfs2/alloc.c | 40 +-
fs/ocfs2/file.c | 60 +-
fs/ocfs2/localalloc.c | 42 +
fs/ocfs2/localalloc.h | 6 +
fs/ocfs2/namei.c | 17 +
fs/ocfs2/quota_global.c | 27 +-
fs/ocfs2/quota_local.c | 4 -
fs/open.c | 4 +
fs/posix_acl.c | 18 +-
fs/proc/base.c | 1 +
fs/proc/page.c | 5 +-
fs/proc/vmcore.c | 26 +-
fs/quota/dquot.c | 14 +-
fs/read_write.c | 40 +-
fs/reiserfs/do_balan.c | 895 +++-------
fs/sync.c | 32 +-
fs/sysfs/mount.c | 5 +-
fs/udf/file.c | 14 +-
fs/udf/inode.c | 1 +
fs/xfs/xfs_file.c | 2 +-
fs/xfs/xfs_iops.c | 16 +-
fs/xfs/xfs_log_cil.c | 19 +-
fs/xfs/xfs_mount.c | 24 +-
fs/xfs/xfs_sb.c | 10 +-
fs/xfs/xfs_super.c | 2 +-
include/asm-generic/pgtable.h | 39 +
include/drm/drmP.h | 3 +
include/drm/drm_crtc.h | 3 +
include/drm/ttm/ttm_page_alloc.h | 2 +
include/dt-bindings/clock/tegra124-car.h | 4 +-
include/kvm/arm_vgic.h | 5 +
include/linux/atmel-ssc.h | 1 +
include/linux/audit.h | 3 +-
include/linux/binfmts.h | 1 -
include/linux/bio.h | 12 +
include/linux/blk-mq.h | 16 +-
include/linux/blkdev.h | 11 +-
include/linux/can/skb.h | 38 +
include/linux/ceph/ceph_fs.h | 5 +-
include/linux/cgroup.h | 2 +
include/linux/clk/ti.h | 4 +
include/linux/compiler-gcc4.h | 6 +-
include/linux/dma-buf.h | 2 +-
include/linux/file.h | 27 +-
include/linux/firewire.h | 1 +
include/linux/fs.h | 17 +-
include/linux/fsnotify_backend.h | 4 +-
include/linux/gfp.h | 4 +
include/linux/gpio/consumer.h | 4 +-
include/linux/huge_mm.h | 41 -
include/linux/hyperv.h | 2 +-
include/linux/interrupt.h | 5 +
include/linux/ipc_namespace.h | 2 -
include/linux/kernfs.h | 9 +-
include/linux/mfd/arizona/registers.h | 6 +-
include/linux/mfd/max8997-private.h | 2 +-
include/linux/mfd/max8998-private.h | 2 +-
include/linux/mfd/tps65217.h | 4 +-
include/linux/mlx5/driver.h | 3 +
include/linux/mm.h | 20 +-
include/linux/mmzone.h | 4 +-
include/linux/netdevice.h | 36 +-
include/linux/nfs_xdr.h | 7 +
include/linux/nvme.h | 6 +-
include/linux/of.h | 153 +-
include/linux/of_device.h | 4 +-
include/linux/page-flags.h | 4 +-
include/linux/pci.h | 20 +
include/linux/phy/phy.h | 14 +
include/linux/platform_data/adau1977.h | 45 +
include/linux/platform_data/asoc-s3c.h | 3 +-
include/linux/platform_data/asoc-s3c24xx_simtec.h | 3 +-
include/linux/platform_data/davinci_asp.h | 4 +-
include/linux/regmap.h | 9 +
include/linux/sched.h | 3 +-
include/linux/skbuff.h | 22 +-
include/linux/slab.h | 2 +-
include/linux/smp.h | 3 +
include/linux/spi/spi.h | 7 +-
include/linux/syscalls.h | 6 +-
include/linux/tracepoint.h | 6 +
include/linux/usb.h | 2 -
include/linux/vm_event_item.h | 4 +-
include/linux/vmstat.h | 8 +
include/linux/workqueue.h | 5 +-
include/linux/writeback.h | 2 +-
include/net/datalink.h | 2 +
include/net/dn.h | 2 +
include/net/dn_route.h | 2 +
include/net/ethoc.h | 1 +
include/net/ip_tunnels.h | 1 +
include/net/ipx.h | 11 +
include/net/net_namespace.h | 8 +
include/net/netfilter/nf_conntrack.h | 2 +
include/net/netfilter/nf_tables.h | 9 +-
include/net/netfilter/nft_reject.h | 25 +
include/net/sctp/structs.h | 14 +-
include/net/sock.h | 6 +-
include/net/tcp.h | 3 +-
include/net/xfrm.h | 11 +
include/rdma/ib_verbs.h | 3 +-
include/sound/rcar_snd.h | 36 +-
include/sound/simple_card.h | 6 +-
include/sound/soc-dai.h | 3 +
include/sound/soc-dapm.h | 48 +-
include/sound/soc.h | 137 +-
include/target/iscsi/iscsi_transport.h | 1 +
include/target/target_core_base.h | 1 -
include/trace/events/hswadsp.h | 384 +++++
include/trace/events/intel-sst.h | 148 ++
include/trace/events/power.h | 7 +-
include/trace/events/sunrpc.h | 4 +-
include/trace/events/writeback.h | 6 +-
include/uapi/asm-generic/unistd.h | 6 +-
include/uapi/drm/drm.h | 2 +
include/uapi/drm/vmwgfx_drm.h | 1 +
include/uapi/linux/btrfs.h | 1 -
include/uapi/linux/in6.h | 23 +-
include/uapi/linux/mic_ioctl.h | 2 +-
include/uapi/linux/nvme.h | 11 +
include/uapi/xen/Kbuild | 2 +
include/{ => uapi}/xen/gntalloc.h | 0
include/{ => uapi}/xen/gntdev.h | 0
include/xen/grant_table.h | 8 +-
include/xen/interface/io/blkif.h | 34 +-
include/xen/interface/xencomm.h | 41 -
include/xen/xencomm.h | 77 -
init/main.c | 4 +-
ipc/mq_sysctl.c | 18 +-
ipc/mqueue.c | 6 +-
ipc/msg.c | 2 +
kernel/audit.c | 31 +-
kernel/audit.h | 2 +-
kernel/audit_tree.c | 2 +-
kernel/audit_watch.c | 2 +-
kernel/auditfilter.c | 10 +-
kernel/auditsc.c | 2 +-
kernel/cgroup.c | 60 +-
kernel/cpuset.c | 10 +-
kernel/events/core.c | 12 +-
kernel/irq/Kconfig | 1 +
kernel/irq/devres.c | 45 +
kernel/irq/irqdesc.c | 1 +
kernel/irq/irqdomain.c | 1 +
kernel/irq/manage.c | 3 +-
kernel/kmod.c | 2 +-
kernel/power/console.c | 1 +
kernel/printk/printk.c | 2 -
kernel/profile.c | 4 +-
kernel/sched/clock.c | 4 +-
kernel/sched/core.c | 37 +-
kernel/sched/cpudeadline.c | 6 +-
kernel/sched/deadline.c | 20 +-
kernel/sched/fair.c | 10 +-
kernel/sched/rt.c | 8 +
kernel/sched/sched.h | 1 -
kernel/stop_machine.c | 2 +-
kernel/time/jiffies.c | 6 +
kernel/time/sched_clock.c | 46 +-
kernel/time/tick-broadcast.c | 1 +
kernel/trace/ring_buffer.c | 7 +
kernel/trace/trace_events.c | 10 +
kernel/tracepoint.c | 7 +-
kernel/user_namespace.c | 2 +-
kernel/workqueue.c | 7 +
lib/Kconfig.debug | 2 +-
lib/Makefile | 1 +
lib/dma-debug.c | 131 +-
lib/percpu_ida.c | 7 +-
lib/radix-tree.c | 4 +-
mm/Kconfig | 4 +-
mm/compaction.c | 20 +-
mm/filemap.c | 4 +-
mm/huge_memory.c | 20 +-
mm/ksm.c | 2 +-
mm/memcontrol.c | 20 +-
mm/memory-failure.c | 8 +-
mm/memory.c | 15 +-
mm/migrate.c | 11 +-
mm/mprotect.c | 25 +-
mm/page-writeback.c | 5 +-
mm/page_alloc.c | 30 +-
mm/slub.c | 38 +-
mm/swap.c | 4 +-
mm/swap_state.c | 63 +-
mm/swapfile.c | 11 +-
mm/vmpressure.c | 1 +
mm/vmstat.c | 4 +-
net/8021q/vlan_dev.c | 3 +
net/9p/client.c | 2 +-
net/9p/trans_virtio.c | 5 +-
net/batman-adv/bat_iv_ogm.c | 30 +-
net/batman-adv/hard-interface.c | 22 +-
net/batman-adv/originator.c | 36 +
net/batman-adv/originator.h | 4 +
net/batman-adv/routing.c | 4 +-
net/batman-adv/send.c | 9 +-
net/batman-adv/translation-table.c | 23 +-
net/bluetooth/hidp/core.c | 16 +-
net/bluetooth/hidp/hidp.h | 4 +
net/bridge/br_device.c | 54 +-
net/bridge/br_fdb.c | 137 +-
net/bridge/br_if.c | 6 +-
net/bridge/br_input.c | 4 +-
net/bridge/br_multicast.c | 33 +-
net/bridge/br_private.h | 13 +-
net/bridge/br_stp_if.c | 2 +
net/bridge/br_vlan.c | 27 +-
net/caif/caif_dev.c | 1 +
net/caif/cfsrvl.c | 1 +
net/can/af_can.c | 3 +-
net/can/bcm.c | 4 +-
net/can/raw.c | 27 +-
net/ceph/messenger.c | 8 +-
net/ceph/osd_client.c | 84 +-
net/core/dev.c | 28 +-
net/core/fib_rules.c | 7 +
net/core/flow_dissector.c | 20 +-
net/core/neighbour.c | 8 +-
net/core/netpoll.c | 4 +-
net/core/rtnetlink.c | 21 +-
net/core/skbuff.c | 103 +-
net/core/sock.c | 11 +-
net/dccp/ccids/lib/tfrc.c | 2 +-
net/dccp/ccids/lib/tfrc.h | 1 +
net/decnet/af_decnet.c | 5 -
net/hsr/hsr_framereg.c | 2 +-
net/ieee802154/6lowpan.c | 23 +-
net/ipv4/af_inet.c | 7 +-
net/ipv4/devinet.c | 3 +-
net/ipv4/inet_fragment.c | 5 +-
net/ipv4/ip_forward.c | 71 +-
net/ipv4/ip_output.c | 3 -
net/ipv4/ip_tunnel.c | 82 +-
net/ipv4/ip_tunnel_core.c | 47 +-
net/ipv4/ipconfig.c | 2 +-
net/ipv4/netfilter/Kconfig | 5 +
net/ipv4/netfilter/Makefile | 1 +
net/ipv4/netfilter/nf_nat_h323.c | 5 +-
net/ipv4/netfilter/nf_nat_snmp_basic.c | 4 +-
net/ipv4/netfilter/nft_reject_ipv4.c | 75 +
net/ipv4/route.c | 13 +-
net/ipv4/tcp.c | 10 +-
net/ipv4/tcp_cong.c | 3 +-
net/ipv4/tcp_input.c | 21 +-
net/ipv4/tcp_output.c | 48 +-
net/ipv4/udp_offload.c | 17 +-
net/ipv6/Kconfig | 1 +
net/ipv6/addrconf.c | 7 +-
net/ipv6/exthdrs_core.c | 2 +-
net/ipv6/exthdrs_offload.c | 4 +-
net/ipv6/icmp.c | 2 +-
net/ipv6/ip6_offload.c | 20 +-
net/ipv6/ip6_output.c | 20 +-
net/ipv6/netfilter/Kconfig | 5 +
net/ipv6/netfilter/Makefile | 1 +
net/ipv6/netfilter/nft_reject_ipv6.c | 76 +
net/ipv6/ping.c | 1 +
net/ipv6/route.c | 2 +-
net/ipv6/sit.c | 19 +
net/ipv6/udp_offload.c | 2 +-
net/ipx/af_ipx.c | 22 +-
net/ipx/ipx_route.c | 4 -
net/l2tp/l2tp_core.c | 4 +-
net/l2tp/l2tp_core.h | 1 +
net/l2tp/l2tp_netlink.c | 4 +-
net/l2tp/l2tp_ppp.c | 13 +-
net/mac80211/cfg.c | 44 +-
net/mac80211/chan.c | 6 +
net/mac80211/ht.c | 4 +-
net/mac80211/ibss.c | 5 +-
net/mac80211/ieee80211_i.h | 10 +-
net/mac80211/iface.c | 33 +-
net/mac80211/mesh_ps.c | 1 +
net/mac80211/mlme.c | 24 +
net/mac80211/rx.c | 7 +
net/mac80211/sta_info.c | 67 +-
net/mac80211/sta_info.h | 7 +-
net/mac80211/tx.c | 17 +-
net/mac80211/util.c | 48 +-
net/mac80211/wme.c | 5 +
net/netfilter/Kconfig | 6 +-
net/netfilter/Makefile | 1 +
net/netfilter/ipvs/ip_vs_conn.c | 8 +-
net/netfilter/nf_conntrack_core.c | 55 +-
net/netfilter/nf_conntrack_netlink.c | 35 +-
net/netfilter/nf_nat_core.c | 56 +-
net/netfilter/nf_synproxy_core.c | 5 +-
net/netfilter/nf_tables_api.c | 82 +-
net/netfilter/nf_tables_core.c | 6 +-
net/netfilter/nft_ct.c | 16 +-
net/netfilter/nft_log.c | 5 +-
net/netfilter/nft_lookup.c | 1 +
net/netfilter/nft_meta.c | 4 +-
net/netfilter/nft_payload.c | 3 +-
net/netfilter/nft_queue.c | 4 +-
net/netfilter/nft_rbtree.c | 16 +-
net/netfilter/nft_reject.c | 89 +-
net/netfilter/nft_reject_inet.c | 63 +
net/netfilter/xt_CT.c | 7 +-
net/netlink/af_netlink.c | 4 +-
net/nfc/nci/core.c | 2 +-
net/openvswitch/datapath.c | 23 +-
net/openvswitch/flow_table.c | 88 +-
net/openvswitch/flow_table.h | 2 +-
net/packet/af_packet.c | 26 +-
net/sched/sch_api.c | 7 +-
net/sched/sch_fq.c | 21 +-
net/sched/sch_pie.c | 21 +-
net/sched/sch_tbf.c | 24 +-
net/sctp/associola.c | 211 ++-
net/sctp/ipv6.c | 2 +
net/sctp/sm_make_chunk.c | 4 +-
net/sctp/sm_sideeffect.c | 7 +-
net/sctp/sm_statefuns.c | 12 +-
net/sctp/socket.c | 47 +-
net/sctp/sysctl.c | 18 +-
net/sctp/ulpevent.c | 8 +-
net/socket.c | 17 +-
net/sunrpc/auth_gss/auth_gss.c | 19 +-
net/sunrpc/backchannel_rqst.c | 6 +-
net/sunrpc/svc_xprt.c | 6 +-
net/sunrpc/xprtsock.c | 6 +-
net/tipc/bearer.c | 7 +-
net/tipc/config.c | 11 +-
net/tipc/core.c | 109 +-
net/tipc/core.h | 2 +-
net/tipc/handler.c | 1 -
net/tipc/link.c | 7 +
net/tipc/name_table.c | 40 +-
net/tipc/netlink.c | 8 -
net/tipc/ref.c | 3 -
net/tipc/server.c | 19 +-
net/tipc/server.h | 2 -
net/tipc/socket.c | 12 +-
net/tipc/subscr.c | 19 +-
net/unix/af_unix.c | 3 +-
net/wireless/core.c | 19 +-
net/wireless/core.h | 4 +-
net/wireless/nl80211.c | 32 +-
net/wireless/nl80211.h | 8 +-
net/wireless/reg.c | 12 +-
net/wireless/scan.c | 40 +-
net/wireless/sme.c | 2 +-
net/xfrm/xfrm_policy.c | 2 +-
net/xfrm/xfrm_state.c | 23 +-
net/xfrm/xfrm_user.c | 5 -
scripts/Makefile.lib | 1 +
scripts/checkpatch.pl | 4 +-
scripts/gen_initramfs_list.sh | 2 +-
scripts/get_maintainer.pl | 2 +-
scripts/mod/file2alias.c | 4 +-
scripts/mod/modpost.c | 13 +
security/Kconfig | 2 +-
security/keys/keyring.c | 6 +-
security/selinux/nlmsgtab.c | 2 +
security/selinux/ss/policydb.c | 8 +-
security/selinux/ss/services.c | 4 +
sound/core/pcm_lib.c | 1 +
sound/pci/hda/hda_codec.c | 34 +-
sound/pci/hda/hda_generic.c | 8 +-
sound/pci/hda/hda_generic.h | 1 +
sound/pci/hda/hda_intel.c | 2 +-
sound/pci/hda/patch_analog.c | 31 +
sound/pci/hda/patch_ca0132.c | 68 +-
sound/pci/hda/patch_conexant.c | 3 +-
sound/pci/hda/patch_realtek.c | 92 +-
sound/pci/hda/patch_sigmatel.c | 60 +-
sound/pci/hda/thinkpad_helper.c | 1 +
sound/soc/Kconfig | 1 +
sound/soc/Makefile | 1 +
sound/soc/atmel/Kconfig | 2 +-
sound/soc/atmel/atmel_ssc_dai.c | 13 +-
sound/soc/atmel/sam9g20_wm8731.c | 20 +-
sound/soc/blackfin/Kconfig | 20 +-
sound/soc/cirrus/Kconfig | 4 +-
sound/soc/cirrus/snappercl15.c | 18 +-
sound/soc/codecs/88pm860x-codec.c | 120 +-
sound/soc/codecs/Kconfig | 191 ++-
sound/soc/codecs/Makefile | 33 +
sound/soc/codecs/ad1836.c | 4 +-
sound/soc/codecs/ad193x-i2c.c | 54 +
sound/soc/codecs/ad193x-spi.c | 48 +
sound/soc/codecs/ad193x.c | 154 +-
sound/soc/codecs/ad193x.h | 7 +
sound/soc/codecs/ad1980.c | 4 +-
sound/soc/codecs/adau1373.c | 39 +-
sound/soc/codecs/adau1977-i2c.c | 59 +
sound/soc/codecs/adau1977-spi.c | 76 +
sound/soc/codecs/adau1977.c | 1018 +++++++++++
sound/soc/codecs/adau1977.h | 37 +
sound/soc/codecs/adav801.c | 53 +
sound/soc/codecs/adav803.c | 50 +
sound/soc/codecs/adav80x.c | 159 +-
sound/soc/codecs/adav80x.h | 7 +
sound/soc/codecs/ak4104.c | 2 -
sound/soc/codecs/ak4535.c | 9 -
sound/soc/codecs/ak4641.c | 24 +-
sound/soc/codecs/ak4642.c | 8 -
sound/soc/codecs/ak4671.c | 250 ++-
sound/soc/codecs/ak4671.h | 2 -
sound/soc/codecs/alc5623.c | 120 +-
sound/soc/codecs/alc5632.c | 48 +-
sound/soc/codecs/arizona.c | 325 ++--
sound/soc/codecs/cq93vc.c | 3 +-
sound/soc/codecs/cs4270.c | 9 -
sound/soc/codecs/cs4271.c | 63 +-
sound/soc/codecs/cs42l51.c | 99 +-
sound/soc/codecs/cs42l52.c | 109 +-
sound/soc/codecs/cs42l73.c | 72 +-
sound/soc/codecs/cs42xx8-i2c.c | 64 +
sound/soc/codecs/cs42xx8.c | 602 +++++++
sound/soc/codecs/cs42xx8.h | 238 +++
sound/soc/codecs/da7210.c | 28 +-
sound/soc/codecs/da7213.c | 159 +-
sound/soc/codecs/da732x.c | 208 ++-
sound/soc/codecs/da732x.h | 3 -
sound/soc/codecs/da9055.c | 111 +-
sound/soc/codecs/isabelle.c | 71 +-
sound/soc/codecs/lm4857.c | 3 +-
sound/soc/codecs/lm49453.c | 47 +-
sound/soc/codecs/max9768.c | 5 -
sound/soc/codecs/max98088.c | 47 +-
sound/soc/codecs/max98090.c | 202 +--
sound/soc/codecs/max98090.h | 1 -
sound/soc/codecs/max98095.c | 60 +-
sound/soc/codecs/max9850.c | 8 -
sound/soc/codecs/mc13783.c | 30 +-
sound/soc/codecs/ml26124.c | 22 +-
sound/soc/codecs/pcm1681.c | 15 +-
sound/soc/codecs/pcm1792a.c | 33 +-
sound/soc/codecs/pcm512x-i2c.c | 71 +
sound/soc/codecs/pcm512x-spi.c | 69 +
sound/soc/codecs/pcm512x.c | 589 +++++++
sound/soc/codecs/pcm512x.h | 171 ++
sound/soc/codecs/rt5631.c | 84 +-
sound/soc/codecs/rt5640.c | 87 +-
sound/soc/codecs/sgtl5000.c | 18 +-
sound/soc/codecs/si476x.c | 6 +-
sound/soc/codecs/sirf-audio-codec.c | 524 ++++++
sound/soc/codecs/sirf-audio-codec.h | 75 +
sound/soc/codecs/sn95031.c | 46 +-
sound/soc/codecs/ssm2518.c | 24 +-
sound/soc/codecs/ssm2602-i2c.c | 57 +
sound/soc/codecs/ssm2602-spi.c | 41 +
sound/soc/codecs/ssm2602.c | 180 +-
sound/soc/codecs/ssm2602.h | 14 +
sound/soc/codecs/sta32x.c | 90 +-
sound/soc/codecs/sta529.c | 15 +-
sound/soc/codecs/stac9766.c | 38 +-
sound/soc/codecs/tlv320aic23-i2c.c | 59 +
sound/soc/codecs/tlv320aic23-spi.c | 56 +
sound/soc/codecs/tlv320aic23.c | 79 +-
sound/soc/codecs/tlv320aic23.h | 6 +
sound/soc/codecs/tlv320aic26.c | 7 +-
sound/soc/codecs/tlv320aic31xx.c | 19 +-
sound/soc/codecs/tlv320aic32x4.c | 2 -
sound/soc/codecs/tlv320aic3x.c | 6 -
sound/soc/codecs/tlv320dac33.c | 35 +-
sound/soc/codecs/twl4030.c | 101 +-
sound/soc/codecs/twl6040.c | 17 +-
sound/soc/codecs/uda134x.c | 3 +-
sound/soc/codecs/uda1380.c | 43 +-
sound/soc/codecs/wl1273.c | 9 +-
sound/soc/codecs/wm2000.c | 2 -
sound/soc/codecs/wm2200.c | 25 +-
sound/soc/codecs/wm5100.c | 43 +-
sound/soc/codecs/wm5102.c | 32 +-
sound/soc/codecs/wm5110.c | 22 +-
sound/soc/codecs/wm8350.c | 4 +-
sound/soc/codecs/wm8400.c | 37 +-
sound/soc/codecs/wm8510.c | 10 +-
sound/soc/codecs/wm8523.c | 11 +-
sound/soc/codecs/wm8580.c | 9 +-
sound/soc/codecs/wm8711.c | 8 +-
sound/soc/codecs/wm8728.c | 11 +-
sound/soc/codecs/wm8731.c | 11 +-
sound/soc/codecs/wm8737.c | 56 +-
sound/soc/codecs/wm8741.c | 40 +-
sound/soc/codecs/wm8750.c | 6 -
sound/soc/codecs/wm8753.c | 12 +-
sound/soc/codecs/wm8770.c | 10 +-
sound/soc/codecs/wm8776.c | 6 -
sound/soc/codecs/wm8804.c | 10 +-
sound/soc/codecs/wm8900.c | 52 +-
sound/soc/codecs/wm8903.c | 118 +-
sound/soc/codecs/wm8904.c | 86 +-
sound/soc/codecs/wm8940.c | 26 +-
sound/soc/codecs/wm8955.c | 19 +-
sound/soc/codecs/wm8958-dsp2.c | 10 +-
sound/soc/codecs/wm8960.c | 6 -
sound/soc/codecs/wm8961.c | 23 +-
sound/soc/codecs/wm8962.c | 87 +-
sound/soc/codecs/wm8971.c | 6 -
sound/soc/codecs/wm8974.c | 10 +-
sound/soc/codecs/wm8978.c | 38 +-
sound/soc/codecs/wm8983.c | 51 +-
sound/soc/codecs/wm8985.c | 46 +-
sound/soc/codecs/wm8988.c | 70 +-
sound/soc/codecs/wm8990.c | 49 +-
sound/soc/codecs/wm8991.c | 52 +-
sound/soc/codecs/wm8993.c | 74 +-
sound/soc/codecs/wm8994.c | 186 +-
sound/soc/codecs/wm8995.c | 50 +-
sound/soc/codecs/wm8996.c | 87 +-
sound/soc/codecs/wm8997.c | 29 +-
sound/soc/codecs/wm9081.c | 34 +-
sound/soc/codecs/wm9090.c | 10 -
sound/soc/codecs/wm9705.c | 12 +-
sound/soc/codecs/wm_adsp.c | 50 +-
sound/soc/codecs/wm_hubs.c | 16 +-
sound/soc/davinci/davinci-evm.c | 81 +-
sound/soc/davinci/davinci-mcasp.c | 294 ++--
sound/soc/davinci/edma-pcm.c | 57 +
sound/soc/davinci/edma-pcm.h | 25 +
sound/soc/fsl/Kconfig | 12 +-
sound/soc/fsl/eukrea-tlv320.c | 108 +-
sound/soc/fsl/fsl_esai.c | 36 +-
sound/soc/fsl/fsl_esai.h | 2 +-
sound/soc/fsl/fsl_sai.c | 332 ++--
sound/soc/fsl/fsl_sai.h | 48 +-
sound/soc/fsl/fsl_spdif.c | 9 +-
sound/soc/fsl/imx-mc13783.c | 1 -
sound/soc/fsl/imx-pcm-fiq.c | 7 +-
sound/soc/fsl/imx-sgtl5000.c | 10 +-
sound/soc/fsl/imx-wm8962.c | 11 +-
sound/soc/fsl/wm1133-ev1.c | 11 +-
sound/soc/generic/simple-card.c | 295 ++--
sound/soc/intel/Kconfig | 42 +-
sound/soc/intel/Makefile | 27 +-
sound/soc/intel/byt-rt5640.c | 187 ++
sound/soc/intel/haswell.c | 235 +++
sound/soc/intel/mfld_machine.c | 108 +-
sound/soc/intel/sst-acpi.c | 284 ++++
sound/soc/intel/sst-baytrail-dsp.c | 372 ++++
sound/soc/intel/sst-baytrail-ipc.c | 867 ++++++++++
sound/soc/intel/sst-baytrail-ipc.h | 69 +
sound/soc/intel/sst-baytrail-pcm.c | 422 +++++
sound/soc/intel/sst-dsp-priv.h | 309 ++++
sound/soc/intel/sst-dsp.c | 385 +++++
sound/soc/intel/sst-dsp.h | 233 +++
sound/soc/intel/sst-firmware.c | 587 +++++++
sound/soc/intel/sst-haswell-dsp.c | 517 ++++++
sound/soc/intel/sst-haswell-ipc.c | 1785 ++++++++++++++++++++
sound/soc/intel/sst-haswell-ipc.h | 488 ++++++
sound/soc/intel/sst-haswell-pcm.c | 872 ++++++++++
sound/soc/intel/{sst_dsp.h => sst-mfld-dsp.h} | 8 +-
.../intel/{sst_platform.c => sst-mfld-platform.c} | 8 +-
.../intel/{sst_platform.h => sst-mfld-platform.h} | 4 +-
sound/soc/kirkwood/Kconfig | 11 +-
sound/soc/kirkwood/Makefile | 2 +
sound/soc/kirkwood/armada-370-db.c | 148 ++
sound/soc/kirkwood/kirkwood-i2s.c | 1 +
sound/soc/omap/Kconfig | 4 +-
sound/soc/omap/ams-delta.c | 55 +-
sound/soc/omap/n810.c | 26 +-
sound/soc/omap/omap-abe-twl6040.c | 3 +-
sound/soc/omap/rx51.c | 22 +-
sound/soc/pxa/corgi.c | 49 +-
sound/soc/pxa/e740_wm9705.c | 10 +-
sound/soc/pxa/e750_wm9705.c | 10 +-
sound/soc/pxa/e800_wm9712.c | 19 +-
sound/soc/pxa/magician.c | 60 +-
sound/soc/pxa/mioa701_wm9713.c | 19 +-
sound/soc/pxa/poodle.c | 7 +-
sound/soc/pxa/spitz.c | 58 +-
sound/soc/pxa/tosa.c | 67 +-
sound/soc/pxa/zylonite.c | 17 +-
sound/soc/s6000/s6105-ipcam.c | 28 +-
sound/soc/samsung/Kconfig | 8 +-
sound/soc/samsung/h1940_uda1380.c | 7 +-
sound/soc/samsung/neo1973_wm8753.c | 168 +-
sound/soc/samsung/rx1950_uda1380.c | 5 -
sound/soc/samsung/smdk_wm8994.c | 2 +-
sound/soc/samsung/tobermory.c | 2 +
sound/soc/sh/fsi.c | 2 +-
sound/soc/sh/migor.c | 19 +-
sound/soc/sh/rcar/Makefile | 2 +-
sound/soc/sh/rcar/adg.c | 229 ++-
sound/soc/sh/rcar/core.c | 426 +++--
sound/soc/sh/rcar/gen.c | 113 +-
sound/soc/sh/rcar/rsnd.h | 206 ++-
sound/soc/sh/rcar/scu.c | 384 -----
sound/soc/sh/rcar/src.c | 723 ++++++++
sound/soc/sh/rcar/ssi.c | 388 ++---
sound/soc/sirf/Kconfig | 14 +
sound/soc/sirf/Makefile | 5 +
sound/soc/sirf/sirf-audio-port.c | 194 +++
sound/soc/sirf/sirf-audio-port.h | 62 +
sound/soc/sirf/sirf-audio.c | 156 ++
sound/soc/soc-cache.c | 13 +-
sound/soc/soc-compress.c | 65 +-
sound/soc/soc-core.c | 552 +++---
sound/soc/soc-dapm.c | 604 +++----
sound/soc/soc-io.c | 99 +-
sound/soc/soc-jack.c | 5 +-
sound/soc/soc-pcm.c | 109 +-
sound/soc/spear/spdif_out.c | 10 +-
sound/soc/tegra/Kconfig | 2 +-
sound/soc/tegra/tegra20_ac97.c | 2 +-
sound/soc/tegra/tegra20_das.c | 2 +-
sound/soc/tegra/tegra20_i2s.c | 2 +-
sound/soc/tegra/tegra20_spdif.c | 2 +-
sound/soc/tegra/tegra30_ahub.c | 4 +-
sound/soc/tegra/tegra30_i2s.c | 2 +-
sound/soc/txx9/txx9aclc-ac97.c | 8 +-
sound/usb/Kconfig | 1 +
sound/usb/mixer.c | 1 +
sound/usb/mixer_maps.c | 9 +
tools/lib/lockdep/Makefile | 6 +-
tools/lib/lockdep/preload.c | 2 +-
tools/lib/lockdep/run_tests.sh | 0
tools/lib/lockdep/uinclude/asm/hash.h | 6 +
tools/lib/lockdep/uinclude/linux/rcu.h | 5 +
tools/net/Makefile | 2 +-
tools/perf/builtin-buildid-cache.c | 33 +-
tools/perf/builtin-record.c | 10 +-
tools/perf/builtin-report.c | 40 +-
tools/perf/builtin-top.c | 6 +-
tools/perf/builtin-trace.c | 32 +-
tools/perf/config/Makefile | 2 +-
tools/perf/config/feature-checks/Makefile | 2 +-
tools/perf/design.txt | 1 -
tools/perf/perf.h | 4 +-
tools/perf/tests/vmlinux-kallsyms.c | 10 -
tools/perf/util/annotate.c | 9 +-
tools/perf/util/annotate.h | 2 +
tools/perf/util/event.c | 36 +-
tools/perf/util/event.h | 6 +-
tools/perf/util/include/asm/hash.h | 6 +
tools/perf/util/include/linux/bitops.h | 4 +-
tools/perf/util/machine.c | 44 +-
tools/perf/util/machine.h | 2 +
tools/perf/util/map.c | 5 +-
tools/perf/util/map.h | 1 +
tools/perf/util/parse-events.c | 17 +-
tools/perf/util/probe-event.c | 2 +-
tools/perf/util/session.c | 6 +
tools/perf/util/symbol-elf.c | 10 +-
tools/perf/util/symbol.c | 67 +-
tools/testing/selftests/ipc/msgque.c | 1 +
virt/kvm/arm/vgic.c | 1 +
virt/kvm/coalesced_mmio.c | 8 +-
1779 files changed, 37413 insertions(+), 15444 deletions(-)
create mode 100644 Documentation/devicetree/bindings/interrupt-controller/lsi,zevio-intc.txt
create mode 100644 Documentation/devicetree/bindings/net/opencores-ethoc.txt
create mode 100644 Documentation/devicetree/bindings/net/sti-dwmac.txt
rename Documentation/devicetree/bindings/pinctrl/{brcm,capri-pinctrl.txt => brcm,bcm11351-pinctrl.txt} (98%)
create mode 100644 Documentation/devicetree/bindings/power/bq2415x.txt
create mode 100644 Documentation/devicetree/bindings/sound/armada-370db-audio.txt
create mode 100644 Documentation/devicetree/bindings/sound/cs42xx8.txt
create mode 100644 Documentation/devicetree/bindings/sound/da9055.txt
create mode 100644 Documentation/devicetree/bindings/sound/eukrea-tlv320.txt
create mode 100644 Documentation/devicetree/bindings/sound/pcm512x.txt
create mode 100644 Documentation/devicetree/bindings/sound/renesas,rsnd.txt
create mode 100644 Documentation/devicetree/bindings/sound/sirf-audio-codec.txt
create mode 100644 Documentation/devicetree/bindings/sound/sirf-audio-port.txt
create mode 100644 Documentation/devicetree/bindings/sound/sirf-audio.txt
create mode 100644 Documentation/devicetree/bindings/sound/tdm-slot.txt
create mode 100644 Documentation/devicetree/bindings/sound/widgets.txt
delete mode 100644 Documentation/networking/3c505.txt
create mode 100644 Documentation/spi/00-INDEX
create mode 100644 Documentation/zh_CN/arm64/tagged-pointers.txt
create mode 100644 arch/arm/boot/dts/at91-sama5d3_xplained.dts
create mode 100644 arch/arm/boot/dts/omap3-overo-storm-tobi.dts
rename arch/arm/boot/dts/{omap3-tobi.dts => omap3-overo-tobi-common.dtsi} (94%)
create mode 100644 arch/arm/boot/dts/omap3-overo-tobi.dts
delete mode 100644 arch/arm/boot/dts/testcases/tests.dtsi
delete mode 100644 arch/m68k/include/asm/barrier.h
create mode 100644 drivers/gpu/drm/nouveau/core/subdev/mc/nv4c.c
create mode 100644 drivers/irqchip/irq-zevio.c
create mode 100644 drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c
delete mode 100644 drivers/net/irda/ep7211-sir.c
delete mode 100644 drivers/net/usb/r815x.c
create mode 100644 drivers/net/usb/sr9800.c
create mode 100644 drivers/net/usb/sr9800.h
create mode 100644 drivers/of/testcase-data/testcases.dtsi
rename {arch/arm/boot/dts/testcases => drivers/of/testcase-data}/tests-interrupts.dtsi (100%)
create mode 100644 drivers/of/testcase-data/tests-match.dtsi
rename {arch/arm/boot/dts/testcases => drivers/of/testcase-data}/tests-phandle.dtsi (100%)
delete mode 100644 drivers/xen/xencomm.c
create mode 100644 include/linux/platform_data/adau1977.h
create mode 100644 include/net/netfilter/nft_reject.h
create mode 100644 include/trace/events/hswadsp.h
create mode 100644 include/trace/events/intel-sst.h
rename include/{ => uapi}/xen/gntalloc.h (100%)
rename include/{ => uapi}/xen/gntdev.h (100%)
delete mode 100644 include/xen/interface/xencomm.h
delete mode 100644 include/xen/xencomm.h
create mode 100644 net/ipv4/netfilter/nft_reject_ipv4.c
create mode 100644 net/ipv6/netfilter/nft_reject_ipv6.c
create mode 100644 net/netfilter/nft_reject_inet.c
create mode 100644 sound/soc/codecs/ad193x-i2c.c
create mode 100644 sound/soc/codecs/ad193x-spi.c
create mode 100644 sound/soc/codecs/adau1977-i2c.c
create mode 100644 sound/soc/codecs/adau1977-spi.c
create mode 100644 sound/soc/codecs/adau1977.c
create mode 100644 sound/soc/codecs/adau1977.h
create mode 100644 sound/soc/codecs/adav801.c
create mode 100644 sound/soc/codecs/adav803.c
create mode 100644 sound/soc/codecs/cs42xx8-i2c.c
create mode 100644 sound/soc/codecs/cs42xx8.c
create mode 100644 sound/soc/codecs/cs42xx8.h
create mode 100644 sound/soc/codecs/pcm512x-i2c.c
create mode 100644 sound/soc/codecs/pcm512x-spi.c
create mode 100644 sound/soc/codecs/pcm512x.c
create mode 100644 sound/soc/codecs/pcm512x.h
create mode 100644 sound/soc/codecs/sirf-audio-codec.c
create mode 100644 sound/soc/codecs/sirf-audio-codec.h
create mode 100644 sound/soc/codecs/ssm2602-i2c.c
create mode 100644 sound/soc/codecs/ssm2602-spi.c
create mode 100644 sound/soc/codecs/tlv320aic23-i2c.c
create mode 100644 sound/soc/codecs/tlv320aic23-spi.c
create mode 100644 sound/soc/davinci/edma-pcm.c
create mode 100644 sound/soc/davinci/edma-pcm.h
create mode 100644 sound/soc/intel/byt-rt5640.c
create mode 100644 sound/soc/intel/haswell.c
create mode 100644 sound/soc/intel/sst-acpi.c
create mode 100644 sound/soc/intel/sst-baytrail-dsp.c
create mode 100644 sound/soc/intel/sst-baytrail-ipc.c
create mode 100644 sound/soc/intel/sst-baytrail-ipc.h
create mode 100644 sound/soc/intel/sst-baytrail-pcm.c
create mode 100644 sound/soc/intel/sst-dsp-priv.h
create mode 100644 sound/soc/intel/sst-dsp.c
create mode 100644 sound/soc/intel/sst-dsp.h
create mode 100644 sound/soc/intel/sst-firmware.c
create mode 100644 sound/soc/intel/sst-haswell-dsp.c
create mode 100644 sound/soc/intel/sst-haswell-ipc.c
create mode 100644 sound/soc/intel/sst-haswell-ipc.h
create mode 100644 sound/soc/intel/sst-haswell-pcm.c
rename sound/soc/intel/{sst_dsp.h => sst-mfld-dsp.h} (96%)
rename sound/soc/intel/{sst_platform.c => sst-mfld-platform.c} (99%)
rename sound/soc/intel/{sst_platform.h => sst-mfld-platform.h} (97%)
create mode 100644 sound/soc/kirkwood/armada-370-db.c
delete mode 100644 sound/soc/sh/rcar/scu.c
create mode 100644 sound/soc/sh/rcar/src.c
create mode 100644 sound/soc/sirf/Kconfig
create mode 100644 sound/soc/sirf/Makefile
create mode 100644 sound/soc/sirf/sirf-audio-port.c
create mode 100644 sound/soc/sirf/sirf-audio-port.h
create mode 100644 sound/soc/sirf/sirf-audio.c
mode change 100644 => 100755 tools/lib/lockdep/run_tests.sh
create mode 100644 tools/lib/lockdep/uinclude/asm/hash.h
create mode 100644 tools/perf/util/include/asm/hash.h
2
1

Re: [alsa-devel] [PATCH 42/44] bebob/firewire-lib: Add a quirk of wrong dbc in empty packet for M-Audio special Firewire series
by Takashi Sakamoto 24 Mar '14
by Takashi Sakamoto 24 Mar '14
24 Mar '14
Hi Euan,
Thanks for your testing.
(Mar 24 2014 10:41), Euan de Kock wrote:
> Thanks for the update. This bit me last night, and I just commented out
> the check to keep working.
>
> I'll try and retest it tonight with this version. (On a Echo Audiofire
> Pre8 with firmware < 5)
>
> Regards,
>
> Euan deKock.
When reading this message, I wondered why this bug affects driving on
Echo AudioFirePre8.
As describing the title, this affects a part of BeBoB based devices.
Did you test with M-Audio Firewire 1814 or M-Audio ProjectMix I/O?
If not, it may be a bug for Fireworks driver. Then please send me output
from:
/proc/asound/cardX/firewire/*. (The 'cardX' should be for your device.)
Thanks
Takashi Sakamoto
o-takashi(a)sakamocchi.jp
1
0

Re: [alsa-devel] [PATCH 3.13 110/149] ASoC: pcm: free path list before exiting from error conditions
by Mark Brown 22 Mar '14
by Mark Brown 22 Mar '14
22 Mar '14
On Sat, Mar 22, 2014 at 03:53:08PM +0000, Ben Hutchings wrote:
> On Thu, 2014-03-20 at 17:04 -0700, Greg Kroah-Hartman wrote:
If you spot something on a stable patch that applies upstream (as
opposed to being stable process or to do with the older kernel which are
the most common things with these mails) please add both the maintainers
and relevant lists. -stable mail only goes to signoffs so misses both
lists and additional maintainers meaning things may not be going to the
people who should see them (in this case it's Liam who mostly looks at
DPCM for example). It might make sense for the -stable mails to do this
in general, at least with the lists if not the maintainers.
Ideally it's helpful to also send it in a separate thread since the
volume of mail about -stable stuff is extremely high so things are
easily missed but that's a bit more fun to do, I'm really not sure
there's any general way to resolve that one sensibly.
> > dpcm_path_get() allocates dynamic memory to hold path list.
> > Corresponding dpcm_path_put() must be called to free the memory.
> > dpcm_path_put() is not called under several error conditions.
> > This leads to memory leak.
> This is broken. dpcm_path_get() may return -ENOMEM and not initialise
> the list at all.
> If snd_soc_dapm_dai_get_connected_widgets() can fail (I don't think it
> can) then dpcm_path_get() should be responsible for freeing the list
> before returning.
It can't fail without memory corruption or internal bugs and would only
fail with a crash.
> [...]
> > --- a/sound/soc/soc-pcm.c
> > +++ b/sound/soc/soc-pcm.c
> [...]
> > @@ -1979,6 +1981,7 @@ static int dpcm_fe_dai_open(struct snd_p
> > fe->dpcm[stream].runtime = fe_substream->runtime;
> >
> > if (dpcm_path_get(fe, stream, &list) <= 0) {
> > + dpcm_path_put(&list);
> This is the one place where a memory leak seems to be possible, but the
> < 0 and == 0 cases need to be distinguished.
> Greg, please drop this until it is fixed properly upstream.
It's actually not going to cause a leak there at all since we have an
unconditional run through the rest of the function to a double free with
references to the list that gets freed, AFAICT there wasn't a leak to
start off with. I think what the function needs to do here is bomb out
early on -ENOMEM and otherwise trundle on.
Anyway, I'll revert this upstream. Thanks for noticing this.
1
0

22 Mar '14
From: Mark Brown <broonie(a)linaro.org>
The changes in "ASoC: pcm: free path list before exiting from error
conditions" actually introduced both double frees (in case where the
path list was allocated but empty) and frees of unallocated memory (in
cases where the error being handled was -ENOMEM. Drop the commit for
now.
Fixes: e4ad1accb (ASoC: pcm: free path list before exiting from error conditions)
Reported-by: Ben Hutchings <ben(a)decadent.org.uk>
Signed-off-by: Mark Brown <broonie(a)linaro.org>
---
sound/soc/soc-pcm.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 28522bd03b8e..47e1ce771e65 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -1989,7 +1989,6 @@ int soc_dpcm_runtime_update(struct snd_soc_card *card)
paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_PLAYBACK, &list);
if (paths < 0) {
- dpcm_path_put(&list);
dev_warn(fe->dev, "ASoC: %s no valid %s path\n",
fe->dai_link->name, "playback");
mutex_unlock(&card->mutex);
@@ -2019,7 +2018,6 @@ capture:
paths = dpcm_path_get(fe, SNDRV_PCM_STREAM_CAPTURE, &list);
if (paths < 0) {
- dpcm_path_put(&list);
dev_warn(fe->dev, "ASoC: %s no valid %s path\n",
fe->dai_link->name, "capture");
mutex_unlock(&card->mutex);
@@ -2084,7 +2082,6 @@ static int dpcm_fe_dai_open(struct snd_pcm_substream *fe_substream)
fe->dpcm[stream].runtime = fe_substream->runtime;
if (dpcm_path_get(fe, stream, &list) <= 0) {
- dpcm_path_put(&list);
dev_dbg(fe->dev, "ASoC: %s no valid %s route\n",
fe->dai_link->name, stream ? "capture" : "playback");
}
--
1.9.1
1
0
Hello all; I'm new to the list, and sitting playing with a pair of
Edirol DA2496 cards.
These support Word Clock synchronisation, which can be done using
S/PDIF, a 75 ohm coax cable on the breakout boxes, or with a internal
jumper cable between the PCI cards. Unfortunately neither the driver, or
Mudita24, were exposing access to the Word Clock.
I've managed to patch support into both; doing so with the 3.12.13-rt21
kernel, and mudita24-1.0.3+svn13 from the Ubuntu repositories. This is,
mostly, by treating the cards the same as the Delta1010LT.
Forgive me being so rusty with C that I've not provided a patch; going
to have to redo this and actually build proper diffs for it.
I do have a related query, about Xruns - when using an .asoundrc file to
merge the two cards into a single virtual card - is there any way to
properly suppress backend Xruns that have no impact on the actual
recorded audio?
Brian McNeil
--
Wikinewsie.org | http://wikinewsie.org | https://en.wikinews.org
"Facts don't cease to be facts, but news ceases to be news."
GPG Fingerprint: 7C3D FFD5 5ED5 B80F 1D18 A52B E84C 8928 6ABC A7AD
1
0

21 Mar '14
Fixes: 115f3f8 ("ASoC: mfld_machine: Convert to table based DAPM and control setup")
Reported-by: kbuild test robot <fengguang.wu(a)intel.com>
Signed-off-by: Lars-Peter Clausen <lars(a)metafoo.de>
---
sound/soc/intel/mfld_machine.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/intel/mfld_machine.c b/sound/soc/intel/mfld_machine.c
index 4616942..031d787 100644
--- a/sound/soc/intel/mfld_machine.c
+++ b/sound/soc/intel/mfld_machine.c
@@ -254,7 +254,7 @@ static int mfld_init(struct snd_soc_pcm_runtime *runtime)
snd_soc_dapm_disable_pin(dapm, "LINEINR");
/* Headset and button jack detection */
- ret_val = snd_soc_jack_new(codec, "Intel(R) MID Audio Jack",
+ ret_val = snd_soc_jack_new(mfld_codec, "Intel(R) MID Audio Jack",
SND_JACK_HEADSET | SND_JACK_BTN_0 |
SND_JACK_BTN_1, &mfld_jack);
if (ret_val) {
--
1.8.0
2
1

[alsa-devel] [PATCH - ALSA-LIB 1/1] Remove 2.1 , 4.1 and 5.0 from EMU10K1.conf
by Raymond Yau 21 Mar '14
by Raymond Yau 21 Mar '14
21 Mar '14
- Creative 4.1 Speaker only have green and black jacks
- Those creative sound cards using 4.1 speakers does not support 6 channels
2
1
Hi Mark,
Hi Liam,
I spent some hours reverse-engineering the DPCM code, and I plan to
prepare a patch to add some documentation once I've assembled a fully
working setup. However, I have a general question regarding DAPM widget
names.
DPCM uses DAPM widgets and routes in order to determine the FE <-> BE
connections at runtime. The problem with this is that widget names are
very ambiguous, as the automatically created widgets for DAIs are named
after their stream_name properties, which contain "Playback" or
"Capture" for all components in my case. Hence, the code which walks the
connections (snd_soc_dapm_dai_get_connected_widgets()) will most likely
match the wrong one (which has empty sound/sink lists), which results in
a failure like this:
[ 16.606268] fe: ASoC: fe no valid playback route
I hacked the names of all components so they are unique, but even then,
the problem is that snd_soc_dapm_new_dai_widgets() is called twice for
the CPU DAI, once from soc_probe_platform(), and later from
soc_probe_link_dais(), and both calls would create DAPM widgets with
identical names, resulting in the same problem as described above.
I don't know how to handle this, but I believe that nobody was really
hit by this issue yet, as DPCM doesn't seem to be used widely, at least
not by any machine code in mainline.
One idea would be to change the automatically generated names of DAI
widgets in order to make them unique, or re-factor the lookup routines.
Any opinion on that? Do I miss a general consideration here?
With more hacks in place, the setup somehow succeeds, but when the
stream is opened, we'll hit a BUG() in sound/core/pcm_memory.c, because
the FE device's DMA type is undefined. But that's another topic I'll
address later.
Thanks,
Daniel
5
9
From: Bard Liao <bardliao(a)realtek.com>
This patch adds the ALC286 codec driver.
ALC286 is a dual mode codec, which can run as HD-A or I2S mode.
It is controlled by HD-A verb commands via I2C protocol.
The following is the I/O difference between ALC286 and general I2S codecs.
1. A HD-A verb command contains three parts, NID, VID, and PID.
And an I2S command contains only two parts: address and data.
2. Not only the register address is written, but the read command also
includes the entire write command.
3. rt286 uses different registers for read and write the same bits.
As a result, standard regmap is difficult to be used on ALC286.
We don't request a standard I/O by snd_soc_codec_set_cache_io anymore.
Now we have ,reg_write and .reg_read functions for ALC286's I/O.
And we don't use cache due to item 3 above.
Some dummy registers (address <= 0xff) are defined for dapm routing.
Thhe dummy registers are cache only.
Due to item 2 above, HD-A verb commands are put into the address part of regmap.
When we issue HD-A verb write commands, the data part of regmap is zero.
Signed-off-by: Bard Liao <bardliao(a)realtek.com>
Signed-off-by: Gustaw Lewandowski <gustaw.lewandowski(a)intel.com>
---
The jack detection function is done by Lewandowski Gustaw.
So I add Gustaw's Signed-off-by line in this patch
The difference between this version and previous version is listed below.
* Include <sound/hda_verbs.h> instead of hda_codec.h
* Fix rt286_update_bits doesn't write the new value to codec issue.
* Apply different settings for system clock = 19.2MHz and 24MHz.
* Use .set_bclk_ratio instead of .set_dfs.
* Change ACPI number from INT33CA to INT343A.
* Other minor changes.
---
include/sound/rt286.h | 19 +
sound/soc/codecs/Kconfig | 4 +
sound/soc/codecs/Makefile | 2 +
sound/soc/codecs/rt286.c | 1379 +++++++++++++++++++++++++++++++++++++++++++++
sound/soc/codecs/rt286.h | 159 ++++++
5 files changed, 1563 insertions(+)
create mode 100644 include/sound/rt286.h
create mode 100644 sound/soc/codecs/rt286.c
create mode 100644 sound/soc/codecs/rt286.h
diff --git a/include/sound/rt286.h b/include/sound/rt286.h
new file mode 100644
index 0000000..eb773d1
--- /dev/null
+++ b/include/sound/rt286.h
@@ -0,0 +1,19 @@
+/*
+ * linux/sound/rt286.h -- Platform data for RT286
+ *
+ * Copyright 2013 Realtek Microelectronics
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __LINUX_SND_RT286_H
+#define __LINUX_SND_RT286_H
+
+struct rt286_platform_data {
+ bool cbj_en; /*combo jack enable*/
+ bool gpio2_en; /*GPIO2 enable*/
+};
+
+#endif
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 32d7a6f..c46e722 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -68,6 +68,7 @@ config SND_SOC_ALL_CODECS
select SND_SOC_PCM3008
select SND_SOC_PCM512x_I2C if I2C
select SND_SOC_PCM512x_SPI if SPI_MASTER
+ select SND_SOC_RT286 if I2C
select SND_SOC_RT5631 if I2C
select SND_SOC_RT5640 if I2C
select SND_SOC_SGTL5000 if I2C
@@ -379,6 +380,9 @@ config SND_SOC_PCM512x_SPI
select SND_SOC_PCM512x
select REGMAP_SPI
+config SND_SOC_RT286
+ tristate
+
config SND_SOC_RT5631
tristate
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index cb46c4c..ee2f368 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -56,6 +56,7 @@ snd-soc-pcm3008-objs := pcm3008.o
snd-soc-pcm512x-objs := pcm512x.o
snd-soc-pcm512x-i2c-objs := pcm512x-i2c.o
snd-soc-pcm512x-spi-objs := pcm512x-spi.o
+snd-soc-rt286-objs := rt286.o
snd-soc-rt5631-objs := rt5631.o
snd-soc-rt5640-objs := rt5640.o
snd-soc-sgtl5000-objs := sgtl5000.o
@@ -204,6 +205,7 @@ obj-$(CONFIG_SND_SOC_PCM3008) += snd-soc-pcm3008.o
obj-$(CONFIG_SND_SOC_PCM512x) += snd-soc-pcm512x.o
obj-$(CONFIG_SND_SOC_PCM512x_I2C) += snd-soc-pcm512x-i2c.o
obj-$(CONFIG_SND_SOC_PCM512x_SPI) += snd-soc-pcm512x-spi.o
+obj-$(CONFIG_SND_SOC_RT286) += snd-soc-rt286.o
obj-$(CONFIG_SND_SOC_RT5631) += snd-soc-rt5631.o
obj-$(CONFIG_SND_SOC_RT5640) += snd-soc-rt5640.o
obj-$(CONFIG_SND_SOC_SGTL5000) += snd-soc-sgtl5000.o
diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c
new file mode 100644
index 0000000..4621b62
--- /dev/null
+++ b/sound/soc/codecs/rt286.c
@@ -0,0 +1,1379 @@
+/*
+ * rt286.c -- RT286 ALSA SoC audio codec driver
+ *
+ * Copyright 2013 Realtek Semiconductor Corp.
+ * Author: Bard Liao <bardliao(a)realtek.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <linux/pm.h>
+#include <linux/i2c.h>
+#include <linux/platform_device.h>
+#include <linux/spi/spi.h>
+#include <linux/acpi.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/pcm_params.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+#include <sound/initval.h>
+#include <sound/tlv.h>
+#include <sound/jack.h>
+#include <sound/rt286.h>
+#include <sound/hda_verbs.h>
+
+#include "rt286.h"
+
+struct rt286_priv {
+ struct regmap *regmap;
+ struct snd_soc_codec *codec;
+ struct rt286_platform_data pdata;
+ struct snd_soc_jack *jack;
+ struct i2c_client *i2c;
+ int sys_clk;
+};
+
+static unsigned int rt286_reg_cache[] = {
+ [RT286_AUDIO_FUNCTION_GROUP] = 0x0000,
+ [RT286_DAC_OUT1] = 0x7f7f,
+ [RT286_DAC_OUT2] = 0x7f7f,
+ [RT286_SPDIF] = 0x0000,
+ [RT286_ADC_IN1] = 0x4343,
+ [RT286_ADC_IN2] = 0x4343,
+ [RT286_MIC1] = 0x0000,
+ [RT286_MIXER_IN] = 0x000b,
+ [RT286_MIXER_OUT1] = 0x0002,
+ [RT286_MIXER_OUT2] = 0x0000,
+ [RT286_DMIC1] = 0x0000,
+ [RT286_DMIC2] = 0x0000,
+ [RT286_LINE1] = 0x0000,
+ [RT286_BEEP] = 0x0000,
+ [RT286_VENDOR_REGISTERS] = 0x0000,
+ [RT286_SPK_OUT] = 0x8080,
+ [RT286_HP_OUT] = 0x8080,
+ [RT286_MIXER_IN1] = 0x0000,
+ [RT286_MIXER_IN2] = 0x0000,
+};
+
+static int rt286_hw_read(void *context, unsigned int reg, unsigned int *value)
+{
+ struct i2c_client *client = context;
+ struct i2c_msg xfer[2];
+ int ret;
+ unsigned int buf = 0x0;
+
+ if (reg <= 0xff) { /*read cache*/
+ *value = rt286_reg_cache[reg];
+ return 0;
+ }
+ reg = cpu_to_be32(reg);
+ /* Write register */
+ xfer[0].addr = client->addr;
+ xfer[0].flags = 0;
+ xfer[0].len = 4;
+ xfer[0].buf = (u8 *)®
+
+ /* Read data */
+ xfer[1].addr = client->addr;
+ xfer[1].flags = I2C_M_RD;
+ xfer[1].len = 4;
+ xfer[1].buf = (u8 *)&buf;
+
+ ret = i2c_transfer(client->adapter, xfer, 2);
+ if (ret < 0)
+ return ret;
+ else if (ret != 2)
+ return -EIO;
+
+ *value = be32_to_cpu(buf);
+
+ return 0;
+}
+
+static int rt286_hw_write(void *context, unsigned int reg, unsigned int value)
+{
+ struct i2c_client *client = context;
+ u8 data[4];
+ int ret;
+
+ if (reg <= 0xff) { /*write cache*/
+ rt286_reg_cache[reg] = value;
+ return 0;
+ }
+ data[0] = (reg >> 24) & 0xff;
+ data[1] = (reg >> 16) & 0xff;
+ data[2] = (reg >> 8) & 0xff;
+ data[3] = reg & 0xff;
+
+ ret = i2c_master_send(client, data, 4);
+ if (ret == 4)
+ return 0;
+ if (ret < 0)
+ return ret;
+ else
+ return -EIO;
+}
+
+static int rt286_update_bits(struct snd_soc_codec *codec, unsigned int vid,
+ unsigned int nid, unsigned int data,
+ unsigned int mask, unsigned int value)
+{
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int old, new, verb;
+ int change, ret;
+
+ verb = VERB_CMD((vid | 0x800), nid, data);
+ regmap_read(rt286->regmap, verb, &old);
+ new = (old & ~mask) | (value & mask);
+ change = old != new;
+
+ if (change) {
+ verb = VERB_CMD(vid, nid, new);
+ ret = regmap_write(rt286->regmap, verb, 0);
+ if (ret < 0) {
+ dev_err(codec->dev,
+ "Failed to write private reg: %d\n", ret);
+ goto err;
+ }
+ }
+ return change;
+
+err:
+ return ret;
+}
+
+static int rt286_index_write(struct snd_soc_codec *codec,
+ unsigned int wid, unsigned int index, unsigned int data)
+{
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ int ret;
+ unsigned int verb;
+
+ verb = VERB_CMD(AC_VERB_SET_COEF_INDEX, wid, index);
+ ret = regmap_write(rt286->regmap, verb, 0);
+ if (ret < 0) {
+ dev_err(codec->dev, "Failed to set private addr: %d\n", ret);
+ goto err;
+ }
+ verb = VERB_CMD(AC_VERB_SET_PROC_COEF, wid, data);
+ ret = regmap_write(rt286->regmap, verb, 0);
+ if (ret < 0) {
+ dev_err(codec->dev, "Failed to set private value: %d\n", ret);
+ goto err;
+ }
+
+ return 0;
+err:
+ return ret;
+}
+
+static unsigned int rt286_index_read(struct snd_soc_codec *codec,
+ unsigned int wid, unsigned int index)
+{
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ int ret;
+ unsigned int verb, val;
+
+ verb = VERB_CMD(AC_VERB_SET_COEF_INDEX, wid, index);
+ ret = regmap_write(rt286->regmap, verb, 0);
+
+ if (ret < 0) {
+ dev_err(codec->dev, "Failed to set private addr: %d\n", ret);
+ return ret;
+ }
+
+ verb = VERB_CMD(AC_VERB_GET_PROC_COEF, wid, index);
+ regmap_read(rt286->regmap, verb, &val);
+ return val;
+}
+
+static int rt286_index_update_bits(struct snd_soc_codec *codec,
+ unsigned int wid, unsigned int index,
+ unsigned int mask, unsigned int data)
+{
+ unsigned int old, new;
+ int change, ret;
+
+ old = rt286_index_read(codec, wid, index);
+ new = (old & ~mask) | (data & mask);
+ change = old != new;
+
+ if (change) {
+ ret = rt286_index_write(codec, wid, index, new);
+ if (ret < 0) {
+ dev_err(codec->dev,
+ "Failed to write private reg: %d\n", ret);
+ goto err;
+ }
+ }
+ return change;
+
+err:
+ return ret;
+}
+
+static int rt286_support_power_controls[] = {
+ RT286_DAC_OUT1,
+ RT286_DAC_OUT2,
+ RT286_ADC_IN1,
+ RT286_ADC_IN2,
+ RT286_MIC1,
+ RT286_DMIC1,
+ RT286_DMIC2,
+ RT286_SPK_OUT,
+ RT286_HP_OUT,
+};
+#define RT286_POWER_REG_LEN ARRAY_SIZE(rt286_support_power_controls)
+
+static const struct reg_default rt286_reg[] = {
+ { RT286_DAC_OUT1, 0x7f7f },
+ { RT286_DAC_OUT2, 0x7f7f },
+ { RT286_SPDIF, 0x0000 },
+ { RT286_ADC_IN1, 0x4343 },
+ { RT286_ADC_IN2, 0x4343 },
+ { RT286_MIC1, 0x0000 },
+ { RT286_MIXER_IN, 0x000b },
+ { RT286_MIXER_OUT1, 0x0002 },
+ { RT286_MIXER_OUT2, 0x0000 },
+ { RT286_SPK_OUT, 0x0000 },
+ { RT286_HP_OUT, 0x0000 },
+ { RT286_MIXER_IN1, 0x0005 },
+ { RT286_MIXER_IN2, 0x0005 },
+};
+
+static bool rt286_readable_register(struct device *dev, unsigned int reg)
+{
+ switch (reg) {
+ case RT286_DAC_OUT1:
+ case RT286_DAC_OUT2:
+ case RT286_ADC_IN1:
+ case RT286_ADC_IN2:
+ case RT286_MIC1:
+ case RT286_SPDIF:
+ case RT286_MIXER_IN:
+ case RT286_MIXER_OUT1:
+ case RT286_MIXER_OUT2:
+ case RT286_DMIC1:
+ case RT286_DMIC2:
+ case RT286_SPK_OUT:
+ case RT286_HP_OUT:
+ case RT286_MIXER_IN1:
+ case RT286_MIXER_IN2:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static int rt286_jack_detect(struct snd_soc_codec *codec, bool *hp, bool *mic)
+{
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int val, buf;
+ int i;
+
+ *hp = false;
+ *mic = false;
+
+ if (rt286->pdata.cbj_en) {
+ regmap_read(rt286->regmap, RT286_GET_HP_SENSE, &buf);
+
+ *hp = buf & 0x80000000;
+ if (*hp) {
+ /* power on HV,VERF */
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_POWER_CTRL1, 0x1001, 0x0);
+ /* power LDO1 */
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_POWER_CTRL2, 0x4, 0x4);
+ regmap_write(rt286->regmap, RT286_SET_MIC1_24, 0);
+ val = rt286_index_read(codec,
+ RT286_VENDOR_REGISTERS, RT286_CBJ_CTRL2);
+
+ msleep(200);
+ i = 40;
+ while (((val & 0x0800) == 0) && (i > 0)) {
+ val = rt286_index_read(codec,
+ RT286_VENDOR_REGISTERS,
+ RT286_CBJ_CTRL2);
+ i--;
+ msleep(20);
+ }
+
+ if (0x0400 == (val & 0x0700)) {
+ *mic = false;
+
+ regmap_write(rt286->regmap,
+ RT286_SET_MIC1_20, 0);
+ /* power off HV,VERF */
+ rt286_index_update_bits(codec,
+ RT286_VENDOR_REGISTERS,
+ RT286_POWER_CTRL1, 0x1001, 0x1001);
+ rt286_index_update_bits(codec,
+ RT286_VENDOR_REGISTERS,
+ RT286_A_BIAS_CTRL3, 0xc000, 0x0000);
+ rt286_index_update_bits(codec,
+ RT286_VENDOR_REGISTERS,
+ RT286_CBJ_CTRL1, 0x0030, 0x0000);
+ rt286_index_update_bits(codec,
+ RT286_VENDOR_REGISTERS,
+ RT286_A_BIAS_CTRL2, 0xc000, 0x0000);
+ } else if ((0x0200 == (val & 0x0700)) ||
+ (0x0100 == (val & 0x0700))) {
+ *mic = true;
+ } else {
+ *mic = false;
+ }
+
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_MISC_CTRL1,
+ 0x0060, 0x0000);
+ } else {
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_MISC_CTRL1,
+ 0x0060, 0x0020);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_A_BIAS_CTRL3,
+ 0xc000, 0x8000);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_CBJ_CTRL1,
+ 0x0030, 0x0020);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_A_BIAS_CTRL2,
+ 0xc000, 0x8000);
+
+ *mic = false;
+ }
+ } else {
+ regmap_read(rt286->regmap, RT286_GET_HP_SENSE, &buf);
+ *hp = buf & 0x80000000;
+ regmap_read(rt286->regmap, RT286_GET_MIC1_SENSE, &buf);
+ *mic = buf & 0x80000000;
+ }
+
+
+ /* Clear IRQ */
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_IRQ_CTRL, 0x1, 0x1);
+ return 0;
+}
+
+int rt286_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack)
+{
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ rt286->jack = jack;
+
+ /* Send an initial empty report */
+ snd_soc_jack_report(rt286->jack, 0,
+ SND_JACK_MICROPHONE | SND_JACK_HEADPHONE);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(rt286_mic_detect);
+
+static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -6350, 50, 0);
+static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, 0, 1000, 0);
+
+static int rt286_vol_get(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct soc_mixer_control *mc =
+ (struct soc_mixer_control *)kcontrol->private_value;
+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int verb, buf, io = 0x8000;
+
+ if (RT286_ADC_IN1 == mc->reg)
+ io = 0;
+ verb = VERB_CMD(AC_VERB_GET_AMP_GAIN_MUTE, mc->reg, (0x2000 | io));
+ regmap_read(rt286->regmap, verb, &buf);
+ ucontrol->value.integer.value[0] = buf & 0x7f;
+ verb = VERB_CMD(AC_VERB_GET_AMP_GAIN_MUTE, mc->reg, io);
+ regmap_read(rt286->regmap, verb, &buf);
+ ucontrol->value.integer.value[1] = buf & 0x7f;
+
+ return 0;
+}
+
+static int rt286_vol_put(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct soc_mixer_control *mc =
+ (struct soc_mixer_control *)kcontrol->private_value;
+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int verb, vall, valr, io;
+
+ if (RT286_ADC_IN1 == mc->reg)
+ io = 0x4000;
+ else
+ io = 0x8000;
+ vall = ucontrol->value.integer.value[0];
+ valr = ucontrol->value.integer.value[1];
+ if (vall == valr) {
+ vall = vall | 0x3000 | io;
+ verb = VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, mc->reg, vall);
+ regmap_write(rt286->regmap, verb, 0);
+ } else {
+ vall = vall | 0x2000 | io;
+ verb = VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, mc->reg, vall);
+ regmap_write(rt286->regmap, verb, 0);
+ valr = valr | 0x1000 | io;
+ verb = VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, mc->reg, valr);
+ regmap_write(rt286->regmap, verb, 0);
+ }
+
+ return 0;
+}
+
+static int rt286_mic_gain_get(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct soc_mixer_control *mc =
+ (struct soc_mixer_control *)kcontrol->private_value;
+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int verb, buf;
+
+ verb = VERB_CMD(AC_VERB_GET_AMP_GAIN_MUTE, mc->reg, 0x0);
+ regmap_read(rt286->regmap, verb, &buf);
+ ucontrol->value.integer.value[0] = buf & 0x3;
+
+ return 0;
+}
+
+static int rt286_mic_gain_put(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct soc_mixer_control *mc =
+ (struct soc_mixer_control *)kcontrol->private_value;
+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int verb, val;
+
+ val = ucontrol->value.integer.value[0];
+ val = val | 0x7000;
+ verb = VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, mc->reg, val);
+ regmap_write(rt286->regmap, verb, 0);
+
+ return 0;
+}
+
+static int rt286_playback_switch_get(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct soc_mixer_control *mc =
+ (struct soc_mixer_control *)kcontrol->private_value;
+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int verb, buf;
+
+ verb = VERB_CMD(AC_VERB_GET_AMP_GAIN_MUTE, mc->reg, 0xa000);
+ regmap_read(rt286->regmap, verb, &buf);
+ ucontrol->value.integer.value[0] = !(buf & 0x80);
+ verb = VERB_CMD(AC_VERB_GET_AMP_GAIN_MUTE, mc->reg, 0x8000);
+ regmap_read(rt286->regmap, verb, &buf);
+ ucontrol->value.integer.value[1] = !(buf & 0x80);
+
+ return 0;
+}
+
+static int rt286_playback_switch_put(struct snd_kcontrol *kcontrol,
+ struct snd_ctl_elem_value *ucontrol)
+{
+ struct soc_mixer_control *mc =
+ (struct soc_mixer_control *)kcontrol->private_value;
+ struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int verb, vall, valr, val = 0;
+
+ vall = (!ucontrol->value.integer.value[0] << 7);
+ valr = (!ucontrol->value.integer.value[1] << 7);
+ if (vall)
+ val |= 0x8000;
+ if (valr)
+ val |= 0x0080;
+
+ if (vall == valr) {
+ vall = vall | 0xb000;
+ verb = VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, mc->reg, vall);
+ regmap_write(rt286->regmap, verb, 0);
+ } else {
+ vall = vall | 0xa000;
+ verb = VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, mc->reg, vall);
+ regmap_write(rt286->regmap, verb, 0);
+ valr = valr | 0x9000;
+ verb = VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, mc->reg, valr);
+ regmap_write(rt286->regmap, verb, 0);
+ }
+ snd_soc_update_bits(codec, mc->reg, 0x8080, val);
+
+ return 0;
+}
+
+static const struct snd_kcontrol_new rt286_snd_controls[] = {
+ SOC_DOUBLE_EXT_TLV("DAC0 Playback Volume", RT286_DAC_OUT1,
+ 8, 0, 0x7f, 0,
+ rt286_vol_get, rt286_vol_put,
+ out_vol_tlv),
+ SOC_DOUBLE_EXT_TLV("ADC0 Capture Volume", RT286_ADC_IN1,
+ 8, 0, 0x7f, 0,
+ rt286_vol_get, rt286_vol_put,
+ out_vol_tlv),
+ SOC_SINGLE_EXT_TLV("AMIC Volume", RT286_MIC1, 0, 0x3, 0,
+ rt286_mic_gain_get, rt286_mic_gain_put,
+ mic_vol_tlv),
+ SOC_DOUBLE_EXT("Headphone Playback Switch", RT286_HP_OUT,
+ 15, 8, 1, 1, rt286_playback_switch_get,
+ rt286_playback_switch_put),
+ SOC_DOUBLE_EXT("Speaker Playback Switch", RT286_SPK_OUT,
+ 15, 8, 1, 1, rt286_playback_switch_get,
+ rt286_playback_switch_put),
+};
+
+/* Digital Mixer */
+static const struct snd_kcontrol_new rt286_front_mix[] = {
+ SOC_DAPM_SINGLE("DAC Switch", RT286_MIXER_OUT1,
+ RT286_M_FRONT_DAC_SFT, 1, 1),
+ SOC_DAPM_SINGLE("RECMIX Switch", RT286_MIXER_OUT1,
+ RT286_M_FRONT_REC_SFT, 1, 1),
+};
+
+/* Analog Input Mixer */
+static const struct snd_kcontrol_new rt286_rec_mix[] = {
+ SOC_DAPM_SINGLE("Beep Switch", RT286_MIXER_IN,
+ RT286_M_REC_BEEP_SFT, 1, 1),
+ SOC_DAPM_SINGLE("Line1 Switch", RT286_MIXER_IN,
+ RT286_M_REC_LINE1_SFT, 1, 1),
+ SOC_DAPM_SINGLE("Mic1 Switch", RT286_MIXER_IN,
+ RT286_M_REC_MIC1_SFT, 1, 1),
+ SOC_DAPM_SINGLE("I2S Switch", RT286_MIXER_IN,
+ RT286_M_REC_I2S_SFT, 1, 1),
+};
+
+static const struct snd_kcontrol_new spo_enable_control =
+ SOC_DAPM_SINGLE("Switch", RT286_SPK_OUT,
+ RT286_M_SPK_MUX_SFT, 1, 1);
+
+static const struct snd_kcontrol_new hpo_enable_control =
+ SOC_DAPM_SINGLE("Switch", RT286_HP_OUT,
+ RT286_M_HP_MUX_SFT, 1, 1);
+
+/* ADC0 source */
+static const char * const rt286_adc_src[] = {
+ "Mic", "Dmic"
+};
+
+static int rt286_adc_values[] = {
+ 0, 5,
+};
+
+static SOC_VALUE_ENUM_SINGLE_DECL(
+ rt286_adc0_enum, RT286_MIXER_IN1, RT286_ADC_SEL_SFT,
+ RT286_ADC_SEL_MASK, rt286_adc_src, rt286_adc_values);
+
+static const struct snd_kcontrol_new rt286_adc0_mux =
+ SOC_DAPM_VALUE_ENUM("ADC 0 source", rt286_adc0_enum);
+
+static SOC_VALUE_ENUM_SINGLE_DECL(
+ rt286_adc1_enum, RT286_MIXER_IN2, RT286_ADC_SEL_SFT,
+ RT286_ADC_SEL_MASK, rt286_adc_src, rt286_adc_values);
+
+static const struct snd_kcontrol_new rt286_adc1_mux =
+ SOC_DAPM_VALUE_ENUM("ADC 1 source", rt286_adc1_enum);
+
+/* HP-OUT source */
+static const char * const rt286_hpo_src[] = {
+ "Front", "Surround"
+};
+
+static SOC_ENUM_SINGLE_DECL(rt286_hpo_enum, RT286_HP_OUT,
+ RT286_HP_SEL_SFT, rt286_hpo_src);
+
+static const struct snd_kcontrol_new rt286_hpo_mux =
+SOC_DAPM_ENUM("HPO source", rt286_hpo_enum);
+
+/* SPK-OUT source */
+static const char * const rt286_spo_src[] = {
+ "Front", "Surround"
+};
+
+static SOC_ENUM_SINGLE_DECL(rt286_spo_enum, RT286_SPK_OUT,
+ RT286_SPK_SEL_SFT, rt286_spo_src);
+
+static const struct snd_kcontrol_new rt286_spo_mux =
+SOC_DAPM_ENUM("SPO source", rt286_spo_enum);
+
+/* SPDIF source */
+static const char * const rt286_spdif_src[] = {
+ "PCM-IN 0", "PCM-IN 1", "SP-OUT", "PP"
+};
+
+static SOC_ENUM_SINGLE_DECL(rt286_spdif_enum, RT286_SPDIF,
+ RT286_SPDIF_SEL_SFT, rt286_spdif_src);
+
+static const struct snd_kcontrol_new rt286_spdif_mux =
+SOC_DAPM_ENUM("SPDIF source", rt286_spdif_enum);
+
+
+static int rt286_spk_event(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_codec *codec = w->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
+ regmap_write(rt286->regmap, RT286_SET_SPK_D0, 0);
+ regmap_write(rt286->regmap, RT286_ENABLE_SPK, 0);
+ regmap_write(rt286->regmap, RT286_SPK_EAPD_HIGH, 0);
+ break;
+ case SND_SOC_DAPM_PRE_PMD:
+ regmap_write(rt286->regmap, RT286_SPK_EAPD_LOW, 0);
+ regmap_write(rt286->regmap, RT286_DISABLE_SPK, 0);
+ regmap_write(rt286->regmap, RT286_SET_SPK_D3, 0);
+ break;
+
+ default:
+ return 0;
+ }
+
+ return 0;
+}
+
+static int rt286_hp_event(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_codec *codec = w->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int val, buf;
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
+ regmap_read(rt286->regmap, RT286_HP_OUT, &buf);
+ val = buf & 0x8080;
+ switch (val) {
+ case 0x0:
+ regmap_write(rt286->regmap, RT286_UNMUTE_HPO, 0);
+ break;
+ case 0x8000:
+ regmap_write(rt286->regmap, RT286_UNMUTE_HPO_R, 0);
+ break;
+ case 0x0080:
+ regmap_write(rt286->regmap, RT286_UNMUTE_HPO_L, 0);
+ break;
+ }
+ if (val != 0x8080)
+ mdelay(100);
+ break;
+
+ case SND_SOC_DAPM_PRE_PMD:
+ regmap_write(rt286->regmap, RT286_MUTE_HPO, 0);
+ break;
+
+ default:
+ return 0;
+ }
+
+ return 0;
+}
+
+static int rt286_set_power_event(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_codec *codec = w->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
+ regmap_write(rt286->regmap, RT286_SET_D0(w->reg), 0);
+ break;
+ case SND_SOC_DAPM_PRE_PMD:
+ regmap_write(rt286->regmap, RT286_SET_D3(w->reg), 0);
+ break;
+ default:
+ return 0;
+ }
+
+ return 0;
+}
+
+static int rt286_set_dmic1_event(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_codec *codec = w->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
+ regmap_write(rt286->regmap, RT286_SET_DMIC1_D0, 0);
+ regmap_write(rt286->regmap, RT286_ENABLE_DMIC1, 0);
+ break;
+ case SND_SOC_DAPM_PRE_PMD:
+ regmap_write(rt286->regmap, RT286_DISABLE_DMIC1, 0);
+ regmap_write(rt286->regmap, RT286_SET_DMIC1_D3, 0);
+ break;
+ default:
+ return 0;
+ }
+
+ return 0;
+}
+
+static int rt286_hp_pow_event(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_codec *codec = w->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
+ regmap_write(rt286->regmap, RT286_SET_HPO_D0, 0);
+ regmap_write(rt286->regmap, RT286_ENABLE_HPO, 0);
+ break;
+
+ case SND_SOC_DAPM_PRE_PMD:
+ regmap_write(rt286->regmap, RT286_DISABLE_HPO, 0);
+ regmap_write(rt286->regmap, RT286_SET_HPO_D3, 0);
+ break;
+
+ default:
+ return 0;
+ }
+
+ return 0;
+}
+
+static int rt286_adc_event(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_codec *codec = w->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ struct soc_enum *e;
+ unsigned int verb, val, buf;
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
+ if (rt286->pdata.cbj_en) {
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_A_BIAS_CTRL3, 0xc000, 0x8000);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_CBJ_CTRL1, 0x0030, 0x0020);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_A_BIAS_CTRL2, 0xc000, 0x8000);
+ }
+ regmap_write(rt286->regmap, RT286_SET_D0(w->reg), 0);
+ rt286_update_bits(codec, AC_VERB_SET_AMP_GAIN_MUTE,
+ w->reg, 0, 0x7080, 0x7000);
+ break;
+ case SND_SOC_DAPM_PRE_PMD:
+ rt286_update_bits(codec, AC_VERB_SET_AMP_GAIN_MUTE,
+ w->reg, 0, 0x7080, 0x7080);
+ regmap_write(rt286->regmap, RT286_SET_D3(w->reg), 0);
+ break;
+ case SND_SOC_DAPM_POST_REG:
+ e = (struct soc_enum *)kcontrol->private_value;
+ regmap_read(rt286->regmap, e->reg, &buf);
+ val = buf & RT286_ADC_SEL_MASK;
+ verb = VERB_CMD(AC_VERB_SET_CONNECT_SEL, e->reg, val);
+ regmap_write(rt286->regmap, verb, 0);
+ break;
+ default:
+ return 0;
+ }
+
+ return 0;
+}
+
+static int rt286_out_mux_event(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_codec *codec = w->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
+ unsigned int verb, val, buf;
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_REG:
+ regmap_read(rt286->regmap, e->reg, &buf);
+ val = buf & 0x1;
+ verb = VERB_CMD(AC_VERB_SET_CONNECT_SEL, e->reg, val);
+ regmap_write(rt286->regmap, verb, 0);
+ break;
+ default:
+ return 0;
+ }
+
+ return 0;
+}
+
+static const struct snd_soc_dapm_widget rt286_dapm_widgets[] = {
+ /* Input Lines */
+ SND_SOC_DAPM_INPUT("DMIC1 Pin"),
+ SND_SOC_DAPM_INPUT("DMIC2 Pin"),
+ SND_SOC_DAPM_INPUT("MIC1"),
+ SND_SOC_DAPM_INPUT("LINE1"),
+ SND_SOC_DAPM_INPUT("Beep"),
+
+ /* DMIC */
+ SND_SOC_DAPM_PGA_E("DMIC1", RT286_DMIC1, 15, 0,
+ NULL, 0, rt286_set_dmic1_event,
+ SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU),
+ SND_SOC_DAPM_PGA_E("DMIC2", RT286_DMIC2, 15, 0,
+ NULL, 0, rt286_set_power_event,
+ SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU),
+ SND_SOC_DAPM_SUPPLY("DMIC Receiver", SND_SOC_NOPM,
+ 0, 0, NULL, 0),
+
+ /* REC Mixer */
+ SND_SOC_DAPM_MIXER("RECMIX", SND_SOC_NOPM, 0, 0,
+ rt286_rec_mix, ARRAY_SIZE(rt286_rec_mix)),
+
+ /* ADCs */
+ SND_SOC_DAPM_ADC("ADC 0", NULL, SND_SOC_NOPM, 0, 0),
+ SND_SOC_DAPM_ADC("ADC 1", NULL, SND_SOC_NOPM, 0, 0),
+
+ /* ADC Mux */
+ SND_SOC_DAPM_MUX_E("ADC 0 Mux", RT286_ADC_IN1, 15, 0,
+ &rt286_adc0_mux, rt286_adc_event, SND_SOC_DAPM_PRE_PMD |
+ SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_REG),
+ SND_SOC_DAPM_MUX_E("ADC 1 Mux", RT286_ADC_IN2, 15, 0,
+ &rt286_adc1_mux, rt286_adc_event, SND_SOC_DAPM_PRE_PMD |
+ SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_REG),
+
+
+ /* Audio Interface */
+ SND_SOC_DAPM_AIF_IN("AIF1RX", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0),
+ SND_SOC_DAPM_AIF_OUT("AIF1TX", "AIF1 Capture", 0, SND_SOC_NOPM, 0, 0),
+ SND_SOC_DAPM_AIF_IN("AIF2RX", "AIF2 Playback", 0, SND_SOC_NOPM, 0, 0),
+ SND_SOC_DAPM_AIF_OUT("AIF2TX", "AIF2 Capture", 0, SND_SOC_NOPM, 0, 0),
+
+
+ /* Output Side */
+
+ /* DACs */
+ SND_SOC_DAPM_DAC_E("DAC 0", NULL, RT286_DAC_OUT1,
+ 15, 0, rt286_set_power_event,
+ SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
+ SND_SOC_DAPM_DAC_E("DAC 1", NULL, RT286_DAC_OUT2,
+ 15, 0, rt286_set_power_event,
+ SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
+
+ /* Output Mux */
+ SND_SOC_DAPM_MUX_E("SPK Mux", SND_SOC_NOPM, 0, 0,
+ &rt286_spo_mux,
+ rt286_out_mux_event,
+ SND_SOC_DAPM_POST_REG),
+
+ SND_SOC_DAPM_MUX_E("HPO Mux", SND_SOC_NOPM, 0, 0,
+ &rt286_hpo_mux,
+ rt286_out_mux_event,
+ SND_SOC_DAPM_POST_REG),
+
+ SND_SOC_DAPM_SUPPLY("HP Power", SND_SOC_NOPM,
+ 0, 0, rt286_hp_pow_event,
+ SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU),
+
+ SND_SOC_DAPM_MUX("SPDIF Mux", SND_SOC_NOPM, 0, 0,
+ &rt286_spdif_mux),
+
+ /* Output Mixer */
+ SND_SOC_DAPM_MIXER("Front", SND_SOC_NOPM, 0, 0,
+ rt286_front_mix, ARRAY_SIZE(rt286_front_mix)),
+ SND_SOC_DAPM_PGA("Surround", SND_SOC_NOPM, 0, 0, NULL, 0),
+
+ /* Output Pga */
+ SND_SOC_DAPM_SWITCH_E("SPO", SND_SOC_NOPM, 0, 0,
+ &spo_enable_control, rt286_spk_event,
+ SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU),
+ SND_SOC_DAPM_SWITCH_E("HPO", SND_SOC_NOPM, 0, 0,
+ &hpo_enable_control, rt286_hp_event,
+ SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMU),
+
+ /* Output Lines */
+ SND_SOC_DAPM_OUTPUT("SPOL"),
+ SND_SOC_DAPM_OUTPUT("SPOR"),
+ SND_SOC_DAPM_OUTPUT("HPO Pin"),
+ SND_SOC_DAPM_OUTPUT("SPDIF"),
+};
+
+static const struct snd_soc_dapm_route rt286_dapm_routes[] = {
+ {"DMIC1", NULL, "DMIC1 Pin"},
+ {"DMIC2", NULL, "DMIC2 Pin"},
+ {"DMIC1", NULL, "DMIC Receiver"},
+ {"DMIC2", NULL, "DMIC Receiver"},
+
+ {"RECMIX", "Beep Switch", "Beep"},
+ {"RECMIX", "Line1 Switch", "LINE1"},
+ {"RECMIX", "Mic1 Switch", "MIC1"},
+
+ {"ADC 0 Mux", "Dmic", "DMIC1"},
+ {"ADC 0 Mux", "Mic", "MIC1"},
+ {"ADC 1 Mux", "Dmic", "DMIC2"},
+ {"ADC 1 Mux", "Mic", "MIC1"},
+
+ {"ADC 0", NULL, "ADC 0 Mux"},
+ {"ADC 1", NULL, "ADC 1 Mux"},
+
+ {"AIF1TX", NULL, "ADC 0"},
+ {"AIF2TX", NULL, "ADC 1"},
+
+ {"DAC 0", NULL, "AIF1RX"},
+ {"DAC 1", NULL, "AIF2RX"},
+
+ {"Front", "DAC Switch", "DAC 0"},
+ {"Front", "RECMIX Switch", "RECMIX"},
+
+ {"Surround", NULL, "DAC 1"},
+
+ {"SPK Mux", "Front", "Front"},
+ {"SPK Mux", "Surround", "Surround"},
+
+ {"HPO Mux", "Front", "Front"},
+ {"HPO Mux", "Surround", "Surround"},
+
+ {"SPO", "Switch", "SPK Mux"},
+ {"HPO", "Switch", "HPO Mux"},
+ {"HPO", NULL, "HP Power"},
+
+ {"SPOL", NULL, "SPO"},
+ {"SPOR", NULL, "SPO"},
+ {"HPO Pin", NULL, "HPO"},
+};
+
+static int rt286_hw_params(struct snd_pcm_substream *substream,
+ struct snd_pcm_hw_params *params,
+ struct snd_soc_dai *dai)
+{
+ struct snd_soc_codec *codec = dai->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ unsigned int val = 0;
+ int d_len_code;
+
+ switch (params_rate(params)) {
+ /* bit 14 0:48K 1:44.1K */
+ case 44100:
+ val |= 0x4000;
+ break;
+ case 48000:
+ break;
+ default:
+ dev_err(codec->dev, "Unsupported sample rate %d\n",
+ params_rate(params));
+ return -EINVAL;
+ }
+ switch (rt286->sys_clk) {
+ case 12288000:
+ case 24576000:
+ if (params_rate(params) != 48000) {
+ dev_err(codec->dev, "Sys_clk is not matched (%d %d)\n",
+ params_rate(params), rt286->sys_clk);
+ return -EINVAL;
+ }
+ break;
+ case 11289600:
+ case 22579200:
+ if (params_rate(params) != 44100) {
+ dev_err(codec->dev, "Sys_clk is not matched (%d %d)\n",
+ params_rate(params), rt286->sys_clk);
+ return -EINVAL;
+ }
+ break;
+ }
+
+ if (params_channels(params) <= 16) {
+ /* bit 3:0 Number of Channel */
+ val |= (params_channels(params) - 1);
+ } else {
+ dev_err(codec->dev, "Unsupported channels %d\n",
+ params_channels(params));
+ return -EINVAL;
+ }
+
+ d_len_code = 0;
+ switch (params_format(params)) {
+ /* bit 6:4 Bits per Sample */
+ case SNDRV_PCM_FORMAT_S16_LE:
+ d_len_code = 0;
+ val |= (0x1 << 4);
+ break;
+ case SNDRV_PCM_FORMAT_S32_LE:
+ d_len_code = 2;
+ val |= (0x4 << 4);
+ break;
+ case SNDRV_PCM_FORMAT_S20_3LE:
+ d_len_code = 1;
+ val |= (0x2 << 4);
+ break;
+ case SNDRV_PCM_FORMAT_S24_LE:
+ d_len_code = 2;
+ val |= (0x3 << 4);
+ break;
+ case SNDRV_PCM_FORMAT_S8:
+ break;
+ default:
+ return -EINVAL;
+ }
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x0018, d_len_code << 3);
+ dev_dbg(codec->dev, "format val = 0x%x\n", val);
+
+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+ rt286_update_bits(codec, AC_VERB_SET_STREAM_FORMAT,
+ RT286_DAC_OUT1, 0, 0x407f, val);
+ else
+ rt286_update_bits(codec, AC_VERB_SET_STREAM_FORMAT,
+ RT286_ADC_IN1, 0, 0x407f, val);
+
+ return 0;
+}
+
+static int rt286_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt)
+{
+ struct snd_soc_codec *codec = dai->codec;
+
+ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
+ case SND_SOC_DAIFMT_CBM_CFM:
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x800, 0x800);
+ break;
+ case SND_SOC_DAIFMT_CBS_CFS:
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x800, 0x0);
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
+ case SND_SOC_DAIFMT_I2S:
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x300, 0x0);
+ break;
+ case SND_SOC_DAIFMT_LEFT_J:
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x300, 0x1 << 8);
+ break;
+ case SND_SOC_DAIFMT_DSP_A:
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x300, 0x2 << 8);
+ break;
+ case SND_SOC_DAIFMT_DSP_B:
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x300, 0x3 << 8);
+ break;
+ default:
+ return -EINVAL;
+ }
+ /* bit 15 Stream Type 0:PCM 1:Non-PCM */
+ rt286_update_bits(codec, AC_VERB_SET_STREAM_FORMAT,
+ RT286_DAC_OUT1, 0, 0x8000, 0x0);
+ rt286_update_bits(codec, AC_VERB_SET_STREAM_FORMAT,
+ RT286_ADC_IN1, 0, 0x8000, 0x0);
+
+ return 0;
+}
+
+static int rt286_set_dai_sysclk(struct snd_soc_dai *dai,
+ int clk_id, unsigned int freq, int dir)
+{
+ struct snd_soc_codec *codec = dai->codec;
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+
+ dev_dbg(codec->dev, "%s freq=%d\n", __func__, freq);
+
+ if (RT286_SCLK_S_MCLK == clk_id) {
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL2, 0x0100, 0x0);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_PLL_CTRL1, 0x20, 0x20);
+ } else {
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL2, 0x0100, 0x0100);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_PLL_CTRL, 0x4, 0x4);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_PLL_CTRL1, 0x20, 0x0);
+ }
+
+ switch (freq) {
+ case 19200000:
+ if (RT286_SCLK_S_MCLK == clk_id) {
+ dev_err(codec->dev, "Should not use MCLK\n");
+ return -EINVAL;
+ }
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL2, 0x40, 0x40);
+ break;
+ case 24000000:
+ if (RT286_SCLK_S_MCLK == clk_id) {
+ dev_err(codec->dev, "Should not use MCLK\n");
+ return -EINVAL;
+ }
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL2, 0x40, 0x0);
+ break;
+ case 12288000:
+ case 11289600:
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL2, 0x8, 0x0);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_CLK_DIV, 0xfc1e, 0x0004);
+ break;
+ case 24576000:
+ case 22579200:
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL2, 0x8, 0x8);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_CLK_DIV, 0xfc1e, 0x5406);
+ break;
+ default:
+ dev_err(codec->dev, "Unsupported system clock\n");
+ return -EINVAL;
+ }
+
+ rt286->sys_clk = freq;
+
+ return 0;
+}
+
+static int rt286_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio)
+{
+ struct snd_soc_codec *codec = dai->codec;
+
+ dev_dbg(codec->dev, "%s ratio=%d\n", __func__, ratio);
+ if (50 == ratio)
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x1000, 0x1000);
+ else
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_I2S_CTRL1, 0x1000, 0x0);
+
+
+ return 0;
+}
+
+static int rt286_set_bias_level(struct snd_soc_codec *codec,
+ enum snd_soc_bias_level level)
+{
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+
+ switch (level) {
+ case SND_SOC_BIAS_PREPARE:
+ if (SND_SOC_BIAS_STANDBY == codec->dapm.bias_level)
+ regmap_write(rt286->regmap, RT286_SET_AUDIO_D0, 0);
+ break;
+
+ case SND_SOC_BIAS_STANDBY:
+ regmap_write(rt286->regmap, RT286_SET_AUDIO_D3, 0);
+ break;
+
+ default:
+ break;
+ }
+ codec->dapm.bias_level = level;
+
+ return 0;
+}
+
+static irqreturn_t rt286_irq(int irq, void *data)
+{
+ struct rt286_priv *rt286 = data;
+ bool hp = false;
+ bool mic = false;
+ int status = 0;
+
+ rt286_jack_detect(rt286->codec, &hp, &mic);
+
+ if (hp == true)
+ status |= SND_JACK_HEADPHONE;
+
+ if (mic == true)
+ status |= SND_JACK_MICROPHONE;
+
+ snd_soc_jack_report(rt286->jack, status,
+ SND_JACK_MICROPHONE | SND_JACK_HEADPHONE);
+
+ pm_wakeup_event(&rt286->i2c->dev, 300);
+
+ return IRQ_HANDLED;
+}
+
+static int rt286_probe(struct snd_soc_codec *codec)
+{
+ struct rt286_priv *rt286 = snd_soc_codec_get_drvdata(codec);
+ int i, ret;
+
+ regmap_write(rt286->regmap, RT286_SET_AUDIO_D3, 0);
+ for (i = 0; i < RT286_POWER_REG_LEN; i++) {
+ regmap_write(rt286->regmap,
+ RT286_SET_D3(rt286_support_power_controls[i]), 0);
+ }
+
+ if (!rt286->pdata.cbj_en) {
+ rt286_index_write(codec, RT286_VENDOR_REGISTERS,
+ RT286_CBJ_CTRL2, 0x0000);
+ rt286_index_write(codec, RT286_VENDOR_REGISTERS,
+ RT286_MIC1_DET_CTRL, 0x0816);
+ rt286_index_write(codec, RT286_VENDOR_REGISTERS,
+ RT286_MISC_CTRL1, 0x0000);
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_CBJ_CTRL1, 0xf000, 0xb000);
+ } else {
+ rt286_index_update_bits(codec, RT286_VENDOR_REGISTERS,
+ RT286_CBJ_CTRL1, 0xf000, 0x5000);
+ }
+
+ mdelay(10);
+
+ if (!rt286->pdata.gpio2_en)
+ regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT_4000, 0);
+ else
+ regmap_write(rt286->regmap, RT286_SET_DMIC2_DEFAULT_0, 0);
+
+ mdelay(10);
+
+ /*Power down LDO2*/
+ rt286_index_update_bits(codec,
+ RT286_VENDOR_REGISTERS, RT286_POWER_CTRL2, 0x8, 0x0);
+
+ codec->dapm.bias_level = SND_SOC_BIAS_OFF;
+ rt286->codec = codec;
+
+ if (rt286->i2c->irq) {
+ rt286_index_update_bits(codec,
+ RT286_VENDOR_REGISTERS, RT286_IRQ_CTRL, 0x2, 0x2);
+ ret = request_threaded_irq(rt286->i2c->irq, NULL, rt286_irq,
+ IRQF_TRIGGER_HIGH | IRQF_ONESHOT, "rt286", rt286);
+ if (ret != 0) {
+ dev_err(codec->dev,
+ "Failed to reguest IRQ: %d\n", ret);
+ return ret;
+ }
+ }
+
+ return 0;
+}
+
+#define RT286_STEREO_RATES (SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000)
+#define RT286_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
+ SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8)
+
+struct snd_soc_dai_ops rt286_aif_dai_ops = {
+ .hw_params = rt286_hw_params,
+ .set_fmt = rt286_set_dai_fmt,
+ .set_sysclk = rt286_set_dai_sysclk,
+ .set_bclk_ratio = rt286_set_bclk_ratio,
+};
+
+struct snd_soc_dai_driver rt286_dai[] = {
+ {
+ .name = "rt286-aif1",
+ .id = RT286_AIF1,
+ .playback = {
+ .stream_name = "AIF1 Playback",
+ .channels_min = 1,
+ .channels_max = 2,
+ .rates = RT286_STEREO_RATES,
+ .formats = RT286_FORMATS,
+ },
+ .capture = {
+ .stream_name = "AIF1 Capture",
+ .channels_min = 1,
+ .channels_max = 2,
+ .rates = RT286_STEREO_RATES,
+ .formats = RT286_FORMATS,
+ },
+ .ops = &rt286_aif_dai_ops,
+ .symmetric_rates = 1,
+ },
+};
+
+static struct snd_soc_codec_driver soc_codec_dev_rt286 = {
+ .probe = rt286_probe,
+ .set_bias_level = rt286_set_bias_level,
+ .idle_bias_off = true,
+ .controls = rt286_snd_controls,
+ .num_controls = ARRAY_SIZE(rt286_snd_controls),
+ .dapm_widgets = rt286_dapm_widgets,
+ .num_dapm_widgets = ARRAY_SIZE(rt286_dapm_widgets),
+ .dapm_routes = rt286_dapm_routes,
+ .num_dapm_routes = ARRAY_SIZE(rt286_dapm_routes),
+};
+
+static const struct regmap_config rt286_regmap = {
+ .reg_bits = 32,
+ .val_bits = 32,
+ .reg_write = rt286_hw_write,
+ .reg_read = rt286_hw_read,
+ .readable_reg = rt286_readable_register,
+ .cache_type = REGCACHE_NONE,
+};
+
+static const struct i2c_device_id rt286_i2c_id[] = {
+ {"rt286", 0},
+ {}
+};
+MODULE_DEVICE_TABLE(i2c, rt286_i2c_id);
+
+static struct acpi_device_id rt286_acpi_match[] = {
+ { "INT343A", 0 },
+ {},
+};
+MODULE_DEVICE_TABLE(acpi, rt286_acpi_match);
+
+static int rt286_i2c_probe(struct i2c_client *i2c,
+ const struct i2c_device_id *id)
+{
+ struct rt286_platform_data *pdata = dev_get_platdata(&i2c->dev);
+ struct rt286_priv *rt286;
+ struct device *dev = &i2c->dev;
+ int ret;
+
+ rt286 = devm_kzalloc(&i2c->dev,
+ sizeof(struct rt286_priv),
+ GFP_KERNEL);
+ if (NULL == rt286)
+ return -ENOMEM;
+
+ rt286->regmap = devm_regmap_init(dev, NULL, i2c, &rt286_regmap);
+ if (IS_ERR(rt286->regmap)) {
+ ret = PTR_ERR(rt286->regmap);
+ dev_err(&i2c->dev, "Failed to allocate register map: %d\n",
+ ret);
+ return ret;
+ }
+
+ rt286->i2c = i2c;
+ i2c_set_clientdata(i2c, rt286);
+
+ if (pdata)
+ rt286->pdata = *pdata;
+
+ ret = devm_snd_soc_register_codec(&i2c->dev, &soc_codec_dev_rt286,
+ rt286_dai, ARRAY_SIZE(rt286_dai));
+
+ return ret;
+}
+
+struct i2c_driver rt286_i2c_driver = {
+ .driver = {
+ .name = "rt286",
+ .owner = THIS_MODULE,
+ .acpi_match_table = ACPI_PTR(rt286_acpi_match),
+ },
+ .probe = rt286_i2c_probe,
+ .id_table = rt286_i2c_id,
+};
+
+module_i2c_driver(rt286_i2c_driver);
+
+MODULE_DESCRIPTION("ASoC RT286 driver");
+MODULE_AUTHOR("Bard Liao <bardliao(a)realtek.com>");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/rt286.h b/sound/soc/codecs/rt286.h
new file mode 100644
index 0000000..5f9dc99
--- /dev/null
+++ b/sound/soc/codecs/rt286.h
@@ -0,0 +1,159 @@
+/*
+ * rt286.h -- RT286 ALSA SoC audio driver
+ *
+ * Copyright 2011 Realtek Microelectronics
+ * Author: Johnny Hsu <johnnyhsu(a)realtek.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __RT286_H__
+#define __RT286_H__
+
+#define VERB_CMD(V, N, D) ((N << 20) | (V << 8) | D)
+
+#define RT286_AUDIO_FUNCTION_GROUP 0x01
+#define RT286_DAC_OUT1 0x02
+#define RT286_DAC_OUT2 0x03
+#define RT286_ADC_IN1 0x09
+#define RT286_ADC_IN2 0x08
+#define RT286_MIXER_IN 0x0b
+#define RT286_MIXER_OUT1 0x0c
+#define RT286_MIXER_OUT2 0x0d
+#define RT286_DMIC1 0x12
+#define RT286_DMIC2 0x13
+#define RT286_SPK_OUT 0x14
+#define RT286_MIC1 0x18
+#define RT286_LINE1 0x1a
+#define RT286_BEEP 0x1d
+#define RT286_SPDIF 0x1e
+#define RT286_VENDOR_REGISTERS 0x20
+#define RT286_HP_OUT 0x21
+#define RT286_MIXER_IN1 0x22
+#define RT286_MIXER_IN2 0x23
+
+#define RT286_CONNECTION_INDEX_MIC1 0X0
+#define RT286_CONNECTION_INDEX_DMIC 0X5
+
+/* Verb commands */
+#define RT286_SET_D0(NID) VERB_CMD(AC_VERB_SET_POWER_STATE, NID, AC_PWRST_D0)
+#define RT286_SET_D3(NID) VERB_CMD(AC_VERB_SET_POWER_STATE, NID, AC_PWRST_D3)
+
+#define RT286_SET_MIC1_24\
+ VERB_CMD(AC_VERB_SET_PIN_WIDGET_CONTROL, RT286_MIC1, 0x24)
+#define RT286_SET_MIC1_20\
+ VERB_CMD(AC_VERB_SET_PIN_WIDGET_CONTROL, RT286_MIC1, 0x20)
+#define RT286_SET_AUDIO_D0 RT286_SET_D0(RT286_AUDIO_FUNCTION_GROUP)
+#define RT286_SET_AUDIO_D3 RT286_SET_D3(RT286_AUDIO_FUNCTION_GROUP)
+#define RT286_SET_HPO_D0 RT286_SET_D0(RT286_HP_OUT)
+#define RT286_SET_HPO_D3 RT286_SET_D3(RT286_HP_OUT)
+#define RT286_SET_SPK_D0 RT286_SET_D0(RT286_SPK_OUT)
+#define RT286_SET_SPK_D3 RT286_SET_D3(RT286_SPK_OUT)
+#define RT286_SET_DMIC1_D0 RT286_SET_D0(RT286_DMIC1)
+#define RT286_SET_DMIC1_D3 RT286_SET_D3(RT286_DMIC1)
+#define RT286_ENABLE_HPO\
+ VERB_CMD(AC_VERB_SET_PIN_WIDGET_CONTROL, RT286_HP_OUT, 0x40)
+#define RT286_DISABLE_HPO\
+ VERB_CMD(AC_VERB_SET_PIN_WIDGET_CONTROL, RT286_HP_OUT, 0)
+#define RT286_ENABLE_SPK\
+ VERB_CMD(AC_VERB_SET_PIN_WIDGET_CONTROL, RT286_SPK_OUT, 0x40)
+#define RT286_DISABLE_SPK\
+ VERB_CMD(AC_VERB_SET_PIN_WIDGET_CONTROL, RT286_SPK_OUT, 0)
+#define RT286_ENABLE_DMIC1\
+ VERB_CMD(AC_VERB_SET_PIN_WIDGET_CONTROL, RT286_DMIC1, 0x20)
+#define RT286_DISABLE_DMIC1\
+ VERB_CMD(AC_VERB_SET_PIN_WIDGET_CONTROL, RT286_DMIC1, 0)
+#define RT286_SPK_EAPD_HIGH\
+ VERB_CMD(AC_VERB_SET_EAPD_BTLENABLE, RT286_SPK_OUT, 0x2)
+#define RT286_SPK_EAPD_LOW\
+ VERB_CMD(AC_VERB_SET_EAPD_BTLENABLE, RT286_SPK_OUT, 0)
+#define RT286_UNMUTE_HPO\
+ VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, RT286_HP_OUT, 0xb000)
+#define RT286_UNMUTE_HPO_R\
+ VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, RT286_HP_OUT, 0x9000)
+#define RT286_UNMUTE_HPO_L\
+ VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, RT286_HP_OUT, 0xa000)
+#define RT286_MUTE_HPO\
+ VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, RT286_HP_OUT, 0xb080)
+#define RT286_GET_HP_SENSE\
+ VERB_CMD(AC_VERB_GET_PIN_SENSE, RT286_HP_OUT, 0)
+#define RT286_GET_MIC1_SENSE\
+ VERB_CMD(AC_VERB_GET_PIN_SENSE, RT286_MIC1, 0)
+#define RT286_SET_DMIC2_DEFAULT_4000\
+ VERB_CMD(AC_VERB_SET_CONFIG_DEFAULT_BYTES_3, RT286_DMIC2, 0x4000)
+#define RT286_SET_DMIC2_DEFAULT_0\
+ VERB_CMD(AC_VERB_SET_CONFIG_DEFAULT_BYTES_3, RT286_DMIC2, 0)
+
+/* Index registers */
+#define RT286_A_BIAS_CTRL1 0x01
+#define RT286_A_BIAS_CTRL2 0x02
+#define RT286_POWER_CTRL1 0x03
+#define RT286_A_BIAS_CTRL3 0x04
+#define RT286_POWER_CTRL2 0x08
+#define RT286_I2S_CTRL1 0x09
+#define RT286_I2S_CTRL2 0x0a
+#define RT286_CLK_DIV 0x0b
+#define RT286_POWER_CTRL3 0x0f
+#define RT286_MIC1_DET_CTRL 0x19
+#define RT286_MISC_CTRL1 0x20
+#define RT286_IRQ_CTRL 0x33
+#define RT286_PLL_CTRL1 0x49
+#define RT286_CBJ_CTRL1 0x4f
+#define RT286_CBJ_CTRL2 0x50
+#define RT286_PLL_CTRL 0x63
+
+/* SPDIF (0x06) */
+#define RT286_SPDIF_SEL_SFT 0
+#define RT286_SPDIF_SEL_PCM0 0
+#define RT286_SPDIF_SEL_PCM1 1
+#define RT286_SPDIF_SEL_SPOUT 2
+#define RT286_SPDIF_SEL_PP 3
+
+/* RECMIX (0x0b) */
+#define RT286_M_REC_BEEP_SFT 0
+#define RT286_M_REC_LINE1_SFT 1
+#define RT286_M_REC_MIC1_SFT 2
+#define RT286_M_REC_I2S_SFT 3
+
+/* Front (0x0c) */
+#define RT286_M_FRONT_DAC_SFT 0
+#define RT286_M_FRONT_REC_SFT 1
+
+/* SPK-OUT (0x14) */
+#define RT286_M_SPK_MUX_SFT 14
+#define RT286_SPK_SEL_MASK 0x1
+#define RT286_SPK_SEL_SFT 0
+#define RT286_SPK_SEL_F 0
+#define RT286_SPK_SEL_S 1
+
+/* HP-OUT (0x21) */
+#define RT286_M_HP_MUX_SFT 14
+#define RT286_HP_SEL_MASK 0x1
+#define RT286_HP_SEL_SFT 0
+#define RT286_HP_SEL_F 0
+#define RT286_HP_SEL_S 1
+
+/* ADC (0x22) (0x23) */
+#define RT286_ADC_SEL_MASK 0x7
+#define RT286_ADC_SEL_SFT 0
+#define RT286_ADC_SEL_SURR 0
+#define RT286_ADC_SEL_FRONT 1
+#define RT286_ADC_SEL_DMIC 2
+#define RT286_ADC_SEL_BEEP 4
+#define RT286_ADC_SEL_LINE1 5
+#define RT286_ADC_SEL_I2S 6
+#define RT286_ADC_SEL_MIC1 7
+
+#define RT286_SCLK_S_MCLK 0
+#define RT286_SCLK_S_PLL 1
+
+enum {
+ RT286_AIF1,
+ RT286_AIFS,
+};
+
+int rt286_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack);
+
+#endif /* __RT286_H__ */
--
1.8.1.1.439.g50a6b54
5
14

21 Mar '14
Currently soc_enum structure supports only 2 registers (reg, reg2)
for kcontrol. However, it is possible to have multiple registers
per mux. This change allows us to control these multiple registers.
Signed-off-by: Arun Shamanna Lakshmi <aruns(a)nvidia.com>
Signed-off-by: Songhee Baek <sbaek(a)nvidia.com>
---
include/sound/soc.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 9a00147..ddedfb4 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -1093,6 +1093,9 @@ struct soc_enum {
unsigned int mask;
const char * const *texts;
const unsigned int *values;
+ unsigned int *regs;
+ unsigned int *masks;
+ unsigned int num_regs;
};
/* codec IO */
--
1.7.9.5
4
8