Lines Matching refs:chip

32 static int write_control_reg(struct echoaudio *chip, u32 value, char force);
33 static int set_input_clock(struct echoaudio *chip, u16 clock);
34 static int set_professional_spdif(struct echoaudio *chip, char prof);
35 static int set_digital_mode(struct echoaudio *chip, u8 mode);
36 static int load_asic_generic(struct echoaudio *chip, u32 cmd, short asic);
37 static int check_asic_status(struct echoaudio *chip);
40 static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id)
47 err = init_dsp_comm_page(chip);
49 dev_err(chip->card->dev,
54 chip->device_id = device_id;
55 chip->subdevice_id = subdevice_id;
56 chip->bad_board = true;
57 chip->input_clock_types =
60 chip->digital_modes =
66 if (chip->device_id == DEVICE_ID_56361)
67 chip->dsp_code_to_load = FW_MONA_361_DSP;
69 chip->dsp_code_to_load = FW_MONA_301_DSP;
71 err = load_firmware(chip);
74 chip->bad_board = false;
81 static int set_mixer_defaults(struct echoaudio *chip)
83 chip->digital_mode = DIGITAL_MODE_SPDIF_RCA;
84 chip->professional_spdif = false;
85 chip->digital_in_automute = true;
86 return init_line_levels(chip);
91 static u32 detect_input_clocks(const struct echoaudio *chip)
97 clocks_from_dsp = le32_to_cpu(chip->comm_page->status_clocks);
117 static int load_asic(struct echoaudio *chip)
123 if (chip->asic_loaded)
128 if (chip->device_id == DEVICE_ID_56361)
133 err = load_asic_generic(chip, DSP_FNC_LOAD_MONA_PCI_CARD_ASIC, asic);
137 chip->asic_code = asic;
141 err = load_asic_generic(chip, DSP_FNC_LOAD_MONA_EXTERNAL_ASIC,
147 err = check_asic_status(chip);
153 err = write_control_reg(chip, control_reg, true);
164 static int switch_asic(struct echoaudio *chip, char double_speed)
172 if (chip->device_id == DEVICE_ID_56361) {
184 if (asic != chip->asic_code) {
186 err = load_asic_generic(chip, DSP_FNC_LOAD_MONA_PCI_CARD_ASIC,
190 chip->asic_code = asic;
198 static int set_sample_rate(struct echoaudio *chip, u32 rate)
205 if (chip->input_clock != ECHO_CLOCK_INTERNAL) {
206 dev_dbg(chip->card->dev,
209 chip->comm_page->sample_rate = cpu_to_le32(rate);
210 chip->sample_rate = rate;
216 if (chip->digital_mode == DIGITAL_MODE_ADAT)
218 if (chip->device_id == DEVICE_ID_56361)
223 if (chip->device_id == DEVICE_ID_56361)
230 if (asic != chip->asic_code) {
233 spin_unlock_irq(&chip->lock);
234 err = load_asic_generic(chip, DSP_FNC_LOAD_MONA_PCI_CARD_ASIC,
236 spin_lock_irq(&chip->lock);
240 chip->asic_code = asic;
246 control_reg = le32_to_cpu(chip->comm_page->control_register);
283 dev_err(chip->card->dev,
290 chip->comm_page->sample_rate = cpu_to_le32(rate); /* ignored by the DSP */
291 chip->sample_rate = rate;
292 dev_dbg(chip->card->dev,
295 return write_control_reg(chip, control_reg, force_write);
300 static int set_input_clock(struct echoaudio *chip, u16 clock)
306 control_reg = le32_to_cpu(chip->comm_page->control_register) &
308 clocks_from_dsp = le32_to_cpu(chip->comm_page->status_clocks);
312 chip->input_clock = ECHO_CLOCK_INTERNAL;
313 return set_sample_rate(chip, chip->sample_rate);
315 if (chip->digital_mode == DIGITAL_MODE_ADAT)
317 spin_unlock_irq(&chip->lock);
318 err = switch_asic(chip, clocks_from_dsp &
320 spin_lock_irq(&chip->lock);
330 spin_unlock_irq(&chip->lock);
331 err = switch_asic(chip, clocks_from_dsp &
333 spin_lock_irq(&chip->lock);
343 dev_dbg(chip->card->dev, "Set Mona clock to ADAT\n");
344 if (chip->digital_mode != DIGITAL_MODE_ADAT)
350 dev_err(chip->card->dev,
355 chip->input_clock = clock;
356 return write_control_reg(chip, control_reg, true);
361 static int dsp_set_digital_mode(struct echoaudio *chip, u8 mode)
371 if (chip->input_clock == ECHO_CLOCK_ADAT)
375 if (chip->input_clock == ECHO_CLOCK_SPDIF)
379 dev_err(chip->card->dev,
384 spin_lock_irq(&chip->lock);
387 chip->sample_rate = 48000;
388 set_input_clock(chip, ECHO_CLOCK_INTERNAL);
392 control_reg = le32_to_cpu(chip->comm_page->control_register);
406 if (chip->asic_code == FW_MONA_361_1_ASIC96 ||
407 chip->asic_code == FW_MONA_301_1_ASIC96) {
408 set_sample_rate(chip, 48000);
415 err = write_control_reg(chip, control_reg, false);
416 spin_unlock_irq(&chip->lock);
419 chip->digital_mode = mode;
421 dev_dbg(chip->card->dev, "set_digital_mode to %d\n", mode);