diff options
Diffstat (limited to 'include')
42 files changed, 297 insertions, 143 deletions
diff --git a/include/acpi/video.h b/include/acpi/video.h index ea4c7bbded4d..843ef1adfbfa 100644 --- a/include/acpi/video.h +++ b/include/acpi/video.h | |||
| @@ -22,6 +22,7 @@ extern void acpi_video_unregister(void); | |||
| 22 | extern void acpi_video_unregister_backlight(void); | 22 | extern void acpi_video_unregister_backlight(void); |
| 23 | extern int acpi_video_get_edid(struct acpi_device *device, int type, | 23 | extern int acpi_video_get_edid(struct acpi_device *device, int type, |
| 24 | int device_id, void **edid); | 24 | int device_id, void **edid); |
| 25 | extern bool acpi_video_verify_backlight_support(void); | ||
| 25 | #else | 26 | #else |
| 26 | static inline int acpi_video_register(void) { return 0; } | 27 | static inline int acpi_video_register(void) { return 0; } |
| 27 | static inline void acpi_video_unregister(void) { return; } | 28 | static inline void acpi_video_unregister(void) { return; } |
| @@ -31,6 +32,7 @@ static inline int acpi_video_get_edid(struct acpi_device *device, int type, | |||
| 31 | { | 32 | { |
| 32 | return -ENODEV; | 33 | return -ENODEV; |
| 33 | } | 34 | } |
| 35 | static inline bool acpi_video_verify_backlight_support(void) { return false; } | ||
| 34 | #endif | 36 | #endif |
| 35 | 37 | ||
| 36 | #endif | 38 | #endif |
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 471ba48c7ae4..c1c0b0cf39b4 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h | |||
| @@ -693,7 +693,7 @@ | |||
| 693 | . = ALIGN(PAGE_SIZE); \ | 693 | . = ALIGN(PAGE_SIZE); \ |
| 694 | *(.data..percpu..page_aligned) \ | 694 | *(.data..percpu..page_aligned) \ |
| 695 | . = ALIGN(cacheline); \ | 695 | . = ALIGN(cacheline); \ |
| 696 | *(.data..percpu..readmostly) \ | 696 | *(.data..percpu..read_mostly) \ |
| 697 | . = ALIGN(cacheline); \ | 697 | . = ALIGN(cacheline); \ |
| 698 | *(.data..percpu) \ | 698 | *(.data..percpu) \ |
| 699 | *(.data..percpu..shared_aligned) \ | 699 | *(.data..percpu..shared_aligned) \ |
diff --git a/include/dt-bindings/clock/exynos5420.h b/include/dt-bindings/clock/exynos5420.h index 97dcb89d37d3..21d51ae1d242 100644 --- a/include/dt-bindings/clock/exynos5420.h +++ b/include/dt-bindings/clock/exynos5420.h | |||
| @@ -63,7 +63,6 @@ | |||
| 63 | #define CLK_SCLK_MPHY_IXTAL24 161 | 63 | #define CLK_SCLK_MPHY_IXTAL24 161 |
| 64 | 64 | ||
| 65 | /* gate clocks */ | 65 | /* gate clocks */ |
| 66 | #define CLK_ACLK66_PERIC 256 | ||
| 67 | #define CLK_UART0 257 | 66 | #define CLK_UART0 257 |
| 68 | #define CLK_UART1 258 | 67 | #define CLK_UART1 258 |
| 69 | #define CLK_UART2 259 | 68 | #define CLK_UART2 259 |
| @@ -203,6 +202,8 @@ | |||
| 203 | #define CLK_MOUT_G3D 641 | 202 | #define CLK_MOUT_G3D 641 |
| 204 | #define CLK_MOUT_VPLL 642 | 203 | #define CLK_MOUT_VPLL 642 |
| 205 | #define CLK_MOUT_MAUDIO0 643 | 204 | #define CLK_MOUT_MAUDIO0 643 |
| 205 | #define CLK_MOUT_USER_ACLK333 644 | ||
| 206 | #define CLK_MOUT_SW_ACLK333 645 | ||
| 206 | 207 | ||
| 207 | /* divider clocks */ | 208 | /* divider clocks */ |
| 208 | #define CLK_DOUT_PIXEL 768 | 209 | #define CLK_DOUT_PIXEL 768 |
diff --git a/include/dt-bindings/pinctrl/dra.h b/include/dt-bindings/pinctrl/dra.h index 002a2855c046..3d33794e4f3e 100644 --- a/include/dt-bindings/pinctrl/dra.h +++ b/include/dt-bindings/pinctrl/dra.h | |||
| @@ -30,7 +30,8 @@ | |||
| 30 | #define MUX_MODE14 0xe | 30 | #define MUX_MODE14 0xe |
| 31 | #define MUX_MODE15 0xf | 31 | #define MUX_MODE15 0xf |
| 32 | 32 | ||
| 33 | #define PULL_ENA (1 << 16) | 33 | #define PULL_ENA (0 << 16) |
| 34 | #define PULL_DIS (1 << 16) | ||
| 34 | #define PULL_UP (1 << 17) | 35 | #define PULL_UP (1 << 17) |
| 35 | #define INPUT_EN (1 << 18) | 36 | #define INPUT_EN (1 << 18) |
| 36 | #define SLEWCONTROL (1 << 19) | 37 | #define SLEWCONTROL (1 << 19) |
| @@ -38,10 +39,10 @@ | |||
| 38 | #define WAKEUP_EVENT (1 << 25) | 39 | #define WAKEUP_EVENT (1 << 25) |
| 39 | 40 | ||
| 40 | /* Active pin states */ | 41 | /* Active pin states */ |
| 41 | #define PIN_OUTPUT 0 | 42 | #define PIN_OUTPUT (0 | PULL_DIS) |
| 42 | #define PIN_OUTPUT_PULLUP (PIN_OUTPUT | PULL_ENA | PULL_UP) | 43 | #define PIN_OUTPUT_PULLUP (PIN_OUTPUT | PULL_ENA | PULL_UP) |
| 43 | #define PIN_OUTPUT_PULLDOWN (PIN_OUTPUT | PULL_ENA) | 44 | #define PIN_OUTPUT_PULLDOWN (PIN_OUTPUT | PULL_ENA) |
| 44 | #define PIN_INPUT INPUT_EN | 45 | #define PIN_INPUT (INPUT_EN | PULL_DIS) |
| 45 | #define PIN_INPUT_SLEW (INPUT_EN | SLEWCONTROL) | 46 | #define PIN_INPUT_SLEW (INPUT_EN | SLEWCONTROL) |
| 46 | #define PIN_INPUT_PULLUP (PULL_ENA | INPUT_EN | PULL_UP) | 47 | #define PIN_INPUT_PULLUP (PULL_ENA | INPUT_EN | PULL_UP) |
| 47 | #define PIN_INPUT_PULLDOWN (PULL_ENA | INPUT_EN) | 48 | #define PIN_INPUT_PULLDOWN (PULL_ENA | INPUT_EN) |
diff --git a/include/linux/atmel-ssc.h b/include/linux/atmel-ssc.h index 571a12ebb018..7c0f6549898b 100644 --- a/include/linux/atmel-ssc.h +++ b/include/linux/atmel-ssc.h | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | struct atmel_ssc_platform_data { | 8 | struct atmel_ssc_platform_data { |
| 9 | int use_dma; | 9 | int use_dma; |
| 10 | int has_fslen_ext; | ||
| 10 | }; | 11 | }; |
| 11 | 12 | ||
| 12 | struct ssc_device { | 13 | struct ssc_device { |
| @@ -71,6 +72,12 @@ void ssc_free(struct ssc_device *ssc); | |||
| 71 | #define SSC_RFMR_DATNB_OFFSET 8 | 72 | #define SSC_RFMR_DATNB_OFFSET 8 |
| 72 | #define SSC_RFMR_FSEDGE_SIZE 1 | 73 | #define SSC_RFMR_FSEDGE_SIZE 1 |
| 73 | #define SSC_RFMR_FSEDGE_OFFSET 24 | 74 | #define SSC_RFMR_FSEDGE_OFFSET 24 |
| 75 | /* | ||
| 76 | * The FSLEN_EXT exist on at91sam9rl, at91sam9g10, | ||
| 77 | * at91sam9g20, and at91sam9g45 and newer SoCs | ||
| 78 | */ | ||
| 79 | #define SSC_RFMR_FSLEN_EXT_SIZE 4 | ||
| 80 | #define SSC_RFMR_FSLEN_EXT_OFFSET 28 | ||
| 74 | #define SSC_RFMR_FSLEN_SIZE 4 | 81 | #define SSC_RFMR_FSLEN_SIZE 4 |
| 75 | #define SSC_RFMR_FSLEN_OFFSET 16 | 82 | #define SSC_RFMR_FSLEN_OFFSET 16 |
| 76 | #define SSC_RFMR_FSOS_SIZE 4 | 83 | #define SSC_RFMR_FSOS_SIZE 4 |
| @@ -109,6 +116,12 @@ void ssc_free(struct ssc_device *ssc); | |||
| 109 | #define SSC_TFMR_FSDEN_OFFSET 23 | 116 | #define SSC_TFMR_FSDEN_OFFSET 23 |
| 110 | #define SSC_TFMR_FSEDGE_SIZE 1 | 117 | #define SSC_TFMR_FSEDGE_SIZE 1 |
| 111 | #define SSC_TFMR_FSEDGE_OFFSET 24 | 118 | #define SSC_TFMR_FSEDGE_OFFSET 24 |
| 119 | /* | ||
| 120 | * The FSLEN_EXT exist on at91sam9rl, at91sam9g10, | ||
| 121 | * at91sam9g20, and at91sam9g45 and newer SoCs | ||
| 122 | */ | ||
| 123 | #define SSC_TFMR_FSLEN_EXT_SIZE 4 | ||
| 124 | #define SSC_TFMR_FSLEN_EXT_OFFSET 28 | ||
| 112 | #define SSC_TFMR_FSLEN_SIZE 4 | 125 | #define SSC_TFMR_FSLEN_SIZE 4 |
| 113 | #define SSC_TFMR_FSLEN_OFFSET 16 | 126 | #define SSC_TFMR_FSLEN_OFFSET 16 |
| 114 | #define SSC_TFMR_FSOS_SIZE 3 | 127 | #define SSC_TFMR_FSOS_SIZE 3 |
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index ec4112d257bc..8f8ae95c6e27 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
| @@ -482,8 +482,8 @@ extern struct cpufreq_governor cpufreq_gov_conservative; | |||
| 482 | *********************************************************************/ | 482 | *********************************************************************/ |
| 483 | 483 | ||
| 484 | /* Special Values of .frequency field */ | 484 | /* Special Values of .frequency field */ |
| 485 | #define CPUFREQ_ENTRY_INVALID ~0 | 485 | #define CPUFREQ_ENTRY_INVALID ~0u |
| 486 | #define CPUFREQ_TABLE_END ~1 | 486 | #define CPUFREQ_TABLE_END ~1u |
| 487 | /* Special Values of .flags field */ | 487 | /* Special Values of .flags field */ |
| 488 | #define CPUFREQ_BOOST_FREQ (1 << 0) | 488 | #define CPUFREQ_BOOST_FREQ (1 << 0) |
| 489 | 489 | ||
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index d2c5cc7c583c..3d1c2aa51530 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
| @@ -299,6 +299,7 @@ enum dma_slave_buswidth { | |||
| 299 | DMA_SLAVE_BUSWIDTH_UNDEFINED = 0, | 299 | DMA_SLAVE_BUSWIDTH_UNDEFINED = 0, |
| 300 | DMA_SLAVE_BUSWIDTH_1_BYTE = 1, | 300 | DMA_SLAVE_BUSWIDTH_1_BYTE = 1, |
| 301 | DMA_SLAVE_BUSWIDTH_2_BYTES = 2, | 301 | DMA_SLAVE_BUSWIDTH_2_BYTES = 2, |
| 302 | DMA_SLAVE_BUSWIDTH_3_BYTES = 3, | ||
| 302 | DMA_SLAVE_BUSWIDTH_4_BYTES = 4, | 303 | DMA_SLAVE_BUSWIDTH_4_BYTES = 4, |
| 303 | DMA_SLAVE_BUSWIDTH_8_BYTES = 8, | 304 | DMA_SLAVE_BUSWIDTH_8_BYTES = 8, |
| 304 | }; | 305 | }; |
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 255cd5cc0754..a23c096b3080 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
| @@ -80,6 +80,7 @@ int dequeue_hwpoisoned_huge_page(struct page *page); | |||
| 80 | bool isolate_huge_page(struct page *page, struct list_head *list); | 80 | bool isolate_huge_page(struct page *page, struct list_head *list); |
| 81 | void putback_active_hugepage(struct page *page); | 81 | void putback_active_hugepage(struct page *page); |
| 82 | bool is_hugepage_active(struct page *page); | 82 | bool is_hugepage_active(struct page *page); |
| 83 | void free_huge_page(struct page *page); | ||
| 83 | 84 | ||
| 84 | #ifdef CONFIG_ARCH_WANT_HUGE_PMD_SHARE | 85 | #ifdef CONFIG_ARCH_WANT_HUGE_PMD_SHARE |
| 85 | pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud); | 86 | pte_t *huge_pmd_share(struct mm_struct *mm, unsigned long addr, pud_t *pud); |
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h index 145375ea0bd9..30faf797c2c3 100644 --- a/include/linux/kernfs.h +++ b/include/linux/kernfs.h | |||
| @@ -305,6 +305,7 @@ struct dentry *kernfs_mount_ns(struct file_system_type *fs_type, int flags, | |||
| 305 | struct kernfs_root *root, unsigned long magic, | 305 | struct kernfs_root *root, unsigned long magic, |
| 306 | bool *new_sb_created, const void *ns); | 306 | bool *new_sb_created, const void *ns); |
| 307 | void kernfs_kill_sb(struct super_block *sb); | 307 | void kernfs_kill_sb(struct super_block *sb); |
| 308 | struct super_block *kernfs_pin_sb(struct kernfs_root *root, const void *ns); | ||
| 308 | 309 | ||
| 309 | void kernfs_init(void); | 310 | void kernfs_init(void); |
| 310 | 311 | ||
diff --git a/include/linux/libata.h b/include/linux/libata.h index 5ab4e3a76721..92abb497ab14 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -593,6 +593,7 @@ struct ata_host { | |||
| 593 | struct device *dev; | 593 | struct device *dev; |
| 594 | void __iomem * const *iomap; | 594 | void __iomem * const *iomap; |
| 595 | unsigned int n_ports; | 595 | unsigned int n_ports; |
| 596 | unsigned int n_tags; /* nr of NCQ tags */ | ||
| 596 | void *private_data; | 597 | void *private_data; |
| 597 | struct ata_port_operations *ops; | 598 | struct ata_port_operations *ops; |
| 598 | unsigned long flags; | 599 | unsigned long flags; |
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h index 6d9371f88875..a614b33d0a39 100644 --- a/include/linux/mfd/arizona/core.h +++ b/include/linux/mfd/arizona/core.h | |||
| @@ -110,6 +110,12 @@ struct arizona { | |||
| 110 | int clk32k_ref; | 110 | int clk32k_ref; |
| 111 | 111 | ||
| 112 | struct snd_soc_dapm_context *dapm; | 112 | struct snd_soc_dapm_context *dapm; |
| 113 | |||
| 114 | int tdm_width[ARIZONA_MAX_AIF]; | ||
| 115 | int tdm_slots[ARIZONA_MAX_AIF]; | ||
| 116 | |||
| 117 | uint16_t dac_comp_coeff; | ||
| 118 | uint8_t dac_comp_enabled; | ||
| 113 | }; | 119 | }; |
| 114 | 120 | ||
| 115 | int arizona_clk32k_enable(struct arizona *arizona); | 121 | int arizona_clk32k_enable(struct arizona *arizona); |
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index b12f4bbd064c..35b51e7af886 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
| @@ -578,8 +578,6 @@ struct mlx4_cq { | |||
| 578 | u32 cons_index; | 578 | u32 cons_index; |
| 579 | 579 | ||
| 580 | u16 irq; | 580 | u16 irq; |
| 581 | bool irq_affinity_change; | ||
| 582 | |||
| 583 | __be32 *set_ci_db; | 581 | __be32 *set_ci_db; |
| 584 | __be32 *arm_db; | 582 | __be32 *arm_db; |
| 585 | int arm_sn; | 583 | int arm_sn; |
| @@ -1167,6 +1165,8 @@ int mlx4_assign_eq(struct mlx4_dev *dev, char *name, struct cpu_rmap *rmap, | |||
| 1167 | int *vector); | 1165 | int *vector); |
| 1168 | void mlx4_release_eq(struct mlx4_dev *dev, int vec); | 1166 | void mlx4_release_eq(struct mlx4_dev *dev, int vec); |
| 1169 | 1167 | ||
| 1168 | int mlx4_eq_get_irq(struct mlx4_dev *dev, int vec); | ||
| 1169 | |||
| 1170 | int mlx4_get_phys_port_id(struct mlx4_dev *dev); | 1170 | int mlx4_get_phys_port_id(struct mlx4_dev *dev); |
| 1171 | int mlx4_wol_read(struct mlx4_dev *dev, u64 *config, int port); | 1171 | int mlx4_wol_read(struct mlx4_dev *dev, u64 *config, int port); |
| 1172 | int mlx4_wol_write(struct mlx4_dev *dev, u64 config, int port); | 1172 | int mlx4_wol_write(struct mlx4_dev *dev, u64 config, int port); |
diff --git a/include/linux/mutex.h b/include/linux/mutex.h index 11692dea18aa..42aa9b9ecd5f 100644 --- a/include/linux/mutex.h +++ b/include/linux/mutex.h | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <linux/lockdep.h> | 17 | #include <linux/lockdep.h> |
| 18 | #include <linux/atomic.h> | 18 | #include <linux/atomic.h> |
| 19 | #include <asm/processor.h> | 19 | #include <asm/processor.h> |
| 20 | #include <linux/osq_lock.h> | ||
| 20 | 21 | ||
| 21 | /* | 22 | /* |
| 22 | * Simple, straightforward mutexes with strict semantics: | 23 | * Simple, straightforward mutexes with strict semantics: |
| @@ -46,7 +47,6 @@ | |||
| 46 | * - detects multi-task circular deadlocks and prints out all affected | 47 | * - detects multi-task circular deadlocks and prints out all affected |
| 47 | * locks and tasks (and only those tasks) | 48 | * locks and tasks (and only those tasks) |
| 48 | */ | 49 | */ |
| 49 | struct optimistic_spin_queue; | ||
| 50 | struct mutex { | 50 | struct mutex { |
| 51 | /* 1: unlocked, 0: locked, negative: locked, possible waiters */ | 51 | /* 1: unlocked, 0: locked, negative: locked, possible waiters */ |
| 52 | atomic_t count; | 52 | atomic_t count; |
| @@ -56,7 +56,7 @@ struct mutex { | |||
| 56 | struct task_struct *owner; | 56 | struct task_struct *owner; |
| 57 | #endif | 57 | #endif |
| 58 | #ifdef CONFIG_MUTEX_SPIN_ON_OWNER | 58 | #ifdef CONFIG_MUTEX_SPIN_ON_OWNER |
| 59 | struct optimistic_spin_queue *osq; /* Spinner MCS lock */ | 59 | struct optimistic_spin_queue osq; /* Spinner MCS lock */ |
| 60 | #endif | 60 | #endif |
| 61 | #ifdef CONFIG_DEBUG_MUTEXES | 61 | #ifdef CONFIG_DEBUG_MUTEXES |
| 62 | const char *name; | 62 | const char *name; |
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h index 05117899fcb4..0ff360d5b3b3 100644 --- a/include/linux/of_fdt.h +++ b/include/linux/of_fdt.h | |||
| @@ -73,6 +73,8 @@ extern int early_init_dt_scan_root(unsigned long node, const char *uname, | |||
| 73 | int depth, void *data); | 73 | int depth, void *data); |
| 74 | 74 | ||
| 75 | extern bool early_init_dt_scan(void *params); | 75 | extern bool early_init_dt_scan(void *params); |
| 76 | extern bool early_init_dt_verify(void *params); | ||
| 77 | extern void early_init_dt_scan_nodes(void); | ||
| 76 | 78 | ||
| 77 | extern const char *of_flat_dt_get_machine_name(void); | 79 | extern const char *of_flat_dt_get_machine_name(void); |
| 78 | extern const void *of_flat_dt_match_machine(const void *default_match, | 80 | extern const void *of_flat_dt_match_machine(const void *default_match, |
| @@ -84,6 +86,7 @@ extern void unflatten_and_copy_device_tree(void); | |||
| 84 | extern void early_init_devtree(void *); | 86 | extern void early_init_devtree(void *); |
| 85 | extern void early_get_first_memblock_info(void *, phys_addr_t *); | 87 | extern void early_get_first_memblock_info(void *, phys_addr_t *); |
| 86 | extern u64 fdt_translate_address(const void *blob, int node_offset); | 88 | extern u64 fdt_translate_address(const void *blob, int node_offset); |
| 89 | extern void of_fdt_limit_memory(int limit); | ||
| 87 | #else /* CONFIG_OF_FLATTREE */ | 90 | #else /* CONFIG_OF_FLATTREE */ |
| 88 | static inline void early_init_fdt_scan_reserved_mem(void) {} | 91 | static inline void early_init_fdt_scan_reserved_mem(void) {} |
| 89 | static inline const char *of_flat_dt_get_machine_name(void) { return NULL; } | 92 | static inline const char *of_flat_dt_get_machine_name(void) { return NULL; } |
diff --git a/include/linux/of_mdio.h b/include/linux/of_mdio.h index a70c9493d55a..d449018d0726 100644 --- a/include/linux/of_mdio.h +++ b/include/linux/of_mdio.h | |||
| @@ -25,9 +25,6 @@ struct phy_device *of_phy_attach(struct net_device *dev, | |||
| 25 | 25 | ||
| 26 | extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np); | 26 | extern struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np); |
| 27 | 27 | ||
| 28 | extern void of_mdiobus_link_phydev(struct mii_bus *mdio, | ||
| 29 | struct phy_device *phydev); | ||
| 30 | |||
| 31 | #else /* CONFIG_OF */ | 28 | #else /* CONFIG_OF */ |
| 32 | static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) | 29 | static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) |
| 33 | { | 30 | { |
| @@ -63,11 +60,6 @@ static inline struct mii_bus *of_mdio_find_bus(struct device_node *mdio_np) | |||
| 63 | { | 60 | { |
| 64 | return NULL; | 61 | return NULL; |
| 65 | } | 62 | } |
| 66 | |||
| 67 | static inline void of_mdiobus_link_phydev(struct mii_bus *mdio, | ||
| 68 | struct phy_device *phydev) | ||
| 69 | { | ||
| 70 | } | ||
| 71 | #endif /* CONFIG_OF */ | 63 | #endif /* CONFIG_OF */ |
| 72 | 64 | ||
| 73 | #if defined(CONFIG_OF) && defined(CONFIG_FIXED_PHY) | 65 | #if defined(CONFIG_OF) && defined(CONFIG_FIXED_PHY) |
diff --git a/include/linux/osq_lock.h b/include/linux/osq_lock.h new file mode 100644 index 000000000000..90230d5811c5 --- /dev/null +++ b/include/linux/osq_lock.h | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | #ifndef __LINUX_OSQ_LOCK_H | ||
| 2 | #define __LINUX_OSQ_LOCK_H | ||
| 3 | |||
| 4 | /* | ||
| 5 | * An MCS like lock especially tailored for optimistic spinning for sleeping | ||
| 6 | * lock implementations (mutex, rwsem, etc). | ||
| 7 | */ | ||
| 8 | |||
| 9 | #define OSQ_UNLOCKED_VAL (0) | ||
| 10 | |||
| 11 | struct optimistic_spin_queue { | ||
| 12 | /* | ||
| 13 | * Stores an encoded value of the CPU # of the tail node in the queue. | ||
| 14 | * If the queue is empty, then it's set to OSQ_UNLOCKED_VAL. | ||
| 15 | */ | ||
| 16 | atomic_t tail; | ||
| 17 | }; | ||
| 18 | |||
| 19 | /* Init macro and function. */ | ||
| 20 | #define OSQ_LOCK_UNLOCKED { ATOMIC_INIT(OSQ_UNLOCKED_VAL) } | ||
| 21 | |||
| 22 | static inline void osq_lock_init(struct optimistic_spin_queue *lock) | ||
| 23 | { | ||
| 24 | atomic_set(&lock->tail, OSQ_UNLOCKED_VAL); | ||
| 25 | } | ||
| 26 | |||
| 27 | #endif | ||
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 0a97b583ee8d..e1474ae18c88 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
| @@ -399,6 +399,18 @@ static inline struct page *read_mapping_page(struct address_space *mapping, | |||
| 399 | } | 399 | } |
| 400 | 400 | ||
| 401 | /* | 401 | /* |
| 402 | * Get the offset in PAGE_SIZE. | ||
| 403 | * (TODO: hugepage should have ->index in PAGE_SIZE) | ||
| 404 | */ | ||
| 405 | static inline pgoff_t page_to_pgoff(struct page *page) | ||
| 406 | { | ||
| 407 | if (unlikely(PageHeadHuge(page))) | ||
| 408 | return page->index << compound_order(page); | ||
| 409 | else | ||
| 410 | return page->index << (PAGE_CACHE_SHIFT - PAGE_SHIFT); | ||
| 411 | } | ||
| 412 | |||
| 413 | /* | ||
| 402 | * Return byte-offset into filesystem object for page. | 414 | * Return byte-offset into filesystem object for page. |
| 403 | */ | 415 | */ |
| 404 | static inline loff_t page_offset(struct page *page) | 416 | static inline loff_t page_offset(struct page *page) |
diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h index a5fc7d01aad6..dec01d6c3f80 100644 --- a/include/linux/percpu-defs.h +++ b/include/linux/percpu-defs.h | |||
| @@ -146,10 +146,10 @@ | |||
| 146 | * Declaration/definition used for per-CPU variables that must be read mostly. | 146 | * Declaration/definition used for per-CPU variables that must be read mostly. |
| 147 | */ | 147 | */ |
| 148 | #define DECLARE_PER_CPU_READ_MOSTLY(type, name) \ | 148 | #define DECLARE_PER_CPU_READ_MOSTLY(type, name) \ |
| 149 | DECLARE_PER_CPU_SECTION(type, name, "..readmostly") | 149 | DECLARE_PER_CPU_SECTION(type, name, "..read_mostly") |
| 150 | 150 | ||
| 151 | #define DEFINE_PER_CPU_READ_MOSTLY(type, name) \ | 151 | #define DEFINE_PER_CPU_READ_MOSTLY(type, name) \ |
| 152 | DEFINE_PER_CPU_SECTION(type, name, "..readmostly") | 152 | DEFINE_PER_CPU_SECTION(type, name, "..read_mostly") |
| 153 | 153 | ||
| 154 | /* | 154 | /* |
| 155 | * Intermodule exports for per-CPU variables. sparse forgets about | 155 | * Intermodule exports for per-CPU variables. sparse forgets about |
diff --git a/include/linux/platform_data/asoc-s3c.h b/include/linux/platform_data/asoc-s3c.h index 709c6f7e2f8c..a6591c693ebb 100644 --- a/include/linux/platform_data/asoc-s3c.h +++ b/include/linux/platform_data/asoc-s3c.h | |||
| @@ -15,15 +15,6 @@ | |||
| 15 | #define S3C64XX_AC97_GPE 1 | 15 | #define S3C64XX_AC97_GPE 1 |
| 16 | extern void s3c64xx_ac97_setup_gpio(int); | 16 | extern void s3c64xx_ac97_setup_gpio(int); |
| 17 | 17 | ||
| 18 | /* | ||
| 19 | * The machine init code calls s5p*_spdif_setup_gpio with | ||
| 20 | * one of these defines in order to select appropriate bank | ||
| 21 | * of GPIO for S/PDIF pins | ||
| 22 | */ | ||
| 23 | #define S5PC100_SPDIF_GPD 0 | ||
| 24 | #define S5PC100_SPDIF_GPG3 1 | ||
| 25 | extern void s5pc100_spdif_setup_gpio(int); | ||
| 26 | |||
| 27 | struct samsung_i2s { | 18 | struct samsung_i2s { |
| 28 | /* If the Primary DAI has 5.1 Channels */ | 19 | /* If the Primary DAI has 5.1 Channels */ |
| 29 | #define QUIRK_PRI_6CHAN (1 << 0) | 20 | #define QUIRK_PRI_6CHAN (1 << 0) |
diff --git a/include/linux/platform_data/dma-imx.h b/include/linux/platform_data/dma-imx.h index bcbc6c3c14c0..d05542aafa3e 100644 --- a/include/linux/platform_data/dma-imx.h +++ b/include/linux/platform_data/dma-imx.h | |||
| @@ -50,6 +50,7 @@ enum imx_dma_prio { | |||
| 50 | 50 | ||
| 51 | struct imx_dma_data { | 51 | struct imx_dma_data { |
| 52 | int dma_request; /* DMA request line */ | 52 | int dma_request; /* DMA request line */ |
| 53 | int dma_request2; /* secondary DMA request line */ | ||
| 53 | enum sdma_peripheral_type peripheral_type; | 54 | enum sdma_peripheral_type peripheral_type; |
| 54 | int priority; | 55 | int priority; |
| 55 | }; | 56 | }; |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 5a75d19aa661..6a94cc8b1ca0 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
| @@ -44,7 +44,6 @@ | |||
| 44 | #include <linux/debugobjects.h> | 44 | #include <linux/debugobjects.h> |
| 45 | #include <linux/bug.h> | 45 | #include <linux/bug.h> |
| 46 | #include <linux/compiler.h> | 46 | #include <linux/compiler.h> |
| 47 | #include <linux/percpu.h> | ||
| 48 | #include <asm/barrier.h> | 47 | #include <asm/barrier.h> |
| 49 | 48 | ||
| 50 | extern int rcu_expedited; /* for sysctl */ | 49 | extern int rcu_expedited; /* for sysctl */ |
| @@ -300,41 +299,6 @@ bool __rcu_is_watching(void); | |||
| 300 | #endif /* #if defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_RCU_TRACE) || defined(CONFIG_SMP) */ | 299 | #endif /* #if defined(CONFIG_DEBUG_LOCK_ALLOC) || defined(CONFIG_RCU_TRACE) || defined(CONFIG_SMP) */ |
| 301 | 300 | ||
| 302 | /* | 301 | /* |
| 303 | * Hooks for cond_resched() and friends to avoid RCU CPU stall warnings. | ||
| 304 | */ | ||
| 305 | |||
| 306 | #define RCU_COND_RESCHED_LIM 256 /* ms vs. 100s of ms. */ | ||
| 307 | DECLARE_PER_CPU(int, rcu_cond_resched_count); | ||
| 308 | void rcu_resched(void); | ||
| 309 | |||
| 310 | /* | ||
| 311 | * Is it time to report RCU quiescent states? | ||
| 312 | * | ||
| 313 | * Note unsynchronized access to rcu_cond_resched_count. Yes, we might | ||
| 314 | * increment some random CPU's count, and possibly also load the result from | ||
| 315 | * yet another CPU's count. We might even clobber some other CPU's attempt | ||
| 316 | * to zero its counter. This is all OK because the goal is not precision, | ||
| 317 | * but rather reasonable amortization of rcu_note_context_switch() overhead | ||
| 318 | * and extremely high probability of avoiding RCU CPU stall warnings. | ||
| 319 | * Note that this function has to be preempted in just the wrong place, | ||
| 320 | * many thousands of times in a row, for anything bad to happen. | ||
| 321 | */ | ||
| 322 | static inline bool rcu_should_resched(void) | ||
| 323 | { | ||
| 324 | return raw_cpu_inc_return(rcu_cond_resched_count) >= | ||
| 325 | RCU_COND_RESCHED_LIM; | ||
| 326 | } | ||
| 327 | |||
| 328 | /* | ||
| 329 | * Report quiscent states to RCU if it is time to do so. | ||
| 330 | */ | ||
| 331 | static inline void rcu_cond_resched(void) | ||
| 332 | { | ||
| 333 | if (unlikely(rcu_should_resched())) | ||
| 334 | rcu_resched(); | ||
| 335 | } | ||
| 336 | |||
| 337 | /* | ||
| 338 | * Infrastructure to implement the synchronize_() primitives in | 302 | * Infrastructure to implement the synchronize_() primitives in |
| 339 | * TREE_RCU and rcu_barrier_() primitives in TINY_RCU. | 303 | * TREE_RCU and rcu_barrier_() primitives in TINY_RCU. |
| 340 | */ | 304 | */ |
| @@ -358,9 +322,19 @@ void wait_rcu_gp(call_rcu_func_t crf); | |||
| 358 | * initialization. | 322 | * initialization. |
| 359 | */ | 323 | */ |
| 360 | #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD | 324 | #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD |
| 325 | void init_rcu_head(struct rcu_head *head); | ||
| 326 | void destroy_rcu_head(struct rcu_head *head); | ||
| 361 | void init_rcu_head_on_stack(struct rcu_head *head); | 327 | void init_rcu_head_on_stack(struct rcu_head *head); |
| 362 | void destroy_rcu_head_on_stack(struct rcu_head *head); | 328 | void destroy_rcu_head_on_stack(struct rcu_head *head); |
| 363 | #else /* !CONFIG_DEBUG_OBJECTS_RCU_HEAD */ | 329 | #else /* !CONFIG_DEBUG_OBJECTS_RCU_HEAD */ |
| 330 | static inline void init_rcu_head(struct rcu_head *head) | ||
| 331 | { | ||
| 332 | } | ||
| 333 | |||
| 334 | static inline void destroy_rcu_head(struct rcu_head *head) | ||
| 335 | { | ||
| 336 | } | ||
| 337 | |||
| 364 | static inline void init_rcu_head_on_stack(struct rcu_head *head) | 338 | static inline void init_rcu_head_on_stack(struct rcu_head *head) |
| 365 | { | 339 | { |
| 366 | } | 340 | } |
diff --git a/include/linux/rwsem-spinlock.h b/include/linux/rwsem-spinlock.h index d5b13bc07a0b..561e8615528d 100644 --- a/include/linux/rwsem-spinlock.h +++ b/include/linux/rwsem-spinlock.h | |||
| @@ -15,13 +15,13 @@ | |||
| 15 | #ifdef __KERNEL__ | 15 | #ifdef __KERNEL__ |
| 16 | /* | 16 | /* |
| 17 | * the rw-semaphore definition | 17 | * the rw-semaphore definition |
| 18 | * - if activity is 0 then there are no active readers or writers | 18 | * - if count is 0 then there are no active readers or writers |
| 19 | * - if activity is +ve then that is the number of active readers | 19 | * - if count is +ve then that is the number of active readers |
| 20 | * - if activity is -1 then there is one active writer | 20 | * - if count is -1 then there is one active writer |
| 21 | * - if wait_list is not empty, then there are processes waiting for the semaphore | 21 | * - if wait_list is not empty, then there are processes waiting for the semaphore |
| 22 | */ | 22 | */ |
| 23 | struct rw_semaphore { | 23 | struct rw_semaphore { |
| 24 | __s32 activity; | 24 | __s32 count; |
| 25 | raw_spinlock_t wait_lock; | 25 | raw_spinlock_t wait_lock; |
| 26 | struct list_head wait_list; | 26 | struct list_head wait_list; |
| 27 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 27 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h index 8d79708146aa..035d3c57fc8a 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h | |||
| @@ -13,10 +13,11 @@ | |||
| 13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
| 14 | #include <linux/list.h> | 14 | #include <linux/list.h> |
| 15 | #include <linux/spinlock.h> | 15 | #include <linux/spinlock.h> |
| 16 | |||
| 17 | #include <linux/atomic.h> | 16 | #include <linux/atomic.h> |
| 17 | #ifdef CONFIG_RWSEM_SPIN_ON_OWNER | ||
| 18 | #include <linux/osq_lock.h> | ||
| 19 | #endif | ||
| 18 | 20 | ||
| 19 | struct optimistic_spin_queue; | ||
| 20 | struct rw_semaphore; | 21 | struct rw_semaphore; |
| 21 | 22 | ||
| 22 | #ifdef CONFIG_RWSEM_GENERIC_SPINLOCK | 23 | #ifdef CONFIG_RWSEM_GENERIC_SPINLOCK |
| @@ -25,15 +26,15 @@ struct rw_semaphore; | |||
| 25 | /* All arch specific implementations share the same struct */ | 26 | /* All arch specific implementations share the same struct */ |
| 26 | struct rw_semaphore { | 27 | struct rw_semaphore { |
| 27 | long count; | 28 | long count; |
| 28 | raw_spinlock_t wait_lock; | ||
| 29 | struct list_head wait_list; | 29 | struct list_head wait_list; |
| 30 | #ifdef CONFIG_SMP | 30 | raw_spinlock_t wait_lock; |
| 31 | #ifdef CONFIG_RWSEM_SPIN_ON_OWNER | ||
| 32 | struct optimistic_spin_queue osq; /* spinner MCS lock */ | ||
| 31 | /* | 33 | /* |
| 32 | * Write owner. Used as a speculative check to see | 34 | * Write owner. Used as a speculative check to see |
| 33 | * if the owner is running on the cpu. | 35 | * if the owner is running on the cpu. |
| 34 | */ | 36 | */ |
| 35 | struct task_struct *owner; | 37 | struct task_struct *owner; |
| 36 | struct optimistic_spin_queue *osq; /* spinner MCS lock */ | ||
| 37 | #endif | 38 | #endif |
| 38 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 39 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
| 39 | struct lockdep_map dep_map; | 40 | struct lockdep_map dep_map; |
| @@ -64,22 +65,19 @@ static inline int rwsem_is_locked(struct rw_semaphore *sem) | |||
| 64 | # define __RWSEM_DEP_MAP_INIT(lockname) | 65 | # define __RWSEM_DEP_MAP_INIT(lockname) |
| 65 | #endif | 66 | #endif |
| 66 | 67 | ||
| 67 | #if defined(CONFIG_SMP) && !defined(CONFIG_RWSEM_GENERIC_SPINLOCK) | 68 | #ifdef CONFIG_RWSEM_SPIN_ON_OWNER |
| 68 | #define __RWSEM_INITIALIZER(name) \ | 69 | #define __RWSEM_OPT_INIT(lockname) , .osq = OSQ_LOCK_UNLOCKED, .owner = NULL |
| 69 | { RWSEM_UNLOCKED_VALUE, \ | ||
| 70 | __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock), \ | ||
| 71 | LIST_HEAD_INIT((name).wait_list), \ | ||
| 72 | NULL, /* owner */ \ | ||
| 73 | NULL /* mcs lock */ \ | ||
| 74 | __RWSEM_DEP_MAP_INIT(name) } | ||
| 75 | #else | 70 | #else |
| 76 | #define __RWSEM_INITIALIZER(name) \ | 71 | #define __RWSEM_OPT_INIT(lockname) |
| 77 | { RWSEM_UNLOCKED_VALUE, \ | ||
| 78 | __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock), \ | ||
| 79 | LIST_HEAD_INIT((name).wait_list) \ | ||
| 80 | __RWSEM_DEP_MAP_INIT(name) } | ||
| 81 | #endif | 72 | #endif |
| 82 | 73 | ||
| 74 | #define __RWSEM_INITIALIZER(name) \ | ||
| 75 | { .count = RWSEM_UNLOCKED_VALUE, \ | ||
| 76 | .wait_list = LIST_HEAD_INIT((name).wait_list), \ | ||
| 77 | .wait_lock = __RAW_SPIN_LOCK_UNLOCKED(name.wait_lock) \ | ||
| 78 | __RWSEM_OPT_INIT(name) \ | ||
| 79 | __RWSEM_DEP_MAP_INIT(name) } | ||
| 80 | |||
| 83 | #define DECLARE_RWSEM(name) \ | 81 | #define DECLARE_RWSEM(name) \ |
| 84 | struct rw_semaphore name = __RWSEM_INITIALIZER(name) | 82 | struct rw_semaphore name = __RWSEM_INITIALIZER(name) |
| 85 | 83 | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 306f4f0c987a..0376b054a0d0 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -872,21 +872,21 @@ enum cpu_idle_type { | |||
| 872 | #define SD_NUMA 0x4000 /* cross-node balancing */ | 872 | #define SD_NUMA 0x4000 /* cross-node balancing */ |
| 873 | 873 | ||
| 874 | #ifdef CONFIG_SCHED_SMT | 874 | #ifdef CONFIG_SCHED_SMT |
| 875 | static inline const int cpu_smt_flags(void) | 875 | static inline int cpu_smt_flags(void) |
| 876 | { | 876 | { |
| 877 | return SD_SHARE_CPUCAPACITY | SD_SHARE_PKG_RESOURCES; | 877 | return SD_SHARE_CPUCAPACITY | SD_SHARE_PKG_RESOURCES; |
| 878 | } | 878 | } |
| 879 | #endif | 879 | #endif |
| 880 | 880 | ||
| 881 | #ifdef CONFIG_SCHED_MC | 881 | #ifdef CONFIG_SCHED_MC |
| 882 | static inline const int cpu_core_flags(void) | 882 | static inline int cpu_core_flags(void) |
| 883 | { | 883 | { |
| 884 | return SD_SHARE_PKG_RESOURCES; | 884 | return SD_SHARE_PKG_RESOURCES; |
| 885 | } | 885 | } |
| 886 | #endif | 886 | #endif |
| 887 | 887 | ||
| 888 | #ifdef CONFIG_NUMA | 888 | #ifdef CONFIG_NUMA |
| 889 | static inline const int cpu_numa_flags(void) | 889 | static inline int cpu_numa_flags(void) |
| 890 | { | 890 | { |
| 891 | return SD_NUMA; | 891 | return SD_NUMA; |
| 892 | } | 892 | } |
| @@ -999,7 +999,7 @@ void free_sched_domains(cpumask_var_t doms[], unsigned int ndoms); | |||
| 999 | bool cpus_share_cache(int this_cpu, int that_cpu); | 999 | bool cpus_share_cache(int this_cpu, int that_cpu); |
| 1000 | 1000 | ||
| 1001 | typedef const struct cpumask *(*sched_domain_mask_f)(int cpu); | 1001 | typedef const struct cpumask *(*sched_domain_mask_f)(int cpu); |
| 1002 | typedef const int (*sched_domain_flags_f)(void); | 1002 | typedef int (*sched_domain_flags_f)(void); |
| 1003 | 1003 | ||
| 1004 | #define SDTL_OVERLAP 0x01 | 1004 | #define SDTL_OVERLAP 0x01 |
| 1005 | 1005 | ||
diff --git a/include/net/ip.h b/include/net/ip.h index 0e795df05ec9..7596eb22e1ce 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
| @@ -309,16 +309,7 @@ static inline unsigned int ip_skb_dst_mtu(const struct sk_buff *skb) | |||
| 309 | } | 309 | } |
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | #define IP_IDENTS_SZ 2048u | 312 | u32 ip_idents_reserve(u32 hash, int segs); |
| 313 | extern atomic_t *ip_idents; | ||
| 314 | |||
| 315 | static inline u32 ip_idents_reserve(u32 hash, int segs) | ||
| 316 | { | ||
| 317 | atomic_t *id_ptr = ip_idents + hash % IP_IDENTS_SZ; | ||
| 318 | |||
| 319 | return atomic_add_return(segs, id_ptr) - segs; | ||
| 320 | } | ||
| 321 | |||
| 322 | void __ip_select_ident(struct iphdr *iph, int segs); | 313 | void __ip_select_ident(struct iphdr *iph, int segs); |
| 323 | 314 | ||
| 324 | static inline void ip_select_ident_segs(struct sk_buff *skb, struct sock *sk, int segs) | 315 | static inline void ip_select_ident_segs(struct sk_buff *skb, struct sock *sk, int segs) |
diff --git a/include/net/neighbour.h b/include/net/neighbour.h index 7277caf3743d..47f425464f84 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h | |||
| @@ -203,7 +203,6 @@ struct neigh_table { | |||
| 203 | void (*proxy_redo)(struct sk_buff *skb); | 203 | void (*proxy_redo)(struct sk_buff *skb); |
| 204 | char *id; | 204 | char *id; |
| 205 | struct neigh_parms parms; | 205 | struct neigh_parms parms; |
| 206 | /* HACK. gc_* should follow parms without a gap! */ | ||
| 207 | int gc_interval; | 206 | int gc_interval; |
| 208 | int gc_thresh1; | 207 | int gc_thresh1; |
| 209 | int gc_thresh2; | 208 | int gc_thresh2; |
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 713b0b88bd5a..c4d86198d3d6 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #include <linux/netfilter/nfnetlink.h> | 6 | #include <linux/netfilter/nfnetlink.h> |
| 7 | #include <linux/netfilter/x_tables.h> | 7 | #include <linux/netfilter/x_tables.h> |
| 8 | #include <linux/netfilter/nf_tables.h> | 8 | #include <linux/netfilter/nf_tables.h> |
| 9 | #include <linux/u64_stats_sync.h> | ||
| 9 | #include <net/netlink.h> | 10 | #include <net/netlink.h> |
| 10 | 11 | ||
| 11 | #define NFT_JUMP_STACK_SIZE 16 | 12 | #define NFT_JUMP_STACK_SIZE 16 |
| @@ -528,8 +529,9 @@ enum nft_chain_type { | |||
| 528 | }; | 529 | }; |
| 529 | 530 | ||
| 530 | struct nft_stats { | 531 | struct nft_stats { |
| 531 | u64 bytes; | 532 | u64 bytes; |
| 532 | u64 pkts; | 533 | u64 pkts; |
| 534 | struct u64_stats_sync syncp; | ||
| 533 | }; | 535 | }; |
| 534 | 536 | ||
| 535 | #define NFT_HOOK_OPS_MAX 2 | 537 | #define NFT_HOOK_OPS_MAX 2 |
diff --git a/include/net/netns/ieee802154_6lowpan.h b/include/net/netns/ieee802154_6lowpan.h index 079030c853d8..e2070960bac0 100644 --- a/include/net/netns/ieee802154_6lowpan.h +++ b/include/net/netns/ieee802154_6lowpan.h | |||
| @@ -16,7 +16,7 @@ struct netns_sysctl_lowpan { | |||
| 16 | struct netns_ieee802154_lowpan { | 16 | struct netns_ieee802154_lowpan { |
| 17 | struct netns_sysctl_lowpan sysctl; | 17 | struct netns_sysctl_lowpan sysctl; |
| 18 | struct netns_frags frags; | 18 | struct netns_frags frags; |
| 19 | u16 max_dsize; | 19 | int max_dsize; |
| 20 | }; | 20 | }; |
| 21 | 21 | ||
| 22 | #endif | 22 | #endif |
diff --git a/include/net/netns/nftables.h b/include/net/netns/nftables.h index 26a394cb91a8..eee608b12cc9 100644 --- a/include/net/netns/nftables.h +++ b/include/net/netns/nftables.h | |||
| @@ -13,8 +13,8 @@ struct netns_nftables { | |||
| 13 | struct nft_af_info *inet; | 13 | struct nft_af_info *inet; |
| 14 | struct nft_af_info *arp; | 14 | struct nft_af_info *arp; |
| 15 | struct nft_af_info *bridge; | 15 | struct nft_af_info *bridge; |
| 16 | unsigned int base_seq; | ||
| 16 | u8 gencursor; | 17 | u8 gencursor; |
| 17 | u8 genctr; | ||
| 18 | }; | 18 | }; |
| 19 | 19 | ||
| 20 | #endif | 20 | #endif |
diff --git a/include/net/sock.h b/include/net/sock.h index 173cae485de1..156350745700 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
| @@ -1768,9 +1768,11 @@ __sk_dst_set(struct sock *sk, struct dst_entry *dst) | |||
| 1768 | static inline void | 1768 | static inline void |
| 1769 | sk_dst_set(struct sock *sk, struct dst_entry *dst) | 1769 | sk_dst_set(struct sock *sk, struct dst_entry *dst) |
| 1770 | { | 1770 | { |
| 1771 | spin_lock(&sk->sk_dst_lock); | 1771 | struct dst_entry *old_dst; |
| 1772 | __sk_dst_set(sk, dst); | 1772 | |
| 1773 | spin_unlock(&sk->sk_dst_lock); | 1773 | sk_tx_queue_clear(sk); |
| 1774 | old_dst = xchg((__force struct dst_entry **)&sk->sk_dst_cache, dst); | ||
| 1775 | dst_release(old_dst); | ||
| 1774 | } | 1776 | } |
| 1775 | 1777 | ||
| 1776 | static inline void | 1778 | static inline void |
| @@ -1782,9 +1784,7 @@ __sk_dst_reset(struct sock *sk) | |||
| 1782 | static inline void | 1784 | static inline void |
| 1783 | sk_dst_reset(struct sock *sk) | 1785 | sk_dst_reset(struct sock *sk) |
| 1784 | { | 1786 | { |
| 1785 | spin_lock(&sk->sk_dst_lock); | 1787 | sk_dst_set(sk, NULL); |
| 1786 | __sk_dst_reset(sk); | ||
| 1787 | spin_unlock(&sk->sk_dst_lock); | ||
| 1788 | } | 1788 | } |
| 1789 | 1789 | ||
| 1790 | struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie); | 1790 | struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie); |
diff --git a/include/sound/control.h b/include/sound/control.h index 5358892b1b39..042613938a1d 100644 --- a/include/sound/control.h +++ b/include/sound/control.h | |||
| @@ -31,10 +31,15 @@ typedef int (snd_kcontrol_info_t) (struct snd_kcontrol * kcontrol, struct snd_ct | |||
| 31 | typedef int (snd_kcontrol_get_t) (struct snd_kcontrol * kcontrol, struct snd_ctl_elem_value * ucontrol); | 31 | typedef int (snd_kcontrol_get_t) (struct snd_kcontrol * kcontrol, struct snd_ctl_elem_value * ucontrol); |
| 32 | typedef int (snd_kcontrol_put_t) (struct snd_kcontrol * kcontrol, struct snd_ctl_elem_value * ucontrol); | 32 | typedef int (snd_kcontrol_put_t) (struct snd_kcontrol * kcontrol, struct snd_ctl_elem_value * ucontrol); |
| 33 | typedef int (snd_kcontrol_tlv_rw_t)(struct snd_kcontrol *kcontrol, | 33 | typedef int (snd_kcontrol_tlv_rw_t)(struct snd_kcontrol *kcontrol, |
| 34 | int op_flag, /* 0=read,1=write,-1=command */ | 34 | int op_flag, /* SNDRV_CTL_TLV_OP_XXX */ |
| 35 | unsigned int size, | 35 | unsigned int size, |
| 36 | unsigned int __user *tlv); | 36 | unsigned int __user *tlv); |
| 37 | 37 | ||
| 38 | enum { | ||
| 39 | SNDRV_CTL_TLV_OP_READ = 0, | ||
| 40 | SNDRV_CTL_TLV_OP_WRITE = 1, | ||
| 41 | SNDRV_CTL_TLV_OP_CMD = -1, | ||
| 42 | }; | ||
| 38 | 43 | ||
| 39 | struct snd_kcontrol_new { | 44 | struct snd_kcontrol_new { |
| 40 | snd_ctl_elem_iface_t iface; /* interface identifier */ | 45 | snd_ctl_elem_iface_t iface; /* interface identifier */ |
diff --git a/include/sound/rcar_snd.h b/include/sound/rcar_snd.h index f4a706f82cb7..d76412b84b48 100644 --- a/include/sound/rcar_snd.h +++ b/include/sound/rcar_snd.h | |||
| @@ -34,6 +34,7 @@ | |||
| 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_NO_BUSIF (1 << 30) /* SSI+DMA without BUSIF */ | ||
| 37 | 38 | ||
| 38 | #define RSND_SSI(_dma_id, _pio_irq, _flags) \ | 39 | #define RSND_SSI(_dma_id, _pio_irq, _flags) \ |
| 39 | { .dma_id = _dma_id, .pio_irq = _pio_irq, .flags = _flags } | 40 | { .dma_id = _dma_id, .pio_irq = _pio_irq, .flags = _flags } |
diff --git a/include/sound/rt286.h b/include/sound/rt286.h new file mode 100644 index 000000000000..eb773d1485f2 --- /dev/null +++ b/include/sound/rt286.h | |||
| @@ -0,0 +1,19 @@ | |||
| 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_RT286_H | ||
| 12 | #define __LINUX_SND_RT286_H | ||
| 13 | |||
| 14 | struct rt286_platform_data { | ||
| 15 | bool cbj_en; /*combo jack enable*/ | ||
| 16 | bool gpio2_en; /*GPIO2 enable*/ | ||
| 17 | }; | ||
| 18 | |||
| 19 | #endif | ||
diff --git a/include/sound/rt5670.h b/include/sound/rt5670.h new file mode 100644 index 000000000000..bd311197a3b5 --- /dev/null +++ b/include/sound/rt5670.h | |||
| @@ -0,0 +1,27 @@ | |||
| 1 | /* | ||
| 2 | * linux/sound/rt5670.h -- Platform data for RT5670 | ||
| 3 | * | ||
| 4 | * Copyright 2014 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_RT5670_H | ||
| 12 | #define __LINUX_SND_RT5670_H | ||
| 13 | |||
| 14 | struct rt5670_platform_data { | ||
| 15 | int jd_mode; | ||
| 16 | bool in2_diff; | ||
| 17 | |||
| 18 | bool dmic_en; | ||
| 19 | unsigned int dmic1_data_pin; | ||
| 20 | /* 0 = GPIO6; 1 = IN2P; 3 = GPIO7*/ | ||
| 21 | unsigned int dmic2_data_pin; | ||
| 22 | /* 0 = GPIO8; 1 = IN3N; */ | ||
| 23 | unsigned int dmic3_data_pin; | ||
| 24 | /* 0 = GPIO9; 1 = GPIO10; 2 = GPIO5*/ | ||
| 25 | }; | ||
| 26 | |||
| 27 | #endif | ||
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h index 688f2ba8009f..e8b3080d196a 100644 --- a/include/sound/soc-dai.h +++ b/include/sound/soc-dai.h | |||
| @@ -257,7 +257,6 @@ struct snd_soc_dai { | |||
| 257 | 257 | ||
| 258 | struct snd_soc_dapm_widget *playback_widget; | 258 | struct snd_soc_dapm_widget *playback_widget; |
| 259 | struct snd_soc_dapm_widget *capture_widget; | 259 | struct snd_soc_dapm_widget *capture_widget; |
| 260 | struct snd_soc_dapm_context dapm; | ||
| 261 | 260 | ||
| 262 | /* DAI DMA data */ | 261 | /* DAI DMA data */ |
| 263 | void *playback_dma_data; | 262 | void *playback_dma_data; |
| @@ -273,6 +272,10 @@ struct snd_soc_dai { | |||
| 273 | struct snd_soc_codec *codec; | 272 | struct snd_soc_codec *codec; |
| 274 | struct snd_soc_component *component; | 273 | struct snd_soc_component *component; |
| 275 | 274 | ||
| 275 | /* CODEC TDM slot masks and params (for fixup) */ | ||
| 276 | unsigned int tx_mask; | ||
| 277 | unsigned int rx_mask; | ||
| 278 | |||
| 276 | struct snd_soc_card *card; | 279 | struct snd_soc_card *card; |
| 277 | 280 | ||
| 278 | struct list_head list; | 281 | struct list_head list; |
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h index 6b59471cdf44..aac04ff84eea 100644 --- a/include/sound/soc-dapm.h +++ b/include/sound/soc-dapm.h | |||
| @@ -431,7 +431,7 @@ int snd_soc_dapm_force_enable_pin_unlocked(struct snd_soc_dapm_context *dapm, | |||
| 431 | const char *pin); | 431 | const char *pin); |
| 432 | int snd_soc_dapm_ignore_suspend(struct snd_soc_dapm_context *dapm, | 432 | int snd_soc_dapm_ignore_suspend(struct snd_soc_dapm_context *dapm, |
| 433 | const char *pin); | 433 | const char *pin); |
| 434 | void snd_soc_dapm_auto_nc_codec_pins(struct snd_soc_codec *codec); | 434 | void snd_soc_dapm_auto_nc_pins(struct snd_soc_card *card); |
| 435 | 435 | ||
| 436 | /* Mostly internal - should not normally be used */ | 436 | /* Mostly internal - should not normally be used */ |
| 437 | void dapm_mark_io_dirty(struct snd_soc_dapm_context *dapm); | 437 | void dapm_mark_io_dirty(struct snd_soc_dapm_context *dapm); |
| @@ -441,6 +441,8 @@ int snd_soc_dapm_dai_get_connected_widgets(struct snd_soc_dai *dai, int stream, | |||
| 441 | struct snd_soc_dapm_widget_list **list); | 441 | struct snd_soc_dapm_widget_list **list); |
| 442 | 442 | ||
| 443 | struct snd_soc_codec *snd_soc_dapm_kcontrol_codec(struct snd_kcontrol *kcontrol); | 443 | struct snd_soc_codec *snd_soc_dapm_kcontrol_codec(struct snd_kcontrol *kcontrol); |
| 444 | struct snd_soc_dapm_context *snd_soc_dapm_kcontrol_dapm( | ||
| 445 | struct snd_kcontrol *kcontrol); | ||
| 444 | 446 | ||
| 445 | /* dapm widget types */ | 447 | /* dapm widget types */ |
| 446 | enum snd_soc_dapm_type { | 448 | enum snd_soc_dapm_type { |
| @@ -524,7 +526,6 @@ struct snd_soc_dapm_widget { | |||
| 524 | const char *name; /* widget name */ | 526 | const char *name; /* widget name */ |
| 525 | const char *sname; /* stream name */ | 527 | const char *sname; /* stream name */ |
| 526 | struct snd_soc_codec *codec; | 528 | struct snd_soc_codec *codec; |
| 527 | struct snd_soc_platform *platform; | ||
| 528 | struct list_head list; | 529 | struct list_head list; |
| 529 | struct snd_soc_dapm_context *dapm; | 530 | struct snd_soc_dapm_context *dapm; |
| 530 | 531 | ||
| @@ -593,7 +594,6 @@ struct snd_soc_dapm_context { | |||
| 593 | struct device *dev; /* from parent - for debug */ | 594 | struct device *dev; /* from parent - for debug */ |
| 594 | struct snd_soc_component *component; /* parent component */ | 595 | struct snd_soc_component *component; /* parent component */ |
| 595 | struct snd_soc_codec *codec; /* parent codec */ | 596 | struct snd_soc_codec *codec; /* parent codec */ |
| 596 | struct snd_soc_platform *platform; /* parent platform */ | ||
| 597 | struct snd_soc_card *card; /* parent card */ | 597 | struct snd_soc_card *card; /* parent card */ |
| 598 | 598 | ||
| 599 | /* used during DAPM updates */ | 599 | /* used during DAPM updates */ |
| @@ -601,6 +601,8 @@ struct snd_soc_dapm_context { | |||
| 601 | struct list_head list; | 601 | struct list_head list; |
| 602 | 602 | ||
| 603 | int (*stream_event)(struct snd_soc_dapm_context *dapm, int event); | 603 | int (*stream_event)(struct snd_soc_dapm_context *dapm, int event); |
| 604 | int (*set_bias_level)(struct snd_soc_dapm_context *dapm, | ||
| 605 | enum snd_soc_bias_level level); | ||
| 604 | 606 | ||
| 605 | #ifdef CONFIG_DEBUG_FS | 607 | #ifdef CONFIG_DEBUG_FS |
| 606 | struct dentry *debugfs_dapm; | 608 | struct dentry *debugfs_dapm; |
diff --git a/include/sound/soc.h b/include/sound/soc.h index ed9e2d7e5fdc..be6ecae247b0 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h | |||
| @@ -248,6 +248,8 @@ | |||
| 248 | .info = snd_soc_info_enum_double, \ | 248 | .info = snd_soc_info_enum_double, \ |
| 249 | .get = xhandler_get, .put = xhandler_put, \ | 249 | .get = xhandler_get, .put = xhandler_put, \ |
| 250 | .private_value = (unsigned long)&xenum } | 250 | .private_value = (unsigned long)&xenum } |
| 251 | #define SOC_VALUE_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) \ | ||
| 252 | SOC_ENUM_EXT(xname, xenum, xhandler_get, xhandler_put) | ||
| 251 | 253 | ||
| 252 | #define SND_SOC_BYTES(xname, xbase, xregs) \ | 254 | #define SND_SOC_BYTES(xname, xbase, xregs) \ |
| 253 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ | 255 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ |
| @@ -270,7 +272,14 @@ | |||
| 270 | .get = xhandler_get, .put = xhandler_put, \ | 272 | .get = xhandler_get, .put = xhandler_put, \ |
| 271 | .private_value = (unsigned long)&(struct soc_bytes_ext) \ | 273 | .private_value = (unsigned long)&(struct soc_bytes_ext) \ |
| 272 | {.max = xcount} } | 274 | {.max = xcount} } |
| 273 | 275 | #define SND_SOC_BYTES_TLV(xname, xcount, xhandler_get, xhandler_put) \ | |
| 276 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ | ||
| 277 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE | \ | ||
| 278 | SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK, \ | ||
| 279 | .tlv.c = (snd_soc_bytes_tlv_callback), \ | ||
| 280 | .info = snd_soc_info_bytes_ext, \ | ||
| 281 | .private_value = (unsigned long)&(struct soc_bytes_ext) \ | ||
| 282 | {.max = xcount, .get = xhandler_get, .put = xhandler_put, } } | ||
| 274 | #define SOC_SINGLE_XR_SX(xname, xregbase, xregcount, xnbits, \ | 283 | #define SOC_SINGLE_XR_SX(xname, xregbase, xregcount, xnbits, \ |
| 275 | xmin, xmax, xinvert) \ | 284 | xmin, xmax, xinvert) \ |
| 276 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ | 285 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = (xname), \ |
| @@ -436,6 +445,10 @@ int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream, | |||
| 436 | int snd_soc_platform_trigger(struct snd_pcm_substream *substream, | 445 | int snd_soc_platform_trigger(struct snd_pcm_substream *substream, |
| 437 | int cmd, struct snd_soc_platform *platform); | 446 | int cmd, struct snd_soc_platform *platform); |
| 438 | 447 | ||
| 448 | int soc_dai_hw_params(struct snd_pcm_substream *substream, | ||
| 449 | struct snd_pcm_hw_params *params, | ||
| 450 | struct snd_soc_dai *dai); | ||
| 451 | |||
| 439 | /* Jack reporting */ | 452 | /* Jack reporting */ |
| 440 | int snd_soc_jack_new(struct snd_soc_codec *codec, const char *id, int type, | 453 | int snd_soc_jack_new(struct snd_soc_codec *codec, const char *id, int type, |
| 441 | struct snd_soc_jack *jack); | 454 | struct snd_soc_jack *jack); |
| @@ -503,10 +516,12 @@ struct snd_kcontrol *snd_soc_cnew(const struct snd_kcontrol_new *_template, | |||
| 503 | const char *prefix); | 516 | const char *prefix); |
| 504 | struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card, | 517 | struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card, |
| 505 | const char *name); | 518 | const char *name); |
| 519 | int snd_soc_add_component_controls(struct snd_soc_component *component, | ||
| 520 | const struct snd_kcontrol_new *controls, unsigned int num_controls); | ||
| 506 | int snd_soc_add_codec_controls(struct snd_soc_codec *codec, | 521 | int snd_soc_add_codec_controls(struct snd_soc_codec *codec, |
| 507 | const struct snd_kcontrol_new *controls, int num_controls); | 522 | const struct snd_kcontrol_new *controls, unsigned int num_controls); |
| 508 | int snd_soc_add_platform_controls(struct snd_soc_platform *platform, | 523 | int snd_soc_add_platform_controls(struct snd_soc_platform *platform, |
| 509 | const struct snd_kcontrol_new *controls, int num_controls); | 524 | const struct snd_kcontrol_new *controls, unsigned int num_controls); |
| 510 | int snd_soc_add_card_controls(struct snd_soc_card *soc_card, | 525 | int snd_soc_add_card_controls(struct snd_soc_card *soc_card, |
| 511 | const struct snd_kcontrol_new *controls, int num_controls); | 526 | const struct snd_kcontrol_new *controls, int num_controls); |
| 512 | int snd_soc_add_dai_controls(struct snd_soc_dai *dai, | 527 | int snd_soc_add_dai_controls(struct snd_soc_dai *dai, |
| @@ -552,6 +567,8 @@ int snd_soc_bytes_put(struct snd_kcontrol *kcontrol, | |||
| 552 | struct snd_ctl_elem_value *ucontrol); | 567 | struct snd_ctl_elem_value *ucontrol); |
| 553 | int snd_soc_bytes_info_ext(struct snd_kcontrol *kcontrol, | 568 | int snd_soc_bytes_info_ext(struct snd_kcontrol *kcontrol, |
| 554 | struct snd_ctl_elem_info *ucontrol); | 569 | struct snd_ctl_elem_info *ucontrol); |
| 570 | int snd_soc_bytes_tlv_callback(struct snd_kcontrol *kcontrol, int op_flag, | ||
| 571 | unsigned int size, unsigned int __user *tlv); | ||
| 555 | int snd_soc_info_xr_sx(struct snd_kcontrol *kcontrol, | 572 | int snd_soc_info_xr_sx(struct snd_kcontrol *kcontrol, |
| 556 | struct snd_ctl_elem_info *uinfo); | 573 | struct snd_ctl_elem_info *uinfo); |
| 557 | int snd_soc_get_xr_sx(struct snd_kcontrol *kcontrol, | 574 | int snd_soc_get_xr_sx(struct snd_kcontrol *kcontrol, |
| @@ -677,12 +694,17 @@ struct snd_soc_component_driver { | |||
| 677 | int (*of_xlate_dai_name)(struct snd_soc_component *component, | 694 | int (*of_xlate_dai_name)(struct snd_soc_component *component, |
| 678 | struct of_phandle_args *args, | 695 | struct of_phandle_args *args, |
| 679 | const char **dai_name); | 696 | const char **dai_name); |
| 697 | void (*seq_notifier)(struct snd_soc_component *, enum snd_soc_dapm_type, | ||
| 698 | int subseq); | ||
| 699 | int (*stream_event)(struct snd_soc_component *, int event); | ||
| 680 | }; | 700 | }; |
| 681 | 701 | ||
| 682 | struct snd_soc_component { | 702 | struct snd_soc_component { |
| 683 | const char *name; | 703 | const char *name; |
| 684 | int id; | 704 | int id; |
| 705 | const char *name_prefix; | ||
| 685 | struct device *dev; | 706 | struct device *dev; |
| 707 | struct snd_soc_card *card; | ||
| 686 | 708 | ||
| 687 | unsigned int active; | 709 | unsigned int active; |
| 688 | 710 | ||
| @@ -705,18 +727,18 @@ struct snd_soc_component { | |||
| 705 | int val_bytes; | 727 | int val_bytes; |
| 706 | 728 | ||
| 707 | struct mutex io_mutex; | 729 | struct mutex io_mutex; |
| 730 | |||
| 731 | /* Don't use these, use snd_soc_component_get_dapm() */ | ||
| 732 | struct snd_soc_dapm_context dapm; | ||
| 733 | struct snd_soc_dapm_context *dapm_ptr; | ||
| 708 | }; | 734 | }; |
| 709 | 735 | ||
| 710 | /* SoC Audio Codec device */ | 736 | /* SoC Audio Codec device */ |
| 711 | struct snd_soc_codec { | 737 | struct snd_soc_codec { |
| 712 | const char *name; | ||
| 713 | const char *name_prefix; | ||
| 714 | int id; | ||
| 715 | struct device *dev; | 738 | struct device *dev; |
| 716 | const struct snd_soc_codec_driver *driver; | 739 | const struct snd_soc_codec_driver *driver; |
| 717 | 740 | ||
| 718 | struct mutex mutex; | 741 | struct mutex mutex; |
| 719 | struct snd_soc_card *card; | ||
| 720 | struct list_head list; | 742 | struct list_head list; |
| 721 | struct list_head card_list; | 743 | struct list_head card_list; |
| 722 | 744 | ||
| @@ -790,9 +812,6 @@ struct snd_soc_codec_driver { | |||
| 790 | void (*seq_notifier)(struct snd_soc_dapm_context *, | 812 | void (*seq_notifier)(struct snd_soc_dapm_context *, |
| 791 | enum snd_soc_dapm_type, int); | 813 | enum snd_soc_dapm_type, int); |
| 792 | 814 | ||
| 793 | /* codec stream completion event */ | ||
| 794 | int (*stream_event)(struct snd_soc_dapm_context *dapm, int event); | ||
| 795 | |||
| 796 | bool ignore_pmdown_time; /* Doesn't benefit from pmdown delay */ | 815 | bool ignore_pmdown_time; /* Doesn't benefit from pmdown delay */ |
| 797 | 816 | ||
| 798 | /* probe ordering - for components with runtime dependencies */ | 817 | /* probe ordering - for components with runtime dependencies */ |
| @@ -834,9 +853,6 @@ struct snd_soc_platform_driver { | |||
| 834 | /* platform stream compress ops */ | 853 | /* platform stream compress ops */ |
| 835 | const struct snd_compr_ops *compr_ops; | 854 | const struct snd_compr_ops *compr_ops; |
| 836 | 855 | ||
| 837 | /* platform stream completion event */ | ||
| 838 | int (*stream_event)(struct snd_soc_dapm_context *dapm, int event); | ||
| 839 | |||
| 840 | /* probe ordering - for components with runtime dependencies */ | 856 | /* probe ordering - for components with runtime dependencies */ |
| 841 | int probe_order; | 857 | int probe_order; |
| 842 | int remove_order; | 858 | int remove_order; |
| @@ -847,23 +863,23 @@ struct snd_soc_platform_driver { | |||
| 847 | int (*bespoke_trigger)(struct snd_pcm_substream *, int); | 863 | int (*bespoke_trigger)(struct snd_pcm_substream *, int); |
| 848 | }; | 864 | }; |
| 849 | 865 | ||
| 850 | struct snd_soc_platform { | 866 | struct snd_soc_dai_link_component { |
| 851 | const char *name; | 867 | const char *name; |
| 852 | int id; | 868 | const struct device_node *of_node; |
| 869 | const char *dai_name; | ||
| 870 | }; | ||
| 871 | |||
| 872 | struct snd_soc_platform { | ||
| 853 | struct device *dev; | 873 | struct device *dev; |
| 854 | const struct snd_soc_platform_driver *driver; | 874 | const struct snd_soc_platform_driver *driver; |
| 855 | 875 | ||
| 856 | unsigned int suspended:1; /* platform is suspended */ | 876 | unsigned int suspended:1; /* platform is suspended */ |
| 857 | unsigned int probed:1; | 877 | unsigned int probed:1; |
| 858 | 878 | ||
| 859 | struct snd_soc_card *card; | ||
| 860 | struct list_head list; | 879 | struct list_head list; |
| 861 | struct list_head card_list; | ||
| 862 | 880 | ||
| 863 | struct snd_soc_component component; | 881 | struct snd_soc_component component; |
| 864 | 882 | ||
| 865 | struct snd_soc_dapm_context dapm; | ||
| 866 | |||
| 867 | #ifdef CONFIG_DEBUG_FS | 883 | #ifdef CONFIG_DEBUG_FS |
| 868 | struct dentry *debugfs_platform_root; | 884 | struct dentry *debugfs_platform_root; |
| 869 | #endif | 885 | #endif |
| @@ -896,6 +912,10 @@ struct snd_soc_dai_link { | |||
| 896 | const struct device_node *codec_of_node; | 912 | const struct device_node *codec_of_node; |
| 897 | /* You MUST specify the DAI name within the codec */ | 913 | /* You MUST specify the DAI name within the codec */ |
| 898 | const char *codec_dai_name; | 914 | const char *codec_dai_name; |
| 915 | |||
| 916 | struct snd_soc_dai_link_component *codecs; | ||
| 917 | unsigned int num_codecs; | ||
| 918 | |||
| 899 | /* | 919 | /* |
| 900 | * You MAY specify the link's platform/PCM/DMA driver, either by | 920 | * You MAY specify the link's platform/PCM/DMA driver, either by |
| 901 | * device name, or by DT/OF node, but not both. Some forms of link | 921 | * device name, or by DT/OF node, but not both. Some forms of link |
| @@ -1047,7 +1067,6 @@ struct snd_soc_card { | |||
| 1047 | 1067 | ||
| 1048 | /* lists of probed devices belonging to this card */ | 1068 | /* lists of probed devices belonging to this card */ |
| 1049 | struct list_head codec_dev_list; | 1069 | struct list_head codec_dev_list; |
| 1050 | struct list_head platform_dev_list; | ||
| 1051 | 1070 | ||
| 1052 | struct list_head widgets; | 1071 | struct list_head widgets; |
| 1053 | struct list_head paths; | 1072 | struct list_head paths; |
| @@ -1094,6 +1113,9 @@ struct snd_soc_pcm_runtime { | |||
| 1094 | struct snd_soc_dai *codec_dai; | 1113 | struct snd_soc_dai *codec_dai; |
| 1095 | struct snd_soc_dai *cpu_dai; | 1114 | struct snd_soc_dai *cpu_dai; |
| 1096 | 1115 | ||
| 1116 | struct snd_soc_dai **codec_dais; | ||
| 1117 | unsigned int num_codecs; | ||
| 1118 | |||
| 1097 | struct delayed_work delayed_work; | 1119 | struct delayed_work delayed_work; |
| 1098 | #ifdef CONFIG_DEBUG_FS | 1120 | #ifdef CONFIG_DEBUG_FS |
| 1099 | struct dentry *debugfs_dpcm_root; | 1121 | struct dentry *debugfs_dpcm_root; |
| @@ -1119,6 +1141,9 @@ struct soc_bytes { | |||
| 1119 | 1141 | ||
| 1120 | struct soc_bytes_ext { | 1142 | struct soc_bytes_ext { |
| 1121 | int max; | 1143 | int max; |
| 1144 | /* used for TLV byte control */ | ||
| 1145 | int (*get)(unsigned int __user *bytes, unsigned int size); | ||
| 1146 | int (*put)(const unsigned int __user *bytes, unsigned int size); | ||
| 1122 | }; | 1147 | }; |
| 1123 | 1148 | ||
| 1124 | /* multi register control */ | 1149 | /* multi register control */ |
| @@ -1165,6 +1190,21 @@ static inline struct snd_soc_platform *snd_soc_component_to_platform( | |||
| 1165 | } | 1190 | } |
| 1166 | 1191 | ||
| 1167 | /** | 1192 | /** |
| 1193 | * snd_soc_dapm_to_component() - Casts a DAPM context to the component it is | ||
| 1194 | * embedded in | ||
| 1195 | * @dapm: The DAPM context to cast to the component | ||
| 1196 | * | ||
| 1197 | * This function must only be used on DAPM contexts that are known to be part of | ||
| 1198 | * a component (e.g. in a component driver). Otherwise the behavior is | ||
| 1199 | * undefined. | ||
| 1200 | */ | ||
| 1201 | static inline struct snd_soc_component *snd_soc_dapm_to_component( | ||
| 1202 | struct snd_soc_dapm_context *dapm) | ||
| 1203 | { | ||
| 1204 | return container_of(dapm, struct snd_soc_component, dapm); | ||
| 1205 | } | ||
| 1206 | |||
| 1207 | /** | ||
| 1168 | * snd_soc_dapm_to_codec() - Casts a DAPM context to the CODEC it is embedded in | 1208 | * snd_soc_dapm_to_codec() - Casts a DAPM context to the CODEC it is embedded in |
| 1169 | * @dapm: The DAPM context to cast to the CODEC | 1209 | * @dapm: The DAPM context to cast to the CODEC |
| 1170 | * | 1210 | * |
| @@ -1188,7 +1228,18 @@ static inline struct snd_soc_codec *snd_soc_dapm_to_codec( | |||
| 1188 | static inline struct snd_soc_platform *snd_soc_dapm_to_platform( | 1228 | static inline struct snd_soc_platform *snd_soc_dapm_to_platform( |
| 1189 | struct snd_soc_dapm_context *dapm) | 1229 | struct snd_soc_dapm_context *dapm) |
| 1190 | { | 1230 | { |
| 1191 | return container_of(dapm, struct snd_soc_platform, dapm); | 1231 | return snd_soc_component_to_platform(snd_soc_dapm_to_component(dapm)); |
| 1232 | } | ||
| 1233 | |||
| 1234 | /** | ||
| 1235 | * snd_soc_component_get_dapm() - Returns the DAPM context associated with a | ||
| 1236 | * component | ||
| 1237 | * @component: The component for which to get the DAPM context | ||
| 1238 | */ | ||
| 1239 | static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm( | ||
| 1240 | struct snd_soc_component *component) | ||
| 1241 | { | ||
| 1242 | return component->dapm_ptr; | ||
| 1192 | } | 1243 | } |
| 1193 | 1244 | ||
| 1194 | /* codec IO */ | 1245 | /* codec IO */ |
| @@ -1261,7 +1312,6 @@ static inline void *snd_soc_pcm_get_drvdata(struct snd_soc_pcm_runtime *rtd) | |||
| 1261 | static inline void snd_soc_initialize_card_lists(struct snd_soc_card *card) | 1312 | static inline void snd_soc_initialize_card_lists(struct snd_soc_card *card) |
| 1262 | { | 1313 | { |
| 1263 | INIT_LIST_HEAD(&card->codec_dev_list); | 1314 | INIT_LIST_HEAD(&card->codec_dev_list); |
| 1264 | INIT_LIST_HEAD(&card->platform_dev_list); | ||
| 1265 | INIT_LIST_HEAD(&card->widgets); | 1315 | INIT_LIST_HEAD(&card->widgets); |
| 1266 | INIT_LIST_HEAD(&card->paths); | 1316 | INIT_LIST_HEAD(&card->paths); |
| 1267 | INIT_LIST_HEAD(&card->dapm_list); | 1317 | INIT_LIST_HEAD(&card->dapm_list); |
diff --git a/include/sound/tas2552-plat.h b/include/sound/tas2552-plat.h new file mode 100644 index 000000000000..65e7627ba38e --- /dev/null +++ b/include/sound/tas2552-plat.h | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | /* | ||
| 2 | * TAS2552 driver platform header | ||
| 3 | * | ||
| 4 | * Copyright (C) 2014 Texas Instruments Inc. | ||
| 5 | * | ||
| 6 | * Author: Dan Murphy <dmurphy@ti.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or | ||
| 9 | * modify it under the terms of the GNU General Public License | ||
| 10 | * version 2 as published by the Free Software Foundation. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, but | ||
| 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 15 | * General Public License for more details. | ||
| 16 | */ | ||
| 17 | |||
| 18 | #ifndef TAS2552_PLAT_H | ||
| 19 | #define TAS2552_PLAT_H | ||
| 20 | |||
| 21 | struct tas2552_platform_data { | ||
| 22 | int enable_gpio; | ||
| 23 | }; | ||
| 24 | |||
| 25 | #endif | ||
diff --git a/include/sound/wm8962.h b/include/sound/wm8962.h index 79e6d427b858..0af7c1674cbf 100644 --- a/include/sound/wm8962.h +++ b/include/sound/wm8962.h | |||
| @@ -37,6 +37,7 @@ | |||
| 37 | #define WM8962_GPIO_FN_MICSCD 22 | 37 | #define WM8962_GPIO_FN_MICSCD 22 |
| 38 | 38 | ||
| 39 | struct wm8962_pdata { | 39 | struct wm8962_pdata { |
| 40 | struct clk *mclk; | ||
| 40 | int gpio_base; | 41 | int gpio_base; |
| 41 | u32 gpio_init[WM8962_MAX_GPIO]; | 42 | u32 gpio_init[WM8962_MAX_GPIO]; |
| 42 | 43 | ||
diff --git a/include/trace/events/asoc.h b/include/trace/events/asoc.h index c75c795a377b..0194a641e4e2 100644 --- a/include/trace/events/asoc.h +++ b/include/trace/events/asoc.h | |||
| @@ -296,17 +296,17 @@ TRACE_EVENT(snd_soc_cache_sync, | |||
| 296 | TP_ARGS(codec, type, status), | 296 | TP_ARGS(codec, type, status), |
| 297 | 297 | ||
| 298 | TP_STRUCT__entry( | 298 | TP_STRUCT__entry( |
| 299 | __string( name, codec->name ) | 299 | __string( name, codec->component.name) |
| 300 | __string( status, status ) | 300 | __string( status, status ) |
| 301 | __string( type, type ) | 301 | __string( type, type ) |
| 302 | __field( int, id ) | 302 | __field( int, id ) |
| 303 | ), | 303 | ), |
| 304 | 304 | ||
| 305 | TP_fast_assign( | 305 | TP_fast_assign( |
| 306 | __assign_str(name, codec->name); | 306 | __assign_str(name, codec->component.name); |
| 307 | __assign_str(status, status); | 307 | __assign_str(status, status); |
| 308 | __assign_str(type, type); | 308 | __assign_str(type, type); |
| 309 | __entry->id = codec->id; | 309 | __entry->id = codec->component.id; |
| 310 | ), | 310 | ), |
| 311 | 311 | ||
| 312 | TP_printk("codec=%s.%d type=%s status=%s", __get_str(name), | 312 | TP_printk("codec=%s.%d type=%s status=%s", __get_str(name), |
diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h index 40b5ca8a1b1f..25084a052a1e 100644 --- a/include/uapi/linux/fuse.h +++ b/include/uapi/linux/fuse.h | |||
| @@ -101,6 +101,7 @@ | |||
| 101 | * - add FATTR_CTIME | 101 | * - add FATTR_CTIME |
| 102 | * - add ctime and ctimensec to fuse_setattr_in | 102 | * - add ctime and ctimensec to fuse_setattr_in |
| 103 | * - add FUSE_RENAME2 request | 103 | * - add FUSE_RENAME2 request |
| 104 | * - add FUSE_NO_OPEN_SUPPORT flag | ||
| 104 | */ | 105 | */ |
| 105 | 106 | ||
| 106 | #ifndef _LINUX_FUSE_H | 107 | #ifndef _LINUX_FUSE_H |
| @@ -229,6 +230,7 @@ struct fuse_file_lock { | |||
| 229 | * FUSE_READDIRPLUS_AUTO: adaptive readdirplus | 230 | * FUSE_READDIRPLUS_AUTO: adaptive readdirplus |
| 230 | * FUSE_ASYNC_DIO: asynchronous direct I/O submission | 231 | * FUSE_ASYNC_DIO: asynchronous direct I/O submission |
| 231 | * FUSE_WRITEBACK_CACHE: use writeback cache for buffered writes | 232 | * FUSE_WRITEBACK_CACHE: use writeback cache for buffered writes |
| 233 | * FUSE_NO_OPEN_SUPPORT: kernel supports zero-message opens | ||
| 232 | */ | 234 | */ |
| 233 | #define FUSE_ASYNC_READ (1 << 0) | 235 | #define FUSE_ASYNC_READ (1 << 0) |
| 234 | #define FUSE_POSIX_LOCKS (1 << 1) | 236 | #define FUSE_POSIX_LOCKS (1 << 1) |
| @@ -247,6 +249,7 @@ struct fuse_file_lock { | |||
| 247 | #define FUSE_READDIRPLUS_AUTO (1 << 14) | 249 | #define FUSE_READDIRPLUS_AUTO (1 << 14) |
| 248 | #define FUSE_ASYNC_DIO (1 << 15) | 250 | #define FUSE_ASYNC_DIO (1 << 15) |
| 249 | #define FUSE_WRITEBACK_CACHE (1 << 16) | 251 | #define FUSE_WRITEBACK_CACHE (1 << 16) |
| 252 | #define FUSE_NO_OPEN_SUPPORT (1 << 17) | ||
| 250 | 253 | ||
| 251 | /** | 254 | /** |
| 252 | * CUSE INIT request/reply flags | 255 | * CUSE INIT request/reply flags |
diff --git a/include/xen/grant_table.h b/include/xen/grant_table.h index a5af2a26d94f..5c1aba154b64 100644 --- a/include/xen/grant_table.h +++ b/include/xen/grant_table.h | |||
| @@ -170,6 +170,7 @@ gnttab_set_unmap_op(struct gnttab_unmap_grant_ref *unmap, phys_addr_t addr, | |||
| 170 | unmap->dev_bus_addr = 0; | 170 | unmap->dev_bus_addr = 0; |
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | int arch_gnttab_init(unsigned long nr_shared, unsigned long nr_status); | ||
| 173 | int arch_gnttab_map_shared(xen_pfn_t *frames, unsigned long nr_gframes, | 174 | int arch_gnttab_map_shared(xen_pfn_t *frames, unsigned long nr_gframes, |
| 174 | unsigned long max_nr_gframes, | 175 | unsigned long max_nr_gframes, |
| 175 | void **__shared); | 176 | void **__shared); |
