diff options
| author | Takashi Iwai <tiwai@suse.de> | 2014-05-22 11:50:00 -0400 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2014-05-22 11:50:00 -0400 |
| commit | 0c1d1210160f560841a48641d41b61ec7d05edb2 (patch) | |
| tree | 14942dc1820fcb9b102b9098e5bacd5b59b78048 /include | |
| parent | 6f51f6cf6822f9da02cd91ced4f002024af419bb (diff) | |
| parent | cee429e5c53f7ffc1dd500001d9dff567833c23d (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')
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 | |||
| 224 | extern seqlock_t rename_lock; | 226 | extern seqlock_t rename_lock; |
| 225 | 227 | ||
| 226 | static inline int dname_external(const struct dentry *dentry) | 228 | static 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 | |||
| 535 | extern int ftrace_arch_read_dyn_info(char *buf, int size); | 535 | extern int ftrace_arch_read_dyn_info(char *buf, int size); |
| 536 | 536 | ||
| 537 | extern int skip_trace(unsigned long ip); | 537 | extern int skip_trace(unsigned long ip); |
| 538 | extern void ftrace_module_init(struct module *mod); | ||
| 538 | 539 | ||
| 539 | extern void ftrace_disable_daemon(void); | 540 | extern void ftrace_disable_daemon(void); |
| 540 | extern void ftrace_enable_daemon(void); | 541 | extern void ftrace_enable_daemon(void); |
| @@ -544,6 +545,7 @@ static inline int ftrace_force_update(void) { return 0; } | |||
| 544 | static inline void ftrace_disable_daemon(void) { } | 545 | static inline void ftrace_disable_daemon(void) { } |
| 545 | static inline void ftrace_enable_daemon(void) { } | 546 | static inline void ftrace_enable_daemon(void) { } |
| 546 | static inline void ftrace_release_mod(struct module *mod) {} | 547 | static inline void ftrace_release_mod(struct module *mod) {} |
| 548 | static inline void ftrace_module_init(struct module *mod) {} | ||
| 547 | static inline __init int register_ftrace_command(struct ftrace_func_command *cmd) | 549 | static 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 | ||
| 415 | static 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 */ |
| 416 | struct hstate {}; | 426 | struct 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 | ||
| 204 | extern cpumask_var_t irq_default_affinity; | 204 | extern cpumask_var_t irq_default_affinity; |
| 205 | 205 | ||
| 206 | extern int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask); | 206 | /* Internal implementation. Use the helpers below */ |
| 207 | extern 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 | */ | ||
| 217 | static inline int | ||
| 218 | irq_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 | */ | ||
| 234 | static inline int | ||
| 235 | irq_force_affinity(unsigned int irq, const struct cpumask *cpumask) | ||
| 236 | { | ||
| 237 | return __irq_set_affinity(irq, cpumask, true); | ||
| 238 | } | ||
| 239 | |||
| 207 | extern int irq_can_set_affinity(unsigned int irq); | 240 | extern int irq_can_set_affinity(unsigned int irq); |
| 208 | extern int irq_select_affinity(unsigned int irq); | 241 | extern 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 | ||
| 395 | extern void irq_cpu_online(void); | 395 | extern void irq_cpu_online(void); |
| 396 | extern void irq_cpu_offline(void); | 396 | extern void irq_cpu_offline(void); |
| 397 | extern int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *cpumask); | 397 | extern 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) |
| 400 | void irq_move_irq(struct irq_data *data); | 401 | void 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 | ||
| 606 | unsigned int arch_dynirq_lower_bound(unsigned int from); | ||
| 607 | |||
| 605 | int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node, | 608 | int __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; | |||
| 45 | struct rtsx_slot { | 45 | struct 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); | |||
| 943 | int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout); | 943 | int rtsx_pci_send_cmd(struct rtsx_pcr *pcr, int timeout); |
| 944 | int rtsx_pci_transfer_data(struct rtsx_pcr *pcr, struct scatterlist *sglist, | 944 | int 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); |
| 946 | int rtsx_pci_dma_map_sg(struct rtsx_pcr *pcr, struct scatterlist *sglist, | ||
| 947 | int num_sg, bool read); | ||
| 948 | int rtsx_pci_dma_unmap_sg(struct rtsx_pcr *pcr, struct scatterlist *sglist, | ||
| 949 | int num_sg, bool read); | ||
| 950 | int rtsx_pci_dma_transfer(struct rtsx_pcr *pcr, struct scatterlist *sglist, | ||
| 951 | int sg_count, bool read); | ||
| 952 | int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); | 946 | int rtsx_pci_read_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); |
| 953 | int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); | 947 | int rtsx_pci_write_ppbuf(struct rtsx_pcr *pcr, u8 *buf, int buf_len); |
| 954 | int rtsx_pci_card_pull_ctl_enable(struct rtsx_pcr *pcr, int card); | 948 | int 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 | ||
| 373 | extern void kvfree(const void *addr); | ||
| 374 | |||
| 373 | static inline void compound_lock(struct page *page) | 375 | static 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 { | |||
| 169 | extern int netlink_add_tap(struct netlink_tap *nt); | 169 | extern int netlink_add_tap(struct netlink_tap *nt); |
| 170 | extern int netlink_remove_tap(struct netlink_tap *nt); | 170 | extern int netlink_remove_tap(struct netlink_tap *nt); |
| 171 | 171 | ||
| 172 | bool __netlink_ns_capable(const struct netlink_skb_parms *nsp, | ||
| 173 | struct user_namespace *ns, int cap); | ||
| 174 | bool netlink_ns_capable(const struct sk_buff *skb, | ||
| 175 | struct user_namespace *ns, int cap); | ||
| 176 | bool netlink_capable(const struct sk_buff *skb, int cap); | ||
| 177 | bool 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 |
| 46 | extern int of_irq_count(struct device_node *dev); | 46 | extern int of_irq_count(struct device_node *dev); |
| 47 | extern int of_irq_get(struct device_node *dev, int index); | ||
| 47 | #else | 48 | #else |
| 48 | static inline int of_irq_count(struct device_node *dev) | 49 | static inline int of_irq_count(struct device_node *dev) |
| 49 | { | 50 | { |
| 50 | return 0; | 51 | return 0; |
| 51 | } | 52 | } |
| 53 | static 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 |
| 175 | static inline int phy_pm_runtime_get(struct phy *phy) | 175 | static 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 | ||
| 180 | static inline int phy_pm_runtime_get_sync(struct phy *phy) | 182 | static 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 | ||
| 185 | static inline int phy_pm_runtime_put(struct phy *phy) | 189 | static 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 | ||
| 190 | static inline int phy_pm_runtime_put_sync(struct phy *phy) | 196 | static 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 | ||
| 205 | static inline int phy_init(struct phy *phy) | 213 | static 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 | ||
| 210 | static inline int phy_exit(struct phy *phy) | 220 | static 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 | ||
| 215 | static inline int phy_power_on(struct phy *phy) | 227 | static 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 | ||
| 220 | static inline int phy_power_off(struct phy *phy) | 234 | static 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) | |||
| 258 | static inline struct regulator *__must_check | 258 | static inline struct regulator *__must_check |
| 259 | regulator_get_optional(struct device *dev, const char *id) | 259 | regulator_get_optional(struct device *dev, const char *id) |
| 260 | { | 260 | { |
| 261 | return NULL; | 261 | return ERR_PTR(-ENODEV); |
| 262 | } | 262 | } |
| 263 | 263 | ||
| 264 | 264 | ||
| 265 | static inline struct regulator *__must_check | 265 | static inline struct regulator *__must_check |
| 266 | devm_regulator_get_optional(struct device *dev, const char *id) | 266 | devm_regulator_get_optional(struct device *dev, const char *id) |
| 267 | { | 267 | { |
| 268 | return NULL; | 268 | return ERR_PTR(-ENODEV); |
| 269 | } | 269 | } |
| 270 | 270 | ||
| 271 | static inline void regulator_put(struct regulator *regulator) | 271 | static 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 | ||
| 106 | void sysfs_slab_remove(struct kmem_cache *); | ||
| 107 | #else | ||
| 108 | static 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); | |||
| 23 | void sock_diag_save_cookie(void *sk, __u32 *cookie); | 23 | void sock_diag_save_cookie(void *sk, __u32 *cookie); |
| 24 | 24 | ||
| 25 | int sock_diag_put_meminfo(struct sock *sk, struct sk_buff *skb, int attr); | 25 | int sock_diag_put_meminfo(struct sock *sk, struct sk_buff *skb, int attr); |
| 26 | int sock_diag_put_filterinfo(struct user_namespace *user_ns, struct sock *sk, | 26 | int 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 | ||
| 158 | int vsock_core_init(const struct vsock_transport *t); | 158 | int __vsock_core_init(const struct vsock_transport *t, struct module *owner); |
| 159 | static inline int vsock_core_init(const struct vsock_transport *t) | ||
| 160 | { | ||
| 161 | return __vsock_core_init(t, THIS_MODULE); | ||
| 162 | } | ||
| 159 | void vsock_core_exit(void); | 163 | void 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 *); | |||
| 2255 | int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, int level, | 2255 | int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, int level, |
| 2256 | int type); | 2256 | int type); |
| 2257 | 2257 | ||
| 2258 | bool sk_ns_capable(const struct sock *sk, | ||
| 2259 | struct user_namespace *user_ns, int cap); | ||
| 2260 | bool sk_capable(const struct sock *sk, int cap); | ||
| 2261 | bool 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 | |||
| 14 | struct 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 | ||
| 46 | struct rsnd_ssi_platform_info { | 43 | struct 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 | ||
| 69 | struct rsnd_src_platform_info { | 54 | struct 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 | */ | ||
| 62 | struct rsnd_dvc_platform_info { | ||
| 63 | u32 flags; | ||
| 64 | }; | ||
| 65 | |||
| 75 | struct rsnd_dai_path_info { | 66 | struct 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 | ||
| 80 | struct rsnd_dai_platform_info { | 72 | struct 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 | |||
| 14 | struct 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 | |||
| 14 | struct 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 | ||
| 283 | static inline void *snd_soc_dai_get_dma_data(const struct snd_soc_dai *dai, | 281 | static 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; | |||
| 362 | struct snd_soc_dapm_widget_list; | 349 | struct snd_soc_dapm_widget_list; |
| 363 | struct snd_soc_dapm_update; | 350 | struct snd_soc_dapm_update; |
| 364 | 351 | ||
| 365 | int dapm_reg_event(struct snd_soc_dapm_widget *w, | ||
| 366 | struct snd_kcontrol *kcontrol, int event); | ||
| 367 | int dapm_regulator_event(struct snd_soc_dapm_widget *w, | 352 | int dapm_regulator_event(struct snd_soc_dapm_widget *w, |
| 368 | struct snd_kcontrol *kcontrol, int event); | 353 | struct snd_kcontrol *kcontrol, int event); |
| 369 | int dapm_clock_event(struct snd_soc_dapm_widget *w, | 354 | int 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); | |||
| 377 | int snd_soc_poweroff(struct device *dev); | 382 | int snd_soc_poweroff(struct device *dev); |
| 378 | int snd_soc_register_platform(struct device *dev, | 383 | int 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); |
| 385 | int devm_snd_soc_register_platform(struct device *dev, | ||
| 386 | const struct snd_soc_platform_driver *platform_drv); | ||
| 380 | void snd_soc_unregister_platform(struct device *dev); | 387 | void snd_soc_unregister_platform(struct device *dev); |
| 381 | int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform, | 388 | int 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); |
| 395 | void snd_soc_unregister_component(struct device *dev); | 402 | void snd_soc_unregister_component(struct device *dev); |
| 396 | int snd_soc_codec_volatile_register(struct snd_soc_codec *codec, | ||
| 397 | unsigned int reg); | ||
| 398 | int snd_soc_codec_readable_register(struct snd_soc_codec *codec, | ||
| 399 | unsigned int reg); | ||
| 400 | int snd_soc_codec_writable_register(struct snd_soc_codec *codec, | ||
| 401 | unsigned int reg); | ||
| 402 | int snd_soc_codec_set_cache_io(struct snd_soc_codec *codec, | ||
| 403 | struct regmap *regmap); | ||
| 404 | int snd_soc_cache_sync(struct snd_soc_codec *codec); | 403 | int snd_soc_cache_sync(struct snd_soc_codec *codec); |
| 405 | int snd_soc_cache_init(struct snd_soc_codec *codec); | 404 | int snd_soc_cache_init(struct snd_soc_codec *codec); |
| 406 | int snd_soc_cache_exit(struct snd_soc_codec *codec); | 405 | int 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 */ |
| 472 | int snd_soc_update_bits(struct snd_soc_codec *codec, unsigned short reg, | 471 | int 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); |
| 474 | int snd_soc_update_bits_locked(struct snd_soc_codec *codec, | 473 | int 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); |
| 477 | int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned short reg, | 476 | int 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 | ||
| 480 | int snd_soc_new_ac97_codec(struct snd_soc_codec *codec, | 479 | int 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); |
| 541 | int snd_soc_bytes_put(struct snd_kcontrol *kcontrol, | 540 | int snd_soc_bytes_put(struct snd_kcontrol *kcontrol, |
| 542 | struct snd_ctl_elem_value *ucontrol); | 541 | struct snd_ctl_elem_value *ucontrol); |
| 542 | int snd_soc_bytes_info_ext(struct snd_kcontrol *kcontrol, | ||
| 543 | struct snd_ctl_elem_info *ucontrol); | ||
| 543 | int snd_soc_info_xr_sx(struct snd_kcontrol *kcontrol, | 544 | int snd_soc_info_xr_sx(struct snd_kcontrol *kcontrol, |
| 544 | struct snd_ctl_elem_info *uinfo); | 545 | struct snd_ctl_elem_info *uinfo); |
| 545 | int snd_soc_get_xr_sx(struct snd_kcontrol *kcontrol, | 546 | int 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 | ||
| 933 | struct snd_soc_codec_conf { | 933 | struct 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 | ||
| 943 | struct snd_soc_aux_dev { | 948 | struct 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 | ||
| 1102 | struct soc_bytes_ext { | ||
| 1103 | int max; | ||
| 1104 | }; | ||
| 1105 | |||
| 1093 | /* multi register control */ | 1106 | /* multi register control */ |
| 1094 | struct soc_mreg_control { | 1107 | struct 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 | */ | ||
| 1143 | static 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 */ |
| 1124 | unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg); | 1150 | unsigned int snd_soc_read(struct snd_soc_codec *codec, unsigned int reg); |
| 1125 | unsigned int snd_soc_write(struct snd_soc_codec *codec, | 1151 | int 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 */ | ||
| 1155 | int snd_soc_component_read(struct snd_soc_component *component, | ||
| 1156 | unsigned int reg, unsigned int *val); | ||
| 1157 | int snd_soc_component_write(struct snd_soc_component *component, | ||
| 1158 | unsigned int reg, unsigned int val); | ||
| 1159 | int snd_soc_component_update_bits(struct snd_soc_component *component, | ||
| 1160 | unsigned int reg, unsigned int mask, unsigned int val); | ||
| 1161 | int snd_soc_component_update_bits_async(struct snd_soc_component *component, | ||
| 1162 | unsigned int reg, unsigned int mask, unsigned int val); | ||
| 1163 | void snd_soc_component_async_complete(struct snd_soc_component *component); | ||
| 1164 | int snd_soc_component_test_bits(struct snd_soc_component *component, | ||
| 1165 | unsigned int reg, unsigned int mask, unsigned int value); | ||
| 1166 | |||
| 1167 | int 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 | ||
| 1174 | static inline void snd_soc_initialize_card_lists(struct snd_soc_card *card) | 1216 | static 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 | */ | ||
| 1282 | static 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 | */ | ||
| 1296 | static 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 | */ | ||
| 1310 | static 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 | |||
| 1231 | int snd_soc_util_init(void); | 1316 | int snd_soc_util_init(void); |
| 1232 | void snd_soc_util_exit(void); | 1317 | void snd_soc_util_exit(void); |
| 1233 | 1318 | ||
| @@ -1241,7 +1326,9 @@ int snd_soc_of_parse_tdm_slot(struct device_node *np, | |||
| 1241 | int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, | 1326 | int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, |
| 1242 | const char *propname); | 1327 | const char *propname); |
| 1243 | unsigned int snd_soc_of_parse_daifmt(struct device_node *np, | 1328 | unsigned 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); | ||
| 1245 | int snd_soc_of_get_dai_name(struct device_node *of_node, | 1332 | int 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 | |||
| 33 | struct 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 | ||
| 12 | struct snd_soc_jack; | 12 | struct snd_soc_jack; |
| 13 | struct snd_soc_codec; | 13 | struct snd_soc_codec; |
| 14 | struct snd_soc_platform; | ||
| 15 | struct snd_soc_card; | 14 | struct snd_soc_card; |
| 16 | struct snd_soc_dapm_widget; | 15 | struct snd_soc_dapm_widget; |
| 17 | struct snd_soc_dapm_path; | 16 | struct snd_soc_dapm_path; |
| 18 | 17 | ||
| 19 | /* | ||
| 20 | * Log register events | ||
| 21 | */ | ||
| 22 | DECLARE_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 | |||
| 48 | DEFINE_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 | |||
| 57 | DEFINE_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 | |||
| 66 | DECLARE_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 | |||
| 92 | DEFINE_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 | |||
| 101 | DEFINE_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 | |||
| 110 | DECLARE_EVENT_CLASS(snd_soc_card, | 18 | DECLARE_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; | |||
| 16 | struct ext4_map_blocks; | 16 | struct ext4_map_blocks; |
| 17 | struct extent_status; | 17 | struct 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 | ||
| 30 | TRACE_EVENT(module_load, | 30 | TRACE_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 | ||
| 436 | struct fuse_rename2_in { | ||
| 437 | uint64_t newdir; | ||
| 438 | uint32_t flags; | ||
| 439 | uint32_t padding; | ||
| 440 | }; | ||
| 441 | |||
| 429 | struct fuse_link_in { | 442 | struct 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 | |||
| 562 | struct fuse_init_out { | 578 | struct 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) |
