[alsa-devel] Channel mapping

Takashi Iwai tiwai at suse.de
Tue Nov 27 17:54:46 CET 2007


At Wed, 21 Nov 2007 16:04:04 +0100,
I wrote:
> 
> At Wed, 21 Nov 2007 16:27:47 +0100 (CET),
> Jaroslav Kysela wrote:
> > 
> > On Wed, 21 Nov 2007, Clemens Ladisch wrote:
> > 
> > > Takashi Iwai wrote:
> > > > Yes, querying channel mapping is another missing piece with popular
> > > > demand.
> > > > 
> > > > The implementation would be easy, I guess.  But we have to define the
> > > > way to inform this from kernel to user space: whether create a new
> > > > ioctl or extend the existing ones (if possible)...
> > > 
> > > It's just metadata that describes a PCM device, so I think we should use
> > > TLV for this.
> > > 
> > > The existing struct snd_ctl_tlv uses a single integer to identify
> > > control elements.  We could restrict control numid's to 31 bits and
> > > use the upper bit to signal that this value includes device type and
> > > device number in the lower bits, if we want to reuse the same TLV
> > > ioctls.
> > 
> > We can also encode PCM device / subdevice numbers to data structure. But
> > I think that best way is to extend channel_info PCM ioctl (create new 
> > version and emulate old one - it should be quite easy to implement).
> 
> OK, that sounds feasible.
> 
> Do we have any other missing channel meta data?

I'm tring to implement in this way, and made preliminary patches.

One is to replace pcm_ops->ioctl to new pcm_ops->channel_info and
pcm_ops->reset callbacks.  This will make easier to extend the new
channel_info stuff, and even clean up a lot of drivers.

The patch is below.  The extended channel_info patch will follow later
(maybe tomorrow).


Takashi

