Loading Documentation/DocBook/writing-an-alsa-driver.tmpl +21 −15 Original line number Original line Diff line number Diff line Loading @@ -4288,7 +4288,7 @@ struct _snd_pcm_runtime { <![CDATA[ <![CDATA[ struct snd_rawmidi *rmidi; struct snd_rawmidi *rmidi; snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, port, info_flags, snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, port, info_flags, irq, irq_flags, &rmidi); irq, &rmidi); ]]> ]]> </programlisting> </programlisting> </informalexample> </informalexample> Loading Loading @@ -4343,6 +4343,13 @@ struct _snd_pcm_runtime { by itself to start processing the output stream in the irq handler. by itself to start processing the output stream in the irq handler. </para> </para> <para> If the MPU-401 interface shares its interrupt with the other logical devices on the card, set <constant>MPU401_INFO_IRQ_HOOK</constant> (see <link linkend="midi-interface-interrupt-handler"><citetitle> below</citetitle></link>). </para> <para> <para> Usually, the port address corresponds to the command port and Usually, the port address corresponds to the command port and port + 1 corresponds to the data port. If not, you may change port + 1 corresponds to the data port. If not, you may change Loading Loading @@ -4375,14 +4382,12 @@ struct _snd_pcm_runtime { </para> </para> <para> <para> The 6th argument specifies the irq number for UART. If the irq The 6th argument specifies the ISA irq number that will be is already allocated, pass 0 to the 7th argument allocated. If no interrupt is to be allocated (because your (<parameter>irq_flags</parameter>). Otherwise, pass the flags code is already allocating a shared interrupt, or because the for irq allocation device does not use interrupts), pass -1 instead. (<constant>SA_XXX</constant> bits) to it, and the irq will be For a MPU-401 device without an interrupt, a polling timer reserved by the mpu401-uart layer. If the card doesn't generate will be used instead. UART interrupts, pass -1 as the irq number. Then a timer interrupt will be invoked for polling. </para> </para> </section> </section> Loading @@ -4390,12 +4395,13 @@ struct _snd_pcm_runtime { <title>Interrupt Handler</title> <title>Interrupt Handler</title> <para> <para> When the interrupt is allocated in When the interrupt is allocated in <function>snd_mpu401_uart_new()</function>, the private <function>snd_mpu401_uart_new()</function>, an exclusive ISA interrupt handler is used, hence you don't have anything else to do interrupt handler is automatically used, hence you don't have than creating the mpu401 stuff. Otherwise, you have to call anything else to do than creating the mpu401 stuff. Otherwise, you <function>snd_mpu401_uart_interrupt()</function> explicitly when have to set <constant>MPU401_INFO_IRQ_HOOK</constant>, and call a UART interrupt is invoked and checked in your own interrupt <function>snd_mpu401_uart_interrupt()</function> explicitly from your handler. own interrupt handler when it has determined that a UART interrupt has occurred. </para> </para> <para> <para> Loading MAINTAINERS +1 −1 Original line number Original line Diff line number Diff line Loading @@ -5990,7 +5990,7 @@ M: Jaroslav Kysela <perex@perex.cz> M: Takashi Iwai <tiwai@suse.de> M: Takashi Iwai <tiwai@suse.de> L: alsa-devel@alsa-project.org (moderated for non-subscribers) L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://www.alsa-project.org/ W: http://www.alsa-project.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git T: git git://git.alsa-project.org/alsa-kernel.git T: git git://git.alsa-project.org/alsa-kernel.git S: Maintained S: Maintained F: Documentation/sound/ F: Documentation/sound/ Loading include/linux/usb/ch9.h +11 −6 Original line number Original line Diff line number Diff line Loading @@ -377,12 +377,6 @@ struct usb_endpoint_descriptor { #define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ #define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ #define USB_ENDPOINT_DIR_MASK 0x80 #define USB_ENDPOINT_DIR_MASK 0x80 #define USB_ENDPOINT_SYNCTYPE 0x0c #define USB_ENDPOINT_SYNC_NONE (0 << 2) #define USB_ENDPOINT_SYNC_ASYNC (1 << 2) #define USB_ENDPOINT_SYNC_ADAPTIVE (2 << 2) #define USB_ENDPOINT_SYNC_SYNC (3 << 2) #define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ #define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ #define USB_ENDPOINT_XFER_CONTROL 0 #define USB_ENDPOINT_XFER_CONTROL 0 #define USB_ENDPOINT_XFER_ISOC 1 #define USB_ENDPOINT_XFER_ISOC 1 Loading @@ -390,6 +384,17 @@ struct usb_endpoint_descriptor { #define USB_ENDPOINT_XFER_INT 3 #define USB_ENDPOINT_XFER_INT 3 #define USB_ENDPOINT_MAX_ADJUSTABLE 0x80 #define USB_ENDPOINT_MAX_ADJUSTABLE 0x80 #define USB_ENDPOINT_SYNCTYPE 0x0c #define USB_ENDPOINT_SYNC_NONE (0 << 2) #define USB_ENDPOINT_SYNC_ASYNC (1 << 2) #define USB_ENDPOINT_SYNC_ADAPTIVE (2 << 2) #define USB_ENDPOINT_SYNC_SYNC (3 << 2) #define USB_ENDPOINT_USAGE_MASK 0x30 #define USB_ENDPOINT_USAGE_DATA 0x00 #define USB_ENDPOINT_USAGE_FEEDBACK 0x10 #define USB_ENDPOINT_USAGE_IMPLICIT_FB 0x20 /* Implicit feedback Data endpoint */ /*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/ /** /** Loading include/sound/asound.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -706,7 +706,7 @@ struct snd_timer_tread { * * * * ****************************************************************************/ ****************************************************************************/ #define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 6) #define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7) struct snd_ctl_card_info { struct snd_ctl_card_info { int card; /* card number */ int card; /* card number */ Loading Loading @@ -803,6 +803,8 @@ struct snd_ctl_elem_info { unsigned int items; /* R: number of items */ unsigned int items; /* R: number of items */ unsigned int item; /* W: item number */ unsigned int item; /* W: item number */ char name[64]; /* R: value name */ char name[64]; /* R: value name */ __u64 names_ptr; /* W: names list (ELEM_ADD only) */ unsigned int names_length; } enumerated; } enumerated; unsigned char reserved[128]; unsigned char reserved[128]; } value; } value; Loading include/sound/mpu401.h +4 −3 Original line number Original line Diff line number Diff line Loading @@ -50,7 +50,10 @@ #define MPU401_INFO_INTEGRATED (1 << 2) /* integrated h/w port */ #define MPU401_INFO_INTEGRATED (1 << 2) /* integrated h/w port */ #define MPU401_INFO_MMIO (1 << 3) /* MMIO access */ #define MPU401_INFO_MMIO (1 << 3) /* MMIO access */ #define MPU401_INFO_TX_IRQ (1 << 4) /* independent TX irq */ #define MPU401_INFO_TX_IRQ (1 << 4) /* independent TX irq */ #define MPU401_INFO_IRQ_HOOK (1 << 5) /* mpu401 irq handler is called from driver irq handler */ #define MPU401_INFO_NO_ACK (1 << 6) /* No ACK cmd needed */ #define MPU401_INFO_NO_ACK (1 << 6) /* No ACK cmd needed */ #define MPU401_INFO_USE_TIMER (1 << 15) /* internal */ #define MPU401_MODE_BIT_INPUT 0 #define MPU401_MODE_BIT_INPUT 0 #define MPU401_MODE_BIT_OUTPUT 1 #define MPU401_MODE_BIT_OUTPUT 1 Loading @@ -73,8 +76,7 @@ struct snd_mpu401 { unsigned long port; /* base port of MPU-401 chip */ unsigned long port; /* base port of MPU-401 chip */ unsigned long cport; /* port + 1 (usually) */ unsigned long cport; /* port + 1 (usually) */ struct resource *res; /* port resource */ struct resource *res; /* port resource */ int irq; /* IRQ number of MPU-401 chip (-1 = poll) */ int irq; /* IRQ number of MPU-401 chip */ int irq_flags; unsigned long mode; /* MPU401_MODE_XXXX */ unsigned long mode; /* MPU401_MODE_XXXX */ int timer_invoked; int timer_invoked; Loading Loading @@ -131,7 +133,6 @@ int snd_mpu401_uart_new(struct snd_card *card, unsigned long port, unsigned long port, unsigned int info_flags, unsigned int info_flags, int irq, int irq, int irq_flags, struct snd_rawmidi ** rrawmidi); struct snd_rawmidi ** rrawmidi); #endif /* __SOUND_MPU401_H */ #endif /* __SOUND_MPU401_H */ Loading
Documentation/DocBook/writing-an-alsa-driver.tmpl +21 −15 Original line number Original line Diff line number Diff line Loading @@ -4288,7 +4288,7 @@ struct _snd_pcm_runtime { <![CDATA[ <![CDATA[ struct snd_rawmidi *rmidi; struct snd_rawmidi *rmidi; snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, port, info_flags, snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, port, info_flags, irq, irq_flags, &rmidi); irq, &rmidi); ]]> ]]> </programlisting> </programlisting> </informalexample> </informalexample> Loading Loading @@ -4343,6 +4343,13 @@ struct _snd_pcm_runtime { by itself to start processing the output stream in the irq handler. by itself to start processing the output stream in the irq handler. </para> </para> <para> If the MPU-401 interface shares its interrupt with the other logical devices on the card, set <constant>MPU401_INFO_IRQ_HOOK</constant> (see <link linkend="midi-interface-interrupt-handler"><citetitle> below</citetitle></link>). </para> <para> <para> Usually, the port address corresponds to the command port and Usually, the port address corresponds to the command port and port + 1 corresponds to the data port. If not, you may change port + 1 corresponds to the data port. If not, you may change Loading Loading @@ -4375,14 +4382,12 @@ struct _snd_pcm_runtime { </para> </para> <para> <para> The 6th argument specifies the irq number for UART. If the irq The 6th argument specifies the ISA irq number that will be is already allocated, pass 0 to the 7th argument allocated. If no interrupt is to be allocated (because your (<parameter>irq_flags</parameter>). Otherwise, pass the flags code is already allocating a shared interrupt, or because the for irq allocation device does not use interrupts), pass -1 instead. (<constant>SA_XXX</constant> bits) to it, and the irq will be For a MPU-401 device without an interrupt, a polling timer reserved by the mpu401-uart layer. If the card doesn't generate will be used instead. UART interrupts, pass -1 as the irq number. Then a timer interrupt will be invoked for polling. </para> </para> </section> </section> Loading @@ -4390,12 +4395,13 @@ struct _snd_pcm_runtime { <title>Interrupt Handler</title> <title>Interrupt Handler</title> <para> <para> When the interrupt is allocated in When the interrupt is allocated in <function>snd_mpu401_uart_new()</function>, the private <function>snd_mpu401_uart_new()</function>, an exclusive ISA interrupt handler is used, hence you don't have anything else to do interrupt handler is automatically used, hence you don't have than creating the mpu401 stuff. Otherwise, you have to call anything else to do than creating the mpu401 stuff. Otherwise, you <function>snd_mpu401_uart_interrupt()</function> explicitly when have to set <constant>MPU401_INFO_IRQ_HOOK</constant>, and call a UART interrupt is invoked and checked in your own interrupt <function>snd_mpu401_uart_interrupt()</function> explicitly from your handler. own interrupt handler when it has determined that a UART interrupt has occurred. </para> </para> <para> <para> Loading
MAINTAINERS +1 −1 Original line number Original line Diff line number Diff line Loading @@ -5990,7 +5990,7 @@ M: Jaroslav Kysela <perex@perex.cz> M: Takashi Iwai <tiwai@suse.de> M: Takashi Iwai <tiwai@suse.de> L: alsa-devel@alsa-project.org (moderated for non-subscribers) L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://www.alsa-project.org/ W: http://www.alsa-project.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git T: git git://git.alsa-project.org/alsa-kernel.git T: git git://git.alsa-project.org/alsa-kernel.git S: Maintained S: Maintained F: Documentation/sound/ F: Documentation/sound/ Loading
include/linux/usb/ch9.h +11 −6 Original line number Original line Diff line number Diff line Loading @@ -377,12 +377,6 @@ struct usb_endpoint_descriptor { #define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ #define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ #define USB_ENDPOINT_DIR_MASK 0x80 #define USB_ENDPOINT_DIR_MASK 0x80 #define USB_ENDPOINT_SYNCTYPE 0x0c #define USB_ENDPOINT_SYNC_NONE (0 << 2) #define USB_ENDPOINT_SYNC_ASYNC (1 << 2) #define USB_ENDPOINT_SYNC_ADAPTIVE (2 << 2) #define USB_ENDPOINT_SYNC_SYNC (3 << 2) #define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ #define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ #define USB_ENDPOINT_XFER_CONTROL 0 #define USB_ENDPOINT_XFER_CONTROL 0 #define USB_ENDPOINT_XFER_ISOC 1 #define USB_ENDPOINT_XFER_ISOC 1 Loading @@ -390,6 +384,17 @@ struct usb_endpoint_descriptor { #define USB_ENDPOINT_XFER_INT 3 #define USB_ENDPOINT_XFER_INT 3 #define USB_ENDPOINT_MAX_ADJUSTABLE 0x80 #define USB_ENDPOINT_MAX_ADJUSTABLE 0x80 #define USB_ENDPOINT_SYNCTYPE 0x0c #define USB_ENDPOINT_SYNC_NONE (0 << 2) #define USB_ENDPOINT_SYNC_ASYNC (1 << 2) #define USB_ENDPOINT_SYNC_ADAPTIVE (2 << 2) #define USB_ENDPOINT_SYNC_SYNC (3 << 2) #define USB_ENDPOINT_USAGE_MASK 0x30 #define USB_ENDPOINT_USAGE_DATA 0x00 #define USB_ENDPOINT_USAGE_FEEDBACK 0x10 #define USB_ENDPOINT_USAGE_IMPLICIT_FB 0x20 /* Implicit feedback Data endpoint */ /*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/ /** /** Loading
include/sound/asound.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -706,7 +706,7 @@ struct snd_timer_tread { * * * * ****************************************************************************/ ****************************************************************************/ #define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 6) #define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7) struct snd_ctl_card_info { struct snd_ctl_card_info { int card; /* card number */ int card; /* card number */ Loading Loading @@ -803,6 +803,8 @@ struct snd_ctl_elem_info { unsigned int items; /* R: number of items */ unsigned int items; /* R: number of items */ unsigned int item; /* W: item number */ unsigned int item; /* W: item number */ char name[64]; /* R: value name */ char name[64]; /* R: value name */ __u64 names_ptr; /* W: names list (ELEM_ADD only) */ unsigned int names_length; } enumerated; } enumerated; unsigned char reserved[128]; unsigned char reserved[128]; } value; } value; Loading
include/sound/mpu401.h +4 −3 Original line number Original line Diff line number Diff line Loading @@ -50,7 +50,10 @@ #define MPU401_INFO_INTEGRATED (1 << 2) /* integrated h/w port */ #define MPU401_INFO_INTEGRATED (1 << 2) /* integrated h/w port */ #define MPU401_INFO_MMIO (1 << 3) /* MMIO access */ #define MPU401_INFO_MMIO (1 << 3) /* MMIO access */ #define MPU401_INFO_TX_IRQ (1 << 4) /* independent TX irq */ #define MPU401_INFO_TX_IRQ (1 << 4) /* independent TX irq */ #define MPU401_INFO_IRQ_HOOK (1 << 5) /* mpu401 irq handler is called from driver irq handler */ #define MPU401_INFO_NO_ACK (1 << 6) /* No ACK cmd needed */ #define MPU401_INFO_NO_ACK (1 << 6) /* No ACK cmd needed */ #define MPU401_INFO_USE_TIMER (1 << 15) /* internal */ #define MPU401_MODE_BIT_INPUT 0 #define MPU401_MODE_BIT_INPUT 0 #define MPU401_MODE_BIT_OUTPUT 1 #define MPU401_MODE_BIT_OUTPUT 1 Loading @@ -73,8 +76,7 @@ struct snd_mpu401 { unsigned long port; /* base port of MPU-401 chip */ unsigned long port; /* base port of MPU-401 chip */ unsigned long cport; /* port + 1 (usually) */ unsigned long cport; /* port + 1 (usually) */ struct resource *res; /* port resource */ struct resource *res; /* port resource */ int irq; /* IRQ number of MPU-401 chip (-1 = poll) */ int irq; /* IRQ number of MPU-401 chip */ int irq_flags; unsigned long mode; /* MPU401_MODE_XXXX */ unsigned long mode; /* MPU401_MODE_XXXX */ int timer_invoked; int timer_invoked; Loading Loading @@ -131,7 +133,6 @@ int snd_mpu401_uart_new(struct snd_card *card, unsigned long port, unsigned long port, unsigned int info_flags, unsigned int info_flags, int irq, int irq, int irq_flags, struct snd_rawmidi ** rrawmidi); struct snd_rawmidi ** rrawmidi); #endif /* __SOUND_MPU401_H */ #endif /* __SOUND_MPU401_H */