Re: Re: mpu401_uart -how to set for output only?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Fri, 19 May 2006 17:10:01 +0100,
Alan Horstmann wrote:
> 
> On Friday 19 May 2006 13:44, you wrote:
> > At Fri, 19 May 2006 11:51:24 +0100,
> >
> > Alan Horstmann wrote:
> > > When a mpu401 midi device is created, it seems to appear as available for
> > > both input and output.
> > >
> > > However, several ice1712 cards use the 2nd mpu401 port for midi out only
> > > and do not make any connection available for input.
> > >
> > > How can the 2nd device be created for output only so the device does not
> > > appear as available for input?
> >
> > I have the following pending patch on my local tree.
> > It changes the 5th parameter in snd_mpu401_uart_new() to bit flags,
> > and allows you to choose duplex, separate tx, and mmio mode.
> >
> > If it looks OK to you, I'll commit it.
> 
> Wow!  It is not very often something has been tackled before you mention the 
> need!  I hope to try this out quickley over the next few days and report 
> back.

Argh, I found a silly typo in my previous patch.
The fixed one is below.


Takashi


diff -r f0a0b4edd60b Documentation/DocBook/writing-an-alsa-driver.tmpl
--- a/Documentation/DocBook/writing-an-alsa-driver.tmpl	Fri May 19 12:04:22 2006 +0200
+++ b/Documentation/DocBook/writing-an-alsa-driver.tmpl	Fri May 19 19:14:10 2006 +0200
@@ -4215,7 +4215,7 @@ struct _snd_pcm_runtime {
           <programlisting>
 <![CDATA[
   struct snd_rawmidi *rmidi;
-  snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, port, integrated,
+  snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, port, info_flags,
                       irq, irq_flags, &rmidi);
 ]]>
           </programlisting>
