Lines Matching refs:emu

15 static inline unsigned char mpu401_read(struct snd_emu10k1 *emu,
18 if (emu->audigy)
19 return (unsigned char)snd_emu10k1_ptr_read(emu, mpu->port + idx, 0);
21 return inb(emu->port + mpu->port + idx);
24 static inline void mpu401_write(struct snd_emu10k1 *emu,
27 if (emu->audigy)
28 snd_emu10k1_ptr_write(emu, mpu->port + idx, 0, data);
30 outb(data, emu->port + mpu->port + idx);
33 #define mpu401_write_data(emu, mpu, data) mpu401_write(emu, mpu, data, 0)
34 #define mpu401_write_cmd(emu, mpu, data) mpu401_write(emu, mpu, data, 1)
35 #define mpu401_read_data(emu, mpu) mpu401_read(emu, mpu, 0)
36 #define mpu401_read_stat(emu, mpu) mpu401_read(emu, mpu, 1)
38 #define mpu401_input_avail(emu,mpu) (!(mpu401_read_stat(emu,mpu) & 0x80))
39 #define mpu401_output_ready(emu,mpu) (!(mpu401_read_stat(emu,mpu) & 0x40))
45 static void mpu401_clear_rx(struct snd_emu10k1 *emu, struct snd_emu10k1_midi *mpu)
48 for (; timeout > 0 && mpu401_input_avail(emu, mpu); timeout--)
49 mpu401_read_data(emu, mpu);
52 dev_err(emu->card->dev,
54 mpu401_read_stat(emu, mpu));
62 static void do_emu10k1_midi_interrupt(struct snd_emu10k1 *emu, struct snd_emu10k1_midi *midi, unsigned int status)
67 snd_emu10k1_intr_disable(emu, midi->tx_enable | midi->rx_enable);
72 if ((status & midi->ipr_rx) && mpu401_input_avail(emu, midi)) {
74 mpu401_clear_rx(emu, midi);
76 byte = mpu401_read_data(emu, midi);
84 if ((status & midi->ipr_tx) && mpu401_output_ready(emu, midi)) {
87 mpu401_write_data(emu, midi, byte);
89 snd_emu10k1_intr_disable(emu, midi->tx_enable);
95 static void snd_emu10k1_midi_interrupt(struct snd_emu10k1 *emu, unsigned int status)
97 do_emu10k1_midi_interrupt(emu, &emu->midi, status);
100 static void snd_emu10k1_midi_interrupt2(struct snd_emu10k1 *emu, unsigned int status)
102 do_emu10k1_midi_interrupt(emu, &emu->midi2, status);
105 static int snd_emu10k1_midi_cmd(struct snd_emu10k1 * emu, struct snd_emu10k1_midi *midi, unsigned char cmd, int ack)
111 mpu401_write_data(emu, midi, 0x00);
112 /* mpu401_clear_rx(emu, midi); */
114 mpu401_write_cmd(emu, midi, cmd);
119 if (mpu401_input_avail(emu, midi)) {
120 if (mpu401_read_data(emu, midi) == MPU401_ACK)
124 if (!ok && mpu401_read_data(emu, midi) == MPU401_ACK)
131 dev_err(emu->card->dev,
133 cmd, emu->port,
134 mpu401_read_stat(emu, midi),
135 mpu401_read_data(emu, midi));
143 struct snd_emu10k1 *emu;
147 emu = midi->emu;
148 if (snd_BUG_ON(!emu))
155 if (snd_emu10k1_midi_cmd(emu, midi, MPU401_RESET, 1))
157 if (snd_emu10k1_midi_cmd(emu, midi, MPU401_ENTER_UART, 1))
170 struct snd_emu10k1 *emu;
174 emu = midi->emu;
175 if (snd_BUG_ON(!emu))
182 if (snd_emu10k1_midi_cmd(emu, midi, MPU401_RESET, 1))
184 if (snd_emu10k1_midi_cmd(emu, midi, MPU401_ENTER_UART, 1))
197 struct snd_emu10k1 *emu;
202 emu = midi->emu;
203 if (snd_BUG_ON(!emu))
206 snd_emu10k1_intr_disable(emu, midi->rx_enable);
211 err = snd_emu10k1_midi_cmd(emu, midi, MPU401_RESET, 0);
220 struct snd_emu10k1 *emu;
225 emu = midi->emu;
226 if (snd_BUG_ON(!emu))
229 snd_emu10k1_intr_disable(emu, midi->tx_enable);
234 err = snd_emu10k1_midi_cmd(emu, midi, MPU401_RESET, 0);
243 struct snd_emu10k1 *emu;
245 emu = midi->emu;
246 if (snd_BUG_ON(!emu))
250 snd_emu10k1_intr_enable(emu, midi->rx_enable);
252 snd_emu10k1_intr_disable(emu, midi->rx_enable);
257 struct snd_emu10k1 *emu;
261 emu = midi->emu;
262 if (snd_BUG_ON(!emu))
272 if (mpu401_output_ready(emu, midi)) {
279 mpu401_write_data(emu, midi, byte);
286 snd_emu10k1_intr_enable(emu, midi->tx_enable);
288 snd_emu10k1_intr_disable(emu, midi->tx_enable);
317 static int emu10k1_midi_init(struct snd_emu10k1 *emu, struct snd_emu10k1_midi *midi, int device, char *name)
322 if ((err = snd_rawmidi_new(emu->card, name, device, 1, 1, &rmidi)) < 0)
324 midi->emu = emu;
340 int snd_emu10k1_midi(struct snd_emu10k1 *emu)
342 struct snd_emu10k1_midi *midi = &emu->midi;
345 if ((err = emu10k1_midi_init(emu, midi, 0, "EMU10K1 MPU-401 (UART)")) < 0)
357 int snd_emu10k1_audigy_midi(struct snd_emu10k1 *emu)
362 midi = &emu->midi;
363 if ((err = emu10k1_midi_init(emu, midi, 0, "Audigy MPU-401 (UART)")) < 0)
373 midi = &emu->midi2;
374 if ((err = emu10k1_midi_init(emu, midi, 1, "Audigy MPU-401 #2")) < 0)