Lines Matching refs:chip

32 static int read_dsp(struct echoaudio *chip, u32 *data);
33 static int set_professional_spdif(struct echoaudio *chip, char prof);
34 static int load_asic_generic(struct echoaudio *chip, u32 cmd, short asic);
35 static int check_asic_status(struct echoaudio *chip);
36 static int update_flags(struct echoaudio *chip);
39 static int init_hw(struct echoaudio *chip, u16 device_id, u16 subdevice_id) in init_hw() argument
46 if ((err = init_dsp_comm_page(chip))) { in init_hw()
47 dev_err(chip->card->dev, in init_hw()
52 chip->device_id = device_id; in init_hw()
53 chip->subdevice_id = subdevice_id; in init_hw()
54 chip->bad_board = TRUE; in init_hw()
55 chip->has_midi = TRUE; in init_hw()
56 chip->dsp_code_to_load = FW_LAYLA20_DSP; in init_hw()
57 chip->input_clock_types = in init_hw()
60 chip->output_clock_types = in init_hw()
63 if ((err = load_firmware(chip)) < 0) in init_hw()
65 chip->bad_board = FALSE; in init_hw()
72 static int set_mixer_defaults(struct echoaudio *chip) in set_mixer_defaults() argument
74 chip->professional_spdif = FALSE; in set_mixer_defaults()
75 return init_line_levels(chip); in set_mixer_defaults()
80 static u32 detect_input_clocks(const struct echoaudio *chip) in detect_input_clocks() argument
85 clocks_from_dsp = le32_to_cpu(chip->comm_page->status_clocks); in detect_input_clocks()
111 static int check_asic_status(struct echoaudio *chip) in check_asic_status() argument
116 chip->asic_loaded = FALSE; in check_asic_status()
118 send_vector(chip, DSP_VC_TEST_ASIC); in check_asic_status()
122 if (read_dsp(chip, &asic_status) < 0) { in check_asic_status()
123 dev_err(chip->card->dev, in check_asic_status()
130 chip->asic_loaded = TRUE; in check_asic_status()
141 static int load_asic(struct echoaudio *chip) in load_asic() argument
145 if (chip->asic_loaded) in load_asic()
148 err = load_asic_generic(chip, DSP_FNC_LOAD_LAYLA_ASIC, in load_asic()
154 return check_asic_status(chip); in load_asic()
159 static int set_sample_rate(struct echoaudio *chip, u32 rate) in set_sample_rate() argument
166 if (chip->input_clock != ECHO_CLOCK_INTERNAL) { in set_sample_rate()
167 dev_warn(chip->card->dev, in set_sample_rate()
169 chip->comm_page->sample_rate = cpu_to_le32(rate); in set_sample_rate()
170 chip->sample_rate = rate; in set_sample_rate()
174 if (wait_handshake(chip)) in set_sample_rate()
177 dev_dbg(chip->card->dev, "set_sample_rate(%d)\n", rate); in set_sample_rate()
178 chip->sample_rate = rate; in set_sample_rate()
179 chip->comm_page->sample_rate = cpu_to_le32(rate); in set_sample_rate()
180 clear_handshake(chip); in set_sample_rate()
181 return send_vector(chip, DSP_VC_SET_LAYLA_SAMPLE_RATE); in set_sample_rate()
186 static int set_input_clock(struct echoaudio *chip, u16 clock_source) in set_input_clock() argument
194 rate = chip->sample_rate; in set_input_clock()
207 dev_err(chip->card->dev, in set_input_clock()
212 chip->input_clock = clock_source; in set_input_clock()
214 chip->comm_page->input_clock = cpu_to_le16(clock); in set_input_clock()
215 clear_handshake(chip); in set_input_clock()
216 send_vector(chip, DSP_VC_UPDATE_CLOCKS); in set_input_clock()
219 set_sample_rate(chip, rate); in set_input_clock()
226 static int set_output_clock(struct echoaudio *chip, u16 clock) in set_output_clock() argument
236 dev_err(chip->card->dev, "set_output_clock wrong clock\n"); in set_output_clock()
240 if (wait_handshake(chip)) in set_output_clock()
243 chip->comm_page->output_clock = cpu_to_le16(clock); in set_output_clock()
244 chip->output_clock = clock; in set_output_clock()
245 clear_handshake(chip); in set_output_clock()
246 return send_vector(chip, DSP_VC_UPDATE_CLOCKS); in set_output_clock()
252 static int set_input_gain(struct echoaudio *chip, u16 input, int gain) in set_input_gain() argument
254 if (snd_BUG_ON(input >= num_busses_in(chip))) in set_input_gain()
257 if (wait_handshake(chip)) in set_input_gain()
260 chip->input_gain[input] = gain; in set_input_gain()
262 chip->comm_page->line_in_level[input] = gain; in set_input_gain()
269 static int update_flags(struct echoaudio *chip) in update_flags() argument
271 if (wait_handshake(chip)) in update_flags()
273 clear_handshake(chip); in update_flags()
274 return send_vector(chip, DSP_VC_UPDATE_FLAGS); in update_flags()
279 static int set_professional_spdif(struct echoaudio *chip, char prof) in set_professional_spdif() argument
282 chip->comm_page->flags |= in set_professional_spdif()
285 chip->comm_page->flags &= in set_professional_spdif()
287 chip->professional_spdif = prof; in set_professional_spdif()
288 return update_flags(chip); in set_professional_spdif()