@@ -4242,14 +4242,35 @@ struct _snd_pcm_runtime {
       </para>
 
       <para>
+	The 5th argument is bitflags for additional information.
         When the i/o port address above is a part of the PCI i/o
       region, the MPU401 i/o port might have been already allocated
-      (reserved) by the driver itself. In such a case, pass non-zero
-      to the 5th argument
-      (<parameter>integrated</parameter>). Otherwise, pass 0 to it,
+      (reserved) by the driver itself. In such a case, pass a bit flag
+      <constant>MPU401_INFO_INTEGRATED</constant>,
       and 
       the mpu401-uart layer will allocate the i/o ports by itself. 
       </para>
+
+	<para>
+	When the controller supports only the input or output MIDI stream,
+	pass <constant>MPU401_INFO_INPUT</constant> or
+	<constant>MPU401_INFO_OUTPUT</constant> bitflag, respectively.
+	Then the rawmidi instance is created as a single stream.
+	</para>
+
+	<para>
+	<constant>MPU401_INFO_MMIO</constant> bitflag is used to change
+	the access method to MMIO (via readb and writeb) instead of
+	iob and outb.  In this case, you have to pass the iomapped address
+	to <function>snd_mpu401_uart_new()</function>.
+	</para>
+
+	<para>
+	When <constant>MPU401_INFO_TX_IRQ</constant> is set, the output
+	stream isn't checked in the default interrupt handler.  The driver
+	needs to call <function>snd_mpu401_uart_interrupt_tx()</function>
+	by itself to start processing the output stream in irq handler.
+	</para>
 
       <para>
         Usually, the port address corresponds to the command port and
diff -r f0a0b4edd60b drivers/mpu401/mpu401_uart.c
--- a/drivers/mpu401/mpu401_uart.c	Fri May 19 12:04:22 2006 +0200
+++ b/drivers/mpu401/mpu401_uart.c	Fri May 19 19:14:10 2006 +0200
@@ -95,23 +95,30 @@ static void snd_mpu401_uart_clear_rx(str
 #endif
 }
 
-static void _snd_mpu401_uart_interrupt(struct snd_mpu401 *mpu)
-{
-	spin_lock(&mpu->input_lock);
-	if (test_bit(MPU401_MODE_BIT_INPUT, &mpu->mode))
-		snd_mpu401_uart_input_read(mpu);
-	else
-		snd_mpu401_uart_clear_rx(mpu);
-	spin_unlock(&mpu->input_lock);
- 	/* ok. for better Tx performance try do some output when
-	 * input is done
-	 */
+static void uart_interrupt_tx(struct snd_mpu401 *mpu)
+{
 	if (test_bit(MPU401_MODE_BIT_OUTPUT, &mpu->mode) &&
 	    test_bit(MPU401_MODE_BIT_OUTPUT_TRIGGER, &mpu->mode)) {
 		spin_lock(&mpu->output_lock);
 		snd_mpu401_uart_output_write(mpu);
 		spin_unlock(&mpu->output_lock);
 	}
+}
+
+static void _snd_mpu401_uart_interrupt(struct snd_mpu401 *mpu)
+{
+	if (mpu->info_flags & MPU401_INFO_INPUT) {
+		spin_lock(&mpu->input_lock);
+		if (test_bit(MPU401_MODE_BIT_INPUT, &mpu->mode))
+			snd_mpu401_uart_input_read(mpu);
+		else
+			snd_mpu401_uart_clear_rx(mpu);
+		spin_unlock(&mpu->input_lock);
+	}
+	if (! (mpu->info_flags & MPU401_INFO_TX_IRQ))
+		/* ok. for better Tx performance try do some output
+		   when input is done */
+		uart_interrupt_tx(mpu);
 }
 
 /**
@@ -134,6 +141,27 @@ irqreturn_t snd_mpu401_uart_interrupt(in
 }
 
 EXPORT_SYMBOL(snd_mpu401_uart_interrupt);
+
+/**
+ * snd_mpu401_uart_interrupt_tx - generic MPU401-UART transmit irq handler
+ * @irq: the irq number
+ * @dev_id: mpu401 instance
+ * @regs: the reigster
+ *
+ * Processes the interrupt for MPU401-UART output.
+ */
+irqreturn_t snd_mpu401_uart_interrupt_tx(int irq, void *dev_id,
+					 struct pt_regs *regs)
+{
+	struct snd_mpu401 *mpu = dev_id;
+	
+	if (mpu == NULL)
+		return IRQ_NONE;
+	uart_interrupt_tx(mpu);
+	return IRQ_HANDLED;
+}
+
+EXPORT_SYMBOL(snd_mpu401_uart_interrupt_tx);
 
 /*
  * timer callback
@@ -430,14 +458,16 @@ snd_mpu401_uart_output_trigger(struct sn
 		 * since the output timer might have been removed in
 		 * snd_mpu401_uart_output_write().
 		 */
-		snd_mpu401_uart_add_timer(mpu, 0);
+		if (! (mpu->info_flags & MPU401_INFO_TX_IRQ))
+			snd_mpu401_uart_add_timer(mpu, 0);
 
 		/* output pending data */
 		spin_lock_irqsave(&mpu->output_lock, flags);
 		snd_mpu401_uart_output_write(mpu);
 		spin_unlock_irqrestore(&mpu->output_lock, flags);
 	} else {
-		snd_mpu401_uart_remove_timer(mpu, 0);
+		if (! (mpu->info_flags & MPU401_INFO_TX_IRQ))
+			snd_mpu401_uart_remove_timer(mpu, 0);
 		clear_bit(MPU401_MODE_BIT_OUTPUT_TRIGGER, &mpu->mode);
 	}
 }
