aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-05-22 11:50:00 -0400
committerTakashi Iwai <tiwai@suse.de>2014-05-22 11:50:00 -0400
commit0c1d1210160f560841a48641d41b61ec7d05edb2 (patch)
tree14942dc1820fcb9b102b9098e5bacd5b59b78048 /include
parent6f51f6cf6822f9da02cd91ced4f002024af419bb (diff)
parentcee429e5c53f7ffc1dd500001d9dff567833c23d (diff)
Merge tag 'asoc-v3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
ASoC: Updates for v3.16 Lots of cleanup work going on in the core this release but very little visible to external users except for the new drivers that have been added. - Support for specifying aux CODECs in DT. - Removal of the deprecated mux and enum macros. - More moves towards full componentisation. - Removal of some unused I/O code. - Lots of cleanups, fixes and enhancements to the davinci, Freescale, Haswell and Realtek drivers. - Several drivers exposed directly in Kconfig for use with simple-card. - New drivers for Cirrus CS42L56, Realtek RT5639, RT5642 and RT5651 and ST STA350.
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/fixmap.h3
-rw-r--r--include/asm-generic/word-at-a-time.h8
-rw-r--r--include/drm/drm_pciids.h16
-rw-r--r--include/drm/i915_pciids.h4
-rw-r--r--include/dt-bindings/clock/r8a7790-clock.h4
-rw-r--r--include/dt-bindings/clock/r8a7791-clock.h2
-rw-r--r--include/dt-bindings/clock/tegra124-car.h6
-rw-r--r--include/linux/dcache.h2
-rw-r--r--include/linux/fs.h2
-rw-r--r--include/linux/ftrace.h2
-rw-r--r--include/linux/hugetlb.h10
-rw-r--r--include/linux/interrupt.h35
-rw-r--r--include/linux/irq.h5
-rw-r--r--include/linux/libata.h1
-rw-r--r--include/linux/linkage.h4
-rw-r--r--include/linux/mfd/rtsx_common.h1
-rw-r--r--include/linux/mfd/rtsx_pci.h6
-rw-r--r--include/linux/mm.h2
-rw-r--r--include/linux/netlink.h7
-rw-r--r--include/linux/of_irq.h5
-rw-r--r--include/linux/phy/phy.h16
-rw-r--r--include/linux/regulator/consumer.h4
-rw-r--r--include/linux/serio.h1
-rw-r--r--include/linux/slub_def.h9
-rw-r--r--include/linux/sock_diag.h2
-rw-r--r--include/net/af_vsock.h6
-rw-r--r--include/net/sock.h5
-rw-r--r--include/sound/cs42l56.h48
-rw-r--r--include/sound/rcar_snd.h32
-rw-r--r--include/sound/rt5640.h4
-rw-r--r--include/sound/rt5645.h25
-rw-r--r--include/sound/rt5651.h21
-rw-r--r--include/sound/soc-dai.h2
-rw-r--r--include/sound/soc-dapm.h20
-rw-r--r--include/sound/soc.h155
-rw-r--r--include/sound/sta350.h57
-rw-r--r--include/trace/events/asoc.h92
-rw-r--r--include/trace/events/ext4.h9
-rw-r--r--include/trace/events/module.h4
-rw-r--r--include/uapi/asm-generic/fcntl.h20
-rw-r--r--include/uapi/linux/fuse.h22
-rw-r--r--include/uapi/linux/input.h1
42 files changed, 463 insertions, 217 deletions
diff --git a/include/asm-generic/fixmap.h b/include/asm-generic/fixmap.h
index 5a64ca4621f3..f23174fb9ec4 100644
--- a/include/asm-generic/fixmap.h
+++ b/include/asm-generic/fixmap.h
@@ -93,5 +93,8 @@ static inline unsigned long virt_to_fix(const unsigned long vaddr)
93#define set_fixmap_io(idx, phys) \ 93#define set_fixmap_io(idx, phys) \
94 __set_fixmap(idx, phys, FIXMAP_PAGE_IO) 94 __set_fixmap(idx, phys, FIXMAP_PAGE_IO)
95 95
96#define set_fixmap_offset_io(idx, phys) \
97 __set_fixmap_offset(idx, phys, FIXMAP_PAGE_IO)
98
96#endif /* __ASSEMBLY__ */ 99#endif /* __ASSEMBLY__ */
97#endif /* __ASM_GENERIC_FIXMAP_H */ 100#endif /* __ASM_GENERIC_FIXMAP_H */
diff --git a/include/asm-generic/word-at-a-time.h b/include/asm-generic/word-at-a-time.h
index d3909effd725..94f9ea8abcae 100644
--- a/include/asm-generic/word-at-a-time.h
+++ b/include/asm-generic/word-at-a-time.h
@@ -50,11 +50,7 @@ static inline bool has_zero(unsigned long val, unsigned long *data, const struct
50} 50}
51 51
52#ifndef zero_bytemask 52#ifndef zero_bytemask
53#ifdef CONFIG_64BIT 53#define zero_bytemask(mask) (~1ul << __fls(mask))
54#define zero_bytemask(mask) (~0ul << fls64(mask)) 54#endif
55#else
56#define zero_bytemask(mask) (~0ul << fls(mask))
57#endif /* CONFIG_64BIT */
58#endif /* zero_bytemask */
59 55
60#endif /* _ASM_WORD_AT_A_TIME_H */ 56#endif /* _ASM_WORD_AT_A_TIME_H */
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
index 49376aec2fbb..6dfd64b3a604 100644
--- a/include/drm/drm_pciids.h
+++ b/include/drm/drm_pciids.h
@@ -637,6 +637,22 @@
637 {0x1002, 0x983d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KABINI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 637 {0x1002, 0x983d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KABINI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
638 {0x1002, 0x983e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KABINI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 638 {0x1002, 0x983e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KABINI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
639 {0x1002, 0x983f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KABINI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 639 {0x1002, 0x983f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_KABINI|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
640 {0x1002, 0x9850, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
641 {0x1002, 0x9851, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
642 {0x1002, 0x9852, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
643 {0x1002, 0x9853, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
644 {0x1002, 0x9854, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
645 {0x1002, 0x9855, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
646 {0x1002, 0x9856, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
647 {0x1002, 0x9857, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
648 {0x1002, 0x9858, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
649 {0x1002, 0x9859, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
650 {0x1002, 0x985A, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
651 {0x1002, 0x985B, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
652 {0x1002, 0x985C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
653 {0x1002, 0x985D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
654 {0x1002, 0x985E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
655 {0x1002, 0x985F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_MULLINS|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
640 {0x1002, 0x9900, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 656 {0x1002, 0x9900, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
641 {0x1002, 0x9901, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 657 {0x1002, 0x9901, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
642 {0x1002, 0x9903, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \ 658 {0x1002, 0x9903, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARUBA|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP|RADEON_IS_IGP}, \
diff --git a/include/drm/i915_pciids.h b/include/drm/i915_pciids.h
index 940ece4934ba..012d58fa8ff0 100644
--- a/include/drm/i915_pciids.h
+++ b/include/drm/i915_pciids.h
@@ -191,8 +191,8 @@
191 INTEL_VGA_DEVICE(0x0A06, info), /* ULT GT1 mobile */ \ 191 INTEL_VGA_DEVICE(0x0A06, info), /* ULT GT1 mobile */ \
192 INTEL_VGA_DEVICE(0x0A16, info), /* ULT GT2 mobile */ \ 192 INTEL_VGA_DEVICE(0x0A16, info), /* ULT GT2 mobile */ \
193 INTEL_VGA_DEVICE(0x0A26, info), /* ULT GT3 mobile */ \ 193 INTEL_VGA_DEVICE(0x0A26, info), /* ULT GT3 mobile */ \
194 INTEL_VGA_DEVICE(0x0A0E, info), /* ULT GT1 reserved */ \ 194 INTEL_VGA_DEVICE(0x0A0E, info), /* ULX GT1 mobile */ \
195 INTEL_VGA_DEVICE(0x0A1E, info), /* ULT GT2 reserved */ \ 195 INTEL_VGA_DEVICE(0x0A1E, info), /* ULX GT2 mobile */ \
196 INTEL_VGA_DEVICE(0x0A2E, info), /* ULT GT3 reserved */ \ 196 INTEL_VGA_DEVICE(0x0A2E, info), /* ULT GT3 reserved */ \
197 INTEL_VGA_DEVICE(0x0D06, info), /* CRW GT1 mobile */ \ 197 INTEL_VGA_DEVICE(0x0D06, info), /* CRW GT1 mobile */ \
198 INTEL_VGA_DEVICE(0x0D16, info), /* CRW GT2 mobile */ \ 198 INTEL_VGA_DEVICE(0x0D16, info), /* CRW GT2 mobile */ \
diff --git a/include/dt-bindings/clock/r8a7790-clock.h b/include/dt-bindings/clock/r8a7790-clock.h
index 6548a5fbcf4a..9a7c4c5a35d1 100644
--- a/include/dt-bindings/clock/r8a7790-clock.h
+++ b/include/dt-bindings/clock/r8a7790-clock.h
@@ -33,8 +33,8 @@
33#define R8A7790_CLK_TMU0 25 33#define R8A7790_CLK_TMU0 25
34#define R8A7790_CLK_VSP1_DU1 27 34#define R8A7790_CLK_VSP1_DU1 27
35#define R8A7790_CLK_VSP1_DU0 28 35#define R8A7790_CLK_VSP1_DU0 28
36#define R8A7790_CLK_VSP1_RT 30 36#define R8A7790_CLK_VSP1_R 30
37#define R8A7790_CLK_VSP1_SY 31 37#define R8A7790_CLK_VSP1_S 31
38 38
39/* MSTP2 */ 39/* MSTP2 */
40#define R8A7790_CLK_SCIFA2 2 40#define R8A7790_CLK_SCIFA2 2
diff --git a/include/dt-bindings/clock/r8a7791-clock.h b/include/dt-bindings/clock/r8a7791-clock.h
index 30f82f286e29..f069bc6627cb 100644
--- a/include/dt-bindings/clock/r8a7791-clock.h
+++ b/include/dt-bindings/clock/r8a7791-clock.h
@@ -32,7 +32,7 @@
32#define R8A7791_CLK_TMU0 25 32#define R8A7791_CLK_TMU0 25
33#define R8A7791_CLK_VSP1_DU1 27 33#define R8A7791_CLK_VSP1_DU1 27
34#define R8A7791_CLK_VSP1_DU0 28 34#define R8A7791_CLK_VSP1_DU0 28
35#define R8A7791_CLK_VSP1_SY 31 35#define R8A7791_CLK_VSP1_S 31
36 36
37/* MSTP2 */ 37/* MSTP2 */
38#define R8A7791_CLK_SCIFA2 2 38#define R8A7791_CLK_SCIFA2 2
diff --git a/include/dt-bindings/clock/tegra124-car.h b/include/dt-bindings/clock/tegra124-car.h
index 8c1603b10665..433528ab5161 100644
--- a/include/dt-bindings/clock/tegra124-car.h
+++ b/include/dt-bindings/clock/tegra124-car.h
@@ -29,7 +29,7 @@
29/* 10 (register bit affects spdif_in and spdif_out) */ 29/* 10 (register bit affects spdif_in and spdif_out) */
30#define TEGRA124_CLK_I2S1 11 30#define TEGRA124_CLK_I2S1 11
31#define TEGRA124_CLK_I2C1 12 31#define TEGRA124_CLK_I2C1 12
32#define TEGRA124_CLK_NDFLASH 13 32/* 13 */
33#define TEGRA124_CLK_SDMMC1 14 33#define TEGRA124_CLK_SDMMC1 14
34#define TEGRA124_CLK_SDMMC4 15 34#define TEGRA124_CLK_SDMMC4 15
35/* 16 */ 35/* 16 */
@@ -83,7 +83,7 @@
83 83
84/* 64 */ 84/* 64 */
85#define TEGRA124_CLK_UARTD 65 85#define TEGRA124_CLK_UARTD 65
86#define TEGRA124_CLK_UARTE 66 86/* 66 */
87#define TEGRA124_CLK_I2C3 67 87#define TEGRA124_CLK_I2C3 67
88#define TEGRA124_CLK_SBC4 68 88#define TEGRA124_CLK_SBC4 68
89#define TEGRA124_CLK_SDMMC3 69 89#define TEGRA124_CLK_SDMMC3 69
@@ -97,7 +97,7 @@
97#define TEGRA124_CLK_TRACE 77 97#define TEGRA124_CLK_TRACE 77
98#define TEGRA124_CLK_SOC_THERM 78 98#define TEGRA124_CLK_SOC_THERM 78
99#define TEGRA124_CLK_DTV 79 99#define TEGRA124_CLK_DTV 79
100#define TEGRA124_CLK_NDSPEED 80 100/* 80 */
101#define TEGRA124_CLK_I2CSLOW 81 101#define TEGRA124_CLK_I2CSLOW 81
102#define TEGRA124_CLK_DSIB 82 102#define TEGRA124_CLK_DSIB 82
103#define TEGRA124_CLK_TSEC 83 103#define TEGRA124_CLK_TSEC 83
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index 3b9bfdb83ba6..3c7ec327ebd2 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -221,6 +221,8 @@ struct dentry_operations {
221#define DCACHE_SYMLINK_TYPE 0x00300000 /* Symlink */ 221#define DCACHE_SYMLINK_TYPE 0x00300000 /* Symlink */
222#define DCACHE_FILE_TYPE 0x00400000 /* Other file type */ 222#define DCACHE_FILE_TYPE 0x00400000 /* Other file type */
223 223
224#define DCACHE_MAY_FREE 0x00800000
225
224extern seqlock_t rename_lock; 226extern seqlock_t rename_lock;
225 227
226static inline int dname_external(const struct dentry *dentry) 228static inline int dname_external(const struct dentry *dentry)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 7a9c5bca2b76..878031227c57 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -815,7 +815,7 @@ static inline struct file *get_file(struct file *f)
815#define FL_SLEEP 128 /* A blocking lock */ 815#define FL_SLEEP 128 /* A blocking lock */
816#define FL_DOWNGRADE_PENDING 256 /* Lease is being downgraded */ 816#define FL_DOWNGRADE_PENDING 256 /* Lease is being downgraded */
817#define FL_UNLOCK_PENDING 512 /* Lease is being broken */ 817#define FL_UNLOCK_PENDING 512 /* Lease is being broken */
818#define FL_FILE_PVT 1024 /* lock is private to the file */ 818#define FL_OFDLCK 1024 /* lock is "owned" by struct file */
819 819
820/* 820/*
821 * Special return value from posix_lock_file() and vfs_lock_file() for 821 * Special return value from posix_lock_file() and vfs_lock_file() for
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 9212b017bc72..ae9504b4b67d 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -535,6 +535,7 @@ static inline int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_a
535extern int ftrace_arch_read_dyn_info(char *buf, int size); 535extern int ftrace_arch_read_dyn_info(char *buf, int size);
536 536
537extern int skip_trace(unsigned long ip); 537extern int skip_trace(unsigned long ip);
538extern void ftrace_module_init(struct module *mod);
538 539
539extern void ftrace_disable_daemon(void); 540extern void ftrace_disable_daemon(void);
540extern void ftrace_enable_daemon(void); 541extern void ftrace_enable_daemon(void);
@@ -544,6 +545,7 @@ static inline int ftrace_force_update(void) { return 0; }
544static inline void ftrace_disable_daemon(void) { } 545static inline void ftrace_disable_daemon(void) { }
545static inline void ftrace_enable_daemon(void) { } 546static inline void ftrace_enable_daemon(void) { }
546static inline void ftrace_release_mod(struct module *mod) {} 547static inline void ftrace_release_mod(struct module *mod) {}
548static inline void ftrace_module_init(struct module *mod) {}
547static inline __init int register_ftrace_command(struct ftrace_func_command *cmd) 549static inline __init int register_ftrace_command(struct ftrace_func_command *cmd)
548{ 550{
549 return -EINVAL; 551 return -EINVAL;
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 5b337cf8fb86..b65166de1d9d 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -412,6 +412,16 @@ static inline spinlock_t *huge_pte_lockptr(struct hstate *h,
412 return &mm->page_table_lock; 412 return &mm->page_table_lock;
413} 413}
414 414
415static inline bool hugepages_supported(void)
416{
417 /*
418 * Some platform decide whether they support huge pages at boot
419 * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
420 * there is no such support
421 */
422 return HPAGE_SHIFT != 0;
423}
424
415#else /* CONFIG_HUGETLB_PAGE */ 425#else /* CONFIG_HUGETLB_PAGE */
416struct hstate {}; 426struct hstate {};
417#define alloc_huge_page_node(h, nid) NULL 427#define alloc_huge_page_node(h, nid) NULL
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index c7bfac1c4a7b..97ac926c78a7 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -203,7 +203,40 @@ static inline int check_wakeup_irqs(void) { return 0; }
203 203
204extern cpumask_var_t irq_default_affinity; 204extern cpumask_var_t irq_default_affinity;
205 205
206extern int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask); 206/* Internal implementation. Use the helpers below */
207extern int __irq_set_affinity(unsigned int irq, const struct cpumask *cpumask,
208 bool force);
209
210/**
211 * irq_set_affinity - Set the irq affinity of a given irq
212 * @irq: Interrupt to set affinity
213 * @cpumask: cpumask
214 *
215 * Fails if cpumask does not contain an online CPU
216 */
217static inline int
218irq_set_affinity(unsigned int irq, const struct cpumask *cpumask)
219{
220 return __irq_set_affinity(irq, cpumask, false);
221}
222
223/**
224 * irq_force_affinity - Force the irq affinity of a given irq
225 * @irq: Interrupt to set affinity
226 * @cpumask: cpumask
227 *
228 * Same as irq_set_affinity, but without checking the mask against
229 * online cpus.
230 *
231 * Solely for low level cpu hotplug code, where we need to make per
232 * cpu interrupts affine before the cpu becomes online.
233 */
234static inline int
235irq_force_affinity(unsigned int irq, const struct cpumask *cpumask)
236{
237 return __irq_set_affinity(irq, cpumask, true);
238}
239
207extern int irq_can_set_affinity(unsigned int irq); 240extern int irq_can_set_affinity(unsigned int irq);
208extern int irq_select_affinity(unsigned int irq); 241extern int irq_select_affinity(unsigned int irq);
209 242
diff --git a/include/linux/irq.h b/include/linux/irq.h
index d278838908cb..5c57efb863d0 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -394,7 +394,8 @@ extern void remove_percpu_irq(unsigned int irq, struct irqaction *act);
394 394
395extern void irq_cpu_online(void); 395extern void irq_cpu_online(void);
396extern void irq_cpu_offline(void); 396extern void irq_cpu_offline(void);
397extern int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *cpumask); 397extern int irq_set_affinity_locked(struct irq_data *data,
398 const struct cpumask *cpumask, bool force);
398 399
399#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_PENDING_IRQ) 400#if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_PENDING_IRQ)
400void irq_move_irq(struct irq_data *data); 401void irq_move_irq(struct irq_data *data);
@@ -602,6 +603,8 @@ static inline u32 irq_get_trigger_type(unsigned int irq)
602 return d ? irqd_get_trigger_type(d) : 0; 603 return d ? irqd_get_trigger_type(d) : 0;
603} 604}
604 605
606unsigned int arch_dynirq_lower_bound(unsigned int from);
607
605int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node, 608int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node,
606 struct module *owner); 609 struct module *owner);
607 610
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 1de36be64df4..5ab4e3a76721 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -822,6 +822,7 @@ struct ata_port {
822 unsigned long qc_allocated; 822 unsigned long qc_allocated;
823 unsigned int qc_active; 823 unsigned int qc_active;
824 int nr_active_links; /* #links with active qcs */ 824 int nr_active_links; /* #links with active qcs */
825 unsigned int last_tag; /* track next tag hw expects */
825 826
826 struct ata_link link; /* host default link */ 827 struct ata_link link; /* host default link */
827 struct ata_link *slave_link; /* see ata_slave_link_init() */ 828 struct ata_link *slave_link; /* see ata_slave_link_init() */
diff --git a/include/linux/linkage.h b/include/linux/linkage.h
index 34a513a2727b..a6a42dd02466 100644
--- a/include/linux/linkage.h
+++ b/include/linux/linkage.h
@@ -12,9 +12,9 @@
12#endif 12#endif
13 13
14#ifdef __cplusplus 14#ifdef __cplusplus
15#define CPP_ASMLINKAGE extern "C" __visible 15#define CPP_ASMLINKAGE extern "C"
16#else 16#else
17#define CPP_ASMLINKAGE __visible 17#define CPP_ASMLINKAGE
18#endif 18#endif
19 19
20#ifndef asmlinkage 20#ifndef asmlinkage
diff --git a/include/linux/mfd/rtsx_common.h b/include/linux/mfd/rtsx_common.h
index 7c36cc55d2c7..443176ee1ab0 100644
--- a/include/linux/mfd/rtsx_common.h
+++ b/include/linux/mfd/rtsx_common.h
@@ -45,7 +45,6 @@ struct platform_device;
45struct rtsx_slot { 45struct rtsx_slot {
46 struct platform_device *p_dev; 46 struct platform_device *p_dev;
47 void (*card_event)(struct platform_device *p_dev); 47 void (*card_event)(struct platform_device *p_dev);
48 void (*done_transfer)(struct platform_device *p_dev);
49}; 48};
50 49
51#endif 50#endif
diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h
index 8d6bbd609ad9..a3835976f7c6 100644
--- a/include/linux/mfd/rtsx_pci.h
+++ b/include/linux/mfd/rtsx_pci.h
@@ -943,12 +943,6 @@ void rtsx_pci_send_cmd_no_wait(struct rtsx_pcr *pcr);
943int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout); 943int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout);
944int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist, 944int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist,
945 int num_sg, bool read, int timeout); 945 int num_sg, bool read, int timeout);
946int rtsx_pci_dma_map_sg(struct rtsx_pcr *pcr, struct scatterlist *sglist,
947 int num_sg, bool read);
948int rtsx_pci_dma_unmap_sg(struct rtsx_pcr *pcr, struct scatterlist *sglist,
949 int num_sg, bool read);
950int rtsx_pci_dma_transfer(struct rtsx_pcr *pcr, struct scatterlist *sglist,
951 int sg_count, bool read);
952int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); 946int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len);
953int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); 947int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len);
954int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card); 948int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index bf9811e1321a..d6777060449f 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -370,6 +370,8 @@ static inline int is_vmalloc_or_module_addr(const void *x)
370} 370}
371#endif 371#endif
372 372
373extern void kvfree(const void *addr);
374
373static inline void compound_lock(struct page *page) 375static inline void compound_lock(struct page *page)
374{ 376{
375#ifdef CONFIG_TRANSPARENT_HUGEPAGE 377#ifdef CONFIG_TRANSPARENT_HUGEPAGE
diff --git a/include/linux/netlink.h b/include/linux/netlink.h
index aad8eeaf416d..f64b01787ddc 100644
--- a/include/linux/netlink.h
+++ b/include/linux/netlink.h
@@ -169,4 +169,11 @@ struct netlink_tap {
169extern int netlink_add_tap(struct netlink_tap *nt); 169extern int netlink_add_tap(struct netlink_tap *nt);
170extern int netlink_remove_tap(struct netlink_tap *nt); 170extern int netlink_remove_tap(struct netlink_tap *nt);
171 171
172bool __netlink_ns_capable(const struct netlink_skb_parms *nsp,
173 struct user_namespace *ns, int cap);
174bool netlink_ns_capable(const struct sk_buff *skb,
175 struct user_namespace *ns, int cap);
176bool netlink_capable(const struct sk_buff *skb, int cap);
177bool netlink_net_capable(const struct sk_buff *skb, int cap);
178
172#endif /* __LINUX_NETLINK_H */ 179#endif /* __LINUX_NETLINK_H */
diff --git a/include/linux/of_irq.h b/include/linux/of_irq.h
index 3f23b4472c31..6404253d810d 100644
--- a/include/linux/of_irq.h
+++ b/include/linux/of_irq.h
@@ -44,11 +44,16 @@ extern void of_irq_init(const struct of_device_id *matches);
44 44
45#ifdef CONFIG_OF_IRQ 45#ifdef CONFIG_OF_IRQ
46extern int of_irq_count(struct device_node *dev); 46extern int of_irq_count(struct device_node *dev);
47extern int of_irq_get(struct device_node *dev, int index);
47#else 48#else
48static inline int of_irq_count(struct device_node *dev) 49static inline int of_irq_count(struct device_node *dev)
49{ 50{
50 return 0; 51 return 0;
51} 52}
53static inline int of_irq_get(struct device_node *dev, int index)
54{
55 return 0;
56}
52#endif 57#endif
53 58
54#if defined(CONFIG_OF) 59#if defined(CONFIG_OF)
diff --git a/include/linux/phy/phy.h b/include/linux/phy/phy.h
index e2f5ca96cddc..2760744cb2a7 100644
--- a/include/linux/phy/phy.h
+++ b/include/linux/phy/phy.h
@@ -174,21 +174,29 @@ void devm_of_phy_provider_unregister(struct device *dev,
174#else 174#else
175static inline int phy_pm_runtime_get(struct phy *phy) 175static inline int phy_pm_runtime_get(struct phy *phy)
176{ 176{
177 if (!phy)
178 return 0;
177 return -ENOSYS; 179 return -ENOSYS;
178} 180}
179 181
180static inline int phy_pm_runtime_get_sync(struct phy *phy) 182static inline int phy_pm_runtime_get_sync(struct phy *phy)
181{ 183{
184 if (!phy)
185 return 0;
182 return -ENOSYS; 186 return -ENOSYS;
183} 187}
184 188
185static inline int phy_pm_runtime_put(struct phy *phy) 189static inline int phy_pm_runtime_put(struct phy *phy)
186{ 190{
191 if (!phy)
192 return 0;
187 return -ENOSYS; 193 return -ENOSYS;
188} 194}
189 195
190static inline int phy_pm_runtime_put_sync(struct phy *phy) 196static inline int phy_pm_runtime_put_sync(struct phy *phy)
191{ 197{
198 if (!phy)
199 return 0;
192 return -ENOSYS; 200 return -ENOSYS;
193} 201}
194 202
@@ -204,21 +212,29 @@ static inline void phy_pm_runtime_forbid(struct phy *phy)
204 212
205static inline int phy_init(struct phy *phy) 213static inline int phy_init(struct phy *phy)
206{ 214{
215 if (!phy)
216 return 0;
207 return -ENOSYS; 217 return -ENOSYS;
208} 218}
209 219
210static inline int phy_exit(struct phy *phy) 220static inline int phy_exit(struct phy *phy)
211{ 221{
222 if (!phy)
223 return 0;
212 return -ENOSYS; 224 return -ENOSYS;
213} 225}
214 226
215static inline int phy_power_on(struct phy *phy) 227static inline int phy_power_on(struct phy *phy)
216{ 228{
229 if (!phy)
230 return 0;
217 return -ENOSYS; 231 return -ENOSYS;
218} 232}
219 233
220static inline int phy_power_off(struct phy *phy) 234static inline int phy_power_off(struct phy *phy)
221{ 235{
236 if (!phy)
237 return 0;
222 return -ENOSYS; 238 return -ENOSYS;
223} 239}
224 240
diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h
index e530681bea70..1a4a8c157b31 100644
--- a/include/linux/regulator/consumer.h
+++ b/include/linux/regulator/consumer.h
@@ -258,14 +258,14 @@ regulator_get_exclusive(struct device *dev, const char *id)
258static inline struct regulator *__must_check 258static inline struct regulator *__must_check
259regulator_get_optional(struct device *dev, const char *id) 259regulator_get_optional(struct device *dev, const char *id)
260{ 260{
261 return NULL; 261 return ERR_PTR(-ENODEV);
262} 262}
263 263
264 264
265static inline struct regulator *__must_check 265static inline struct regulator *__must_check
266devm_regulator_get_optional(struct device *dev, const char *id) 266devm_regulator_get_optional(struct device *dev, const char *id)
267{ 267{
268 return NULL; 268 return ERR_PTR(-ENODEV);
269} 269}
270 270
271static inline void regulator_put(struct regulator *regulator) 271static inline void regulator_put(struct regulator *regulator)
diff --git a/include/linux/serio.h b/include/linux/serio.h
index 36aac733840a..9f779c7a2da4 100644
--- a/include/linux/serio.h
+++ b/include/linux/serio.h
@@ -23,6 +23,7 @@ struct serio {
23 23
24 char name[32]; 24 char name[32];
25 char phys[32]; 25 char phys[32];
26 char firmware_id[128];
26 27
27 bool manual_bind; 28 bool manual_bind;
28 29
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h
index f2f7398848cf..d82abd40a3c0 100644
--- a/include/linux/slub_def.h
+++ b/include/linux/slub_def.h
@@ -101,4 +101,13 @@ struct kmem_cache {
101 struct kmem_cache_node *node[MAX_NUMNODES]; 101 struct kmem_cache_node *node[MAX_NUMNODES];
102}; 102};
103 103
104#ifdef CONFIG_SYSFS
105#define SLAB_SUPPORTS_SYSFS
106void sysfs_slab_remove(struct kmem_cache *);
107#else
108static inline void sysfs_slab_remove(struct kmem_cache *s)
109{
110}
111#endif
112
104#endif /* _LINUX_SLUB_DEF_H */ 113#endif /* _LINUX_SLUB_DEF_H */
diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h
index 54f91d35e5fd..46cca4c06848 100644
--- a/include/linux/sock_diag.h
+++ b/include/linux/sock_diag.h
@@ -23,7 +23,7 @@ int sock_diag_check_cookie(void *sk, __u32 *cookie);
23void sock_diag_save_cookie(void *sk, __u32 *cookie); 23void sock_diag_save_cookie(void *sk, __u32 *cookie);
24 24
25int sock_diag_put_meminfo(struct sock *sk, struct sk_buff *skb, int attr); 25int sock_diag_put_meminfo(struct sock *sk, struct sk_buff *skb, int attr);
26int sock_diag_put_filterinfo(struct user_namespace *user_ns, struct sock *sk, 26int sock_diag_put_filterinfo(bool may_report_filterinfo, struct sock *sk,
27 struct sk_buff *skb, int attrtype); 27 struct sk_buff *skb, int attrtype);
28 28
29#endif 29#endif
diff --git a/include/net/af_vsock.h b/include/net/af_vsock.h
index 7d64d3609ec9..428277869400 100644
--- a/include/net/af_vsock.h
+++ b/include/net/af_vsock.h
@@ -155,7 +155,11 @@ struct vsock_transport {
155 155
156/**** CORE ****/ 156/**** CORE ****/
157 157
158int vsock_core_init(const struct vsock_transport *t); 158int __vsock_core_init(const struct vsock_transport *t, struct module *owner);
159static inline int vsock_core_init(const struct vsock_transport *t)
160{
161 return __vsock_core_init(t, THIS_MODULE);
162}
159void vsock_core_exit(void); 163void vsock_core_exit(void);
160 164
161/**** UTILS ****/ 165/**** UTILS ****/
diff --git a/include/net/sock.h b/include/net/sock.h
index 8338a14e4805..21569cf456ed 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2255,6 +2255,11 @@ int sock_get_timestampns(struct sock *, struct timespec __user *);
2255int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, int level, 2255int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, int level,
2256 int type); 2256 int type);
2257 2257
2258bool sk_ns_capable(const struct sock *sk,
2259 struct user_namespace *user_ns, int cap);
2260bool sk_capable(const struct sock *sk, int cap);
2261bool sk_net_capable(const struct sock *sk, int cap);
2262
2258/* 2263/*
2259 * Enable debug/info messages 2264 * Enable debug/info messages
2260 */ 2265 */
diff --git a/include/sound/cs42l56.h b/include/sound/cs42l56.h
new file mode 100644
index 000000000000..2467c8ff132c
--- /dev/null
+++ b/include/sound/cs42l56.h
@@ -0,0 +1,48 @@
1/*
2 * linux/sound/cs42l56.h -- Platform data for CS42L56
3 *
4 * Copyright (c) 2014 Cirrus Logic Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10
11#ifndef __CS42L56_H
12#define __CS42L56_H
13
14struct cs42l56_platform_data {
15
16 /* GPIO for Reset */
17 unsigned int gpio_nreset;
18
19 /* MICBIAS Level. Check datasheet Pg48 */
20 unsigned int micbias_lvl;
21
22 /* Analog Input 1A Reference 0=Single 1=Pseudo-Differential */
23 unsigned int ain1a_ref_cfg;
24
25 /* Analog Input 2A Reference 0=Single 1=Pseudo-Differential */
26 unsigned int ain2a_ref_cfg;
27
28 /* Analog Input 1B Reference 0=Single 1=Pseudo-Differential */
29 unsigned int ain1b_ref_cfg;
30
31 /* Analog Input 2B Reference 0=Single 1=Pseudo-Differential */
32 unsigned int ain2b_ref_cfg;
33
34 /* Charge Pump Freq. Check datasheet Pg62 */
35 unsigned int chgfreq;
36
37 /* HighPass Filter Right Channel Corner Frequency */
38 unsigned int hpfb_freq;
39
40 /* HighPass Filter Left Channel Corner Frequency */
41 unsigned int hpfa_freq;
42
43 /* Adaptive Power Control for LO/HP */
44 unsigned int adaptive_pwr;
45
46};
47
48#endif /* __CS42L56_H */
diff --git a/include/sound/rcar_snd.h b/include/sound/rcar_snd.h
index 34a3c02a4576..f4a706f82cb7 100644
--- a/include/sound/rcar_snd.h
+++ b/include/sound/rcar_snd.h
@@ -34,47 +34,39 @@
34 * B : SSI direction 34 * B : SSI direction
35 */ 35 */
36#define RSND_SSI_CLK_PIN_SHARE (1 << 31) 36#define RSND_SSI_CLK_PIN_SHARE (1 << 31)
37#define RSND_SSI_PLAY (1 << 24)
38 37
39#define RSND_SSI(_dma_id, _pio_irq, _flags) \ 38#define RSND_SSI(_dma_id, _pio_irq, _flags) \
40{ .dma_id = _dma_id, .pio_irq = _pio_irq, .flags = _flags } 39{ .dma_id = _dma_id, .pio_irq = _pio_irq, .flags = _flags }
41#define RSND_SSI_SET(_dai_id, _dma_id, _pio_irq, _flags) \
42{ .dai_id = _dai_id, .dma_id = _dma_id, .pio_irq = _pio_irq, .flags = _flags }
43#define RSND_SSI_UNUSED \ 40#define RSND_SSI_UNUSED \
44{ .dai_id = -1, .dma_id = -1, .pio_irq = -1, .flags = 0 } 41{ .dma_id = -1, .pio_irq = -1, .flags = 0 }
45 42
46struct rsnd_ssi_platform_info { 43struct rsnd_ssi_platform_info {
47 int dai_id; /* will be removed */
48 int dma_id; 44 int dma_id;
49 int pio_irq; 45 int pio_irq;
50 u32 flags; 46 u32 flags;
51}; 47};
52 48
53/*
54 * flags
55 */
56#define RSND_SCU_USE_HPBIF (1 << 31) /* it needs RSND_SSI_DEPENDENT */
57
58#define RSND_SRC(rate, _dma_id) \ 49#define RSND_SRC(rate, _dma_id) \
59{ .flags = RSND_SCU_USE_HPBIF, .convert_rate = rate, .dma_id = _dma_id, } 50{ .convert_rate = rate, .dma_id = _dma_id, }
60#define RSND_SRC_SET(rate, _dma_id) \
61 { .flags = RSND_SCU_USE_HPBIF, .convert_rate = rate, .dma_id = _dma_id, }
62#define RSND_SRC_UNUSED \ 51#define RSND_SRC_UNUSED \
63 { .flags = 0, .convert_rate = 0, .dma_id = 0, } 52{ .convert_rate = 0, .dma_id = -1, }
64
65#define rsnd_scu_platform_info rsnd_src_platform_info
66#define src_info scu_info
67#define src_info_nr scu_info_nr
68 53
69struct rsnd_src_platform_info { 54struct rsnd_src_platform_info {
70 u32 flags;
71 u32 convert_rate; /* sampling rate convert */ 55 u32 convert_rate; /* sampling rate convert */
72 int dma_id; /* for Gen2 SCU */ 56 int dma_id; /* for Gen2 SCU */
73}; 57};
74 58
59/*
60 * flags
61 */
62struct rsnd_dvc_platform_info {
63 u32 flags;
64};
65
75struct rsnd_dai_path_info { 66struct rsnd_dai_path_info {
76 struct rsnd_ssi_platform_info *ssi; 67 struct rsnd_ssi_platform_info *ssi;
77 struct rsnd_src_platform_info *src; 68 struct rsnd_src_platform_info *src;
69 struct rsnd_dvc_platform_info *dvc;
78}; 70};
79 71
80struct rsnd_dai_platform_info { 72struct rsnd_dai_platform_info {
@@ -99,6 +91,8 @@ struct rcar_snd_info {
99 int ssi_info_nr; 91 int ssi_info_nr;
100 struct rsnd_src_platform_info *src_info; 92 struct rsnd_src_platform_info *src_info;
101 int src_info_nr; 93 int src_info_nr;
94 struct rsnd_dvc_platform_info *dvc_info;
95 int dvc_info_nr;
102 struct rsnd_dai_platform_info *dai_info; 96 struct rsnd_dai_platform_info *dai_info;
103 int dai_info_nr; 97 int dai_info_nr;
104 int (*start)(int id); 98 int (*start)(int id);
diff --git a/include/sound/rt5640.h b/include/sound/rt5640.h
index 27cc75ed67f8..59d26dd81e45 100644
--- a/include/sound/rt5640.h
+++ b/include/sound/rt5640.h
@@ -16,6 +16,10 @@ struct rt5640_platform_data {
16 bool in1_diff; 16 bool in1_diff;
17 bool in2_diff; 17 bool in2_diff;
18 18
19 bool dmic_en;
20 bool dmic1_data_pin; /* 0 = IN1P; 1 = GPIO3 */
21 bool dmic2_data_pin; /* 0 = IN1N; 1 = GPIO4 */
22
19 int ldo1_en; /* GPIO for LDO1_EN */ 23 int ldo1_en; /* GPIO for LDO1_EN */
20}; 24};
21 25
diff --git a/include/sound/rt5645.h b/include/sound/rt5645.h
new file mode 100644
index 000000000000..1de744c242f6
--- /dev/null
+++ b/include/sound/rt5645.h
@@ -0,0 +1,25 @@
1/*
2 * linux/sound/rt5645.h -- Platform data for RT5645
3 *
4 * Copyright 2013 Realtek Microelectronics
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10
11#ifndef __LINUX_SND_RT5645_H
12#define __LINUX_SND_RT5645_H
13
14struct rt5645_platform_data {
15 /* IN2 can optionally be differential */
16 bool in2_diff;
17
18 bool dmic_en;
19 unsigned int dmic1_data_pin;
20 /* 0 = IN2N; 1 = GPIO5; 2 = GPIO11 */
21 unsigned int dmic2_data_pin;
22 /* 0 = IN2P; 1 = GPIO6; 2 = GPIO10; 3 = GPIO12 */
23};
24
25#endif
diff --git a/include/sound/rt5651.h b/include/sound/rt5651.h
new file mode 100644
index 000000000000..d35de758dfb5
--- /dev/null
+++ b/include/sound/rt5651.h
@@ -0,0 +1,21 @@
1/*
2 * linux/sound/rt286.h -- Platform data for RT286
3 *
4 * Copyright 2013 Realtek Microelectronics
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10
11#ifndef __LINUX_SND_RT5651_H
12#define __LINUX_SND_RT5651_H
13
14struct rt5651_platform_data {
15 /* IN2 can optionally be differential */
16 bool in2_diff;
17
18 bool dmic_en;
19};
20
21#endif
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index fad76769f153..688f2ba8009f 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -252,7 +252,6 @@ struct snd_soc_dai {
252 unsigned int symmetric_rates:1; 252 unsigned int symmetric_rates:1;
253 unsigned int symmetric_channels:1; 253 unsigned int symmetric_channels:1;
254 unsigned int symmetric_samplebits:1; 254 unsigned int symmetric_samplebits:1;
255 struct snd_pcm_runtime *runtime;
256 unsigned int active; 255 unsigned int active;
257 unsigned char probed:1; 256 unsigned char probed:1;
258 257
@@ -277,7 +276,6 @@ struct snd_soc_dai {
277 struct snd_soc_card *card; 276 struct snd_soc_card *card;
278 277
279 struct list_head list; 278 struct list_head list;
280 struct list_head card_list;
281}; 279};
282 280
283static inline void *snd_soc_dai_get_dma_data(const struct snd_soc_dai *dai, 281static inline void *snd_soc_dai_get_dma_data(const struct snd_soc_dai *dai,
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index ef78f562f4a8..6b59471cdf44 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -107,10 +107,6 @@ struct device;
107{ .id = snd_soc_dapm_mux, .name = wname, \ 107{ .id = snd_soc_dapm_mux, .name = wname, \
108 SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert), \ 108 SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert), \
109 .kcontrol_news = wcontrols, .num_kcontrols = 1} 109 .kcontrol_news = wcontrols, .num_kcontrols = 1}
110#define SND_SOC_DAPM_VIRT_MUX(wname, wreg, wshift, winvert, wcontrols) \
111 SND_SOC_DAPM_MUX(wname, wreg, wshift, winvert, wcontrols)
112#define SND_SOC_DAPM_VALUE_MUX(wname, wreg, wshift, winvert, wcontrols) \
113 SND_SOC_DAPM_MUX(wname, wreg, wshift, winvert, wcontrols)
114 110
115/* Simplified versions of above macros, assuming wncontrols = ARRAY_SIZE(wcontrols) */ 111/* Simplified versions of above macros, assuming wncontrols = ARRAY_SIZE(wcontrols) */
116#define SOC_PGA_ARRAY(wname, wreg, wshift, winvert,\ 112#define SOC_PGA_ARRAY(wname, wreg, wshift, winvert,\
@@ -166,10 +162,6 @@ struct device;
166 SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert), \ 162 SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert), \
167 .kcontrol_news = wcontrols, .num_kcontrols = 1, \ 163 .kcontrol_news = wcontrols, .num_kcontrols = 1, \
168 .event = wevent, .event_flags = wflags} 164 .event = wevent, .event_flags = wflags}
169#define SND_SOC_DAPM_VIRT_MUX_E(wname, wreg, wshift, winvert, wcontrols, \
170 wevent, wflags) \
171 SND_SOC_DAPM_MUX_E(wname, wreg, wshift, winvert, wcontrols, wevent, \
172 wflags)
173 165
174/* additional sequencing control within an event type */ 166/* additional sequencing control within an event type */
175#define SND_SOC_DAPM_PGA_S(wname, wsubseq, wreg, wshift, winvert, \ 167#define SND_SOC_DAPM_PGA_S(wname, wsubseq, wreg, wshift, winvert, \
@@ -256,9 +248,8 @@ struct device;
256/* generic widgets */ 248/* generic widgets */
257#define SND_SOC_DAPM_REG(wid, wname, wreg, wshift, wmask, won_val, woff_val) \ 249#define SND_SOC_DAPM_REG(wid, wname, wreg, wshift, wmask, won_val, woff_val) \
258{ .id = wid, .name = wname, .kcontrol_news = NULL, .num_kcontrols = 0, \ 250{ .id = wid, .name = wname, .kcontrol_news = NULL, .num_kcontrols = 0, \
259 .reg = -((wreg) + 1), .shift = wshift, .mask = wmask, \ 251 .reg = wreg, .shift = wshift, .mask = wmask, \
260 .on_val = won_val, .off_val = woff_val, .event = dapm_reg_event, \ 252 .on_val = won_val, .off_val = woff_val, }
261 .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD}
262#define SND_SOC_DAPM_SUPPLY(wname, wreg, wshift, winvert, wevent, wflags) \ 253#define SND_SOC_DAPM_SUPPLY(wname, wreg, wshift, winvert, wevent, wflags) \
263{ .id = snd_soc_dapm_supply, .name = wname, \ 254{ .id = snd_soc_dapm_supply, .name = wname, \
264 SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert), \ 255 SND_SOC_DAPM_INIT_REG_VAL(wreg, wshift, winvert), \
@@ -305,16 +296,12 @@ struct device;
305 .get = snd_soc_dapm_get_enum_double, \ 296 .get = snd_soc_dapm_get_enum_double, \
306 .put = snd_soc_dapm_put_enum_double, \ 297 .put = snd_soc_dapm_put_enum_double, \
307 .private_value = (unsigned long)&xenum } 298 .private_value = (unsigned long)&xenum }
308#define SOC_DAPM_ENUM_VIRT(xname, xenum) \
309 SOC_DAPM_ENUM(xname, xenum)
310#define SOC_DAPM_ENUM_EXT(xname, xenum, xget, xput) \ 299#define SOC_DAPM_ENUM_EXT(xname, xenum, xget, xput) \
311{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ 300{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
312 .info = snd_soc_info_enum_double, \ 301 .info = snd_soc_info_enum_double, \
313 .get = xget, \ 302 .get = xget, \
314 .put = xput, \ 303 .put = xput, \
315 .private_value = (unsigned long)&xenum } 304 .private_value = (unsigned long)&xenum }
316#define SOC_DAPM_VALUE_ENUM(xname, xenum) \
317 SOC_DAPM_ENUM(xname, xenum)
318#define SOC_DAPM_PIN_SWITCH(xname) \ 305#define SOC_DAPM_PIN_SWITCH(xname) \
319{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname " Switch", \ 306{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname " Switch", \
320 .info = snd_soc_dapm_info_pin_switch, \ 307 .info = snd_soc_dapm_info_pin_switch, \
@@ -362,8 +349,6 @@ struct regulator;
362struct snd_soc_dapm_widget_list; 349struct snd_soc_dapm_widget_list;
363struct snd_soc_dapm_update; 350struct snd_soc_dapm_update;
364 351
365int dapm_reg_event(struct snd_soc_dapm_widget *w,
366 struct snd_kcontrol *kcontrol, int event);
367int dapm_regulator_event(struct snd_soc_dapm_widget *w, 352int dapm_regulator_event(struct snd_soc_dapm_widget *w,
368 struct snd_kcontrol *kcontrol, int event); 353 struct snd_kcontrol *kcontrol, int event);
369int dapm_clock_event(struct snd_soc_dapm_widget *w, 354int dapm_clock_event(struct snd_soc_dapm_widget *w,
@@ -606,6 +591,7 @@ struct snd_soc_dapm_context {
606 enum snd_soc_dapm_type, int); 591 enum snd_soc_dapm_type, int);
607 592
608 struct device *dev; /* from parent - for debug */ 593 struct device *dev; /* from parent - for debug */
594 struct snd_soc_component *component; /* parent component */
609 struct snd_soc_codec *codec; /* parent codec */ 595 struct snd_soc_codec *codec; /* parent codec */
610 struct snd_soc_platform *platform; /* parent platform */ 596 struct snd_soc_platform *platform; /* parent platform */
611 struct snd_soc_card *card; /* parent card */ 597 struct snd_soc_card *card; /* parent card */
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 0b83168d8ff4..dcdcc95efd1d 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -196,8 +196,6 @@
196 .info = snd_soc_info_enum_double, \ 196 .info = snd_soc_info_enum_double, \
197 .get = snd_soc_get_enum_double, .put = snd_soc_put_enum_double, \ 197 .get = snd_soc_get_enum_double, .put = snd_soc_put_enum_double, \
198 .private_value = (unsigned long)&xenum } 198 .private_value = (unsigned long)&xenum }
199#define SOC_VALUE_ENUM(xname, xenum) \
200 SOC_ENUM(xname, xenum)
201#define SOC_SINGLE_EXT(xname, xreg, xshift, xmax, xinvert,\ 199#define SOC_SINGLE_EXT(xname, xreg, xshift, xmax, xinvert,\
202 xhandler_get, xhandler_put) \ 200 xhandler_get, xhandler_put) \
203{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ 201{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
@@ -266,6 +264,13 @@
266 {.base = xbase, .num_regs = xregs, \ 264 {.base = xbase, .num_regs = xregs, \
267 .mask = xmask }) } 265 .mask = xmask }) }
268 266
267#define SND_SOC_BYTES_EXT(xname, xcount, xhandler_get, xhandler_put) \
268{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
269 .info = snd_soc_bytes_info_ext, \
270 .get = xhandler_get, .put = xhandler_put, \
271 .private_value = (unsigned long)&(struct soc_bytes_ext) \
272 {.max = xcount} }
273
269#define SOC_SINGLE_XR_SX(xname, xregbase, xregcount, xnbits, \ 274#define SOC_SINGLE_XR_SX(xname, xregbase, xregcount, xnbits, \
270 xmin, xmax, xinvert) \ 275 xmin, xmax, xinvert) \
271{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ 276{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \
@@ -377,6 +382,8 @@ int snd_soc_resume(struct device *dev);
377int snd_soc_poweroff(struct device *dev); 382int snd_soc_poweroff(struct device *dev);
378int snd_soc_register_platform(struct device *dev, 383int snd_soc_register_platform(struct device *dev,
379 const struct snd_soc_platform_driver *platform_drv); 384 const struct snd_soc_platform_driver *platform_drv);
385int devm_snd_soc_register_platform(struct device *dev,
386 const struct snd_soc_platform_driver *platform_drv);
380void snd_soc_unregister_platform(struct device *dev); 387void snd_soc_unregister_platform(struct device *dev);
381int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform, 388int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform,
382 const struct snd_soc_platform_driver *platform_drv); 389 const struct snd_soc_platform_driver *platform_drv);
@@ -393,14 +400,6 @@ int devm_snd_soc_register_component(struct device *dev,
393 const struct snd_soc_component_driver *cmpnt_drv, 400 const struct snd_soc_component_driver *cmpnt_drv,
394 struct snd_soc_dai_driver *dai_drv, int num_dai); 401 struct snd_soc_dai_driver *dai_drv, int num_dai);
395void snd_soc_unregister_component(struct device *dev); 402void snd_soc_unregister_component(struct device *dev);
396int snd_soc_codec_volatile_register(struct snd_soc_codec *codec,
397 unsigned int reg);
398int snd_soc_codec_readable_register(struct snd_soc_codec *codec,
399 unsigned int reg);
400int snd_soc_codec_writable_register(struct snd_soc_codec *codec,
401 unsigned int reg);
402int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec,
403 struct regmap *regmap);
404int snd_soc_cache_sync(struct snd_soc_codec *codec); 403int snd_soc_cache_sync(struct snd_soc_codec *codec);
405int snd_soc_cache_init(struct snd_soc_codec *codec); 404int snd_soc_cache_init(struct snd_soc_codec *codec);
406int snd_soc_cache_exit(struct snd_soc_codec *codec); 405int snd_soc_cache_exit(struct snd_soc_codec *codec);
@@ -469,12 +468,12 @@ static inline void snd_soc_jack_free_gpios(struct snd_soc_jack *jack, int count,
469#endif 468#endif
470 469
471/* codec register bit access */ 470/* codec register bit access */
472int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, 471int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned int reg,
473 unsigned int mask, unsigned int value); 472 unsigned int mask, unsigned int value);
474int snd_soc_update_bits_locked(struct snd_soc_codec *codec, 473int snd_soc_update_bits_locked(struct snd_soc_codec *codec,
475 unsigned short reg, unsigned int mask, 474 unsigned int reg, unsigned int mask,
476 unsigned int value); 475 unsigned int value);
477int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg, 476int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned int reg,
478 unsigned int mask, unsigned int value); 477 unsigned int mask, unsigned int value);
479 478
480int snd_soc_new_ac97_codec(struct snd_soc_codec *codec, 479int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
@@ -540,6 +539,8 @@ int snd_soc_bytes_get(struct snd_kcontrol *kcontrol,
540 struct snd_ctl_elem_value *ucontrol); 539 struct snd_ctl_elem_value *ucontrol);
541int snd_soc_bytes_put(struct snd_kcontrol *kcontrol, 540int snd_soc_bytes_put(struct snd_kcontrol *kcontrol,
542 struct snd_ctl_elem_value *ucontrol); 541 struct snd_ctl_elem_value *ucontrol);
542int snd_soc_bytes_info_ext(struct snd_kcontrol *kcontrol,
543 struct snd_ctl_elem_info *ucontrol);
543int snd_soc_info_xr_sx(struct snd_kcontrol *kcontrol, 544int snd_soc_info_xr_sx(struct snd_kcontrol *kcontrol,
544 struct snd_ctl_elem_info *uinfo); 545 struct snd_ctl_elem_info *uinfo);
545int snd_soc_get_xr_sx(struct snd_kcontrol *kcontrol, 546int snd_soc_get_xr_sx(struct snd_kcontrol *kcontrol,
@@ -668,6 +669,7 @@ struct snd_soc_component {
668 unsigned int active; 669 unsigned int active;
669 670
670 unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */ 671 unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */
672 unsigned int registered_as_component:1;
671 673
672 struct list_head list; 674 struct list_head list;
673 675
@@ -677,6 +679,14 @@ struct snd_soc_component {
677 const struct snd_soc_component_driver *driver; 679 const struct snd_soc_component_driver *driver;
678 680
679 struct list_head dai_list; 681 struct list_head dai_list;
682
683 int (*read)(struct snd_soc_component *, unsigned int, unsigned int *);
684 int (*write)(struct snd_soc_component *, unsigned int, unsigned int);
685
686 struct regmap *regmap;
687 int val_bytes;
688
689 struct mutex io_mutex;
680}; 690};
681 691
682/* SoC Audio Codec device */ 692/* SoC Audio Codec device */
@@ -691,10 +701,6 @@ struct snd_soc_codec {
691 struct snd_soc_card *card; 701 struct snd_soc_card *card;
692 struct list_head list; 702 struct list_head list;
693 struct list_head card_list; 703 struct list_head card_list;
694 int num_dai;
695 int (*volatile_register)(struct snd_soc_codec *, unsigned int);
696 int (*readable_register)(struct snd_soc_codec *, unsigned int);
697 int (*writable_register)(struct snd_soc_codec *, unsigned int);
698 704
699 /* runtime */ 705 /* runtime */
700 struct snd_ac97 *ac97; /* for ad-hoc ac97 devices */ 706 struct snd_ac97 *ac97; /* for ad-hoc ac97 devices */
@@ -704,18 +710,14 @@ struct snd_soc_codec {
704 unsigned int ac97_registered:1; /* Codec has been AC97 registered */ 710 unsigned int ac97_registered:1; /* Codec has been AC97 registered */
705 unsigned int ac97_created:1; /* Codec has been created by SoC */ 711 unsigned int ac97_created:1; /* Codec has been created by SoC */
706 unsigned int cache_init:1; /* codec cache has been initialized */ 712 unsigned int cache_init:1; /* codec cache has been initialized */
707 unsigned int using_regmap:1; /* using regmap access */
708 u32 cache_only; /* Suppress writes to hardware */ 713 u32 cache_only; /* Suppress writes to hardware */
709 u32 cache_sync; /* Cache needs to be synced to hardware */ 714 u32 cache_sync; /* Cache needs to be synced to hardware */
710 715
711 /* codec IO */ 716 /* codec IO */
712 void *control_data; /* codec control (i2c/3wire) data */ 717 void *control_data; /* codec control (i2c/3wire) data */
713 hw_write_t hw_write; 718 hw_write_t hw_write;
714 unsigned int (*read)(struct snd_soc_codec *, unsigned int);
715 int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
716 void *reg_cache; 719 void *reg_cache;
717 struct mutex cache_rw_mutex; 720 struct mutex cache_rw_mutex;
718 int val_bytes;
719 721
720 /* component */ 722 /* component */
721 struct snd_soc_component component; 723 struct snd_soc_component component;
@@ -754,13 +756,9 @@ struct snd_soc_codec_driver {
754 unsigned int freq_in, unsigned int freq_out); 756 unsigned int freq_in, unsigned int freq_out);
755 757
756 /* codec IO */ 758 /* codec IO */
759 struct regmap *(*get_regmap)(struct device *);
757 unsigned int (*read)(struct snd_soc_codec *, unsigned int); 760 unsigned int (*read)(struct snd_soc_codec *, unsigned int);
758 int (*write)(struct snd_soc_codec *, unsigned int, unsigned int); 761 int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
759 int (*display_register)(struct snd_soc_codec *, char *,
760 size_t, unsigned int);
761 int (*volatile_register)(struct snd_soc_codec *, unsigned int);
762 int (*readable_register)(struct snd_soc_codec *, unsigned int);
763 int (*writable_register)(struct snd_soc_codec *, unsigned int);
764 unsigned int reg_cache_size; 762 unsigned int reg_cache_size;
765 short reg_cache_step; 763 short reg_cache_step;
766 short reg_word_size; 764 short reg_word_size;
@@ -791,6 +789,7 @@ struct snd_soc_platform_driver {
791 int (*remove)(struct snd_soc_platform *); 789 int (*remove)(struct snd_soc_platform *);
792 int (*suspend)(struct snd_soc_dai *dai); 790 int (*suspend)(struct snd_soc_dai *dai);
793 int (*resume)(struct snd_soc_dai *dai); 791 int (*resume)(struct snd_soc_dai *dai);
792 struct snd_soc_component_driver component_driver;
794 793
795 /* pcm creation and destruction */ 794 /* pcm creation and destruction */
796 int (*pcm_new)(struct snd_soc_pcm_runtime *); 795 int (*pcm_new)(struct snd_soc_pcm_runtime *);
@@ -835,7 +834,6 @@ struct snd_soc_platform {
835 int id; 834 int id;
836 struct device *dev; 835 struct device *dev;
837 const struct snd_soc_platform_driver *driver; 836 const struct snd_soc_platform_driver *driver;
838 struct mutex mutex;
839 837
840 unsigned int suspended:1; /* platform is suspended */ 838 unsigned int suspended:1; /* platform is suspended */
841 unsigned int probed:1; 839 unsigned int probed:1;
@@ -844,6 +842,8 @@ struct snd_soc_platform {
844 struct list_head list; 842 struct list_head list;
845 struct list_head card_list; 843 struct list_head card_list;
846 844
845 struct snd_soc_component component;
846
847 struct snd_soc_dapm_context dapm; 847 struct snd_soc_dapm_context dapm;
848 848
849#ifdef CONFIG_DEBUG_FS 849#ifdef CONFIG_DEBUG_FS
@@ -931,7 +931,12 @@ struct snd_soc_dai_link {
931}; 931};
932 932
933struct snd_soc_codec_conf { 933struct snd_soc_codec_conf {
934 /*
935 * specify device either by device name, or by
936 * DT/OF node, but not both.
937 */
934 const char *dev_name; 938 const char *dev_name;
939 const struct device_node *of_node;
935 940
936 /* 941 /*
937 * optional map of kcontrol, widget and path name prefixes that are 942 * optional map of kcontrol, widget and path name prefixes that are
@@ -942,7 +947,13 @@ struct snd_soc_codec_conf {
942 947
943struct snd_soc_aux_dev { 948struct snd_soc_aux_dev {
944 const char *name; /* Codec name */ 949 const char *name; /* Codec name */
945 const char *codec_name; /* for multi-codec */ 950
951 /*
952 * specify multi-codec either by device name, or by
953 * DT/OF node, but not both.
954 */
955 const char *codec_name;
956 const struct device_node *codec_of_node;
946 957
947 /* codec/machine specific init - e.g. add machine controls */ 958 /* codec/machine specific init - e.g. add machine controls */
948 int (*init)(struct snd_soc_dapm_context *dapm); 959 int (*init)(struct snd_soc_dapm_context *dapm);
@@ -957,7 +968,6 @@ struct snd_soc_card {
957 struct snd_card *snd_card; 968 struct snd_card *snd_card;
958 struct module *owner; 969 struct module *owner;
959 970
960 struct list_head list;
961 struct mutex mutex; 971 struct mutex mutex;
962 struct mutex dapm_mutex; 972 struct mutex dapm_mutex;
963 973
@@ -1020,7 +1030,6 @@ struct snd_soc_card {
1020 /* lists of probed devices belonging to this card */ 1030 /* lists of probed devices belonging to this card */
1021 struct list_head codec_dev_list; 1031 struct list_head codec_dev_list;
1022 struct list_head platform_dev_list; 1032 struct list_head platform_dev_list;
1023 struct list_head dai_dev_list;
1024 1033
1025 struct list_head widgets; 1034 struct list_head widgets;
1026 struct list_head paths; 1035 struct list_head paths;
@@ -1090,6 +1099,10 @@ struct soc_bytes {
1090 u32 mask; 1099 u32 mask;
1091}; 1100};
1092 1101
1102struct soc_bytes_ext {
1103 int max;
1104};
1105
1093/* multi register control */ 1106/* multi register control */
1094struct soc_mreg_control { 1107struct soc_mreg_control {
1095 long min, max; 1108 long min, max;
@@ -1120,10 +1133,39 @@ static inline struct snd_soc_codec *snd_soc_component_to_codec(
1120 return container_of(component, struct snd_soc_codec, component); 1133 return container_of(component, struct snd_soc_codec, component);
1121} 1134}
1122 1135
1136/**
1137 * snd_soc_component_to_platform() - Casts a component to the platform it is embedded in
1138 * @component: The component to cast to a platform
1139 *
1140 * This function must only be used on components that are known to be platforms.
1141 * Otherwise the behavior is undefined.
1142 */
1143static inline struct snd_soc_platform *snd_soc_component_to_platform(
1144 struct snd_soc_component *component)
1145{
1146 return container_of(component, struct snd_soc_platform, component);
1147}
1148
1123/* codec IO */ 1149/* codec IO */
1124unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg); 1150unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg);
1125unsigned int snd_soc_write(struct snd_soc_codec *codec, 1151int snd_soc_write(struct snd_soc_codec *codec, unsigned int reg,
1126 unsigned int reg, unsigned int val); 1152 unsigned int val);
1153
1154/* component IO */
1155int snd_soc_component_read(struct snd_soc_component *component,
1156 unsigned int reg, unsigned int *val);
1157int snd_soc_component_write(struct snd_soc_component *component,
1158 unsigned int reg, unsigned int val);
1159int snd_soc_component_update_bits(struct snd_soc_component *component,
1160 unsigned int reg, unsigned int mask, unsigned int val);
1161int snd_soc_component_update_bits_async(struct snd_soc_component *component,
1162 unsigned int reg, unsigned int mask, unsigned int val);
1163void snd_soc_component_async_complete(struct snd_soc_component *component);
1164int snd_soc_component_test_bits(struct snd_soc_component *component,
1165 unsigned int reg, unsigned int mask, unsigned int value);
1166
1167int snd_soc_component_init_io(struct snd_soc_component *component,
1168 struct regmap *regmap);
1127 1169
1128/* device driver data */ 1170/* device driver data */
1129 1171
@@ -1173,7 +1215,6 @@ static inline void *snd_soc_pcm_get_drvdata(struct snd_soc_pcm_runtime *rtd)
1173 1215
1174static inline void snd_soc_initialize_card_lists(struct snd_soc_card *card) 1216static inline void snd_soc_initialize_card_lists(struct snd_soc_card *card)
1175{ 1217{
1176 INIT_LIST_HEAD(&card->dai_dev_list);
1177 INIT_LIST_HEAD(&card->codec_dev_list); 1218 INIT_LIST_HEAD(&card->codec_dev_list);
1178 INIT_LIST_HEAD(&card->platform_dev_list); 1219 INIT_LIST_HEAD(&card->platform_dev_list);
1179 INIT_LIST_HEAD(&card->widgets); 1220 INIT_LIST_HEAD(&card->widgets);
@@ -1228,6 +1269,50 @@ static inline bool snd_soc_codec_is_active(struct snd_soc_codec *codec)
1228 return snd_soc_component_is_active(&codec->component); 1269 return snd_soc_component_is_active(&codec->component);
1229} 1270}
1230 1271
1272/**
1273 * snd_soc_kcontrol_component() - Returns the component that registered the
1274 * control
1275 * @kcontrol: The control for which to get the component
1276 *
1277 * Note: This function will work correctly if the control has been registered
1278 * for a component. Either with snd_soc_add_codec_controls() or
1279 * snd_soc_add_platform_controls() or via table based setup for either a
1280 * CODEC, a platform or component driver. Otherwise the behavior is undefined.
1281 */
1282static inline struct snd_soc_component *snd_soc_kcontrol_component(
1283 struct snd_kcontrol *kcontrol)
1284{
1285 return snd_kcontrol_chip(kcontrol);
1286}
1287
1288/**
1289 * snd_soc_kcontrol_codec() - Returns the CODEC that registered the control
1290 * @kcontrol: The control for which to get the CODEC
1291 *
1292 * Note: This function will only work correctly if the control has been
1293 * registered with snd_soc_add_codec_controls() or via table based setup of
1294 * snd_soc_codec_driver. Otherwise the behavior is undefined.
1295 */
1296static inline struct snd_soc_codec *snd_soc_kcontrol_codec(
1297 struct snd_kcontrol *kcontrol)
1298{
1299 return snd_soc_component_to_codec(snd_soc_kcontrol_component(kcontrol));
1300}
1301
1302/**
1303 * snd_soc_kcontrol_platform() - Returns the platform that registerd the control
1304 * @kcontrol: The control for which to get the platform
1305 *
1306 * Note: This function will only work correctly if the control has been
1307 * registered with snd_soc_add_platform_controls() or via table based setup of
1308 * a snd_soc_platform_driver. Otherwise the behavior is undefined.
1309 */
1310static inline struct snd_soc_platform *snd_soc_kcontrol_platform(
1311 struct snd_kcontrol *kcontrol)
1312{
1313 return snd_soc_component_to_platform(snd_soc_kcontrol_component(kcontrol));
1314}
1315
1231int snd_soc_util_init(void); 1316int snd_soc_util_init(void);
1232void snd_soc_util_exit(void); 1317void snd_soc_util_exit(void);
1233 1318
@@ -1241,7 +1326,9 @@ int snd_soc_of_parse_tdm_slot(struct device_node *np,
1241int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, 1326int snd_soc_of_parse_audio_routing(struct snd_soc_card *card,
1242 const char *propname); 1327 const char *propname);
1243unsigned int snd_soc_of_parse_daifmt(struct device_node *np, 1328unsigned int snd_soc_of_parse_daifmt(struct device_node *np,
1244 const char *prefix); 1329 const char *prefix,
1330 struct device_node **bitclkmaster,
1331 struct device_node **framemaster);
1245int snd_soc_of_get_dai_name(struct device_node *of_node, 1332int snd_soc_of_get_dai_name(struct device_node *of_node,
1246 const char **dai_name); 1333 const char **dai_name);
1247 1334
diff --git a/include/sound/sta350.h b/include/sound/sta350.h
new file mode 100644
index 000000000000..42edceb096a0
--- /dev/null
+++ b/include/sound/sta350.h
@@ -0,0 +1,57 @@
1/*
2 * Platform data for ST STA350 ASoC codec driver.
3 *
4 * Copyright: 2014 Raumfeld GmbH
5 * Author: Sven Brandau <info@brandau.biz>
6 *
7 * This program is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation; either version 2 of the License, or (at your
10 * option) any later version.
11 */
12#ifndef __LINUX_SND__STA350_H
13#define __LINUX_SND__STA350_H
14
15#define STA350_OCFG_2CH 0
16#define STA350_OCFG_2_1CH 1
17#define STA350_OCFG_1CH 3
18
19#define STA350_OM_CH1 0
20#define STA350_OM_CH2 1
21#define STA350_OM_CH3 2
22
23#define STA350_THERMAL_ADJUSTMENT_ENABLE 1
24#define STA350_THERMAL_RECOVERY_ENABLE 2
25#define STA350_FAULT_DETECT_RECOVERY_BYPASS 1
26
27#define STA350_FFX_PM_DROP_COMP 0
28#define STA350_FFX_PM_TAPERED_COMP 1
29#define STA350_FFX_PM_FULL_POWER 2
30#define STA350_FFX_PM_VARIABLE_DROP_COMP 3
31
32
33struct sta350_platform_data {
34 u8 output_conf;
35 u8 ch1_output_mapping;
36 u8 ch2_output_mapping;
37 u8 ch3_output_mapping;
38 u8 ffx_power_output_mode;
39 u8 drop_compensation_ns;
40 u8 powerdown_delay_divider;
41 unsigned int thermal_warning_recovery:1;
42 unsigned int thermal_warning_adjustment:1;
43 unsigned int fault_detect_recovery:1;
44 unsigned int oc_warning_adjustment:1;
45 unsigned int max_power_use_mpcc:1;
46 unsigned int max_power_correction:1;
47 unsigned int am_reduction_mode:1;
48 unsigned int odd_pwm_speed_mode:1;
49 unsigned int distortion_compensation:1;
50 unsigned int invalid_input_detect_mute:1;
51 unsigned int activate_mute_output:1;
52 unsigned int bridge_immediate_off:1;
53 unsigned int noise_shape_dc_cut:1;
54 unsigned int powerdown_master_vol:1;
55};
56
57#endif /* __LINUX_SND__STA350_H */
diff --git a/include/trace/events/asoc.h b/include/trace/events/asoc.h
index 03996b2bb04f..c75c795a377b 100644
--- a/include/trace/events/asoc.h
+++ b/include/trace/events/asoc.h
@@ -11,102 +11,10 @@
11 11
12struct snd_soc_jack; 12struct snd_soc_jack;
13struct snd_soc_codec; 13struct snd_soc_codec;
14struct snd_soc_platform;
15struct snd_soc_card; 14struct snd_soc_card;
16struct snd_soc_dapm_widget; 15struct snd_soc_dapm_widget;
17struct snd_soc_dapm_path; 16struct snd_soc_dapm_path;
18 17
19/*
20 * Log register events
21 */
22DECLARE_EVENT_CLASS(snd_soc_reg,
23
24 TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
25 unsigned int val),
26
27 TP_ARGS(codec, reg, val),
28
29 TP_STRUCT__entry(
30 __string( name, codec->name )
31 __field( int, id )
32 __field( unsigned int, reg )
33 __field( unsigned int, val )
34 ),
35
36 TP_fast_assign(
37 __assign_str(name, codec->name);
38 __entry->id = codec->id;
39 __entry->reg = reg;
40 __entry->val = val;
41 ),
42
43 TP_printk("codec=%s.%d reg=%x val=%x", __get_str(name),
44 (int)__entry->id, (unsigned int)__entry->reg,
45 (unsigned int)__entry->val)
46);
47
48DEFINE_EVENT(snd_soc_reg, snd_soc_reg_write,
49
50 TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
51 unsigned int val),
52
53 TP_ARGS(codec, reg, val)
54
55);
56
57DEFINE_EVENT(snd_soc_reg, snd_soc_reg_read,
58
59 TP_PROTO(struct snd_soc_codec *codec, unsigned int reg,
60 unsigned int val),
61
62 TP_ARGS(codec, reg, val)
63
64);
65
66DECLARE_EVENT_CLASS(snd_soc_preg,
67
68 TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
69 unsigned int val),
70
71 TP_ARGS(platform, reg, val),
72
73 TP_STRUCT__entry(
74 __string( name, platform->name )
75 __field( int, id )
76 __field( unsigned int, reg )
77 __field( unsigned int, val )
78 ),
79
80 TP_fast_assign(
81 __assign_str(name, platform->name);
82 __entry->id = platform->id;
83 __entry->reg = reg;
84 __entry->val = val;
85 ),
86
87 TP_printk("platform=%s.%d reg=%x val=%x", __get_str(name),
88 (int)__entry->id, (unsigned int)__entry->reg,
89 (unsigned int)__entry->val)
90);
91
92DEFINE_EVENT(snd_soc_preg, snd_soc_preg_write,
93
94 TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
95 unsigned int val),
96
97 TP_ARGS(platform, reg, val)
98
99);
100
101DEFINE_EVENT(snd_soc_preg, snd_soc_preg_read,
102
103 TP_PROTO(struct snd_soc_platform *platform, unsigned int reg,
104 unsigned int val),
105
106 TP_ARGS(platform, reg, val)
107
108);
109
110DECLARE_EVENT_CLASS(snd_soc_card, 18DECLARE_EVENT_CLASS(snd_soc_card,
111 19
112 TP_PROTO(struct snd_soc_card *card, int val), 20 TP_PROTO(struct snd_soc_card *card, int val),
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index 010ea89eeb0e..6a1a0245474f 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -16,15 +16,6 @@ struct mpage_da_data;
16struct ext4_map_blocks; 16struct ext4_map_blocks;
17struct extent_status; 17struct extent_status;
18 18
19/* shim until we merge in the xfs_collapse_range branch */
20#ifndef FALLOC_FL_COLLAPSE_RANGE
21#define FALLOC_FL_COLLAPSE_RANGE 0x08
22#endif
23
24#ifndef FALLOC_FL_ZERO_RANGE
25#define FALLOC_FL_ZERO_RANGE 0x10
26#endif
27
28#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) 19#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
29 20
30#define show_mballoc_flags(flags) __print_flags(flags, "|", \ 21#define show_mballoc_flags(flags) __print_flags(flags, "|", \
diff --git a/include/trace/events/module.h b/include/trace/events/module.h
index 11fd51b413de..7c5cbfe3fc49 100644
--- a/include/trace/events/module.h
+++ b/include/trace/events/module.h
@@ -25,7 +25,7 @@ struct module;
25 { (1UL << TAINT_OOT_MODULE), "O" }, \ 25 { (1UL << TAINT_OOT_MODULE), "O" }, \
26 { (1UL << TAINT_FORCED_MODULE), "F" }, \ 26 { (1UL << TAINT_FORCED_MODULE), "F" }, \
27 { (1UL << TAINT_CRAP), "C" }, \ 27 { (1UL << TAINT_CRAP), "C" }, \
28 { (1UL << TAINT_UNSIGNED_MODULE), "X" }) 28 { (1UL << TAINT_UNSIGNED_MODULE), "E" })
29 29
30TRACE_EVENT(module_load, 30TRACE_EVENT(module_load,
31 31
@@ -80,7 +80,7 @@ DECLARE_EVENT_CLASS(module_refcnt,
80 80
81 TP_fast_assign( 81 TP_fast_assign(
82 __entry->ip = ip; 82 __entry->ip = ip;
83 __entry->refcnt = __this_cpu_read(mod->refptr->incs) + __this_cpu_read(mod->refptr->decs); 83 __entry->refcnt = __this_cpu_read(mod->refptr->incs) - __this_cpu_read(mod->refptr->decs);
84 __assign_str(name, mod->name); 84 __assign_str(name, mod->name);
85 ), 85 ),
86 86
diff --git a/include/uapi/asm-generic/fcntl.h b/include/uapi/asm-generic/fcntl.h
index a9b13f8b3595..7543b3e51331 100644
--- a/include/uapi/asm-generic/fcntl.h
+++ b/include/uapi/asm-generic/fcntl.h
@@ -133,20 +133,20 @@
133#endif 133#endif
134 134
135/* 135/*
136 * fd "private" POSIX locks. 136 * Open File Description Locks
137 * 137 *
138 * Usually POSIX locks held by a process are released on *any* close and are 138 * Usually record locks held by a process are released on *any* close and are
139 * not inherited across a fork(). 139 * not inherited across a fork().
140 * 140 *
141 * These cmd values will set locks that conflict with normal POSIX locks, but 141 * These cmd values will set locks that conflict with process-associated
142 * are "owned" by the opened file, not the process. This means that they are 142 * record locks, but are "owned" by the open file description, not the
143 * inherited across fork() like BSD (flock) locks, and they are only released 143 * process. This means that they are inherited across fork() like BSD (flock)
144 * automatically when the last reference to the the open file against which 144 * locks, and they are only released automatically when the last reference to
145 * they were acquired is put. 145 * the the open file against which they were acquired is put.
146 */ 146 */
147#define F_GETLKP 36 147#define F_OFD_GETLK 36
148#define F_SETLKP 37 148#define F_OFD_SETLK 37
149#define F_SETLKPW 38 149#define F_OFD_SETLKW 38
150 150
151#define F_OWNER_TID 0 151#define F_OWNER_TID 0
152#define F_OWNER_PID 1 152#define F_OWNER_PID 1
diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
index cf4750e1bb49..40b5ca8a1b1f 100644
--- a/include/uapi/linux/fuse.h
+++ b/include/uapi/linux/fuse.h
@@ -96,6 +96,11 @@
96 * 96 *
97 * 7.23 97 * 7.23
98 * - add FUSE_WRITEBACK_CACHE 98 * - add FUSE_WRITEBACK_CACHE
99 * - add time_gran to fuse_init_out
100 * - add reserved space to fuse_init_out
101 * - add FATTR_CTIME
102 * - add ctime and ctimensec to fuse_setattr_in
103 * - add FUSE_RENAME2 request
99 */ 104 */
100 105
101#ifndef _LINUX_FUSE_H 106#ifndef _LINUX_FUSE_H
@@ -191,6 +196,7 @@ struct fuse_file_lock {
191#define FATTR_ATIME_NOW (1 << 7) 196#define FATTR_ATIME_NOW (1 << 7)
192#define FATTR_MTIME_NOW (1 << 8) 197#define FATTR_MTIME_NOW (1 << 8)
193#define FATTR_LOCKOWNER (1 << 9) 198#define FATTR_LOCKOWNER (1 << 9)
199#define FATTR_CTIME (1 << 10)
194 200
195/** 201/**
196 * Flags returned by the OPEN request 202 * Flags returned by the OPEN request
@@ -348,6 +354,7 @@ enum fuse_opcode {
348 FUSE_BATCH_FORGET = 42, 354 FUSE_BATCH_FORGET = 42,
349 FUSE_FALLOCATE = 43, 355 FUSE_FALLOCATE = 43,
350 FUSE_READDIRPLUS = 44, 356 FUSE_READDIRPLUS = 44,
357 FUSE_RENAME2 = 45,
351 358
352 /* CUSE specific operations */ 359 /* CUSE specific operations */
353 CUSE_INIT = 4096, 360 CUSE_INIT = 4096,
@@ -426,6 +433,12 @@ struct fuse_rename_in {
426 uint64_t newdir; 433 uint64_t newdir;
427}; 434};
428 435
436struct fuse_rename2_in {
437 uint64_t newdir;
438 uint32_t flags;
439 uint32_t padding;
440};
441
429struct fuse_link_in { 442struct fuse_link_in {
430 uint64_t oldnodeid; 443 uint64_t oldnodeid;
431}; 444};
@@ -438,10 +451,10 @@ struct fuse_setattr_in {
438 uint64_t lock_owner; 451 uint64_t lock_owner;
439 uint64_t atime; 452 uint64_t atime;
440 uint64_t mtime; 453 uint64_t mtime;
441 uint64_t unused2; 454 uint64_t ctime;
442 uint32_t atimensec; 455 uint32_t atimensec;
443 uint32_t mtimensec; 456 uint32_t mtimensec;
444 uint32_t unused3; 457 uint32_t ctimensec;
445 uint32_t mode; 458 uint32_t mode;
446 uint32_t unused4; 459 uint32_t unused4;
447 uint32_t uid; 460 uint32_t uid;
@@ -559,6 +572,9 @@ struct fuse_init_in {
559 uint32_t flags; 572 uint32_t flags;
560}; 573};
561 574
575#define FUSE_COMPAT_INIT_OUT_SIZE 8
576#define FUSE_COMPAT_22_INIT_OUT_SIZE 24
577
562struct fuse_init_out { 578struct fuse_init_out {
563 uint32_t major; 579 uint32_t major;
564 uint32_t minor; 580 uint32_t minor;
@@ -567,6 +583,8 @@ struct fuse_init_out {
567 uint16_t max_background; 583 uint16_t max_background;
568 uint16_t congestion_threshold; 584 uint16_t congestion_threshold;
569 uint32_t max_write; 585 uint32_t max_write;
586 uint32_t time_gran;
587 uint32_t unused[9];
570}; 588};
571 589
572#define CUSE_INIT_INFO_MAX 4096 590#define CUSE_INIT_INFO_MAX 4096
diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
index bd24470d24a2..f4849525519c 100644
--- a/include/uapi/linux/input.h
+++ b/include/uapi/linux/input.h
@@ -164,6 +164,7 @@ struct input_keymap_entry {
164#define INPUT_PROP_DIRECT 0x01 /* direct input devices */ 164#define INPUT_PROP_DIRECT 0x01 /* direct input devices */
165#define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */ 165#define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */
166#define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */ 166#define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */
167#define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */
167 168
168#define INPUT_PROP_MAX 0x1f 169#define INPUT_PROP_MAX 0x1f
169#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1) 170#define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)