From 6cc57c0ffc3ecdc23e7b0f64c52b46f8acf4245abc1eabdc509b1c2c3dfbc8db Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Fri, 27 Feb 2015 14:36:41 +0000 Subject: [PATCH] Accepting request 287966 from home:tiwai:branches:multimedia:libs - Updated to alsa-lib 1.0.29: Just a version bump including previous fixes - Drop the obsoleted patches: 0001-ucm-Document-PlaybackPCMIsDummy-and-CapturePCMIsDumm.patch 0002-ICE1712-add-surround71-pcm-definition.patch 0003-USB-Audio-Add-second-S-PDIF-device-on-Phiree-U2.patch 0004-pcm-rate-fix-hw_ptr-exceed-the-boundary.patch 0005-pcm-Provide-a-CLOCK_MONOTONIC_RAW-timestamp-type.patch 0006-Add-timestamp-type-to-sw_params-internal-only.patch 0007-pcm-Add-sw_params-API-functions-to-get-set-timestamp.patch 0008-pcm-Implement-timestamp-type-setup-in-hw-plugin.patch 0009-pcm-Implement-timestamp-type-handling-in-all-plugins.patch 0010-test-audio_time-Set-timestamp-type-explicitly.patch 0011-pcm-route-Use-get-put-labels-for-all-3-byte-formats.patch 0012-pcm-Fill-sw_params-proto-field.patch 0013-pcm-route-Use-get32-for-multi-source-route-calculati.patch 0014-pcm-Drop-snd_pcm_linear_-get-put-32_index.patch 0015-pcm-pcm_local.h-include-time.h-to-enable-CLOCK_MONOT.patch 0016-pcm-Fix-DSD-formats-userland-usability.patch 0017-Sync-include-sound-asound.h-with-3.17-rc1-kernel.patch 0018-pcm-Add-missing-signed-and-endianess-definitions-for.patch 0019-Sync-enum-snd_hwdep_iface_t-with-include-asound-asou.patch 0020-pcm-2nd-round-of-pcm_misc-DSD-fixes.patch 0021-doc-fix-cross-compiling-example.patch 0022-pcm-fix-snd_pcm_mmap_hw_avail-near-the-boundary.patch 0023-pcm-fix-return-value-of-snd_pcm_share_slave_avail.patch 0024-pcm-add-new-32-bit-DSD-sample-format.patch 0025-dmix-actually-rewind-when-running-or-being-drained.patch 0026-pcm-express-the-rewind-size-limitation-logic-better.patch 0027-pcm-handle-negative-values-from-snd_pcm_mmap_hw_avai.patch OBS-URL: https://build.opensuse.org/request/show/287966 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/alsa?expand=0&rev=179 --- ...ybackPCMIsDummy-and-CapturePCMIsDumm.patch | 42 -- ...CE1712-add-surround71-pcm-definition.patch | 58 -- ...dd-second-S-PDIF-device-on-Phiree-U2.patch | 84 --- ...-rate-fix-hw_ptr-exceed-the-boundary.patch | 30 - ...a-CLOCK_MONOTONIC_RAW-timestamp-type.patch | 37 -- ...tamp-type-to-sw_params-internal-only.patch | 41 -- ...s-API-functions-to-get-set-timestamp.patch | 181 ------ ...nt-timestamp-type-setup-in-hw-plugin.patch | 113 ---- ...mestamp-type-handling-in-all-plugins.patch | 602 ------------------ ...o_time-Set-timestamp-type-explicitly.patch | 51 -- ...et-put-labels-for-all-3-byte-formats.patch | 35 - 0012-pcm-Fill-sw_params-proto-field.patch | 58 -- ...t32-for-multi-source-route-calculati.patch | 342 ---------- ...rop-snd_pcm_linear_-get-put-32_index.patch | 143 ----- ...include-time.h-to-enable-CLOCK_MONOT.patch | 29 - ...m-Fix-DSD-formats-userland-usability.patch | 67 -- ...-sound-asound.h-with-3.17-rc1-kernel.patch | 60 -- ...signed-and-endianess-definitions-for.patch | 36 -- ...dep_iface_t-with-include-asound-asou.patch | 38 -- ...-pcm-2nd-round-of-pcm_misc-DSD-fixes.patch | 48 -- 0021-doc-fix-cross-compiling-example.patch | 42 -- ..._pcm_mmap_hw_avail-near-the-boundary.patch | 40 -- ...n-value-of-snd_pcm_share_slave_avail.patch | 31 - ...pcm-add-new-32-bit-DSD-sample-format.patch | 123 ---- ...rewind-when-running-or-being-drained.patch | 36 -- ...-rewind-size-limitation-logic-better.patch | 112 ---- ...ive-values-from-snd_pcm_mmap_hw_avai.patch | 131 ---- ...e-the-snd_pcm_mmap_hw_avail-function.patch | 32 - ...-use-the-snd_pcm_mmap_avail-function.patch | 32 - ...tive-values-from-snd_pcm_mmap_playba.patch | 43 -- ...le-and-forwardable-logic-was-swapped.patch | 45 -- ...ecurse-in-the-rewindable-and-forward.patch | 37 -- ...e-Fix-the-bad-condition-always-false.patch | 25 - ...l-must-not-be-negative-before-starti.patch | 34 - ...g-declaration-for-snd_hwdep_poll_des.patch | 33 - 0037-mixer-fixed-double-free.patch | 30 - 0038-pcm_file-fixed-missing-free.patch | 34 - 0039-sbase-fixed-missing-free.patch | 26 - 0040-rawmidi-close-handle-h.patch | 31 - ...cm_share-fixing-missing-mutex-unlock.patch | 34 - 0042-simple_abst-null-check-for-lib.patch | 27 - 0043-socket-missing-socket-close.patch | 47 -- 0044-pcm_hooks-null-check-for-h.patch | 28 - ...turn-negative-value-in-case-of-error.patch | 26 - ...turn-negative-value-in-case-of-error.patch | 26 - ...turn-negative-value-in-case-of-error.patch | 26 - ...g-hctl-handle-free-in-snd_mixer_atta.patch | 44 -- ...dd-Toshiba-AC100-Dynabook-AZ-new-con.patch | 225 ------- ...Scarlett-2i4-USB-to-S-PDIF-blacklist.patch | 28 - 0051-snd_user_file-fix-memory-leak.patch | 43 -- ...x-Don-t-ignore-SND_TIMER_EVENT_MSTOP.patch | 30 - ...o-versioning-checks-if-built-with-ve.patch | 57 -- 0054-dlmisc-Remove-unused-label.patch | 28 - ...-five-more-cards-to-IEC958-blacklist.patch | 44 -- ...le-format-endianess-and-add-big-endi.patch | 166 ----- 0057-mixer-Fix-inclusion-of-config.h.patch | 42 -- ...-mixer-Fix-unused-parameter-warnings.patch | 40 -- ...ninitialized-err-in-snd_use_case_set.patch | 42 -- ...-assorted-tstamp_type-bugs-omissions.patch | 49 -- 0061-hwdep-add-OXFW-driver-support.patch | 50 -- ...ffer-overflow-in-snd_pcm_chmap_print.patch | 33 - ...l-enable-octal-and-hexadecimal-parse.patch | 39 -- 0064-autotools-fix-ucm-partial-build.patch | 50 -- ...onf-ucm-GoogleNyan-Add-configuration.patch | 148 ----- ...-ucm-add-binary-configure-file-parse.patch | 168 ----- ...stname-resolution-in-shm-plugins-and.patch | 323 ---------- alsa-lib-1.0.28.tar.bz2 | 3 - alsa-lib-1.0.29.tar.bz2 | 3 + alsa.changes | 73 +++ alsa.spec | 138 +--- 70 files changed, 79 insertions(+), 5013 deletions(-) delete mode 100644 0001-ucm-Document-PlaybackPCMIsDummy-and-CapturePCMIsDumm.patch delete mode 100644 0002-ICE1712-add-surround71-pcm-definition.patch delete mode 100644 0003-USB-Audio-Add-second-S-PDIF-device-on-Phiree-U2.patch delete mode 100644 0004-pcm-rate-fix-hw_ptr-exceed-the-boundary.patch delete mode 100644 0005-pcm-Provide-a-CLOCK_MONOTONIC_RAW-timestamp-type.patch delete mode 100644 0006-Add-timestamp-type-to-sw_params-internal-only.patch delete mode 100644 0007-pcm-Add-sw_params-API-functions-to-get-set-timestamp.patch delete mode 100644 0008-pcm-Implement-timestamp-type-setup-in-hw-plugin.patch delete mode 100644 0009-pcm-Implement-timestamp-type-handling-in-all-plugins.patch delete mode 100644 0010-test-audio_time-Set-timestamp-type-explicitly.patch delete mode 100644 0011-pcm-route-Use-get-put-labels-for-all-3-byte-formats.patch delete mode 100644 0012-pcm-Fill-sw_params-proto-field.patch delete mode 100644 0013-pcm-route-Use-get32-for-multi-source-route-calculati.patch delete mode 100644 0014-pcm-Drop-snd_pcm_linear_-get-put-32_index.patch delete mode 100644 0015-pcm-pcm_local.h-include-time.h-to-enable-CLOCK_MONOT.patch delete mode 100644 0016-pcm-Fix-DSD-formats-userland-usability.patch delete mode 100644 0017-Sync-include-sound-asound.h-with-3.17-rc1-kernel.patch delete mode 100644 0018-pcm-Add-missing-signed-and-endianess-definitions-for.patch delete mode 100644 0019-Sync-enum-snd_hwdep_iface_t-with-include-asound-asou.patch delete mode 100644 0020-pcm-2nd-round-of-pcm_misc-DSD-fixes.patch delete mode 100644 0021-doc-fix-cross-compiling-example.patch delete mode 100644 0022-pcm-fix-snd_pcm_mmap_hw_avail-near-the-boundary.patch delete mode 100644 0023-pcm-fix-return-value-of-snd_pcm_share_slave_avail.patch delete mode 100644 0024-pcm-add-new-32-bit-DSD-sample-format.patch delete mode 100644 0025-dmix-actually-rewind-when-running-or-being-drained.patch delete mode 100644 0026-pcm-express-the-rewind-size-limitation-logic-better.patch delete mode 100644 0027-pcm-handle-negative-values-from-snd_pcm_mmap_hw_avai.patch delete mode 100644 0028-pcm-rate-use-the-snd_pcm_mmap_hw_avail-function.patch delete mode 100644 0029-pcm-null-use-the-snd_pcm_mmap_avail-function.patch delete mode 100644 0030-rate-handle-negative-values-from-snd_pcm_mmap_playba.patch delete mode 100644 0031-dsnoop-rewindable-and-forwardable-logic-was-swapped.patch delete mode 100644 0033-pcm-file-don-t-recurse-in-the-rewindable-and-forward.patch delete mode 100644 0034-pcm-route-Fix-the-bad-condition-always-false.patch delete mode 100644 0035-pcm-rate-hw_avail-must-not-be-negative-before-starti.patch delete mode 100644 0036-hwdep-add-missing-declaration-for-snd_hwdep_poll_des.patch delete mode 100644 0037-mixer-fixed-double-free.patch delete mode 100644 0038-pcm_file-fixed-missing-free.patch delete mode 100644 0039-sbase-fixed-missing-free.patch delete mode 100644 0040-rawmidi-close-handle-h.patch delete mode 100644 0041-pcm_share-fixing-missing-mutex-unlock.patch delete mode 100644 0042-simple_abst-null-check-for-lib.patch delete mode 100644 0043-socket-missing-socket-close.patch delete mode 100644 0044-pcm_hooks-null-check-for-h.patch delete mode 100644 0045-conf-return-negative-value-in-case-of-error.patch delete mode 100644 0046-control-return-negative-value-in-case-of-error.patch delete mode 100644 0047-pcm-return-negative-value-in-case-of-error.patch delete mode 100644 0048-mixer-Fix-missing-hctl-handle-free-in-snd_mixer_atta.patch delete mode 100644 0049-conf-ucm-PAZ00-add-Toshiba-AC100-Dynabook-AZ-new-con.patch delete mode 100644 0050-USB-Audio-Add-Scarlett-2i4-USB-to-S-PDIF-blacklist.patch delete mode 100644 0051-snd_user_file-fix-memory-leak.patch delete mode 100644 0052-pcm-dmix-Don-t-ignore-SND_TIMER_EVENT_MSTOP.patch delete mode 100644 0053-snd_dlsym-only-do-versioning-checks-if-built-with-ve.patch delete mode 100644 0054-dlmisc-Remove-unused-label.patch delete mode 100644 0055-USB-audio-Add-five-more-cards-to-IEC958-blacklist.patch delete mode 100644 0056-pcm-Fix-DSD-sample-format-endianess-and-add-big-endi.patch delete mode 100644 0057-mixer-Fix-inclusion-of-config.h.patch delete mode 100644 0058-mixer-Fix-unused-parameter-warnings.patch delete mode 100644 0059-ucm-Fix-uninitialized-err-in-snd_use_case_set.patch delete mode 100644 0060-pcm-Fix-assorted-tstamp_type-bugs-omissions.patch delete mode 100644 0061-hwdep-add-OXFW-driver-support.patch delete mode 100644 0062-pcm-fix-buffer-overflow-in-snd_pcm_chmap_print.patch delete mode 100644 0063-control-enable-octal-and-hexadecimal-parse.patch delete mode 100644 0064-autotools-fix-ucm-partial-build.patch delete mode 100644 0065-conf-ucm-GoogleNyan-Add-configuration.patch delete mode 100644 0066-ucm-add-binary-configure-file-parse.patch delete mode 100644 0067-Remove-unused-hostname-resolution-in-shm-plugins-and.patch delete mode 100644 alsa-lib-1.0.28.tar.bz2 create mode 100644 alsa-lib-1.0.29.tar.bz2 diff --git a/0001-ucm-Document-PlaybackPCMIsDummy-and-CapturePCMIsDumm.patch b/0001-ucm-Document-PlaybackPCMIsDummy-and-CapturePCMIsDumm.patch deleted file mode 100644 index ff1dddb..0000000 --- a/0001-ucm-Document-PlaybackPCMIsDummy-and-CapturePCMIsDumm.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 7a748af4db17cb0b26d19e5f9939d277128ec94b Mon Sep 17 00:00:00 2001 -From: Tanu Kaskinen -Date: Thu, 26 Jun 2014 13:30:25 +0300 -Subject: [PATCH 01/14] ucm: Document PlaybackPCMIsDummy and CapturePCMIsDummy - values - -At least PulseAudio needs special handling for dummy devices. To allow -that to happen automatically, the UCM configuration should contain the -information about which PCMs are dummy. - -Signed-off-by: Tanu Kaskinen -Acked-by: Liam Girdwood -Signed-off-by: Takashi Iwai ---- - include/use-case.h | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/include/use-case.h b/include/use-case.h -index 4e13249133e6..f30168f86471 100644 ---- a/include/use-case.h -+++ b/include/use-case.h -@@ -258,7 +258,17 @@ int snd_use_case_get_list(snd_use_case_mgr_t *uc_mgr, - * Recommended names for values: - * TQ - Tone Quality - * PlaybackPCM - full PCM playback device name -+ * PlaybackPCMIsDummy - Valid values: "yes" and "no". If set to "yes", the -+ * PCM named by the PlaybackPCM value is a dummy device, -+ * meaning that opening it enables an audio path in the -+ * hardware, but writing to the PCM device has no -+ * effect. - * CapturePCM - full PCM capture device name -+ * CapturePCMIsDummy - Valid values: "yes" and "no". If set to "yes", the -+ * PCM named by the CapturePCM value is a dummy device, -+ * meaning that opening it enables an audio path in the -+ * hardware, but reading from the PCM device has no -+ * effect. - * PlaybackRate - playback device sample rate - * PlaybackChannels - playback device channel count - * PlaybackCTL - playback control device name --- -2.0.1 - diff --git a/0002-ICE1712-add-surround71-pcm-definition.patch b/0002-ICE1712-add-surround71-pcm-definition.patch deleted file mode 100644 index f9b0875..0000000 --- a/0002-ICE1712-add-surround71-pcm-definition.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 27cc710b5784cb3ab68cff2a9d9daf9fa479149e Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Tue, 1 Jul 2014 00:40:48 +0600 -Subject: [PATCH 02/14] ICE1712: add surround71 pcm definition - -The M-Audio Delta 1010 card has 7.1 analog output, but no ready-made pcm -definition to use it. - -Signed-off-by: Alexander E. Patrakov -Reported-and-tested-by: Matt Zagrabelny -Signed-off-by: Takashi Iwai ---- - src/conf/cards/ICE1712.conf | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) - -diff --git a/src/conf/cards/ICE1712.conf b/src/conf/cards/ICE1712.conf -index 398fa7ad5307..db62684e25f2 100644 ---- a/src/conf/cards/ICE1712.conf -+++ b/src/conf/cards/ICE1712.conf -@@ -78,6 +78,7 @@ ICE1712.pcm.surround40.0 { - - - -+ - - ICE1712.pcm.surround51.0 { - @args [ CARD ] -@@ -98,6 +99,27 @@ ICE1712.pcm.surround51.0 { - slave.channels 10 - } - -+ICE1712.pcm.surround71.0 { -+ @args [ CARD ] -+ @args.CARD { -+ type string -+ } -+ type route -+ ttable.0.0 1 -+ ttable.1.1 1 -+ ttable.2.2 1 -+ ttable.3.3 1 -+ ttable.4.4 1 -+ ttable.5.5 1 -+ ttable.6.6 1 -+ ttable.7.7 1 -+ slave.pcm { -+ type hw -+ card $CARD -+ } -+ slave.channels 10 -+} -+ - - - ICE1712.pcm.iec958.0 { --- -2.0.1 - diff --git a/0003-USB-Audio-Add-second-S-PDIF-device-on-Phiree-U2.patch b/0003-USB-Audio-Add-second-S-PDIF-device-on-Phiree-U2.patch deleted file mode 100644 index 26a9de8..0000000 --- a/0003-USB-Audio-Add-second-S-PDIF-device-on-Phiree-U2.patch +++ /dev/null @@ -1,84 +0,0 @@ -From ea865bba4615d906144ae5d4f72a4aad2baffe1f Mon Sep 17 00:00:00 2001 -From: Anssi Hannula -Date: Tue, 8 Jul 2014 11:19:20 +0300 -Subject: [PATCH 03/14] USB-Audio: Add second S/PDIF device on Phiree U2 - -Phiree U2 has an unusual configuration. It only has S/PDIF output, but -there are still two devices presented: -- device 0: PCM audio, subject to volume control -- device 1: non-PCM data (passthrough), not subject to volume control - -It looks like the AES bits are set according to the selected device, -since outputting PCM data via device 1 will not work (silence). - -Currently only the device 0 is shown via the "iec958" alias, and the -second device is not accessible via hinted aliases. - -Simply provide access to both of these devices via the "iec958" alias. - -Reported-by: touc @ XBMC forum -Signed-off-by: Anssi Hannula -Signed-off-by: Takashi Iwai ---- - src/conf/cards/USB-Audio.conf | 40 ++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 40 insertions(+) - -diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf -index ce3ae019f7f6..77a48b9f5562 100644 ---- a/src/conf/cards/USB-Audio.conf -+++ b/src/conf/cards/USB-Audio.conf -@@ -52,6 +52,11 @@ USB-Audio.pcm.iec958_device { - "USB Device 0x46d:0x992" 999 - } - -+# Second iec958 device number, if any. -+USB-Audio.pcm.iec958_2_device { -+ "PHIREE U2" 1 # 0 = PCM S/PDIF, 1 = non-PCM S/PDIF -+} -+ - - # If a device requires non-standard definitions for front, surround40, - # surround51, surround71 or iec958, they can be defined here. -@@ -422,4 +427,39 @@ USB-Audio.pcm.iec958.0 { - } - } - -+USB-Audio.pcm.iec958.1 { -+ @args [ CARD AES0 AES1 AES2 AES3 ] -+ @args.CARD { type string } -+ @args.AES0 { type integer } -+ @args.AES1 { type integer } -+ @args.AES2 { type integer } -+ @args.AES3 { type integer } -+ @func refer -+ name { -+ @func concat -+ strings [ -+ "cards.USB-Audio." -+ { @func card_name card $CARD } -+ ".pcm.iec958_2:CARD=" $CARD -+ ",AES0=" $AES0 ",AES1=" $AES1 ",AES2=" $AES2 ",AES3=" $AES3 -+ ] -+ } -+ default { -+ # FIXME: we cannot set the AES parameters -+ type hw -+ card $CARD -+ device { -+ @func refer -+ name { -+ @func concat -+ strings [ -+ "cards.USB-Audio.pcm.iec958_2_device." -+ { @func card_name card $CARD } -+ ] -+ } -+ default 999 -+ } -+ } -+} -+ - # vim: ft=alsaconf --- -2.0.1 - diff --git a/0004-pcm-rate-fix-hw_ptr-exceed-the-boundary.patch b/0004-pcm-rate-fix-hw_ptr-exceed-the-boundary.patch deleted file mode 100644 index 45f1d5c..0000000 --- a/0004-pcm-rate-fix-hw_ptr-exceed-the-boundary.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 035f196bcdc1e9903ed52ad1859dc23d3aa74e72 Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Mon, 14 Jul 2014 16:55:48 +0800 -Subject: [PATCH 04/14] pcm: rate: fix hw_ptr exceed the boundary - -For long time test case, the hw_ptr will exceed the boundary, then cause -the avail size wrong. - -Signed-off-by: Shengjiu Wang -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_rate.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c -index 7f667d4c6a52..2563d824ddb8 100644 ---- a/src/pcm/pcm_rate.c -+++ b/src/pcm/pcm_rate.c -@@ -574,6 +574,8 @@ static inline void snd_pcm_rate_sync_hwptr(snd_pcm_t *pcm) - rate->hw_ptr = - (slave_hw_ptr / rate->gen.slave->period_size) * pcm->period_size + - rate->ops.input_frames(rate->obj, slave_hw_ptr % rate->gen.slave->period_size); -+ -+ rate->hw_ptr %= pcm->boundary; - } - - static int snd_pcm_rate_hwsync(snd_pcm_t *pcm) --- -2.0.1 - diff --git a/0005-pcm-Provide-a-CLOCK_MONOTONIC_RAW-timestamp-type.patch b/0005-pcm-Provide-a-CLOCK_MONOTONIC_RAW-timestamp-type.patch deleted file mode 100644 index 90bf438..0000000 --- a/0005-pcm-Provide-a-CLOCK_MONOTONIC_RAW-timestamp-type.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 85e4704151677b8fcc5ccfc396071828e9ec1b8e Mon Sep 17 00:00:00 2001 -From: Mark Brown -Date: Tue, 8 Jul 2014 16:52:32 +0200 -Subject: [PATCH 05/14] pcm: Provide a CLOCK_MONOTONIC_RAW timestamp type - -For applications which need to synchronise with external timebases such -as broadcast TV applications the kernel monotonic time is not optimal as -it includes adjustments from NTP and so may still include discontinuities -due to that. A raw monotonic time which does not include any adjustments -is available in the kernel from getrawmonotonic() so provide userspace with -a new timestamp type SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW which provides -timestamps based on this as an option. - -Reported-by: Daniel Thompson -Signed-off-by: Mark Brown -Signed-off-by: Takashi Iwai ---- - include/sound/asound.h | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/include/sound/asound.h b/include/sound/asound.h -index 1774a5c3ef10..9061cdd5b69f 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -457,7 +457,8 @@ struct snd_xfern { - enum { - SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0, /* gettimeofday equivalent */ - SNDRV_PCM_TSTAMP_TYPE_MONOTONIC, /* posix_clock_monotonic equivalent */ -- SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC, -+ SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW, /* monotonic_raw (no NTP) */ -+ SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW, - }; - - /* channel positions */ --- -2.0.1 - diff --git a/0006-Add-timestamp-type-to-sw_params-internal-only.patch b/0006-Add-timestamp-type-to-sw_params-internal-only.patch deleted file mode 100644 index 06a5bfb..0000000 --- a/0006-Add-timestamp-type-to-sw_params-internal-only.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 5250a8e212fd927735cfc27612b060c31dc3a230 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 10 Jul 2014 14:22:33 +0200 -Subject: [PATCH 06/14] Add timestamp type to sw_params (internal only) - -This patch is just the udpate of sound/asound.h taken from the kernel -commit. The API changes and PCM structure changes will follow after -this. - -Signed-off-by: Takashi Iwai ---- - include/sound/asound.h | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/include/sound/asound.h b/include/sound/asound.h -index 9061cdd5b69f..552f41bd1ca9 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -136,7 +136,7 @@ struct snd_hwdep_dsp_image { - * * - *****************************************************************************/ - --#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 11) -+#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 12) - - typedef unsigned long snd_pcm_uframes_t; - typedef signed long snd_pcm_sframes_t; -@@ -386,7 +386,9 @@ struct snd_pcm_sw_params { - snd_pcm_uframes_t silence_threshold; /* min distance from noise for silence filling */ - snd_pcm_uframes_t silence_size; /* silence block size */ - snd_pcm_uframes_t boundary; /* pointers wrap point */ -- unsigned char reserved[64]; /* reserved for future */ -+ unsigned int tstamp_type; /* timestamp type */ -+ int pads; /* alignment, reserved */ -+ unsigned char reserved[56]; /* reserved for future */ - }; - - struct snd_pcm_channel_info { --- -2.0.1 - diff --git a/0007-pcm-Add-sw_params-API-functions-to-get-set-timestamp.patch b/0007-pcm-Add-sw_params-API-functions-to-get-set-timestamp.patch deleted file mode 100644 index 05d2641..0000000 --- a/0007-pcm-Add-sw_params-API-functions-to-get-set-timestamp.patch +++ /dev/null @@ -1,181 +0,0 @@ -From 0d393c29a272b6fc97e9fca3252fb1c58f86e75b Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 10 Jul 2014 14:26:37 +0200 -Subject: [PATCH 07/14] pcm: Add sw_params API functions to get/set timestamp - type - -For obtaining / changing the timestamp type, add the corresponding -sw_params accessor API functions together with the public definitions -of timestamp types. - -This patch only adds the functions and defines but doesn't bring the -functional changes yet. - -Signed-off-by: Takashi Iwai ---- - include/pcm.h | 9 +++++++++ - src/pcm/pcm.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/pcm/pcm_local.h | 1 + - src/pcm/pcm_params.c | 1 + - 4 files changed, 64 insertions(+) - -diff --git a/include/pcm.h b/include/pcm.h -index 95b8aed6de2a..11e9f0dfba13 100644 ---- a/include/pcm.h -+++ b/include/pcm.h -@@ -317,6 +317,13 @@ typedef enum _snd_pcm_tstamp { - SND_PCM_TSTAMP_LAST = SND_PCM_TSTAMP_ENABLE - } snd_pcm_tstamp_t; - -+typedef enum _snd_pcm_tstamp_type { -+ SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0, /** gettimeofday equivalent */ -+ SND_PCM_TSTAMP_TYPE_MONOTONIC, /** posix_clock_monotonic equivalent */ -+ SND_PCM_TSTAMP_TYPE_MONOTONIC_RAW, /** monotonic_raw (no NTP) */ -+ SND_PCM_TSTAMP_TYPE_LAST = SND_PCM_TSTAMP_TYPE_MONOTONIC_RAW, -+} snd_pcm_tstamp_type_t; -+ - /** Unsigned frames quantity */ - typedef unsigned long snd_pcm_uframes_t; - /** Signed frames quantity */ -@@ -844,6 +851,8 @@ int snd_pcm_sw_params_get_boundary(const snd_pcm_sw_params_t *params, snd_pcm_uf - - int snd_pcm_sw_params_set_tstamp_mode(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_tstamp_t val); - int snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *params, snd_pcm_tstamp_t *val); -+int snd_pcm_sw_params_set_tstamp_type(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_tstamp_type_t val); -+int snd_pcm_sw_params_get_tstamp_type(const snd_pcm_sw_params_t *params, snd_pcm_tstamp_type_t *val); - int snd_pcm_sw_params_set_avail_min(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_uframes_t val); - int snd_pcm_sw_params_get_avail_min(const snd_pcm_sw_params_t *params, snd_pcm_uframes_t *val); - int snd_pcm_sw_params_set_period_event(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, int val); -diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c -index 7e46014627c2..89844430bf35 100644 ---- a/src/pcm/pcm.c -+++ b/src/pcm/pcm.c -@@ -1483,6 +1483,7 @@ int snd_pcm_poll_descriptors_revents(snd_pcm_t *pcm, struct pollfd *pfds, unsign - #define XRUN(v) [SND_PCM_XRUN_##v] = #v - #define SILENCE(v) [SND_PCM_SILENCE_##v] = #v - #define TSTAMP(v) [SND_PCM_TSTAMP_##v] = #v -+#define TSTAMP_TYPE(v) [SND_PCM_TSTAMP_TYPE_##v] = #v - #define ACCESS(v) [SND_PCM_ACCESS_##v] = #v - #define START(v) [SND_PCM_START_##v] = #v - #define HW_PARAM(v) [SND_PCM_HW_PARAM_##v] = #v -@@ -1680,6 +1681,12 @@ static const char *const snd_pcm_tstamp_mode_names[] = { - TSTAMP(NONE), - TSTAMP(ENABLE), - }; -+ -+static const char *const snd_pcm_tstamp_type_names[] = { -+ TSTAMP_TYPE(GETTIMEOFDAY), -+ TSTAMP_TYPE(MONOTONIC), -+ TSTAMP_TYPE(MONOTONIC_RAW), -+}; - #endif - - /** -@@ -1826,6 +1833,18 @@ const char *snd_pcm_tstamp_mode_name(snd_pcm_tstamp_t mode) - } - - /** -+ * \brief get name of PCM tstamp type setting -+ * \param mode PCM tstamp type -+ * \return ascii name of PCM tstamp type setting -+ */ -+const char *snd_pcm_tstamp_type_name(snd_pcm_tstamp_t type) -+{ -+ if (type > SND_PCM_TSTAMP_TYPE_LAST) -+ return NULL; -+ return snd_pcm_tstamp_type_names[type]; -+} -+ -+/** - * \brief get name of PCM state - * \param state PCM state - * \return ascii name of PCM state -@@ -1899,6 +1918,7 @@ int snd_pcm_dump_sw_setup(snd_pcm_t *pcm, snd_output_t *out) - return -EIO; - } - snd_output_printf(out, " tstamp_mode : %s\n", snd_pcm_tstamp_mode_name(pcm->tstamp_mode)); -+ snd_output_printf(out, " tstamp_type : %s\n", snd_pcm_tstamp_type_name(pcm->tstamp_mode)); - snd_output_printf(out, " period_step : %d\n", pcm->period_step); - snd_output_printf(out, " avail_min : %ld\n", pcm->avail_min); - snd_output_printf(out, " period_event : %i\n", pcm->period_event); -@@ -5591,6 +5611,7 @@ int snd_pcm_sw_params_current(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) - return -EIO; - } - params->tstamp_mode = pcm->tstamp_mode; -+ params->tstamp_type = pcm->tstamp_type; - params->period_step = pcm->period_step; - params->sleep_min = 0; - params->avail_min = pcm->avail_min; -@@ -5613,6 +5634,7 @@ int snd_pcm_sw_params_current(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) - int snd_pcm_sw_params_dump(snd_pcm_sw_params_t *params, snd_output_t *out) - { - snd_output_printf(out, "tstamp_mode: %s\n", snd_pcm_tstamp_mode_name(params->tstamp_mode)); -+ snd_output_printf(out, "tstamp_type: %s\n", snd_pcm_tstamp_type_name(params->tstamp_type)); - snd_output_printf(out, "period_step: %u\n", params->period_step); - snd_output_printf(out, "avail_min: %lu\n", params->avail_min); - snd_output_printf(out, "start_threshold: %ld\n", params->start_threshold); -@@ -5811,6 +5833,37 @@ int snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *params, snd_pcm - } - - /** -+ * \brief Set timestamp type inside a software configuration container -+ * \param pcm PCM handle -+ * \param params Software configuration container -+ * \param val Timestamp type -+ * \return 0 otherwise a negative error code -+ */ -+int snd_pcm_sw_params_set_tstamp_type(snd_pcm_t *pcm, snd_pcm_sw_params_t *params, snd_pcm_tstamp_type_t val) -+{ -+ assert(pcm && params); -+ if (CHECK_SANITY(val > SND_PCM_TSTAMP_TYPE_LAST)) { -+ SNDMSG("invalid tstamp_type value %d", val); -+ return -EINVAL; -+ } -+ params->tstamp_type = val; -+ return 0; -+} -+ -+/** -+ * \brief Get timestamp type from a software configuration container -+ * \param params Software configuration container -+ * \param val Returned timestamp type -+ * \return 0 otherwise a negative error code -+ */ -+int snd_pcm_sw_params_get_tstamp_type(const snd_pcm_sw_params_t *params, snd_pcm_tstamp_type_t *val) -+{ -+ assert(params && val); -+ *val = params->tstamp_type; -+ return 0; -+} -+ -+/** - * \brief (DEPRECATED) Set minimum number of ticks to sleep inside a software configuration container - * \param pcm PCM handle - * \param params Software configuration container -diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h -index 8a6c7431cc40..3ed7e1a88792 100644 ---- a/src/pcm/pcm_local.h -+++ b/src/pcm/pcm_local.h -@@ -202,6 +202,7 @@ struct _snd_pcm { - unsigned int period_time; /* period duration */ - snd_interval_t periods; - snd_pcm_tstamp_t tstamp_mode; /* timestamp mode */ -+ snd_pcm_tstamp_type_t tstamp_type; /* timestamp type */ - unsigned int period_step; - snd_pcm_uframes_t avail_min; /* min avail frames for wakeup */ - int period_event; -diff --git a/src/pcm/pcm_params.c b/src/pcm/pcm_params.c -index 0b66e8cbbe64..4adbefae0530 100644 ---- a/src/pcm/pcm_params.c -+++ b/src/pcm/pcm_params.c -@@ -2258,6 +2258,7 @@ static int snd_pcm_sw_params_default(snd_pcm_t *pcm, snd_pcm_sw_params_t *params - assert(pcm && params); - assert(pcm->setup); - params->tstamp_mode = SND_PCM_TSTAMP_NONE; -+ params->tstamp_type = pcm->tstamp_type; - params->period_step = 1; - params->sleep_min = 0; - params->avail_min = pcm->period_size; --- -2.0.1 - diff --git a/0008-pcm-Implement-timestamp-type-setup-in-hw-plugin.patch b/0008-pcm-Implement-timestamp-type-setup-in-hw-plugin.patch deleted file mode 100644 index 8b31c21..0000000 --- a/0008-pcm-Implement-timestamp-type-setup-in-hw-plugin.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 9b716075de4f2f7f15e428ee7efaa8960ef45b9c Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 10 Jul 2014 14:32:50 +0200 -Subject: [PATCH 08/14] pcm: Implement timestamp type setup in hw plugin - -This patch implements the support for sw_params timestamp type in PCM -hw layer. As gettimestamp() is still unchanged, the resultant -timstamps may be still with CLOCK_MONOTONIC even if you pass monotonic -raw type. More fixes will follow. - -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_hw.c | 37 ++++++++++++++++++++++++++++++++----- - 1 file changed, 32 insertions(+), 5 deletions(-) - -diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c -index ed8319728130..bafa8debeb0b 100644 ---- a/src/pcm/pcm_hw.c -+++ b/src/pcm/pcm_hw.c -@@ -304,7 +304,8 @@ static int snd_pcm_hw_hw_refine(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) - - if (params->info != ~0U) { - params->info &= ~0xf0000000; -- params->info |= (pcm->monotonic ? SND_PCM_INFO_MONOTONIC : 0); -+ if (pcm->tstamp_type != SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY) -+ params->info |= SND_PCM_INFO_MONOTONIC; - } - - return 0; -@@ -328,7 +329,8 @@ static int snd_pcm_hw_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params) - return err; - } - params->info &= ~0xf0000000; -- params->info |= (pcm->monotonic ? SND_PCM_INFO_MONOTONIC : 0); -+ if (pcm->tstamp_type != SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY) -+ params->info |= SND_PCM_INFO_MONOTONIC; - err = sync_ptr(hw, 0); - if (err < 0) - return err; -@@ -435,6 +437,7 @@ static int snd_pcm_hw_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t * params) - int old_period_event = sw_get_period_event(params); - sw_set_period_event(params, 0); - if ((snd_pcm_tstamp_t) params->tstamp_mode == pcm->tstamp_mode && -+ (snd_pcm_tstamp_type_t) params->tstamp_type == pcm->tstamp_type && - params->period_step == pcm->period_step && - params->start_threshold == pcm->start_threshold && - params->stop_threshold == pcm->stop_threshold && -@@ -444,11 +447,33 @@ static int snd_pcm_hw_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t * params) - hw->mmap_control->avail_min = params->avail_min; - return sync_ptr(hw, 0); - } -+ if (params->tstamp_type == SND_PCM_TSTAMP_TYPE_MONOTONIC_RAW && -+ hw->version < SNDRV_PROTOCOL_VERSION(2, 0, 12)) { -+ SYSMSG("Kernel doesn't support SND_PCM_TSTAMP_TYPE_MONOTONIC_RAW"); -+ return -EINVAL; -+ } -+ if (params->tstamp_type == SND_PCM_TSTAMP_TYPE_MONOTONIC && -+ hw->version < SNDRV_PROTOCOL_VERSION(2, 0, 5)) { -+ SYSMSG("Kernel doesn't support SND_PCM_TSTAMP_TYPE_MONOTONIC"); -+ return -EINVAL; -+ } - if (ioctl(fd, SNDRV_PCM_IOCTL_SW_PARAMS, params) < 0) { - err = -errno; - SYSMSG("SNDRV_PCM_IOCTL_SW_PARAMS failed (%i)", err); - return err; - } -+ if ((snd_pcm_tstamp_type_t) params->tstamp_type != pcm->tstamp_type) { -+ if (hw->version < SNDRV_PROTOCOL_VERSION(2, 0, 12)) { -+ int on = (snd_pcm_tstamp_type_t) params->tstamp_type == -+ SND_PCM_TSTAMP_TYPE_MONOTONIC; -+ if (ioctl(fd, SNDRV_PCM_IOCTL_TSTAMP, &on) < 0) { -+ err = -errno; -+ SNDMSG("TSTAMP failed\n"); -+ return err; -+ } -+ } -+ pcm->tstamp_type = params->tstamp_type; -+ } - sw_set_period_event(params, old_period_event); - hw->mmap_control->avail_min = params->avail_min; - if (hw->period_event != old_period_event) { -@@ -1381,7 +1406,8 @@ int snd_pcm_hw_open_fd(snd_pcm_t **pcmp, const char *name, - int fd, int mmap_emulation ATTRIBUTE_UNUSED, - int sync_ptr_ioctl) - { -- int ver, mode, monotonic = 0; -+ int ver, mode; -+ snd_pcm_tstamp_type_t tstamp_type = SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY; - long fmode; - snd_pcm_t *pcm = NULL; - snd_pcm_hw_t *hw = NULL; -@@ -1429,7 +1455,7 @@ int snd_pcm_hw_open_fd(snd_pcm_t **pcmp, const char *name, - SNDMSG("TTSTAMP failed\n"); - return ret; - } -- monotonic = 1; -+ tstamp_type = SND_PCM_TSTAMP_TYPE_MONOTONIC; - } - } else - #endif -@@ -1471,7 +1497,8 @@ int snd_pcm_hw_open_fd(snd_pcm_t **pcmp, const char *name, - pcm->private_data = hw; - pcm->poll_fd = fd; - pcm->poll_events = info.stream == SND_PCM_STREAM_PLAYBACK ? POLLOUT : POLLIN; -- pcm->monotonic = monotonic; -+ pcm->tstamp_type = tstamp_type; -+ pcm->monotonic = tstamp_type != SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY; - - ret = snd_pcm_hw_mmap_status(pcm); - if (ret < 0) { --- -2.0.1 - diff --git a/0009-pcm-Implement-timestamp-type-handling-in-all-plugins.patch b/0009-pcm-Implement-timestamp-type-handling-in-all-plugins.patch deleted file mode 100644 index a3112ee..0000000 --- a/0009-pcm-Implement-timestamp-type-handling-in-all-plugins.patch +++ /dev/null @@ -1,602 +0,0 @@ -From 65ff6fdafb705b5e2e6d4b9a94a80e5de89f5de1 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 10 Jul 2014 14:37:49 +0200 -Subject: [PATCH 09/14] pcm: Implement timestamp type handling in all plugins - -Now all PCM plugins do support the proper timestamp type or pass it -over slaves. The internal monotonic flag is dropped and replaced with -tstamp_type in all places. - -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_adpcm.c | 2 +- - src/pcm/pcm_alaw.c | 2 +- - src/pcm/pcm_copy.c | 2 +- - src/pcm/pcm_direct.c | 4 ++-- - src/pcm/pcm_direct.h | 2 +- - src/pcm/pcm_dmix.c | 8 ++++---- - src/pcm/pcm_dshare.c | 8 ++++---- - src/pcm/pcm_dsnoop.c | 4 ++-- - src/pcm/pcm_file.c | 6 +++--- - src/pcm/pcm_generic.c | 2 +- - src/pcm/pcm_hooks.c | 2 +- - src/pcm/pcm_hw.c | 1 - - src/pcm/pcm_iec958.c | 2 +- - src/pcm/pcm_ioplug.c | 9 ++++++--- - src/pcm/pcm_ladspa.c | 2 +- - src/pcm/pcm_lfloat.c | 2 +- - src/pcm/pcm_linear.c | 2 +- - src/pcm/pcm_local.h | 45 +++++++++++++++++++++++++++++---------------- - src/pcm/pcm_meter.c | 2 +- - src/pcm/pcm_mmap_emul.c | 2 +- - src/pcm/pcm_mulaw.c | 2 +- - src/pcm/pcm_multi.c | 2 +- - src/pcm/pcm_null.c | 2 +- - src/pcm/pcm_plug.c | 2 +- - src/pcm/pcm_rate.c | 4 ++-- - src/pcm/pcm_route.c | 2 +- - src/pcm/pcm_share.c | 6 +++--- - src/pcm/pcm_softvol.c | 2 +- - 28 files changed, 73 insertions(+), 58 deletions(-) - -diff --git a/src/pcm/pcm_adpcm.c b/src/pcm/pcm_adpcm.c -index 6f0e7c4cc631..1a83c5a0e21c 100644 ---- a/src/pcm/pcm_adpcm.c -+++ b/src/pcm/pcm_adpcm.c -@@ -579,7 +579,7 @@ int snd_pcm_adpcm_open(snd_pcm_t **pcmp, const char *name, snd_pcm_format_t sfor - pcm->private_data = adpcm; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &adpcm->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &adpcm->plug.appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_alaw.c b/src/pcm/pcm_alaw.c -index 1b1bab83c944..db759e3effa4 100644 ---- a/src/pcm/pcm_alaw.c -+++ b/src/pcm/pcm_alaw.c -@@ -453,7 +453,7 @@ int snd_pcm_alaw_open(snd_pcm_t **pcmp, const char *name, snd_pcm_format_t sform - pcm->private_data = alaw; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &alaw->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &alaw->plug.appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_copy.c b/src/pcm/pcm_copy.c -index 56a1f6bcc912..66d3a4719856 100644 ---- a/src/pcm/pcm_copy.c -+++ b/src/pcm/pcm_copy.c -@@ -209,7 +209,7 @@ int snd_pcm_copy_open(snd_pcm_t **pcmp, const char *name, snd_pcm_t *slave, int - pcm->private_data = copy; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, ©->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, ©->plug.appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c -index 5416cf71674c..8e37bcba5e19 100644 ---- a/src/pcm/pcm_direct.c -+++ b/src/pcm/pcm_direct.c -@@ -840,6 +840,7 @@ static void save_slave_setting(snd_pcm_direct_t *dmix, snd_pcm_t *spcm) - COPY_SLAVE(period_time); - COPY_SLAVE(periods); - COPY_SLAVE(tstamp_mode); -+ COPY_SLAVE(tstamp_type); - COPY_SLAVE(period_step); - COPY_SLAVE(avail_min); - COPY_SLAVE(start_threshold); -@@ -857,7 +858,6 @@ static void save_slave_setting(snd_pcm_direct_t *dmix, snd_pcm_t *spcm) - COPY_SLAVE(buffer_time); - COPY_SLAVE(sample_bits); - COPY_SLAVE(frame_bits); -- COPY_SLAVE(monotonic); - } - - #undef COPY_SLAVE -@@ -1204,6 +1204,7 @@ static void copy_slave_setting(snd_pcm_direct_t *dmix, snd_pcm_t *spcm) - COPY_SLAVE(period_time); - COPY_SLAVE(periods); - COPY_SLAVE(tstamp_mode); -+ COPY_SLAVE(tstamp_type); - COPY_SLAVE(period_step); - COPY_SLAVE(avail_min); - COPY_SLAVE(start_threshold); -@@ -1221,7 +1222,6 @@ static void copy_slave_setting(snd_pcm_direct_t *dmix, snd_pcm_t *spcm) - COPY_SLAVE(buffer_time); - COPY_SLAVE(sample_bits); - COPY_SLAVE(frame_bits); -- COPY_SLAVE(monotonic); - - spcm->info &= ~SND_PCM_INFO_PAUSE; - spcm->boundary = recalc_boundary_size(dmix->shmptr->s.boundary, spcm->buffer_size); -diff --git a/src/pcm/pcm_direct.h b/src/pcm/pcm_direct.h -index 5ae39c0e4237..9b1ddbcf424a 100644 ---- a/src/pcm/pcm_direct.h -+++ b/src/pcm/pcm_direct.h -@@ -85,8 +85,8 @@ typedef struct { - unsigned int period_size; - unsigned int period_time; - snd_interval_t periods; -- unsigned int monotonic; - snd_pcm_tstamp_t tstamp_mode; -+ snd_pcm_tstamp_type_t tstamp_type; - unsigned int period_step; - unsigned int sleep_min; /* not used */ - unsigned int avail_min; -diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c -index 4aa6d4eab4a2..7c535093ea0f 100644 ---- a/src/pcm/pcm_dmix.c -+++ b/src/pcm/pcm_dmix.c -@@ -428,7 +428,7 @@ static int snd_pcm_dmix_sync_ptr(snd_pcm_t *pcm) - dmix->avail_max = avail; - if (avail >= pcm->stop_threshold) { - snd_timer_stop(dmix->timer); -- gettimestamp(&dmix->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&dmix->trigger_tstamp, pcm->tstamp_type); - if (dmix->state == SND_PCM_STATE_RUNNING) { - dmix->state = SND_PCM_STATE_XRUN; - return -EPIPE; -@@ -477,7 +477,7 @@ static int snd_pcm_dmix_status(snd_pcm_t *pcm, snd_pcm_status_t * status) - memset(status, 0, sizeof(*status)); - status->state = snd_pcm_dmix_state(pcm); - status->trigger_tstamp = dmix->trigger_tstamp; -- gettimestamp(&status->tstamp, pcm->monotonic); -+ gettimestamp(&status->tstamp, pcm->tstamp_type); - status->avail = snd_pcm_mmap_playback_avail(pcm); - status->avail_max = status->avail > dmix->avail_max ? status->avail : dmix->avail_max; - dmix->avail_max = 0; -@@ -596,7 +596,7 @@ static int snd_pcm_dmix_start(snd_pcm_t *pcm) - return err; - snd_pcm_dmix_sync_area(pcm); - } -- gettimestamp(&dmix->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&dmix->trigger_tstamp, pcm->tstamp_type); - return 0; - } - -@@ -1104,7 +1104,7 @@ int snd_pcm_dmix_open(snd_pcm_t **pcmp, const char *name, - - pcm->poll_fd = dmix->poll_fd; - pcm->poll_events = POLLIN; /* it's different than other plugins */ -- pcm->monotonic = spcm->monotonic; -+ pcm->tstamp_type = spcm->tstamp_type; - pcm->mmap_rw = 1; - snd_pcm_set_hw_ptr(pcm, &dmix->hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &dmix->appl_ptr, -1, 0); -diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c -index f2d1103a6bfb..b985172825e7 100644 ---- a/src/pcm/pcm_dshare.c -+++ b/src/pcm/pcm_dshare.c -@@ -195,7 +195,7 @@ static int snd_pcm_dshare_sync_ptr(snd_pcm_t *pcm) - dshare->avail_max = avail; - if (avail >= pcm->stop_threshold) { - snd_timer_stop(dshare->timer); -- gettimestamp(&dshare->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&dshare->trigger_tstamp, pcm->tstamp_type); - if (dshare->state == SND_PCM_STATE_RUNNING) { - dshare->state = SND_PCM_STATE_XRUN; - return -EPIPE; -@@ -226,7 +226,7 @@ static int snd_pcm_dshare_status(snd_pcm_t *pcm, snd_pcm_status_t * status) - memset(status, 0, sizeof(*status)); - status->state = snd_pcm_state(dshare->spcm); - status->trigger_tstamp = dshare->trigger_tstamp; -- gettimestamp(&status->tstamp, pcm->monotonic); -+ gettimestamp(&status->tstamp, pcm->tstamp_type); - status->avail = snd_pcm_mmap_playback_avail(pcm); - status->avail_max = status->avail > dshare->avail_max ? status->avail : dshare->avail_max; - dshare->avail_max = 0; -@@ -346,7 +346,7 @@ static int snd_pcm_dshare_start(snd_pcm_t *pcm) - return err; - snd_pcm_dshare_sync_area(pcm); - } -- gettimestamp(&dshare->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&dshare->trigger_tstamp, pcm->tstamp_type); - return 0; - } - -@@ -792,7 +792,7 @@ int snd_pcm_dshare_open(snd_pcm_t **pcmp, const char *name, - - pcm->poll_fd = dshare->poll_fd; - pcm->poll_events = POLLIN; /* it's different than other plugins */ -- pcm->monotonic = spcm->monotonic; -+ pcm->tstamp_type = spcm->tstamp_type; - pcm->mmap_rw = 1; - snd_pcm_set_hw_ptr(pcm, &dshare->hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &dshare->appl_ptr, -1, 0); -diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c -index 76379140c133..0f9c9df481bc 100644 ---- a/src/pcm/pcm_dsnoop.c -+++ b/src/pcm/pcm_dsnoop.c -@@ -159,7 +159,7 @@ static int snd_pcm_dsnoop_sync_ptr(snd_pcm_t *pcm) - if (pcm->stop_threshold >= pcm->boundary) /* don't care */ - return 0; - if ((avail = snd_pcm_mmap_capture_hw_avail(pcm)) >= pcm->stop_threshold) { -- gettimestamp(&dsnoop->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&dsnoop->trigger_tstamp, pcm->tstamp_type); - dsnoop->state = SND_PCM_STATE_XRUN; - dsnoop->avail_max = avail; - return -EPIPE; -@@ -690,7 +690,7 @@ int snd_pcm_dsnoop_open(snd_pcm_t **pcmp, const char *name, - - pcm->poll_fd = dsnoop->poll_fd; - pcm->poll_events = POLLIN; /* it's different than other plugins */ -- pcm->monotonic = spcm->monotonic; -+ pcm->tstamp_type = spcm->tstamp_type; - pcm->mmap_rw = 1; - snd_pcm_set_hw_ptr(pcm, &dsnoop->hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &dsnoop->appl_ptr, -1, 0); -diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c -index b139f7f24dc3..a0b8bf41bf5b 100644 ---- a/src/pcm/pcm_file.c -+++ b/src/pcm/pcm_file.c -@@ -781,10 +781,10 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, const char *name, - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; - pcm->mmap_shadow = 1; -+ pcm->tstamp_type = SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY; - #if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) -- pcm->monotonic = clock_gettime(CLOCK_MONOTONIC, ×pec) == 0; --#else -- pcm->monotonic = 0; -+ if (clock_gettime(CLOCK_MONOTONIC, ×pec) == 0) -+ pcm->tstamp_type = SND_PCM_TSTAMP_TYPE_MONOTONIC; - #endif - pcm->stream = stream; - snd_pcm_link_hw_ptr(pcm, slave); -diff --git a/src/pcm/pcm_generic.c b/src/pcm/pcm_generic.c -index f068ee2585bc..9b605911f868 100644 ---- a/src/pcm/pcm_generic.c -+++ b/src/pcm/pcm_generic.c -@@ -294,7 +294,7 @@ int snd_pcm_generic_real_htimestamp(snd_pcm_t *pcm, snd_pcm_uframes_t *avail, - if (ok && (snd_pcm_uframes_t)avail1 == *avail) - break; - *avail = avail1; -- gettimestamp(tstamp, pcm->monotonic); -+ gettimestamp(tstamp, pcm->tstamp_type); - ok = 1; - } - return 0; -diff --git a/src/pcm/pcm_hooks.c b/src/pcm/pcm_hooks.c -index f83728245ecd..0b93c641daaa 100644 ---- a/src/pcm/pcm_hooks.c -+++ b/src/pcm/pcm_hooks.c -@@ -240,7 +240,7 @@ int snd_pcm_hooks_open(snd_pcm_t **pcmp, const char *name, snd_pcm_t *slave, int - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; - pcm->mmap_shadow = 1; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_link_hw_ptr(pcm, slave); - snd_pcm_link_appl_ptr(pcm, slave); - *pcmp = pcm; -diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c -index bafa8debeb0b..74cff672a0c1 100644 ---- a/src/pcm/pcm_hw.c -+++ b/src/pcm/pcm_hw.c -@@ -1498,7 +1498,6 @@ int snd_pcm_hw_open_fd(snd_pcm_t **pcmp, const char *name, - pcm->poll_fd = fd; - pcm->poll_events = info.stream == SND_PCM_STREAM_PLAYBACK ? POLLOUT : POLLIN; - pcm->tstamp_type = tstamp_type; -- pcm->monotonic = tstamp_type != SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY; - - ret = snd_pcm_hw_mmap_status(pcm); - if (ret < 0) { -diff --git a/src/pcm/pcm_iec958.c b/src/pcm/pcm_iec958.c -index 0c61fc17995b..38c4ce7e2421 100644 ---- a/src/pcm/pcm_iec958.c -+++ b/src/pcm/pcm_iec958.c -@@ -534,7 +534,7 @@ int snd_pcm_iec958_open(snd_pcm_t **pcmp, const char *name, snd_pcm_format_t sfo - pcm->private_data = iec; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &iec->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &iec->plug.appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_ioplug.c b/src/pcm/pcm_ioplug.c -index c1c3a9835d47..85a88911eafc 100644 ---- a/src/pcm/pcm_ioplug.c -+++ b/src/pcm/pcm_ioplug.c -@@ -448,7 +448,7 @@ static int snd_pcm_ioplug_start(snd_pcm_t *pcm) - if (err < 0) - return err; - -- gettimestamp(&io->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&io->trigger_tstamp, pcm->tstamp_type); - io->data->state = SND_PCM_STATE_RUNNING; - - return 0; -@@ -463,7 +463,7 @@ static int snd_pcm_ioplug_drop(snd_pcm_t *pcm) - - io->data->callback->stop(io->data); - -- gettimestamp(&io->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&io->trigger_tstamp, pcm->tstamp_type); - io->data->state = SND_PCM_STATE_SETUP; - - return 0; -@@ -1069,7 +1069,10 @@ int snd_pcm_ioplug_reinit_status(snd_pcm_ioplug_t *ioplug) - { - ioplug->pcm->poll_fd = ioplug->poll_fd; - ioplug->pcm->poll_events = ioplug->poll_events; -- ioplug->pcm->monotonic = (ioplug->flags & SND_PCM_IOPLUG_FLAG_MONOTONIC) != 0; -+ if (ioplug->flags & SND_PCM_IOPLUG_FLAG_MONOTONIC) -+ ioplug->pcm->tstamp_type = SND_PCM_TSTAMP_TYPE_MONOTONIC; -+ else -+ ioplug->pcm->tstamp_type = SND_PCM_TSTAMP_TYPE_GETTIMEOFDAY; - ioplug->pcm->mmap_rw = ioplug->mmap_rw; - return 0; - } -diff --git a/src/pcm/pcm_ladspa.c b/src/pcm/pcm_ladspa.c -index 7d1e3df878b0..631ee0f35b73 100644 ---- a/src/pcm/pcm_ladspa.c -+++ b/src/pcm/pcm_ladspa.c -@@ -1641,7 +1641,7 @@ int snd_pcm_ladspa_open(snd_pcm_t **pcmp, const char *name, - pcm->private_data = ladspa; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &ladspa->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &ladspa->plug.appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_lfloat.c b/src/pcm/pcm_lfloat.c -index bbf72c274222..324282f0b7fc 100644 ---- a/src/pcm/pcm_lfloat.c -+++ b/src/pcm/pcm_lfloat.c -@@ -412,7 +412,7 @@ int snd_pcm_lfloat_open(snd_pcm_t **pcmp, const char *name, snd_pcm_format_t sfo - pcm->private_data = lfloat; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &lfloat->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &lfloat->plug.appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_linear.c b/src/pcm/pcm_linear.c -index 7aa894185444..3d5bbb8a3688 100644 ---- a/src/pcm/pcm_linear.c -+++ b/src/pcm/pcm_linear.c -@@ -484,7 +484,7 @@ int snd_pcm_linear_open(snd_pcm_t **pcmp, const char *name, snd_pcm_format_t sfo - pcm->private_data = linear; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &linear->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &linear->plug.appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h -index 3ed7e1a88792..2206afe2c4a9 100644 ---- a/src/pcm/pcm_local.h -+++ b/src/pcm/pcm_local.h -@@ -191,7 +191,6 @@ struct _snd_pcm { - int poll_fd; - unsigned short poll_events; - int setup: 1, -- monotonic: 1, - compat: 1; - snd_pcm_access_t access; /* access mode */ - snd_pcm_format_t format; /* SND_PCM_FORMAT_* */ -@@ -960,26 +959,40 @@ typedef union snd_tmp_double { - } snd_tmp_double_t; - - /* get the current timestamp */ --static inline void gettimestamp(snd_htimestamp_t *tstamp, int monotonic) -+#ifdef HAVE_CLOCK_GETTIME -+static inline void gettimestamp(snd_htimestamp_t *tstamp, -+ snd_pcm_tstamp_type_t tstamp_type) - { --#if defined(HAVE_CLOCK_GETTIME) --#if defined(CLOCK_MONOTONIC) -- if (monotonic) { -- clock_gettime(CLOCK_MONOTONIC, tstamp); -- } else { --#endif -- clock_gettime(CLOCK_REALTIME, tstamp); --#else -- struct timeval tv; -+ clockid_t id; - -- gettimeofday(&tv, 0); -- tstamp->tv_sec = tv.tv_sec; -- tstamp->tv_nsec = tv.tv_usec * 1000L; -+ switch (tstamp_type) { -+#ifdef CLOCK_MONOTONIC_RAW -+ case SND_PCM_TSTAMP_TYPE_MONOTONIC_RAW: -+ id = CLOCK_MONOTONIC_RAW; -+ break; - #endif --#if defined(HAVE_CLOCK_GETTIME) -- } -+#ifdef CLOCK_MONOTONIC -+ case SND_PCM_TSTAMP_TYPE_MONOTONIC: -+ id = CLOCK_MONOTONIC; -+ break; - #endif -+ default: -+ id = CLOCK_REALTIME; -+ break; -+ } -+ clock_gettime(id, tstamp); -+} -+#else /* HAVE_CLOCK_GETTIME */ -+static inline void gettimestamp(snd_htimestamp_t *tstamp, -+ snd_pcm_tstamp_type_t tstamp_type) -+{ -+ struct timeval tv; -+ -+ gettimeofday(&tv, 0); -+ tstamp->tv_sec = tv.tv_sec; -+ tstamp->tv_nsec = tv.tv_usec * 1000L; - } -+#endif /* HAVE_CLOCK_GETTIME */ - - snd_pcm_chmap_query_t ** - _snd_pcm_make_single_query_chmaps(const snd_pcm_chmap_t *src); -diff --git a/src/pcm/pcm_meter.c b/src/pcm/pcm_meter.c -index 676fbef89c30..034f582564a8 100644 ---- a/src/pcm/pcm_meter.c -+++ b/src/pcm/pcm_meter.c -@@ -591,7 +591,7 @@ int snd_pcm_meter_open(snd_pcm_t **pcmp, const char *name, unsigned int frequenc - pcm->private_data = meter; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_link_hw_ptr(pcm, slave); - snd_pcm_link_appl_ptr(pcm, slave); - *pcmp = pcm; -diff --git a/src/pcm/pcm_mmap_emul.c b/src/pcm/pcm_mmap_emul.c -index 63789bc07c1b..b2b15efd07d9 100644 ---- a/src/pcm/pcm_mmap_emul.c -+++ b/src/pcm/pcm_mmap_emul.c -@@ -428,7 +428,7 @@ int __snd_pcm_mmap_emul_open(snd_pcm_t **pcmp, const char *name, - pcm->private_data = map; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &map->hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &map->appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_mulaw.c b/src/pcm/pcm_mulaw.c -index 7adce38e9f48..011b2a516be0 100644 ---- a/src/pcm/pcm_mulaw.c -+++ b/src/pcm/pcm_mulaw.c -@@ -467,7 +467,7 @@ int snd_pcm_mulaw_open(snd_pcm_t **pcmp, const char *name, snd_pcm_format_t sfor - pcm->private_data = mulaw; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &mulaw->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &mulaw->plug.appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_multi.c b/src/pcm/pcm_multi.c -index a84e0ce48c59..4b8299ed6bcd 100644 ---- a/src/pcm/pcm_multi.c -+++ b/src/pcm/pcm_multi.c -@@ -1077,7 +1077,7 @@ int snd_pcm_multi_open(snd_pcm_t **pcmp, const char *name, - pcm->private_data = multi; - pcm->poll_fd = multi->slaves[master_slave].pcm->poll_fd; - pcm->poll_events = multi->slaves[master_slave].pcm->poll_events; -- pcm->monotonic = multi->slaves[master_slave].pcm->monotonic; -+ pcm->tstamp_type = multi->slaves[master_slave].pcm->tstamp_type; - snd_pcm_link_hw_ptr(pcm, multi->slaves[master_slave].pcm); - snd_pcm_link_appl_ptr(pcm, multi->slaves[master_slave].pcm); - *pcmp = pcm; -diff --git a/src/pcm/pcm_null.c b/src/pcm/pcm_null.c -index 655261f74e1f..f11a1020f7e3 100644 ---- a/src/pcm/pcm_null.c -+++ b/src/pcm/pcm_null.c -@@ -100,7 +100,7 @@ static int snd_pcm_null_status(snd_pcm_t *pcm, snd_pcm_status_t * status) - memset(status, 0, sizeof(*status)); - status->state = null->state; - status->trigger_tstamp = null->trigger_tstamp; -- gettimestamp(&status->tstamp, pcm->monotonic); -+ gettimestamp(&status->tstamp, pcm->tstamp_type); - status->avail = snd_pcm_null_avail_update(pcm); - status->avail_max = pcm->buffer_size; - return 0; -diff --git a/src/pcm/pcm_plug.c b/src/pcm/pcm_plug.c -index 7a6c2b99c639..5639b9ea8044 100644 ---- a/src/pcm/pcm_plug.c -+++ b/src/pcm/pcm_plug.c -@@ -1127,7 +1127,7 @@ int snd_pcm_plug_open(snd_pcm_t **pcmp, - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; - pcm->mmap_shadow = 1; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_link_hw_ptr(pcm, slave); - snd_pcm_link_appl_ptr(pcm, slave); - *pcmp = pcm; -diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c -index 2563d824ddb8..5e811bb7192a 100644 ---- a/src/pcm/pcm_rate.c -+++ b/src/pcm/pcm_rate.c -@@ -1069,7 +1069,7 @@ static int snd_pcm_rate_start(snd_pcm_t *pcm) - if (snd_pcm_state(rate->gen.slave) != SND_PCM_STATE_PREPARED) - return -EBADFD; - -- gettimestamp(&rate->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&rate->trigger_tstamp, pcm->tstamp_type); - - avail = snd_pcm_mmap_playback_hw_avail(rate->gen.slave); - if (avail == 0) { -@@ -1372,7 +1372,7 @@ int snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name, - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; - pcm->mmap_rw = 1; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &rate->hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &rate->appl_ptr, -1, 0); - *pcmp = pcm; -diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c -index 751e36f28fdf..2f0be38b1906 100644 ---- a/src/pcm/pcm_route.c -+++ b/src/pcm/pcm_route.c -@@ -1122,7 +1122,7 @@ int snd_pcm_route_open(snd_pcm_t **pcmp, const char *name, - pcm->private_data = route; - pcm->poll_fd = slave->poll_fd; - pcm->poll_events = slave->poll_events; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &route->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &route->plug.appl_ptr, -1, 0); - err = route_load_ttable(&route->params, pcm->stream, tt_ssize, ttable, tt_cused, tt_sused); -diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c -index 118ab2617780..97705447dd6d 100644 ---- a/src/pcm/pcm_share.c -+++ b/src/pcm/pcm_share.c -@@ -971,7 +971,7 @@ static int snd_pcm_share_start(snd_pcm_t *pcm) - } - slave->running_count++; - _snd_pcm_share_update(pcm); -- gettimestamp(&share->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&share->trigger_tstamp, pcm->tstamp_type); - _end: - Pthread_mutex_unlock(&slave->mutex); - return err; -@@ -1126,7 +1126,7 @@ static void _snd_pcm_share_stop(snd_pcm_t *pcm, snd_pcm_state_t state) - return; - } - #endif -- gettimestamp(&share->trigger_tstamp, pcm->monotonic); -+ gettimestamp(&share->trigger_tstamp, pcm->tstamp_type); - if (pcm->stream == SND_PCM_STREAM_CAPTURE) { - snd_pcm_areas_copy(pcm->stopped_areas, 0, - pcm->running_areas, 0, -@@ -1526,7 +1526,7 @@ int snd_pcm_share_open(snd_pcm_t **pcmp, const char *name, const char *sname, - pcm->private_data = share; - pcm->poll_fd = share->client_socket; - pcm->poll_events = stream == SND_PCM_STREAM_PLAYBACK ? POLLOUT : POLLIN; -- pcm->monotonic = slave->pcm->monotonic; -+ pcm->tstamp_type = slave->pcm->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &share->hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &share->appl_ptr, -1, 0); - -diff --git a/src/pcm/pcm_softvol.c b/src/pcm/pcm_softvol.c -index 5da92049cc88..c6cfd8896b26 100644 ---- a/src/pcm/pcm_softvol.c -+++ b/src/pcm/pcm_softvol.c -@@ -903,7 +903,7 @@ int snd_pcm_softvol_open(snd_pcm_t **pcmp, const char *name, - * an extra buffer. - */ - pcm->mmap_shadow = 1; -- pcm->monotonic = slave->monotonic; -+ pcm->tstamp_type = slave->tstamp_type; - snd_pcm_set_hw_ptr(pcm, &svol->plug.hw_ptr, -1, 0); - snd_pcm_set_appl_ptr(pcm, &svol->plug.appl_ptr, -1, 0); - *pcmp = pcm; --- -2.0.1 - diff --git a/0010-test-audio_time-Set-timestamp-type-explicitly.patch b/0010-test-audio_time-Set-timestamp-type-explicitly.patch deleted file mode 100644 index 053e79c..0000000 --- a/0010-test-audio_time-Set-timestamp-type-explicitly.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 52444bd43afbadb8637f5fac3fe5fd90575ee216 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Mon, 14 Jul 2014 18:12:49 +0200 -Subject: [PATCH 10/14] test/audio_time: Set timestamp type explicitly - -Signed-off-by: Takashi Iwai ---- - test/audio_time.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/test/audio_time.c b/test/audio_time.c -index 03817c7c673b..7435db6a7fd8 100644 ---- a/test/audio_time.c -+++ b/test/audio_time.c -@@ -57,6 +57,7 @@ void gettimestamp(snd_pcm_t *handle, snd_htimestamp_t *timestamp, - #define TRACK_PLAYBACK /* dump playback timing info */ - #define TRACK_SAMPLE_COUNTS /* show difference between sample counters and audiotimestamps returned by driver */ - #define PLAYBACK_BUFFERS 4 -+#define TSTAMP_TYPE SND_PCM_TSTAMP_TYPE_MONOTONIC - - - int main(void) -@@ -128,6 +129,12 @@ int main(void) - goto _exit; - } - -+ err = snd_pcm_sw_params_set_tstamp_type(handle_p, swparams_p, TSTAMP_TYPE); -+ if (err < 0) { -+ printf("Unable to set tstamp type : %s\n", snd_strerror(err)); -+ goto _exit; -+ } -+ - /* write the sw parameters */ - err = snd_pcm_sw_params(handle_p, swparams_p); - if (err < 0) { -@@ -177,6 +184,12 @@ int main(void) - goto _exit; - } - -+ err = snd_pcm_sw_params_set_tstamp_type(handle_c, swparams_c, TSTAMP_TYPE); -+ if (err < 0) { -+ printf("Unable to set tstamp type : %s\n", snd_strerror(err)); -+ goto _exit; -+ } -+ - /* write the sw parameters */ - err = snd_pcm_sw_params(handle_c, swparams_c); - if (err < 0) { --- -2.0.1 - diff --git a/0011-pcm-route-Use-get-put-labels-for-all-3-byte-formats.patch b/0011-pcm-route-Use-get-put-labels-for-all-3-byte-formats.patch deleted file mode 100644 index 5af7632..0000000 --- a/0011-pcm-route-Use-get-put-labels-for-all-3-byte-formats.patch +++ /dev/null @@ -1,35 +0,0 @@ -From de63b942acf520a25ff469cf338a99eb3da65570 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Mon, 21 Jul 2014 16:30:54 +0200 -Subject: [PATCH 11/14] pcm: route: Use get/put labels for all 3 byte formats - -So far, use_getput flag is set only when the src or dest format is -24bit physical width. But, also 18 and 20 bit physical width formats -should set the flag, too. This patch makes the check broader to cover -all 3 bytes formats. - -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_route.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c -index 2f0be38b1906..72c198cb25d2 100644 ---- a/src/pcm/pcm_route.c -+++ b/src/pcm/pcm_route.c -@@ -644,8 +644,10 @@ static int snd_pcm_route_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params) - } - if (err < 0) - return err; -- route->params.use_getput = snd_pcm_format_physical_width(src_format) == 24 || -- snd_pcm_format_physical_width(dst_format) == 24; -+ /* 3 bytes formats? */ -+ route->params.use_getput = -+ (snd_pcm_format_physical_width(src_format) + 7) / 3 == 3 || -+ (snd_pcm_format_physical_width(dst_format) + 7) / 3 == 3; - route->params.get_idx = snd_pcm_linear_get_index(src_format, SND_PCM_FORMAT_S16); - route->params.put_idx = snd_pcm_linear_put32_index(SND_PCM_FORMAT_S32, dst_format); - route->params.conv_idx = snd_pcm_linear_convert_index(src_format, dst_format); --- -2.0.1 - diff --git a/0012-pcm-Fill-sw_params-proto-field.patch b/0012-pcm-Fill-sw_params-proto-field.patch deleted file mode 100644 index fd763a4..0000000 --- a/0012-pcm-Fill-sw_params-proto-field.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 55c53625212702debf55c719ec62f6c81c780927 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Wed, 16 Jul 2014 17:48:34 +0200 -Subject: [PATCH 12/14] pcm: Fill sw_params proto field - -Fill the new proto field introduced to sw_params with the current PCM -protocol version. This makes tstamp_type evaluated properly in the -kernel. - -Signed-off-by: Takashi Iwai ---- - include/sound/asound.h | 4 ++-- - src/pcm/pcm.c | 1 + - src/pcm/pcm_params.c | 1 + - 3 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/include/sound/asound.h b/include/sound/asound.h -index 552f41bd1ca9..c819df421434 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -386,8 +386,8 @@ struct snd_pcm_sw_params { - snd_pcm_uframes_t silence_threshold; /* min distance from noise for silence filling */ - snd_pcm_uframes_t silence_size; /* silence block size */ - snd_pcm_uframes_t boundary; /* pointers wrap point */ -- unsigned int tstamp_type; /* timestamp type */ -- int pads; /* alignment, reserved */ -+ unsigned int proto; /* protocol version */ -+ unsigned int tstamp_type; /* timestamp type (req. proto >= 2.0.12) */ - unsigned char reserved[56]; /* reserved for future */ - }; - -diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c -index 89844430bf35..1399a5b2e671 100644 ---- a/src/pcm/pcm.c -+++ b/src/pcm/pcm.c -@@ -5610,6 +5610,7 @@ int snd_pcm_sw_params_current(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) - SNDMSG("PCM not set up"); - return -EIO; - } -+ params->proto = SNDRV_PCM_VERSION; - params->tstamp_mode = pcm->tstamp_mode; - params->tstamp_type = pcm->tstamp_type; - params->period_step = pcm->period_step; -diff --git a/src/pcm/pcm_params.c b/src/pcm/pcm_params.c -index 4adbefae0530..6e57904e445b 100644 ---- a/src/pcm/pcm_params.c -+++ b/src/pcm/pcm_params.c -@@ -2257,6 +2257,7 @@ static int snd_pcm_sw_params_default(snd_pcm_t *pcm, snd_pcm_sw_params_t *params - { - assert(pcm && params); - assert(pcm->setup); -+ params->proto = SNDRV_PCM_VERSION; - params->tstamp_mode = SND_PCM_TSTAMP_NONE; - params->tstamp_type = pcm->tstamp_type; - params->period_step = 1; --- -2.0.1 - diff --git a/0013-pcm-route-Use-get32-for-multi-source-route-calculati.patch b/0013-pcm-route-Use-get32-for-multi-source-route-calculati.patch deleted file mode 100644 index ae9f217..0000000 --- a/0013-pcm-route-Use-get32-for-multi-source-route-calculati.patch +++ /dev/null @@ -1,342 +0,0 @@ -From fd84adc63e307572d05274be44c782a787087cda Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Tue, 22 Jul 2014 11:55:40 +0200 -Subject: [PATCH 13/14] pcm: route: Use get32 for multi-source route - calculation - -The PCM route plugin can assign the destination value from average of -multiple sources with attenuation. This requires the read of each -channel value, sums and writes the resultant value in the requested -format. - -Currently, get_labels is used for reading source values while -put32_labels is used for writing the dest value. This is, however, -a buggy implementation; get_labels gives the value as is only with -endianness and signedness conversions, but put32_labels assumes that -the value is normalized to 32bit int and it shifts down to the dest -format. In addition, the current code lacks get_labels entries for -the 24bit formats, as Shengjiu Wang spotted out. - -For fixing these bugs, this patch replaces the read with -get32_labels and use always 64bit int for sum. This simplifies the -code a lot and drops many lines. - -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_route.c | 128 +++++++++------------------------------------------ - src/pcm/plugin_ops.h | 81 -------------------------------- - 2 files changed, 23 insertions(+), 186 deletions(-) - -diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c -index 72c198cb25d2..5dac7ebcb7df 100644 ---- a/src/pcm/pcm_route.c -+++ b/src/pcm/pcm_route.c -@@ -60,7 +60,7 @@ typedef struct { - typedef struct snd_pcm_route_ttable_dst snd_pcm_route_ttable_dst_t; - - typedef struct { -- enum {UINT32=0, UINT64=1, FLOAT=2} sum_idx; -+ enum {UINT64, FLOAT} sum_idx; - unsigned int get_idx; - unsigned int put_idx; - unsigned int conv_idx; -@@ -233,55 +233,34 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area, - const snd_pcm_route_ttable_dst_t* ttable, - const snd_pcm_route_params_t *params) - { --#define GETS_LABELS -+#define GET32_LABELS - #define PUT32_LABELS - #include "plugin_ops.h" --#undef GETS_LABELS -+#undef GET32_LABELS - #undef PUT32_LABELS -- static void *const zero_labels[3] = { -- &&zero_int32, &&zero_int64, -+ static void *const zero_labels[2] = { -+ &&zero_int64, - #if SND_PCM_PLUGIN_ROUTE_FLOAT - &&zero_float - #endif - }; - /* sum_type att */ -- static void *const add_labels[3 * 2] = { -- &&add_int32_noatt, &&add_int32_att, -+ static void *const add_labels[2 * 2] = { - &&add_int64_noatt, &&add_int64_att, - #if SND_PCM_PLUGIN_ROUTE_FLOAT - &&add_float_noatt, &&add_float_att - #endif - }; -- /* sum_type att shift */ -- static void *const norm_labels[3 * 2 * 4] = { -- 0, -- &&norm_int32_8_noatt, -- &&norm_int32_16_noatt, -- &&norm_int32_24_noatt, -- 0, -- &&norm_int32_8_att, -- &&norm_int32_16_att, -- &&norm_int32_24_att, -- &&norm_int64_0_noatt, -- &&norm_int64_8_noatt, -- &&norm_int64_16_noatt, -- &&norm_int64_24_noatt, -- &&norm_int64_0_att, -- &&norm_int64_8_att, -- &&norm_int64_16_att, -- &&norm_int64_24_att, -+ /* sum_type att */ -+ static void *const norm_labels[2 * 2] = { -+ &&norm_int64_noatt, -+ &&norm_int64_att, - #if SND_PCM_PLUGIN_ROUTE_FLOAT -- &&norm_float_0, -- &&norm_float_8, -- &&norm_float_16, -- &&norm_float_24, -- &&norm_float_0, -- &&norm_float_8, -- &&norm_float_16, -- &&norm_float_24, -+ &&norm_float, -+ &&norm_float, - #endif - }; -- void *zero, *get, *add, *norm, *put32; -+ void *zero, *get32, *add, *norm, *put32; - int nsrcs = ttable->nsrcs; - char *dst; - int dst_step; -@@ -323,9 +302,9 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area, - } - - zero = zero_labels[params->sum_idx]; -- get = gets_labels[params->get_idx]; -+ get32 = get32_labels[params->get_idx]; - add = add_labels[params->sum_idx * 2 + ttable->att]; -- norm = norm_labels[params->sum_idx * 8 + ttable->att * 4 + 4 - params->src_size]; -+ norm = norm_labels[params->sum_idx * 2 + ttable->att]; - put32 = put32_labels[params->put_idx]; - dst = snd_pcm_channel_area_addr(dst_area, dst_offset); - dst_step = snd_pcm_channel_area_step(dst_area); -@@ -336,9 +315,6 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area, - - /* Zero sum */ - goto *zero; -- zero_int32: -- sum.as_sint32 = 0; -- goto zero_end; - zero_int64: - sum.as_sint64 = 0; - goto zero_end; -@@ -352,21 +328,14 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area, - const char *src = srcs[srcidx]; - - /* Get sample */ -- goto *get; --#define GETS_END after_get -+ goto *get32; -+#define GET32_END after_get - #include "plugin_ops.h" --#undef GETS_END -+#undef GET32_END - after_get: - - /* Sum */ - goto *add; -- add_int32_att: -- sum.as_sint32 += sample * ttp->as_int; -- goto after_sum; -- add_int32_noatt: -- if (ttp->as_int) -- sum.as_sint32 += sample; -- goto after_sum; - add_int64_att: - sum.as_sint64 += (int64_t) sample * ttp->as_int; - goto after_sum; -@@ -390,48 +359,10 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area, - - /* Normalization */ - goto *norm; -- norm_int32_8_att: -- sum.as_sint64 = sum.as_sint32; -- norm_int64_8_att: -- sum.as_sint64 <<= 8; -- norm_int64_0_att: -+ norm_int64_att: - div(sum.as_sint64); -- goto norm_int; -- -- norm_int32_16_att: -- sum.as_sint64 = sum.as_sint32; -- norm_int64_16_att: -- sum.as_sint64 <<= 16; -- div(sum.as_sint64); -- goto norm_int; -- -- norm_int32_24_att: -- sum.as_sint64 = sum.as_sint32; -- norm_int64_24_att: -- sum.as_sint64 <<= 24; -- div(sum.as_sint64); -- goto norm_int; -- -- norm_int32_8_noatt: -- sum.as_sint64 = sum.as_sint32; -- norm_int64_8_noatt: -- sum.as_sint64 <<= 8; -- goto norm_int; -- -- norm_int32_16_noatt: -- sum.as_sint64 = sum.as_sint32; -- norm_int64_16_noatt: -- sum.as_sint64 <<= 16; -- goto norm_int; -- -- norm_int32_24_noatt: -- sum.as_sint64 = sum.as_sint32; -- norm_int64_24_noatt: -- sum.as_sint64 <<= 24; -- goto norm_int; -- -- norm_int64_0_noatt: -- norm_int: -+ /* fallthru */ -+ norm_int64_noatt: - if (sum.as_sint64 > (int64_t)0x7fffffff) - sample = 0x7fffffff; /* maximum positive value */ - else if (sum.as_sint64 < -(int64_t)0x80000000) -@@ -441,16 +372,6 @@ static void snd_pcm_route_convert1_many(const snd_pcm_channel_area_t *dst_area, - goto after_norm; - - #if SND_PCM_PLUGIN_ROUTE_FLOAT -- norm_float_8: -- sum.as_float *= 1 << 8; -- goto norm_float; -- norm_float_16: -- sum.as_float *= 1 << 16; -- goto norm_float; -- norm_float_24: -- sum.as_float *= 1 << 24; -- goto norm_float; -- norm_float_0: - norm_float: - sum.as_float = rint(sum.as_float); - if (sum.as_float > (int64_t)0x7fffffff) -@@ -648,7 +569,7 @@ static int snd_pcm_route_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params) - route->params.use_getput = - (snd_pcm_format_physical_width(src_format) + 7) / 3 == 3 || - (snd_pcm_format_physical_width(dst_format) + 7) / 3 == 3; -- route->params.get_idx = snd_pcm_linear_get_index(src_format, SND_PCM_FORMAT_S16); -+ route->params.get_idx = snd_pcm_linear_get32_index(src_format, SND_PCM_FORMAT_S32); - route->params.put_idx = snd_pcm_linear_put32_index(SND_PCM_FORMAT_S32, dst_format); - route->params.conv_idx = snd_pcm_linear_convert_index(src_format, dst_format); - route->params.src_size = snd_pcm_format_width(src_format) / 8; -@@ -656,10 +577,7 @@ static int snd_pcm_route_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params) - #if SND_PCM_PLUGIN_ROUTE_FLOAT - route->params.sum_idx = FLOAT; - #else -- if (snd_pcm_format_width(src_format) == 32) -- route->params.sum_idx = UINT64; -- else -- route->params.sum_idx = UINT32; -+ route->params.sum_idx = UINT64; - #endif - return 0; - } -diff --git a/src/pcm/plugin_ops.h b/src/pcm/plugin_ops.h -index 21535c9ca8d6..eb8c2c4f4dac 100644 ---- a/src/pcm/plugin_ops.h -+++ b/src/pcm/plugin_ops.h -@@ -668,87 +668,6 @@ getu_1234_C321: sample = bswap_32(as_u32c(src) ^ 0x80); goto GETU_END; - } - #endif - --#ifdef GETS_LABELS --/* width endswap sign_toggle */ --static void *const gets_labels[4 * 2 * 2] = { -- &&gets_1_1, /* 8h -> 8h */ -- &&gets_1_9, /* 8h ^> 8h */ -- &&gets_1_1, /* 8s -> 8h */ -- &&gets_1_9, /* 8s ^> 8h */ -- &&gets_12_12, /* 16h -> 16h */ -- &&gets_12_92, /* 16h ^> 16h */ -- &&gets_12_21, /* 16s -> 16h */ -- &&gets_12_A1, /* 16s ^> 16h */ -- &&gets_0123_0123, /* 24h -> 24h */ -- &&gets_0123_0923, /* 24h ^> 24h */ -- &&gets_1230_0321, /* 24s -> 24h */ -- &&gets_1230_0B21, /* 24s ^> 24h */ -- &&gets_1234_1234, /* 32h -> 32h */ -- &&gets_1234_9234, /* 32h ^> 32h */ -- &&gets_1234_4321, /* 32s -> 32h */ -- &&gets_1234_C321, /* 32s ^> 32h */ --}; --#endif -- --#ifdef GETS_END --while (0) { --gets_1_1: sample = as_s8c(src); goto GETS_END; --gets_1_9: sample = (int8_t)(as_s8c(src) ^ 0x80); goto GETS_END; --gets_12_12: sample = as_s16c(src); goto GETS_END; --gets_12_92: sample = (int16_t)(as_s16c(src) ^ 0x8000); goto GETS_END; --gets_12_21: sample = (int16_t)bswap_16(as_s16c(src)); goto GETS_END; --gets_12_A1: sample = (int16_t)bswap_16(as_s16c(src) ^ 0x80); goto GETS_END; --gets_0123_0123: sample = sx24((int32_t)(as_s32c(src) << 8) >> 8); goto GETS_END; --gets_0123_0923: sample = sx24((int32_t)((as_s32c(src) ^ 0x800000) << 8) >> 8); goto GETS_END; --gets_1230_0321: sample = sx24((int32_t)(bswap_32(as_s32c(src)) << 8) >> 8); goto GETS_END; --gets_1230_0B21: sample = sx24((int32_t)(bswap_32(as_s32c(src) ^ 0x8000) << 8) >> 8); goto GETS_END; --gets_1234_1234: sample = as_s32c(src); goto GETS_END; --gets_1234_9234: sample = (int32_t)(as_s32c(src) ^ 0x80000000); goto GETS_END; --gets_1234_4321: sample = (int32_t)bswap_32(as_s32c(src)); goto GETS_END; --gets_1234_C321: sample = (int32_t)bswap_32(as_s32c(src) ^ 0x80); goto GETS_END; --} --#endif -- --#ifdef PUT_LABELS --/* width endswap sign_toggle */ --static void *const put_labels[4 * 2 * 2] = { -- &&put_1_1, /* 8h -> 8h */ -- &&put_1_9, /* 8h ^> 8h */ -- &&put_1_1, /* 8h -> 8s */ -- &&put_1_9, /* 8h ^> 8s */ -- &&put_12_12, /* 16h -> 16h */ -- &&put_12_92, /* 16h ^> 16h */ -- &&put_12_21, /* 16h -> 16s */ -- &&put_12_29, /* 16h ^> 16s */ -- &&put_0123_0123, /* 24h -> 24h */ -- &&put_0123_0923, /* 24h ^> 24h */ -- &&put_0123_3210, /* 24h -> 24s */ -- &&put_0123_3290, /* 24h ^> 24s */ -- &&put_1234_1234, /* 32h -> 32h */ -- &&put_1234_9234, /* 32h ^> 32h */ -- &&put_1234_4321, /* 32h -> 32s */ -- &&put_1234_4329, /* 32h ^> 32s */ --}; --#endif -- --#ifdef PUT_END --put_1_1: as_s8(dst) = sample; goto PUT_END; --put_1_9: as_u8(dst) = sample ^ 0x80; goto PUT_END; --put_12_12: as_s16(dst) = sample; goto PUT_END; --put_12_92: as_u16(dst) = sample ^ 0x8000; goto PUT_END; --put_12_21: as_s16(dst) = bswap_16(sample); goto PUT_END; --put_12_29: as_u16(dst) = bswap_16(sample) ^ 0x80; goto PUT_END; --/* this always writes the unused byte in 24-bit formats as 0x00 */ --put_0123_0123: as_s32(dst) = sx24(sample & 0x00ffffff); goto PUT_END; --put_0123_0923: as_u32(dst) = sx24((sample & 0x00ffffff) ^ 0x800000); goto PUT_END; --put_0123_3210: as_s32(dst) = sx24s(bswap_32(sample) & 0xffffff00); goto PUT_END; --put_0123_3290: as_u32(dst) = sx24s((bswap_32(sample) & 0xffffff00) ^ 0x8000); goto PUT_END; --put_1234_1234: as_s32(dst) = sample; goto PUT_END; --put_1234_9234: as_u32(dst) = sample ^ 0x80000000; goto PUT_END; --put_1234_4321: as_s32(dst) = bswap_32(sample); goto PUT_END; --put_1234_4329: as_u32(dst) = bswap_32(sample) ^ 0x80; goto PUT_END; --#endif -- - #ifdef PUT32F_LABELS - /* type (0 = float, 1 = float64), endswap */ - static void *const put32float_labels[2 * 2] = { --- -2.0.1 - diff --git a/0014-pcm-Drop-snd_pcm_linear_-get-put-32_index.patch b/0014-pcm-Drop-snd_pcm_linear_-get-put-32_index.patch deleted file mode 100644 index 6be06c1..0000000 --- a/0014-pcm-Drop-snd_pcm_linear_-get-put-32_index.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 7a5646f58ba2e8154a274a5ae0f8ec963f331f97 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Tue, 22 Jul 2014 12:20:50 +0200 -Subject: [PATCH 14/14] pcm: Drop snd_pcm_linear_{get|put}32_index() - -These are identical with snd_pcm_linear_{get|put}_index(). - -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_lfloat.c | 4 ++-- - src/pcm/pcm_linear.c | 44 ++++---------------------------------------- - src/pcm/pcm_plugin.h | 4 ---- - src/pcm/pcm_route.c | 4 ++-- - 4 files changed, 8 insertions(+), 48 deletions(-) - -diff --git a/src/pcm/pcm_lfloat.c b/src/pcm/pcm_lfloat.c -index 324282f0b7fc..2f3e578fc503 100644 ---- a/src/pcm/pcm_lfloat.c -+++ b/src/pcm/pcm_lfloat.c -@@ -286,11 +286,11 @@ static int snd_pcm_lfloat_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) - err = INTERNAL(snd_pcm_hw_params_get_format)(params, &dst_format); - } - if (snd_pcm_format_linear(src_format)) { -- lfloat->int32_idx = snd_pcm_linear_get32_index(src_format, SND_PCM_FORMAT_S32); -+ lfloat->int32_idx = snd_pcm_linear_get_index(src_format, SND_PCM_FORMAT_S32); - lfloat->float32_idx = snd_pcm_lfloat_put_s32_index(dst_format); - lfloat->func = snd_pcm_lfloat_convert_integer_float; - } else { -- lfloat->int32_idx = snd_pcm_linear_put32_index(SND_PCM_FORMAT_S32, dst_format); -+ lfloat->int32_idx = snd_pcm_linear_put_index(SND_PCM_FORMAT_S32, dst_format); - lfloat->float32_idx = snd_pcm_lfloat_get_s32_index(src_format); - lfloat->func = snd_pcm_lfloat_convert_float_integer; - } -diff --git a/src/pcm/pcm_linear.c b/src/pcm/pcm_linear.c -index 3d5bbb8a3688..9a92abd04fb8 100644 ---- a/src/pcm/pcm_linear.c -+++ b/src/pcm/pcm_linear.c -@@ -107,11 +107,6 @@ int snd_pcm_linear_get_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_f - } - } - --int snd_pcm_linear_get32_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_format) --{ -- return snd_pcm_linear_get_index(src_format, dst_format); --} -- - int snd_pcm_linear_put_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_format) - { - int sign, width, pwidth, endian; -@@ -143,37 +138,6 @@ int snd_pcm_linear_put_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_f - } - } - --int snd_pcm_linear_put32_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_format) --{ -- int sign, width, pwidth, endian; -- sign = (snd_pcm_format_signed(src_format) != -- snd_pcm_format_signed(dst_format)); --#ifdef SND_LITTLE_ENDIAN -- endian = snd_pcm_format_big_endian(dst_format); --#else -- endian = snd_pcm_format_little_endian(dst_format); --#endif -- if (endian < 0) -- endian = 0; -- pwidth = snd_pcm_format_physical_width(dst_format); -- width = snd_pcm_format_width(dst_format); -- if (pwidth == 24) { -- switch (width) { -- case 24: -- width = 0; break; -- case 20: -- width = 1; break; -- case 18: -- default: -- width = 2; break; -- } -- return width * 4 + endian * 2 + sign + 16; -- } else { -- width = width / 8 - 1; -- return width * 4 + endian * 2 + sign; -- } --} -- - void snd_pcm_linear_convert(const snd_pcm_channel_area_t *dst_areas, snd_pcm_uframes_t dst_offset, - const snd_pcm_channel_area_t *src_areas, snd_pcm_uframes_t src_offset, - unsigned int channels, snd_pcm_uframes_t frames, -@@ -342,11 +306,11 @@ static int snd_pcm_linear_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t *params) - snd_pcm_format_physical_width(linear->sformat) == 24); - if (linear->use_getput) { - if (pcm->stream == SND_PCM_STREAM_PLAYBACK) { -- linear->get_idx = snd_pcm_linear_get32_index(format, SND_PCM_FORMAT_S32); -- linear->put_idx = snd_pcm_linear_put32_index(SND_PCM_FORMAT_S32, linear->sformat); -+ linear->get_idx = snd_pcm_linear_get_index(format, SND_PCM_FORMAT_S32); -+ linear->put_idx = snd_pcm_linear_put_index(SND_PCM_FORMAT_S32, linear->sformat); - } else { -- linear->get_idx = snd_pcm_linear_get32_index(linear->sformat, SND_PCM_FORMAT_S32); -- linear->put_idx = snd_pcm_linear_put32_index(SND_PCM_FORMAT_S32, format); -+ linear->get_idx = snd_pcm_linear_get_index(linear->sformat, SND_PCM_FORMAT_S32); -+ linear->put_idx = snd_pcm_linear_put_index(SND_PCM_FORMAT_S32, format); - } - } else { - if (pcm->stream == SND_PCM_STREAM_PLAYBACK) -diff --git a/src/pcm/pcm_plugin.h b/src/pcm/pcm_plugin.h -index 19e82c3e7321..b0a3e1869ea1 100644 ---- a/src/pcm/pcm_plugin.h -+++ b/src/pcm/pcm_plugin.h -@@ -86,8 +86,6 @@ snd_pcm_sframes_t snd_pcm_plugin_undo_write_generic - /* make local functions really local */ - #define snd_pcm_linear_get_index snd1_pcm_linear_get_index - #define snd_pcm_linear_put_index snd1_pcm_linear_put_index --#define snd_pcm_linear_get32_index snd1_pcm_linear_get32_index --#define snd_pcm_linear_put32_index snd1_pcm_linear_put32_index - #define snd_pcm_linear_convert_index snd1_pcm_linear_convert_index - #define snd_pcm_linear_convert snd1_pcm_linear_convert - #define snd_pcm_linear_getput snd1_pcm_linear_getput -@@ -100,8 +98,6 @@ snd_pcm_sframes_t snd_pcm_plugin_undo_write_generic - - int snd_pcm_linear_get_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_format); - int snd_pcm_linear_put_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_format); --int snd_pcm_linear_get32_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_format); --int snd_pcm_linear_put32_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_format); - int snd_pcm_linear_convert_index(snd_pcm_format_t src_format, snd_pcm_format_t dst_format); - - void snd_pcm_linear_convert(const snd_pcm_channel_area_t *dst_areas, snd_pcm_uframes_t dst_offset, -diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c -index 5dac7ebcb7df..e7de9b51f1fc 100644 ---- a/src/pcm/pcm_route.c -+++ b/src/pcm/pcm_route.c -@@ -569,8 +569,8 @@ static int snd_pcm_route_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params) - route->params.use_getput = - (snd_pcm_format_physical_width(src_format) + 7) / 3 == 3 || - (snd_pcm_format_physical_width(dst_format) + 7) / 3 == 3; -- route->params.get_idx = snd_pcm_linear_get32_index(src_format, SND_PCM_FORMAT_S32); -- route->params.put_idx = snd_pcm_linear_put32_index(SND_PCM_FORMAT_S32, dst_format); -+ route->params.get_idx = snd_pcm_linear_get_index(src_format, SND_PCM_FORMAT_S32); -+ route->params.put_idx = snd_pcm_linear_put_index(SND_PCM_FORMAT_S32, dst_format); - route->params.conv_idx = snd_pcm_linear_convert_index(src_format, dst_format); - route->params.src_size = snd_pcm_format_width(src_format) / 8; - route->params.dst_sfmt = dst_format; --- -2.0.1 - diff --git a/0015-pcm-pcm_local.h-include-time.h-to-enable-CLOCK_MONOT.patch b/0015-pcm-pcm_local.h-include-time.h-to-enable-CLOCK_MONOT.patch deleted file mode 100644 index 0e0bb63..0000000 --- a/0015-pcm-pcm_local.h-include-time.h-to-enable-CLOCK_MONOT.patch +++ /dev/null @@ -1,29 +0,0 @@ -From f6b879e7cc87d83343f5004369146881d1d1e335 Mon Sep 17 00:00:00 2001 -From: Shengjiu Wang -Date: Wed, 23 Jul 2014 15:09:58 +0800 -Subject: [PATCH] pcm: pcm_local.h: include to enable CLOCK_MONOTONIC - -CLOCK_MONITONIC is defined in , add before -. - -Signed-off-by: Shengjiu Wang -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_local.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h -index 2206afe2c4a9..80bbe5973bdb 100644 ---- a/src/pcm/pcm_local.h -+++ b/src/pcm/pcm_local.h -@@ -24,6 +24,7 @@ - #include - #include - #include -+#include - #include - - #define _snd_mask sndrv_mask --- -2.0.1 - diff --git a/0016-pcm-Fix-DSD-formats-userland-usability.patch b/0016-pcm-Fix-DSD-formats-userland-usability.patch deleted file mode 100644 index 6986ddb..0000000 --- a/0016-pcm-Fix-DSD-formats-userland-usability.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 87df9f3b7a650418b9aef943ac246549c132672a Mon Sep 17 00:00:00 2001 -From: Jurgen Kramer -Date: Sat, 9 Aug 2014 12:09:21 +0200 -Subject: [PATCH] pcm: Fix DSD formats userland usability - -Support for DSD sample formats has been added a while ago. This patch makes -those sample formats beter usable from userland (e.g. aplay). - -[These implementation details have been forgotten in the previous DSD - support patch -- tiwai] - -Signed-off-by: Takashi Iwai ---- - include/sound/asound.h | 4 +++- - src/pcm/pcm_misc.c | 4 ++++ - 2 files changed, 7 insertions(+), 1 deletion(-) - -diff --git a/include/sound/asound.h b/include/sound/asound.h -index c819df421434..519452466317 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -214,7 +214,9 @@ typedef int __bitwise snd_pcm_format_t; - #define SNDRV_PCM_FORMAT_G723_24_1B ((__force snd_pcm_format_t) 45) /* 1 sample in 1 byte */ - #define SNDRV_PCM_FORMAT_G723_40 ((__force snd_pcm_format_t) 46) /* 8 Samples in 5 bytes */ - #define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47) /* 1 sample in 1 byte */ --#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_G723_40_1B -+#define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48) /* 8 1-bit samples in 1 byte */ -+#define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49) /* 16 1-bit samples in 2 bytes */ -+#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U16_LE - - #ifdef SNDRV_LITTLE_ENDIAN - #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE -diff --git a/src/pcm/pcm_misc.c b/src/pcm/pcm_misc.c -index d52160cec653..44bb89cb0d44 100644 ---- a/src/pcm/pcm_misc.c -+++ b/src/pcm/pcm_misc.c -@@ -195,11 +195,13 @@ int snd_pcm_format_width(snd_pcm_format_t format) - switch (format) { - case SNDRV_PCM_FORMAT_S8: - case SNDRV_PCM_FORMAT_U8: -+ case SNDRV_PCM_FORMAT_DSD_U8: - return 8; - case SNDRV_PCM_FORMAT_S16_LE: - case SNDRV_PCM_FORMAT_S16_BE: - case SNDRV_PCM_FORMAT_U16_LE: - case SNDRV_PCM_FORMAT_U16_BE: -+ case SNDRV_PCM_FORMAT_DSD_U16_LE: - return 16; - case SNDRV_PCM_FORMAT_S18_3LE: - case SNDRV_PCM_FORMAT_S18_3BE: -@@ -253,11 +255,13 @@ int snd_pcm_format_physical_width(snd_pcm_format_t format) - switch (format) { - case SNDRV_PCM_FORMAT_S8: - case SNDRV_PCM_FORMAT_U8: -+ case SNDRV_PCM_FORMAT_DSD_U8: - return 8; - case SNDRV_PCM_FORMAT_S16_LE: - case SNDRV_PCM_FORMAT_S16_BE: - case SNDRV_PCM_FORMAT_U16_LE: - case SNDRV_PCM_FORMAT_U16_BE: -+ case SNDRV_PCM_FORMAT_DSD_U16_LE: - return 16; - case SNDRV_PCM_FORMAT_S18_3LE: - case SNDRV_PCM_FORMAT_S18_3BE: --- -2.0.4 - diff --git a/0017-Sync-include-sound-asound.h-with-3.17-rc1-kernel.patch b/0017-Sync-include-sound-asound.h-with-3.17-rc1-kernel.patch deleted file mode 100644 index 4995846..0000000 --- a/0017-Sync-include-sound-asound.h-with-3.17-rc1-kernel.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 717ae3dd90c37f3a5ea9809370bdf56e2590a1c4 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Mon, 11 Aug 2014 11:51:29 +0200 -Subject: [PATCH] Sync include/sound/asound.h with 3.17-rc1 kernel - -Signed-off-by: Takashi Iwai ---- - include/sound/asound.h | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) - -diff --git a/include/sound/asound.h b/include/sound/asound.h -index 519452466317..32168f7ffce3 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -93,9 +93,12 @@ enum { - SNDRV_HWDEP_IFACE_SB_RC, /* SB Extigy/Audigy2NX remote control */ - SNDRV_HWDEP_IFACE_HDA, /* HD-audio */ - SNDRV_HWDEP_IFACE_USB_STREAM, /* direct access to usb stream */ -+ SNDRV_HWDEP_IFACE_FW_DICE, /* TC DICE FireWire device */ -+ SNDRV_HWDEP_IFACE_FW_FIREWORKS, /* Echo Audio Fireworks based device */ -+ SNDRV_HWDEP_IFACE_FW_BEBOB, /* BridgeCo BeBoB based device */ - - /* Don't forget to change the following: */ -- SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_USB_STREAM -+ SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_BEBOB - }; - - struct snd_hwdep_info { -@@ -214,8 +217,8 @@ typedef int __bitwise snd_pcm_format_t; - #define SNDRV_PCM_FORMAT_G723_24_1B ((__force snd_pcm_format_t) 45) /* 1 sample in 1 byte */ - #define SNDRV_PCM_FORMAT_G723_40 ((__force snd_pcm_format_t) 46) /* 8 Samples in 5 bytes */ - #define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47) /* 1 sample in 1 byte */ --#define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48) /* 8 1-bit samples in 1 byte */ --#define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49) /* 16 1-bit samples in 2 bytes */ -+#define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48) /* DSD, 1-byte samples DSD (x8) */ -+#define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49) /* DSD, 2-byte samples DSD (x16), little endian */ - #define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U16_LE - - #ifdef SNDRV_LITTLE_ENDIAN -@@ -461,7 +464,7 @@ struct snd_xfern { - enum { - SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0, /* gettimeofday equivalent */ - SNDRV_PCM_TSTAMP_TYPE_MONOTONIC, /* posix_clock_monotonic equivalent */ -- SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW, /* monotonic_raw (no NTP) */ -+ SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW, /* monotonic_raw (no NTP) */ - SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW, - }; - -@@ -820,6 +823,8 @@ typedef int __bitwise snd_ctl_elem_iface_t; - #define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3|0x0000) /* Off, with power */ - #define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3|0x0001) /* Off, without power */ - -+#define SNDRV_CTL_ELEM_ID_NAME_MAXLEN 44 -+ - struct snd_ctl_elem_id { - unsigned int numid; /* numeric identifier, zero = invalid */ - snd_ctl_elem_iface_t iface; /* interface identifier */ --- -2.0.4 - diff --git a/0018-pcm-Add-missing-signed-and-endianess-definitions-for.patch b/0018-pcm-Add-missing-signed-and-endianess-definitions-for.patch deleted file mode 100644 index 71f407c..0000000 --- a/0018-pcm-Add-missing-signed-and-endianess-definitions-for.patch +++ /dev/null @@ -1,36 +0,0 @@ -From e8e54811339b13d6df648bb48b35157d9fba352c Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Mon, 11 Aug 2014 11:55:03 +0200 -Subject: [PATCH] pcm: Add missing signed and endianess definitions for DSD - formats - -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_misc.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/pcm/pcm_misc.c b/src/pcm/pcm_misc.c -index 44bb89cb0d44..24d52f910cb6 100644 ---- a/src/pcm/pcm_misc.c -+++ b/src/pcm/pcm_misc.c -@@ -62,6 +62,8 @@ int snd_pcm_format_signed(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U20_3BE: - case SNDRV_PCM_FORMAT_U18_3LE: - case SNDRV_PCM_FORMAT_U18_3BE: -+ case SNDRV_PCM_FORMAT_DSD_U8: -+ case SNDRV_PCM_FORMAT_DSD_U16_LE: - return 0; - default: - return -EINVAL; -@@ -150,6 +152,8 @@ int snd_pcm_format_little_endian(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U24_3BE: - case SNDRV_PCM_FORMAT_U20_3BE: - case SNDRV_PCM_FORMAT_U18_3BE: -+ case SNDRV_PCM_FORMAT_DSD_U8: -+ case SNDRV_PCM_FORMAT_DSD_U16_LE: - return 0; - default: - return -EINVAL; --- -2.0.4 - diff --git a/0019-Sync-enum-snd_hwdep_iface_t-with-include-asound-asou.patch b/0019-Sync-enum-snd_hwdep_iface_t-with-include-asound-asou.patch deleted file mode 100644 index aa61805..0000000 --- a/0019-Sync-enum-snd_hwdep_iface_t-with-include-asound-asou.patch +++ /dev/null @@ -1,38 +0,0 @@ -From dfc3bf97bf45bd78d498d20fcf930541350f836d Mon Sep 17 00:00:00 2001 -From: Takashi Sakamoto -Date: Mon, 18 Aug 2014 18:45:17 +0900 -Subject: [PATCH] Sync enum snd_hwdep_iface_t with include/asound/asound.h - -Some members in this enumerated type has not updated for 9 years, although -kernel-drivers added them during this period. This commit adds them following -to a commit 87df9f3 'sync include/asound/asound.h with 3.17-rc1 kernel'. - -Signed-off-by: Takashi Sakamoto -Signed-off-by: Takashi Iwai ---- - include/hwdep.h | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/include/hwdep.h b/include/hwdep.h -index ab12822cf799..6496fa2d7d87 100644 ---- a/include/hwdep.h -+++ b/include/hwdep.h -@@ -68,8 +68,13 @@ typedef enum _snd_hwdep_iface { - SND_HWDEP_IFACE_USX2Y_PCM, /**< Tascam US122, US224 & US428 raw USB PCM */ - SND_HWDEP_IFACE_PCXHR, /**< Digigram PCXHR */ - SND_HWDEP_IFACE_SB_RC, /**< SB Extigy/Audigy2NX remote control */ -- -- SND_HWDEP_IFACE_LAST = SND_HWDEP_IFACE_SB_RC /**< last known hwdep interface */ -+ SND_HWDEP_IFACE_HDA, /**< HD-audio */ -+ SND_HWDEP_IFACE_USB_STREAM, /**< direct access to usb stream */ -+ SND_HWDEP_IFACE_FW_DICE, /**< TC DICE FireWire device */ -+ SND_HWDEP_IFACE_FW_FIREWORKS, /**< Echo Audio Fireworks based device */ -+ SND_HWDEP_IFACE_FW_BEBOB, /**< BridgeCo BeBoB based device */ -+ -+ SND_HWDEP_IFACE_LAST = SND_HWDEP_IFACE_FW_BEBOB /**< last known hwdep interface */ - } snd_hwdep_iface_t; - - /** open for reading */ --- -2.1.0 - diff --git a/0020-pcm-2nd-round-of-pcm_misc-DSD-fixes.patch b/0020-pcm-2nd-round-of-pcm_misc-DSD-fixes.patch deleted file mode 100644 index 4b0f067..0000000 --- a/0020-pcm-2nd-round-of-pcm_misc-DSD-fixes.patch +++ /dev/null @@ -1,48 +0,0 @@ -From b9f58dcc6f91fde42e6dd2bb831d6063855512a7 Mon Sep 17 00:00:00 2001 -From: Jurgen Kramer -Date: Fri, 22 Aug 2014 10:15:10 +0200 -Subject: [PATCH] pcm: 2nd round of pcm_misc DSD fixes - -Functions 'snd_pcm_format_silence_64' and 'snd_pcm_format_size' also need to be -able to handle the DSD smaple format. - -Changes from v1: -- Correct silence pattern for DSD - -Signed-off-by: Jurgen Kramer -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_misc.c | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/pcm/pcm_misc.c b/src/pcm/pcm_misc.c -index 24d52f910cb6..46fc7719978e 100644 ---- a/src/pcm/pcm_misc.c -+++ b/src/pcm/pcm_misc.c -@@ -317,11 +317,13 @@ ssize_t snd_pcm_format_size(snd_pcm_format_t format, size_t samples) - switch (format) { - case SNDRV_PCM_FORMAT_S8: - case SNDRV_PCM_FORMAT_U8: -+ case SNDRV_PCM_FORMAT_DSD_U8: - return samples; - case SNDRV_PCM_FORMAT_S16_LE: - case SNDRV_PCM_FORMAT_S16_BE: - case SNDRV_PCM_FORMAT_U16_LE: - case SNDRV_PCM_FORMAT_U16_BE: -+ case SNDRV_PCM_FORMAT_DSD_U16_LE: - return samples * 2; - case SNDRV_PCM_FORMAT_S18_3LE: - case SNDRV_PCM_FORMAT_S18_3BE: -@@ -390,6 +392,9 @@ u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) - return 0; - case SNDRV_PCM_FORMAT_U8: - return 0x8080808080808080ULL; -+ case SNDRV_PCM_FORMAT_DSD_U8: -+ case SNDRV_PCM_FORMAT_DSD_U16_LE: -+ return 0x6969696969696969ULL; - #ifdef SNDRV_LITTLE_ENDIAN - case SNDRV_PCM_FORMAT_U16_LE: - return 0x8000800080008000ULL; --- -2.1.0 - diff --git a/0021-doc-fix-cross-compiling-example.patch b/0021-doc-fix-cross-compiling-example.patch deleted file mode 100644 index e994d76..0000000 --- a/0021-doc-fix-cross-compiling-example.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 5f1960e3d8d56aa63afe2c37c6a3f4aa03571627 Mon Sep 17 00:00:00 2001 -From: Dmitry Voytik -Date: Fri, 22 Aug 2014 14:17:10 +0400 -Subject: [PATCH] doc: fix cross-compiling example - -Simplest way to configure cross-compilation with configure -script is to pass '--host' option. -Passing just '--target' doesn't work. - -Signed-off-by: Dmitry Voytik -Signed-off-by: Takashi Iwai ---- - INSTALL | 9 +++------ - 1 file changed, 3 insertions(+), 6 deletions(-) - -diff --git a/INSTALL b/INSTALL -index 91a8648e1462..47086e3cd7cc 100644 ---- a/INSTALL -+++ b/INSTALL -@@ -78,16 +78,13 @@ When you would like to cross-compile ALSA library (e.g. compile on - i686 host but for arm architecture) you will need to call ./configure - script with additional parameters: - --CC=arm-linux-gcc ./configure --target=arm-linux -+CC=arm-linux-gcc ./configure --host=arm-linux - --In this example host where the library is build is guessed (should be --given with --host=platform) and target for which is the library build is --Linux on ARM architecture. You should omit setting 'CC' variable and --cross-compiler will be guessed too. -+You can omit setting 'CC' variable and cross-compiler will be guessed too. - - So simplest version would be: - --./configure --target=arm-linux -+./configure --host=arm-linux - - For platform names in the form cpu-vendor-os (or aliases for this) - you should look in 'config.guess' script. Target and all paths --- -2.1.0 - diff --git a/0022-pcm-fix-snd_pcm_mmap_hw_avail-near-the-boundary.patch b/0022-pcm-fix-snd_pcm_mmap_hw_avail-near-the-boundary.patch deleted file mode 100644 index e8b29f8..0000000 --- a/0022-pcm-fix-snd_pcm_mmap_hw_avail-near-the-boundary.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 99a2254f5f2a085b81efcc80950033a2b6110ecd Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 31 Aug 2014 22:23:47 +0600 -Subject: [PATCH] pcm: fix snd_pcm_mmap_hw_avail() near the boundary - -This function returned incorrect results when hw.ptr was near the -boundary and hw.appl_ptr was near zero. Here "incorrect" means "greater -than the boundary". - -The result was incorrect, because it was used as a return value of -various *_rewindable() functions and also as the delay for ioplug. - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_local.h | 8 +------- - 1 file changed, 1 insertion(+), 7 deletions(-) - -diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h -index 80bbe5973bdb..74ebd609334a 100644 ---- a/src/pcm/pcm_local.h -+++ b/src/pcm/pcm_local.h -@@ -461,13 +461,7 @@ static inline snd_pcm_sframes_t snd_pcm_mmap_capture_hw_avail(snd_pcm_t *pcm) - - static inline snd_pcm_sframes_t snd_pcm_mmap_hw_avail(snd_pcm_t *pcm) - { -- snd_pcm_sframes_t avail; -- avail = *pcm->hw.ptr - *pcm->appl.ptr; -- if (pcm->stream == SND_PCM_STREAM_PLAYBACK) -- avail += pcm->buffer_size; -- if (avail < 0) -- avail += pcm->boundary; -- return pcm->buffer_size - avail; -+ return pcm->buffer_size - snd_pcm_mmap_avail(pcm); - } - - static inline const snd_pcm_channel_area_t *snd_pcm_mmap_areas(snd_pcm_t *pcm) --- -2.1.2 - diff --git a/0023-pcm-fix-return-value-of-snd_pcm_share_slave_avail.patch b/0023-pcm-fix-return-value-of-snd_pcm_share_slave_avail.patch deleted file mode 100644 index a55823e..0000000 --- a/0023-pcm-fix-return-value-of-snd_pcm_share_slave_avail.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 622b1b6bdbb34baca885b65643d4796057574eb7 Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Tue, 2 Sep 2014 01:29:36 +0600 -Subject: [PATCH] pcm: fix return value of snd_pcm_share_slave_avail - -The return value was wrong for playback if slave->hw_ptr was near the -boundary and *pcm->appl.ptr was near zero. The wrong result was greater -than the boundary. - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_share.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c -index 97705447dd6d..c301c7af799a 100644 ---- a/src/pcm/pcm_share.c -+++ b/src/pcm/pcm_share.c -@@ -128,6 +128,8 @@ static snd_pcm_uframes_t snd_pcm_share_slave_avail(snd_pcm_share_slave_t *slave) - avail += pcm->buffer_size; - if (avail < 0) - avail += pcm->boundary; -+ else if ((snd_pcm_uframes_t) avail >= pcm->boundary) -+ avail -= pcm->boundary; - return avail; - } - --- -2.1.2 - diff --git a/0024-pcm-add-new-32-bit-DSD-sample-format.patch b/0024-pcm-add-new-32-bit-DSD-sample-format.patch deleted file mode 100644 index b104d7d..0000000 --- a/0024-pcm-add-new-32-bit-DSD-sample-format.patch +++ /dev/null @@ -1,123 +0,0 @@ -From e59ffbf30ec13f7f1615ba266ec2f3e770801d6f Mon Sep 17 00:00:00 2001 -From: Jurgen Kramer -Date: Wed, 10 Sep 2014 09:00:28 +0200 -Subject: [PATCH] pcm: add new 32-bit DSD sample format - -Add the new DSD_U32_LE sample format to alsa-lib. - -NB include/pcm.h and include/sound/asound.h are updated so a new sync with the -kernel headers is not needed - -Signed-off-by: Jurgen Kramer -Signed-off-by: Takashi Iwai ---- - include/pcm.h | 4 +++- - include/sound/asound.h | 3 ++- - src/pcm/pcm.c | 2 ++ - src/pcm/pcm_misc.c | 6 ++++++ - 4 files changed, 13 insertions(+), 2 deletions(-) - -diff --git a/include/pcm.h b/include/pcm.h -index 11e9f0dfba13..db88ad5ee41a 100644 ---- a/include/pcm.h -+++ b/include/pcm.h -@@ -211,7 +211,9 @@ typedef enum _snd_pcm_format { - SND_PCM_FORMAT_DSD_U8, - /* Direct Stream Digital (DSD) in 2-byte samples (x16) */ - SND_PCM_FORMAT_DSD_U16_LE, -- SND_PCM_FORMAT_LAST = SND_PCM_FORMAT_DSD_U16_LE, -+ /* Direct Stream Digital (DSD) in 4-byte samples (x32) */ -+ SND_PCM_FORMAT_DSD_U32_LE, -+ SND_PCM_FORMAT_LAST = SND_PCM_FORMAT_DSD_U32_LE, - - #if __BYTE_ORDER == __LITTLE_ENDIAN - /** Signed 16 bit CPU endian */ -diff --git a/include/sound/asound.h b/include/sound/asound.h -index 32168f7ffce3..6ee586728df9 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -219,7 +219,8 @@ typedef int __bitwise snd_pcm_format_t; - #define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47) /* 1 sample in 1 byte */ - #define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48) /* DSD, 1-byte samples DSD (x8) */ - #define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49) /* DSD, 2-byte samples DSD (x16), little endian */ --#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U16_LE -+#define SNDRV_PCM_FORMAT_DSD_U32_LE ((__force snd_pcm_format_t) 50) /* DSD, 4-byte samples DSD (x32), little endian */ -+#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_LE - - #ifdef SNDRV_LITTLE_ENDIAN - #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE -diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c -index 1399a5b2e671..2e2433829016 100644 ---- a/src/pcm/pcm.c -+++ b/src/pcm/pcm.c -@@ -1565,6 +1565,7 @@ static const char *const snd_pcm_format_names[] = { - FORMAT(G723_40_1B), - FORMAT(DSD_U8), - FORMAT(DSD_U16_LE), -+ FORMAT(DSD_U32_LE), - }; - - static const char *const snd_pcm_format_aliases[SND_PCM_FORMAT_LAST+1] = { -@@ -1624,6 +1625,7 @@ static const char *const snd_pcm_format_descriptions[] = { - FORMATD(G723_40_1B, "G.723 (ADPCM) 40 kbit/s, 1 sample in 1 byte"), - FORMATD(DSD_U8, "Direct Stream Digital, 1-byte (x8), oldest bit in MSB"), - FORMATD(DSD_U16_LE, "Direct Stream Digital, 2-byte (x16), little endian, oldest bits in MSB"), -+ FORMATD(DSD_U32_LE, "Direct Stream Digital, 4-byte (x32), little endian, oldest bits in MSB"), - }; - - static const char *const snd_pcm_type_names[] = { -diff --git a/src/pcm/pcm_misc.c b/src/pcm/pcm_misc.c -index 46fc7719978e..92721796aa1f 100644 ---- a/src/pcm/pcm_misc.c -+++ b/src/pcm/pcm_misc.c -@@ -64,6 +64,7 @@ int snd_pcm_format_signed(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U18_3BE: - case SNDRV_PCM_FORMAT_DSD_U8: - case SNDRV_PCM_FORMAT_DSD_U16_LE: -+ case SNDRV_PCM_FORMAT_DSD_U32_LE: - return 0; - default: - return -EINVAL; -@@ -154,6 +155,7 @@ int snd_pcm_format_little_endian(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U18_3BE: - case SNDRV_PCM_FORMAT_DSD_U8: - case SNDRV_PCM_FORMAT_DSD_U16_LE: -+ case SNDRV_PCM_FORMAT_DSD_U32_LE: - return 0; - default: - return -EINVAL; -@@ -232,6 +234,7 @@ int snd_pcm_format_width(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U32_BE: - case SNDRV_PCM_FORMAT_FLOAT_LE: - case SNDRV_PCM_FORMAT_FLOAT_BE: -+ case SNDRV_PCM_FORMAT_DSD_U32_LE: - return 32; - case SNDRV_PCM_FORMAT_FLOAT64_LE: - case SNDRV_PCM_FORMAT_FLOAT64_BE: -@@ -292,6 +295,7 @@ int snd_pcm_format_physical_width(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_FLOAT_BE: - case SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE: - case SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE: -+ case SNDRV_PCM_FORMAT_DSD_U32_LE: - return 32; - case SNDRV_PCM_FORMAT_FLOAT64_LE: - case SNDRV_PCM_FORMAT_FLOAT64_BE: -@@ -348,6 +352,7 @@ ssize_t snd_pcm_format_size(snd_pcm_format_t format, size_t samples) - case SNDRV_PCM_FORMAT_U32_BE: - case SNDRV_PCM_FORMAT_FLOAT_LE: - case SNDRV_PCM_FORMAT_FLOAT_BE: -+ case SNDRV_PCM_FORMAT_DSD_U32_LE: - return samples * 4; - case SNDRV_PCM_FORMAT_FLOAT64_LE: - case SNDRV_PCM_FORMAT_FLOAT64_BE: -@@ -394,6 +399,7 @@ u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) - return 0x8080808080808080ULL; - case SNDRV_PCM_FORMAT_DSD_U8: - case SNDRV_PCM_FORMAT_DSD_U16_LE: -+ case SNDRV_PCM_FORMAT_DSD_U32_LE: - return 0x6969696969696969ULL; - #ifdef SNDRV_LITTLE_ENDIAN - case SNDRV_PCM_FORMAT_U16_LE: --- -2.1.2 - diff --git a/0025-dmix-actually-rewind-when-running-or-being-drained.patch b/0025-dmix-actually-rewind-when-running-or-being-drained.patch deleted file mode 100644 index bea0d18..0000000 --- a/0025-dmix-actually-rewind-when-running-or-being-drained.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 9a56a673a6cd7343a9345921e2b1cbbb43fb725f Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 14 Sep 2014 00:30:13 +0600 -Subject: [PATCH] dmix: actually rewind when running or being drained - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_dmix.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c -index 7c535093ea0f..73cbe3f8d0b2 100644 ---- a/src/pcm/pcm_dmix.c -+++ b/src/pcm/pcm_dmix.c -@@ -669,11 +669,15 @@ static snd_pcm_sframes_t snd_pcm_dmix_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t f - snd_pcm_direct_t *dmix = pcm->private_data; - snd_pcm_uframes_t slave_appl_ptr, slave_size; - snd_pcm_uframes_t appl_ptr, size, transfer, result; -+ int err; - const snd_pcm_channel_area_t *src_areas, *dst_areas; - - if (dmix->state == SND_PCM_STATE_RUNNING || -- dmix->state == SND_PCM_STATE_DRAINING) -- return snd_pcm_dmix_hwsync(pcm); -+ dmix->state == SND_PCM_STATE_DRAINING) { -+ err = snd_pcm_dmix_hwsync(pcm); -+ if (err < 0) -+ return err; -+ } - - if (dmix->last_appl_ptr < dmix->appl_ptr) - size = dmix->appl_ptr - dmix->last_appl_ptr; --- -2.1.2 - diff --git a/0026-pcm-express-the-rewind-size-limitation-logic-better.patch b/0026-pcm-express-the-rewind-size-limitation-logic-better.patch deleted file mode 100644 index 1383bde..0000000 --- a/0026-pcm-express-the-rewind-size-limitation-logic-better.patch +++ /dev/null @@ -1,112 +0,0 @@ -From 9a43dc15b2979ed6d8850b033b594fbef829c991 Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 14 Sep 2014 00:30:14 +0600 -Subject: [PATCH] pcm: express the rewind size limitation logic better - -There are a few places where the argument of the .rewind or .forward -callback is checked against the same value as returned by .rewindable or -.forwardable. Express this "don't rewind more than rewindable" logic -explicitly, so that the future fixes to the rewindable size can go to -one function instead of two. - -While at it, take advantage of the fact that snd_pcm_mmap_avail() cannot -return negative values (except due to integer overflow, which is AFAICS -impossible given the current boundary choice). - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_dmix.c | 4 +--- - src/pcm/pcm_dshare.c | 6 ++---- - src/pcm/pcm_dsnoop.c | 6 ++---- - src/pcm/pcm_plugin.c | 4 ++-- - 4 files changed, 7 insertions(+), 13 deletions(-) - -diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c -index 73cbe3f8d0b2..ffde12a1a46c 100644 ---- a/src/pcm/pcm_dmix.c -+++ b/src/pcm/pcm_dmix.c -@@ -751,9 +751,7 @@ static snd_pcm_sframes_t snd_pcm_dmix_forward(snd_pcm_t *pcm, snd_pcm_uframes_t - { - snd_pcm_sframes_t avail; - -- avail = snd_pcm_mmap_playback_avail(pcm); -- if (avail < 0) -- return 0; -+ avail = snd_pcm_dmix_forwardable(pcm); - if (frames > (snd_pcm_uframes_t)avail) - frames = avail; - snd_pcm_mmap_appl_forward(pcm, frames); -diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c -index b985172825e7..f1a1a1d75229 100644 ---- a/src/pcm/pcm_dshare.c -+++ b/src/pcm/pcm_dshare.c -@@ -419,7 +419,7 @@ static snd_pcm_sframes_t snd_pcm_dshare_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t - { - snd_pcm_sframes_t avail; - -- avail = snd_pcm_mmap_playback_hw_avail(pcm); -+ avail = snd_pcm_dshare_rewindable(pcm); - if (avail < 0) - return 0; - if (frames > (snd_pcm_uframes_t)avail) -@@ -437,9 +437,7 @@ static snd_pcm_sframes_t snd_pcm_dshare_forward(snd_pcm_t *pcm, snd_pcm_uframes_ - { - snd_pcm_sframes_t avail; - -- avail = snd_pcm_mmap_playback_avail(pcm); -- if (avail < 0) -- return 0; -+ avail = snd_pcm_dshare_forwardable(pcm); - if (frames > (snd_pcm_uframes_t)avail) - frames = avail; - snd_pcm_mmap_appl_forward(pcm, frames); -diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c -index 0f9c9df481bc..e56e4022becf 100644 ---- a/src/pcm/pcm_dsnoop.c -+++ b/src/pcm/pcm_dsnoop.c -@@ -342,9 +342,7 @@ static snd_pcm_sframes_t snd_pcm_dsnoop_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t - { - snd_pcm_sframes_t avail; - -- avail = snd_pcm_mmap_capture_avail(pcm); -- if (avail < 0) -- return 0; -+ avail = snd_pcm_dsnoop_rewindable(pcm); - if (frames > (snd_pcm_uframes_t)avail) - frames = avail; - snd_pcm_mmap_appl_backward(pcm, frames); -@@ -360,7 +358,7 @@ static snd_pcm_sframes_t snd_pcm_dsnoop_forward(snd_pcm_t *pcm, snd_pcm_uframes_ - { - snd_pcm_sframes_t avail; - -- avail = snd_pcm_mmap_capture_hw_avail(pcm); -+ avail = snd_pcm_dsnoop_forwardable(pcm); - if (avail < 0) - return 0; - if (frames > (snd_pcm_uframes_t)avail) -diff --git a/src/pcm/pcm_plugin.c b/src/pcm/pcm_plugin.c -index 4ddf10c1989e..a607ccfe27de 100644 ---- a/src/pcm/pcm_plugin.c -+++ b/src/pcm/pcm_plugin.c -@@ -204,7 +204,7 @@ static snd_pcm_sframes_t snd_pcm_plugin_rewindable(snd_pcm_t *pcm) - snd_pcm_sframes_t snd_pcm_plugin_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) - { - snd_pcm_plugin_t *plugin = pcm->private_data; -- snd_pcm_sframes_t n = snd_pcm_mmap_hw_avail(pcm); -+ snd_pcm_sframes_t n = snd_pcm_plugin_rewindable(pcm); - snd_pcm_sframes_t sframes; - - if ((snd_pcm_uframes_t)n < frames) -@@ -232,7 +232,7 @@ static snd_pcm_sframes_t snd_pcm_plugin_forwardable(snd_pcm_t *pcm) - snd_pcm_sframes_t snd_pcm_plugin_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames) - { - snd_pcm_plugin_t *plugin = pcm->private_data; -- snd_pcm_sframes_t n = snd_pcm_mmap_avail(pcm); -+ snd_pcm_sframes_t n = snd_pcm_plugin_forwardable(pcm); - snd_pcm_sframes_t sframes; - - if ((snd_pcm_uframes_t)n < frames) --- -2.1.2 - diff --git a/0027-pcm-handle-negative-values-from-snd_pcm_mmap_hw_avai.patch b/0027-pcm-handle-negative-values-from-snd_pcm_mmap_hw_avai.patch deleted file mode 100644 index 24838cf..0000000 --- a/0027-pcm-handle-negative-values-from-snd_pcm_mmap_hw_avai.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 78c804fc9348e4c29f1c77dd4b6ad586393aa628 Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 14 Sep 2014 00:30:15 +0600 -Subject: [PATCH] pcm: handle negative values from snd_pcm_mmap_hw_avail - -Such negative values can happen when an underrun happens and xrun -detection is disabled. Another situation is if the device updated the -pointer before alsa-lib has a chance to detect the xrun. - -The problem is that these negative values could propagate to the -snd_pcm_rewindable return value, where it is specified that negative -returns must be interpreted as error codes and not as negative amount of -samples. - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_dmix.c | 2 +- - src/pcm/pcm_dshare.c | 4 +--- - src/pcm/pcm_hw.c | 2 +- - src/pcm/pcm_ioplug.c | 2 +- - src/pcm/pcm_local.h | 18 ++++++++++++++++++ - src/pcm/pcm_plugin.c | 2 +- - 6 files changed, 23 insertions(+), 7 deletions(-) - -diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c -index ffde12a1a46c..babde6a15efe 100644 ---- a/src/pcm/pcm_dmix.c -+++ b/src/pcm/pcm_dmix.c -@@ -661,7 +661,7 @@ static int snd_pcm_dmix_pause(snd_pcm_t *pcm ATTRIBUTE_UNUSED, int enable ATTRIB - - static snd_pcm_sframes_t snd_pcm_dmix_rewindable(snd_pcm_t *pcm) - { -- return snd_pcm_mmap_hw_avail(pcm); -+ return snd_pcm_mmap_playback_hw_rewindable(pcm); - } - - static snd_pcm_sframes_t snd_pcm_dmix_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) -diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c -index f1a1a1d75229..020e6f7d9307 100644 ---- a/src/pcm/pcm_dshare.c -+++ b/src/pcm/pcm_dshare.c -@@ -412,7 +412,7 @@ static int snd_pcm_dshare_pause(snd_pcm_t *pcm ATTRIBUTE_UNUSED, int enable ATTR - - static snd_pcm_sframes_t snd_pcm_dshare_rewindable(snd_pcm_t *pcm) - { -- return snd_pcm_mmap_playback_hw_avail(pcm); -+ return snd_pcm_mmap_playback_hw_rewindable(pcm); - } - - static snd_pcm_sframes_t snd_pcm_dshare_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) -@@ -420,8 +420,6 @@ static snd_pcm_sframes_t snd_pcm_dshare_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t - snd_pcm_sframes_t avail; - - avail = snd_pcm_dshare_rewindable(pcm); -- if (avail < 0) -- return 0; - if (frames > (snd_pcm_uframes_t)avail) - frames = avail; - snd_pcm_mmap_appl_backward(pcm, frames); -diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c -index 74cff672a0c1..c34b766ee035 100644 ---- a/src/pcm/pcm_hw.c -+++ b/src/pcm/pcm_hw.c -@@ -659,7 +659,7 @@ static int snd_pcm_hw_pause(snd_pcm_t *pcm, int enable) - - static snd_pcm_sframes_t snd_pcm_hw_rewindable(snd_pcm_t *pcm) - { -- return snd_pcm_mmap_hw_avail(pcm); -+ return snd_pcm_mmap_hw_rewindable(pcm); - } - - static snd_pcm_sframes_t snd_pcm_hw_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) -diff --git a/src/pcm/pcm_ioplug.c b/src/pcm/pcm_ioplug.c -index 85a88911eafc..fe9347c835d5 100644 ---- a/src/pcm/pcm_ioplug.c -+++ b/src/pcm/pcm_ioplug.c -@@ -503,7 +503,7 @@ static int snd_pcm_ioplug_pause(snd_pcm_t *pcm, int enable) - - static snd_pcm_sframes_t snd_pcm_ioplug_rewindable(snd_pcm_t *pcm) - { -- return snd_pcm_mmap_hw_avail(pcm); -+ return snd_pcm_mmap_hw_rewindable(pcm); - } - - static snd_pcm_sframes_t snd_pcm_ioplug_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) -diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h -index 74ebd609334a..394505f978ac 100644 ---- a/src/pcm/pcm_local.h -+++ b/src/pcm/pcm_local.h -@@ -464,6 +464,24 @@ static inline snd_pcm_sframes_t snd_pcm_mmap_hw_avail(snd_pcm_t *pcm) - return pcm->buffer_size - snd_pcm_mmap_avail(pcm); - } - -+static inline snd_pcm_sframes_t snd_pcm_mmap_playback_hw_rewindable(snd_pcm_t *pcm) -+{ -+ snd_pcm_sframes_t ret = snd_pcm_mmap_playback_hw_avail(pcm); -+ return (ret >= 0) ? ret : 0; -+} -+ -+static inline snd_pcm_sframes_t snd_pcm_mmap_capture_hw_rewindable(snd_pcm_t *pcm) -+{ -+ snd_pcm_sframes_t ret = snd_pcm_mmap_capture_hw_avail(pcm); -+ return (ret >= 0) ? ret : 0; -+} -+ -+static inline snd_pcm_uframes_t snd_pcm_mmap_hw_rewindable(snd_pcm_t *pcm) -+{ -+ snd_pcm_sframes_t ret = snd_pcm_mmap_hw_avail(pcm); -+ return (ret >= 0) ? ret : 0; -+} -+ - static inline const snd_pcm_channel_area_t *snd_pcm_mmap_areas(snd_pcm_t *pcm) - { - if (pcm->stopped_areas && -diff --git a/src/pcm/pcm_plugin.c b/src/pcm/pcm_plugin.c -index a607ccfe27de..c19e2f17a730 100644 ---- a/src/pcm/pcm_plugin.c -+++ b/src/pcm/pcm_plugin.c -@@ -198,7 +198,7 @@ static int snd_pcm_plugin_reset(snd_pcm_t *pcm) - - static snd_pcm_sframes_t snd_pcm_plugin_rewindable(snd_pcm_t *pcm) - { -- return snd_pcm_mmap_hw_avail(pcm); -+ return snd_pcm_mmap_hw_rewindable(pcm); - } - - snd_pcm_sframes_t snd_pcm_plugin_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) --- -2.1.2 - diff --git a/0028-pcm-rate-use-the-snd_pcm_mmap_hw_avail-function.patch b/0028-pcm-rate-use-the-snd_pcm_mmap_hw_avail-function.patch deleted file mode 100644 index 113b05c..0000000 --- a/0028-pcm-rate-use-the-snd_pcm_mmap_hw_avail-function.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 0889e9470667dd68d5a0ce47a10a8c6d61b7bc79 Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 14 Sep 2014 00:30:16 +0600 -Subject: [PATCH] pcm, rate: use the snd_pcm_mmap_hw_avail function - -instead of the open-coded equivalent - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_rate.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c -index 5e811bb7192a..b436a8ea65ba 100644 ---- a/src/pcm/pcm_rate.c -+++ b/src/pcm/pcm_rate.c -@@ -593,10 +593,7 @@ static int snd_pcm_rate_hwsync(snd_pcm_t *pcm) - static int snd_pcm_rate_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp) - { - snd_pcm_rate_hwsync(pcm); -- if (pcm->stream == SND_PCM_STREAM_PLAYBACK) -- *delayp = snd_pcm_mmap_playback_hw_avail(pcm); -- else -- *delayp = snd_pcm_mmap_capture_hw_avail(pcm); -+ *delayp = snd_pcm_mmap_hw_avail(pcm); - return 0; - } - --- -2.1.2 - diff --git a/0029-pcm-null-use-the-snd_pcm_mmap_avail-function.patch b/0029-pcm-null-use-the-snd_pcm_mmap_avail-function.patch deleted file mode 100644 index a3db441..0000000 --- a/0029-pcm-null-use-the-snd_pcm_mmap_avail-function.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 4fafa468d4bb4618cfde7183f820d8fdd373dcb1 Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 14 Sep 2014 00:30:17 +0600 -Subject: [PATCH] pcm, null: use the snd_pcm_mmap_avail function - -instead of the open-coded equivalent - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_null.c | 5 +---- - 1 file changed, 1 insertion(+), 4 deletions(-) - -diff --git a/src/pcm/pcm_null.c b/src/pcm/pcm_null.c -index f11a1020f7e3..05298200ac0a 100644 ---- a/src/pcm/pcm_null.c -+++ b/src/pcm/pcm_null.c -@@ -86,10 +86,7 @@ static snd_pcm_sframes_t snd_pcm_null_avail_update(snd_pcm_t *pcm) - if (null->state == SND_PCM_STATE_PREPARED) { - /* it is required to return the correct avail count for */ - /* the prepared stream, otherwise the start is not called */ -- if (pcm->stream == SND_PCM_STREAM_PLAYBACK) -- return snd_pcm_mmap_playback_avail(pcm); -- else -- return snd_pcm_mmap_capture_avail(pcm); -+ return snd_pcm_mmap_avail(pcm); - } - return pcm->buffer_size; - } --- -2.1.2 - diff --git a/0030-rate-handle-negative-values-from-snd_pcm_mmap_playba.patch b/0030-rate-handle-negative-values-from-snd_pcm_mmap_playba.patch deleted file mode 100644 index 4b30444..0000000 --- a/0030-rate-handle-negative-values-from-snd_pcm_mmap_playba.patch +++ /dev/null @@ -1,43 +0,0 @@ -From ff9d213ff80f6fe0456565d4f524366443217174 Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 14 Sep 2014 00:30:18 +0600 -Subject: [PATCH] rate: handle negative values from - snd_pcm_mmap_playback_hw_avail - -Such negative returns are possible during an underrun if xrun detection -is disabled. - -So, don't store the result in an unsigned variable (where it will -overflow), and postpone the trigger in such case, too. - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_rate.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c -index b436a8ea65ba..736d5583cd4c 100644 ---- a/src/pcm/pcm_rate.c -+++ b/src/pcm/pcm_rate.c -@@ -1058,7 +1058,7 @@ static snd_pcm_state_t snd_pcm_rate_state(snd_pcm_t *pcm) - static int snd_pcm_rate_start(snd_pcm_t *pcm) - { - snd_pcm_rate_t *rate = pcm->private_data; -- snd_pcm_uframes_t avail; -+ snd_pcm_sframes_t avail; - - if (pcm->stream == SND_PCM_STREAM_CAPTURE) - return snd_pcm_start(rate->gen.slave); -@@ -1069,7 +1069,7 @@ static int snd_pcm_rate_start(snd_pcm_t *pcm) - gettimestamp(&rate->trigger_tstamp, pcm->tstamp_type); - - avail = snd_pcm_mmap_playback_hw_avail(rate->gen.slave); -- if (avail == 0) { -+ if (avail <= 0) { - /* postpone the trigger since we have no data committed yet */ - rate->start_pending = 1; - return 0; --- -2.1.2 - diff --git a/0031-dsnoop-rewindable-and-forwardable-logic-was-swapped.patch b/0031-dsnoop-rewindable-and-forwardable-logic-was-swapped.patch deleted file mode 100644 index 7c5a118..0000000 --- a/0031-dsnoop-rewindable-and-forwardable-logic-was-swapped.patch +++ /dev/null @@ -1,45 +0,0 @@ -From e5e1af83881e4dbe20749a314703db7d0fd091c7 Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 14 Sep 2014 00:30:19 +0600 -Subject: [PATCH] dsnoop: rewindable and forwardable logic was swapped - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_dsnoop.c | 6 ++---- - 1 file changed, 2 insertions(+), 4 deletions(-) - -diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c -index e56e4022becf..8333eefdaf4c 100644 ---- a/src/pcm/pcm_dsnoop.c -+++ b/src/pcm/pcm_dsnoop.c -@@ -335,7 +335,7 @@ static int snd_pcm_dsnoop_pause(snd_pcm_t *pcm ATTRIBUTE_UNUSED, int enable ATTR - - static snd_pcm_sframes_t snd_pcm_dsnoop_rewindable(snd_pcm_t *pcm) - { -- return snd_pcm_mmap_capture_avail(pcm); -+ return snd_pcm_mmap_capture_hw_avail(pcm); - } - - static snd_pcm_sframes_t snd_pcm_dsnoop_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames) -@@ -351,7 +351,7 @@ static snd_pcm_sframes_t snd_pcm_dsnoop_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t - - static snd_pcm_sframes_t snd_pcm_dsnoop_forwardable(snd_pcm_t *pcm) - { -- return snd_pcm_mmap_capture_hw_avail(pcm); -+ return snd_pcm_mmap_capture_avail(pcm); - } - - static snd_pcm_sframes_t snd_pcm_dsnoop_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames) -@@ -359,8 +359,6 @@ static snd_pcm_sframes_t snd_pcm_dsnoop_forward(snd_pcm_t *pcm, snd_pcm_uframes_ - snd_pcm_sframes_t avail; - - avail = snd_pcm_dsnoop_forwardable(pcm); -- if (avail < 0) -- return 0; - if (frames > (snd_pcm_uframes_t)avail) - frames = avail; - snd_pcm_mmap_appl_forward(pcm, frames); --- -2.1.2 - diff --git a/0033-pcm-file-don-t-recurse-in-the-rewindable-and-forward.patch b/0033-pcm-file-don-t-recurse-in-the-rewindable-and-forward.patch deleted file mode 100644 index 85a86be..0000000 --- a/0033-pcm-file-don-t-recurse-in-the-rewindable-and-forward.patch +++ /dev/null @@ -1,37 +0,0 @@ -From f803a3394a7b7390087be3cc192b2895f9e960ea Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Sun, 14 Sep 2014 00:30:21 +0600 -Subject: [PATCH] pcm, file: don't recurse in the rewindable and forwardable - callbacks - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_file.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c -index a0b8bf41bf5b..5541a9395027 100644 ---- a/src/pcm/pcm_file.c -+++ b/src/pcm/pcm_file.c -@@ -454,7 +454,7 @@ static int snd_pcm_file_drain(snd_pcm_t *pcm) - static snd_pcm_sframes_t snd_pcm_file_rewindable(snd_pcm_t *pcm) - { - snd_pcm_file_t *file = pcm->private_data; -- snd_pcm_sframes_t res = snd_pcm_rewindable(pcm); -+ snd_pcm_sframes_t res = snd_pcm_rewindable(file->gen.slave); - snd_pcm_sframes_t n = snd_pcm_bytes_to_frames(pcm, file->wbuf_used_bytes); - if (res > n) - res = n; -@@ -482,7 +482,7 @@ static snd_pcm_sframes_t snd_pcm_file_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t f - static snd_pcm_sframes_t snd_pcm_file_forwardable(snd_pcm_t *pcm) - { - snd_pcm_file_t *file = pcm->private_data; -- snd_pcm_sframes_t res = snd_pcm_forwardable(pcm); -+ snd_pcm_sframes_t res = snd_pcm_forwardable(file->gen.slave); - snd_pcm_sframes_t n = snd_pcm_bytes_to_frames(pcm, file->wbuf_size_bytes - file->wbuf_used_bytes); - if (res > n) - res = n; --- -2.1.2 - diff --git a/0034-pcm-route-Fix-the-bad-condition-always-false.patch b/0034-pcm-route-Fix-the-bad-condition-always-false.patch deleted file mode 100644 index b5edef9..0000000 --- a/0034-pcm-route-Fix-the-bad-condition-always-false.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 650b8c975cd5c3f7dca6e78e74db587b57bcdfd8 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Tue, 16 Sep 2014 09:00:39 +0200 -Subject: [PATCH] pcm route: Fix the bad condition (always false) - ---- - src/pcm/pcm_route.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c -index e7de9b51f1fc..2a437e88b93c 100644 ---- a/src/pcm/pcm_route.c -+++ b/src/pcm/pcm_route.c -@@ -1147,7 +1147,7 @@ static int _snd_pcm_route_load_ttable(snd_config_t *tt, snd_pcm_route_ttable_ent - snd_config_iterator_t j, jnext; - long cchannel; - const char *id; -- if (!snd_config_get_id(in, &id) < 0) -+ if (snd_config_get_id(in, &id) < 0) - continue; - err = safe_strtol(id, &cchannel); - if (err < 0 || --- -2.1.2 - diff --git a/0035-pcm-rate-hw_avail-must-not-be-negative-before-starti.patch b/0035-pcm-rate-hw_avail-must-not-be-negative-before-starti.patch deleted file mode 100644 index 9ffd439..0000000 --- a/0035-pcm-rate-hw_avail-must-not-be-negative-before-starti.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 048568bbea700dfd9921b40321f8d5aa7e5ef417 Mon Sep 17 00:00:00 2001 -From: "Alexander E. Patrakov" -Date: Mon, 15 Sep 2014 20:17:47 +0600 -Subject: [PATCH] pcm, rate: hw_avail must not be negative before starting the - stream - -If it is, then it means most likely the driver problem, so we should -return error immediately instead. - -Signed-off-by: Alexander E. Patrakov -Signed-off-by: Jaroslav Kysela ---- - src/pcm/pcm_rate.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c -index 736d5583cd4c..c76db25b1183 100644 ---- a/src/pcm/pcm_rate.c -+++ b/src/pcm/pcm_rate.c -@@ -1069,7 +1069,10 @@ static int snd_pcm_rate_start(snd_pcm_t *pcm) - gettimestamp(&rate->trigger_tstamp, pcm->tstamp_type); - - avail = snd_pcm_mmap_playback_hw_avail(rate->gen.slave); -- if (avail <= 0) { -+ if (avail < 0) /* can't happen on healthy drivers */ -+ return -EBADFD; -+ -+ if (avail == 0) { - /* postpone the trigger since we have no data committed yet */ - rate->start_pending = 1; - return 0; --- -2.1.2 - diff --git a/0036-hwdep-add-missing-declaration-for-snd_hwdep_poll_des.patch b/0036-hwdep-add-missing-declaration-for-snd_hwdep_poll_des.patch deleted file mode 100644 index 98a911c..0000000 --- a/0036-hwdep-add-missing-declaration-for-snd_hwdep_poll_des.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 9ab3c4a66952c3ae4277624152da675050c7d2ad Mon Sep 17 00:00:00 2001 -From: Takashi Sakamoto -Date: Wed, 17 Sep 2014 07:07:03 +0900 -Subject: [PATCH] hwdep: add missing declaration for - snd_hwdep_poll_descriptors_count() - -The alsa-lib has 'snd_hwdep_poll_descriptors_count()' but hwdep.h has no -declaration for the function. No applications can call the function just -by including the header. - -This commit adds a line to the file for this function. - -Signed-off-by: Takashi Sakamoto -Signed-off-by: Takashi Iwai ---- - include/hwdep.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/include/hwdep.h b/include/hwdep.h -index 6496fa2d7d87..ad8bb4972818 100644 ---- a/include/hwdep.h -+++ b/include/hwdep.h -@@ -102,6 +102,7 @@ typedef struct _snd_hwdep snd_hwdep_t; - int snd_hwdep_open(snd_hwdep_t **hwdep, const char *name, int mode); - int snd_hwdep_close(snd_hwdep_t *hwdep); - int snd_hwdep_poll_descriptors(snd_hwdep_t *hwdep, struct pollfd *pfds, unsigned int space); -+int snd_hwdep_poll_descriptors_count(snd_hwdep_t *hwdep); - int snd_hwdep_poll_descriptors_revents(snd_hwdep_t *hwdep, struct pollfd *pfds, unsigned int nfds, unsigned short *revents); - int snd_hwdep_nonblock(snd_hwdep_t *hwdep, int nonblock); - int snd_hwdep_info(snd_hwdep_t *hwdep, snd_hwdep_info_t * info); --- -2.1.2 - diff --git a/0037-mixer-fixed-double-free.patch b/0037-mixer-fixed-double-free.patch deleted file mode 100644 index 5c3d9a5..0000000 --- a/0037-mixer-fixed-double-free.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 020bb3018ad6febbb0ae9650c4a4ca2b016f7d52 Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:01:36 +0200 -Subject: [PATCH] mixer: fixed double free - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/mixer/mixer.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/src/mixer/mixer.c b/src/mixer/mixer.c -index 56e023dbe7a9..eee9875b44fb 100644 ---- a/src/mixer/mixer.c -+++ b/src/mixer/mixer.c -@@ -204,10 +204,8 @@ int snd_mixer_attach(snd_mixer_t *mixer, const char *name) - if (err < 0) - return err; - err = snd_mixer_attach_hctl(mixer, hctl); -- if (err < 0) { -- snd_hctl_close(hctl); -+ if (err < 0) - return err; -- } - return 0; - } - --- -2.1.2 - diff --git a/0038-pcm_file-fixed-missing-free.patch b/0038-pcm_file-fixed-missing-free.patch deleted file mode 100644 index 2292f64..0000000 --- a/0038-pcm_file-fixed-missing-free.patch +++ /dev/null @@ -1,34 +0,0 @@ -From d37f9187956cc0a58bdd129a807e3fdd1f5286b8 Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:04:19 +0200 -Subject: [PATCH] pcm_file: fixed missing free - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_file.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/pcm/pcm_file.c b/src/pcm/pcm_file.c -index 5541a9395027..9ab6964d3520 100644 ---- a/src/pcm/pcm_file.c -+++ b/src/pcm/pcm_file.c -@@ -758,6 +758,7 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, const char *name, - ifd = open(ifname, O_RDONLY); /* TODO: mind blocking mode */ - if (ifd < 0) { - SYSERR("open %s for reading failed", ifname); -+ free(file->fname); - free(file); - return -errno; - } -@@ -772,6 +773,7 @@ int snd_pcm_file_open(snd_pcm_t **pcmp, const char *name, - err = snd_pcm_new(&pcm, SND_PCM_TYPE_FILE, name, slave->stream, slave->mode); - if (err < 0) { - free(file->fname); -+ free(file->ifname); - free(file); - return err; - } --- -2.1.2 - diff --git a/0039-sbase-fixed-missing-free.patch b/0039-sbase-fixed-missing-free.patch deleted file mode 100644 index cebe219..0000000 --- a/0039-sbase-fixed-missing-free.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 0ee46280f3e3e52ed2c0af45c9a446a5a9dc5f83 Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:04:26 +0200 -Subject: [PATCH] sbase: fixed missing free - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - modules/mixer/simple/sbase.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/modules/mixer/simple/sbase.c b/modules/mixer/simple/sbase.c -index 97feee8905a6..bb2f59d8a18a 100644 ---- a/modules/mixer/simple/sbase.c -+++ b/modules/mixer/simple/sbase.c -@@ -377,6 +377,7 @@ static int simple_event_add1(snd_mixer_class_t *class, - if (ctype != SND_CTL_ELEM_TYPE_BOOLEAN) { - __invalid_type: - snd_mixer_selem_id_free(id); -+ free(hsimple); - return -EINVAL; - } - break; --- -2.1.2 - diff --git a/0040-rawmidi-close-handle-h.patch b/0040-rawmidi-close-handle-h.patch deleted file mode 100644 index cc09dbf..0000000 --- a/0040-rawmidi-close-handle-h.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 09f5c75e9cd7869353a4f6c8da72df43dc2c8e22 Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:05:27 +0200 -Subject: [PATCH] rawmidi: close handle h - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/rawmidi/rawmidi.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/rawmidi/rawmidi.c b/src/rawmidi/rawmidi.c -index b835b472b361..ac699b439b11 100644 ---- a/src/rawmidi/rawmidi.c -+++ b/src/rawmidi/rawmidi.c -@@ -256,8 +256,11 @@ static int snd_rawmidi_open_conf(snd_rawmidi_t **inputp, snd_rawmidi_t **outputp - snd_config_delete(type_conf); - if (err >= 0) - err = open_func(inputp, outputp, name, rawmidi_root, rawmidi_conf, mode); -- if (err < 0) -+ if (err < 0) { -+ if (h) -+ snd_dlclose(h); - return err; -+ } - if (inputp) { - (*inputp)->dl_handle = h; h = NULL; - snd_rawmidi_params_default(*inputp, ¶ms); --- -2.1.2 - diff --git a/0041-pcm_share-fixing-missing-mutex-unlock.patch b/0041-pcm_share-fixing-missing-mutex-unlock.patch deleted file mode 100644 index 678a6f6..0000000 --- a/0041-pcm_share-fixing-missing-mutex-unlock.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 30f289a8a38006a937ca9189bc666b0bd90cab3c Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:05:39 +0200 -Subject: [PATCH] pcm_share: fixing missing mutex unlock - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_share.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c -index c301c7af799a..4b68f1f00fe3 100644 ---- a/src/pcm/pcm_share.c -+++ b/src/pcm/pcm_share.c -@@ -369,6 +369,7 @@ static void *snd_pcm_share_thread(void *data) - err = pipe(slave->poll); - if (err < 0) { - SYSERR("can't create a pipe"); -+ Pthread_mutex_unlock(&slave->mutex); - return NULL; - } - while (slave->open_count > 0) { -@@ -395,6 +396,7 @@ static void *snd_pcm_share_thread(void *data) - err = snd_pcm_sw_params(spcm, &slave->sw_params); - if (err < 0) { - SYSERR("snd_pcm_sw_params error"); -+ Pthread_mutex_unlock(&slave->mutex); - return NULL; - } - } --- -2.1.2 - diff --git a/0042-simple_abst-null-check-for-lib.patch b/0042-simple_abst-null-check-for-lib.patch deleted file mode 100644 index cc7dafd..0000000 --- a/0042-simple_abst-null-check-for-lib.patch +++ /dev/null @@ -1,27 +0,0 @@ -From f3f568e3db5fccdf5cfb7053c04fde6272974faa Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:06:28 +0200 -Subject: [PATCH] simple_abst: null check for lib - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/mixer/simple_abst.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/mixer/simple_abst.c b/src/mixer/simple_abst.c -index 9e9aaf55c535..5297472a6d26 100644 ---- a/src/mixer/simple_abst.c -+++ b/src/mixer/simple_abst.c -@@ -70,6 +70,8 @@ static int try_open(snd_mixer_class_t *class, const char *lib) - void *h; - int err = 0; - -+ if (!lib) -+ return -ENXIO; - path = getenv("ALSA_MIXER_SIMPLE_MODULES"); - if (!path) - path = SO_PATH; --- -2.1.2 - diff --git a/0043-socket-missing-socket-close.patch b/0043-socket-missing-socket-close.patch deleted file mode 100644 index 187c32d..0000000 --- a/0043-socket-missing-socket-close.patch +++ /dev/null @@ -1,47 +0,0 @@ -From bd0b008c0d8ff08cd541dc608ce78478de7c9d12 Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:06:36 +0200 -Subject: [PATCH] socket: missing socket close - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/socket.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/src/socket.c b/src/socket.c -index 97c919f74876..16979b520ae6 100644 ---- a/src/socket.c -+++ b/src/socket.c -@@ -124,12 +124,15 @@ int snd_is_local(struct hostent *hent) - - conf.ifc_len = numreqs * sizeof(struct ifreq); - conf.ifc_buf = malloc((unsigned int) conf.ifc_len); -- if (! conf.ifc_buf) -+ if (! conf.ifc_buf) { -+ close(s); - return -ENOMEM; -+ } - while (1) { - err = ioctl(s, SIOCGIFCONF, &conf); - if (err < 0) { - SYSERR("SIOCGIFCONF failed"); -+ close(s); - return -errno; - } - if ((size_t)conf.ifc_len < numreqs * sizeof(struct ifreq)) -@@ -137,8 +140,10 @@ int snd_is_local(struct hostent *hent) - numreqs *= 2; - conf.ifc_len = numreqs * sizeof(struct ifreq); - conf.ifc_buf = realloc(conf.ifc_buf, (unsigned int) conf.ifc_len); -- if (! conf.ifc_buf) -+ if (! conf.ifc_buf) { -+ close(s); - return -ENOMEM; -+ } - } - numreqs = conf.ifc_len / sizeof(struct ifreq); - for (i = 0; i < numreqs; ++i) { --- -2.1.2 - diff --git a/0044-pcm_hooks-null-check-for-h.patch b/0044-pcm_hooks-null-check-for-h.patch deleted file mode 100644 index 1631435..0000000 --- a/0044-pcm_hooks-null-check-for-h.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 69e0aaa569912c2162908f168291490301b72322 Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:07:13 +0200 -Subject: [PATCH] pcm_hooks: null check for h - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_hooks.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/pcm/pcm_hooks.c b/src/pcm/pcm_hooks.c -index 0b93c641daaa..ce1cf361e74b 100644 ---- a/src/pcm/pcm_hooks.c -+++ b/src/pcm/pcm_hooks.c -@@ -457,7 +457,8 @@ static int snd_pcm_hook_add_conf(snd_pcm_t *pcm, snd_config_t *root, snd_config_ - err = hook_add_dlobj(pcm, h); - - if (err < 0) { -- snd_dlclose(h); -+ if(h) -+ snd_dlclose(h); - return err; - } - return 0; --- -2.1.2 - diff --git a/0045-conf-return-negative-value-in-case-of-error.patch b/0045-conf-return-negative-value-in-case-of-error.patch deleted file mode 100644 index f7be7dd..0000000 --- a/0045-conf-return-negative-value-in-case-of-error.patch +++ /dev/null @@ -1,26 +0,0 @@ -From b356cd29f975e53ae050a672aff81a71535c412b Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:07:20 +0200 -Subject: [PATCH] conf: return negative value in case of error - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/conf.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/conf.c b/src/conf.c -index 5ccc8e1a53e5..bb256e7ae443 100644 ---- a/src/conf.c -+++ b/src/conf.c -@@ -4198,6 +4198,7 @@ static int _snd_config_evaluate(snd_config_t *src, - snd_config_iterator_t i, next; - if (snd_config_get_type(func_conf) != SND_CONFIG_TYPE_COMPOUND) { - SNDERR("Invalid type for func %s definition", str); -+ err = -EINVAL; - goto _err; - } - snd_config_for_each(i, next, func_conf) { --- -2.1.2 - diff --git a/0046-control-return-negative-value-in-case-of-error.patch b/0046-control-return-negative-value-in-case-of-error.patch deleted file mode 100644 index db64c30..0000000 --- a/0046-control-return-negative-value-in-case-of-error.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 5a0b992548778e063dbafb6737658be9b5e1e2a9 Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:08:09 +0200 -Subject: [PATCH] control: return negative value in case of error - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/control/control.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/control/control.c b/src/control/control.c -index d66ed755356f..dd428a1501b4 100644 ---- a/src/control/control.c -+++ b/src/control/control.c -@@ -864,6 +864,7 @@ static int snd_ctl_open_conf(snd_ctl_t **ctlp, const char *name, - if (err >= 0) { - if (snd_config_get_type(type_conf) != SND_CONFIG_TYPE_COMPOUND) { - SNDERR("Invalid type for CTL type %s definition", str); -+ err = -EINVAL; - goto _err; - } - snd_config_for_each(i, next, type_conf) { --- -2.1.2 - diff --git a/0047-pcm-return-negative-value-in-case-of-error.patch b/0047-pcm-return-negative-value-in-case-of-error.patch deleted file mode 100644 index 271af12..0000000 --- a/0047-pcm-return-negative-value-in-case-of-error.patch +++ /dev/null @@ -1,26 +0,0 @@ -From f78ba070b38c0711308d14ce642e78bc2a1a8fc6 Mon Sep 17 00:00:00 2001 -From: Renu Tyagi -Date: Tue, 23 Sep 2014 09:08:23 +0200 -Subject: [PATCH] pcm: return negative value in case of error - -Signed-off-by: renu tyagi -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c -index 2e2433829016..4a7be6c1a55f 100644 ---- a/src/pcm/pcm.c -+++ b/src/pcm/pcm.c -@@ -2145,6 +2145,7 @@ static int snd_pcm_open_conf(snd_pcm_t **pcmp, const char *name, - if (err >= 0) { - if (snd_config_get_type(type_conf) != SND_CONFIG_TYPE_COMPOUND) { - SNDERR("Invalid type for PCM type %s definition", str); -+ err = -EINVAL; - goto _err; - } - snd_config_for_each(i, next, type_conf) { --- -2.1.2 - diff --git a/0048-mixer-Fix-missing-hctl-handle-free-in-snd_mixer_atta.patch b/0048-mixer-Fix-missing-hctl-handle-free-in-snd_mixer_atta.patch deleted file mode 100644 index 3507a02..0000000 --- a/0048-mixer-Fix-missing-hctl-handle-free-in-snd_mixer_atta.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 7c1f36dbcbe8d60c6f90cbcf7e2e801cacbcd535 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Tue, 23 Sep 2014 09:11:27 +0200 -Subject: [PATCH] mixer: Fix missing hctl handle free in - snd_mixer_attach_hctl() - -Yet another missing piece. - -Also, update the function document to warn about the behavior at -error. - -Signed-off-by: Takashi Iwai ---- - src/mixer/mixer.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/src/mixer/mixer.c b/src/mixer/mixer.c -index eee9875b44fb..3a79c8e91efb 100644 ---- a/src/mixer/mixer.c -+++ b/src/mixer/mixer.c -@@ -214,6 +214,8 @@ int snd_mixer_attach(snd_mixer_t *mixer, const char *name) - * \param mixer Mixer handle - * \param hctl the HCTL to be attached - * \return 0 on success otherwise a negative error code -+ * -+ * Upon error, this function closes the given hctl handle automatically. - */ - int snd_mixer_attach_hctl(snd_mixer_t *mixer, snd_hctl_t *hctl) - { -@@ -222,8 +224,10 @@ int snd_mixer_attach_hctl(snd_mixer_t *mixer, snd_hctl_t *hctl) - - assert(hctl); - slave = calloc(1, sizeof(*slave)); -- if (slave == NULL) -+ if (slave == NULL) { -+ snd_hctl_close(hctl); - return -ENOMEM; -+ } - err = snd_hctl_nonblock(hctl, 1); - if (err < 0) { - snd_hctl_close(hctl); --- -2.1.2 - diff --git a/0049-conf-ucm-PAZ00-add-Toshiba-AC100-Dynabook-AZ-new-con.patch b/0049-conf-ucm-PAZ00-add-Toshiba-AC100-Dynabook-AZ-new-con.patch deleted file mode 100644 index e780e00..0000000 --- a/0049-conf-ucm-PAZ00-add-Toshiba-AC100-Dynabook-AZ-new-con.patch +++ /dev/null @@ -1,225 +0,0 @@ -From 24b4e86ddc512acb6b26f97cb958d59586482fb7 Mon Sep 17 00:00:00 2001 -From: zombah -Date: Tue, 23 Sep 2014 19:53:43 +0400 -Subject: [PATCH] conf/ucm: PAZ00: add Toshiba AC100/Dynabook AZ new config - -Recent mainline kernels threat Toshiba AC100 audio hardware as hw:PAZ00 -vs old hw:tegraalc5632. - -This patch adds config files for new hw name and include them to -makefiles. - -Signed-off-by: zombah -Signed-off-by: Takashi Iwai ---- - configure.ac | 1 + - src/conf/ucm/Makefile.am | 2 +- - src/conf/ucm/PAZ00/HiFi.conf | 45 +++++++++++++++++++++++++++++ - src/conf/ucm/PAZ00/Makefile.am | 4 +++ - src/conf/ucm/PAZ00/PAZ00.conf | 39 +++++++++++++++++++++++++ - src/conf/ucm/PAZ00/Record.conf | 65 ++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 155 insertions(+), 1 deletion(-) - create mode 100644 src/conf/ucm/PAZ00/HiFi.conf - create mode 100644 src/conf/ucm/PAZ00/Makefile.am - create mode 100644 src/conf/ucm/PAZ00/PAZ00.conf - create mode 100644 src/conf/ucm/PAZ00/Record.conf - -diff --git a/configure.ac b/configure.ac -index b8353a09f0d9..734163c8c321 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -653,6 +653,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ - src/conf/ucm/PandaBoardES/Makefile \ - src/conf/ucm/SDP4430/Makefile \ - src/conf/ucm/tegraalc5632/Makefile \ -+ src/conf/ucm/PAZ00/Makefile \ - modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \ - alsalisp/Makefile aserver/Makefile \ - test/Makefile test/lsb/Makefile \ -diff --git a/src/conf/ucm/Makefile.am b/src/conf/ucm/Makefile.am -index e089dde73b32..bde89dfea440 100644 ---- a/src/conf/ucm/Makefile.am -+++ b/src/conf/ucm/Makefile.am -@@ -1 +1 @@ --SUBDIRS=DAISY-I2S PandaBoard PandaBoardES SDP4430 tegraalc5632 -+SUBDIRS=DAISY-I2S PandaBoard PandaBoardES SDP4430 tegraalc5632 PAZ00 -diff --git a/src/conf/ucm/PAZ00/HiFi.conf b/src/conf/ucm/PAZ00/HiFi.conf -new file mode 100644 -index 000000000000..275516d6eb70 ---- /dev/null -+++ b/src/conf/ucm/PAZ00/HiFi.conf -@@ -0,0 +1,45 @@ -+SectionVerb { -+ EnableSequence [ -+ cdev "hw:PAZ00" -+ -+ cset "name='Speaker Playback Switch' on" -+ cset "name='Int Spk Switch' on" -+ cset "name='Speaker Mix DAC2SPK Playback Switch' on" -+ ] -+ DisableSequence [ -+ cset "name='Speaker Playback Switch' off" -+ cset "name='Int Spk Switch' off" -+ cset "name='Speaker Mix DAC2SPK Playback Switch' off" -+ ] -+} -+ -+SectionDevice."Headset".0 { -+ Comment "3.5mm Headset" -+ -+ Value { -+ JackName "Paz00 Headset Jack" -+ } -+ -+ EnableSequence [ -+ cdev "hw:PAZ00" -+ -+ # Internal speaker -+ cset "name='Int Spk Switch' off" -+ -+ # Headphones -+ cset "name='Headphone Playback Switch' on" -+ cset "name='HPL Mix DACL2HP Playback Switch' on" -+ cset "name='HPR Mix DACR2HP Playback Switch' on" -+ ] -+ DisableSequence [ -+ cdev "hw:PAZ00" -+ -+ # Headphones -+ cset "name='Headphone Playback Switch' off" -+ cset "name='HPL Mix DACL2HP Playback Switch' off" -+ cset "name='HPR Mix DACR2HP Playback Switch' off" -+ -+ # Internal speaker -+ cset "name='Int Spk Switch' on" -+ ] -+} -diff --git a/src/conf/ucm/PAZ00/Makefile.am b/src/conf/ucm/PAZ00/Makefile.am -new file mode 100644 -index 000000000000..1bf98a67515f ---- /dev/null -+++ b/src/conf/ucm/PAZ00/Makefile.am -@@ -0,0 +1,4 @@ -+alsaconfigdir = @ALSA_CONFIG_DIR@ -+ucmdir = $(alsaconfigdir)/ucm/PAZ00 -+ucm_DATA = PAZ00.conf HiFi.conf Record.conf -+EXTRA_DIST = $(ucm_DATA) -diff --git a/src/conf/ucm/PAZ00/PAZ00.conf b/src/conf/ucm/PAZ00/PAZ00.conf -new file mode 100644 -index 000000000000..8b9d90435ba1 ---- /dev/null -+++ b/src/conf/ucm/PAZ00/PAZ00.conf -@@ -0,0 +1,39 @@ -+Comment "PAZ00 alc5632" -+ -+ValueDefaults { -+ PlaybackCTL "hw:0" -+ CaptureCTL "hw:0" -+} -+ -+SectionDefaults [ -+ cdev "hw:PAZ00" -+ -+ cset "name='Master Playback Switch' on" -+ cset "name='Master Playback Volume' 44,44" -+ cset "name='Headphone Playback Volume' 21,21" -+ cset "name='Speaker Playback Volume' 21,21" -+ cset "name='SpeakerOut Mux' 2" -+ cset "name='SpeakerOut N Mux' LN/-R" -+ cset "name='AB-D Amp Mux' 0" -+ cset "name='Left Headphone Mux' 1" -+ cset "name='Right Headphone Mux' 1" -+ cset "name='DMIC Boost Capture Volume' 4" -+ cset "name='Rec Capture Volume' 24" -+ -+ # Fix external mic record volumes -+ cset "name='Mic 1 Boost Volume' 0" -+ cset "name='Mic 2 Boost Volume' 0" -+ cset "name='Mic1 Playback Volume' 0" -+ cset "name='Mic2 Playback Volume' 0" -+ cset "name='Rec Capture Volume' 0" -+] -+ -+SectionUseCase."HiFi" { -+ File "HiFi.conf" -+ Comment "Music playback" -+} -+ -+SectionUseCase."Record" { -+ File "Record.conf" -+ Comment "Playback and capture" -+} -diff --git a/src/conf/ucm/PAZ00/Record.conf b/src/conf/ucm/PAZ00/Record.conf -new file mode 100644 -index 000000000000..568e2fbdf051 ---- /dev/null -+++ b/src/conf/ucm/PAZ00/Record.conf -@@ -0,0 +1,65 @@ -+SectionVerb { -+ EnableSequence [ -+ cdev "hw:PAZ00" -+ -+ cset "name='Speaker Playback Switch' on" -+ cset "name='Int Spk Switch' on" -+ cset "name='Speaker Mix DAC2SPK Playback Switch' on" -+ -+ cset "name='DMICL Mix DMICL2ADC Capture Switch' on" -+ cset "name='DMIC En Capture Switch' on" -+ cset "name='DMIC PreFilter Capture Switch' on" -+ ] -+ DisableSequence [ -+ cset "name='Speaker Playback Switch' off" -+ cset "name='Int Spk Switch' off" -+ cset "name='Speaker Mix DAC2SPK Playback Switch' off" -+ -+ cset "name='DMICL Mix DMICL2ADC Capture Switch' off" -+ cset "name='DMIC En Capture Switch' off" -+ cset "name='DMIC PreFilter Capture Switch' off" -+ ] -+} -+ -+SectionDevice."Headset".0 { -+ Comment "3.5mm Headset" -+ -+ Value { -+ JackName "Paz00 Headset Jack" -+ } -+ -+ EnableSequence [ -+ cdev "hw:PAZ00" -+ -+ # Internal speaker -+ cset "name='Int Spk Switch' off" -+ -+ # Internal mic -+ cset "name='DMIC En Capture Switch' off" -+ -+ # Headphones -+ cset "name='Headphone Playback Switch' on" -+ cset "name='HPL Mix DACL2HP Playback Switch' on" -+ cset "name='HPR Mix DACR2HP Playback Switch' on" -+ -+ # External min -+ cset "name='Left Capture Mix MIC12REC_L Capture Switch' on" -+ ] -+ DisableSequence [ -+ cdev "hw:PAZ00" -+ -+ # Headphones -+ cset "name='Headphone Playback Switch' off" -+ cset "name='HPL Mix DACL2HP Playback Switch' off" -+ cset "name='HPR Mix DACR2HP Playback Switch' off" -+ -+ # External mic -+ cset "name='Left Capture Mix MIC12REC_L Capture Switch' on" -+ -+ # Internal speaker -+ cset "name='Int Spk Switch' on" -+ -+ # Internal mic -+ cset "name='DMIC En Capture Switch' on" -+ ] -+} --- -2.1.2 - diff --git a/0050-USB-Audio-Add-Scarlett-2i4-USB-to-S-PDIF-blacklist.patch b/0050-USB-Audio-Add-Scarlett-2i4-USB-to-S-PDIF-blacklist.patch deleted file mode 100644 index 457a464..0000000 --- a/0050-USB-Audio-Add-Scarlett-2i4-USB-to-S-PDIF-blacklist.patch +++ /dev/null @@ -1,28 +0,0 @@ -From ebd6afc9158c0afd7263a0ffa5474cf9e5f20c66 Mon Sep 17 00:00:00 2001 -From: Panu Matilainen -Date: Mon, 3 Nov 2014 17:42:44 +0200 -Subject: [PATCH 50/60] USB-Audio: Add Scarlett 2i4 USB to S/PDIF blacklist - -Like Scarlett 2i2, the 2i4 does not have any S/PDIF connections. - -Signed-off-by: Panu Matilainen -Signed-off-by: Takashi Iwai ---- - src/conf/cards/USB-Audio.conf | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf -index 77a48b9f5562..a6754d96b1aa 100644 ---- a/src/conf/cards/USB-Audio.conf -+++ b/src/conf/cards/USB-Audio.conf -@@ -48,6 +48,7 @@ USB-Audio.pcm.iec958_device { - "Plantronics Wireless Audio" 999 - "SB WoW Headset" 999 - "Scarlett 2i2 USB" 999 -+ "Scarlett 2i4 USB" 999 - "Sennheiser USB headset" 999 - "USB Device 0x46d:0x992" 999 - } --- -2.1.3 - diff --git a/0051-snd_user_file-fix-memory-leak.patch b/0051-snd_user_file-fix-memory-leak.patch deleted file mode 100644 index 136a1e9..0000000 --- a/0051-snd_user_file-fix-memory-leak.patch +++ /dev/null @@ -1,43 +0,0 @@ -From c7bfcbb25548db39299488e285b510a174231076 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Mon, 3 Nov 2014 17:22:28 +0100 -Subject: [PATCH 51/60] snd_user_file: fix memory leak - -Call wordfree if and only if wordfree returns zero or WRDE_NOSPACE - -Signed-off-by: Andreas Schwab -Signed-off-by: Takashi Iwai ---- - src/userfile.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/userfile.c b/src/userfile.c -index 3a738366f1ea..72779da4ebaf 100644 ---- a/src/userfile.c -+++ b/src/userfile.c -@@ -44,19 +44,20 @@ int snd_user_file(const char *file, char **result) - err = wordexp(file, &we, WRDE_NOCMD); - switch (err) { - case WRDE_NOSPACE: -+ wordfree(&we); - return -ENOMEM; - case 0: - if (we.we_wordc == 1) - break; -+ wordfree(&we); - /* fall thru */ - default: -- wordfree(&we); - return -EINVAL; - } - *result = strdup(we.we_wordv[0]); -+ wordfree(&we); - if (*result == NULL) - return -ENOMEM; -- wordfree(&we); - return 0; - } - --- -2.1.3 - diff --git a/0052-pcm-dmix-Don-t-ignore-SND_TIMER_EVENT_MSTOP.patch b/0052-pcm-dmix-Don-t-ignore-SND_TIMER_EVENT_MSTOP.patch deleted file mode 100644 index 5d12b6d..0000000 --- a/0052-pcm-dmix-Don-t-ignore-SND_TIMER_EVENT_MSTOP.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 5a066cb884815ab48924da8f70514d587400dd6a Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Thu, 6 Nov 2014 12:12:02 +0100 -Subject: [PATCH 52/60] pcm: dmix: Don't ignore SND_TIMER_EVENT_MSTOP - -When a slave PCM gets an error like XRUN, it stops and notifies with -SND_TIMER_EVENT_MSTOP event. But the current code filters out this -type and eventually hang due to the empty timer queue. The fix is to -just add this event type to the filter bit mask. - -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm_direct.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c -index 8e37bcba5e19..195fddf06cda 100644 ---- a/src/pcm/pcm_direct.c -+++ b/src/pcm/pcm_direct.c -@@ -1148,6 +1148,7 @@ int snd_pcm_direct_initialize_poll_fd(snd_pcm_direct_t *dmix) - - dmix->timer_events = (1< -Date: Sat, 15 Nov 2014 13:41:00 +0100 -Subject: [PATCH 53/60] snd_dlsym: only do versioning checks if built - --with-versioning - -a combination of some of the following garbage collecting LD/CFLAGS --Os -g0 -fdata-sections -ffunction-sections -s -Wl,--gc-sections --fno-unwind-tables -fno-asynchronous-unwind-tables -causes the symbol versioning marker symbols to be removed from BSS -since they're otherwise unreferenced. this causes dlsym failing to -find them which results in runtime breakage: - -$ alsamixer -ALSA lib dlmisc.c:142:(snd_dlsym_verify) unable to verify version for symbol snd_config_hook_load -ALSA lib conf.c:3328:(snd_config_hooks_call) symbol snd_config_hook_load is not defined inside (null) -ALSA lib conf.c:3788:(snd_config_update_r) hooks failed, removing configuration -cannot open mixer: No such device or address - -correct DSO: -$ objdump -T libasound.so.2.strip | grep _snd_config_hook_load_dlsym_config_hook_001 -001196bc g DO .bss 00000001 _snd_config_hook_load_dlsym_config_hook_001 - -incorrect DSO: -$ objdump -T libs/libasound.so.2 | grep _snd_config_hook_load_dlsym_config_hook_001 -00000000 g DO *ABS* 00000001 _snd_config_hook_load_dlsym_config_hook_001 - -since alsa was built with --without-versioning, doing those versioning -checks at all is unnecessary and harmful and thus now disabled in this case. - -Signed-off-by: John Spencer -Signed-off-by: Takashi Iwai ---- - src/dlmisc.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/dlmisc.c b/src/dlmisc.c -index 4b8a02cd89f6..62f7047149ff 100644 ---- a/src/dlmisc.c -+++ b/src/dlmisc.c -@@ -177,11 +177,13 @@ void *snd_dlsym(void *handle, const char *name, const char *version) - } - #endif - #ifdef HAVE_LIBDL -+#ifdef VERSIONED_SYMBOLS - if (version) { - err = snd_dlsym_verify(handle, name, version); - if (err < 0) - return NULL; - } -+#endif - return dlsym(handle, name); - #else - return NULL; --- -2.1.3 - diff --git a/0054-dlmisc-Remove-unused-label.patch b/0054-dlmisc-Remove-unused-label.patch deleted file mode 100644 index 41a3c8a..0000000 --- a/0054-dlmisc-Remove-unused-label.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 1eecc3a548839a71dfda5c65c9dc9369d868f665 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Sun, 16 Nov 2014 09:43:39 +0100 -Subject: [PATCH 54/60] dlmisc: Remove unused label - -Fix a compile warning - dlmisc.c:329:2: warning: label 'unlock' defined but not used [-Wunused-label] - -Signed-off-by: Takashi Iwai ---- - src/dlmisc.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/dlmisc.c b/src/dlmisc.c -index 62f7047149ff..b36c48fc8ac5 100644 ---- a/src/dlmisc.c -+++ b/src/dlmisc.c -@@ -326,7 +326,6 @@ void snd_dlobj_cache_cleanup(void) - free(c); - } - -- unlock: - snd_dlobj_unlock(); - } - #endif --- -2.1.3 - diff --git a/0055-USB-audio-Add-five-more-cards-to-IEC958-blacklist.patch b/0055-USB-audio-Add-five-more-cards-to-IEC958-blacklist.patch deleted file mode 100644 index 7f80ea9..0000000 --- a/0055-USB-audio-Add-five-more-cards-to-IEC958-blacklist.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 984db83aa1ca60f67550d88ae3d0fd33a0c16109 Mon Sep 17 00:00:00 2001 -From: David Henningsson -Date: Mon, 17 Nov 2014 11:29:34 +0100 -Subject: [PATCH 55/60] USB-audio: Add five more cards to IEC958 blacklist - -These devices do not have any IEC958 outputs, so prevent them from -being opened. - -Signed-off-by: David Henningsson -Signed-off-by: Takashi Iwai ---- - src/conf/cards/USB-Audio.conf | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/src/conf/cards/USB-Audio.conf b/src/conf/cards/USB-Audio.conf -index a6754d96b1aa..05e5d09fd2c2 100644 ---- a/src/conf/cards/USB-Audio.conf -+++ b/src/conf/cards/USB-Audio.conf -@@ -38,10 +38,14 @@ USB-Audio.pcm.iec958_device { - # "NoiseBlaster 3000" 42 - - # The below don't have digital in/out, so prevent them from being opened. -+ "Andrea PureAudio USB-SA Headset" 999 - "Blue Snowball" 999 - "HP Digital Stereo Headset" 999 -+ "GN 9330" 999 - "Logitech Speaker Lapdesk N700" 999 -+ "Logitech G35 Headset" 999 - "Logitech USB Headset" 999 -+ "Logitech USB Headset H540" 999 - "Logitech Wireless Headset" 999 - "Plantronics GameCom 780" 999 - "Plantronics USB Headset" 999 -@@ -50,6 +54,7 @@ USB-Audio.pcm.iec958_device { - "Scarlett 2i2 USB" 999 - "Scarlett 2i4 USB" 999 - "Sennheiser USB headset" 999 -+ "SWTOR Gaming Headset by Razer" 999 - "USB Device 0x46d:0x992" 999 - } - --- -2.1.3 - diff --git a/0056-pcm-Fix-DSD-sample-format-endianess-and-add-big-endi.patch b/0056-pcm-Fix-DSD-sample-format-endianess-and-add-big-endi.patch deleted file mode 100644 index 6d809c8..0000000 --- a/0056-pcm-Fix-DSD-sample-format-endianess-and-add-big-endi.patch +++ /dev/null @@ -1,166 +0,0 @@ -From b14c49ab3d09f0e678209216a5e38934d904da3d Mon Sep 17 00:00:00 2001 -From: Jussi Laako -Date: Fri, 21 Nov 2014 16:04:47 +0200 -Subject: [PATCH 56/60] pcm: Fix DSD sample format endianess and add big-endian - format - -This patch adds big-endian DSD sample format and fixes return value of DSD -formats for snd_pcm_format_little_endian(). - -Signed-off-by: Jussi Laako -Signed-off-by: Takashi Iwai ---- - include/pcm.h | 6 +++++- - include/sound/asound.h | 4 +++- - src/pcm/pcm.c | 4 ++++ - src/pcm/pcm_misc.c | 17 ++++++++++++++--- - 4 files changed, 26 insertions(+), 5 deletions(-) - -diff --git a/include/pcm.h b/include/pcm.h -index db88ad5ee41a..0655e7f43ef6 100644 ---- a/include/pcm.h -+++ b/include/pcm.h -@@ -213,7 +213,11 @@ typedef enum _snd_pcm_format { - SND_PCM_FORMAT_DSD_U16_LE, - /* Direct Stream Digital (DSD) in 4-byte samples (x32) */ - SND_PCM_FORMAT_DSD_U32_LE, -- SND_PCM_FORMAT_LAST = SND_PCM_FORMAT_DSD_U32_LE, -+ /* Direct Stream Digital (DSD) in 2-byte samples (x16) */ -+ SND_PCM_FORMAT_DSD_U16_BE, -+ /* Direct Stream Digital (DSD) in 4-byte samples (x32) */ -+ SND_PCM_FORMAT_DSD_U32_BE, -+ SND_PCM_FORMAT_LAST = SND_PCM_FORMAT_DSD_U32_BE, - - #if __BYTE_ORDER == __LITTLE_ENDIAN - /** Signed 16 bit CPU endian */ -diff --git a/include/sound/asound.h b/include/sound/asound.h -index 6ee586728df9..941d32f007dc 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -220,7 +220,9 @@ typedef int __bitwise snd_pcm_format_t; - #define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48) /* DSD, 1-byte samples DSD (x8) */ - #define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49) /* DSD, 2-byte samples DSD (x16), little endian */ - #define SNDRV_PCM_FORMAT_DSD_U32_LE ((__force snd_pcm_format_t) 50) /* DSD, 4-byte samples DSD (x32), little endian */ --#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_LE -+#define SNDRV_PCM_FORMAT_DSD_U16_BE ((__force snd_pcm_format_t) 51) /* DSD, 2-byte samples DSD (x16), big endian */ -+#define SNDRV_PCM_FORMAT_DSD_U32_BE ((__force snd_pcm_format_t) 52) /* DSD, 4-byte samples DSD (x32), big endian */ -+#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_BE - - #ifdef SNDRV_LITTLE_ENDIAN - #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE -diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c -index 4a7be6c1a55f..39042566ae32 100644 ---- a/src/pcm/pcm.c -+++ b/src/pcm/pcm.c -@@ -1566,6 +1566,8 @@ static const char *const snd_pcm_format_names[] = { - FORMAT(DSD_U8), - FORMAT(DSD_U16_LE), - FORMAT(DSD_U32_LE), -+ FORMAT(DSD_U16_BE), -+ FORMAT(DSD_U32_BE), - }; - - static const char *const snd_pcm_format_aliases[SND_PCM_FORMAT_LAST+1] = { -@@ -1626,6 +1628,8 @@ static const char *const snd_pcm_format_descriptions[] = { - FORMATD(DSD_U8, "Direct Stream Digital, 1-byte (x8), oldest bit in MSB"), - FORMATD(DSD_U16_LE, "Direct Stream Digital, 2-byte (x16), little endian, oldest bits in MSB"), - FORMATD(DSD_U32_LE, "Direct Stream Digital, 4-byte (x32), little endian, oldest bits in MSB"), -+ FORMATD(DSD_U16_BE, "Direct Stream Digital, 2-byte (x16), big endian, oldest bits in MSB"), -+ FORMATD(DSD_U32_BE, "Direct Stream Digital, 4-byte (x32), big endian, oldest bits in MSB"), - }; - - static const char *const snd_pcm_type_names[] = { -diff --git a/src/pcm/pcm_misc.c b/src/pcm/pcm_misc.c -index 92721796aa1f..5870f82c0b4c 100644 ---- a/src/pcm/pcm_misc.c -+++ b/src/pcm/pcm_misc.c -@@ -65,6 +65,8 @@ int snd_pcm_format_signed(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_DSD_U8: - case SNDRV_PCM_FORMAT_DSD_U16_LE: - case SNDRV_PCM_FORMAT_DSD_U32_LE: -+ case SNDRV_PCM_FORMAT_DSD_U16_BE: -+ case SNDRV_PCM_FORMAT_DSD_U32_BE: - return 0; - default: - return -EINVAL; -@@ -137,6 +139,8 @@ int snd_pcm_format_little_endian(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U24_3LE: - case SNDRV_PCM_FORMAT_U20_3LE: - case SNDRV_PCM_FORMAT_U18_3LE: -+ case SNDRV_PCM_FORMAT_DSD_U16_LE: -+ case SNDRV_PCM_FORMAT_DSD_U32_LE: - return 1; - case SNDRV_PCM_FORMAT_S16_BE: - case SNDRV_PCM_FORMAT_U16_BE: -@@ -153,9 +157,8 @@ int snd_pcm_format_little_endian(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U24_3BE: - case SNDRV_PCM_FORMAT_U20_3BE: - case SNDRV_PCM_FORMAT_U18_3BE: -- case SNDRV_PCM_FORMAT_DSD_U8: -- case SNDRV_PCM_FORMAT_DSD_U16_LE: -- case SNDRV_PCM_FORMAT_DSD_U32_LE: -+ case SNDRV_PCM_FORMAT_DSD_U16_BE: -+ case SNDRV_PCM_FORMAT_DSD_U32_BE: - return 0; - default: - return -EINVAL; -@@ -208,6 +211,7 @@ int snd_pcm_format_width(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U16_LE: - case SNDRV_PCM_FORMAT_U16_BE: - case SNDRV_PCM_FORMAT_DSD_U16_LE: -+ case SNDRV_PCM_FORMAT_DSD_U16_BE: - return 16; - case SNDRV_PCM_FORMAT_S18_3LE: - case SNDRV_PCM_FORMAT_S18_3BE: -@@ -235,6 +239,7 @@ int snd_pcm_format_width(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_FLOAT_LE: - case SNDRV_PCM_FORMAT_FLOAT_BE: - case SNDRV_PCM_FORMAT_DSD_U32_LE: -+ case SNDRV_PCM_FORMAT_DSD_U32_BE: - return 32; - case SNDRV_PCM_FORMAT_FLOAT64_LE: - case SNDRV_PCM_FORMAT_FLOAT64_BE: -@@ -269,6 +274,7 @@ int snd_pcm_format_physical_width(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_U16_LE: - case SNDRV_PCM_FORMAT_U16_BE: - case SNDRV_PCM_FORMAT_DSD_U16_LE: -+ case SNDRV_PCM_FORMAT_DSD_U16_BE: - return 16; - case SNDRV_PCM_FORMAT_S18_3LE: - case SNDRV_PCM_FORMAT_S18_3BE: -@@ -296,6 +302,7 @@ int snd_pcm_format_physical_width(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE: - case SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE: - case SNDRV_PCM_FORMAT_DSD_U32_LE: -+ case SNDRV_PCM_FORMAT_DSD_U32_BE: - return 32; - case SNDRV_PCM_FORMAT_FLOAT64_LE: - case SNDRV_PCM_FORMAT_FLOAT64_BE: -@@ -328,6 +335,7 @@ ssize_t snd_pcm_format_size(snd_pcm_format_t format, size_t samples) - case SNDRV_PCM_FORMAT_U16_LE: - case SNDRV_PCM_FORMAT_U16_BE: - case SNDRV_PCM_FORMAT_DSD_U16_LE: -+ case SNDRV_PCM_FORMAT_DSD_U16_BE: - return samples * 2; - case SNDRV_PCM_FORMAT_S18_3LE: - case SNDRV_PCM_FORMAT_S18_3BE: -@@ -353,6 +361,7 @@ ssize_t snd_pcm_format_size(snd_pcm_format_t format, size_t samples) - case SNDRV_PCM_FORMAT_FLOAT_LE: - case SNDRV_PCM_FORMAT_FLOAT_BE: - case SNDRV_PCM_FORMAT_DSD_U32_LE: -+ case SNDRV_PCM_FORMAT_DSD_U32_BE: - return samples * 4; - case SNDRV_PCM_FORMAT_FLOAT64_LE: - case SNDRV_PCM_FORMAT_FLOAT64_BE: -@@ -400,6 +409,8 @@ u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) - case SNDRV_PCM_FORMAT_DSD_U8: - case SNDRV_PCM_FORMAT_DSD_U16_LE: - case SNDRV_PCM_FORMAT_DSD_U32_LE: -+ case SNDRV_PCM_FORMAT_DSD_U16_BE: -+ case SNDRV_PCM_FORMAT_DSD_U32_BE: - return 0x6969696969696969ULL; - #ifdef SNDRV_LITTLE_ENDIAN - case SNDRV_PCM_FORMAT_U16_LE: --- -2.1.3 - diff --git a/0057-mixer-Fix-inclusion-of-config.h.patch b/0057-mixer-Fix-inclusion-of-config.h.patch deleted file mode 100644 index 49ddf9a..0000000 --- a/0057-mixer-Fix-inclusion-of-config.h.patch +++ /dev/null @@ -1,42 +0,0 @@ -From c0a708180fa22133940c4bc50fbc627801f188eb Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Fri, 21 Nov 2014 15:20:48 +0100 -Subject: [PATCH 57/60] mixer: Fix inclusion of config.h - -config.h wasn't read or read too late in some files in src/mixer. - -Signed-off-by: Takashi Iwai ---- - src/mixer/simple.c | 1 + - src/mixer/simple_none.c | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/src/mixer/simple.c b/src/mixer/simple.c -index ec22a9c7d237..fd9ba93ee791 100644 ---- a/src/mixer/simple.c -+++ b/src/mixer/simple.c -@@ -36,6 +36,7 @@ - #include - #include - #include -+#include "config.h" - #include "mixer_local.h" - #include "mixer_simple.h" - -diff --git a/src/mixer/simple_none.c b/src/mixer/simple_none.c -index 1c2774acbc35..4e556604d6c3 100644 ---- a/src/mixer/simple_none.c -+++ b/src/mixer/simple_none.c -@@ -39,8 +39,8 @@ - #include - #include - #include --#include "mixer_simple.h" - #include "config.h" -+#include "mixer_simple.h" - - #ifndef DOC_HIDDEN - --- -2.1.3 - diff --git a/0058-mixer-Fix-unused-parameter-warnings.patch b/0058-mixer-Fix-unused-parameter-warnings.patch deleted file mode 100644 index 42260c0..0000000 --- a/0058-mixer-Fix-unused-parameter-warnings.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b779f6f43204c43f231b77858ba023a16de54568 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Fri, 21 Nov 2014 15:22:01 +0100 -Subject: [PATCH 58/60] mixer: Fix unused parameter warnings - -mixer_simple.h:35:64: warning: unused parameter 'mixer' [-Wunused-parameter] - static inline int snd_mixer_simple_basic_register(snd_mixer_t *mixer, - ^ -mixer_simple.h:36:40: warning: unused parameter 'options' [-Wunused-parameter] - struct snd_mixer_selem_regopt *options, - ^ -mixer_simple.h:37:29: warning: unused parameter 'classp' [-Wunused-parameter] - snd_mixer_class_t **classp) - ^ - -Signed-off-by: Takashi Iwai ---- - src/mixer/mixer_simple.h | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/mixer/mixer_simple.h b/src/mixer/mixer_simple.h -index 116eebd92f65..f6117da85b37 100644 ---- a/src/mixer/mixer_simple.h -+++ b/src/mixer/mixer_simple.h -@@ -32,9 +32,9 @@ int snd_mixer_simple_none_register(snd_mixer_t *mixer, struct snd_mixer_selem_re - #ifdef HAVE_LIBDL - int snd_mixer_simple_basic_register(snd_mixer_t *mixer, struct snd_mixer_selem_regopt *options, snd_mixer_class_t **classp); - #else --static inline int snd_mixer_simple_basic_register(snd_mixer_t *mixer, -- struct snd_mixer_selem_regopt *options, -- snd_mixer_class_t **classp) -+static inline int snd_mixer_simple_basic_register(snd_mixer_t *mixer ATTRIBUTE_UNUSED, -+ struct snd_mixer_selem_regopt *options ATTRIBUTE_UNUSED, -+ snd_mixer_class_t **classp ATTRIBUTE_UNUSED) - { - return -ENXIO; - } --- -2.1.3 - diff --git a/0059-ucm-Fix-uninitialized-err-in-snd_use_case_set.patch b/0059-ucm-Fix-uninitialized-err-in-snd_use_case_set.patch deleted file mode 100644 index 41b50ba..0000000 --- a/0059-ucm-Fix-uninitialized-err-in-snd_use_case_set.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 72c8b07b2a514261c2cb28558307b5fcb017b05e Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Fri, 21 Nov 2014 15:25:30 +0100 -Subject: [PATCH 59/60] ucm: Fix uninitialized err in snd_use_case_set() - -The compiler warns like: - main.c:1664:9: warning: 'err' may be used uninitialized in this function [-Wmaybe-uninitialized] - -and actually there are slight code paths that slip. -This patch adds the proper initializations to 0 to return the success -code in these code paths. - -Signed-off-by: Takashi Iwai ---- - src/ucm/main.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/ucm/main.c b/src/ucm/main.c -index 049472827121..37ae4c84aa64 100644 ---- a/src/ucm/main.c -+++ b/src/ucm/main.c -@@ -1443,7 +1443,7 @@ static int set_verb_user(snd_use_case_mgr_t *uc_mgr, - const char *verb_name) - { - struct use_case_verb *verb; -- int err; -+ int err = 0; - - if (uc_mgr->active_verb && - strcmp(uc_mgr->active_verb->name, verb_name) == 0) -@@ -1625,7 +1625,7 @@ int snd_use_case_set(snd_use_case_mgr_t *uc_mgr, - const char *value) - { - char *str, *str1; -- int err; -+ int err = 0; - - pthread_mutex_lock(&uc_mgr->mutex); - if (strcmp(identifier, "_verb") == 0) --- -2.1.3 - diff --git a/0060-pcm-Fix-assorted-tstamp_type-bugs-omissions.patch b/0060-pcm-Fix-assorted-tstamp_type-bugs-omissions.patch deleted file mode 100644 index bfbdd76..0000000 --- a/0060-pcm-Fix-assorted-tstamp_type-bugs-omissions.patch +++ /dev/null @@ -1,49 +0,0 @@ -From a649c4b1a0c728d5d27c8530ed729a41834d24d2 Mon Sep 17 00:00:00 2001 -From: Tim Cussins -Date: Tue, 25 Nov 2014 14:44:54 +0000 -Subject: [PATCH 60/60] pcm: Fix assorted tstamp_type bugs/omissions. - -Just a couple of quick fixes related to tstamp_type. - -- snd_pcm_sw_params(): copy tstamp_type field -- snd_pcm_tstamp_type_name(): fix argument type -- snd_pcm_dump_sw_setup(): fix dumping of tstamp_type field - -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c -index 39042566ae32..baa47c73fa4d 100644 ---- a/src/pcm/pcm.c -+++ b/src/pcm/pcm.c -@@ -897,6 +897,7 @@ int snd_pcm_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) - if (err < 0) - return err; - pcm->tstamp_mode = params->tstamp_mode; -+ pcm->tstamp_type = params->tstamp_type; - pcm->period_step = params->period_step; - pcm->avail_min = params->avail_min; - pcm->period_event = sw_get_period_event(params); -@@ -1843,7 +1844,7 @@ const char *snd_pcm_tstamp_mode_name(snd_pcm_tstamp_t mode) - * \param mode PCM tstamp type - * \return ascii name of PCM tstamp type setting - */ --const char *snd_pcm_tstamp_type_name(snd_pcm_tstamp_t type) -+const char *snd_pcm_tstamp_type_name(snd_pcm_tstamp_type_t type) - { - if (type > SND_PCM_TSTAMP_TYPE_LAST) - return NULL; -@@ -1924,7 +1925,7 @@ int snd_pcm_dump_sw_setup(snd_pcm_t *pcm, snd_output_t *out) - return -EIO; - } - snd_output_printf(out, " tstamp_mode : %s\n", snd_pcm_tstamp_mode_name(pcm->tstamp_mode)); -- snd_output_printf(out, " tstamp_type : %s\n", snd_pcm_tstamp_type_name(pcm->tstamp_mode)); -+ snd_output_printf(out, " tstamp_type : %s\n", snd_pcm_tstamp_type_name(pcm->tstamp_type)); - snd_output_printf(out, " period_step : %d\n", pcm->period_step); - snd_output_printf(out, " avail_min : %ld\n", pcm->avail_min); - snd_output_printf(out, " period_event : %i\n", pcm->period_event); --- -2.1.3 - diff --git a/0061-hwdep-add-OXFW-driver-support.patch b/0061-hwdep-add-OXFW-driver-support.patch deleted file mode 100644 index a07e0f5..0000000 --- a/0061-hwdep-add-OXFW-driver-support.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 93b0e9ca85762c2b863434b2617147f806c7e3e3 Mon Sep 17 00:00:00 2001 -From: Takashi Sakamoto -Date: Sat, 29 Nov 2014 01:03:34 +0900 -Subject: [PATCH] hwdep: add OXFW driver support - -Linux 3.19 newly support this driver. By hardware dependent interface, -userspace applications can get hardware information, lock/unlock kernel -streaming and receive lock status event. - -Signed-off-by: Takashi Sakamoto -Signed-off-by: Takashi Iwai ---- - include/hwdep.h | 3 ++- - include/sound/asound.h | 3 ++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/include/hwdep.h b/include/hwdep.h -index ad8bb4972818..3d3c31b2f068 100644 ---- a/include/hwdep.h -+++ b/include/hwdep.h -@@ -73,8 +73,9 @@ typedef enum _snd_hwdep_iface { - SND_HWDEP_IFACE_FW_DICE, /**< TC DICE FireWire device */ - SND_HWDEP_IFACE_FW_FIREWORKS, /**< Echo Audio Fireworks based device */ - SND_HWDEP_IFACE_FW_BEBOB, /**< BridgeCo BeBoB based device */ -+ SND_HWDEP_IFACE_FW_OXFW, /**< Oxford OXFW970/971 based device */ - -- SND_HWDEP_IFACE_LAST = SND_HWDEP_IFACE_FW_BEBOB /**< last known hwdep interface */ -+ SND_HWDEP_IFACE_LAST = SND_HWDEP_IFACE_FW_OXFW /**< last known hwdep interface */ - } snd_hwdep_iface_t; - - /** open for reading */ -diff --git a/include/sound/asound.h b/include/sound/asound.h -index 941d32f007dc..1f23cd635957 100644 ---- a/include/sound/asound.h -+++ b/include/sound/asound.h -@@ -96,9 +96,10 @@ enum { - SNDRV_HWDEP_IFACE_FW_DICE, /* TC DICE FireWire device */ - SNDRV_HWDEP_IFACE_FW_FIREWORKS, /* Echo Audio Fireworks based device */ - SNDRV_HWDEP_IFACE_FW_BEBOB, /* BridgeCo BeBoB based device */ -+ SNDRV_HWDEP_IFACE_FW_OXFW, /* Oxford OXFW970/971 based device */ - - /* Don't forget to change the following: */ -- SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_BEBOB -+ SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_OXFW - }; - - struct snd_hwdep_info { --- -2.2.2 - diff --git a/0062-pcm-fix-buffer-overflow-in-snd_pcm_chmap_print.patch b/0062-pcm-fix-buffer-overflow-in-snd_pcm_chmap_print.patch deleted file mode 100644 index 9cdf933..0000000 --- a/0062-pcm-fix-buffer-overflow-in-snd_pcm_chmap_print.patch +++ /dev/null @@ -1,33 +0,0 @@ -From b2ed0aa9f28979f125a9db0548cfd38ac2334775 Mon Sep 17 00:00:00 2001 -From: Anssi Hannula -Date: Tue, 30 Dec 2014 20:46:11 +0200 -Subject: [PATCH] pcm: fix buffer overflow in snd_pcm_chmap_print() - -The size argument is wrong for one of the snprintf() calls in -snd_pcm_chmap_print(), allowing an overflow to happen (the user-provided -buffer may be written data up to 2x its actual size). - -Seen in an user report here: http://trac.kodi.tv/ticket/15641 - -Signed-off-by: Anssi Hannula -Signed-off-by: Takashi Iwai ---- - src/pcm/pcm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c -index baa47c73fa4d..e74e02fc568f 100644 ---- a/src/pcm/pcm.c -+++ b/src/pcm/pcm.c -@@ -7621,7 +7621,7 @@ int snd_pcm_chmap_print(const snd_pcm_chmap_t *map, size_t maxlen, char *buf) - return -ENOMEM; - } - if (map->pos[i] & SND_CHMAP_DRIVER_SPEC) -- len += snprintf(buf + len, maxlen, "%d", p); -+ len += snprintf(buf + len, maxlen - len, "%d", p); - else { - const char *name = chmap_names[p]; - if (name) --- -2.2.2 - diff --git a/0063-control-enable-octal-and-hexadecimal-parse.patch b/0063-control-enable-octal-and-hexadecimal-parse.patch deleted file mode 100644 index 6896340..0000000 --- a/0063-control-enable-octal-and-hexadecimal-parse.patch +++ /dev/null @@ -1,39 +0,0 @@ -From f47480af37eebe4b89020449077d731ad25abc76 Mon Sep 17 00:00:00 2001 -From: "Lu, Han" -Date: Wed, 14 Jan 2015 09:08:30 +0800 -Subject: [PATCH] control: enable octal and hexadecimal parse - -Use zero-base for strtol(), so get_integer() and get_integer64() -can parse decimal, octal and hexadecimal data from input string. - -Signed-off-by: Lu, Han -Signed-off-by: Takashi Iwai ---- - src/control/ctlparse.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/control/ctlparse.c b/src/control/ctlparse.c -index 978977dbc3db..8d6c3859bec4 100644 ---- a/src/control/ctlparse.c -+++ b/src/control/ctlparse.c -@@ -59,7 +59,7 @@ static long get_integer(const char **ptr, long min, long max) - goto out; - - s = p; -- val = strtol(s, &p, 10); -+ val = strtol(s, &p, 0); - if (*p == '.') { - p++; - strtol(p, &p, 10); -@@ -87,7 +87,7 @@ static long long get_integer64(const char **ptr, long long min, long long max) - goto out; - - s = p; -- val = strtol(s, &p, 10); -+ val = strtol(s, &p, 0); - if (*p == '.') { - p++; - strtol(p, &p, 10); --- -2.2.2 - diff --git a/0064-autotools-fix-ucm-partial-build.patch b/0064-autotools-fix-ucm-partial-build.patch deleted file mode 100644 index 24e1dc4..0000000 --- a/0064-autotools-fix-ucm-partial-build.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 187ba1d8cde0f866d40c1503cb11c3751a8255e2 Mon Sep 17 00:00:00 2001 -From: Matthieu Crapet -Date: Wed, 14 Jan 2015 15:42:45 +0100 -Subject: [PATCH] autotools: fix ucm partial build - -When --disable-ucm configure option is specified, -don't install related include file. - -Signed-off-by: Matthieu Crapet -Signed-off-by: Takashi Iwai ---- - include/Makefile.am | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/include/Makefile.am b/include/Makefile.am -index 0127d5c4b200..4baa03af69e1 100644 ---- a/include/Makefile.am -+++ b/include/Makefile.am -@@ -5,7 +5,7 @@ alsaincludedir = ${includedir}/alsa - - alsainclude_HEADERS = asoundlib.h asoundef.h \ - version.h global.h input.h output.h error.h \ -- conf.h control.h iatomic.h use-case.h -+ conf.h control.h iatomic.h - - if BUILD_CTL_PLUGIN_EXT - alsainclude_HEADERS += control_external.h -@@ -17,7 +17,7 @@ if BUILD_PCM_PLUGIN - alsainclude_HEADERS += pcm_plugin.h - endif - if BUILD_PCM_PLUGIN_RATE --alsainclude_HEADERS += pcm_rate.h -+alsainclude_HEADERS += pcm_rate.h - endif - if BUILD_PCM_PLUGIN_EXTPLUG - alsainclude_HEADERS += pcm_external.h pcm_extplug.h -@@ -46,6 +46,10 @@ if BUILD_SEQ - alsainclude_HEADERS += seq_event.h seq.h seqmid.h seq_midi_event.h - endif - -+if BUILD_UCM -+alsainclude_HEADERS += use-case.h -+endif -+ - if BUILD_ALISP - alsainclude_HEADERS += alisp.h - endif --- -2.2.2 - diff --git a/0065-conf-ucm-GoogleNyan-Add-configuration.patch b/0065-conf-ucm-GoogleNyan-Add-configuration.patch deleted file mode 100644 index 9813130..0000000 --- a/0065-conf-ucm-GoogleNyan-Add-configuration.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 3b5fac6d10c580aee14642df8f94caad15dd53f0 Mon Sep 17 00:00:00 2001 -From: Tomeu Vizoso -Date: Thu, 15 Jan 2015 17:27:29 +0100 -Subject: [PATCH] conf/ucm: GoogleNyan: Add configuration - -Taken from the ChromeOS sources, this configuration should apply to all -Nyan boards from Google, so far HP Chromebook 14 (nyan-blaze) and Acer -Chromebook 13 (nyan-big). - -Signed-off-by: Tomeu Vizoso -Signed-off-by: Takashi Iwai ---- - configure.ac | 1 + - src/conf/ucm/GoogleNyan/GoogleNyan.conf | 5 +++ - src/conf/ucm/GoogleNyan/HiFi.conf | 77 +++++++++++++++++++++++++++++++++ - src/conf/ucm/GoogleNyan/Makefile.am | 4 ++ - src/conf/ucm/Makefile.am | 2 +- - 5 files changed, 88 insertions(+), 1 deletion(-) - create mode 100644 src/conf/ucm/GoogleNyan/GoogleNyan.conf - create mode 100644 src/conf/ucm/GoogleNyan/HiFi.conf - create mode 100644 src/conf/ucm/GoogleNyan/Makefile.am - -diff --git a/configure.ac b/configure.ac -index 734163c8c321..916280b8934a 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -654,6 +654,7 @@ AC_OUTPUT(Makefile doc/Makefile doc/pictures/Makefile doc/doxygen.cfg \ - src/conf/ucm/SDP4430/Makefile \ - src/conf/ucm/tegraalc5632/Makefile \ - src/conf/ucm/PAZ00/Makefile \ -+ src/conf/ucm/GoogleNyan/Makefile \ - modules/Makefile modules/mixer/Makefile modules/mixer/simple/Makefile \ - alsalisp/Makefile aserver/Makefile \ - test/Makefile test/lsb/Makefile \ -diff --git a/src/conf/ucm/GoogleNyan/GoogleNyan.conf b/src/conf/ucm/GoogleNyan/GoogleNyan.conf -new file mode 100644 -index 000000000000..efe6ad8a5c6e ---- /dev/null -+++ b/src/conf/ucm/GoogleNyan/GoogleNyan.conf -@@ -0,0 +1,5 @@ -+Comment "Nyan internal card" -+SectionUseCase."HiFi" { -+ File "HiFi.conf" -+ Comment "Default" -+} -diff --git a/src/conf/ucm/GoogleNyan/HiFi.conf b/src/conf/ucm/GoogleNyan/HiFi.conf -new file mode 100644 -index 000000000000..b28fe917162d ---- /dev/null -+++ b/src/conf/ucm/GoogleNyan/HiFi.conf -@@ -0,0 +1,77 @@ -+SectionVerb { -+ EnableSequence [ -+ cdev "hw:GoogleNyan" -+ cset "name='Left Speaker Mixer Left DAC Switch' on" -+ cset "name='Right Speaker Mixer Right DAC Switch' on" -+ cset "name='Headphone Left Switch' on" -+ cset "name='Headphone Right Switch' on" -+ cset "name='Digital EQ 3 Band Switch' off" -+ cset "name='Digital EQ 5 Band Switch' off" -+ cset "name='Digital EQ 7 Band Switch' off" -+ cset "name='Biquad Switch' off" -+ cset "name='Filter Mode' Music" -+ cset "name='ADC Oversampling Rate' 0" -+ cset "name='DMIC Mux' DMIC" -+ cset "name='MIC2 Mux' IN34" -+ cset "name='Right ADC Mixer MIC2 Switch' on" -+ cset "name='Left ADC Mixer MIC2 Switch' on" -+ cset "name='MIC2 Volume' 10" -+ cset "name='MIC2 Boost Volume' 0" -+ cset "name='Mic Jack Switch' off" -+ cset "name='Int Mic Switch' on" -+ cset "name='ADCR Boost Volume' 4" -+ cset "name='ADCL Boost Volume' 4" -+ cset "name='ADCR Volume' 11" -+ cset "name='ADCL Volume' 11" -+ cset "name='Left Speaker Mixer Left DAC Switch' on" -+ cset "name='Right Speaker Mixer Right DAC Switch' on" -+ cset "name='Speaker Left Mixer Volume' 2" -+ cset "name='Speaker Right Mixer Volume' 2" -+ cset "name='Record Path DC Blocking' on" -+ cset "name='Playback Path DC Blocking' on" -+ cset "name='Headphone Left Switch' on" -+ cset "name='Headphone Right Switch' on" -+ cset "name='Headphones Switch' off" -+ cset "name='Speaker Left Switch' on" -+ cset "name='Speaker Right Switch' on" -+ cset "name='Speakers Switch' on" -+ ] -+ DisableSequence [ -+ ] -+} -+ -+SectionDevice."Headphone".0 { -+ Value { -+ OutputDspName "" -+ } -+ EnableSequence [ -+ cdev "hw:GoogleNyan" -+ cset "name='Speakers Switch' off" -+ cset "name='Headphones Switch' on" -+ ] -+ DisableSequence [ -+ cdev "hw:GoogleNyan" -+ cset "name='Headphones Switch' off" -+ cset "name='Speakers Switch' on" -+ ] -+} -+ -+SectionDevice."Mic".0 { -+ Value { -+ CaptureControl "MIC2" -+ } -+ EnableSequence [ -+ cdev "hw:GoogleNyan" -+ cset "name='Int Mic Switch' off" -+ cset "name='DMIC Mux' ADC" -+ cset "name='Mic Jack Switch' on" -+ cset "name='Record Path DC Blocking' on" -+ ] -+ DisableSequence [ -+ cdev "hw:GoogleNyan" -+ cset "name='Mic Jack Switch' off" -+ cset "name='DMIC Mux' DMIC" -+ cset "name='Int Mic Switch' on" -+ cset "name='Record Path DC Blocking' off" -+ ] -+} -diff --git a/src/conf/ucm/GoogleNyan/Makefile.am b/src/conf/ucm/GoogleNyan/Makefile.am -new file mode 100644 -index 000000000000..47c7fc9d7976 ---- /dev/null -+++ b/src/conf/ucm/GoogleNyan/Makefile.am -@@ -0,0 +1,4 @@ -+alsaconfigdir = @ALSA_CONFIG_DIR@ -+ucmdir = $(alsaconfigdir)/ucm/GoogleNyan -+ucm_DATA = GoogleNyan.conf HiFi.conf -+EXTRA_DIST = $(ucm_DATA) -diff --git a/src/conf/ucm/Makefile.am b/src/conf/ucm/Makefile.am -index bde89dfea440..14fc7aee8e6c 100644 ---- a/src/conf/ucm/Makefile.am -+++ b/src/conf/ucm/Makefile.am -@@ -1 +1 @@ --SUBDIRS=DAISY-I2S PandaBoard PandaBoardES SDP4430 tegraalc5632 PAZ00 -+SUBDIRS=DAISY-I2S PandaBoard PandaBoardES SDP4430 tegraalc5632 PAZ00 GoogleNyan --- -2.2.2 - diff --git a/0066-ucm-add-binary-configure-file-parse.patch b/0066-ucm-add-binary-configure-file-parse.patch deleted file mode 100644 index e1c5aa4..0000000 --- a/0066-ucm-add-binary-configure-file-parse.patch +++ /dev/null @@ -1,168 +0,0 @@ -From 6ea14c3624c0cbcf90e7d5859b4af629523b8d82 Mon Sep 17 00:00:00 2001 -From: "Lu, Han" -Date: Thu, 22 Jan 2015 09:32:47 +0800 -Subject: [PATCH] ucm: add binary configure file parse - -with cset command, UCM set kcontrol parameters directly: - cset "name='' 1<,2,3,...>" -This patch enables UCM to set kcontrol with parameters from -configure file: - cset-bin-file "name='' " -where "cset-bin-file" is a newly added keyword alongside of "cset", -to indicate cset with binary data in file. -The binary data in file is parameter for audio DSPs, and it's just -passed by UCM/ALSA as raw data. The data type of parameter elements -must be byte, and the count must matches driver definition. - -Signed-off-by: Lu, Han -Signed-off-by: Takashi Iwai ---- - src/ucm/main.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++--- - src/ucm/parser.c | 10 +++++++++ - src/ucm/ucm_local.h | 1 + - 3 files changed, 73 insertions(+), 3 deletions(-) - -diff --git a/src/ucm/main.c b/src/ucm/main.c -index 37ae4c84aa64..182f17476cbe 100644 ---- a/src/ucm/main.c -+++ b/src/ucm/main.c -@@ -34,6 +34,7 @@ - #include - #include - #include -+#include - - /* - * misc -@@ -160,11 +161,65 @@ static int open_ctl(snd_use_case_mgr_t *uc_mgr, - return 0; - } - -+static int binary_file_parse(snd_ctl_elem_value_t *dst, -+ snd_ctl_elem_info_t *info, -+ const char *filepath) -+{ -+ int err = 0; -+ int fd; -+ struct stat st; -+ size_t sz; -+ ssize_t sz_read; -+ char *res; -+ snd_ctl_elem_type_t type; -+ unsigned int idx, count; -+ -+ type = snd_ctl_elem_info_get_type(info); -+ if (type != SND_CTL_ELEM_TYPE_BYTES) { -+ uc_error("only support byte type!"); -+ err = -EINVAL; -+ return err; -+ } -+ fd = open(filepath, O_RDONLY); -+ if (fd < 0) { -+ err = -errno; -+ return err; -+ } -+ if (stat(filepath, &st) == -1) { -+ err = -errno; -+ goto __fail; -+ } -+ sz = st.st_size; -+ count = snd_ctl_elem_info_get_count(info); -+ if (sz != count || sz > sizeof(dst->value.bytes)) { -+ uc_error("invalid parameter size %d!", sz); -+ err = -EINVAL; -+ goto __fail; -+ } -+ res = malloc(sz); -+ if (res == NULL) { -+ err = -ENOMEM; -+ goto __fail; -+ } -+ sz_read = read(fd, res, sz); -+ if (sz_read < 0 || (size_t)sz_read != sz) { -+ err = -errno; -+ goto __fail_read; -+ } -+ for (idx = 0; idx < sz; idx++) -+ snd_ctl_elem_value_set_byte(dst, idx, *(res + idx)); -+ __fail_read: -+ free(res); -+ __fail: -+ close(fd); -+ return err; -+} -+ - extern int __snd_ctl_ascii_elem_id_parse(snd_ctl_elem_id_t *dst, - const char *str, - const char **ret_ptr); - --static int execute_cset(snd_ctl_t *ctl, const char *cset) -+static int execute_cset(snd_ctl_t *ctl, const char *cset, unsigned int type) - { - const char *pos; - int err; -@@ -194,7 +249,10 @@ static int execute_cset(snd_ctl_t *ctl, const char *cset) - err = snd_ctl_elem_info(ctl, info); - if (err < 0) - goto __fail; -- err = snd_ctl_ascii_value_parse(ctl, value, info, pos); -+ if (type == SEQUENCE_ELEMENT_TYPE_CSET_BIN_FILE) -+ err = binary_file_parse(value, info, pos); -+ else -+ err = snd_ctl_ascii_value_parse(ctl, value, info, pos); - if (err < 0) - goto __fail; - err = snd_ctl_elem_write(ctl, value); -@@ -239,6 +297,7 @@ static int execute_sequence(snd_use_case_mgr_t *uc_mgr, - goto __fail_nomem; - break; - case SEQUENCE_ELEMENT_TYPE_CSET: -+ case SEQUENCE_ELEMENT_TYPE_CSET_BIN_FILE: - if (cdev == NULL) { - const char *cdev1 = NULL, *cdev2 = NULL; - err = get_value3(&cdev1, "PlaybackCTL", -@@ -274,7 +333,7 @@ static int execute_sequence(snd_use_case_mgr_t *uc_mgr, - goto __fail; - } - } -- err = execute_cset(ctl, s->data.cset); -+ err = execute_cset(ctl, s->data.cset, s->type); - if (err < 0) { - uc_error("unable to execute cset '%s'\n", s->data.cset); - goto __fail; -diff --git a/src/ucm/parser.c b/src/ucm/parser.c -index d7517f69e84b..9e1cb41a2862 100644 ---- a/src/ucm/parser.c -+++ b/src/ucm/parser.c -@@ -306,6 +306,16 @@ static int parse_sequence(snd_use_case_mgr_t *uc_mgr ATTRIBUTE_UNUSED, - continue; - } - -+ if (strcmp(cmd, "cset-bin-file") == 0) { -+ curr->type = SEQUENCE_ELEMENT_TYPE_CSET_BIN_FILE; -+ err = parse_string(n, &curr->data.cset); -+ if (err < 0) { -+ uc_error("error: cset-bin-file requires a string!"); -+ return err; -+ } -+ continue; -+ } -+ - if (strcmp(cmd, "usleep") == 0) { - curr->type = SEQUENCE_ELEMENT_TYPE_SLEEP; - err = snd_config_get_integer(n, &curr->data.sleep); -diff --git a/src/ucm/ucm_local.h b/src/ucm/ucm_local.h -index 87f14a299903..c1655c70504f 100644 ---- a/src/ucm/ucm_local.h -+++ b/src/ucm/ucm_local.h -@@ -47,6 +47,7 @@ - #define SEQUENCE_ELEMENT_TYPE_CSET 2 - #define SEQUENCE_ELEMENT_TYPE_SLEEP 3 - #define SEQUENCE_ELEMENT_TYPE_EXEC 4 -+#define SEQUENCE_ELEMENT_TYPE_CSET_BIN_FILE 5 - - struct ucm_value { - struct list_head list; --- -2.2.2 - diff --git a/0067-Remove-unused-hostname-resolution-in-shm-plugins-and.patch b/0067-Remove-unused-hostname-resolution-in-shm-plugins-and.patch deleted file mode 100644 index 56db0c9..0000000 --- a/0067-Remove-unused-hostname-resolution-in-shm-plugins-and.patch +++ /dev/null @@ -1,323 +0,0 @@ -From dbb7eca6559e970bd015eaa95a9e0525660fa09e Mon Sep 17 00:00:00 2001 -From: Takashi Iwai -Date: Wed, 28 Jan 2015 16:21:14 +0100 -Subject: [PATCH] Remove unused hostname resolution in shm plugins and aserver - -PCM and control shm plugins and aserver have some codes to resolve the -host address and check whether it's a local host although the given -address is never used. In addition, the code contains gethostbyname() -that is known to be obsoleted. So, let's get rid of all these unused -codes. - -The host configuration item is still accepted (but just ignored) for -keeping the compatibility. - -Signed-off-by: Takashi Iwai ---- - aserver/aserver.c | 24 +------------------- - include/aserver.h | 1 - src/control/control_shm.c | 49 +---------------------------------------- - src/pcm/pcm_shm.c | 53 +-------------------------------------------- - src/socket.c | 54 ---------------------------------------------- - 5 files changed, 6 insertions(+), 175 deletions(-) - ---- a/aserver/aserver.c -+++ b/aserver/aserver.c -@@ -1013,11 +1013,10 @@ int main(int argc, char **argv) - snd_config_t *conf; - snd_config_iterator_t i, next; - const char *sockname = NULL; -- const char *host = NULL; - long port = -1; - int err; - char *srvname; -- struct hostent *h; -+ - command = argv[0]; - while ((c = getopt_long(argc, argv, "h", long_options, 0)) != -1) { - switch (c) { -@@ -1055,14 +1054,8 @@ int main(int argc, char **argv) - continue; - if (strcmp(id, "comment") == 0) - continue; -- if (strcmp(id, "host") == 0) { -- err = snd_config_get_string(n, &host); -- if (err < 0) { -- ERROR("Invalid type for %s", id); -- return 1; -- } -+ if (strcmp(id, "host") == 0) - continue; -- } - if (strcmp(id, "socket") == 0) { - err = snd_config_get_string(n, &sockname); - if (err < 0) { -@@ -1082,19 +1075,6 @@ int main(int argc, char **argv) - ERROR("Unknown field %s", id); - return 1; - } -- if (!host) { -- ERROR("host is not defined"); -- return 1; -- } -- h = gethostbyname(host); -- if (!h) { -- ERROR("Cannot resolve %s", host); -- return 1; -- } -- if (!snd_is_local(h)) { -- ERROR("%s is not the local host", host); -- return 1; -- } - if (!sockname && port < 0) { - ERROR("either socket or port need to be defined"); - return 1; ---- a/include/aserver.h -+++ b/include/aserver.h -@@ -23,7 +23,6 @@ - #include "../src/control/control_local.h" - - int snd_receive_fd(int sock, void *data, size_t len, int *fd); --int snd_is_local(struct hostent *hent); - - typedef enum _snd_dev_type { - SND_DEV_TYPE_PCM, ---- a/src/control/control_shm.c -+++ b/src/control/control_shm.c -@@ -441,29 +441,6 @@ static int make_local_socket(const char - return sock; - } - --#if 0 --static int make_inet_socket(const char *host, int port) --{ -- struct sockaddr_in addr; -- int sock; -- struct hostent *h = gethostbyname(host); -- if (!h) -- return -ENOENT; -- -- sock = socket(PF_INET, SOCK_STREAM, 0); -- if (sock < 0) -- return -errno; -- -- addr.sin_family = AF_INET; -- addr.sin_port = htons(port); -- memcpy(&addr.sin_addr, h->h_addr_list[0], sizeof(struct in_addr)); -- -- if (connect(sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) -- return -errno; -- return sock; --} --#endif -- - int snd_ctl_shm_open(snd_ctl_t **handlep, const char *name, const char *sockname, const char *sname, int mode) - { - snd_ctl_t *ctl; -@@ -565,12 +542,10 @@ int _snd_ctl_shm_open(snd_ctl_t **handle - const char *server = NULL; - const char *ctl_name = NULL; - snd_config_t *sconfig; -- const char *host = NULL; - const char *sockname = NULL; - long port = -1; - int err; -- int local; -- struct hostent *h; -+ - snd_config_for_each(i, next, conf) { - snd_config_t *n = snd_config_iterator_entry(i); - const char *id; -@@ -624,14 +599,8 @@ int _snd_ctl_shm_open(snd_ctl_t **handle - continue; - if (strcmp(id, "comment") == 0) - continue; -- if (strcmp(id, "host") == 0) { -- err = snd_config_get_string(n, &host); -- if (err < 0) { -- SNDERR("Invalid type for %s", id); -- goto _err; -- } -+ if (strcmp(id, "host") == 0) - continue; -- } - if (strcmp(id, "socket") == 0) { - err = snd_config_get_string(n, &sockname); - if (err < 0) { -@@ -653,24 +622,10 @@ int _snd_ctl_shm_open(snd_ctl_t **handle - goto _err; - } - -- if (!host) { -- SNDERR("host is not defined"); -- goto _err; -- } - if (!sockname) { - SNDERR("socket is not defined"); - goto _err; - } -- h = gethostbyname(host); -- if (!h) { -- SNDERR("Cannot resolve %s", host); -- goto _err; -- } -- local = snd_is_local(h); -- if (!local) { -- SNDERR("%s is not the local host", host); -- goto _err; -- } - err = snd_ctl_shm_open(handlep, name, sockname, ctl_name, mode); - _err: - snd_config_delete(sconfig); ---- a/src/pcm/pcm_shm.c -+++ b/src/pcm/pcm_shm.c -@@ -654,33 +654,6 @@ static int make_local_socket(const char - return sock; - } - --#if 0 --static int make_inet_socket(const char *host, int port) --{ -- struct sockaddr_in addr; -- int sock; -- struct hostent *h = gethostbyname(host); -- if (!h) -- return -ENOENT; -- -- sock = socket(PF_INET, SOCK_STREAM, 0); -- if (sock < 0) { -- SYSERR("socket failed"); -- return -errno; -- } -- -- addr.sin_family = AF_INET; -- addr.sin_port = htons(port); -- memcpy(&addr.sin_addr, h->h_addr_list[0], sizeof(struct in_addr)); -- -- if (connect(sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) { -- SYSERR("connect failed"); -- return -errno; -- } -- return sock; --} --#endif -- - /** - * \brief Creates a new shared memory PCM - * \param pcmp Returns created PCM handle -@@ -842,12 +815,10 @@ int _snd_pcm_shm_open(snd_pcm_t **pcmp, - const char *server = NULL; - const char *pcm_name = NULL; - snd_config_t *sconfig; -- const char *host = NULL; - const char *sockname = NULL; - long port = -1; - int err; -- int local; -- struct hostent *h; -+ - snd_config_for_each(i, next, conf) { - snd_config_t *n = snd_config_iterator_entry(i); - const char *id; -@@ -898,14 +869,8 @@ int _snd_pcm_shm_open(snd_pcm_t **pcmp, - continue; - if (strcmp(id, "comment") == 0) - continue; -- if (strcmp(id, "host") == 0) { -- err = snd_config_get_string(n, &host); -- if (err < 0) { -- SNDERR("Invalid type for %s", id); -- goto _err; -- } -+ if (strcmp(id, "host") == 0) - continue; -- } - if (strcmp(id, "socket") == 0) { - err = snd_config_get_string(n, &sockname); - if (err < 0) { -@@ -928,24 +893,10 @@ int _snd_pcm_shm_open(snd_pcm_t **pcmp, - goto __error; - } - -- if (!host) { -- SNDERR("host is not defined"); -- goto _err; -- } - if (!sockname) { - SNDERR("socket is not defined"); - goto _err; - } -- h = gethostbyname(host); -- if (!h) { -- SNDERR("Cannot resolve %s", host); -- goto _err; -- } -- local = snd_is_local(h); -- if (!local) { -- SNDERR("%s is not the local host", host); -- goto _err; -- } - err = snd_pcm_shm_open(pcmp, name, sockname, pcm_name, stream, mode); - __error: - snd_config_delete(sconfig); ---- a/src/socket.c -+++ b/src/socket.c -@@ -106,58 +106,4 @@ int snd_receive_fd(int sock, void *data, - *fd = *fds; - return ret; - } -- --int snd_is_local(struct hostent *hent) --{ -- int s; -- int err; -- struct ifconf conf; -- size_t numreqs = 10; -- size_t i; -- struct in_addr *haddr = (struct in_addr*) hent->h_addr_list[0]; -- -- s = socket(PF_INET, SOCK_STREAM, 0); -- if (s < 0) { -- SYSERR("socket failed"); -- return -errno; -- } -- -- conf.ifc_len = numreqs * sizeof(struct ifreq); -- conf.ifc_buf = malloc((unsigned int) conf.ifc_len); -- if (! conf.ifc_buf) { -- close(s); -- return -ENOMEM; -- } -- while (1) { -- err = ioctl(s, SIOCGIFCONF, &conf); -- if (err < 0) { -- SYSERR("SIOCGIFCONF failed"); -- close(s); -- return -errno; -- } -- if ((size_t)conf.ifc_len < numreqs * sizeof(struct ifreq)) -- break; -- numreqs *= 2; -- conf.ifc_len = numreqs * sizeof(struct ifreq); -- conf.ifc_buf = realloc(conf.ifc_buf, (unsigned int) conf.ifc_len); -- if (! conf.ifc_buf) { -- close(s); -- return -ENOMEM; -- } -- } -- numreqs = conf.ifc_len / sizeof(struct ifreq); -- for (i = 0; i < numreqs; ++i) { -- struct ifreq *req = &conf.ifc_req[i]; -- struct sockaddr_in *s_in = (struct sockaddr_in *)&req->ifr_addr; -- s_in->sin_family = AF_INET; -- err = ioctl(s, SIOCGIFADDR, req); -- if (err < 0) -- continue; -- if (haddr->s_addr == s_in->sin_addr.s_addr) -- break; -- } -- close(s); -- free(conf.ifc_buf); -- return i < numreqs; --} - #endif diff --git a/alsa-lib-1.0.28.tar.bz2 b/alsa-lib-1.0.28.tar.bz2 deleted file mode 100644 index d5d015b..0000000 --- a/alsa-lib-1.0.28.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3c074b85dde1b30e78ef4995579765833e5b693fbbd8f834c335e080cb734a6d -size 903786 diff --git a/alsa-lib-1.0.29.tar.bz2 b/alsa-lib-1.0.29.tar.bz2 new file mode 100644 index 0000000..5d5062b --- /dev/null +++ b/alsa-lib-1.0.29.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73043c35eb9636be0f4af6a240235c213f12a25feb1f04aeeac8cb7e30fcbdd0 +size 905417 diff --git a/alsa.changes b/alsa.changes index a3c04aa..0a820d6 100644 --- a/alsa.changes +++ b/alsa.changes @@ -1,3 +1,76 @@ +------------------------------------------------------------------- +Thu Feb 26 17:24:22 CET 2015 - tiwai@suse.de + +- Updated to alsa-lib 1.0.29: + Just a version bump including previous fixes +- Drop the obsoleted patches: + 0001-ucm-Document-PlaybackPCMIsDummy-and-CapturePCMIsDumm.patch + 0002-ICE1712-add-surround71-pcm-definition.patch + 0003-USB-Audio-Add-second-S-PDIF-device-on-Phiree-U2.patch + 0004-pcm-rate-fix-hw_ptr-exceed-the-boundary.patch + 0005-pcm-Provide-a-CLOCK_MONOTONIC_RAW-timestamp-type.patch + 0006-Add-timestamp-type-to-sw_params-internal-only.patch + 0007-pcm-Add-sw_params-API-functions-to-get-set-timestamp.patch + 0008-pcm-Implement-timestamp-type-setup-in-hw-plugin.patch + 0009-pcm-Implement-timestamp-type-handling-in-all-plugins.patch + 0010-test-audio_time-Set-timestamp-type-explicitly.patch + 0011-pcm-route-Use-get-put-labels-for-all-3-byte-formats.patch + 0012-pcm-Fill-sw_params-proto-field.patch + 0013-pcm-route-Use-get32-for-multi-source-route-calculati.patch + 0014-pcm-Drop-snd_pcm_linear_-get-put-32_index.patch + 0015-pcm-pcm_local.h-include-time.h-to-enable-CLOCK_MONOT.patch + 0016-pcm-Fix-DSD-formats-userland-usability.patch + 0017-Sync-include-sound-asound.h-with-3.17-rc1-kernel.patch + 0018-pcm-Add-missing-signed-and-endianess-definitions-for.patch + 0019-Sync-enum-snd_hwdep_iface_t-with-include-asound-asou.patch + 0020-pcm-2nd-round-of-pcm_misc-DSD-fixes.patch + 0021-doc-fix-cross-compiling-example.patch + 0022-pcm-fix-snd_pcm_mmap_hw_avail-near-the-boundary.patch + 0023-pcm-fix-return-value-of-snd_pcm_share_slave_avail.patch + 0024-pcm-add-new-32-bit-DSD-sample-format.patch + 0025-dmix-actually-rewind-when-running-or-being-drained.patch + 0026-pcm-express-the-rewind-size-limitation-logic-better.patch + 0027-pcm-handle-negative-values-from-snd_pcm_mmap_hw_avai.patch + 0028-pcm-rate-use-the-snd_pcm_mmap_hw_avail-function.patch + 0029-pcm-null-use-the-snd_pcm_mmap_avail-function.patch + 0030-rate-handle-negative-values-from-snd_pcm_mmap_playba.patch + 0031-dsnoop-rewindable-and-forwardable-logic-was-swapped.patch + 0033-pcm-file-don-t-recurse-in-the-rewindable-and-forward.patch + 0034-pcm-route-Fix-the-bad-condition-always-false.patch + 0035-pcm-rate-hw_avail-must-not-be-negative-before-starti.patch + 0036-hwdep-add-missing-declaration-for-snd_hwdep_poll_des.patch + 0037-mixer-fixed-double-free.patch + 0038-pcm_file-fixed-missing-free.patch + 0039-sbase-fixed-missing-free.patch + 0040-rawmidi-close-handle-h.patch + 0041-pcm_share-fixing-missing-mutex-unlock.patch + 0042-simple_abst-null-check-for-lib.patch + 0043-socket-missing-socket-close.patch + 0044-pcm_hooks-null-check-for-h.patch + 0045-conf-return-negative-value-in-case-of-error.patch + 0046-control-return-negative-value-in-case-of-error.patch + 0047-pcm-return-negative-value-in-case-of-error.patch + 0048-mixer-Fix-missing-hctl-handle-free-in-snd_mixer_atta.patch + 0049-conf-ucm-PAZ00-add-Toshiba-AC100-Dynabook-AZ-new-con.patch + 0050-USB-Audio-Add-Scarlett-2i4-USB-to-S-PDIF-blacklist.patch + 0051-snd_user_file-fix-memory-leak.patch + 0052-pcm-dmix-Don-t-ignore-SND_TIMER_EVENT_MSTOP.patch + 0053-snd_dlsym-only-do-versioning-checks-if-built-with-ve.patch + 0054-dlmisc-Remove-unused-label.patch + 0055-USB-audio-Add-five-more-cards-to-IEC958-blacklist.patch + 0056-pcm-Fix-DSD-sample-format-endianess-and-add-big-endi.patch + 0057-mixer-Fix-inclusion-of-config.h.patch + 0058-mixer-Fix-unused-parameter-warnings.patch + 0059-ucm-Fix-uninitialized-err-in-snd_use_case_set.patch + 0060-pcm-Fix-assorted-tstamp_type-bugs-omissions.patch + 0061-hwdep-add-OXFW-driver-support.patch + 0062-pcm-fix-buffer-overflow-in-snd_pcm_chmap_print.patch + 0063-control-enable-octal-and-hexadecimal-parse.patch + 0064-autotools-fix-ucm-partial-build.patch + 0065-conf-ucm-GoogleNyan-Add-configuration.patch + 0066-ucm-add-binary-configure-file-parse.patch + 0067-Remove-unused-hostname-resolution-in-shm-plugins-and.patch + ------------------------------------------------------------------- Wed Jan 28 15:50:35 CET 2015 - tiwai@suse.de diff --git a/alsa.spec b/alsa.spec index 50e10a9..2c38a5a 100644 --- a/alsa.spec +++ b/alsa.spec @@ -16,14 +16,14 @@ # -%define package_version 1.0.28 +%define package_version 1.0.29 %if 0%{?suse_version} > 1200 %define _udevdir %(pkg-config --variable=udevdir udev) %else %define _udevdir /lib/udev %endif Name: alsa -Version: 1.0.28 +Version: 1.0.29 Release: 0 # Summary: Advanced Linux Sound Architecture @@ -49,72 +49,6 @@ Source40: 50-alsa.conf Source41: install-snd-module # Patch: alsa-lib-git-fixes.diff # upstream fixes -Patch1: 0001-ucm-Document-PlaybackPCMIsDummy-and-CapturePCMIsDumm.patch -Patch2: 0002-ICE1712-add-surround71-pcm-definition.patch -Patch3: 0003-USB-Audio-Add-second-S-PDIF-device-on-Phiree-U2.patch -Patch4: 0004-pcm-rate-fix-hw_ptr-exceed-the-boundary.patch -Patch5: 0005-pcm-Provide-a-CLOCK_MONOTONIC_RAW-timestamp-type.patch -Patch6: 0006-Add-timestamp-type-to-sw_params-internal-only.patch -Patch7: 0007-pcm-Add-sw_params-API-functions-to-get-set-timestamp.patch -Patch8: 0008-pcm-Implement-timestamp-type-setup-in-hw-plugin.patch -Patch9: 0009-pcm-Implement-timestamp-type-handling-in-all-plugins.patch -Patch10: 0010-test-audio_time-Set-timestamp-type-explicitly.patch -Patch11: 0011-pcm-route-Use-get-put-labels-for-all-3-byte-formats.patch -Patch12: 0012-pcm-Fill-sw_params-proto-field.patch -Patch13: 0013-pcm-route-Use-get32-for-multi-source-route-calculati.patch -Patch14: 0014-pcm-Drop-snd_pcm_linear_-get-put-32_index.patch -Patch15: 0015-pcm-pcm_local.h-include-time.h-to-enable-CLOCK_MONOT.patch -Patch16: 0016-pcm-Fix-DSD-formats-userland-usability.patch -Patch17: 0017-Sync-include-sound-asound.h-with-3.17-rc1-kernel.patch -Patch18: 0018-pcm-Add-missing-signed-and-endianess-definitions-for.patch -Patch19: 0019-Sync-enum-snd_hwdep_iface_t-with-include-asound-asou.patch -Patch20: 0020-pcm-2nd-round-of-pcm_misc-DSD-fixes.patch -Patch21: 0021-doc-fix-cross-compiling-example.patch -Patch22: 0022-pcm-fix-snd_pcm_mmap_hw_avail-near-the-boundary.patch -Patch23: 0023-pcm-fix-return-value-of-snd_pcm_share_slave_avail.patch -Patch24: 0024-pcm-add-new-32-bit-DSD-sample-format.patch -Patch25: 0025-dmix-actually-rewind-when-running-or-being-drained.patch -Patch26: 0026-pcm-express-the-rewind-size-limitation-logic-better.patch -Patch27: 0027-pcm-handle-negative-values-from-snd_pcm_mmap_hw_avai.patch -Patch28: 0028-pcm-rate-use-the-snd_pcm_mmap_hw_avail-function.patch -Patch29: 0029-pcm-null-use-the-snd_pcm_mmap_avail-function.patch -Patch30: 0030-rate-handle-negative-values-from-snd_pcm_mmap_playba.patch -Patch31: 0031-dsnoop-rewindable-and-forwardable-logic-was-swapped.patch -Patch33: 0033-pcm-file-don-t-recurse-in-the-rewindable-and-forward.patch -Patch34: 0034-pcm-route-Fix-the-bad-condition-always-false.patch -Patch35: 0035-pcm-rate-hw_avail-must-not-be-negative-before-starti.patch -Patch36: 0036-hwdep-add-missing-declaration-for-snd_hwdep_poll_des.patch -Patch37: 0037-mixer-fixed-double-free.patch -Patch38: 0038-pcm_file-fixed-missing-free.patch -Patch39: 0039-sbase-fixed-missing-free.patch -Patch40: 0040-rawmidi-close-handle-h.patch -Patch41: 0041-pcm_share-fixing-missing-mutex-unlock.patch -Patch42: 0042-simple_abst-null-check-for-lib.patch -Patch43: 0043-socket-missing-socket-close.patch -Patch44: 0044-pcm_hooks-null-check-for-h.patch -Patch45: 0045-conf-return-negative-value-in-case-of-error.patch -Patch46: 0046-control-return-negative-value-in-case-of-error.patch -Patch47: 0047-pcm-return-negative-value-in-case-of-error.patch -Patch48: 0048-mixer-Fix-missing-hctl-handle-free-in-snd_mixer_atta.patch -Patch49: 0049-conf-ucm-PAZ00-add-Toshiba-AC100-Dynabook-AZ-new-con.patch -Patch50: 0050-USB-Audio-Add-Scarlett-2i4-USB-to-S-PDIF-blacklist.patch -Patch51: 0051-snd_user_file-fix-memory-leak.patch -Patch52: 0052-pcm-dmix-Don-t-ignore-SND_TIMER_EVENT_MSTOP.patch -Patch53: 0053-snd_dlsym-only-do-versioning-checks-if-built-with-ve.patch -Patch54: 0054-dlmisc-Remove-unused-label.patch -Patch55: 0055-USB-audio-Add-five-more-cards-to-IEC958-blacklist.patch -Patch56: 0056-pcm-Fix-DSD-sample-format-endianess-and-add-big-endi.patch -Patch57: 0057-mixer-Fix-inclusion-of-config.h.patch -Patch58: 0058-mixer-Fix-unused-parameter-warnings.patch -Patch59: 0059-ucm-Fix-uninitialized-err-in-snd_use_case_set.patch -Patch60: 0060-pcm-Fix-assorted-tstamp_type-bugs-omissions.patch -Patch61: 0061-hwdep-add-OXFW-driver-support.patch -Patch62: 0062-pcm-fix-buffer-overflow-in-snd_pcm_chmap_print.patch -Patch63: 0063-control-enable-octal-and-hexadecimal-parse.patch -Patch64: 0064-autotools-fix-ucm-partial-build.patch -Patch65: 0065-conf-ucm-GoogleNyan-Add-configuration.patch -Patch66: 0066-ucm-add-binary-configure-file-parse.patch -Patch67: 0067-Remove-unused-hostname-resolution-in-shm-plugins-and.patch # rest suse patches Patch99: alsa-lib-doxygen-avoid-crash-for-11.3.diff # suppress timestamp in documents @@ -185,72 +119,6 @@ Architecture. %prep %setup -q -n alsa-lib-%{package_version} # %patch -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 -%patch44 -p1 -%patch45 -p1 -%patch46 -p1 -%patch47 -p1 -%patch48 -p1 -%patch49 -p1 -%patch50 -p1 -%patch51 -p1 -%patch52 -p1 -%patch53 -p1 -%patch54 -p1 -%patch55 -p1 -%patch56 -p1 -%patch57 -p1 -%patch58 -p1 -%patch59 -p1 -%patch60 -p1 -%patch61 -p1 -%patch62 -p1 -%patch63 -p1 -%patch64 -p1 -%patch65 -p1 -%patch66 -p1 -%patch67 -p1 %if 0%{?suse_version} == 1130 %patch99 -p1 %endif @@ -266,7 +134,7 @@ sed -i -e'/recommends.*alsa-oss/d' $RPM_SOURCE_DIR/baselibs.conf %build export AUTOMAKE_JOBS="%{?_smp_mflags}" # build alsa-lib -autoreconf -fi +# autoreconf -fi %configure \ --disable-static \ --enable-symbolic-functions \