• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/sound/pci/echoaudio/

Lines Matching refs:chip

37 static int enable_midi_input(struct echoaudio *chip, char enable)
41 if (wait_handshake(chip))
45 chip->mtc_state = MIDI_IN_STATE_NORMAL;
46 chip->comm_page->flags |=
49 chip->comm_page->flags &=
52 clear_handshake(chip);
53 return send_vector(chip, DSP_VC_UPDATE_FLAGS);
60 static int write_midi(struct echoaudio *chip, u8 *data, int bytes)
64 if (wait_handshake(chip))
68 if (! (get_dsp_register(chip, CHI32_STATUS_REG) & CHI32_STATUS_REG_HF4))
71 chip->comm_page->midi_output[0] = bytes;
72 memcpy(&chip->comm_page->midi_output[1], data, bytes);
73 chip->comm_page->midi_out_free_count = 0;
74 clear_handshake(chip);
75 send_vector(chip, DSP_VC_MIDI_WRITE);
89 static inline int mtc_process_data(struct echoaudio *chip, short midi_byte)
91 switch (chip->mtc_state) {
94 chip->mtc_state = MIDI_IN_STATE_TS_HIGH;
97 chip->mtc_state = MIDI_IN_STATE_TS_LOW;
101 chip->mtc_state = MIDI_IN_STATE_F1_DATA;
105 chip->mtc_state = MIDI_IN_STATE_NORMAL;
115 static int midi_service_irq(struct echoaudio *chip)
120 count = le16_to_cpu(chip->comm_page->midi_input[0]);
129 midi_byte = le16_to_cpu(chip->comm_page->midi_input[i]);
137 if (mtc_process_data(chip, midi_byte) == MIDI_IN_SKIP_DATA)
140 chip->midi_buffer[received++] = (u8)midi_byte;
155 struct echoaudio *chip = substream->rmidi->private_data;
157 chip->midi_in = substream;
167 struct echoaudio *chip = substream->rmidi->private_data;
169 if (up != chip->midi_input_enabled) {
170 spin_lock_irq(&chip->lock);
171 enable_midi_input(chip, up);
172 spin_unlock_irq(&chip->lock);
173 chip->midi_input_enabled = up;
181 struct echoaudio *chip = substream->rmidi->private_data;
183 chip->midi_in = NULL;
192 struct echoaudio *chip = substream->rmidi->private_data;
194 chip->tinuse = 0;
195 chip->midi_full = 0;
196 chip->midi_out = substream;
205 struct echoaudio *chip = (struct echoaudio *)data;
214 spin_lock_irqsave(&chip->lock, flags);
215 chip->midi_full = 0;
216 if (!snd_rawmidi_transmit_empty(chip->midi_out)) {
217 bytes = snd_rawmidi_transmit_peek(chip->midi_out, buf,
220 sent = write_midi(chip, buf, bytes);
225 chip->midi_full = 1;
228 snd_rawmidi_transmit_ack(chip->midi_out, sent);
234 chip->midi_full = 1;
239 if (!snd_rawmidi_transmit_empty(chip->midi_out) && chip->tinuse) {
243 mod_timer(&chip->timer, jiffies + (time * HZ + 999) / 1000);
246 spin_unlock_irqrestore(&chip->lock, flags);
254 struct echoaudio *chip = substream->rmidi->private_data;
257 spin_lock_irq(&chip->lock);
259 if (!chip->tinuse) {
260 init_timer(&chip->timer);
261 chip->timer.function = snd_echo_midi_output_write;
262 chip->timer.data = (unsigned long)chip;
263 chip->tinuse = 1;
266 if (chip->tinuse) {
267 chip->tinuse = 0;
268 spin_unlock_irq(&chip->lock);
269 del_timer_sync(&chip->timer);
274 spin_unlock_irq(&chip->lock);
276 if (up && !chip->midi_full)
277 snd_echo_midi_output_write((unsigned long)chip);
284 struct echoaudio *chip = substream->rmidi->private_data;
286 chip->midi_out = NULL;
309 struct echoaudio *chip)
314 &chip->rmidi)) < 0)
317 strcpy(chip->rmidi->name, card->shortname);
318 chip->rmidi->private_data = chip;
320 snd_rawmidi_set_ops(chip->rmidi, SNDRV_RAWMIDI_STREAM_INPUT,
322 snd_rawmidi_set_ops(chip->rmidi, SNDRV_RAWMIDI_STREAM_OUTPUT,
325 chip->rmidi->info_flags |= SNDRV_RAWMIDI_INFO_OUTPUT |