aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2015-08-31 10:25:22 -0400
committerTakashi Iwai <tiwai@suse.de>2015-08-31 10:25:22 -0400
commit08ceab9d875824f8b389530e830349d5d6c4e582 (patch)
tree4ced69544742b87cb369de553df505870be593e1 /include
parent22c103cd3dfadff340b3b639e477a3c161cb2104 (diff)
parent91931320cfbbcc1dd874c2d0aef62e7d90f07f70 (diff)
Merge tag 'asoc-v4.2-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Updates for v4.3 Not many updates to the core here, but an awful lot of driver updates this time round: - Factoring out of AC'97 reset code into the core - New drivers for Cirrus CS4349, GTM601, InvenSense ICS43432, Realtek RT298 and ST STI controllers. - Machine drivers for Rockchip systems with MAX98090 and RT5645 and RT5650. - Initial driver support for Intel Skylake devices. - A large number of cleanups for Lars-Peter Clausen and Axel Lin.
Diffstat (limited to 'include')
-rw-r--r--include/drm/drmP.h2
-rw-r--r--include/drm/drm_crtc.h2
-rw-r--r--include/drm/drm_crtc_helper.h3
-rw-r--r--include/drm/drm_edid.h19
-rw-r--r--include/drm/drm_pciids.h1
-rw-r--r--include/linux/ata.h18
-rw-r--r--include/linux/fs.h5
-rw-r--r--include/linux/irq.h1
-rw-r--r--include/linux/mfd/arizona/registers.h37
-rw-r--r--include/linux/mm.h28
-rw-r--r--include/linux/mm_types.h9
-rw-r--r--include/linux/page-flags.h10
-rw-r--r--include/linux/regmap.h28
-rw-r--r--include/linux/skbuff.h20
-rw-r--r--include/media/rc-core.h7
-rw-r--r--include/media/videobuf2-core.h2
-rw-r--r--include/scsi/scsi_eh.h1
-rw-r--r--include/sound/ac97_codec.h2
-rw-r--r--include/sound/rcar_snd.h14
-rw-r--r--include/sound/rt298.h20
-rw-r--r--include/sound/soc-dapm.h84
-rw-r--r--include/sound/soc-topology.h13
-rw-r--r--include/sound/soc.h29
-rw-r--r--include/trace/events/asoc.h53
-rw-r--r--include/uapi/linux/pci_regs.h1
25 files changed, 287 insertions, 122 deletions
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index 48db6a56975f..5aa519711e0b 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -691,7 +691,7 @@ struct drm_vblank_crtc {
691 struct timer_list disable_timer; /* delayed disable timer */ 691 struct timer_list disable_timer; /* delayed disable timer */
692 692
693 /* vblank counter, protected by dev->vblank_time_lock for writes */ 693 /* vblank counter, protected by dev->vblank_time_lock for writes */
694 unsigned long count; 694 u32 count;
695 /* vblank timestamps, protected by dev->vblank_time_lock for writes */ 695 /* vblank timestamps, protected by dev->vblank_time_lock for writes */
696 struct timeval time[DRM_VBLANKTIME_RBSIZE]; 696 struct timeval time[DRM_VBLANKTIME_RBSIZE];
697 697
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 57ca8cc383a6..3b4d8a4a23fb 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -743,8 +743,6 @@ struct drm_connector {
743 uint8_t num_h_tile, num_v_tile; 743 uint8_t num_h_tile, num_v_tile;
744 uint8_t tile_h_loc, tile_v_loc; 744 uint8_t tile_h_loc, tile_v_loc;
745 uint16_t tile_h_size, tile_v_size; 745 uint16_t tile_h_size, tile_v_size;
746
747 struct list_head destroy_list;
748}; 746};
749 747
750/** 748/**
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
index c8fc187061de..918aa68b5199 100644
--- a/include/drm/drm_crtc_helper.h
+++ b/include/drm/drm_crtc_helper.h
@@ -168,6 +168,7 @@ struct drm_encoder_helper_funcs {
168 * @get_modes: get mode list for this connector 168 * @get_modes: get mode list for this connector
169 * @mode_valid: is this mode valid on the given connector? (optional) 169 * @mode_valid: is this mode valid on the given connector? (optional)
170 * @best_encoder: return the preferred encoder for this connector 170 * @best_encoder: return the preferred encoder for this connector
171 * @atomic_best_encoder: atomic version of @best_encoder
171 * 172 *
172 * The helper operations are called by the mid-layer CRTC helper. 173 * The helper operations are called by the mid-layer CRTC helper.
173 */ 174 */
@@ -176,6 +177,8 @@ struct drm_connector_helper_funcs {
176 enum drm_mode_status (*mode_valid)(struct drm_connector *connector, 177 enum drm_mode_status (*mode_valid)(struct drm_connector *connector,
177 struct drm_display_mode *mode); 178 struct drm_display_mode *mode);
178 struct drm_encoder *(*best_encoder)(struct drm_connector *connector); 179 struct drm_encoder *(*best_encoder)(struct drm_connector *connector);
180 struct drm_encoder *(*atomic_best_encoder)(struct drm_connector *connector,
181 struct drm_connector_state *connector_state);
179}; 182};
180 183
181extern void drm_helper_disable_unused_functions(struct drm_device *dev); 184extern void drm_helper_disable_unused_functions(struct drm_device *dev);
diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
index 799050198323..53c53c459b15 100644
--- a/include/drm/drm_edid.h
+++ b/include/drm/drm_edid.h
@@ -348,6 +348,25 @@ static inline int drm_eld_mnl(const uint8_t *eld)
348} 348}
349 349
350/** 350/**
351 * drm_eld_sad - Get ELD SAD structures.
352 * @eld: pointer to an eld memory structure with sad_count set
353 */
354static inline const uint8_t *drm_eld_sad(const uint8_t *eld)
355{
356 unsigned int ver, mnl;
357
358 ver = (eld[DRM_ELD_VER] & DRM_ELD_VER_MASK) >> DRM_ELD_VER_SHIFT;
359 if (ver != 2 && ver != 31)
360 return NULL;
361
362 mnl = drm_eld_mnl(eld);
363 if (mnl > 16)
364 return NULL;
365
366 return eld + DRM_ELD_CEA_SAD(mnl, 0);
367}
368
369/**
351 * drm_eld_sad_count - Get ELD SAD count. 370 * drm_eld_sad_count - Get ELD SAD count.
352 * @eld: pointer to an eld memory structure with sad_count set 371 * @eld: pointer to an eld memory structure with sad_count set
353 */ 372 */
diff --git a/include/drm/drm_pciids.h b/include/drm/drm_pciids.h
index 45c39a37f924..8bc073d297db 100644
--- a/include/drm/drm_pciids.h
+++ b/include/drm/drm_pciids.h
@@ -172,6 +172,7 @@
172 {0x1002, 0x6610, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \ 172 {0x1002, 0x6610, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \
173 {0x1002, 0x6611, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \ 173 {0x1002, 0x6611, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \
174 {0x1002, 0x6613, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \ 174 {0x1002, 0x6613, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_NEW_MEMMAP}, \
175 {0x1002, 0x6617, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
175 {0x1002, 0x6620, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 176 {0x1002, 0x6620, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
176 {0x1002, 0x6621, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 177 {0x1002, 0x6621, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
177 {0x1002, 0x6623, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ 178 {0x1002, 0x6623, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_OLAND|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \
diff --git a/include/linux/ata.h b/include/linux/ata.h
index 6c78956aa470..d2992bfa1706 100644
--- a/include/linux/ata.h
+++ b/include/linux/ata.h
@@ -385,8 +385,6 @@ enum {
385 SATA_SSP = 0x06, /* Software Settings Preservation */ 385 SATA_SSP = 0x06, /* Software Settings Preservation */
386 SATA_DEVSLP = 0x09, /* Device Sleep */ 386 SATA_DEVSLP = 0x09, /* Device Sleep */
387 387
388 SETFEATURE_SENSE_DATA = 0xC3, /* Sense Data Reporting feature */
389
390 /* feature values for SET_MAX */ 388 /* feature values for SET_MAX */
391 ATA_SET_MAX_ADDR = 0x00, 389 ATA_SET_MAX_ADDR = 0x00,
392 ATA_SET_MAX_PASSWD = 0x01, 390 ATA_SET_MAX_PASSWD = 0x01,
@@ -530,8 +528,6 @@ struct ata_bmdma_prd {
530#define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20) 528#define ata_id_cdb_intr(id) (((id)[ATA_ID_CONFIG] & 0x60) == 0x20)
531#define ata_id_has_da(id) ((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4)) 529#define ata_id_has_da(id) ((id)[ATA_ID_SATA_CAPABILITY_2] & (1 << 4))
532#define ata_id_has_devslp(id) ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8)) 530#define ata_id_has_devslp(id) ((id)[ATA_ID_FEATURE_SUPP] & (1 << 8))
533#define ata_id_has_ncq_autosense(id) \
534 ((id)[ATA_ID_FEATURE_SUPP] & (1 << 7))
535 531
536static inline bool ata_id_has_hipm(const u16 *id) 532static inline bool ata_id_has_hipm(const u16 *id)
537{ 533{
@@ -720,20 +716,6 @@ static inline bool ata_id_has_read_log_dma_ext(const u16 *id)
720 return false; 716 return false;
721} 717}
722 718
723static inline bool ata_id_has_sense_reporting(const u16 *id)
724{
725 if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15)))
726 return false;
727 return id[ATA_ID_COMMAND_SET_3] & (1 << 6);
728}
729
730static inline bool ata_id_sense_reporting_enabled(const u16 *id)
731{
732 if (!(id[ATA_ID_CFS_ENABLE_2] & (1 << 15)))
733 return false;
734 return id[ATA_ID_COMMAND_SET_4] & (1 << 6);
735}
736
737/** 719/**
738 * ata_id_major_version - get ATA level of drive 720 * ata_id_major_version - get ATA level of drive
739 * @id: Identify data 721 * @id: Identify data
diff --git a/include/linux/fs.h b/include/linux/fs.h
index cc008c338f5a..84b783f277f7 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -55,7 +55,8 @@ struct vm_fault;
55 55
56extern void __init inode_init(void); 56extern void __init inode_init(void);
57extern void __init inode_init_early(void); 57extern void __init inode_init_early(void);
58extern void __init files_init(unsigned long); 58extern void __init files_init(void);
59extern void __init files_maxfiles_init(void);
59 60
60extern struct files_stat_struct files_stat; 61extern struct files_stat_struct files_stat;
61extern unsigned long get_max_files(void); 62extern unsigned long get_max_files(void);
@@ -2245,7 +2246,7 @@ extern int ioctl_preallocate(struct file *filp, void __user *argp);
2245 2246
2246/* fs/dcache.c */ 2247/* fs/dcache.c */
2247extern void __init vfs_caches_init_early(void); 2248extern void __init vfs_caches_init_early(void);
2248extern void __init vfs_caches_init(unsigned long); 2249extern void __init vfs_caches_init(void);
2249 2250
2250extern struct kmem_cache *names_cachep; 2251extern struct kmem_cache *names_cachep;
2251 2252
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 92188b0225bb..51744bcf74ee 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -484,6 +484,7 @@ extern int irq_chip_set_affinity_parent(struct irq_data *data,
484extern int irq_chip_set_wake_parent(struct irq_data *data, unsigned int on); 484extern int irq_chip_set_wake_parent(struct irq_data *data, unsigned int on);
485extern int irq_chip_set_vcpu_affinity_parent(struct irq_data *data, 485extern int irq_chip_set_vcpu_affinity_parent(struct irq_data *data,
486 void *vcpu_info); 486 void *vcpu_info);
487extern int irq_chip_set_type_parent(struct irq_data *data, unsigned int type);
487#endif 488#endif
488 489
489/* Handling of unhandled and spurious interrupts: */ 490/* Handling of unhandled and spurious interrupts: */
diff --git a/include/linux/mfd/arizona/registers.h b/include/linux/mfd/arizona/registers.h
index 3499d36e6067..11affb3c2768 100644
--- a/include/linux/mfd/arizona/registers.h
+++ b/include/linux/mfd/arizona/registers.h
@@ -39,6 +39,7 @@
39#define ARIZONA_PWM_DRIVE_3 0x32 39#define ARIZONA_PWM_DRIVE_3 0x32
40#define ARIZONA_WAKE_CONTROL 0x40 40#define ARIZONA_WAKE_CONTROL 0x40
41#define ARIZONA_SEQUENCE_CONTROL 0x41 41#define ARIZONA_SEQUENCE_CONTROL 0x41
42#define ARIZONA_SPARE_TRIGGERS 0x42
42#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1 0x61 43#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_1 0x61
43#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2 0x62 44#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_2 0x62
44#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3 0x63 45#define ARIZONA_SAMPLE_RATE_SEQUENCE_SELECT_3 0x63
@@ -1431,6 +1432,42 @@
1431#define ARIZONA_WSEQ_ENA_JD2_RISE_WIDTH 1 /* WSEQ_ENA_JD2_RISE */ 1432#define ARIZONA_WSEQ_ENA_JD2_RISE_WIDTH 1 /* WSEQ_ENA_JD2_RISE */
1432 1433
1433/* 1434/*
1435 * R66 (0x42) - Spare Triggers
1436 */
1437#define ARIZONA_WS_TRG8 0x0080 /* WS_TRG8 */
1438#define ARIZONA_WS_TRG8_MASK 0x0080 /* WS_TRG8 */
1439#define ARIZONA_WS_TRG8_SHIFT 7 /* WS_TRG8 */
1440#define ARIZONA_WS_TRG8_WIDTH 1 /* WS_TRG8 */
1441#define ARIZONA_WS_TRG7 0x0040 /* WS_TRG7 */
1442#define ARIZONA_WS_TRG7_MASK 0x0040 /* WS_TRG7 */
1443#define ARIZONA_WS_TRG7_SHIFT 6 /* WS_TRG7 */
1444#define ARIZONA_WS_TRG7_WIDTH 1 /* WS_TRG7 */
1445#define ARIZONA_WS_TRG6 0x0020 /* WS_TRG6 */
1446#define ARIZONA_WS_TRG6_MASK 0x0020 /* WS_TRG6 */
1447#define ARIZONA_WS_TRG6_SHIFT 5 /* WS_TRG6 */
1448#define ARIZONA_WS_TRG6_WIDTH 1 /* WS_TRG6 */
1449#define ARIZONA_WS_TRG5 0x0010 /* WS_TRG5 */
1450#define ARIZONA_WS_TRG5_MASK 0x0010 /* WS_TRG5 */
1451#define ARIZONA_WS_TRG5_SHIFT 4 /* WS_TRG5 */
1452#define ARIZONA_WS_TRG5_WIDTH 1 /* WS_TRG5 */
1453#define ARIZONA_WS_TRG4 0x0008 /* WS_TRG4 */
1454#define ARIZONA_WS_TRG4_MASK 0x0008 /* WS_TRG4 */
1455#define ARIZONA_WS_TRG4_SHIFT 3 /* WS_TRG4 */
1456#define ARIZONA_WS_TRG4_WIDTH 1 /* WS_TRG4 */
1457#define ARIZONA_WS_TRG3 0x0004 /* WS_TRG3 */
1458#define ARIZONA_WS_TRG3_MASK 0x0004 /* WS_TRG3 */
1459#define ARIZONA_WS_TRG3_SHIFT 2 /* WS_TRG3 */
1460#define ARIZONA_WS_TRG3_WIDTH 1 /* WS_TRG3 */
1461#define ARIZONA_WS_TRG2 0x0002 /* WS_TRG2 */
1462#define ARIZONA_WS_TRG2_MASK 0x0002 /* WS_TRG2 */
1463#define ARIZONA_WS_TRG2_SHIFT 1 /* WS_TRG2 */
1464#define ARIZONA_WS_TRG2_WIDTH 1 /* WS_TRG2 */
1465#define ARIZONA_WS_TRG1 0x0001 /* WS_TRG1 */
1466#define ARIZONA_WS_TRG1_MASK 0x0001 /* WS_TRG1 */
1467#define ARIZONA_WS_TRG1_SHIFT 0 /* WS_TRG1 */
1468#define ARIZONA_WS_TRG1_WIDTH 1 /* WS_TRG1 */
1469
1470/*
1434 * R97 (0x61) - Sample Rate Sequence Select 1 1471 * R97 (0x61) - Sample Rate Sequence Select 1
1435 */ 1472 */
1436#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */ 1473#define ARIZONA_WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR_MASK 0x01FF /* WSEQ_SAMPLE_RATE_DETECT_A_SEQ_ADDR - [8:0] */
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 2e872f92dbac..bf6f117fcf4d 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1003,6 +1003,34 @@ static inline int page_mapped(struct page *page)
1003} 1003}
1004 1004
1005/* 1005/*
1006 * Return true only if the page has been allocated with
1007 * ALLOC_NO_WATERMARKS and the low watermark was not
1008 * met implying that the system is under some pressure.
1009 */
1010static inline bool page_is_pfmemalloc(struct page *page)
1011{
1012 /*
1013 * Page index cannot be this large so this must be
1014 * a pfmemalloc page.
1015 */
1016 return page->index == -1UL;
1017}
1018
1019/*
1020 * Only to be called by the page allocator on a freshly allocated
1021 * page.
1022 */
1023static inline void set_page_pfmemalloc(struct page *page)
1024{
1025 page->index = -1UL;
1026}
1027
1028static inline void clear_page_pfmemalloc(struct page *page)
1029{
1030 page->index = 0;
1031}
1032
1033/*
1006 * Different kinds of faults, as returned by handle_mm_fault(). 1034 * Different kinds of faults, as returned by handle_mm_fault().
1007 * Used to decide whether a process gets delivered SIGBUS or 1035 * Used to decide whether a process gets delivered SIGBUS or
1008 * just gets major/minor fault counters bumped up. 1036 * just gets major/minor fault counters bumped up.
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 0038ac7466fd..15549578d559 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -63,15 +63,6 @@ struct page {
63 union { 63 union {
64 pgoff_t index; /* Our offset within mapping. */ 64 pgoff_t index; /* Our offset within mapping. */
65 void *freelist; /* sl[aou]b first free object */ 65 void *freelist; /* sl[aou]b first free object */
66 bool pfmemalloc; /* If set by the page allocator,
67 * ALLOC_NO_WATERMARKS was set
68 * and the low watermark was not
69 * met implying that the system
70 * is under some pressure. The
71 * caller should try ensure
72 * this page is only used to
73 * free other pages.
74 */
75 }; 66 };
76 67
77 union { 68 union {
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index f34e040b34e9..41c93844fb1d 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -631,15 +631,19 @@ static inline void ClearPageSlabPfmemalloc(struct page *page)
631 1 << PG_private | 1 << PG_private_2 | \ 631 1 << PG_private | 1 << PG_private_2 | \
632 1 << PG_writeback | 1 << PG_reserved | \ 632 1 << PG_writeback | 1 << PG_reserved | \
633 1 << PG_slab | 1 << PG_swapcache | 1 << PG_active | \ 633 1 << PG_slab | 1 << PG_swapcache | 1 << PG_active | \
634 1 << PG_unevictable | __PG_MLOCKED | __PG_HWPOISON | \ 634 1 << PG_unevictable | __PG_MLOCKED | \
635 __PG_COMPOUND_LOCK) 635 __PG_COMPOUND_LOCK)
636 636
637/* 637/*
638 * Flags checked when a page is prepped for return by the page allocator. 638 * Flags checked when a page is prepped for return by the page allocator.
639 * Pages being prepped should not have any flags set. It they are set, 639 * Pages being prepped should not have these flags set. It they are set,
640 * there has been a kernel bug or struct page corruption. 640 * there has been a kernel bug or struct page corruption.
641 *
642 * __PG_HWPOISON is exceptional because it needs to be kept beyond page's
643 * alloc-free cycle to prevent from reusing the page.
641 */ 644 */
642#define PAGE_FLAGS_CHECK_AT_PREP ((1 << NR_PAGEFLAGS) - 1) 645#define PAGE_FLAGS_CHECK_AT_PREP \
646 (((1 << NR_PAGEFLAGS) - 1) & ~__PG_HWPOISON)
643 647
644#define PAGE_FLAGS_PRIVATE \ 648#define PAGE_FLAGS_PRIVATE \
645 (1 << PG_private | 1 << PG_private_2) 649 (1 << PG_private | 1 << PG_private_2)
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 59c55ea0f0b5..4a6759098769 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -50,6 +50,17 @@ struct reg_default {
50 unsigned int def; 50 unsigned int def;
51}; 51};
52 52
53/**
54 * Register/value pairs for sequences of writes
55 *
56 * @reg: Register address.
57 * @def: Register value.
58 */
59struct reg_sequence {
60 unsigned int reg;
61 unsigned int def;
62};
63
53#ifdef CONFIG_REGMAP 64#ifdef CONFIG_REGMAP
54 65
55enum regmap_endian { 66enum regmap_endian {
@@ -410,10 +421,10 @@ int regmap_raw_write(struct regmap *map, unsigned int reg,
410 const void *val, size_t val_len); 421 const void *val, size_t val_len);
411int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val, 422int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val,
412 size_t val_count); 423 size_t val_count);
413int regmap_multi_reg_write(struct regmap *map, const struct reg_default *regs, 424int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *regs,
414 int num_regs); 425 int num_regs);
415int regmap_multi_reg_write_bypassed(struct regmap *map, 426int regmap_multi_reg_write_bypassed(struct regmap *map,
416 const struct reg_default *regs, 427 const struct reg_sequence *regs,
417 int num_regs); 428 int num_regs);
418int regmap_raw_write_async(struct regmap *map, unsigned int reg, 429int regmap_raw_write_async(struct regmap *map, unsigned int reg,
419 const void *val, size_t val_len); 430 const void *val, size_t val_len);
@@ -424,6 +435,8 @@ int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val,
424 size_t val_count); 435 size_t val_count);
425int regmap_update_bits(struct regmap *map, unsigned int reg, 436int regmap_update_bits(struct regmap *map, unsigned int reg,
426 unsigned int mask, unsigned int val); 437 unsigned int mask, unsigned int val);
438int regmap_write_bits(struct regmap *map, unsigned int reg,
439 unsigned int mask, unsigned int val);
427int regmap_update_bits_async(struct regmap *map, unsigned int reg, 440int regmap_update_bits_async(struct regmap *map, unsigned int reg,
428 unsigned int mask, unsigned int val); 441 unsigned int mask, unsigned int val);
429int regmap_update_bits_check(struct regmap *map, unsigned int reg, 442int regmap_update_bits_check(struct regmap *map, unsigned int reg,
@@ -450,7 +463,7 @@ void regcache_mark_dirty(struct regmap *map);
450bool regmap_check_range_table(struct regmap *map, unsigned int reg, 463bool regmap_check_range_table(struct regmap *map, unsigned int reg,
451 const struct regmap_access_table *table); 464 const struct regmap_access_table *table);
452 465
453int regmap_register_patch(struct regmap *map, const struct reg_default *regs, 466int regmap_register_patch(struct regmap *map, const struct reg_sequence *regs,
454 int num_regs); 467 int num_regs);
455int regmap_parse_val(struct regmap *map, const void *buf, 468int regmap_parse_val(struct regmap *map, const void *buf,
456 unsigned int *val); 469 unsigned int *val);
@@ -503,6 +516,8 @@ int regmap_field_update_bits(struct regmap_field *field,
503 516
504int regmap_fields_write(struct regmap_field *field, unsigned int id, 517int regmap_fields_write(struct regmap_field *field, unsigned int id,
505 unsigned int val); 518 unsigned int val);
519int regmap_fields_force_write(struct regmap_field *field, unsigned int id,
520 unsigned int val);
506int regmap_fields_read(struct regmap_field *field, unsigned int id, 521int regmap_fields_read(struct regmap_field *field, unsigned int id,
507 unsigned int *val); 522 unsigned int *val);
508int regmap_fields_update_bits(struct regmap_field *field, unsigned int id, 523int regmap_fields_update_bits(struct regmap_field *field, unsigned int id,
@@ -645,6 +660,13 @@ static inline int regmap_update_bits(struct regmap *map, unsigned int reg,
645 return -EINVAL; 660 return -EINVAL;
646} 661}
647 662
663static inline int regmap_write_bits(struct regmap *map, unsigned int reg,
664 unsigned int mask, unsigned int val)
665{
666 WARN_ONCE(1, "regmap API is disabled");
667 return -EINVAL;
668}
669
648static inline int regmap_update_bits_async(struct regmap *map, 670static inline int regmap_update_bits_async(struct regmap *map,
649 unsigned int reg, 671 unsigned int reg,
650 unsigned int mask, unsigned int val) 672 unsigned int mask, unsigned int val)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index d6cdd6e87d53..9b88536487e6 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1602,20 +1602,16 @@ static inline void __skb_fill_page_desc(struct sk_buff *skb, int i,
1602 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 1602 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
1603 1603
1604 /* 1604 /*
1605 * Propagate page->pfmemalloc to the skb if we can. The problem is 1605 * Propagate page pfmemalloc to the skb if we can. The problem is
1606 * that not all callers have unique ownership of the page. If 1606 * that not all callers have unique ownership of the page but rely
1607 * pfmemalloc is set, we check the mapping as a mapping implies 1607 * on page_is_pfmemalloc doing the right thing(tm).
1608 * page->index is set (index and pfmemalloc share space).
1609 * If it's a valid mapping, we cannot use page->pfmemalloc but we
1610 * do not lose pfmemalloc information as the pages would not be
1611 * allocated using __GFP_MEMALLOC.
1612 */ 1608 */
1613 frag->page.p = page; 1609 frag->page.p = page;
1614 frag->page_offset = off; 1610 frag->page_offset = off;
1615 skb_frag_size_set(frag, size); 1611 skb_frag_size_set(frag, size);
1616 1612
1617 page = compound_head(page); 1613 page = compound_head(page);
1618 if (page->pfmemalloc && !page->mapping) 1614 if (page_is_pfmemalloc(page))
1619 skb->pfmemalloc = true; 1615 skb->pfmemalloc = true;
1620} 1616}
1621 1617
@@ -2263,7 +2259,7 @@ static inline struct page *dev_alloc_page(void)
2263static inline void skb_propagate_pfmemalloc(struct page *page, 2259static inline void skb_propagate_pfmemalloc(struct page *page,
2264 struct sk_buff *skb) 2260 struct sk_buff *skb)
2265{ 2261{
2266 if (page && page->pfmemalloc) 2262 if (page_is_pfmemalloc(page))
2267 skb->pfmemalloc = true; 2263 skb->pfmemalloc = true;
2268} 2264}
2269 2265
@@ -2884,11 +2880,11 @@ static inline bool skb_defer_rx_timestamp(struct sk_buff *skb)
2884 * 2880 *
2885 * PHY drivers may accept clones of transmitted packets for 2881 * PHY drivers may accept clones of transmitted packets for
2886 * timestamping via their phy_driver.txtstamp method. These drivers 2882 * timestamping via their phy_driver.txtstamp method. These drivers
2887 * must call this function to return the skb back to the stack, with 2883 * must call this function to return the skb back to the stack with a
2888 * or without a timestamp. 2884 * timestamp.
2889 * 2885 *
2890 * @skb: clone of the the original outgoing packet 2886 * @skb: clone of the the original outgoing packet
2891 * @hwtstamps: hardware time stamps, may be NULL if not available 2887 * @hwtstamps: hardware time stamps
2892 * 2888 *
2893 */ 2889 */
2894void skb_complete_tx_timestamp(struct sk_buff *skb, 2890void skb_complete_tx_timestamp(struct sk_buff *skb,
diff --git a/include/media/rc-core.h b/include/media/rc-core.h
index 45534da57759..644bdc61c387 100644
--- a/include/media/rc-core.h
+++ b/include/media/rc-core.h
@@ -74,8 +74,6 @@ enum rc_filter_type {
74 * @input_dev: the input child device used to communicate events to userspace 74 * @input_dev: the input child device used to communicate events to userspace
75 * @driver_type: specifies if protocol decoding is done in hardware or software 75 * @driver_type: specifies if protocol decoding is done in hardware or software
76 * @idle: used to keep track of RX state 76 * @idle: used to keep track of RX state
77 * @encode_wakeup: wakeup filtering uses IR encode API, therefore the allowed
78 * wakeup protocols is the set of all raw encoders
79 * @allowed_protocols: bitmask with the supported RC_BIT_* protocols 77 * @allowed_protocols: bitmask with the supported RC_BIT_* protocols
80 * @enabled_protocols: bitmask with the enabled RC_BIT_* protocols 78 * @enabled_protocols: bitmask with the enabled RC_BIT_* protocols
81 * @allowed_wakeup_protocols: bitmask with the supported RC_BIT_* wakeup protocols 79 * @allowed_wakeup_protocols: bitmask with the supported RC_BIT_* wakeup protocols
@@ -136,7 +134,6 @@ struct rc_dev {
136 struct input_dev *input_dev; 134 struct input_dev *input_dev;
137 enum rc_driver_type driver_type; 135 enum rc_driver_type driver_type;
138 bool idle; 136 bool idle;
139 bool encode_wakeup;
140 u64 allowed_protocols; 137 u64 allowed_protocols;
141 u64 enabled_protocols; 138 u64 enabled_protocols;
142 u64 allowed_wakeup_protocols; 139 u64 allowed_wakeup_protocols;
@@ -246,7 +243,6 @@ static inline void init_ir_raw_event(struct ir_raw_event *ev)
246#define US_TO_NS(usec) ((usec) * 1000) 243#define US_TO_NS(usec) ((usec) * 1000)
247#define MS_TO_US(msec) ((msec) * 1000) 244#define MS_TO_US(msec) ((msec) * 1000)
248#define MS_TO_NS(msec) ((msec) * 1000 * 1000) 245#define MS_TO_NS(msec) ((msec) * 1000 * 1000)
249#define NS_TO_US(nsec) DIV_ROUND_UP(nsec, 1000L)
250 246
251void ir_raw_event_handle(struct rc_dev *dev); 247void ir_raw_event_handle(struct rc_dev *dev);
252int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev); 248int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev);
@@ -254,9 +250,6 @@ int ir_raw_event_store_edge(struct rc_dev *dev, enum raw_event_type type);
254int ir_raw_event_store_with_filter(struct rc_dev *dev, 250int ir_raw_event_store_with_filter(struct rc_dev *dev,
255 struct ir_raw_event *ev); 251 struct ir_raw_event *ev);
256void ir_raw_event_set_idle(struct rc_dev *dev, bool idle); 252void ir_raw_event_set_idle(struct rc_dev *dev, bool idle);
257int ir_raw_encode_scancode(u64 protocols,
258 const struct rc_scancode_filter *scancode,
259 struct ir_raw_event *events, unsigned int max);
260 253
261static inline void ir_raw_event_reset(struct rc_dev *dev) 254static inline void ir_raw_event_reset(struct rc_dev *dev)
262{ 255{
diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
index 22a44c2f5963..c192e1b46cdc 100644
--- a/include/media/videobuf2-core.h
+++ b/include/media/videobuf2-core.h
@@ -139,6 +139,7 @@ enum vb2_io_modes {
139 * @VB2_BUF_STATE_PREPARING: buffer is being prepared in videobuf 139 * @VB2_BUF_STATE_PREPARING: buffer is being prepared in videobuf
140 * @VB2_BUF_STATE_PREPARED: buffer prepared in videobuf and by the driver 140 * @VB2_BUF_STATE_PREPARED: buffer prepared in videobuf and by the driver
141 * @VB2_BUF_STATE_QUEUED: buffer queued in videobuf, but not in driver 141 * @VB2_BUF_STATE_QUEUED: buffer queued in videobuf, but not in driver
142 * @VB2_BUF_STATE_REQUEUEING: re-queue a buffer to the driver
142 * @VB2_BUF_STATE_ACTIVE: buffer queued in driver and possibly used 143 * @VB2_BUF_STATE_ACTIVE: buffer queued in driver and possibly used
143 * in a hardware operation 144 * in a hardware operation
144 * @VB2_BUF_STATE_DONE: buffer returned from driver to videobuf, but 145 * @VB2_BUF_STATE_DONE: buffer returned from driver to videobuf, but
@@ -152,6 +153,7 @@ enum vb2_buffer_state {
152 VB2_BUF_STATE_PREPARING, 153 VB2_BUF_STATE_PREPARING,
153 VB2_BUF_STATE_PREPARED, 154 VB2_BUF_STATE_PREPARED,
154 VB2_BUF_STATE_QUEUED, 155 VB2_BUF_STATE_QUEUED,
156 VB2_BUF_STATE_REQUEUEING,
155 VB2_BUF_STATE_ACTIVE, 157 VB2_BUF_STATE_ACTIVE,
156 VB2_BUF_STATE_DONE, 158 VB2_BUF_STATE_DONE,
157 VB2_BUF_STATE_ERROR, 159 VB2_BUF_STATE_ERROR,
diff --git a/include/scsi/scsi_eh.h b/include/scsi/scsi_eh.h
index 4942710ef720..8d1d7fa67ec4 100644
--- a/include/scsi/scsi_eh.h
+++ b/include/scsi/scsi_eh.h
@@ -28,7 +28,6 @@ extern int scsi_get_sense_info_fld(const u8 * sense_buffer, int sb_len,
28 u64 * info_out); 28 u64 * info_out);
29 29
30extern void scsi_build_sense_buffer(int desc, u8 *buf, u8 key, u8 asc, u8 ascq); 30extern void scsi_build_sense_buffer(int desc, u8 *buf, u8 key, u8 asc, u8 ascq);
31extern void scsi_set_sense_information(u8 *buf, u64 info);
32 31
33extern int scsi_ioctl_reset(struct scsi_device *, int __user *); 32extern int scsi_ioctl_reset(struct scsi_device *, int __user *);
34 33
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h
index 0e9d75b49bed..74bc85473b58 100644
--- a/include/sound/ac97_codec.h
+++ b/include/sound/ac97_codec.h
@@ -584,6 +584,8 @@ static inline int snd_ac97_update_power(struct snd_ac97 *ac97, int reg,
584void snd_ac97_suspend(struct snd_ac97 *ac97); 584void snd_ac97_suspend(struct snd_ac97 *ac97);
585void snd_ac97_resume(struct snd_ac97 *ac97); 585void snd_ac97_resume(struct snd_ac97 *ac97);
586#endif 586#endif
587int snd_ac97_reset(struct snd_ac97 *ac97, bool try_warm, unsigned int id,
588 unsigned int id_mask);
587 589
588/* quirk types */ 590/* quirk types */
589enum { 591enum {
diff --git a/include/sound/rcar_snd.h b/include/sound/rcar_snd.h
index 4cecd0c175f6..bb7b2ebfee7b 100644
--- a/include/sound/rcar_snd.h
+++ b/include/sound/rcar_snd.h
@@ -61,6 +61,14 @@ struct rsnd_src_platform_info {
61/* 61/*
62 * flags 62 * flags
63 */ 63 */
64struct rsnd_ctu_platform_info {
65 u32 flags;
66};
67
68struct rsnd_mix_platform_info {
69 u32 flags;
70};
71
64struct rsnd_dvc_platform_info { 72struct rsnd_dvc_platform_info {
65 u32 flags; 73 u32 flags;
66}; 74};
@@ -68,6 +76,8 @@ struct rsnd_dvc_platform_info {
68struct rsnd_dai_path_info { 76struct rsnd_dai_path_info {
69 struct rsnd_ssi_platform_info *ssi; 77 struct rsnd_ssi_platform_info *ssi;
70 struct rsnd_src_platform_info *src; 78 struct rsnd_src_platform_info *src;
79 struct rsnd_ctu_platform_info *ctu;
80 struct rsnd_mix_platform_info *mix;
71 struct rsnd_dvc_platform_info *dvc; 81 struct rsnd_dvc_platform_info *dvc;
72}; 82};
73 83
@@ -93,6 +103,10 @@ struct rcar_snd_info {
93 int ssi_info_nr; 103 int ssi_info_nr;
94 struct rsnd_src_platform_info *src_info; 104 struct rsnd_src_platform_info *src_info;
95 int src_info_nr; 105 int src_info_nr;
106 struct rsnd_ctu_platform_info *ctu_info;
107 int ctu_info_nr;
108 struct rsnd_mix_platform_info *mix_info;
109 int mix_info_nr;
96 struct rsnd_dvc_platform_info *dvc_info; 110 struct rsnd_dvc_platform_info *dvc_info;
97 int dvc_info_nr; 111 int dvc_info_nr;
98 struct rsnd_dai_platform_info *dai_info; 112 struct rsnd_dai_platform_info *dai_info;
diff --git a/include/sound/rt298.h b/include/sound/rt298.h
new file mode 100644
index 000000000000..7fffeaa84f64
--- /dev/null
+++ b/include/sound/rt298.h
@@ -0,0 +1,20 @@
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_RT298_H
12#define __LINUX_SND_RT298_H
13
14struct rt298_platform_data {
15 bool cbj_en; /*combo jack enable*/
16 bool gpio2_en; /*GPIO2 enable*/
17 bool suspend_power_off; /* power is off during suspend */
18};
19
20#endif
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index 37d95a898275..5abba037d245 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -397,6 +397,7 @@ int snd_soc_dapm_del_routes(struct snd_soc_dapm_context *dapm,
397 const struct snd_soc_dapm_route *route, int num); 397 const struct snd_soc_dapm_route *route, int num);
398int snd_soc_dapm_weak_routes(struct snd_soc_dapm_context *dapm, 398int snd_soc_dapm_weak_routes(struct snd_soc_dapm_context *dapm,
399 const struct snd_soc_dapm_route *route, int num); 399 const struct snd_soc_dapm_route *route, int num);
400void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w);
400 401
401/* dapm events */ 402/* dapm events */
402void snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream, 403void snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream,
@@ -511,9 +512,18 @@ struct snd_soc_dapm_route {
511struct snd_soc_dapm_path { 512struct snd_soc_dapm_path {
512 const char *name; 513 const char *name;
513 514
514 /* source (input) and sink (output) widgets */ 515 /*
515 struct snd_soc_dapm_widget *source; 516 * source (input) and sink (output) widgets
516 struct snd_soc_dapm_widget *sink; 517 * The union is for convience, since it is a lot nicer to type
518 * p->source, rather than p->node[SND_SOC_DAPM_DIR_IN]
519 */
520 union {
521 struct {
522 struct snd_soc_dapm_widget *source;
523 struct snd_soc_dapm_widget *sink;
524 };
525 struct snd_soc_dapm_widget *node[2];
526 };
517 527
518 /* status */ 528 /* status */
519 u32 connect:1; /* source and sink widgets are connected */ 529 u32 connect:1; /* source and sink widgets are connected */
@@ -524,8 +534,7 @@ struct snd_soc_dapm_path {
524 int (*connected)(struct snd_soc_dapm_widget *source, 534 int (*connected)(struct snd_soc_dapm_widget *source,
525 struct snd_soc_dapm_widget *sink); 535 struct snd_soc_dapm_widget *sink);
526 536
527 struct list_head list_source; 537 struct list_head list_node[2];
528 struct list_head list_sink;
529 struct list_head list_kcontrol; 538 struct list_head list_kcontrol;
530 struct list_head list; 539 struct list_head list;
531}; 540};
@@ -559,8 +568,7 @@ struct snd_soc_dapm_widget {
559 unsigned char new_power:1; /* power from this run */ 568 unsigned char new_power:1; /* power from this run */
560 unsigned char power_checked:1; /* power checked this run */ 569 unsigned char power_checked:1; /* power checked this run */
561 unsigned char is_supply:1; /* Widget is a supply type widget */ 570 unsigned char is_supply:1; /* Widget is a supply type widget */
562 unsigned char is_sink:1; /* Widget is a sink type widget */ 571 unsigned char is_ep:2; /* Widget is a endpoint type widget */
563 unsigned char is_source:1; /* Widget is a source type widget */
564 int subseq; /* sort within widget type */ 572 int subseq; /* sort within widget type */
565 573
566 int (*power_check)(struct snd_soc_dapm_widget *w); 574 int (*power_check)(struct snd_soc_dapm_widget *w);
@@ -575,16 +583,14 @@ struct snd_soc_dapm_widget {
575 struct snd_kcontrol **kcontrols; 583 struct snd_kcontrol **kcontrols;
576 struct snd_soc_dobj dobj; 584 struct snd_soc_dobj dobj;
577 585
578 /* widget input and outputs */ 586 /* widget input and output edges */
579 struct list_head sources; 587 struct list_head edges[2];
580 struct list_head sinks;
581 588
582 /* used during DAPM updates */ 589 /* used during DAPM updates */
583 struct list_head work_list; 590 struct list_head work_list;
584 struct list_head power_list; 591 struct list_head power_list;
585 struct list_head dirty; 592 struct list_head dirty;
586 int inputs; 593 int endpoints[2];
587 int outputs;
588 594
589 struct clk *clk; 595 struct clk *clk;
590}; 596};
@@ -672,4 +678,58 @@ static inline enum snd_soc_bias_level snd_soc_dapm_get_bias_level(
672 return dapm->bias_level; 678 return dapm->bias_level;
673} 679}
674 680
681enum snd_soc_dapm_direction {
682 SND_SOC_DAPM_DIR_IN,
683 SND_SOC_DAPM_DIR_OUT
684};
685
686#define SND_SOC_DAPM_DIR_TO_EP(x) BIT(x)
687
688#define SND_SOC_DAPM_EP_SOURCE SND_SOC_DAPM_DIR_TO_EP(SND_SOC_DAPM_DIR_IN)
689#define SND_SOC_DAPM_EP_SINK SND_SOC_DAPM_DIR_TO_EP(SND_SOC_DAPM_DIR_OUT)
690
691/**
692 * snd_soc_dapm_widget_for_each_sink_path - Iterates over all paths in the
693 * specified direction of a widget
694 * @w: The widget
695 * @dir: Whether to iterate over the paths where the specified widget is the
696 * incoming or outgoing widgets
697 * @p: The path iterator variable
698 */
699#define snd_soc_dapm_widget_for_each_path(w, dir, p) \
700 list_for_each_entry(p, &w->edges[dir], list_node[dir])
701
702/**
703 * snd_soc_dapm_widget_for_each_sink_path_safe - Iterates over all paths in the
704 * specified direction of a widget
705 * @w: The widget
706 * @dir: Whether to iterate over the paths where the specified widget is the
707 * incoming or outgoing widgets
708 * @p: The path iterator variable
709 * @next_p: Temporary storage for the next path
710 *
711 * This function works like snd_soc_dapm_widget_for_each_sink_path, expect that
712 * it is safe to remove the current path from the list while iterating
713 */
714#define snd_soc_dapm_widget_for_each_path_safe(w, dir, p, next_p) \
715 list_for_each_entry_safe(p, next_p, &w->edges[dir], list_node[dir])
716
717/**
718 * snd_soc_dapm_widget_for_each_sink_path - Iterates over all paths leaving a
719 * widget
720 * @w: The widget
721 * @p: The path iterator variable
722 */
723#define snd_soc_dapm_widget_for_each_sink_path(w, p) \
724 snd_soc_dapm_widget_for_each_path(w, SND_SOC_DAPM_DIR_IN, p)
725
726/**
727 * snd_soc_dapm_widget_for_each_source_path - Iterates over all paths leading to
728 * a widget
729 * @w: The widget
730 * @p: The path iterator variable
731 */
732#define snd_soc_dapm_widget_for_each_source_path(w, p) \
733 snd_soc_dapm_widget_for_each_path(w, SND_SOC_DAPM_DIR_OUT, p)
734
675#endif 735#endif
diff --git a/include/sound/soc-topology.h b/include/sound/soc-topology.h
index 427bc41df3ae..086cd7ff6ddc 100644
--- a/include/sound/soc-topology.h
+++ b/include/sound/soc-topology.h
@@ -89,6 +89,13 @@ struct snd_soc_tplg_kcontrol_ops {
89 struct snd_ctl_elem_info *uinfo); 89 struct snd_ctl_elem_info *uinfo);
90}; 90};
91 91
92/* Bytes ext operations, for TLV byte controls */
93struct snd_soc_tplg_bytes_ext_ops {
94 u32 id;
95 int (*get)(unsigned int __user *bytes, unsigned int size);
96 int (*put)(const unsigned int __user *bytes, unsigned int size);
97};
98
92/* 99/*
93 * DAPM widget event handlers - used to map handlers onto widgets. 100 * DAPM widget event handlers - used to map handlers onto widgets.
94 */ 101 */
@@ -136,9 +143,13 @@ struct snd_soc_tplg_ops {
136 int (*manifest)(struct snd_soc_component *, 143 int (*manifest)(struct snd_soc_component *,
137 struct snd_soc_tplg_manifest *); 144 struct snd_soc_tplg_manifest *);
138 145
139 /* bespoke kcontrol handlers available for binding */ 146 /* vendor specific kcontrol handlers available for binding */
140 const struct snd_soc_tplg_kcontrol_ops *io_ops; 147 const struct snd_soc_tplg_kcontrol_ops *io_ops;
141 int io_ops_count; 148 int io_ops_count;
149
150 /* vendor specific bytes ext handlers available for binding */
151 const struct snd_soc_tplg_bytes_ext_ops *bytes_ext_ops;
152 int bytes_ext_ops_count;
142}; 153};
143 154
144#ifdef CONFIG_SND_SOC_TOPOLOGY 155#ifdef CONFIG_SND_SOC_TOPOLOGY
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 93df8bf9d54a..884e728b09d9 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -526,7 +526,8 @@ int snd_soc_test_bits(struct snd_soc_codec *codec, unsigned int reg,
526 526
527#ifdef CONFIG_SND_SOC_AC97_BUS 527#ifdef CONFIG_SND_SOC_AC97_BUS
528struct snd_ac97 *snd_soc_alloc_ac97_codec(struct snd_soc_codec *codec); 528struct snd_ac97 *snd_soc_alloc_ac97_codec(struct snd_soc_codec *codec);
529struct snd_ac97 *snd_soc_new_ac97_codec(struct snd_soc_codec *codec); 529struct snd_ac97 *snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
530 unsigned int id, unsigned int id_mask);
530void snd_soc_free_ac97_codec(struct snd_ac97 *ac97); 531void snd_soc_free_ac97_codec(struct snd_ac97 *ac97);
531 532
532int snd_soc_set_ac97_ops(struct snd_ac97_bus_ops *ops); 533int snd_soc_set_ac97_ops(struct snd_ac97_bus_ops *ops);
@@ -619,6 +620,7 @@ int snd_soc_put_strobe(struct snd_kcontrol *kcontrol,
619 * @pin: name of the pin to update 620 * @pin: name of the pin to update
620 * @mask: bits to check for in reported jack status 621 * @mask: bits to check for in reported jack status
621 * @invert: if non-zero then pin is enabled when status is not reported 622 * @invert: if non-zero then pin is enabled when status is not reported
623 * @list: internal list entry
622 */ 624 */
623struct snd_soc_jack_pin { 625struct snd_soc_jack_pin {
624 struct list_head list; 626 struct list_head list;
@@ -635,7 +637,7 @@ struct snd_soc_jack_pin {
635 * @jack_type: type of jack that is expected for this voltage 637 * @jack_type: type of jack that is expected for this voltage
636 * @debounce_time: debounce_time for jack, codec driver should wait for this 638 * @debounce_time: debounce_time for jack, codec driver should wait for this
637 * duration before reading the adc for voltages 639 * duration before reading the adc for voltages
638 * @:list: list container 640 * @list: internal list entry
639 */ 641 */
640struct snd_soc_jack_zone { 642struct snd_soc_jack_zone {
641 unsigned int min_mv; 643 unsigned int min_mv;
@@ -651,12 +653,12 @@ struct snd_soc_jack_zone {
651 * @gpio: legacy gpio number 653 * @gpio: legacy gpio number
652 * @idx: gpio descriptor index within the function of the GPIO 654 * @idx: gpio descriptor index within the function of the GPIO
653 * consumer device 655 * consumer device
654 * @gpiod_dev GPIO consumer device 656 * @gpiod_dev: GPIO consumer device
655 * @name: gpio name. Also as connection ID for the GPIO consumer 657 * @name: gpio name. Also as connection ID for the GPIO consumer
656 * device function name lookup 658 * device function name lookup
657 * @report: value to report when jack detected 659 * @report: value to report when jack detected
658 * @invert: report presence in low state 660 * @invert: report presence in low state
659 * @debouce_time: debouce time in ms 661 * @debounce_time: debounce time in ms
660 * @wake: enable as wake source 662 * @wake: enable as wake source
661 * @jack_status_check: callback function which overrides the detection 663 * @jack_status_check: callback function which overrides the detection
662 * to provide more complex checks (eg, reading an 664 * to provide more complex checks (eg, reading an
@@ -672,11 +674,13 @@ struct snd_soc_jack_gpio {
672 int debounce_time; 674 int debounce_time;
673 bool wake; 675 bool wake;
674 676
677 /* private: */
675 struct snd_soc_jack *jack; 678 struct snd_soc_jack *jack;
676 struct delayed_work work; 679 struct delayed_work work;
677 struct gpio_desc *desc; 680 struct gpio_desc *desc;
678 681
679 void *data; 682 void *data;
683 /* public: */
680 int (*jack_status_check)(void *data); 684 int (*jack_status_check)(void *data);
681}; 685};
682 686
@@ -758,7 +762,6 @@ struct snd_soc_component {
758 762
759 unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */ 763 unsigned int ignore_pmdown_time:1; /* pmdown_time is ignored at stop */
760 unsigned int registered_as_component:1; 764 unsigned int registered_as_component:1;
761 unsigned int probed:1;
762 765
763 struct list_head list; 766 struct list_head list;
764 767
@@ -792,7 +795,6 @@ struct snd_soc_component {
792 795
793 /* Don't use these, use snd_soc_component_get_dapm() */ 796 /* Don't use these, use snd_soc_component_get_dapm() */
794 struct snd_soc_dapm_context dapm; 797 struct snd_soc_dapm_context dapm;
795 struct snd_soc_dapm_context *dapm_ptr;
796 798
797 const struct snd_kcontrol_new *controls; 799 const struct snd_kcontrol_new *controls;
798 unsigned int num_controls; 800 unsigned int num_controls;
@@ -832,9 +834,6 @@ struct snd_soc_codec {
832 /* component */ 834 /* component */
833 struct snd_soc_component component; 835 struct snd_soc_component component;
834 836
835 /* Don't access this directly, use snd_soc_codec_get_dapm() */
836 struct snd_soc_dapm_context dapm;
837
838#ifdef CONFIG_DEBUG_FS 837#ifdef CONFIG_DEBUG_FS
839 struct dentry *debugfs_reg; 838 struct dentry *debugfs_reg;
840#endif 839#endif
@@ -1277,7 +1276,7 @@ static inline struct snd_soc_component *snd_soc_dapm_to_component(
1277static inline struct snd_soc_codec *snd_soc_dapm_to_codec( 1276static inline struct snd_soc_codec *snd_soc_dapm_to_codec(
1278 struct snd_soc_dapm_context *dapm) 1277 struct snd_soc_dapm_context *dapm)
1279{ 1278{
1280 return container_of(dapm, struct snd_soc_codec, dapm); 1279 return snd_soc_component_to_codec(snd_soc_dapm_to_component(dapm));
1281} 1280}
1282 1281
1283/** 1282/**
@@ -1302,7 +1301,7 @@ static inline struct snd_soc_platform *snd_soc_dapm_to_platform(
1302static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm( 1301static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm(
1303 struct snd_soc_component *component) 1302 struct snd_soc_component *component)
1304{ 1303{
1305 return component->dapm_ptr; 1304 return &component->dapm;
1306} 1305}
1307 1306
1308/** 1307/**
@@ -1314,12 +1313,12 @@ static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm(
1314static inline struct snd_soc_dapm_context *snd_soc_codec_get_dapm( 1313static inline struct snd_soc_dapm_context *snd_soc_codec_get_dapm(
1315 struct snd_soc_codec *codec) 1314 struct snd_soc_codec *codec)
1316{ 1315{
1317 return &codec->dapm; 1316 return snd_soc_component_get_dapm(&codec->component);
1318} 1317}
1319 1318
1320/** 1319/**
1321 * snd_soc_dapm_init_bias_level() - Initialize CODEC DAPM bias level 1320 * snd_soc_dapm_init_bias_level() - Initialize CODEC DAPM bias level
1322 * @dapm: The CODEC for which to initialize the DAPM bias level 1321 * @codec: The CODEC for which to initialize the DAPM bias level
1323 * @level: The DAPM level to initialize to 1322 * @level: The DAPM level to initialize to
1324 * 1323 *
1325 * Initializes the CODEC DAPM bias level. See snd_soc_dapm_init_bias_level(). 1324 * Initializes the CODEC DAPM bias level. See snd_soc_dapm_init_bias_level().
@@ -1604,6 +1603,10 @@ int snd_soc_of_parse_audio_simple_widgets(struct snd_soc_card *card,
1604int snd_soc_of_parse_tdm_slot(struct device_node *np, 1603int snd_soc_of_parse_tdm_slot(struct device_node *np,
1605 unsigned int *slots, 1604 unsigned int *slots,
1606 unsigned int *slot_width); 1605 unsigned int *slot_width);
1606void snd_soc_of_parse_audio_prefix(struct snd_soc_card *card,
1607 struct snd_soc_codec_conf *codec_conf,
1608 struct device_node *of_node,
1609 const char *propname);
1607int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, 1610int snd_soc_of_parse_audio_routing(struct snd_soc_card *card,
1608 const char *propname); 1611 const char *propname);
1609unsigned int snd_soc_of_parse_daifmt(struct device_node *np, 1612unsigned int snd_soc_of_parse_daifmt(struct device_node *np,
diff --git a/include/trace/events/asoc.h b/include/trace/events/asoc.h
index 88cf39d96d0f..317a1ed2f4ac 100644
--- a/include/trace/events/asoc.h
+++ b/include/trace/events/asoc.h
@@ -8,6 +8,7 @@
8#include <linux/tracepoint.h> 8#include <linux/tracepoint.h>
9 9
10#define DAPM_DIRECT "(direct)" 10#define DAPM_DIRECT "(direct)"
11#define DAPM_ARROW(dir) (((dir) == SND_SOC_DAPM_DIR_OUT) ? "->" : "<-")
11 12
12struct snd_soc_jack; 13struct snd_soc_jack;
13struct snd_soc_codec; 14struct snd_soc_codec;
@@ -152,62 +153,38 @@ TRACE_EVENT(snd_soc_dapm_walk_done,
152 (int)__entry->path_checks, (int)__entry->neighbour_checks) 153 (int)__entry->path_checks, (int)__entry->neighbour_checks)
153); 154);
154 155
155TRACE_EVENT(snd_soc_dapm_output_path, 156TRACE_EVENT(snd_soc_dapm_path,
156 157
157 TP_PROTO(struct snd_soc_dapm_widget *widget, 158 TP_PROTO(struct snd_soc_dapm_widget *widget,
159 enum snd_soc_dapm_direction dir,
158 struct snd_soc_dapm_path *path), 160 struct snd_soc_dapm_path *path),
159 161
160 TP_ARGS(widget, path), 162 TP_ARGS(widget, dir, path),
161 163
162 TP_STRUCT__entry( 164 TP_STRUCT__entry(
163 __string( wname, widget->name ) 165 __string( wname, widget->name )
164 __string( pname, path->name ? path->name : DAPM_DIRECT) 166 __string( pname, path->name ? path->name : DAPM_DIRECT)
165 __string( psname, path->sink->name ) 167 __string( pnname, path->node[dir]->name )
166 __field( int, path_sink ) 168 __field( int, path_node )
167 __field( int, path_connect ) 169 __field( int, path_connect )
170 __field( int, path_dir )
168 ), 171 ),
169 172
170 TP_fast_assign( 173 TP_fast_assign(
171 __assign_str(wname, widget->name); 174 __assign_str(wname, widget->name);
172 __assign_str(pname, path->name ? path->name : DAPM_DIRECT); 175 __assign_str(pname, path->name ? path->name : DAPM_DIRECT);
173 __assign_str(psname, path->sink->name); 176 __assign_str(pnname, path->node[dir]->name);
174 __entry->path_connect = path->connect; 177 __entry->path_connect = path->connect;
175 __entry->path_sink = (long)path->sink; 178 __entry->path_node = (long)path->node[dir];
179 __entry->path_dir = dir;
176 ), 180 ),
177 181
178 TP_printk("%c%s -> %s -> %s", 182 TP_printk("%c%s %s %s %s %s",
179 (int) __entry->path_sink && 183 (int) __entry->path_node &&
180 (int) __entry->path_connect ? '*' : ' ', 184 (int) __entry->path_connect ? '*' : ' ',
181 __get_str(wname), __get_str(pname), __get_str(psname)) 185 __get_str(wname), DAPM_ARROW(__entry->path_dir),
182); 186 __get_str(pname), DAPM_ARROW(__entry->path_dir),
183 187 __get_str(pnname))
184TRACE_EVENT(snd_soc_dapm_input_path,
185
186 TP_PROTO(struct snd_soc_dapm_widget *widget,
187 struct snd_soc_dapm_path *path),
188
189 TP_ARGS(widget, path),
190
191 TP_STRUCT__entry(
192 __string( wname, widget->name )
193 __string( pname, path->name ? path->name : DAPM_DIRECT)
194 __string( psname, path->source->name )
195 __field( int, path_source )
196 __field( int, path_connect )
197 ),
198
199 TP_fast_assign(
200 __assign_str(wname, widget->name);
201 __assign_str(pname, path->name ? path->name : DAPM_DIRECT);
202 __assign_str(psname, path->source->name);
203 __entry->path_connect = path->connect;
204 __entry->path_source = (long)path->source;
205 ),
206
207 TP_printk("%c%s <- %s <- %s",
208 (int) __entry->path_source &&
209 (int) __entry->path_connect ? '*' : ' ',
210 __get_str(wname), __get_str(pname), __get_str(psname))
211); 188);
212 189
213TRACE_EVENT(snd_soc_dapm_connected, 190TRACE_EVENT(snd_soc_dapm_connected,
diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
index efe3443572ba..413417f3707b 100644
--- a/include/uapi/linux/pci_regs.h
+++ b/include/uapi/linux/pci_regs.h
@@ -319,6 +319,7 @@
319#define PCI_MSIX_PBA 8 /* Pending Bit Array offset */ 319#define PCI_MSIX_PBA 8 /* Pending Bit Array offset */
320#define PCI_MSIX_PBA_BIR 0x00000007 /* BAR index */ 320#define PCI_MSIX_PBA_BIR 0x00000007 /* BAR index */
321#define PCI_MSIX_PBA_OFFSET 0xfffffff8 /* Offset into specified BAR */ 321#define PCI_MSIX_PBA_OFFSET 0xfffffff8 /* Offset into specified BAR */
322#define PCI_MSIX_FLAGS_BIRMASK PCI_MSIX_PBA_BIR /* deprecated */
322#define PCI_CAP_MSIX_SIZEOF 12 /* size of MSIX registers */ 323#define PCI_CAP_MSIX_SIZEOF 12 /* size of MSIX registers */
323 324
324/* MSI-X Table entry format */ 325/* MSI-X Table entry format */