diff options
author | Takashi Iwai <tiwai@suse.de> | 2015-08-31 10:25:22 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-08-31 10:25:22 -0400 |
commit | 08ceab9d875824f8b389530e830349d5d6c4e582 (patch) | |
tree | 4ced69544742b87cb369de553df505870be593e1 /include | |
parent | 22c103cd3dfadff340b3b639e477a3c161cb2104 (diff) | |
parent | 91931320cfbbcc1dd874c2d0aef62e7d90f07f70 (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.h | 2 | ||||
-rw-r--r-- | include/drm/drm_crtc.h | 2 | ||||
-rw-r--r-- | include/drm/drm_crtc_helper.h | 3 | ||||
-rw-r--r-- | include/drm/drm_edid.h | 19 | ||||
-rw-r--r-- | include/drm/drm_pciids.h | 1 | ||||
-rw-r--r-- | include/linux/ata.h | 18 | ||||
-rw-r--r-- | include/linux/fs.h | 5 | ||||
-rw-r--r-- | include/linux/irq.h | 1 | ||||
-rw-r--r-- | include/linux/mfd/arizona/registers.h | 37 | ||||
-rw-r--r-- | include/linux/mm.h | 28 | ||||
-rw-r--r-- | include/linux/mm_types.h | 9 | ||||
-rw-r--r-- | include/linux/page-flags.h | 10 | ||||
-rw-r--r-- | include/linux/regmap.h | 28 | ||||
-rw-r--r-- | include/linux/skbuff.h | 20 | ||||
-rw-r--r-- | include/media/rc-core.h | 7 | ||||
-rw-r--r-- | include/media/videobuf2-core.h | 2 | ||||
-rw-r--r-- | include/scsi/scsi_eh.h | 1 | ||||
-rw-r--r-- | include/sound/ac97_codec.h | 2 | ||||
-rw-r--r-- | include/sound/rcar_snd.h | 14 | ||||
-rw-r--r-- | include/sound/rt298.h | 20 | ||||
-rw-r--r-- | include/sound/soc-dapm.h | 84 | ||||
-rw-r--r-- | include/sound/soc-topology.h | 13 | ||||
-rw-r--r-- | include/sound/soc.h | 29 | ||||
-rw-r--r-- | include/trace/events/asoc.h | 53 | ||||
-rw-r--r-- | include/uapi/linux/pci_regs.h | 1 |
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 | ||
181 | extern void drm_helper_disable_unused_functions(struct drm_device *dev); | 184 | extern 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 | */ | ||
354 | static 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 | ||
536 | static inline bool ata_id_has_hipm(const u16 *id) | 532 | static 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 | ||
723 | static 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 | |||
730 | static 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 | ||
56 | extern void __init inode_init(void); | 56 | extern void __init inode_init(void); |
57 | extern void __init inode_init_early(void); | 57 | extern void __init inode_init_early(void); |
58 | extern void __init files_init(unsigned long); | 58 | extern void __init files_init(void); |
59 | extern void __init files_maxfiles_init(void); | ||
59 | 60 | ||
60 | extern struct files_stat_struct files_stat; | 61 | extern struct files_stat_struct files_stat; |
61 | extern unsigned long get_max_files(void); | 62 | extern 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 */ |
2247 | extern void __init vfs_caches_init_early(void); | 2248 | extern void __init vfs_caches_init_early(void); |
2248 | extern void __init vfs_caches_init(unsigned long); | 2249 | extern void __init vfs_caches_init(void); |
2249 | 2250 | ||
2250 | extern struct kmem_cache *names_cachep; | 2251 | extern 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, | |||
484 | extern int irq_chip_set_wake_parent(struct irq_data *data, unsigned int on); | 484 | extern int irq_chip_set_wake_parent(struct irq_data *data, unsigned int on); |
485 | extern int irq_chip_set_vcpu_affinity_parent(struct irq_data *data, | 485 | extern int irq_chip_set_vcpu_affinity_parent(struct irq_data *data, |
486 | void *vcpu_info); | 486 | void *vcpu_info); |
487 | extern 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 | */ | ||
1010 | static 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 | */ | ||
1023 | static inline void set_page_pfmemalloc(struct page *page) | ||
1024 | { | ||
1025 | page->index = -1UL; | ||
1026 | } | ||
1027 | |||
1028 | static 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 | */ | ||
59 | struct reg_sequence { | ||
60 | unsigned int reg; | ||
61 | unsigned int def; | ||
62 | }; | ||
63 | |||
53 | #ifdef CONFIG_REGMAP | 64 | #ifdef CONFIG_REGMAP |
54 | 65 | ||
55 | enum regmap_endian { | 66 | enum 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); |
411 | int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val, | 422 | int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val, |
412 | size_t val_count); | 423 | size_t val_count); |
413 | int regmap_multi_reg_write(struct regmap *map, const struct reg_default *regs, | 424 | int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *regs, |
414 | int num_regs); | 425 | int num_regs); |
415 | int regmap_multi_reg_write_bypassed(struct regmap *map, | 426 | int 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); |
418 | int regmap_raw_write_async(struct regmap *map, unsigned int reg, | 429 | int 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); |
425 | int regmap_update_bits(struct regmap *map, unsigned int reg, | 436 | int regmap_update_bits(struct regmap *map, unsigned int reg, |
426 | unsigned int mask, unsigned int val); | 437 | unsigned int mask, unsigned int val); |
438 | int regmap_write_bits(struct regmap *map, unsigned int reg, | ||
439 | unsigned int mask, unsigned int val); | ||
427 | int regmap_update_bits_async(struct regmap *map, unsigned int reg, | 440 | int regmap_update_bits_async(struct regmap *map, unsigned int reg, |
428 | unsigned int mask, unsigned int val); | 441 | unsigned int mask, unsigned int val); |
429 | int regmap_update_bits_check(struct regmap *map, unsigned int reg, | 442 | int regmap_update_bits_check(struct regmap *map, unsigned int reg, |
@@ -450,7 +463,7 @@ void regcache_mark_dirty(struct regmap *map); | |||
450 | bool regmap_check_range_table(struct regmap *map, unsigned int reg, | 463 | bool 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 | ||
453 | int regmap_register_patch(struct regmap *map, const struct reg_default *regs, | 466 | int regmap_register_patch(struct regmap *map, const struct reg_sequence *regs, |
454 | int num_regs); | 467 | int num_regs); |
455 | int regmap_parse_val(struct regmap *map, const void *buf, | 468 | int 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 | ||
504 | int regmap_fields_write(struct regmap_field *field, unsigned int id, | 517 | int regmap_fields_write(struct regmap_field *field, unsigned int id, |
505 | unsigned int val); | 518 | unsigned int val); |
519 | int regmap_fields_force_write(struct regmap_field *field, unsigned int id, | ||
520 | unsigned int val); | ||
506 | int regmap_fields_read(struct regmap_field *field, unsigned int id, | 521 | int regmap_fields_read(struct regmap_field *field, unsigned int id, |
507 | unsigned int *val); | 522 | unsigned int *val); |
508 | int regmap_fields_update_bits(struct regmap_field *field, unsigned int id, | 523 | int 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 | ||
663 | static 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 | |||
648 | static inline int regmap_update_bits_async(struct regmap *map, | 670 | static 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) | |||
2263 | static inline void skb_propagate_pfmemalloc(struct page *page, | 2259 | static 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 | */ |
2894 | void skb_complete_tx_timestamp(struct sk_buff *skb, | 2890 | void 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 | ||
251 | void ir_raw_event_handle(struct rc_dev *dev); | 247 | void ir_raw_event_handle(struct rc_dev *dev); |
252 | int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev); | 248 | int 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); | |||
254 | int ir_raw_event_store_with_filter(struct rc_dev *dev, | 250 | int ir_raw_event_store_with_filter(struct rc_dev *dev, |
255 | struct ir_raw_event *ev); | 251 | struct ir_raw_event *ev); |
256 | void ir_raw_event_set_idle(struct rc_dev *dev, bool idle); | 252 | void ir_raw_event_set_idle(struct rc_dev *dev, bool idle); |
257 | int ir_raw_encode_scancode(u64 protocols, | ||
258 | const struct rc_scancode_filter *scancode, | ||
259 | struct ir_raw_event *events, unsigned int max); | ||
260 | 253 | ||
261 | static inline void ir_raw_event_reset(struct rc_dev *dev) | 254 | static 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 | ||
30 | extern void scsi_build_sense_buffer(int desc, u8 *buf, u8 key, u8 asc, u8 ascq); | 30 | extern void scsi_build_sense_buffer(int desc, u8 *buf, u8 key, u8 asc, u8 ascq); |
31 | extern void scsi_set_sense_information(u8 *buf, u64 info); | ||
32 | 31 | ||
33 | extern int scsi_ioctl_reset(struct scsi_device *, int __user *); | 32 | extern 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, | |||
584 | void snd_ac97_suspend(struct snd_ac97 *ac97); | 584 | void snd_ac97_suspend(struct snd_ac97 *ac97); |
585 | void snd_ac97_resume(struct snd_ac97 *ac97); | 585 | void snd_ac97_resume(struct snd_ac97 *ac97); |
586 | #endif | 586 | #endif |
587 | int 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 */ |
589 | enum { | 591 | enum { |
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 | */ |
64 | struct rsnd_ctu_platform_info { | ||
65 | u32 flags; | ||
66 | }; | ||
67 | |||
68 | struct rsnd_mix_platform_info { | ||
69 | u32 flags; | ||
70 | }; | ||
71 | |||
64 | struct rsnd_dvc_platform_info { | 72 | struct rsnd_dvc_platform_info { |
65 | u32 flags; | 73 | u32 flags; |
66 | }; | 74 | }; |
@@ -68,6 +76,8 @@ struct rsnd_dvc_platform_info { | |||
68 | struct rsnd_dai_path_info { | 76 | struct 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 | |||
14 | struct 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); |
398 | int snd_soc_dapm_weak_routes(struct snd_soc_dapm_context *dapm, | 398 | int 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); |
400 | void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w); | ||
400 | 401 | ||
401 | /* dapm events */ | 402 | /* dapm events */ |
402 | void snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream, | 403 | void snd_soc_dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream, |
@@ -511,9 +512,18 @@ struct snd_soc_dapm_route { | |||
511 | struct snd_soc_dapm_path { | 512 | struct 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 | ||
681 | enum 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 */ | ||
93 | struct 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 |
528 | struct snd_ac97 *snd_soc_alloc_ac97_codec(struct snd_soc_codec *codec); | 528 | struct snd_ac97 *snd_soc_alloc_ac97_codec(struct snd_soc_codec *codec); |
529 | struct snd_ac97 *snd_soc_new_ac97_codec(struct snd_soc_codec *codec); | 529 | struct snd_ac97 *snd_soc_new_ac97_codec(struct snd_soc_codec *codec, |
530 | unsigned int id, unsigned int id_mask); | ||
530 | void snd_soc_free_ac97_codec(struct snd_ac97 *ac97); | 531 | void snd_soc_free_ac97_codec(struct snd_ac97 *ac97); |
531 | 532 | ||
532 | int snd_soc_set_ac97_ops(struct snd_ac97_bus_ops *ops); | 533 | int 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 | */ |
623 | struct snd_soc_jack_pin { | 625 | struct 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 | */ |
640 | struct snd_soc_jack_zone { | 642 | struct 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( | |||
1277 | static inline struct snd_soc_codec *snd_soc_dapm_to_codec( | 1276 | static 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( | |||
1302 | static inline struct snd_soc_dapm_context *snd_soc_component_get_dapm( | 1301 | static 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( | |||
1314 | static inline struct snd_soc_dapm_context *snd_soc_codec_get_dapm( | 1313 | static 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, | |||
1604 | int snd_soc_of_parse_tdm_slot(struct device_node *np, | 1603 | int 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); |
1606 | void 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); | ||
1607 | int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, | 1610 | int snd_soc_of_parse_audio_routing(struct snd_soc_card *card, |
1608 | const char *propname); | 1611 | const char *propname); |
1609 | unsigned int snd_soc_of_parse_daifmt(struct device_node *np, | 1612 | unsigned 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 | ||
12 | struct snd_soc_jack; | 13 | struct snd_soc_jack; |
13 | struct snd_soc_codec; | 14 | struct 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 | ||
155 | TRACE_EVENT(snd_soc_dapm_output_path, | 156 | TRACE_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)) | |
184 | TRACE_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 | ||
213 | TRACE_EVENT(snd_soc_dapm_connected, | 190 | TRACE_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 */ |