diff -r 5829c288c7df Documentation/DocBook/writing-an-alsa-driver.tmpl
--- a/Documentation/DocBook/writing-an-alsa-driver.tmpl	Mon Nov 26 15:00:40 2007 +0100
+++ b/Documentation/DocBook/writing-an-alsa-driver.tmpl	Mon Nov 26 16:52:39 2007 +0100
@@ -1891,7 +1891,6 @@
   static struct snd_pcm_ops snd_mychip_playback_ops = {
           .open =        snd_mychip_playback_open,
           .close =       snd_mychip_playback_close,
-          .ioctl =       snd_pcm_lib_ioctl,
           .hw_params =   snd_mychip_pcm_hw_params,
           .hw_free =     snd_mychip_pcm_hw_free,
           .prepare =     snd_mychip_pcm_prepare,
@@ -1903,7 +1902,6 @@
   static struct snd_pcm_ops snd_mychip_capture_ops = {
           .open =        snd_mychip_capture_open,
           .close =       snd_mychip_capture_close,
-          .ioctl =       snd_pcm_lib_ioctl,
           .hw_params =   snd_mychip_pcm_hw_params,
           .hw_free =     snd_mychip_pcm_hw_free,
           .prepare =     snd_mychip_pcm_prepare,
@@ -2038,7 +2036,6 @@
   static struct snd_pcm_ops snd_mychip_playback_ops = {
           .open =        snd_mychip_pcm_open,
           .close =       snd_mychip_pcm_close,
-          .ioctl =       snd_pcm_lib_ioctl,
           .hw_params =   snd_mychip_pcm_hw_params,
           .hw_free =     snd_mychip_pcm_hw_free,
           .prepare =     snd_mychip_pcm_prepare,
@@ -2710,12 +2707,24 @@ struct _snd_pcm_runtime {
         </para>
       </section>
 
-      <section id="pcm-interface-operators-ioctl-callback">
-        <title>ioctl callback</title>
-        <para>
-          This is used for any special call to pcm ioctls. But
-        usually you can pass a generic ioctl callback, 
-        <function>snd_pcm_lib_ioctl</function>.
+      <section id="pcm-interface-operators-reset-callback">
+        <title>reset callback</title>
+        <para>
+          This is used for resetting the PCM buffer and position, issued
+	when an explicit prepare or reset action is done by user.
+	You can pass <constant>NULL</constant> usually.
+        </para>
+      </section>
+
+      <section id="pcm-interface-operators-reset-callback">
+        <title>channel_info callback</title>
+        <para>
+          This is used for returning the channel information of the
+	given channel.  The channel information contains the offset,
+	size and step for MMAP access, and also some extended
+	attribute like channel-mapping.
+	You can pass <constant>NULL</constant> as long as you don't
+	need any special handling.
         </para>
       </section>
 
diff -r 5829c288c7df aoa/soundbus/i2sbus/i2sbus-pcm.c
--- a/aoa/soundbus/i2sbus/i2sbus-pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/aoa/soundbus/i2sbus/i2sbus-pcm.c	Mon Nov 26 16:52:39 2007 +0100
@@ -782,7 +782,6 @@ static struct snd_pcm_ops i2sbus_playbac
 static struct snd_pcm_ops i2sbus_playback_ops = {
 	.open =		i2sbus_playback_open,
 	.close =	i2sbus_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	i2sbus_hw_params,
 	.hw_free =	i2sbus_playback_hw_free,
 	.prepare =	i2sbus_playback_prepare,
@@ -852,7 +851,6 @@ static struct snd_pcm_ops i2sbus_record_
 static struct snd_pcm_ops i2sbus_record_ops = {
 	.open =		i2sbus_record_open,
 	.close =	i2sbus_record_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	i2sbus_hw_params,
 	.hw_free =	i2sbus_record_hw_free,
 	.prepare =	i2sbus_record_prepare,
diff -r 5829c288c7df arm/aaci.c
--- a/arm/aaci.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/arm/aaci.c	Mon Nov 26 16:52:39 2007 +0100
@@ -717,7 +717,6 @@ static struct snd_pcm_ops aaci_playback_
 static struct snd_pcm_ops aaci_playback_ops = {
 	.open		= aaci_pcm_open,
 	.close		= aaci_pcm_close,
-	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= aaci_pcm_playback_hw_params,
 	.hw_free	= aaci_pcm_hw_free,
 	.prepare	= aaci_pcm_prepare,
@@ -845,7 +844,6 @@ static struct snd_pcm_ops aaci_capture_o
 static struct snd_pcm_ops aaci_capture_ops = {
 	.open		= aaci_pcm_open,
 	.close		= aaci_pcm_close,
-	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= aaci_pcm_capture_hw_params,
 	.hw_free	= aaci_pcm_hw_free,
 	.prepare	= aaci_pcm_capture_prepare,
diff -r 5829c288c7df arm/pxa2xx-pcm.c
--- a/arm/pxa2xx-pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/arm/pxa2xx-pcm.c	Mon Nov 26 16:52:39 2007 +0100
@@ -272,7 +272,6 @@ static struct snd_pcm_ops pxa2xx_pcm_ops
 static struct snd_pcm_ops pxa2xx_pcm_ops = {
 	.open		= pxa2xx_pcm_open,
 	.close		= pxa2xx_pcm_close,
-	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= pxa2xx_pcm_hw_params,
 	.hw_free	= pxa2xx_pcm_hw_free,
 	.prepare	= pxa2xx_pcm_prepare,
diff -r 5829c288c7df arm/sa11xx-uda1341.c
--- a/arm/sa11xx-uda1341.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/arm/sa11xx-uda1341.c	Mon Nov 26 16:52:39 2007 +0100
@@ -777,7 +777,6 @@ static struct snd_pcm_ops snd_card_sa11x
 static struct snd_pcm_ops snd_card_sa11xx_uda1341_playback_ops = {
 	.open			= snd_card_sa11xx_uda1341_open,
 	.close			= snd_card_sa11xx_uda1341_close,
-	.ioctl			= snd_pcm_lib_ioctl,
 	.hw_params	        = snd_sa11xx_uda1341_hw_params,
 	.hw_free	        = snd_sa11xx_uda1341_hw_free,
 	.prepare		= snd_sa11xx_uda1341_prepare,
@@ -788,7 +787,6 @@ static struct snd_pcm_ops snd_card_sa11x
 static struct snd_pcm_ops snd_card_sa11xx_uda1341_capture_ops = {
 	.open			= snd_card_sa11xx_uda1341_open,
 	.close			= snd_card_sa11xx_uda1341_close,
-	.ioctl			= snd_pcm_lib_ioctl,
 	.hw_params	        = snd_sa11xx_uda1341_hw_params,
 	.hw_free	        = snd_sa11xx_uda1341_hw_free,
 	.prepare		= snd_sa11xx_uda1341_prepare,
diff -r 5829c288c7df core/pcm_lib.c
--- a/core/pcm_lib.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/core/pcm_lib.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1374,25 +1374,20 @@ int snd_pcm_hw_params_choose(struct snd_
 	return 0;
 }
 
-static int snd_pcm_lib_ioctl_reset(struct snd_pcm_substream *substream,
-				   void *arg)
+/**
+ * snd_pcm_lib_channel_info - a generic PCM channel_ioctl callback
+ * @substream: the pcm substream instance
+ * @info: channel_info argument
+ *
+ * Processes the generic channel_info ioctl for PCM.
+ * Can be passed as the channel_info callback for PCM ops.
+ *
+ * Returns zero if successful, or a negative error code on failure.
+ */
+
+int snd_pcm_lib_channel_info(struct snd_pcm_substream *substream,
+			     struct snd_pcm_channel_info *info)
 {
-	struct snd_pcm_runtime *runtime = substream->runtime;
-	unsigned long flags;
-	snd_pcm_stream_lock_irqsave(substream, flags);
-	if (snd_pcm_running(substream) &&
-	    snd_pcm_update_hw_ptr(substream) >= 0)
-		runtime->status->hw_ptr %= runtime->buffer_size;
-	else
-		runtime->status->hw_ptr = 0;
-	snd_pcm_stream_unlock_irqrestore(substream, flags);
-	return 0;
-}
-
-static int snd_pcm_lib_ioctl_channel_info(struct snd_pcm_substream *substream,
-					  void *arg)
-{
-	struct snd_pcm_channel_info *info = arg;
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	int width;
 	if (!(runtime->info & SNDRV_PCM_INFO_MMAP)) {
@@ -1423,33 +1418,6 @@ static int snd_pcm_lib_ioctl_channel_inf
 	}
 	return 0;
 }
-
-/**
- * snd_pcm_lib_ioctl - a generic PCM ioctl callback
- * @substream: the pcm substream instance
- * @cmd: ioctl command
- * @arg: ioctl argument
- *
- * Processes the generic ioctl commands for PCM.
- * Can be passed as the ioctl callback for PCM ops.
- *
- * Returns zero if successful, or a negative error code on failure.
- */
-int snd_pcm_lib_ioctl(struct snd_pcm_substream *substream,
-		      unsigned int cmd, void *arg)
-{
-	switch (cmd) {
-	case SNDRV_PCM_IOCTL1_INFO:
-		return 0;
-	case SNDRV_PCM_IOCTL1_RESET:
-		return snd_pcm_lib_ioctl_reset(substream, arg);
-	case SNDRV_PCM_IOCTL1_CHANNEL_INFO:
-		return snd_pcm_lib_ioctl_channel_info(substream, arg);
-	}
-	return -ENXIO;
-}
-
-EXPORT_SYMBOL(snd_pcm_lib_ioctl);
 
 /*
  *  Conditions
diff -r 5829c288c7df core/pcm_native.c
--- a/core/pcm_native.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/core/pcm_native.c	Mon Nov 26 16:52:39 2007 +0100
@@ -109,11 +109,8 @@ int snd_pcm_info(struct snd_pcm_substrea
 	info->subdevices_avail = pstr->substream_count - pstr->substream_opened;
 	strlcpy(info->subname, substream->name, sizeof(info->subname));
 	runtime = substream->runtime;
-	/* AB: FIXME!!! This is definitely nonsense */
-	if (runtime) {
+	if (runtime)
 		info->sync = runtime->sync;
-		substream->ops->ioctl(substream, SNDRV_PCM_IOCTL1_INFO, info);
-	}
 	return 0;
 }
 
@@ -663,7 +660,10 @@ static int snd_pcm_channel_info(struct s
 		return -EINVAL;
 	memset(info, 0, sizeof(*info));
 	info->channel = channel;
-	return substream->ops->ioctl(substream, SNDRV_PCM_IOCTL1_CHANNEL_INFO, info);
+	if (substream->ops->channel_info)
+		return substream->ops->channel_info(substream, info);
+	else
+		return snd_pcm_lib_channel_info(substream, info);
 }
 
 static int snd_pcm_channel_info_user(struct snd_pcm_substream *substream,
@@ -1264,10 +1264,19 @@ static int snd_pcm_do_reset(struct snd_p
 static int snd_pcm_do_reset(struct snd_pcm_substream *substream, int state)
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
-	int err = substream->ops->ioctl(substream, SNDRV_PCM_IOCTL1_RESET, NULL);
-	if (err < 0)
-		return err;
-	// snd_assert(runtime->status->hw_ptr < runtime->buffer_size, );
+	int err;
+
+	if (substream->ops->reset) {
+		err = substream->ops->reset(substream);
+		if (err < 0)
+			return err;
+	} else {
+		if (snd_pcm_running(substream) &&
+		    snd_pcm_update_hw_ptr(substream) >= 0)
+			runtime->status->hw_ptr %= runtime->buffer_size;
+		else
+			runtime->status->hw_ptr = 0;
+	}
 	runtime->hw_ptr_base = 0;
 	runtime->hw_ptr_interrupt = runtime->status->hw_ptr -
 		runtime->status->hw_ptr % runtime->period_size;
diff -r 5829c288c7df drivers/dummy.c
--- a/drivers/dummy.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/drivers/dummy.c	Mon Nov 26 16:52:39 2007 +0100
@@ -404,7 +404,6 @@ static struct snd_pcm_ops snd_card_dummy
 static struct snd_pcm_ops snd_card_dummy_playback_ops = {
 	.open =			snd_card_dummy_playback_open,
 	.close =		snd_card_dummy_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_card_dummy_hw_params,
 	.hw_free =		snd_card_dummy_hw_free,
 	.prepare =		snd_card_dummy_pcm_prepare,
@@ -415,7 +414,6 @@ static struct snd_pcm_ops snd_card_dummy
 static struct snd_pcm_ops snd_card_dummy_capture_ops = {
 	.open =			snd_card_dummy_capture_open,
 	.close =		snd_card_dummy_capture_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_card_dummy_hw_params,
 	.hw_free =		snd_card_dummy_hw_free,
 	.prepare =		snd_card_dummy_pcm_prepare,
diff -r 5829c288c7df drivers/ml403-ac97cr.c
--- a/drivers/ml403-ac97cr.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/drivers/ml403-ac97cr.c	Mon Nov 26 16:52:39 2007 +0100
@@ -762,7 +762,6 @@ static struct snd_pcm_ops snd_ml403_ac97
 static struct snd_pcm_ops snd_ml403_ac97cr_playback_ops = {
 	.open = snd_ml403_ac97cr_playback_open,
 	.close = snd_ml403_ac97cr_playback_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_ml403_ac97cr_hw_params,
 	.hw_free = snd_ml403_ac97cr_hw_free,
 	.prepare = snd_ml403_ac97cr_pcm_playback_prepare,
@@ -773,7 +772,6 @@ static struct snd_pcm_ops snd_ml403_ac97
 static struct snd_pcm_ops snd_ml403_ac97cr_capture_ops = {
 	.open = snd_ml403_ac97cr_capture_open,
 	.close = snd_ml403_ac97cr_capture_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_ml403_ac97cr_hw_params,
 	.hw_free = snd_ml403_ac97cr_hw_free,
 	.prepare = snd_ml403_ac97cr_pcm_capture_prepare,
diff -r 5829c288c7df drivers/vx/vx_pcm.c
--- a/drivers/vx/vx_pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/drivers/vx/vx_pcm.c	Mon Nov 26 16:52:39 2007 +0100
@@ -947,7 +947,6 @@ static struct snd_pcm_ops vx_pcm_playbac
 static struct snd_pcm_ops vx_pcm_playback_ops = {
 	.open =		vx_pcm_playback_open,
 	.close =	vx_pcm_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	vx_pcm_hw_params,
 	.hw_free =	vx_pcm_hw_free,
 	.prepare =	vx_pcm_prepare,
@@ -1166,7 +1165,6 @@ static struct snd_pcm_ops vx_pcm_capture
 static struct snd_pcm_ops vx_pcm_capture_ops = {
 	.open =		vx_pcm_capture_open,
 	.close =	vx_pcm_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	vx_pcm_hw_params,
 	.hw_free =	vx_pcm_hw_free,
 	.prepare =	vx_pcm_prepare,
diff -r 5829c288c7df include/pcm.h
--- a/include/pcm.h	Mon Nov 26 15:00:40 2007 +0100
+++ b/include/pcm.h	Mon Nov 26 16:52:39 2007 +0100
@@ -61,8 +61,9 @@ struct snd_pcm_ops {
 struct snd_pcm_ops {
 	int (*open)(struct snd_pcm_substream *substream);
 	int (*close)(struct snd_pcm_substream *substream);
-	int (*ioctl)(struct snd_pcm_substream * substream,
-		     unsigned int cmd, void *arg);
+	int (*reset)(struct snd_pcm_substream * substream);
+	int (*channel_info)(struct snd_pcm_substream * substream,
+			    struct snd_pcm_channel_info *info);
 	int (*hw_params)(struct snd_pcm_substream *substream,
 			 struct snd_pcm_hw_params *params);
 	int (*hw_free)(struct snd_pcm_substream *substream);
@@ -85,14 +86,6 @@ struct snd_pcm_ops {
  */
 
 #define SNDRV_PCM_DEVICES		8
-
-#define SNDRV_PCM_IOCTL1_FALSE		((void *)0)
-#define SNDRV_PCM_IOCTL1_TRUE		((void *)1)
-
-#define SNDRV_PCM_IOCTL1_RESET		0
-#define SNDRV_PCM_IOCTL1_INFO		1
-#define SNDRV_PCM_IOCTL1_CHANNEL_INFO	2
-#define SNDRV_PCM_IOCTL1_GSTATE		3
 
 #define SNDRV_PCM_TRIGGER_STOP		0
 #define SNDRV_PCM_TRIGGER_START		1
@@ -900,8 +893,8 @@ void snd_pcm_set_ops(struct snd_pcm * pc
 void snd_pcm_set_ops(struct snd_pcm * pcm, int direction, struct snd_pcm_ops *ops);
 void snd_pcm_set_sync(struct snd_pcm_substream *substream);
 int snd_pcm_lib_interleave_len(struct snd_pcm_substream *substream);
-int snd_pcm_lib_ioctl(struct snd_pcm_substream *substream,
-		      unsigned int cmd, void *arg);                      
+int snd_pcm_lib_channel_info(struct snd_pcm_substream *substream,
+			     struct snd_pcm_channel_info *info);
 int snd_pcm_update_hw_ptr(struct snd_pcm_substream *substream);
 int snd_pcm_playback_xrun_check(struct snd_pcm_substream *substream);
 int snd_pcm_capture_xrun_check(struct snd_pcm_substream *substream);
diff -r 5829c288c7df isa/ad1816a/ad1816a_lib.c
--- a/isa/ad1816a/ad1816a_lib.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/ad1816a/ad1816a_lib.c	Mon Nov 26 16:52:39 2007 +0100
@@ -641,7 +641,6 @@ static struct snd_pcm_ops snd_ad1816a_pl
 static struct snd_pcm_ops snd_ad1816a_playback_ops = {
 	.open =		snd_ad1816a_playback_open,
 	.close =	snd_ad1816a_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ad1816a_hw_params,
 	.hw_free =	snd_ad1816a_hw_free,
 	.prepare =	snd_ad1816a_playback_prepare,
@@ -652,7 +651,6 @@ static struct snd_pcm_ops snd_ad1816a_ca
 static struct snd_pcm_ops snd_ad1816a_capture_ops = {
 	.open =		snd_ad1816a_capture_open,
 	.close =	snd_ad1816a_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ad1816a_hw_params,
 	.hw_free =	snd_ad1816a_hw_free,
 	.prepare =	snd_ad1816a_capture_prepare,
diff -r 5829c288c7df isa/ad1848/ad1848_lib.c
--- a/isa/ad1848/ad1848_lib.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/ad1848/ad1848_lib.c	Mon Nov 26 16:52:39 2007 +0100
@@ -312,12 +312,6 @@ static unsigned char snd_ad1848_get_rate
 			return freq_bits[i];
 	snd_BUG();
 	return freq_bits[ARRAY_SIZE(rates) - 1];
-}
-
-static int snd_ad1848_ioctl(struct snd_pcm_substream *substream,
-			    unsigned int cmd, void *arg)
-{
-	return snd_pcm_lib_ioctl(substream, cmd, arg);
 }
 
 static unsigned char snd_ad1848_get_format(int format, int channels)
@@ -929,7 +923,6 @@ static struct snd_pcm_ops snd_ad1848_pla
 static struct snd_pcm_ops snd_ad1848_playback_ops = {
 	.open =		snd_ad1848_playback_open,
 	.close =	snd_ad1848_playback_close,
-	.ioctl =	snd_ad1848_ioctl,
 	.hw_params =	snd_ad1848_playback_hw_params,
 	.hw_free =	snd_ad1848_playback_hw_free,
 	.prepare =	snd_ad1848_playback_prepare,
@@ -940,7 +933,6 @@ static struct snd_pcm_ops snd_ad1848_cap
 static struct snd_pcm_ops snd_ad1848_capture_ops = {
 	.open =		snd_ad1848_capture_open,
 	.close =	snd_ad1848_capture_close,
-	.ioctl =	snd_ad1848_ioctl,
 	.hw_params =	snd_ad1848_capture_hw_params,
 	.hw_free =	snd_ad1848_capture_hw_free,
 	.prepare =	snd_ad1848_capture_prepare,
diff -r 5829c288c7df isa/cs423x/cs4231_lib.c
--- a/isa/cs423x/cs4231_lib.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/cs423x/cs4231_lib.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1499,7 +1499,6 @@ static struct snd_pcm_ops snd_cs4231_pla
 static struct snd_pcm_ops snd_cs4231_playback_ops = {
 	.open =		snd_cs4231_playback_open,
 	.close =	snd_cs4231_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cs4231_playback_hw_params,
 	.hw_free =	snd_cs4231_playback_hw_free,
 	.prepare =	snd_cs4231_playback_prepare,
@@ -1510,7 +1509,6 @@ static struct snd_pcm_ops snd_cs4231_cap
 static struct snd_pcm_ops snd_cs4231_capture_ops = {
 	.open =		snd_cs4231_capture_open,
 	.close =	snd_cs4231_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cs4231_capture_hw_params,
 	.hw_free =	snd_cs4231_capture_hw_free,
 	.prepare =	snd_cs4231_capture_prepare,
diff -r 5829c288c7df isa/es1688/es1688_lib.c
--- a/isa/es1688/es1688_lib.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/es1688/es1688_lib.c	Mon Nov 26 16:52:39 2007 +0100
@@ -317,12 +317,6 @@ static void snd_es1688_set_rate(struct s
 	/* write result to hardware */
 	snd_es1688_write(chip, 0xa1, bits);
 	snd_es1688_write(chip, 0xa2, divider);
-}
-
-static int snd_es1688_ioctl(struct snd_pcm_substream *substream,
-			    unsigned int cmd, void *arg)
-{
-	return snd_pcm_lib_ioctl(substream, cmd, arg);
 }
 
 static int snd_es1688_trigger(struct snd_es1688 *chip, int cmd, unsigned char value)
@@ -705,7 +699,6 @@ static struct snd_pcm_ops snd_es1688_pla
 static struct snd_pcm_ops snd_es1688_playback_ops = {
 	.open =			snd_es1688_playback_open,
 	.close =		snd_es1688_playback_close,
-	.ioctl =		snd_es1688_ioctl,
 	.hw_params =		snd_es1688_hw_params,
 	.hw_free =		snd_es1688_hw_free,
 	.prepare =		snd_es1688_playback_prepare,
@@ -716,7 +709,6 @@ static struct snd_pcm_ops snd_es1688_cap
 static struct snd_pcm_ops snd_es1688_capture_ops = {
 	.open =			snd_es1688_capture_open,
 	.close =		snd_es1688_capture_close,
-	.ioctl =		snd_es1688_ioctl,
 	.hw_params =		snd_es1688_hw_params,
 	.hw_free =		snd_es1688_hw_free,
 	.prepare =		snd_es1688_capture_prepare,
diff -r 5829c288c7df isa/es18xx.c
--- a/isa/es18xx.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/es18xx.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1671,7 +1671,6 @@ static struct snd_pcm_ops snd_es18xx_pla
 static struct snd_pcm_ops snd_es18xx_playback_ops = {
 	.open =		snd_es18xx_playback_open,
 	.close =	snd_es18xx_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_es18xx_playback_hw_params,
 	.hw_free =	snd_es18xx_pcm_hw_free,
 	.prepare =	snd_es18xx_playback_prepare,
@@ -1682,7 +1681,6 @@ static struct snd_pcm_ops snd_es18xx_cap
 static struct snd_pcm_ops snd_es18xx_capture_ops = {
 	.open =		snd_es18xx_capture_open,
 	.close =	snd_es18xx_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_es18xx_capture_hw_params,
 	.hw_free =	snd_es18xx_pcm_hw_free,
 	.prepare =	snd_es18xx_capture_prepare,
diff -r 5829c288c7df isa/gus/gus_pcm.c
--- a/isa/gus/gus_pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/gus/gus_pcm.c	Mon Nov 26 16:52:39 2007 +0100
@@ -811,7 +811,6 @@ static struct snd_pcm_ops snd_gf1_pcm_pl
 static struct snd_pcm_ops snd_gf1_pcm_playback_ops = {
 	.open =		snd_gf1_pcm_playback_open,
 	.close =	snd_gf1_pcm_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_gf1_pcm_playback_hw_params,
 	.hw_free =	snd_gf1_pcm_playback_hw_free,
 	.prepare =	snd_gf1_pcm_playback_prepare,
@@ -824,7 +823,6 @@ static struct snd_pcm_ops snd_gf1_pcm_ca
 static struct snd_pcm_ops snd_gf1_pcm_capture_ops = {
 	.open =		snd_gf1_pcm_capture_open,
 	.close =	snd_gf1_pcm_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_gf1_pcm_capture_hw_params,
 	.hw_free =	snd_gf1_pcm_capture_hw_free,
 	.prepare =	snd_gf1_pcm_capture_prepare,
diff -r 5829c288c7df isa/opti9xx/opti92x-ad1848.c
--- a/isa/opti9xx/opti92x-ad1848.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/opti9xx/opti92x-ad1848.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1333,7 +1333,6 @@ static struct snd_pcm_ops snd_opti93x_pl
 static struct snd_pcm_ops snd_opti93x_playback_ops = {
 	.open =		snd_opti93x_playback_open,
 	.close =	snd_opti93x_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_opti93x_hw_params,
 	.hw_free =	snd_opti93x_hw_free,
 	.prepare =	snd_opti93x_playback_prepare,
@@ -1344,7 +1343,6 @@ static struct snd_pcm_ops snd_opti93x_ca
 static struct snd_pcm_ops snd_opti93x_capture_ops = {
 	.open =		snd_opti93x_capture_open,
 	.close =	snd_opti93x_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_opti93x_hw_params,
 	.hw_free =	snd_opti93x_hw_free,
 	.prepare =	snd_opti93x_capture_prepare,
diff -r 5829c288c7df isa/sb/emu8000_pcm.c
--- a/isa/sb/emu8000_pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/sb/emu8000_pcm.c	Mon Nov 26 16:52:39 2007 +0100
@@ -666,7 +666,6 @@ static struct snd_pcm_ops emu8k_pcm_ops 
 static struct snd_pcm_ops emu8k_pcm_ops = {
 	.open =		emu8k_pcm_open,
 	.close =	emu8k_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	emu8k_pcm_hw_params,
 	.hw_free =	emu8k_pcm_hw_free,
 	.prepare =	emu8k_pcm_prepare,
diff -r 5829c288c7df isa/sb/sb16_main.c
--- a/isa/sb/sb16_main.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/sb/sb16_main.c	Mon Nov 26 16:52:39 2007 +0100
@@ -846,7 +846,6 @@ static struct snd_pcm_ops snd_sb16_playb
 static struct snd_pcm_ops snd_sb16_playback_ops = {
 	.open =		snd_sb16_playback_open,
 	.close =	snd_sb16_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_sb16_hw_params,
 	.hw_free =	snd_sb16_hw_free,
 	.prepare =	snd_sb16_playback_prepare,
@@ -857,7 +856,6 @@ static struct snd_pcm_ops snd_sb16_captu
 static struct snd_pcm_ops snd_sb16_capture_ops = {
 	.open =		snd_sb16_capture_open,
 	.close =	snd_sb16_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_sb16_hw_params,
 	.hw_free =	snd_sb16_hw_free,
 	.prepare =	snd_sb16_capture_prepare,
diff -r 5829c288c7df isa/sb/sb8_main.c
--- a/isa/sb/sb8_main.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/isa/sb/sb8_main.c	Mon Nov 26 16:52:39 2007 +0100
@@ -488,7 +488,6 @@ static struct snd_pcm_ops snd_sb8_playba
 static struct snd_pcm_ops snd_sb8_playback_ops = {
 	.open =			snd_sb8_open,
 	.close =		snd_sb8_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_sb8_hw_params,
 	.hw_free =		snd_sb8_hw_free,
 	.prepare =		snd_sb8_playback_prepare,
@@ -499,7 +498,6 @@ static struct snd_pcm_ops snd_sb8_captur
 static struct snd_pcm_ops snd_sb8_capture_ops = {
 	.open =			snd_sb8_open,
 	.close =		snd_sb8_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_sb8_hw_params,
 	.hw_free =		snd_sb8_hw_free,
 	.prepare =		snd_sb8_capture_prepare,
diff -r 5829c288c7df kernel/drivers/media/video/cx88/cx88-alsa.c
--- a/kernel/drivers/media/video/cx88/cx88-alsa.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/kernel/drivers/media/video/cx88/cx88-alsa.c	Mon Nov 26 16:52:39 2007 +0100
@@ -515,7 +515,6 @@ static struct snd_pcm_ops snd_cx88_pcm_o
 static struct snd_pcm_ops snd_cx88_pcm_ops = {
 	.open = snd_cx88_pcm_open,
 	.close = snd_cx88_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_cx88_hw_params,
 	.hw_free = snd_cx88_hw_free,
 	.prepare = snd_cx88_prepare,
diff -r 5829c288c7df kernel/drivers/media/video/saa7134/saa7134-alsa.c
--- a/kernel/drivers/media/video/saa7134/saa7134-alsa.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/kernel/drivers/media/video/saa7134/saa7134-alsa.c	Mon Nov 26 16:52:39 2007 +0100
@@ -658,7 +658,6 @@ static struct snd_pcm_ops snd_card_saa71
 static struct snd_pcm_ops snd_card_saa7134_capture_ops = {
 	.open =			snd_card_saa7134_capture_open,
 	.close =		snd_card_saa7134_capture_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_card_saa7134_hw_params,
 	.hw_free =		snd_card_saa7134_hw_free,
 	.prepare =		snd_card_saa7134_capture_prepare,
diff -r 5829c288c7df mips/au1x00.c
--- a/mips/au1x00.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/mips/au1x00.c	Mon Nov 26 16:52:39 2007 +0100
@@ -419,7 +419,6 @@ static struct snd_pcm_ops snd_card_au100
 static struct snd_pcm_ops snd_card_au1000_playback_ops = {
 	.open			= snd_au1000_playback_open,
 	.close			= snd_au1000_playback_close,
-	.ioctl			= snd_pcm_lib_ioctl,
 	.hw_params	        = snd_au1000_hw_params,
 	.hw_free	        = snd_au1000_hw_free,
 	.prepare		= snd_au1000_playback_prepare,
@@ -430,7 +429,6 @@ static struct snd_pcm_ops snd_card_au100
 static struct snd_pcm_ops snd_card_au1000_capture_ops = {
 	.open			= snd_au1000_capture_open,
 	.close			= snd_au1000_capture_close,
-	.ioctl			= snd_pcm_lib_ioctl,
 	.hw_params	        = snd_au1000_hw_params,
 	.hw_free	        = snd_au1000_hw_free,
 	.prepare		= snd_au1000_capture_prepare,
diff -r 5829c288c7df parisc/harmony.c
--- a/parisc/harmony.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/parisc/harmony.c	Mon Nov 26 16:52:39 2007 +0100
@@ -600,7 +600,6 @@ static struct snd_pcm_ops snd_harmony_pl
 static struct snd_pcm_ops snd_harmony_playback_ops = {
 	.open =	snd_harmony_playback_open,
 	.close = snd_harmony_playback_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_harmony_hw_params,
 	.hw_free = snd_harmony_hw_free,
 	.prepare = snd_harmony_playback_prepare,
@@ -611,7 +610,6 @@ static struct snd_pcm_ops snd_harmony_ca
 static struct snd_pcm_ops snd_harmony_capture_ops = {
         .open = snd_harmony_capture_open,
         .close = snd_harmony_capture_close,
-        .ioctl = snd_pcm_lib_ioctl,
         .hw_params = snd_harmony_hw_params,
         .hw_free = snd_harmony_hw_free,
         .prepare = snd_harmony_capture_prepare,
diff -r 5829c288c7df pci/ad1889.c
--- a/pci/ad1889.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/ad1889.c	Mon Nov 26 16:52:39 2007 +0100
@@ -576,7 +576,6 @@ static struct snd_pcm_ops snd_ad1889_pla
 static struct snd_pcm_ops snd_ad1889_playback_ops = {
 	.open = snd_ad1889_playback_open,
 	.close = snd_ad1889_playback_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_ad1889_hw_params,
 	.hw_free = snd_ad1889_hw_free,
 	.prepare = snd_ad1889_playback_prepare,
@@ -587,7 +586,6 @@ static struct snd_pcm_ops snd_ad1889_cap
 static struct snd_pcm_ops snd_ad1889_capture_ops = {
 	.open = snd_ad1889_capture_open,
 	.close = snd_ad1889_capture_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_ad1889_hw_params,
 	.hw_free = snd_ad1889_hw_free,
 	.prepare = snd_ad1889_capture_prepare,
diff -r 5829c288c7df pci/ali5451/ali5451.c
--- a/pci/ali5451/ali5451.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/ali5451/ali5451.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1615,7 +1615,6 @@ static struct snd_pcm_ops snd_ali_playba
 static struct snd_pcm_ops snd_ali_playback_ops = {
 	.open =		snd_ali_playback_open,
 	.close =	snd_ali_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ali_playback_hw_params,
 	.hw_free =	snd_ali_playback_hw_free,
 	.prepare =	snd_ali_playback_prepare,
@@ -1626,7 +1625,6 @@ static struct snd_pcm_ops snd_ali_captur
 static struct snd_pcm_ops snd_ali_capture_ops = {
 	.open =		snd_ali_capture_open,
 	.close =	snd_ali_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ali_hw_params,
 	.hw_free =	snd_ali_hw_free,
 	.prepare =	snd_ali_prepare,
@@ -1701,7 +1699,6 @@ static struct snd_pcm_ops snd_ali_modem_
 static struct snd_pcm_ops snd_ali_modem_playback_ops = {
 	.open =		snd_ali_modem_playback_open,
 	.close =	snd_ali_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ali_modem_hw_params,
 	.hw_free =	snd_ali_hw_free,
 	.prepare =	snd_ali_prepare,
@@ -1712,7 +1709,6 @@ static struct snd_pcm_ops snd_ali_modem_
 static struct snd_pcm_ops snd_ali_modem_capture_ops = {
 	.open =		snd_ali_modem_capture_open,
 	.close =	snd_ali_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ali_modem_hw_params,
 	.hw_free =	snd_ali_hw_free,
 	.prepare =	snd_ali_prepare,
diff -r 5829c288c7df pci/als300.c
--- a/pci/als300.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/als300.c	Mon Nov 26 16:52:39 2007 +0100
@@ -593,7 +593,6 @@ static struct snd_pcm_ops snd_als300_pla
 static struct snd_pcm_ops snd_als300_playback_ops = {
 	.open =		snd_als300_playback_open,
 	.close =	snd_als300_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_als300_pcm_hw_params,
 	.hw_free =	snd_als300_pcm_hw_free,
 	.prepare =	snd_als300_playback_prepare,
@@ -604,7 +603,6 @@ static struct snd_pcm_ops snd_als300_cap
 static struct snd_pcm_ops snd_als300_capture_ops = {
 	.open =		snd_als300_capture_open,
 	.close =	snd_als300_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_als300_pcm_hw_params,
 	.hw_free =	snd_als300_pcm_hw_free,
 	.prepare =	snd_als300_capture_prepare,
diff -r 5829c288c7df pci/als4000.c
--- a/pci/als4000.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/als4000.c	Mon Nov 26 16:52:39 2007 +0100
@@ -503,7 +503,6 @@ static struct snd_pcm_ops snd_als4000_pl
 static struct snd_pcm_ops snd_als4000_playback_ops = {
 	.open =		snd_als4000_playback_open,
 	.close =	snd_als4000_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_als4000_hw_params,
 	.hw_free =	snd_als4000_hw_free,
 	.prepare =	snd_als4000_playback_prepare,
@@ -514,7 +513,6 @@ static struct snd_pcm_ops snd_als4000_ca
 static struct snd_pcm_ops snd_als4000_capture_ops = {
 	.open =		snd_als4000_capture_open,
 	.close =	snd_als4000_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_als4000_hw_params,
 	.hw_free =	snd_als4000_hw_free,
 	.prepare =	snd_als4000_capture_prepare,
diff -r 5829c288c7df pci/atiixp.c
--- a/pci/atiixp.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/atiixp.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1149,7 +1149,6 @@ static struct snd_pcm_ops snd_atiixp_pla
 static struct snd_pcm_ops snd_atiixp_playback_ops = {
 	.open =		snd_atiixp_playback_open,
 	.close =	snd_atiixp_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_atiixp_pcm_hw_params,
 	.hw_free =	snd_atiixp_pcm_hw_free,
 	.prepare =	snd_atiixp_playback_prepare,
@@ -1161,7 +1160,6 @@ static struct snd_pcm_ops snd_atiixp_cap
 static struct snd_pcm_ops snd_atiixp_capture_ops = {
 	.open =		snd_atiixp_capture_open,
 	.close =	snd_atiixp_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_atiixp_pcm_hw_params,
 	.hw_free =	snd_atiixp_pcm_hw_free,
 	.prepare =	snd_atiixp_capture_prepare,
@@ -1173,7 +1171,6 @@ static struct snd_pcm_ops snd_atiixp_spd
 static struct snd_pcm_ops snd_atiixp_spdif_ops = {
 	.open =		snd_atiixp_spdif_open,
 	.close =	snd_atiixp_spdif_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_atiixp_pcm_hw_params,
 	.hw_free =	snd_atiixp_pcm_hw_free,
 	.prepare =	snd_atiixp_spdif_prepare,
diff -r 5829c288c7df pci/atiixp_modem.c
--- a/pci/atiixp_modem.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/atiixp_modem.c	Mon Nov 26 16:52:39 2007 +0100
@@ -947,7 +947,6 @@ static struct snd_pcm_ops snd_atiixp_pla
 static struct snd_pcm_ops snd_atiixp_playback_ops = {
 	.open =		snd_atiixp_playback_open,
 	.close =	snd_atiixp_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_atiixp_pcm_hw_params,
 	.hw_free =	snd_atiixp_pcm_hw_free,
 	.prepare =	snd_atiixp_playback_prepare,
@@ -959,7 +958,6 @@ static struct snd_pcm_ops snd_atiixp_cap
 static struct snd_pcm_ops snd_atiixp_capture_ops = {
 	.open =		snd_atiixp_capture_open,
 	.close =	snd_atiixp_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_atiixp_pcm_hw_params,
 	.hw_free =	snd_atiixp_pcm_hw_free,
 	.prepare =	snd_atiixp_capture_prepare,
diff -r 5829c288c7df pci/au88x0/au88x0_pcm.c
--- a/pci/au88x0/au88x0_pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/au88x0/au88x0_pcm.c	Mon Nov 26 16:52:39 2007 +0100
@@ -404,7 +404,6 @@ static struct snd_pcm_ops snd_vortex_pla
 static struct snd_pcm_ops snd_vortex_playback_ops = {
 	.open = snd_vortex_pcm_open,
 	.close = snd_vortex_pcm_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_vortex_pcm_hw_params,
 	.hw_free = snd_vortex_pcm_hw_free,
 	.prepare = snd_vortex_pcm_prepare,
diff -r 5829c288c7df pci/azt3328.c
--- a/pci/azt3328.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/azt3328.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1397,7 +1397,6 @@ static struct snd_pcm_ops snd_azf3328_pl
 static struct snd_pcm_ops snd_azf3328_playback_ops = {
 	.open =		snd_azf3328_playback_open,
 	.close =	snd_azf3328_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_azf3328_hw_params,
 	.hw_free =	snd_azf3328_hw_free,
 	.prepare =	snd_azf3328_playback_prepare,
@@ -1408,7 +1407,6 @@ static struct snd_pcm_ops snd_azf3328_ca
 static struct snd_pcm_ops snd_azf3328_capture_ops = {
 	.open =		snd_azf3328_capture_open,
 	.close =	snd_azf3328_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_azf3328_hw_params,
 	.hw_free =	snd_azf3328_hw_free,
 	.prepare =	snd_azf3328_capture_prepare,
diff -r 5829c288c7df pci/bt87x.c
--- a/pci/bt87x.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/bt87x.c	Mon Nov 26 16:52:39 2007 +0100
@@ -543,7 +543,6 @@ static struct snd_pcm_ops snd_bt87x_pcm_
 static struct snd_pcm_ops snd_bt87x_pcm_ops = {
 	.open = snd_bt87x_pcm_open,
 	.close = snd_bt87x_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_bt87x_hw_params,
 	.hw_free = snd_bt87x_hw_free,
 	.prepare = snd_bt87x_prepare,
diff -r 5829c288c7df pci/ca0106/ca0106_main.c
--- a/pci/ca0106/ca0106_main.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/ca0106/ca0106_main.c	Mon Nov 26 16:52:39 2007 +0100
@@ -967,7 +967,6 @@ static struct snd_pcm_ops snd_ca0106_pla
 static struct snd_pcm_ops snd_ca0106_playback_front_ops = {
 	.open =        snd_ca0106_pcm_open_playback_front,
 	.close =       snd_ca0106_pcm_close_playback,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_ca0106_pcm_hw_params_playback,
 	.hw_free =     snd_ca0106_pcm_hw_free_playback,
 	.prepare =     snd_ca0106_pcm_prepare_playback,
@@ -978,7 +977,6 @@ static struct snd_pcm_ops snd_ca0106_cap
 static struct snd_pcm_ops snd_ca0106_capture_0_ops = {
 	.open =        snd_ca0106_pcm_open_0_capture,
 	.close =       snd_ca0106_pcm_close_capture,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_ca0106_pcm_hw_params_capture,
 	.hw_free =     snd_ca0106_pcm_hw_free_capture,
 	.prepare =     snd_ca0106_pcm_prepare_capture,
@@ -989,7 +987,6 @@ static struct snd_pcm_ops snd_ca0106_cap
 static struct snd_pcm_ops snd_ca0106_capture_1_ops = {
 	.open =        snd_ca0106_pcm_open_1_capture,
 	.close =       snd_ca0106_pcm_close_capture,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_ca0106_pcm_hw_params_capture,
 	.hw_free =     snd_ca0106_pcm_hw_free_capture,
 	.prepare =     snd_ca0106_pcm_prepare_capture,
@@ -1000,7 +997,6 @@ static struct snd_pcm_ops snd_ca0106_cap
 static struct snd_pcm_ops snd_ca0106_capture_2_ops = {
 	.open =        snd_ca0106_pcm_open_2_capture,
 	.close =       snd_ca0106_pcm_close_capture,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_ca0106_pcm_hw_params_capture,
 	.hw_free =     snd_ca0106_pcm_hw_free_capture,
 	.prepare =     snd_ca0106_pcm_prepare_capture,
@@ -1011,7 +1007,6 @@ static struct snd_pcm_ops snd_ca0106_cap
 static struct snd_pcm_ops snd_ca0106_capture_3_ops = {
 	.open =        snd_ca0106_pcm_open_3_capture,
 	.close =       snd_ca0106_pcm_close_capture,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_ca0106_pcm_hw_params_capture,
 	.hw_free =     snd_ca0106_pcm_hw_free_capture,
 	.prepare =     snd_ca0106_pcm_prepare_capture,
@@ -1022,7 +1017,6 @@ static struct snd_pcm_ops snd_ca0106_pla
 static struct snd_pcm_ops snd_ca0106_playback_center_lfe_ops = {
         .open =         snd_ca0106_pcm_open_playback_center_lfe,
         .close =        snd_ca0106_pcm_close_playback,
-        .ioctl =        snd_pcm_lib_ioctl,
         .hw_params =    snd_ca0106_pcm_hw_params_playback,
         .hw_free =      snd_ca0106_pcm_hw_free_playback,
         .prepare =      snd_ca0106_pcm_prepare_playback,     
@@ -1033,7 +1027,6 @@ static struct snd_pcm_ops snd_ca0106_pla
 static struct snd_pcm_ops snd_ca0106_playback_unknown_ops = {
         .open =         snd_ca0106_pcm_open_playback_unknown,
         .close =        snd_ca0106_pcm_close_playback,
-        .ioctl =        snd_pcm_lib_ioctl,
         .hw_params =    snd_ca0106_pcm_hw_params_playback,
         .hw_free =      snd_ca0106_pcm_hw_free_playback,
         .prepare =      snd_ca0106_pcm_prepare_playback,     
@@ -1044,7 +1037,6 @@ static struct snd_pcm_ops snd_ca0106_pla
 static struct snd_pcm_ops snd_ca0106_playback_rear_ops = {
         .open =         snd_ca0106_pcm_open_playback_rear,
         .close =        snd_ca0106_pcm_close_playback,
-        .ioctl =        snd_pcm_lib_ioctl,
         .hw_params =    snd_ca0106_pcm_hw_params_playback,
 		.hw_free =      snd_ca0106_pcm_hw_free_playback,
         .prepare =      snd_ca0106_pcm_prepare_playback,     
diff -r 5829c288c7df pci/cmipci.c
--- a/pci/cmipci.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/cmipci.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1834,7 +1834,6 @@ static struct snd_pcm_ops snd_cmipci_pla
 static struct snd_pcm_ops snd_cmipci_playback_ops = {
 	.open =		snd_cmipci_playback_open,
 	.close =	snd_cmipci_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cmipci_hw_params,
 	.hw_free =	snd_cmipci_playback_hw_free,
 	.prepare =	snd_cmipci_playback_prepare,
@@ -1845,7 +1844,6 @@ static struct snd_pcm_ops snd_cmipci_cap
 static struct snd_pcm_ops snd_cmipci_capture_ops = {
 	.open =		snd_cmipci_capture_open,
 	.close =	snd_cmipci_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cmipci_hw_params,
 	.hw_free =	snd_cmipci_hw_free,
 	.prepare =	snd_cmipci_capture_prepare,
@@ -1856,7 +1854,6 @@ static struct snd_pcm_ops snd_cmipci_pla
 static struct snd_pcm_ops snd_cmipci_playback2_ops = {
 	.open =		snd_cmipci_playback2_open,
 	.close =	snd_cmipci_playback2_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cmipci_playback2_hw_params,
 	.hw_free =	snd_cmipci_playback2_hw_free,
 	.prepare =	snd_cmipci_capture_prepare,	/* channel B */
@@ -1867,7 +1864,6 @@ static struct snd_pcm_ops snd_cmipci_pla
 static struct snd_pcm_ops snd_cmipci_playback_spdif_ops = {
 	.open =		snd_cmipci_playback_spdif_open,
 	.close =	snd_cmipci_playback_spdif_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cmipci_hw_params,
 	.hw_free =	snd_cmipci_playback_hw_free,
 	.prepare =	snd_cmipci_playback_spdif_prepare,	/* set up rate */
@@ -1878,7 +1874,6 @@ static struct snd_pcm_ops snd_cmipci_cap
 static struct snd_pcm_ops snd_cmipci_capture_spdif_ops = {
 	.open =		snd_cmipci_capture_spdif_open,
 	.close =	snd_cmipci_capture_spdif_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cmipci_hw_params,
 	.hw_free =	snd_cmipci_capture_spdif_hw_free,
 	.prepare =	snd_cmipci_capture_spdif_prepare,
diff -r 5829c288c7df pci/cs4281.c
--- a/pci/cs4281.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/cs4281.c	Mon Nov 26 16:52:39 2007 +0100
@@ -947,7 +947,6 @@ static struct snd_pcm_ops snd_cs4281_pla
 static struct snd_pcm_ops snd_cs4281_playback_ops = {
 	.open =		snd_cs4281_playback_open,
 	.close =	snd_cs4281_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cs4281_hw_params,
 	.hw_free =	snd_cs4281_hw_free,
 	.prepare =	snd_cs4281_playback_prepare,
@@ -958,7 +957,6 @@ static struct snd_pcm_ops snd_cs4281_cap
 static struct snd_pcm_ops snd_cs4281_capture_ops = {
 	.open =		snd_cs4281_capture_open,
 	.close =	snd_cs4281_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cs4281_hw_params,
 	.hw_free =	snd_cs4281_hw_free,
 	.prepare =	snd_cs4281_capture_prepare,
diff -r 5829c288c7df pci/cs46xx/cs46xx_lib.c
--- a/pci/cs46xx/cs46xx_lib.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/cs46xx/cs46xx_lib.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1462,7 +1462,6 @@ static struct snd_pcm_ops snd_cs46xx_pla
 static struct snd_pcm_ops snd_cs46xx_playback_rear_ops = {
 	.open =			snd_cs46xx_playback_open_rear,
 	.close =		snd_cs46xx_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_playback_hw_params,
 	.hw_free =		snd_cs46xx_playback_hw_free,
 	.prepare =		snd_cs46xx_playback_prepare,
@@ -1473,7 +1472,6 @@ static struct snd_pcm_ops snd_cs46xx_pla
 static struct snd_pcm_ops snd_cs46xx_playback_indirect_rear_ops = {
 	.open =			snd_cs46xx_playback_open_rear,
 	.close =		snd_cs46xx_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_playback_hw_params,
 	.hw_free =		snd_cs46xx_playback_hw_free,
 	.prepare =		snd_cs46xx_playback_prepare,
@@ -1485,7 +1483,6 @@ static struct snd_pcm_ops snd_cs46xx_pla
 static struct snd_pcm_ops snd_cs46xx_playback_clfe_ops = {
 	.open =			snd_cs46xx_playback_open_clfe,
 	.close =		snd_cs46xx_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_playback_hw_params,
 	.hw_free =		snd_cs46xx_playback_hw_free,
 	.prepare =		snd_cs46xx_playback_prepare,
@@ -1496,7 +1493,6 @@ static struct snd_pcm_ops snd_cs46xx_pla
 static struct snd_pcm_ops snd_cs46xx_playback_indirect_clfe_ops = {
 	.open =			snd_cs46xx_playback_open_clfe,
 	.close =		snd_cs46xx_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_playback_hw_params,
 	.hw_free =		snd_cs46xx_playback_hw_free,
 	.prepare =		snd_cs46xx_playback_prepare,
@@ -1508,7 +1504,6 @@ static struct snd_pcm_ops snd_cs46xx_pla
 static struct snd_pcm_ops snd_cs46xx_playback_iec958_ops = {
 	.open =			snd_cs46xx_playback_open_iec958,
 	.close =		snd_cs46xx_playback_close_iec958,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_playback_hw_params,
 	.hw_free =		snd_cs46xx_playback_hw_free,
 	.prepare =		snd_cs46xx_playback_prepare,
@@ -1519,7 +1514,6 @@ static struct snd_pcm_ops snd_cs46xx_pla
 static struct snd_pcm_ops snd_cs46xx_playback_indirect_iec958_ops = {
 	.open =			snd_cs46xx_playback_open_iec958,
 	.close =		snd_cs46xx_playback_close_iec958,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_playback_hw_params,
 	.hw_free =		snd_cs46xx_playback_hw_free,
 	.prepare =		snd_cs46xx_playback_prepare,
@@ -1533,7 +1527,6 @@ static struct snd_pcm_ops snd_cs46xx_pla
 static struct snd_pcm_ops snd_cs46xx_playback_ops = {
 	.open =			snd_cs46xx_playback_open,
 	.close =		snd_cs46xx_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_playback_hw_params,
 	.hw_free =		snd_cs46xx_playback_hw_free,
 	.prepare =		snd_cs46xx_playback_prepare,
@@ -1544,7 +1537,6 @@ static struct snd_pcm_ops snd_cs46xx_pla
 static struct snd_pcm_ops snd_cs46xx_playback_indirect_ops = {
 	.open =			snd_cs46xx_playback_open,
 	.close =		snd_cs46xx_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_playback_hw_params,
 	.hw_free =		snd_cs46xx_playback_hw_free,
 	.prepare =		snd_cs46xx_playback_prepare,
@@ -1556,7 +1548,6 @@ static struct snd_pcm_ops snd_cs46xx_cap
 static struct snd_pcm_ops snd_cs46xx_capture_ops = {
 	.open =			snd_cs46xx_capture_open,
 	.close =		snd_cs46xx_capture_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_capture_hw_params,
 	.hw_free =		snd_cs46xx_capture_hw_free,
 	.prepare =		snd_cs46xx_capture_prepare,
@@ -1567,7 +1558,6 @@ static struct snd_pcm_ops snd_cs46xx_cap
 static struct snd_pcm_ops snd_cs46xx_capture_indirect_ops = {
 	.open =			snd_cs46xx_capture_open,
 	.close =		snd_cs46xx_capture_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_cs46xx_capture_hw_params,
 	.hw_free =		snd_cs46xx_capture_hw_free,
 	.prepare =		snd_cs46xx_capture_prepare,
diff -r 5829c288c7df pci/cs5535audio/cs5535audio_pcm.c
--- a/pci/cs5535audio/cs5535audio_pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/cs5535audio/cs5535audio_pcm.c	Mon Nov 26 16:52:39 2007 +0100
@@ -366,7 +366,6 @@ static struct snd_pcm_ops snd_cs5535audi
 static struct snd_pcm_ops snd_cs5535audio_playback_ops = {
 	.open =		snd_cs5535audio_playback_open,
 	.close =	snd_cs5535audio_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cs5535audio_hw_params,
 	.hw_free =	snd_cs5535audio_hw_free,
 	.prepare =	snd_cs5535audio_playback_prepare,
@@ -377,7 +376,6 @@ static struct snd_pcm_ops snd_cs5535audi
 static struct snd_pcm_ops snd_cs5535audio_capture_ops = {
 	.open =		snd_cs5535audio_capture_open,
 	.close =	snd_cs5535audio_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_cs5535audio_hw_params,
 	.hw_free =	snd_cs5535audio_hw_free,
 	.prepare =	snd_cs5535audio_capture_prepare,
diff -r 5829c288c7df pci/echoaudio/echoaudio.c
--- a/pci/echoaudio/echoaudio.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/echoaudio/echoaudio.c	Mon Nov 26 16:52:39 2007 +0100
@@ -795,7 +795,6 @@ static struct snd_pcm_ops analog_playbac
 static struct snd_pcm_ops analog_playback_ops = {
 	.open = pcm_analog_out_open,
 	.close = pcm_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = pcm_analog_out_hw_params,
 	.hw_free = pcm_hw_free,
 	.prepare = pcm_prepare,
@@ -806,7 +805,6 @@ static struct snd_pcm_ops analog_capture
 static struct snd_pcm_ops analog_capture_ops = {
 	.open = pcm_analog_in_open,
 	.close = pcm_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = pcm_analog_in_hw_params,
 	.hw_free = pcm_hw_free,
 	.prepare = pcm_prepare,
@@ -819,7 +817,6 @@ static struct snd_pcm_ops digital_playba
 static struct snd_pcm_ops digital_playback_ops = {
 	.open = pcm_digital_out_open,
 	.close = pcm_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = pcm_digital_out_hw_params,
 	.hw_free = pcm_hw_free,
 	.prepare = pcm_prepare,
@@ -831,7 +828,6 @@ static struct snd_pcm_ops digital_captur
 static struct snd_pcm_ops digital_capture_ops = {
 	.open = pcm_digital_in_open,
 	.close = pcm_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = pcm_digital_in_hw_params,
 	.hw_free = pcm_hw_free,
 	.prepare = pcm_prepare,
diff -r 5829c288c7df pci/emu10k1/emu10k1x.c
--- a/pci/emu10k1/emu10k1x.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/emu10k1/emu10k1x.c	Mon Nov 26 16:52:39 2007 +0100
@@ -547,7 +547,6 @@ static struct snd_pcm_ops snd_emu10k1x_p
 static struct snd_pcm_ops snd_emu10k1x_playback_ops = {
 	.open =        snd_emu10k1x_playback_open,
 	.close =       snd_emu10k1x_playback_close,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_emu10k1x_pcm_hw_params,
 	.hw_free =     snd_emu10k1x_pcm_hw_free,
 	.prepare =     snd_emu10k1x_pcm_prepare,
@@ -693,7 +692,6 @@ static struct snd_pcm_ops snd_emu10k1x_c
 static struct snd_pcm_ops snd_emu10k1x_capture_ops = {
 	.open =        snd_emu10k1x_pcm_open_capture,
 	.close =       snd_emu10k1x_pcm_close_capture,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_emu10k1x_pcm_hw_params_capture,
 	.hw_free =     snd_emu10k1x_pcm_hw_free_capture,
 	.prepare =     snd_emu10k1x_pcm_prepare_capture,
diff -r 5829c288c7df pci/emu10k1/emupcm.c
--- a/pci/emu10k1/emupcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/emu10k1/emupcm.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1318,7 +1318,6 @@ static struct snd_pcm_ops snd_emu10k1_pl
 static struct snd_pcm_ops snd_emu10k1_playback_ops = {
 	.open =			snd_emu10k1_playback_open,
 	.close =		snd_emu10k1_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_emu10k1_playback_hw_params,
 	.hw_free =		snd_emu10k1_playback_hw_free,
 	.prepare =		snd_emu10k1_playback_prepare,
@@ -1330,7 +1329,6 @@ static struct snd_pcm_ops snd_emu10k1_ca
 static struct snd_pcm_ops snd_emu10k1_capture_ops = {
 	.open =			snd_emu10k1_capture_open,
 	.close =		snd_emu10k1_capture_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_emu10k1_capture_hw_params,
 	.hw_free =		snd_emu10k1_capture_hw_free,
 	.prepare =		snd_emu10k1_capture_prepare,
@@ -1342,7 +1340,6 @@ static struct snd_pcm_ops snd_emu10k1_ef
 static struct snd_pcm_ops snd_emu10k1_efx_playback_ops = {
 	.open =			snd_emu10k1_efx_playback_open,
 	.close =		snd_emu10k1_efx_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_emu10k1_playback_hw_params,
 	.hw_free =		snd_emu10k1_efx_playback_hw_free,
 	.prepare =		snd_emu10k1_efx_playback_prepare,
@@ -1421,7 +1418,6 @@ static struct snd_pcm_ops snd_emu10k1_ca
 static struct snd_pcm_ops snd_emu10k1_capture_mic_ops = {
 	.open =			snd_emu10k1_capture_mic_open,
 	.close =		snd_emu10k1_capture_mic_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_emu10k1_capture_hw_params,
 	.hw_free =		snd_emu10k1_capture_hw_free,
 	.prepare =		snd_emu10k1_capture_prepare,
@@ -1521,7 +1517,6 @@ static struct snd_pcm_ops snd_emu10k1_ca
 static struct snd_pcm_ops snd_emu10k1_capture_efx_ops = {
 	.open =			snd_emu10k1_capture_efx_open,
 	.close =		snd_emu10k1_capture_efx_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_emu10k1_capture_hw_params,
 	.hw_free =		snd_emu10k1_capture_hw_free,
 	.prepare =		snd_emu10k1_capture_prepare,
@@ -1752,7 +1747,6 @@ static struct snd_pcm_ops snd_emu10k1_fx
 static struct snd_pcm_ops snd_emu10k1_fx8010_playback_ops = {
 	.open =			snd_emu10k1_fx8010_playback_open,
 	.close =		snd_emu10k1_fx8010_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_emu10k1_fx8010_playback_hw_params,
 	.hw_free =		snd_emu10k1_fx8010_playback_hw_free,
 	.prepare =		snd_emu10k1_fx8010_playback_prepare,
diff -r 5829c288c7df pci/emu10k1/p16v.c
--- a/pci/emu10k1/p16v.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/emu10k1/p16v.c	Mon Nov 26 16:52:39 2007 +0100
@@ -568,7 +568,6 @@ static struct snd_pcm_ops snd_p16v_playb
 static struct snd_pcm_ops snd_p16v_playback_front_ops = {
 	.open =        snd_p16v_pcm_open_playback_front,
 	.close =       snd_p16v_pcm_close_playback,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_p16v_pcm_hw_params_playback,
 	.hw_free =     snd_p16v_pcm_hw_free_playback,
 	.prepare =     snd_p16v_pcm_prepare_playback,
@@ -579,7 +578,6 @@ static struct snd_pcm_ops snd_p16v_captu
 static struct snd_pcm_ops snd_p16v_capture_ops = {
 	.open =        snd_p16v_pcm_open_capture,
 	.close =       snd_p16v_pcm_close_capture,
-	.ioctl =       snd_pcm_lib_ioctl,
 	.hw_params =   snd_p16v_pcm_hw_params_capture,
 	.hw_free =     snd_p16v_pcm_hw_free_capture,
 	.prepare =     snd_p16v_pcm_prepare_capture,
diff -r 5829c288c7df pci/ens1370.c
--- a/pci/ens1370.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/ens1370.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1213,7 +1213,6 @@ static struct snd_pcm_ops snd_ensoniq_pl
 static struct snd_pcm_ops snd_ensoniq_playback1_ops = {
 	.open =		snd_ensoniq_playback1_open,
 	.close =	snd_ensoniq_playback1_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ensoniq_hw_params,
 	.hw_free =	snd_ensoniq_hw_free,
 	.prepare =	snd_ensoniq_playback1_prepare,
@@ -1224,7 +1223,6 @@ static struct snd_pcm_ops snd_ensoniq_pl
 static struct snd_pcm_ops snd_ensoniq_playback2_ops = {
 	.open =		snd_ensoniq_playback2_open,
 	.close =	snd_ensoniq_playback2_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ensoniq_hw_params,
 	.hw_free =	snd_ensoniq_hw_free,
 	.prepare =	snd_ensoniq_playback2_prepare,
@@ -1235,7 +1233,6 @@ static struct snd_pcm_ops snd_ensoniq_ca
 static struct snd_pcm_ops snd_ensoniq_capture_ops = {
 	.open =		snd_ensoniq_capture_open,
 	.close =	snd_ensoniq_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ensoniq_hw_params,
 	.hw_free =	snd_ensoniq_hw_free,
 	.prepare =	snd_ensoniq_capture_prepare,
diff -r 5829c288c7df pci/es1938.c
--- a/pci/es1938.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/es1938.c	Mon Nov 26 16:52:39 2007 +0100
@@ -984,7 +984,6 @@ static struct snd_pcm_ops snd_es1938_pla
 static struct snd_pcm_ops snd_es1938_playback_ops = {
 	.open =		snd_es1938_playback_open,
 	.close =	snd_es1938_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_es1938_pcm_hw_params,
 	.hw_free =	snd_es1938_pcm_hw_free,
 	.prepare =	snd_es1938_playback_prepare,
@@ -995,7 +994,6 @@ static struct snd_pcm_ops snd_es1938_cap
 static struct snd_pcm_ops snd_es1938_capture_ops = {
 	.open =		snd_es1938_capture_open,
 	.close =	snd_es1938_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_es1938_pcm_hw_params,
 	.hw_free =	snd_es1938_pcm_hw_free,
 	.prepare =	snd_es1938_capture_prepare,
diff -r 5829c288c7df pci/es1968.c
--- a/pci/es1968.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/es1968.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1654,7 +1654,6 @@ static struct snd_pcm_ops snd_es1968_pla
 static struct snd_pcm_ops snd_es1968_playback_ops = {
 	.open =		snd_es1968_playback_open,
 	.close =	snd_es1968_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_es1968_hw_params,
 	.hw_free =	snd_es1968_hw_free,
 	.prepare =	snd_es1968_pcm_prepare,
@@ -1665,7 +1664,6 @@ static struct snd_pcm_ops snd_es1968_cap
 static struct snd_pcm_ops snd_es1968_capture_ops = {
 	.open =		snd_es1968_capture_open,
 	.close =	snd_es1968_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_es1968_hw_params,
 	.hw_free =	snd_es1968_hw_free,
 	.prepare =	snd_es1968_pcm_prepare,
diff -r 5829c288c7df pci/fm801.c
--- a/pci/fm801.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/fm801.c	Mon Nov 26 16:52:39 2007 +0100
@@ -663,7 +663,6 @@ static struct snd_pcm_ops snd_fm801_play
 static struct snd_pcm_ops snd_fm801_playback_ops = {
 	.open =		snd_fm801_playback_open,
 	.close =	snd_fm801_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_fm801_hw_params,
 	.hw_free =	snd_fm801_hw_free,
 	.prepare =	snd_fm801_playback_prepare,
@@ -674,7 +673,6 @@ static struct snd_pcm_ops snd_fm801_capt
 static struct snd_pcm_ops snd_fm801_capture_ops = {
 	.open =		snd_fm801_capture_open,
 	.close =	snd_fm801_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_fm801_hw_params,
 	.hw_free =	snd_fm801_hw_free,
 	.prepare =	snd_fm801_capture_prepare,
diff -r 5829c288c7df pci/hda/hda_intel.c
--- a/pci/hda/hda_intel.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/hda/hda_intel.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1340,7 +1340,6 @@ static struct snd_pcm_ops azx_pcm_ops = 
 static struct snd_pcm_ops azx_pcm_ops = {
 	.open = azx_pcm_open,
 	.close = azx_pcm_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = azx_pcm_hw_params,
 	.hw_free = azx_pcm_hw_free,
 	.prepare = azx_pcm_prepare,
diff -r 5829c288c7df pci/ice1712/ice1712.c
--- a/pci/ice1712/ice1712.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/ice1712/ice1712.c	Mon Nov 26 16:52:39 2007 +0100
@@ -841,7 +841,6 @@ static struct snd_pcm_ops snd_ice1712_pl
 static struct snd_pcm_ops snd_ice1712_playback_ops = {
 	.open =		snd_ice1712_playback_open,
 	.close =	snd_ice1712_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ice1712_hw_params,
 	.hw_free =	snd_ice1712_hw_free,
 	.prepare =	snd_ice1712_playback_prepare,
@@ -852,7 +851,6 @@ static struct snd_pcm_ops snd_ice1712_pl
 static struct snd_pcm_ops snd_ice1712_playback_ds_ops = {
 	.open =		snd_ice1712_playback_ds_open,
 	.close =	snd_ice1712_playback_ds_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ice1712_hw_params,
 	.hw_free =	snd_ice1712_hw_free,
 	.prepare =	snd_ice1712_playback_ds_prepare,
@@ -863,7 +861,6 @@ static struct snd_pcm_ops snd_ice1712_ca
 static struct snd_pcm_ops snd_ice1712_capture_ops = {
 	.open =		snd_ice1712_capture_open,
 	.close =	snd_ice1712_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ice1712_hw_params,
 	.hw_free =	snd_ice1712_hw_free,
 	.prepare =	snd_ice1712_capture_prepare,
@@ -1220,7 +1217,6 @@ static struct snd_pcm_ops snd_ice1712_pl
 static struct snd_pcm_ops snd_ice1712_playback_pro_ops = {
 	.open =		snd_ice1712_playback_pro_open,
 	.close =	snd_ice1712_playback_pro_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ice1712_playback_pro_hw_params,
 	.hw_free =	snd_ice1712_hw_free,
 	.prepare =	snd_ice1712_playback_pro_prepare,
@@ -1231,7 +1227,6 @@ static struct snd_pcm_ops snd_ice1712_ca
 static struct snd_pcm_ops snd_ice1712_capture_pro_ops = {
 	.open =		snd_ice1712_capture_pro_open,
 	.close =	snd_ice1712_capture_pro_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_ice1712_capture_pro_hw_params,
 	.hw_free =	snd_ice1712_hw_free,
 	.prepare =	snd_ice1712_capture_pro_prepare,
diff -r 5829c288c7df pci/ice1712/ice1724.c
--- a/pci/ice1712/ice1724.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/ice1712/ice1724.c	Mon Nov 26 16:52:39 2007 +0100
@@ -842,7 +842,6 @@ static struct snd_pcm_ops snd_vt1724_pla
 static struct snd_pcm_ops snd_vt1724_playback_pro_ops = {
 	.open =		snd_vt1724_playback_pro_open,
 	.close =	snd_vt1724_playback_pro_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_vt1724_pcm_hw_params,
 	.hw_free =	snd_vt1724_pcm_hw_free,
 	.prepare =	snd_vt1724_playback_pro_prepare,
@@ -853,7 +852,6 @@ static struct snd_pcm_ops snd_vt1724_cap
 static struct snd_pcm_ops snd_vt1724_capture_pro_ops = {
 	.open =		snd_vt1724_capture_pro_open,
 	.close =	snd_vt1724_capture_pro_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_vt1724_pcm_hw_params,
 	.hw_free =	snd_vt1724_pcm_hw_free,
 	.prepare =	snd_vt1724_pcm_prepare,
@@ -1018,7 +1016,6 @@ static struct snd_pcm_ops snd_vt1724_pla
 static struct snd_pcm_ops snd_vt1724_playback_spdif_ops = {
 	.open =		snd_vt1724_playback_spdif_open,
 	.close =	snd_vt1724_playback_spdif_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_vt1724_pcm_hw_params,
 	.hw_free =	snd_vt1724_pcm_hw_free,
 	.prepare =	snd_vt1724_playback_spdif_prepare,
@@ -1029,7 +1026,6 @@ static struct snd_pcm_ops snd_vt1724_cap
 static struct snd_pcm_ops snd_vt1724_capture_spdif_ops = {
 	.open =		snd_vt1724_capture_spdif_open,
 	.close =	snd_vt1724_capture_spdif_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_vt1724_pcm_hw_params,
 	.hw_free =	snd_vt1724_pcm_hw_free,
 	.prepare =	snd_vt1724_pcm_prepare,
@@ -1163,7 +1159,6 @@ static struct snd_pcm_ops snd_vt1724_pla
 static struct snd_pcm_ops snd_vt1724_playback_indep_ops = {
 	.open =		snd_vt1724_playback_indep_open,
 	.close =	snd_vt1724_playback_indep_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_vt1724_pcm_hw_params,
 	.hw_free =	snd_vt1724_pcm_hw_free,
 	.prepare =	snd_vt1724_playback_indep_prepare,
diff -r 5829c288c7df pci/intel8x0.c
--- a/pci/intel8x0.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/intel8x0.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1307,7 +1307,6 @@ static struct snd_pcm_ops snd_intel8x0_p
 static struct snd_pcm_ops snd_intel8x0_playback_ops = {
 	.open =		snd_intel8x0_playback_open,
 	.close =	snd_intel8x0_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1318,7 +1317,6 @@ static struct snd_pcm_ops snd_intel8x0_c
 static struct snd_pcm_ops snd_intel8x0_capture_ops = {
 	.open =		snd_intel8x0_capture_open,
 	.close =	snd_intel8x0_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1329,7 +1327,6 @@ static struct snd_pcm_ops snd_intel8x0_c
 static struct snd_pcm_ops snd_intel8x0_capture_mic_ops = {
 	.open =		snd_intel8x0_mic_open,
 	.close =	snd_intel8x0_mic_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1340,7 +1337,6 @@ static struct snd_pcm_ops snd_intel8x0_c
 static struct snd_pcm_ops snd_intel8x0_capture_mic2_ops = {
 	.open =		snd_intel8x0_mic2_open,
 	.close =	snd_intel8x0_mic2_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1351,7 +1347,6 @@ static struct snd_pcm_ops snd_intel8x0_c
 static struct snd_pcm_ops snd_intel8x0_capture2_ops = {
 	.open =		snd_intel8x0_capture2_open,
 	.close =	snd_intel8x0_capture2_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1362,7 +1357,6 @@ static struct snd_pcm_ops snd_intel8x0_s
 static struct snd_pcm_ops snd_intel8x0_spdif_ops = {
 	.open =		snd_intel8x0_spdif_open,
 	.close =	snd_intel8x0_spdif_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1373,7 +1367,6 @@ static struct snd_pcm_ops snd_intel8x0_a
 static struct snd_pcm_ops snd_intel8x0_ali_playback_ops = {
 	.open =		snd_intel8x0_playback_open,
 	.close =	snd_intel8x0_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1384,7 +1377,6 @@ static struct snd_pcm_ops snd_intel8x0_a
 static struct snd_pcm_ops snd_intel8x0_ali_capture_ops = {
 	.open =		snd_intel8x0_capture_open,
 	.close =	snd_intel8x0_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1395,7 +1387,6 @@ static struct snd_pcm_ops snd_intel8x0_a
 static struct snd_pcm_ops snd_intel8x0_ali_capture_mic_ops = {
 	.open =		snd_intel8x0_mic_open,
 	.close =	snd_intel8x0_mic_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1406,7 +1397,6 @@ static struct snd_pcm_ops snd_intel8x0_a
 static struct snd_pcm_ops snd_intel8x0_ali_ac97spdifout_ops = {
 	.open =		snd_intel8x0_ali_ac97spdifout_open,
 	.close =	snd_intel8x0_ali_ac97spdifout_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1418,7 +1408,6 @@ static struct snd_pcm_ops snd_intel8x0_a
 static struct snd_pcm_ops snd_intel8x0_ali_spdifin_ops = {
 	.open =		snd_intel8x0_ali_spdifin_open,
 	.close =	snd_intel8x0_ali_spdifin_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
@@ -1429,7 +1418,6 @@ static struct snd_pcm_ops snd_intel8x0_a
 static struct snd_pcm_ops snd_intel8x0_ali_spdifout_ops = {
 	.open =		snd_intel8x0_ali_spdifout_open,
 	.close =	snd_intel8x0_ali_spdifout_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0_pcm_prepare,
diff -r 5829c288c7df pci/intel8x0m.c
--- a/pci/intel8x0m.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/intel8x0m.c	Mon Nov 26 16:52:39 2007 +0100
@@ -675,7 +675,6 @@ static struct snd_pcm_ops snd_intel8x0m_
 static struct snd_pcm_ops snd_intel8x0m_playback_ops = {
 	.open =		snd_intel8x0m_playback_open,
 	.close =	snd_intel8x0m_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0m_pcm_prepare,
@@ -686,7 +685,6 @@ static struct snd_pcm_ops snd_intel8x0m_
 static struct snd_pcm_ops snd_intel8x0m_capture_ops = {
 	.open =		snd_intel8x0m_capture_open,
 	.close =	snd_intel8x0m_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_intel8x0_hw_params,
 	.hw_free =	snd_intel8x0_hw_free,
 	.prepare =	snd_intel8x0m_pcm_prepare,
diff -r 5829c288c7df pci/korg1212/korg1212.c
--- a/pci/korg1212/korg1212.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/korg1212/korg1212.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1478,21 +1478,17 @@ static int snd_korg1212_capture_close(st
         return 0;
 }
 
-static int snd_korg1212_ioctl(struct snd_pcm_substream *substream,
-			     unsigned int cmd, void *arg)
+static int snd_korg1212_channel_info(struct snd_pcm_substream *substream,
+				     struct snd_pcm_channel_info *info)
 {
-	K1212_DEBUG_PRINTK("K1212_DEBUG: snd_korg1212_ioctl: cmd=%d\n", cmd);
-
-	if (cmd == SNDRV_PCM_IOCTL1_CHANNEL_INFO ) {
-		struct snd_pcm_channel_info *info = arg;
-        	info->offset = 0;
-        	info->first = info->channel * 16;
-        	info->step = 256;
-		K1212_DEBUG_PRINTK("K1212_DEBUG: channel_info %d:, offset=%ld, first=%d, step=%d\n", info->channel, info->offset, info->first, info->step);
-		return 0;
-	}
-
-        return snd_pcm_lib_ioctl(substream, cmd, arg);
+	info->offset = 0;
+	info->first = info->channel * 16;
+	info->step = 256;
+	K1212_DEBUG_PRINTK("K1212_DEBUG: channel_info %d:"
+			   ", offset=%ld, first=%d, step=%d\n",
+			   info->channel, info->offset, info->first,
+			   info->step);
+	return 0;
 }
 
 static int snd_korg1212_hw_params(struct snd_pcm_substream *substream,
@@ -1691,7 +1687,7 @@ static struct snd_pcm_ops snd_korg1212_p
 static struct snd_pcm_ops snd_korg1212_playback_ops = {
         .open =		snd_korg1212_playback_open,
         .close =	snd_korg1212_playback_close,
-        .ioctl =	snd_korg1212_ioctl,
+	.channel_info =	snd_korg1212_channel_info,
         .hw_params =	snd_korg1212_hw_params,
         .prepare =	snd_korg1212_prepare,
         .trigger =	snd_korg1212_trigger,
@@ -1703,7 +1699,7 @@ static struct snd_pcm_ops snd_korg1212_c
 static struct snd_pcm_ops snd_korg1212_capture_ops = {
 	.open =		snd_korg1212_capture_open,
 	.close =	snd_korg1212_capture_close,
-	.ioctl =	snd_korg1212_ioctl,
+	.channel_info =	snd_korg1212_channel_info,
 	.hw_params =	snd_korg1212_hw_params,
 	.prepare =	snd_korg1212_prepare,
 	.trigger =	snd_korg1212_trigger,
diff -r 5829c288c7df pci/maestro3.c
--- a/pci/maestro3.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/maestro3.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1864,7 +1864,6 @@ static struct snd_pcm_ops snd_m3_playbac
 static struct snd_pcm_ops snd_m3_playback_ops = {
 	.open =		snd_m3_playback_open,
 	.close =	snd_m3_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_m3_pcm_hw_params,
 	.hw_free =	snd_m3_pcm_hw_free,
 	.prepare =	snd_m3_pcm_prepare,
@@ -1875,7 +1874,6 @@ static struct snd_pcm_ops snd_m3_capture
 static struct snd_pcm_ops snd_m3_capture_ops = {
 	.open =		snd_m3_capture_open,
 	.close =	snd_m3_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_m3_pcm_hw_params,
 	.hw_free =	snd_m3_pcm_hw_free,
 	.prepare =	snd_m3_pcm_prepare,
diff -r 5829c288c7df pci/mixart/mixart.c
--- a/pci/mixart/mixart.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/mixart/mixart.c	Mon Nov 26 16:52:39 2007 +0100
@@ -889,7 +889,6 @@ static struct snd_pcm_ops snd_mixart_pla
 static struct snd_pcm_ops snd_mixart_playback_ops = {
 	.open      = snd_mixart_playback_open,
 	.close     = snd_mixart_close,
-	.ioctl     = snd_pcm_lib_ioctl,
 	.prepare   = snd_mixart_prepare,
 	.hw_params = snd_mixart_hw_params,
 	.hw_free   = snd_mixart_hw_free,
@@ -900,7 +899,6 @@ static struct snd_pcm_ops snd_mixart_cap
 static struct snd_pcm_ops snd_mixart_capture_ops = {
 	.open      = snd_mixart_capture_open,
 	.close     = snd_mixart_close,
-	.ioctl     = snd_pcm_lib_ioctl,
 	.prepare   = snd_mixart_prepare,
 	.hw_params = snd_mixart_hw_params,
 	.hw_free   = snd_mixart_hw_free,
diff -r 5829c288c7df pci/nm256/nm256.c
--- a/pci/nm256/nm256.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/nm256/nm256.c	Mon Nov 26 16:52:39 2007 +0100
@@ -898,7 +898,6 @@ static struct snd_pcm_ops snd_nm256_play
 static struct snd_pcm_ops snd_nm256_playback_ops = {
 	.open =		snd_nm256_playback_open,
 	.close =	snd_nm256_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_nm256_pcm_hw_params,
 	.prepare =	snd_nm256_pcm_prepare,
 	.trigger =	snd_nm256_playback_trigger,
@@ -913,7 +912,6 @@ static struct snd_pcm_ops snd_nm256_capt
 static struct snd_pcm_ops snd_nm256_capture_ops = {
 	.open =		snd_nm256_capture_open,
 	.close =	snd_nm256_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_nm256_pcm_hw_params,
 	.prepare =	snd_nm256_pcm_prepare,
 	.trigger =	snd_nm256_capture_trigger,
diff -r 5829c288c7df pci/pcxhr/pcxhr.c
--- a/pci/pcxhr/pcxhr.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/pcxhr/pcxhr.c	Mon Nov 26 16:52:39 2007 +0100
@@ -964,7 +964,6 @@ static struct snd_pcm_ops pcxhr_ops = {
 static struct snd_pcm_ops pcxhr_ops = {
 	.open      = pcxhr_open,
 	.close     = pcxhr_close,
-	.ioctl     = snd_pcm_lib_ioctl,
 	.prepare   = pcxhr_prepare,
 	.hw_params = pcxhr_hw_params,
 	.hw_free   = pcxhr_hw_free,
diff -r 5829c288c7df pci/riptide/riptide.c
--- a/pci/riptide/riptide.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/riptide/riptide.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1693,7 +1693,6 @@ static struct snd_pcm_ops snd_riptide_pl
 static struct snd_pcm_ops snd_riptide_playback_ops = {
 	.open = snd_riptide_playback_open,
 	.close = snd_riptide_playback_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_riptide_hw_params,
 	.hw_free = snd_riptide_hw_free,
 	.prepare = snd_riptide_prepare,
@@ -1704,7 +1703,6 @@ static struct snd_pcm_ops snd_riptide_ca
 static struct snd_pcm_ops snd_riptide_capture_ops = {
 	.open = snd_riptide_capture_open,
 	.close = snd_riptide_capture_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_riptide_hw_params,
 	.hw_free = snd_riptide_hw_free,
 	.prepare = snd_riptide_prepare,
diff -r 5829c288c7df pci/rme32.c
--- a/pci/rme32.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/rme32.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1204,7 +1204,6 @@ static struct snd_pcm_ops snd_rme32_play
 static struct snd_pcm_ops snd_rme32_playback_spdif_ops = {
 	.open =		snd_rme32_playback_spdif_open,
 	.close =	snd_rme32_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme32_playback_hw_params,
 	.hw_free =	snd_rme32_pcm_hw_free,
 	.prepare =	snd_rme32_playback_prepare,
@@ -1218,7 +1217,6 @@ static struct snd_pcm_ops snd_rme32_capt
 static struct snd_pcm_ops snd_rme32_capture_spdif_ops = {
 	.open =		snd_rme32_capture_spdif_open,
 	.close =	snd_rme32_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme32_capture_hw_params,
 	.hw_free =	snd_rme32_pcm_hw_free,
 	.prepare =	snd_rme32_capture_prepare,
@@ -1231,7 +1229,6 @@ static struct snd_pcm_ops snd_rme32_play
 static struct snd_pcm_ops snd_rme32_playback_adat_ops = {
 	.open =		snd_rme32_playback_adat_open,
 	.close =	snd_rme32_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme32_playback_hw_params,
 	.prepare =	snd_rme32_playback_prepare,
 	.trigger =	snd_rme32_pcm_trigger,
@@ -1244,7 +1241,6 @@ static struct snd_pcm_ops snd_rme32_capt
 static struct snd_pcm_ops snd_rme32_capture_adat_ops = {
 	.open =		snd_rme32_capture_adat_open,
 	.close =	snd_rme32_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme32_capture_hw_params,
 	.prepare =	snd_rme32_capture_prepare,
 	.trigger =	snd_rme32_pcm_trigger,
@@ -1257,7 +1253,6 @@ static struct snd_pcm_ops snd_rme32_play
 static struct snd_pcm_ops snd_rme32_playback_spdif_fd_ops = {
 	.open =		snd_rme32_playback_spdif_open,
 	.close =	snd_rme32_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme32_playback_hw_params,
 	.hw_free =	snd_rme32_pcm_hw_free,
 	.prepare =	snd_rme32_playback_prepare,
@@ -1269,7 +1264,6 @@ static struct snd_pcm_ops snd_rme32_capt
 static struct snd_pcm_ops snd_rme32_capture_spdif_fd_ops = {
 	.open =		snd_rme32_capture_spdif_open,
 	.close =	snd_rme32_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme32_capture_hw_params,
 	.hw_free =	snd_rme32_pcm_hw_free,
 	.prepare =	snd_rme32_capture_prepare,
@@ -1281,7 +1275,6 @@ static struct snd_pcm_ops snd_rme32_play
 static struct snd_pcm_ops snd_rme32_playback_adat_fd_ops = {
 	.open =		snd_rme32_playback_adat_open,
 	.close =	snd_rme32_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme32_playback_hw_params,
 	.prepare =	snd_rme32_playback_prepare,
 	.trigger =	snd_rme32_pcm_trigger,
@@ -1292,7 +1285,6 @@ static struct snd_pcm_ops snd_rme32_capt
 static struct snd_pcm_ops snd_rme32_capture_adat_fd_ops = {
 	.open =		snd_rme32_capture_adat_open,
 	.close =	snd_rme32_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme32_capture_hw_params,
 	.prepare =	snd_rme32_capture_prepare,
 	.trigger =	snd_rme32_pcm_trigger,
diff -r 5829c288c7df pci/rme96.c
--- a/pci/rme96.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/rme96.c	Mon Nov 26 16:52:39 2007 +0100
@@ -1456,7 +1456,6 @@ static struct snd_pcm_ops snd_rme96_play
 static struct snd_pcm_ops snd_rme96_playback_spdif_ops = {
 	.open =		snd_rme96_playback_spdif_open,
 	.close =	snd_rme96_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme96_playback_hw_params,
 	.prepare =	snd_rme96_playback_prepare,
 	.trigger =	snd_rme96_playback_trigger,
@@ -1469,7 +1468,6 @@ static struct snd_pcm_ops snd_rme96_capt
 static struct snd_pcm_ops snd_rme96_capture_spdif_ops = {
 	.open =		snd_rme96_capture_spdif_open,
 	.close =	snd_rme96_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme96_capture_hw_params,
 	.prepare =	snd_rme96_capture_prepare,
 	.trigger =	snd_rme96_capture_trigger,
@@ -1481,7 +1479,6 @@ static struct snd_pcm_ops snd_rme96_play
 static struct snd_pcm_ops snd_rme96_playback_adat_ops = {
 	.open =		snd_rme96_playback_adat_open,
 	.close =	snd_rme96_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme96_playback_hw_params,
 	.prepare =	snd_rme96_playback_prepare,
 	.trigger =	snd_rme96_playback_trigger,
@@ -1494,7 +1491,6 @@ static struct snd_pcm_ops snd_rme96_capt
 static struct snd_pcm_ops snd_rme96_capture_adat_ops = {
 	.open =		snd_rme96_capture_adat_open,
 	.close =	snd_rme96_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_rme96_capture_hw_params,
 	.prepare =	snd_rme96_capture_prepare,
 	.trigger =	snd_rme96_capture_trigger,
diff -r 5829c288c7df pci/rme9652/hdsp.c
--- a/pci/rme9652/hdsp.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/rme9652/hdsp.c	Mon Nov 26 16:52:40 2007 +0100
@@ -3915,21 +3915,6 @@ static int snd_hdsp_channel_info(struct 
 	return 0;
 }
 
-static int snd_hdsp_ioctl(struct snd_pcm_substream *substream,
-			     unsigned int cmd, void *arg)
-{
-	switch (cmd) {
-	case SNDRV_PCM_IOCTL1_RESET:
-		return snd_hdsp_reset(substream);
-	case SNDRV_PCM_IOCTL1_CHANNEL_INFO:
-		return snd_hdsp_channel_info(substream, arg);
-	default:
-		break;
-	}
-
-	return snd_pcm_lib_ioctl(substream, cmd, arg);
-}
-
 static int snd_hdsp_trigger(struct snd_pcm_substream *substream, int cmd)
 {
 	struct hdsp *hdsp = snd_pcm_substream_chip(substream);
@@ -4663,7 +4648,8 @@ static struct snd_pcm_ops snd_hdsp_playb
 static struct snd_pcm_ops snd_hdsp_playback_ops = {
 	.open =		snd_hdsp_playback_open,
 	.close =	snd_hdsp_playback_release,
-	.ioctl =	snd_hdsp_ioctl,
+	.reset =	snd_hdsp_reset,
+	.channel_info =	snd_hdsp_channel_info,
 	.hw_params =	snd_hdsp_hw_params,
 	.prepare =	snd_hdsp_prepare,
 	.trigger =	snd_hdsp_trigger,
@@ -4675,7 +4661,8 @@ static struct snd_pcm_ops snd_hdsp_captu
 static struct snd_pcm_ops snd_hdsp_capture_ops = {
 	.open =		snd_hdsp_capture_open,
 	.close =	snd_hdsp_capture_release,
-	.ioctl =	snd_hdsp_ioctl,
+	.reset =	snd_hdsp_reset,
+	.channel_info =	snd_hdsp_channel_info,
 	.hw_params =	snd_hdsp_hw_params,
 	.prepare =	snd_hdsp_prepare,
 	.trigger =	snd_hdsp_trigger,
diff -r 5829c288c7df pci/rme9652/hdspm.c
--- a/pci/rme9652/hdspm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/rme9652/hdspm.c	Mon Nov 26 16:52:40 2007 +0100
@@ -3756,25 +3756,6 @@ static int snd_hdspm_channel_info(struct
 	return 0;
 }
 
-static int snd_hdspm_ioctl(struct snd_pcm_substream *substream,
-			   unsigned int cmd, void *arg)
-{
-	switch (cmd) {
-	case SNDRV_PCM_IOCTL1_RESET:
-		return snd_hdspm_reset(substream);
-
-	case SNDRV_PCM_IOCTL1_CHANNEL_INFO:
-	{
-		struct snd_pcm_channel_info *info = arg;
-		return snd_hdspm_channel_info(substream, info);
-	}
-	default:
-		break;
-	}
-
-	return snd_pcm_lib_ioctl(substream, cmd, arg);
-}
-
 static int snd_hdspm_trigger(struct snd_pcm_substream *substream, int cmd)
 {
 	struct hdspm *hdspm = snd_pcm_substream_chip(substream);
@@ -4174,7 +4155,8 @@ static struct snd_pcm_ops snd_hdspm_play
 static struct snd_pcm_ops snd_hdspm_playback_ops = {
 	.open = snd_hdspm_playback_open,
 	.close = snd_hdspm_playback_release,
-	.ioctl = snd_hdspm_ioctl,
+	.reset = snd_hdspm_reset,
+	.channel_info = snd_hdspm_channel_info,
 	.hw_params = snd_hdspm_hw_params,
 	.hw_free = snd_hdspm_hw_free,
 	.prepare = snd_hdspm_prepare,
@@ -4188,7 +4170,8 @@ static struct snd_pcm_ops snd_hdspm_capt
 static struct snd_pcm_ops snd_hdspm_capture_ops = {
 	.open = snd_hdspm_capture_open,
 	.close = snd_hdspm_capture_release,
-	.ioctl = snd_hdspm_ioctl,
+	.reset = snd_hdspm_reset,
+	.channel_info = snd_hdspm_channel_info,
 	.hw_params = snd_hdspm_hw_params,
 	.hw_free = snd_hdspm_hw_free,
 	.prepare = snd_hdspm_prepare,
diff -r 5829c288c7df pci/rme9652/rme9652.c
--- a/pci/rme9652/rme9652.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/rme9652/rme9652.c	Mon Nov 26 16:52:40 2007 +0100
@@ -2066,26 +2066,6 @@ static int snd_rme9652_channel_info(stru
 	return 0;
 }
 
-static int snd_rme9652_ioctl(struct snd_pcm_substream *substream,
-			     unsigned int cmd, void *arg)
-{
-	switch (cmd) {
-	case SNDRV_PCM_IOCTL1_RESET:
-	{
-		return snd_rme9652_reset(substream);
-	}
-	case SNDRV_PCM_IOCTL1_CHANNEL_INFO:
-	{
-		struct snd_pcm_channel_info *info = arg;
-		return snd_rme9652_channel_info(substream, info);
-	}
-	default:
-		break;
-	}
-
-	return snd_pcm_lib_ioctl(substream, cmd, arg);
-}
-
 static void rme9652_silence_playback(struct snd_rme9652 *rme9652)
 {
 	memset(rme9652->playback_buffer, 0, RME9652_DMA_AREA_BYTES);
@@ -2391,7 +2371,8 @@ static struct snd_pcm_ops snd_rme9652_pl
 static struct snd_pcm_ops snd_rme9652_playback_ops = {
 	.open =		snd_rme9652_playback_open,
 	.close =	snd_rme9652_playback_release,
-	.ioctl =	snd_rme9652_ioctl,
+	.reset =	snd_rme9652_reset,
+	.channel_info =	snd_rme9652_channel_info,
 	.hw_params =	snd_rme9652_hw_params,
 	.prepare =	snd_rme9652_prepare,
 	.trigger =	snd_rme9652_trigger,
@@ -2403,7 +2384,8 @@ static struct snd_pcm_ops snd_rme9652_ca
 static struct snd_pcm_ops snd_rme9652_capture_ops = {
 	.open =		snd_rme9652_capture_open,
 	.close =	snd_rme9652_capture_release,
-	.ioctl =	snd_rme9652_ioctl,
+	.reset =	snd_rme9652_reset,
+	.channel_info =	snd_rme9652_channel_info,
 	.hw_params =	snd_rme9652_hw_params,
 	.prepare =	snd_rme9652_prepare,
 	.trigger =	snd_rme9652_trigger,
diff -r 5829c288c7df pci/sonicvibes.c
--- a/pci/sonicvibes.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/sonicvibes.c	Mon Nov 26 16:52:40 2007 +0100
@@ -824,7 +824,6 @@ static struct snd_pcm_ops snd_sonicvibes
 static struct snd_pcm_ops snd_sonicvibes_playback_ops = {
 	.open =		snd_sonicvibes_playback_open,
 	.close =	snd_sonicvibes_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_sonicvibes_hw_params,
 	.hw_free =	snd_sonicvibes_hw_free,
 	.prepare =	snd_sonicvibes_playback_prepare,
@@ -835,7 +834,6 @@ static struct snd_pcm_ops snd_sonicvibes
 static struct snd_pcm_ops snd_sonicvibes_capture_ops = {
 	.open =		snd_sonicvibes_capture_open,
 	.close =	snd_sonicvibes_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_sonicvibes_hw_params,
 	.hw_free =	snd_sonicvibes_hw_free,
 	.prepare =	snd_sonicvibes_capture_prepare,
diff -r 5829c288c7df pci/trident/trident_main.c
--- a/pci/trident/trident_main.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/trident/trident_main.c	Mon Nov 26 16:52:40 2007 +0100
@@ -775,29 +775,6 @@ static unsigned int snd_trident_control_
 /*
  *  PCM part
  */
-
-/*---------------------------------------------------------------------------
-   snd_trident_ioctl
-  
-   Description: Device I/O control handler for playback/capture parameters.
-  
-   Paramters:   substream  - PCM substream class
-                cmd     - what ioctl message to process
-                arg     - additional message infoarg     
-  
-   Returns:     Error status
-  
-  ---------------------------------------------------------------------------*/
-
-static int snd_trident_ioctl(struct snd_pcm_substream *substream,
-			     unsigned int cmd,
-			     void *arg)
-{
-	/* FIXME: it seems that with small periods the behaviour of
-	          trident hardware is unpredictable and interrupt generator
-	          is broken */
-	return snd_pcm_lib_ioctl(substream, cmd, arg);
-}
 
 /*---------------------------------------------------------------------------
    snd_trident_allocate_pcm_mem
@@ -2065,7 +2042,6 @@ static struct snd_pcm_ops snd_trident_pl
 static struct snd_pcm_ops snd_trident_playback_ops = {
 	.open =		snd_trident_playback_open,
 	.close =	snd_trident_playback_close,
-	.ioctl =	snd_trident_ioctl,
 	.hw_params =	snd_trident_hw_params,
 	.hw_free =	snd_trident_hw_free,
 	.prepare =	snd_trident_playback_prepare,
@@ -2076,7 +2052,6 @@ static struct snd_pcm_ops snd_trident_nx
 static struct snd_pcm_ops snd_trident_nx_playback_ops = {
 	.open =		snd_trident_playback_open,
 	.close =	snd_trident_playback_close,
-	.ioctl =	snd_trident_ioctl,
 	.hw_params =	snd_trident_hw_params,
 	.hw_free =	snd_trident_hw_free,
 	.prepare =	snd_trident_playback_prepare,
@@ -2088,7 +2063,6 @@ static struct snd_pcm_ops snd_trident_ca
 static struct snd_pcm_ops snd_trident_capture_ops = {
 	.open =		snd_trident_capture_open,
 	.close =	snd_trident_capture_close,
-	.ioctl =	snd_trident_ioctl,
 	.hw_params =	snd_trident_capture_hw_params,
 	.hw_free =	snd_trident_hw_free,
 	.prepare =	snd_trident_capture_prepare,
@@ -2099,7 +2073,6 @@ static struct snd_pcm_ops snd_trident_si
 static struct snd_pcm_ops snd_trident_si7018_capture_ops = {
 	.open =		snd_trident_capture_open,
 	.close =	snd_trident_capture_close,
-	.ioctl =	snd_trident_ioctl,
 	.hw_params =	snd_trident_si7018_capture_hw_params,
 	.hw_free =	snd_trident_si7018_capture_hw_free,
 	.prepare =	snd_trident_si7018_capture_prepare,
@@ -2110,7 +2083,6 @@ static struct snd_pcm_ops snd_trident_fo
 static struct snd_pcm_ops snd_trident_foldback_ops = {
 	.open =		snd_trident_foldback_open,
 	.close =	snd_trident_foldback_close,
-	.ioctl =	snd_trident_ioctl,
 	.hw_params =	snd_trident_hw_params,
 	.hw_free =	snd_trident_hw_free,
 	.prepare =	snd_trident_foldback_prepare,
@@ -2121,7 +2093,6 @@ static struct snd_pcm_ops snd_trident_nx
 static struct snd_pcm_ops snd_trident_nx_foldback_ops = {
 	.open =		snd_trident_foldback_open,
 	.close =	snd_trident_foldback_close,
-	.ioctl =	snd_trident_ioctl,
 	.hw_params =	snd_trident_hw_params,
 	.hw_free =	snd_trident_hw_free,
 	.prepare =	snd_trident_foldback_prepare,
@@ -2133,7 +2104,6 @@ static struct snd_pcm_ops snd_trident_sp
 static struct snd_pcm_ops snd_trident_spdif_ops = {
 	.open =		snd_trident_spdif_open,
 	.close =	snd_trident_spdif_close,
-	.ioctl =	snd_trident_ioctl,
 	.hw_params =	snd_trident_spdif_hw_params,
 	.hw_free =	snd_trident_hw_free,
 	.prepare =	snd_trident_spdif_prepare,
@@ -2144,7 +2114,6 @@ static struct snd_pcm_ops snd_trident_sp
 static struct snd_pcm_ops snd_trident_spdif_7018_ops = {
 	.open =		snd_trident_spdif_open,
 	.close =	snd_trident_spdif_close,
-	.ioctl =	snd_trident_ioctl,
 	.hw_params =	snd_trident_spdif_hw_params,
 	.hw_free =	snd_trident_hw_free,
 	.prepare =	snd_trident_spdif_prepare,
diff -r 5829c288c7df pci/via82xx.c
--- a/pci/via82xx.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/via82xx.c	Mon Nov 26 16:52:40 2007 +0100
@@ -1302,7 +1302,6 @@ static struct snd_pcm_ops snd_via686_pla
 static struct snd_pcm_ops snd_via686_playback_ops = {
 	.open =		snd_via82xx_playback_open,
 	.close =	snd_via82xx_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_via82xx_hw_params,
 	.hw_free =	snd_via82xx_hw_free,
 	.prepare =	snd_via686_playback_prepare,
@@ -1315,7 +1314,6 @@ static struct snd_pcm_ops snd_via686_cap
 static struct snd_pcm_ops snd_via686_capture_ops = {
 	.open =		snd_via82xx_capture_open,
 	.close =	snd_via82xx_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_via82xx_hw_params,
 	.hw_free =	snd_via82xx_hw_free,
 	.prepare =	snd_via686_capture_prepare,
@@ -1328,7 +1326,6 @@ static struct snd_pcm_ops snd_via8233_pl
 static struct snd_pcm_ops snd_via8233_playback_ops = {
 	.open =		snd_via82xx_playback_open,
 	.close =	snd_via82xx_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_via82xx_hw_params,
 	.hw_free =	snd_via82xx_hw_free,
 	.prepare =	snd_via8233_playback_prepare,
@@ -1341,7 +1338,6 @@ static struct snd_pcm_ops snd_via8233_mu
 static struct snd_pcm_ops snd_via8233_multi_ops = {
 	.open =		snd_via8233_multi_open,
 	.close =	snd_via82xx_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_via82xx_hw_params,
 	.hw_free =	snd_via82xx_hw_free,
 	.prepare =	snd_via8233_multi_prepare,
@@ -1354,7 +1350,6 @@ static struct snd_pcm_ops snd_via8233_ca
 static struct snd_pcm_ops snd_via8233_capture_ops = {
 	.open =		snd_via82xx_capture_open,
 	.close =	snd_via82xx_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_via82xx_hw_params,
 	.hw_free =	snd_via82xx_hw_free,
 	.prepare =	snd_via8233_capture_prepare,
diff -r 5829c288c7df pci/via82xx_modem.c
--- a/pci/via82xx_modem.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/via82xx_modem.c	Mon Nov 26 16:52:40 2007 +0100
@@ -798,7 +798,6 @@ static struct snd_pcm_ops snd_via686_pla
 static struct snd_pcm_ops snd_via686_playback_ops = {
 	.open =		snd_via82xx_playback_open,
 	.close =	snd_via82xx_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_via82xx_hw_params,
 	.hw_free =	snd_via82xx_hw_free,
 	.prepare =	snd_via82xx_pcm_prepare,
@@ -811,7 +810,6 @@ static struct snd_pcm_ops snd_via686_cap
 static struct snd_pcm_ops snd_via686_capture_ops = {
 	.open =		snd_via82xx_capture_open,
 	.close =	snd_via82xx_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_via82xx_hw_params,
 	.hw_free =	snd_via82xx_hw_free,
 	.prepare =	snd_via82xx_pcm_prepare,
diff -r 5829c288c7df pci/ymfpci/ymfpci_main.c
--- a/pci/ymfpci/ymfpci_main.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pci/ymfpci/ymfpci_main.c	Mon Nov 26 16:52:40 2007 +0100
@@ -1092,7 +1092,6 @@ static struct snd_pcm_ops snd_ymfpci_pla
 static struct snd_pcm_ops snd_ymfpci_playback_ops = {
 	.open =			snd_ymfpci_playback_open,
 	.close =		snd_ymfpci_playback_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_ymfpci_playback_hw_params,
 	.hw_free =		snd_ymfpci_playback_hw_free,
 	.prepare =		snd_ymfpci_playback_prepare,
@@ -1103,7 +1102,6 @@ static struct snd_pcm_ops snd_ymfpci_cap
 static struct snd_pcm_ops snd_ymfpci_capture_rec_ops = {
 	.open =			snd_ymfpci_capture_rec_open,
 	.close =		snd_ymfpci_capture_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_ymfpci_capture_hw_params,
 	.hw_free =		snd_ymfpci_capture_hw_free,
 	.prepare =		snd_ymfpci_capture_prepare,
@@ -1141,7 +1139,6 @@ static struct snd_pcm_ops snd_ymfpci_cap
 static struct snd_pcm_ops snd_ymfpci_capture_ac97_ops = {
 	.open =			snd_ymfpci_capture_ac97_open,
 	.close =		snd_ymfpci_capture_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_ymfpci_capture_hw_params,
 	.hw_free =		snd_ymfpci_capture_hw_free,
 	.prepare =		snd_ymfpci_capture_prepare,
@@ -1179,7 +1176,6 @@ static struct snd_pcm_ops snd_ymfpci_pla
 static struct snd_pcm_ops snd_ymfpci_playback_spdif_ops = {
 	.open =			snd_ymfpci_playback_spdif_open,
 	.close =		snd_ymfpci_playback_spdif_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_ymfpci_playback_hw_params,
 	.hw_free =		snd_ymfpci_playback_hw_free,
 	.prepare =		snd_ymfpci_playback_prepare,
@@ -1216,7 +1212,6 @@ static struct snd_pcm_ops snd_ymfpci_pla
 static struct snd_pcm_ops snd_ymfpci_playback_4ch_ops = {
 	.open =			snd_ymfpci_playback_4ch_open,
 	.close =		snd_ymfpci_playback_4ch_close,
-	.ioctl =		snd_pcm_lib_ioctl,
 	.hw_params =		snd_ymfpci_playback_hw_params,
 	.hw_free =		snd_ymfpci_playback_hw_free,
 	.prepare =		snd_ymfpci_playback_prepare,
diff -r 5829c288c7df pcmcia/pdaudiocf/pdaudiocf_pcm.c
--- a/pcmcia/pdaudiocf/pdaudiocf_pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/pcmcia/pdaudiocf/pdaudiocf_pcm.c	Mon Nov 26 16:52:40 2007 +0100
@@ -313,7 +313,6 @@ static struct snd_pcm_ops pdacf_pcm_capt
 static struct snd_pcm_ops pdacf_pcm_capture_ops = {
 	.open =		pdacf_pcm_capture_open,
 	.close =	pdacf_pcm_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	pdacf_pcm_hw_params,
 	.hw_free =	pdacf_pcm_hw_free,
 	.prepare =	pdacf_pcm_prepare,
diff -r 5829c288c7df ppc/pmac.c
--- a/ppc/pmac.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/ppc/pmac.c	Mon Nov 26 16:52:40 2007 +0100
@@ -589,7 +589,6 @@ static struct snd_pcm_ops snd_pmac_playb
 static struct snd_pcm_ops snd_pmac_playback_ops = {
 	.open =		snd_pmac_playback_open,
 	.close =	snd_pmac_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_pmac_pcm_hw_params,
 	.hw_free =	snd_pmac_pcm_hw_free,
 	.prepare =	snd_pmac_playback_prepare,
@@ -600,7 +599,6 @@ static struct snd_pcm_ops snd_pmac_captu
 static struct snd_pcm_ops snd_pmac_capture_ops = {
 	.open =		snd_pmac_capture_open,
 	.close =	snd_pmac_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_pmac_pcm_hw_params,
 	.hw_free =	snd_pmac_pcm_hw_free,
 	.prepare =	snd_pmac_capture_prepare,
diff -r 5829c288c7df ppc/snd_ps3.c
--- a/ppc/snd_ps3.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/ppc/snd_ps3.c	Mon Nov 26 16:52:40 2007 +0100
@@ -171,7 +171,6 @@ static struct snd_pcm_ops snd_ps3_pcm_sp
 	.open = snd_ps3_pcm_open,
 	.close = snd_ps3_pcm_close,
 	.prepare = snd_ps3_pcm_prepare,
-	.ioctl = snd_pcm_lib_ioctl,
 	.trigger = snd_ps3_pcm_trigger,
 	.pointer = snd_ps3_pcm_pointer,
 	.hw_params = snd_ps3_pcm_hw_params,
diff -r 5829c288c7df sh/aica.c
--- a/sh/aica.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/sh/aica.c	Mon Nov 26 16:52:40 2007 +0100
@@ -443,7 +443,6 @@ static struct snd_pcm_ops snd_aicapcm_pl
 static struct snd_pcm_ops snd_aicapcm_playback_ops = {
 	.open = snd_aicapcm_pcm_open,
 	.close = snd_aicapcm_pcm_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_aicapcm_pcm_hw_params,
 	.hw_free = snd_aicapcm_pcm_hw_free,
 	.prepare = snd_aicapcm_pcm_prepare,
diff -r 5829c288c7df soc/at91/at91-pcm.c
--- a/soc/at91/at91-pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/soc/at91/at91-pcm.c	Mon Nov 26 16:52:40 2007 +0100
@@ -279,7 +279,6 @@ struct snd_pcm_ops at91_pcm_ops = {
 struct snd_pcm_ops at91_pcm_ops = {
 	.open		= at91_pcm_open,
 	.close		= at91_pcm_close,
-	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= at91_pcm_hw_params,
 	.hw_free	= at91_pcm_hw_free,
 	.prepare	= at91_pcm_prepare,
diff -r 5829c288c7df soc/pxa/pxa2xx-pcm.c
--- a/soc/pxa/pxa2xx-pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/soc/pxa/pxa2xx-pcm.c	Mon Nov 26 16:52:40 2007 +0100
@@ -283,7 +283,6 @@ struct snd_pcm_ops pxa2xx_pcm_ops = {
 struct snd_pcm_ops pxa2xx_pcm_ops = {
 	.open		= pxa2xx_pcm_open,
 	.close		= pxa2xx_pcm_close,
-	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= pxa2xx_pcm_hw_params,
 	.hw_free	= pxa2xx_pcm_hw_free,
 	.prepare	= pxa2xx_pcm_prepare,
diff -r 5829c288c7df soc/s3c24xx/s3c24xx-pcm.c
--- a/soc/s3c24xx/s3c24xx-pcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/soc/s3c24xx/s3c24xx-pcm.c	Mon Nov 26 16:52:40 2007 +0100
@@ -378,7 +378,6 @@ static struct snd_pcm_ops s3c24xx_pcm_op
 static struct snd_pcm_ops s3c24xx_pcm_ops = {
 	.open		= s3c24xx_pcm_open,
 	.close		= s3c24xx_pcm_close,
-	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= s3c24xx_pcm_hw_params,
 	.hw_free	= s3c24xx_pcm_hw_free,
 	.prepare	= s3c24xx_pcm_prepare,
diff -r 5829c288c7df soc/sh/dma-sh7760.c
--- a/soc/sh/dma-sh7760.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/soc/sh/dma-sh7760.c	Mon Nov 26 16:52:40 2007 +0100
@@ -313,7 +313,6 @@ static struct snd_pcm_ops camelot_pcm_op
 static struct snd_pcm_ops camelot_pcm_ops = {
 	.open		= camelot_pcm_open,
 	.close		= camelot_pcm_close,
-	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= camelot_hw_params,
 	.hw_free	= camelot_hw_free,
 	.prepare	= camelot_prepare,
diff -r 5829c288c7df soc/soc-core.c
--- a/soc/soc-core.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/soc/soc-core.c	Mon Nov 26 16:52:40 2007 +0100
@@ -876,7 +876,6 @@ static int soc_new_pcm(struct snd_soc_de
 	pcm->private_data = rtd;
 	soc_pcm_ops.mmap = socdev->platform->pcm_ops->mmap;
 	soc_pcm_ops.pointer = socdev->platform->pcm_ops->pointer;
-	soc_pcm_ops.ioctl = socdev->platform->pcm_ops->ioctl;
 	soc_pcm_ops.copy = socdev->platform->pcm_ops->copy;
 	soc_pcm_ops.silence = socdev->platform->pcm_ops->silence;
 	soc_pcm_ops.ack = socdev->platform->pcm_ops->ack;
diff -r 5829c288c7df sparc/amd7930.c
--- a/sparc/amd7930.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/sparc/amd7930.c	Mon Nov 26 16:52:40 2007 +0100
@@ -736,7 +736,6 @@ static struct snd_pcm_ops snd_amd7930_pl
 static struct snd_pcm_ops snd_amd7930_playback_ops = {
 	.open		=	snd_amd7930_playback_open,
 	.close		=	snd_amd7930_playback_close,
-	.ioctl		=	snd_pcm_lib_ioctl,
 	.hw_params	=	snd_amd7930_hw_params,
 	.hw_free	=	snd_amd7930_hw_free,
 	.prepare	=	snd_amd7930_playback_prepare,
@@ -747,7 +746,6 @@ static struct snd_pcm_ops snd_amd7930_ca
 static struct snd_pcm_ops snd_amd7930_capture_ops = {
 	.open		=	snd_amd7930_capture_open,
 	.close		=	snd_amd7930_capture_close,
-	.ioctl		=	snd_pcm_lib_ioctl,
 	.hw_params	=	snd_amd7930_hw_params,
 	.hw_free	=	snd_amd7930_hw_free,
 	.prepare	=	snd_amd7930_capture_prepare,
diff -r 5829c288c7df sparc/cs4231.c
--- a/sparc/cs4231.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/sparc/cs4231.c	Mon Nov 26 16:52:40 2007 +0100
@@ -1220,7 +1220,6 @@ static struct snd_pcm_ops snd_cs4231_pla
 static struct snd_pcm_ops snd_cs4231_playback_ops = {
 	.open		=	snd_cs4231_playback_open,
 	.close		=	snd_cs4231_playback_close,
-	.ioctl		=	snd_pcm_lib_ioctl,
 	.hw_params	=	snd_cs4231_playback_hw_params,
 	.hw_free	=	snd_pcm_lib_free_pages,
 	.prepare	=	snd_cs4231_playback_prepare,
@@ -1231,7 +1230,6 @@ static struct snd_pcm_ops snd_cs4231_cap
 static struct snd_pcm_ops snd_cs4231_capture_ops = {
 	.open		=	snd_cs4231_capture_open,
 	.close		=	snd_cs4231_capture_close,
-	.ioctl		=	snd_pcm_lib_ioctl,
 	.hw_params	=	snd_cs4231_capture_hw_params,
 	.hw_free	=	snd_pcm_lib_free_pages,
 	.prepare	=	snd_cs4231_capture_prepare,
diff -r 5829c288c7df sparc/dbri.c
--- a/sparc/dbri.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/sparc/dbri.c	Mon Nov 26 16:52:40 2007 +0100
@@ -2205,7 +2205,6 @@ static struct snd_pcm_ops snd_dbri_ops =
 static struct snd_pcm_ops snd_dbri_ops = {
 	.open = snd_dbri_open,
 	.close = snd_dbri_close,
-	.ioctl = snd_pcm_lib_ioctl,
 	.hw_params = snd_dbri_hw_params,
 	.hw_free = snd_dbri_hw_free,
 	.prepare = snd_dbri_prepare,
diff -r 5829c288c7df spi/at73c213.c
--- a/spi/at73c213.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/spi/at73c213.c	Mon Nov 26 16:52:40 2007 +0100
@@ -304,7 +304,6 @@ static struct snd_pcm_ops at73c213_playb
 static struct snd_pcm_ops at73c213_playback_ops = {
 	.open		= snd_at73c213_pcm_open,
 	.close		= snd_at73c213_pcm_close,
-	.ioctl		= snd_pcm_lib_ioctl,
 	.hw_params	= snd_at73c213_pcm_hw_params,
 	.hw_free	= snd_at73c213_pcm_hw_free,
 	.prepare	= snd_at73c213_pcm_prepare,
diff -r 5829c288c7df usb/caiaq/caiaq-audio.c
--- a/usb/caiaq/caiaq-audio.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/usb/caiaq/caiaq-audio.c	Mon Nov 26 16:52:40 2007 +0100
@@ -286,7 +286,6 @@ static struct snd_pcm_ops snd_usb_caiaq_
 static struct snd_pcm_ops snd_usb_caiaq_ops = {
 	.open =		snd_usb_caiaq_substream_open,
 	.close =	snd_usb_caiaq_substream_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_usb_caiaq_pcm_hw_params,
 	.hw_free =	snd_usb_caiaq_pcm_hw_free,
 	.prepare =	snd_usb_caiaq_pcm_prepare,
diff -r 5829c288c7df usb/usbaudio.c
--- a/usb/usbaudio.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/usb/usbaudio.c	Mon Nov 26 16:52:40 2007 +0100
@@ -1964,7 +1964,6 @@ static struct snd_pcm_ops snd_usb_playba
 static struct snd_pcm_ops snd_usb_playback_ops = {
 	.open =		snd_usb_playback_open,
 	.close =	snd_usb_playback_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_usb_hw_params,
 	.hw_free =	snd_usb_hw_free,
 	.prepare =	snd_usb_pcm_prepare,
@@ -1976,7 +1975,6 @@ static struct snd_pcm_ops snd_usb_captur
 static struct snd_pcm_ops snd_usb_capture_ops = {
 	.open =		snd_usb_capture_open,
 	.close =	snd_usb_capture_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_usb_hw_params,
 	.hw_free =	snd_usb_hw_free,
 	.prepare =	snd_usb_pcm_prepare,
diff -r 5829c288c7df usb/usx2y/usbusx2yaudio.c
--- a/usb/usx2y/usbusx2yaudio.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/usb/usx2y/usbusx2yaudio.c	Mon Nov 26 16:52:40 2007 +0100
@@ -921,7 +921,6 @@ static struct snd_pcm_ops snd_usX2Y_pcm_
 {
 	.open =		snd_usX2Y_pcm_open,
 	.close =	snd_usX2Y_pcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_usX2Y_pcm_hw_params,
 	.hw_free =	snd_usX2Y_pcm_hw_free,
 	.prepare =	snd_usX2Y_pcm_prepare,
diff -r 5829c288c7df usb/usx2y/usx2yhwdeppcm.c
--- a/usb/usx2y/usx2yhwdeppcm.c	Mon Nov 26 15:00:40 2007 +0100
+++ b/usb/usx2y/usx2yhwdeppcm.c	Mon Nov 26 16:52:40 2007 +0100
@@ -596,7 +596,6 @@ static struct snd_pcm_ops snd_usX2Y_usbp
 {
 	.open =		snd_usX2Y_usbpcm_open,
 	.close =	snd_usX2Y_usbpcm_close,
-	.ioctl =	snd_pcm_lib_ioctl,
 	.hw_params =	snd_usX2Y_pcm_hw_params,
 	.hw_free =	snd_usX2Y_usbpcm_hw_free,
 	.prepare =	snd_usX2Y_usbpcm_prepare,




More information about the Alsa-devel mailing list