aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShiv Maliyappanahalli <smaliyap@codeaurora.org>2014-05-23 15:20:13 -0700
committerEric Laurent <elaurent@google.com>2014-10-27 12:47:05 -0700
commit892d6a54971fa244570b504c2cf4f818f668a8d6 (patch)
tree577a401f04844adda1017336b18f2132eb7c3124
parent8863816dc5659a1e4678d17906c90844264d1588 (diff)
downloadtinyalsa-lollipop-mr1-release.tar.gz
Tinyalsa doesn't expose an api to call ioctls exposed by the audio drivers. Add pcm_ioctl() api. Bug: 18137488. Change-Id: I6218580dbf4b2f31cb95d246ed79f0d2ac28b0b1
-rw-r--r--include/tinyalsa/asoundlib.h3
-rw-r--r--pcm.c15
2 files changed, 18 insertions, 0 deletions
diff --git a/include/tinyalsa/asoundlib.h b/include/tinyalsa/asoundlib.h
index 75e5cda..809e02d 100644
--- a/include/tinyalsa/asoundlib.h
+++ b/include/tinyalsa/asoundlib.h
@@ -239,6 +239,9 @@ int pcm_prepare(struct pcm *pcm);
int pcm_start(struct pcm *pcm);
int pcm_stop(struct pcm *pcm);
+/* ioctl function for PCM driver */
+int pcm_ioctl(struct pcm *pcm, int request, ...);
+
/* Interrupt driven API */
int pcm_wait(struct pcm *pcm, int timeout);
diff --git a/pcm.c b/pcm.c
index a25428e..d8af58a 100644
--- a/pcm.c
+++ b/pcm.c
@@ -1283,3 +1283,18 @@ int pcm_mmap_read(struct pcm *pcm, void *data, unsigned int count)
return pcm_mmap_transfer(pcm, data, count);
}
+
+int pcm_ioctl(struct pcm *pcm, int request, ...)
+{
+ va_list ap;
+ void * arg;
+
+ if (!pcm_is_ready(pcm))
+ return -1;
+
+ va_start(ap, request);
+ arg = va_arg(ap, void *);
+ va_end(ap);
+
+ return ioctl(pcm->fd, request, arg);
+}