ALSA: hda - Move some codes up to hdac_bus struct
[deliverable/linux.git] / sound / pci / hda / hda_codec.h
1 /*
2 * Universal Interface for Intel High Definition Audio Codec
3 *
4 * Copyright (c) 2004 Takashi Iwai <tiwai@suse.de>
5 *
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the Free
8 * Software Foundation; either version 2 of the License, or (at your option)
9 * any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * more details.
15 *
16 * You should have received a copy of the GNU General Public License along with
17 * this program; if not, write to the Free Software Foundation, Inc., 59
18 * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21 #ifndef __SOUND_HDA_CODEC_H
22 #define __SOUND_HDA_CODEC_H
23
24 #include <linux/kref.h>
25 #include <sound/info.h>
26 #include <sound/control.h>
27 #include <sound/pcm.h>
28 #include <sound/hwdep.h>
29 #include <sound/hdaudio.h>
30 #include <sound/hda_verbs.h>
31
32 /*
33 * generic arrays
34 */
35 struct snd_array {
36 unsigned int used;
37 unsigned int alloced;
38 unsigned int elem_size;
39 unsigned int alloc_align;
40 void *list;
41 };
42
43 void *snd_array_new(struct snd_array *array);
44 void snd_array_free(struct snd_array *array);
45 static inline void snd_array_init(struct snd_array *array, unsigned int size,
46 unsigned int align)
47 {
48 array->elem_size = size;
49 array->alloc_align = align;
50 }
51
52 static inline void *snd_array_elem(struct snd_array *array, unsigned int idx)
53 {
54 return array->list + idx * array->elem_size;
55 }
56
57 static inline unsigned int snd_array_index(struct snd_array *array, void *ptr)
58 {
59 return (unsigned long)(ptr - array->list) / array->elem_size;
60 }
61
62 /*
63 * Structures
64 */
65
66 struct hda_bus;
67 struct hda_beep;
68 struct hda_codec;
69 struct hda_pcm;
70 struct hda_pcm_stream;
71
72 /* NID type */
73 typedef u16 hda_nid_t;
74
75 /* bus operators */
76 struct hda_bus_ops {
77 /* send a single command */
78 int (*command)(struct hda_bus *bus, unsigned int cmd);
79 /* get a response from the last command */
80 unsigned int (*get_response)(struct hda_bus *bus, unsigned int addr);
81 /* free the private data */
82 void (*private_free)(struct hda_bus *);
83 /* attach a PCM stream */
84 int (*attach_pcm)(struct hda_bus *bus, struct hda_codec *codec,
85 struct hda_pcm *pcm);
86 /* reset bus for retry verb */
87 void (*bus_reset)(struct hda_bus *bus);
88 #ifdef CONFIG_SND_HDA_DSP_LOADER
89 /* prepare DSP transfer */
90 int (*load_dsp_prepare)(struct hda_bus *bus, unsigned int format,
91 unsigned int byte_size,
92 struct snd_dma_buffer *bufp);
93 /* start/stop DSP transfer */
94 void (*load_dsp_trigger)(struct hda_bus *bus, bool start);
95 /* clean up DSP transfer */
96 void (*load_dsp_cleanup)(struct hda_bus *bus,
97 struct snd_dma_buffer *dmab);
98 #endif
99 };
100
101 /*
102 * codec bus
103 *
104 * each controller needs to creata a hda_bus to assign the accessor.
105 * A hda_bus contains several codecs in the list codec_list.
106 */
107 struct hda_bus {
108 struct hdac_bus core;
109
110 struct snd_card *card;
111
112 void *private_data;
113 struct pci_dev *pci;
114 const char *modelname;
115 struct hda_bus_ops ops;
116
117 struct mutex prepare_mutex;
118
119 /* assigned PCMs */
120 DECLARE_BITMAP(pcm_dev_bits, SNDRV_PCM_DEVICES);
121
122 /* misc op flags */
123 unsigned int needs_damn_long_delay :1;
124 unsigned int allow_bus_reset:1; /* allow bus reset at fatal error */
125 /* status for codec/controller */
126 unsigned int shutdown :1; /* being unloaded */
127 unsigned int rirb_error:1; /* error in codec communication */
128 unsigned int response_reset:1; /* controller was reset */
129 unsigned int in_reset:1; /* during reset operation */
130 unsigned int no_response_fallback:1; /* don't fallback at RIRB error */
131
132 int primary_dig_out_type; /* primary digital out PCM type */
133 };
134
135 /*
136 * codec preset
137 *
138 * Known codecs have the patch to build and set up the controls/PCMs
139 * better than the generic parser.
140 */
141 struct hda_codec_preset {
142 unsigned int id;
143 unsigned int mask;
144 unsigned int subs;
145 unsigned int subs_mask;
146 unsigned int rev;
147 hda_nid_t afg, mfg;
148 const char *name;
149 int (*patch)(struct hda_codec *codec);
150 };
151
152 #define HDA_CODEC_ID_GENERIC_HDMI 0x00000101
153 #define HDA_CODEC_ID_GENERIC 0x00000201
154
155 struct hda_codec_driver {
156 struct hdac_driver core;
157 const struct hda_codec_preset *preset;
158 };
159
160 int __hda_codec_driver_register(struct hda_codec_driver *drv, const char *name,
161 struct module *owner);
162 #define hda_codec_driver_register(drv) \
163 __hda_codec_driver_register(drv, KBUILD_MODNAME, THIS_MODULE)
164 void hda_codec_driver_unregister(struct hda_codec_driver *drv);
165 #define module_hda_codec_driver(drv) \
166 module_driver(drv, hda_codec_driver_register, \
167 hda_codec_driver_unregister)
168
169 /* ops set by the preset patch */
170 struct hda_codec_ops {
171 int (*build_controls)(struct hda_codec *codec);
172 int (*build_pcms)(struct hda_codec *codec);
173 int (*init)(struct hda_codec *codec);
174 void (*free)(struct hda_codec *codec);
175 void (*unsol_event)(struct hda_codec *codec, unsigned int res);
176 void (*set_power_state)(struct hda_codec *codec, hda_nid_t fg,
177 unsigned int power_state);
178 #ifdef CONFIG_PM
179 int (*suspend)(struct hda_codec *codec);
180 int (*resume)(struct hda_codec *codec);
181 int (*check_power_status)(struct hda_codec *codec, hda_nid_t nid);
182 #endif
183 void (*reboot_notify)(struct hda_codec *codec);
184 void (*stream_pm)(struct hda_codec *codec, hda_nid_t nid, bool on);
185 };
186
187 /* record for amp information cache */
188 struct hda_cache_head {
189 u32 key:31; /* hash key */
190 u32 dirty:1;
191 u16 val; /* assigned value */
192 u16 next;
193 };
194
195 struct hda_amp_info {
196 struct hda_cache_head head;
197 u32 amp_caps; /* amp capabilities */
198 u16 vol[2]; /* current volume & mute */
199 };
200
201 struct hda_cache_rec {
202 u16 hash[64]; /* hash table for index */
203 struct snd_array buf; /* record entries */
204 };
205
206 /* PCM callbacks */
207 struct hda_pcm_ops {
208 int (*open)(struct hda_pcm_stream *info, struct hda_codec *codec,
209 struct snd_pcm_substream *substream);
210 int (*close)(struct hda_pcm_stream *info, struct hda_codec *codec,
211 struct snd_pcm_substream *substream);
212 int (*prepare)(struct hda_pcm_stream *info, struct hda_codec *codec,
213 unsigned int stream_tag, unsigned int format,
214 struct snd_pcm_substream *substream);
215 int (*cleanup)(struct hda_pcm_stream *info, struct hda_codec *codec,
216 struct snd_pcm_substream *substream);
217 unsigned int (*get_delay)(struct hda_pcm_stream *info,
218 struct hda_codec *codec,
219 struct snd_pcm_substream *substream);
220 };
221
222 /* PCM information for each substream */
223 struct hda_pcm_stream {
224 unsigned int substreams; /* number of substreams, 0 = not exist*/
225 unsigned int channels_min; /* min. number of channels */
226 unsigned int channels_max; /* max. number of channels */
227 hda_nid_t nid; /* default NID to query rates/formats/bps, or set up */
228 u32 rates; /* supported rates */
229 u64 formats; /* supported formats (SNDRV_PCM_FMTBIT_) */
230 unsigned int maxbps; /* supported max. bit per sample */
231 const struct snd_pcm_chmap_elem *chmap; /* chmap to override */
232 struct hda_pcm_ops ops;
233 };
234
235 /* PCM types */
236 enum {
237 HDA_PCM_TYPE_AUDIO,
238 HDA_PCM_TYPE_SPDIF,
239 HDA_PCM_TYPE_HDMI,
240 HDA_PCM_TYPE_MODEM,
241 HDA_PCM_NTYPES
242 };
243
244 /* for PCM creation */
245 struct hda_pcm {
246 char *name;
247 struct hda_pcm_stream stream[2];
248 unsigned int pcm_type; /* HDA_PCM_TYPE_XXX */
249 int device; /* device number to assign */
250 struct snd_pcm *pcm; /* assigned PCM instance */
251 bool own_chmap; /* codec driver provides own channel maps */
252 /* private: */
253 struct hda_codec *codec;
254 struct kref kref;
255 struct list_head list;
256 };
257
258 /* codec information */
259 struct hda_codec {
260 struct hdac_device core;
261 struct hda_bus *bus;
262 struct snd_card *card;
263 unsigned int addr; /* codec addr*/
264
265 hda_nid_t afg; /* AFG node id */
266 hda_nid_t mfg; /* MFG node id */
267
268 /* ids */
269 u8 afg_function_id;
270 u8 mfg_function_id;
271 u8 afg_unsol;
272 u8 mfg_unsol;
273 u32 vendor_id;
274 u32 subsystem_id;
275 u32 revision_id;
276 u32 probe_id; /* overridden id for probing */
277
278 /* detected preset */
279 const struct hda_codec_preset *preset;
280 const char *vendor_name; /* codec vendor name */
281 const char *chip_name; /* codec chip name */
282 const char *modelname; /* model name for preset */
283
284 /* set by patch */
285 struct hda_codec_ops patch_ops;
286
287 /* PCM to create, set by patch_ops.build_pcms callback */
288 struct list_head pcm_list_head;
289
290 /* codec specific info */
291 void *spec;
292
293 /* beep device */
294 struct hda_beep *beep;
295 unsigned int beep_mode;
296
297 /* widget capabilities cache */
298 unsigned int num_nodes;
299 hda_nid_t start_nid;
300 u32 *wcaps;
301
302 struct snd_array mixers; /* list of assigned mixer elements */
303 struct snd_array nids; /* list of mapped mixer elements */
304
305 struct hda_cache_rec amp_cache; /* cache for amp access */
306 struct hda_cache_rec cmd_cache; /* cache for other commands */
307
308 struct list_head conn_list; /* linked-list of connection-list */
309
310 struct mutex spdif_mutex;
311 struct mutex control_mutex;
312 struct mutex hash_mutex;
313 struct snd_array spdif_out;
314 unsigned int spdif_in_enable; /* SPDIF input enable? */
315 const hda_nid_t *slave_dig_outs; /* optional digital out slave widgets */
316 struct snd_array init_pins; /* initial (BIOS) pin configurations */
317 struct snd_array driver_pins; /* pin configs set by codec parser */
318 struct snd_array cvt_setups; /* audio convert setups */
319
320 struct mutex user_mutex;
321 #ifdef CONFIG_SND_HDA_RECONFIG
322 struct snd_array init_verbs; /* additional init verbs */
323 struct snd_array hints; /* additional hints */
324 struct snd_array user_pins; /* default pin configs to override */
325 #endif
326
327 #ifdef CONFIG_SND_HDA_HWDEP
328 struct snd_hwdep *hwdep; /* assigned hwdep device */
329 #endif
330
331 /* misc flags */
332 unsigned int in_freeing:1; /* being released */
333 unsigned int spdif_status_reset :1; /* needs to toggle SPDIF for each
334 * status change
335 * (e.g. Realtek codecs)
336 */
337 unsigned int pin_amp_workaround:1; /* pin out-amp takes index
338 * (e.g. Conexant codecs)
339 */
340 unsigned int single_adc_amp:1; /* adc in-amp takes no index
341 * (e.g. CX20549 codec)
342 */
343 unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
344 unsigned int pins_shutup:1; /* pins are shut up */
345 unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
346 unsigned int no_jack_detect:1; /* Machine has no jack-detection */
347 unsigned int inv_eapd:1; /* broken h/w: inverted EAPD control */
348 unsigned int inv_jack_detect:1; /* broken h/w: inverted detection bit */
349 unsigned int pcm_format_first:1; /* PCM format must be set first */
350 unsigned int epss:1; /* supporting EPSS? */
351 unsigned int cached_write:1; /* write only to caches */
352 unsigned int dp_mst:1; /* support DP1.2 Multi-stream transport */
353 unsigned int dump_coef:1; /* dump processing coefs in codec proc file */
354 unsigned int power_save_node:1; /* advanced PM for each widget */
355 #ifdef CONFIG_PM
356 unsigned int d3_stop_clk:1; /* support D3 operation without BCLK */
357 atomic_t in_pm; /* suspend/resume being performed */
358 unsigned long power_on_acct;
359 unsigned long power_off_acct;
360 unsigned long power_jiffies;
361 #endif
362
363 /* filter the requested power state per nid */
364 unsigned int (*power_filter)(struct hda_codec *codec, hda_nid_t nid,
365 unsigned int power_state);
366
367 /* codec-specific additional proc output */
368 void (*proc_widget_hook)(struct snd_info_buffer *buffer,
369 struct hda_codec *codec, hda_nid_t nid);
370
371 /* jack detection */
372 struct snd_array jacktbl;
373 unsigned long jackpoll_interval; /* In jiffies. Zero means no poll, rely on unsol events */
374 struct delayed_work jackpoll_work;
375
376 #ifdef CONFIG_SND_HDA_INPUT_JACK
377 /* jack detection */
378 struct snd_array jacks;
379 #endif
380
381 int depop_delay; /* depop delay in ms, -1 for default delay time */
382
383 /* fix-up list */
384 int fixup_id;
385 const struct hda_fixup *fixup_list;
386 const char *fixup_name;
387
388 /* additional init verbs */
389 struct snd_array verbs;
390 };
391
392 #define dev_to_hda_codec(_dev) container_of(_dev, struct hda_codec, core.dev)
393 #define hda_codec_dev(_dev) (&(_dev)->core.dev)
394
395 #define list_for_each_codec(c, bus) \
396 list_for_each_entry(c, &(bus)->core.codec_list, core.list)
397
398 /* direction */
399 enum {
400 HDA_INPUT, HDA_OUTPUT
401 };
402
403 /* snd_hda_codec_read/write optional flags */
404 #define HDA_RW_NO_RESPONSE_FALLBACK (1 << 0)
405
406 /*
407 * constructors
408 */
409 int snd_hda_bus_new(struct snd_card *card, struct hda_bus **busp);
410 int snd_hda_codec_new(struct hda_bus *bus, struct snd_card *card,
411 unsigned int codec_addr, struct hda_codec **codecp);
412 int snd_hda_codec_configure(struct hda_codec *codec);
413 int snd_hda_codec_update_widgets(struct hda_codec *codec);
414
415 /*
416 * low level functions
417 */
418 unsigned int snd_hda_codec_read(struct hda_codec *codec, hda_nid_t nid,
419 int flags,
420 unsigned int verb, unsigned int parm);
421 int snd_hda_codec_write(struct hda_codec *codec, hda_nid_t nid, int flags,
422 unsigned int verb, unsigned int parm);
423 #define snd_hda_param_read(codec, nid, param) \
424 snd_hda_codec_read(codec, nid, 0, AC_VERB_PARAMETERS, param)
425 int snd_hda_get_sub_nodes(struct hda_codec *codec, hda_nid_t nid,
426 hda_nid_t *start_id);
427 int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid,
428 hda_nid_t *conn_list, int max_conns);
429 static inline int
430 snd_hda_get_num_conns(struct hda_codec *codec, hda_nid_t nid)
431 {
432 return snd_hda_get_connections(codec, nid, NULL, 0);
433 }
434 int snd_hda_get_num_raw_conns(struct hda_codec *codec, hda_nid_t nid);
435 int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid,
436 hda_nid_t *conn_list, int max_conns);
437 int snd_hda_get_conn_list(struct hda_codec *codec, hda_nid_t nid,
438 const hda_nid_t **listp);
439 int snd_hda_override_conn_list(struct hda_codec *codec, hda_nid_t nid, int nums,
440 const hda_nid_t *list);
441 int snd_hda_get_conn_index(struct hda_codec *codec, hda_nid_t mux,
442 hda_nid_t nid, int recursive);
443 int snd_hda_get_devices(struct hda_codec *codec, hda_nid_t nid,
444 u8 *dev_list, int max_devices);
445 int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid,
446 u32 *ratesp, u64 *formatsp, unsigned int *bpsp);
447
448 struct hda_verb {
449 hda_nid_t nid;
450 u32 verb;
451 u32 param;
452 };
453
454 void snd_hda_sequence_write(struct hda_codec *codec,
455 const struct hda_verb *seq);
456
457 /* unsolicited event */
458 static inline void
459 snd_hda_queue_unsol_event(struct hda_bus *bus, u32 res, u32 res_ex)
460 {
461 snd_hdac_bus_queue_event(&bus->core, res, res_ex);
462 }
463
464 /* cached write */
465 int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid,
466 int flags, unsigned int verb, unsigned int parm);
467 void snd_hda_sequence_write_cache(struct hda_codec *codec,
468 const struct hda_verb *seq);
469 int snd_hda_codec_update_cache(struct hda_codec *codec, hda_nid_t nid,
470 int flags, unsigned int verb, unsigned int parm);
471 void snd_hda_codec_resume_cache(struct hda_codec *codec);
472 /* both for cmd & amp caches */
473 void snd_hda_codec_flush_cache(struct hda_codec *codec);
474
475 /* the struct for codec->pin_configs */
476 struct hda_pincfg {
477 hda_nid_t nid;
478 unsigned char ctrl; /* original pin control value */
479 unsigned char target; /* target pin control value */
480 unsigned int cfg; /* default configuration */
481 };
482
483 unsigned int snd_hda_codec_get_pincfg(struct hda_codec *codec, hda_nid_t nid);
484 int snd_hda_codec_set_pincfg(struct hda_codec *codec, hda_nid_t nid,
485 unsigned int cfg);
486 int snd_hda_add_pincfg(struct hda_codec *codec, struct snd_array *list,
487 hda_nid_t nid, unsigned int cfg); /* for hwdep */
488 void snd_hda_shutup_pins(struct hda_codec *codec);
489
490 /* SPDIF controls */
491 struct hda_spdif_out {
492 hda_nid_t nid; /* Converter nid values relate to */
493 unsigned int status; /* IEC958 status bits */
494 unsigned short ctls; /* SPDIF control bits */
495 };
496 struct hda_spdif_out *snd_hda_spdif_out_of_nid(struct hda_codec *codec,
497 hda_nid_t nid);
498 void snd_hda_spdif_ctls_unassign(struct hda_codec *codec, int idx);
499 void snd_hda_spdif_ctls_assign(struct hda_codec *codec, int idx, hda_nid_t nid);
500
501 /*
502 * Mixer
503 */
504 int snd_hda_codec_build_controls(struct hda_codec *codec);
505
506 /*
507 * PCM
508 */
509 int snd_hda_codec_parse_pcms(struct hda_codec *codec);
510 int snd_hda_codec_build_pcms(struct hda_codec *codec);
511
512 __printf(2, 3)
513 struct hda_pcm *snd_hda_codec_pcm_new(struct hda_codec *codec,
514 const char *fmt, ...);
515
516 static inline void snd_hda_codec_pcm_get(struct hda_pcm *pcm)
517 {
518 kref_get(&pcm->kref);
519 }
520 void snd_hda_codec_pcm_put(struct hda_pcm *pcm);
521
522 int snd_hda_codec_prepare(struct hda_codec *codec,
523 struct hda_pcm_stream *hinfo,
524 unsigned int stream,
525 unsigned int format,
526 struct snd_pcm_substream *substream);
527 void snd_hda_codec_cleanup(struct hda_codec *codec,
528 struct hda_pcm_stream *hinfo,
529 struct snd_pcm_substream *substream);
530
531 void snd_hda_codec_setup_stream(struct hda_codec *codec, hda_nid_t nid,
532 u32 stream_tag,
533 int channel_id, int format);
534 void __snd_hda_codec_cleanup_stream(struct hda_codec *codec, hda_nid_t nid,
535 int do_now);
536 #define snd_hda_codec_cleanup_stream(codec, nid) \
537 __snd_hda_codec_cleanup_stream(codec, nid, 0)
538 unsigned int snd_hda_calc_stream_format(struct hda_codec *codec,
539 unsigned int rate,
540 unsigned int channels,
541 unsigned int format,
542 unsigned int maxbps,
543 unsigned short spdif_ctls);
544 int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid,
545 unsigned int format);
546
547 extern const struct snd_pcm_chmap_elem snd_pcm_2_1_chmaps[];
548
549 /*
550 * Misc
551 */
552 void snd_hda_get_codec_name(struct hda_codec *codec, char *name, int namelen);
553 void snd_hda_codec_set_power_to_all(struct hda_codec *codec, hda_nid_t fg,
554 unsigned int power_state);
555
556 int snd_hda_lock_devices(struct hda_bus *bus);
557 void snd_hda_unlock_devices(struct hda_bus *bus);
558 void snd_hda_bus_reset(struct hda_bus *bus);
559
560 /*
561 * power management
562 */
563 extern const struct dev_pm_ops hda_codec_driver_pm;
564
565 static inline
566 int hda_call_check_power_status(struct hda_codec *codec, hda_nid_t nid)
567 {
568 #ifdef CONFIG_PM
569 if (codec->patch_ops.check_power_status)
570 return codec->patch_ops.check_power_status(codec, nid);
571 #endif
572 return 0;
573 }
574
575 /*
576 * get widget information
577 */
578 const char *snd_hda_get_jack_connectivity(u32 cfg);
579 const char *snd_hda_get_jack_type(u32 cfg);
580 const char *snd_hda_get_jack_location(u32 cfg);
581
582 /*
583 * power saving
584 */
585 #ifdef CONFIG_PM
586 void snd_hda_power_up(struct hda_codec *codec);
587 void snd_hda_power_down(struct hda_codec *codec);
588 void snd_hda_set_power_save(struct hda_bus *bus, int delay);
589 void snd_hda_update_power_acct(struct hda_codec *codec);
590 #else
591 static inline void snd_hda_power_up(struct hda_codec *codec) {}
592 static inline void snd_hda_power_down(struct hda_codec *codec) {}
593 static inline void snd_hda_set_power_save(struct hda_bus *bus, int delay) {}
594 #endif
595
596 #ifdef CONFIG_SND_HDA_PATCH_LOADER
597 /*
598 * patch firmware
599 */
600 int snd_hda_load_patch(struct hda_bus *bus, size_t size, const void *buf);
601 #endif
602
603 #ifdef CONFIG_SND_HDA_DSP_LOADER
604 static inline int
605 snd_hda_codec_load_dsp_prepare(struct hda_codec *codec, unsigned int format,
606 unsigned int size,
607 struct snd_dma_buffer *bufp)
608 {
609 return codec->bus->ops.load_dsp_prepare(codec->bus, format, size, bufp);
610 }
611 static inline void
612 snd_hda_codec_load_dsp_trigger(struct hda_codec *codec, bool start)
613 {
614 return codec->bus->ops.load_dsp_trigger(codec->bus, start);
615 }
616 static inline void
617 snd_hda_codec_load_dsp_cleanup(struct hda_codec *codec,
618 struct snd_dma_buffer *dmab)
619 {
620 return codec->bus->ops.load_dsp_cleanup(codec->bus, dmab);
621 }
622 #else
623 static inline int
624 snd_hda_codec_load_dsp_prepare(struct hda_codec *codec, unsigned int format,
625 unsigned int size,
626 struct snd_dma_buffer *bufp)
627 {
628 return -ENOSYS;
629 }
630 static inline void
631 snd_hda_codec_load_dsp_trigger(struct hda_codec *codec, bool start) {}
632 static inline void
633 snd_hda_codec_load_dsp_cleanup(struct hda_codec *codec,
634 struct snd_dma_buffer *dmab) {}
635 #endif
636
637 #endif /* __SOUND_HDA_CODEC_H */
This page took 0.044458 seconds and 5 git commands to generate.