@@ -475,7 +505,7 @@ static void snd_mpu401_uart_free(struct 
  * @device: the device index, zero-based
  * @hardware: the hardware type, MPU401_HW_XXXX
  * @port: the base address of MPU401 port
- * @integrated: non-zero if the port was already reserved by the chip
+ * @info_flags: bitflags MPU401_INFO_XXX
  * @irq: the irq number, -1 if no interrupt for mpu
  * @irq_flags: the irq request flags (SA_XXX), 0 if irq was already reserved.
  * @rrawmidi: the pointer to store the new rawmidi instance
@@ -490,17 +520,24 @@ static void snd_mpu401_uart_free(struct 
  */
 int snd_mpu401_uart_new(struct snd_card *card, int device,
 			unsigned short hardware,
-			unsigned long port, int integrated,
+			unsigned long port,
+			unsigned int info_flags,
 			int irq, int irq_flags,
 			struct snd_rawmidi ** rrawmidi)
 {
 	struct snd_mpu401 *mpu;
 	struct snd_rawmidi *rmidi;
+	int in_enable, out_enable;
 	int err;
 
 	if (rrawmidi)
 		*rrawmidi = NULL;
-	if ((err = snd_rawmidi_new(card, "MPU-401U", device, 1, 1, &rmidi)) < 0)
+	if (! (info_flags & (MPU401_INFO_INPUT | MPU401_INFO_OUTPUT)))
+		info_flags |= MPU401_INFO_INPUT | MPU401_INFO_OUTPUT;
+	in_enable = (info_flags & MPU401_INFO_INPUT) ? 1 : 0;
+	out_enable = (info_flags & MPU401_INFO_OUTPUT) ? 1 : 0;
+	if ((err = snd_rawmidi_new(card, "MPU-401U", device,
+				   in_enable, out_enable, &rmidi)) < 0)
 		return err;
 	mpu = kzalloc(sizeof(*mpu), GFP_KERNEL);
 	if (mpu == NULL) {
@@ -514,7 +551,7 @@ int snd_mpu401_uart_new(struct snd_card 
 	spin_lock_init(&mpu->output_lock);
 	spin_lock_init(&mpu->timer_lock);
 	mpu->hardware = hardware;
-	if (!integrated) {
+	if (! (info_flags & MPU401_INFO_INTEGRATED)) {
 		int res_size = hardware == MPU401_HW_PC98II ? 4 : 2;
 		mpu->res = request_region(port, res_size, "MPU401 UART");
 		if (mpu->res == NULL) {
@@ -525,15 +562,12 @@ int snd_mpu401_uart_new(struct snd_card 
 			return -EBUSY;
 		}
 	}
-	switch (hardware) {
-	case MPU401_HW_AUREAL:
+	if (info_flags & MPU401_INFO_MMIO) {
 		mpu->write = mpu401_write_mmio;
 		mpu->read = mpu401_read_mmio;
-		break;
-	default:
+	} else {
 		mpu->write = mpu401_write_port;
 		mpu->read = mpu401_read_port;
-		break;
 	}
 	mpu->port = port;
 	if (hardware == MPU401_HW_PC98II)
@@ -549,6 +583,7 @@ int snd_mpu401_uart_new(struct snd_card 
 			return -EBUSY;
 		}
 	}
+	mpu->info_flags = info_flags;
 	mpu->irq = irq;
 	mpu->irq_flags = irq_flags;
 	if (card->shortname[0])
@@ -556,13 +591,18 @@ int snd_mpu401_uart_new(struct snd_card 
 			 card->shortname);
 	else
 		sprintf(rmidi->name, "MPU-401 MIDI %d-%d",card->number, device);
-	snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT,
-			    &snd_mpu401_uart_output);
-	snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_INPUT,
-			    &snd_mpu401_uart_input);
-	rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT |
-	                     SNDRV_RAWMIDI_INFO_INPUT |
-	                     SNDRV_RAWMIDI_INFO_DUPLEX;
+	if (out_enable) {
+		snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT,
+				    &snd_mpu401_uart_output);
+		rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT;
+	}
+	if (in_enable) {
+		snd_rawmidi_set_ops(rmidi, SNDRV_RAWMIDI_STREAM_INPUT,
+				    &snd_mpu401_uart_input);
+		rmidi->info_flags |= SNDRV_RAWMIDI_INFO_INPUT;
+		if (out_enable)
+			rmidi->info_flags |= SNDRV_RAWMIDI_INFO_DUPLEX;
+	}
 	mpu->rmidi = rmidi;
 	if (rrawmidi)
 		*rrawmidi = rmidi;
diff -r f0a0b4edd60b include/mpu401.h
--- a/include/mpu401.h	Fri May 19 12:04:22 2006 +0200
+++ b/include/mpu401.h	Fri May 19 19:14:10 2006 +0200
@@ -45,6 +45,12 @@
 #define MPU401_HW_PC98II		18	/* Roland PC98II */
 #define MPU401_HW_AUREAL		19	/* Aureal Vortex */
 
+#define MPU401_INFO_INPUT	(1 << 0)	/* input stream */
+#define MPU401_INFO_OUTPUT	(1 << 1)	/* output stream */
+#define MPU401_INFO_INTEGRATED	(1 << 2)	/* integrated h/w port */
+#define MPU401_INFO_MMIO	(1 << 3)	/* MMIO access */
+#define MPU401_INFO_TX_IRQ	(1 << 4)	/* independent TX irq */
+
 #define MPU401_MODE_BIT_INPUT		0
 #define MPU401_MODE_BIT_OUTPUT		1
 #define MPU401_MODE_BIT_INPUT_TRIGGER	2
@@ -62,6 +68,7 @@ struct snd_mpu401 {
 	struct snd_rawmidi *rmidi;
 
 	unsigned short hardware;	/* MPU401_HW_XXXX */
+	unsigned int info_flags;	/* MPU401_INFO_XXX */
 	unsigned long port;		/* base port of MPU-401 chip */
 	unsigned long cport;		/* port + 1 (usually) */
 	struct resource *res;		/* port resource */
@@ -99,13 +106,16 @@ struct snd_mpu401 {
 
  */
 
-irqreturn_t snd_mpu401_uart_interrupt(int irq, void *dev_id, struct pt_regs *regs);
+irqreturn_t snd_mpu401_uart_interrupt(int irq, void *dev_id,
+				      struct pt_regs *regs);
+irqreturn_t snd_mpu401_uart_interrupt_tx(int irq, void *dev_id,
+					 struct pt_regs *regs);
 
 int snd_mpu401_uart_new(struct snd_card *card,
 			int device,
 			unsigned short hardware,
 			unsigned long port,
-			int integrated,
+			unsigned int info_flags,
 			int irq,
 			int irq_flags,
 			struct snd_rawmidi ** rrawmidi);
diff -r f0a0b4edd60b isa/sscape.c
--- a/isa/sscape.c	Fri May 19 12:04:22 2006 +0200
+++ b/isa/sscape.c	Fri May 19 19:14:10 2006 +0200
@@ -897,10 +897,9 @@ static int __devinit create_mpu401(struc
 	struct snd_rawmidi *rawmidi;
 	int err;
 
-#define MPU401_SHARE_HARDWARE  1
 	if ((err = snd_mpu401_uart_new(card, devnum,
 	                               MPU401_HW_MPU401,
-	                               port, MPU401_SHARE_HARDWARE,
+	                               port, MPU401_INFO_INTEGRATED,
 	                               irq, SA_INTERRUPT,
 	                               &rawmidi)) == 0) {
 		struct snd_mpu401 *mpu = (struct snd_mpu401 *) rawmidi->private_data;
diff -r f0a0b4edd60b pci/als4000.c
--- a/pci/als4000.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/als4000.c	Fri May 19 19:14:10 2006 +0200
@@ -746,8 +746,8 @@ static int __devinit snd_card_als4000_pr
 		card->shortname, chip->alt_port, chip->irq);
 
 	if ((err = snd_mpu401_uart_new( card, 0, MPU401_HW_ALS4000,
-				        gcr+0x30, 1, pci->irq, 0,
-				        &chip->rmidi)) < 0) {
+				        gcr+0x30, MPU401_INFO_INTEGRATED,
+					pci->irq, 0, &chip->rmidi)) < 0) {
 		printk(KERN_ERR "als4000: no MPU-401 device at 0x%lx?\n", gcr+0x30);
 		goto out_err;
 	}
diff -r f0a0b4edd60b pci/au88x0/au88x0_mpu401.c
--- a/pci/au88x0/au88x0_mpu401.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/au88x0/au88x0_mpu401.c	Fri May 19 19:14:10 2006 +0200
@@ -95,7 +95,8 @@ static int __devinit snd_vortex_midi(vor
 	port = (unsigned long)(vortex->mmio + VORTEX_MIDI_DATA);
 	if ((temp =
 	     snd_mpu401_uart_new(vortex->card, 0, MPU401_HW_AUREAL, port,
-				 1, 0, 0, &rmidi)) != 0) {
+				 MPU401_INFO_INTEGRATED | MPU401_INFO_MMIO,
+				 0, 0, &rmidi)) != 0) {
 		hwwrite(vortex->mmio, VORTEX_CTRL,
 			(hwread(vortex->mmio, VORTEX_CTRL) &
 			 ~CTRL_MIDI_PORT) & ~CTRL_MIDI_EN);
diff -r f0a0b4edd60b pci/azt3328.c
--- a/pci/azt3328.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/azt3328.c	Fri May 19 19:14:10 2006 +0200
@@ -1806,8 +1806,8 @@ snd_azf3328_probe(struct pci_dev *pci, c
 	card->private_data = chip;
 
 	if ((err = snd_mpu401_uart_new( card, 0, MPU401_HW_MPU401,
-				        chip->mpu_port, 1, pci->irq, 0,
-				        &chip->rmidi)) < 0) {
+				        chip->mpu_port, MPU401_INFO_INTEGRATED,
+					pci->irq, 0, &chip->rmidi)) < 0) {
 		snd_printk(KERN_ERR "azf3328: no MPU-401 device at 0x%lx?\n", chip->mpu_port);
 		goto out_err;
 	}
diff -r f0a0b4edd60b pci/cmipci.c
--- a/pci/cmipci.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/cmipci.c	Fri May 19 19:14:10 2006 +0200
@@ -2981,7 +2981,9 @@ static int __devinit snd_cmipci_create(s
 
 	if (iomidi > 0) {
 		if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_CMIPCI,
-					       iomidi, integrated_midi,
+					       iomidi,
+					       (integrated_midi ?
+						MPU401_INFO_INTEGRATED : 0),
 					       cm->irq, 0, &cm->rmidi)) < 0) {
 			printk(KERN_ERR "cmipci: no UART401 device at 0x%lx\n", iomidi);
 		}
diff -r f0a0b4edd60b pci/cs5535audio/cs5535audio.c
--- a/pci/cs5535audio/cs5535audio.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/cs5535audio/cs5535audio.c	Fri May 19 19:14:10 2006 +0200
@@ -56,17 +56,16 @@ static struct ac97_quirk ac97_quirks[] _
 	{}
 };
 
-static int index = SNDRV_DEFAULT_IDX1;
-static char *id = SNDRV_DEFAULT_STR1;
-/* for backward compatibility */
-static int enable; 
-
-module_param(index, int, 0444);
+static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
+static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
+static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
+
+module_param_array(index, int, NULL, 0444);
 MODULE_PARM_DESC(index, "Index value for " DRIVER_NAME);
-module_param(id, charp, 0444);
+module_param_array(id, charp, NULL, 0444);
 MODULE_PARM_DESC(id, "ID string for " DRIVER_NAME);
-module_param(enable, bool, 0444);
-MODULE_PARM_DESC(enable, "Enable for " DRIVER_NAME);
+module_param_array(enable, bool, NULL, 0444);
+MODULE_PARM_DESC(enable, "Enable " DRIVER_NAME);
 
 static struct pci_device_id snd_cs5535audio_ids[] __devinitdata = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_NS, PCI_DEVICE_ID_NS_CS5535_AUDIO) },
@@ -358,8 +357,12 @@ static int __devinit snd_cs5535audio_pro
 
 	if (dev >= SNDRV_CARDS)
 		return -ENODEV;
-
-	card = snd_card_new(index, id, THIS_MODULE, 0);
+	if (!enable[dev]) {
+		dev++;
+		return -ENOENT;
+	}
+
+	card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
 	if (card == NULL)
 		return -ENOMEM;
 
diff -r f0a0b4edd60b pci/es1938.c
--- a/pci/es1938.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/es1938.c	Fri May 19 19:14:10 2006 +0200
@@ -1756,7 +1756,8 @@ static int __devinit snd_es1938_probe(st
 		}
 	}
 	if (snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401,
-				chip->mpu_port, 1, chip->irq, 0, &chip->rmidi) < 0) {
+				chip->mpu_port, MPU401_INFO_INTEGRATED,
+				chip->irq, 0, &chip->rmidi) < 0) {
 		printk(KERN_ERR "es1938: unable to initialize MPU-401\n");
 	} else {
 		// this line is vital for MIDI interrupt handling on ess-solo1
diff -r f0a0b4edd60b pci/es1968.c
--- a/pci/es1968.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/es1968.c	Fri May 19 19:14:10 2006 +0200
@@ -2727,7 +2727,8 @@ static int __devinit snd_es1968_probe(st
 	}
 	if (enable_mpu[dev]) {
 		if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401,
-					       chip->io_port + ESM_MPU401_PORT, 1,
+					       chip->io_port + ESM_MPU401_PORT,
+					       MPU401_INFO_INTEGRATED,
 					       chip->irq, 0, &chip->rmidi)) < 0) {
 			printk(KERN_WARNING "es1968: skipping MPU-401 MIDI support..\n");
 		}
diff -r f0a0b4edd60b pci/fm801.c
--- a/pci/fm801.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/fm801.c	Fri May 19 19:14:10 2006 +0200
@@ -1448,7 +1448,8 @@ static int __devinit snd_card_fm801_prob
 		return err;
 	}
 	if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_FM801,
-				       FM801_REG(chip, MPU401_DATA), 1,
+				       FM801_REG(chip, MPU401_DATA),
+				       MPU401_INFO_INTEGRATED,
 				       chip->irq, 0, &chip->rmidi)) < 0) {
 		snd_card_free(card);
 		return err;
diff -r f0a0b4edd60b pci/ice1712/ice1712.c
--- a/pci/ice1712/ice1712.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/ice1712/ice1712.c	Fri May 19 19:14:10 2006 +0200
@@ -2737,7 +2737,8 @@ static int __devinit snd_ice1712_probe(s
 
 	if (! c->no_mpu401) {
 		if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_ICE1712,
-					       ICEREG(ice, MPU1_CTRL), 1,
+					       ICEREG(ice, MPU1_CTRL),
+					       MPU401_INFO_INTEGRATED,
 					       ice->irq, 0,
 					       &ice->rmidi[0])) < 0) {
 			snd_card_free(card);
@@ -2752,7 +2753,8 @@ static int __devinit snd_ice1712_probe(s
 		if (ice->eeprom.data[ICE_EEP1_CODEC] & ICE1712_CFG_2xMPU401) {
 			/*  2nd port used  */
 			if ((err = snd_mpu401_uart_new(card, 1, MPU401_HW_ICE1712,
-						       ICEREG(ice, MPU2_CTRL), 1,
+						       ICEREG(ice, MPU2_CTRL),
+						       MPU401_INFO_INTEGRATED,
 						       ice->irq, 0,
 						       &ice->rmidi[1])) < 0) {
 				snd_card_free(card);
diff -r f0a0b4edd60b pci/ice1712/ice1724.c
--- a/pci/ice1712/ice1724.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/ice1712/ice1724.c	Fri May 19 19:14:10 2006 +0200
@@ -2388,7 +2388,8 @@ static int __devinit snd_vt1724_probe(st
 	if (! c->no_mpu401) {
 		if (ice->eeprom.data[ICE_EEP2_SYSCONF] & VT1724_CFG_MPU401) {
 			if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_ICE1712,
-						       ICEREG1724(ice, MPU_CTRL), 1,
+						       ICEREG1724(ice, MPU_CTRL),
+						       MPU401_INFO_INTEGRATED,
 						       ice->irq, 0,
 						       &ice->rmidi[0])) < 0) {
 				snd_card_free(card);
diff -r f0a0b4edd60b pci/maestro3.c
--- a/pci/maestro3.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/maestro3.c	Fri May 19 19:14:10 2006 +0200
@@ -2861,7 +2861,8 @@ snd_m3_probe(struct pci_dev *pci, const 
 #if 0 /* TODO: not supported yet */
 	/* TODO enable MIDI IRQ and I/O */
 	err = snd_mpu401_uart_new(chip->card, 0, MPU401_HW_MPU401,
-				  chip->iobase + MPU401_DATA_PORT, 1,
+				  chip->iobase + MPU401_DATA_PORT,
+				  MPU401_INFO_INTEGRATED,
 				  chip->irq, 0, &chip->rmidi);
 	if (err < 0)
 		printk(KERN_WARNING "maestro3: no MIDI support.\n");
diff -r f0a0b4edd60b pci/sonicvibes.c
--- a/pci/sonicvibes.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/sonicvibes.c	Fri May 19 19:14:10 2006 +0200
@@ -1456,7 +1456,7 @@ static int __devinit snd_sonic_probe(str
 		return err;
 	}
 	if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_SONICVIBES,
-				       sonic->midi_port, 1,
+				       sonic->midi_port, MPU401_INFO_INTEGRATED,
 				       sonic->irq, 0,
 				       &midi_uart)) < 0) {
 		snd_card_free(card);
diff -r f0a0b4edd60b pci/trident/trident.c
--- a/pci/trident/trident.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/trident/trident.c	Fri May 19 19:14:10 2006 +0200
@@ -148,7 +148,8 @@ static int __devinit snd_trident_probe(s
 	}
 	if (trident->device != TRIDENT_DEVICE_ID_SI7018 &&
 	    (err = snd_mpu401_uart_new(card, 0, MPU401_HW_TRID4DWAVE,
-				       trident->midi_port, 1,
+				       trident->midi_port,
+				       MPU401_INFO_INTEGRATED,
 				       trident->irq, 0, &trident->rmidi)) < 0) {
 		snd_card_free(card);
 		return err;
diff -r f0a0b4edd60b pci/via82xx.c
--- a/pci/via82xx.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/via82xx.c	Fri May 19 19:14:10 2006 +0200
@@ -1973,7 +1973,7 @@ static int __devinit snd_via686_init_mis
 	pci_write_config_byte(chip->pci, VIA_PNP_CONTROL, legacy_cfg);
 	if (chip->mpu_res) {
 		if (snd_mpu401_uart_new(chip->card, 0, MPU401_HW_VIA686A,
-					mpu_port, 1,
+					mpu_port, MPU401_INFO_INTEGRATED,
 					chip->irq, 0, &chip->rmidi) < 0) {
 			printk(KERN_WARNING "unable to initialize MPU-401"
 			       " at 0x%lx, skipping\n", mpu_port);
diff -r f0a0b4edd60b pci/ymfpci/ymfpci.c
--- a/pci/ymfpci/ymfpci.c	Fri May 19 12:04:22 2006 +0200
+++ b/pci/ymfpci/ymfpci.c	Fri May 19 19:14:10 2006 +0200
@@ -308,7 +308,8 @@ static int __devinit snd_card_ymfpci_pro
 	}
 	if (chip->mpu_res) {
 		if ((err = snd_mpu401_uart_new(card, 0, MPU401_HW_YMFPCI,
-					       mpu_port[dev], 1,
+					       mpu_port[dev],
+					       MPU401_INFO_INTEGRATED,
 					       pci->irq, 0, &chip->rawmidi)) < 0) {
 			printk(KERN_WARNING "ymfpci: cannot initialize MPU401 at 0x%lx, skipping...\n", mpu_port[dev]);
 			legacy_ctrl &= ~YMFPCI_LEGACY_MIEN; /* disable MPU401 irq */


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux