18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*****************************************************************************
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * Copyright (C) 2008 Cedric Bregardis <cedric.bregardis@free.fr> and
58c2ecf20Sopenharmony_ci * Jean-Christian Hassler <jhassler@free.fr>
68c2ecf20Sopenharmony_ci *
78c2ecf20Sopenharmony_ci * This file is part of the Audiowerk2 ALSA driver
88c2ecf20Sopenharmony_ci *
98c2ecf20Sopenharmony_ci *****************************************************************************/
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#ifndef AW2_SAA7146_H
128c2ecf20Sopenharmony_ci#define AW2_SAA7146_H
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci#define NB_STREAM_PLAYBACK 2
158c2ecf20Sopenharmony_ci#define NB_STREAM_CAPTURE 1
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#define NUM_STREAM_PLAYBACK_ANA 0
188c2ecf20Sopenharmony_ci#define NUM_STREAM_PLAYBACK_DIG 1
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci#define NUM_STREAM_CAPTURE_ANA 0
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_citypedef void (*snd_aw2_saa7146_it_cb) (void *);
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_cistruct snd_aw2_saa7146_cb_param {
258c2ecf20Sopenharmony_ci	snd_aw2_saa7146_it_cb p_it_callback;
268c2ecf20Sopenharmony_ci	void *p_callback_param;
278c2ecf20Sopenharmony_ci};
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci/* definition of the chip-specific record */
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_cistruct snd_aw2_saa7146 {
328c2ecf20Sopenharmony_ci	void __iomem *base_addr;
338c2ecf20Sopenharmony_ci};
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_setup(struct snd_aw2_saa7146 *chip,
368c2ecf20Sopenharmony_ci				  void __iomem *pci_base_addr);
378c2ecf20Sopenharmony_ciextern int snd_aw2_saa7146_free(struct snd_aw2_saa7146 *chip);
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_pcm_init_playback(struct snd_aw2_saa7146 *chip,
408c2ecf20Sopenharmony_ci					      int stream_number,
418c2ecf20Sopenharmony_ci					      unsigned long dma_addr,
428c2ecf20Sopenharmony_ci					      unsigned long period_size,
438c2ecf20Sopenharmony_ci					      unsigned long buffer_size);
448c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_pcm_init_capture(struct snd_aw2_saa7146 *chip,
458c2ecf20Sopenharmony_ci					     int stream_number,
468c2ecf20Sopenharmony_ci					     unsigned long dma_addr,
478c2ecf20Sopenharmony_ci					     unsigned long period_size,
488c2ecf20Sopenharmony_ci					     unsigned long buffer_size);
498c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_define_it_playback_callback(unsigned int
508c2ecf20Sopenharmony_ci							stream_number,
518c2ecf20Sopenharmony_ci							snd_aw2_saa7146_it_cb
528c2ecf20Sopenharmony_ci							p_it_callback,
538c2ecf20Sopenharmony_ci							void *p_callback_param);
548c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_define_it_capture_callback(unsigned int
558c2ecf20Sopenharmony_ci						       stream_number,
568c2ecf20Sopenharmony_ci						       snd_aw2_saa7146_it_cb
578c2ecf20Sopenharmony_ci						       p_it_callback,
588c2ecf20Sopenharmony_ci						       void *p_callback_param);
598c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_pcm_trigger_start_capture(struct snd_aw2_saa7146
608c2ecf20Sopenharmony_ci						      *chip, int stream_number);
618c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_pcm_trigger_stop_capture(struct snd_aw2_saa7146
628c2ecf20Sopenharmony_ci						     *chip, int stream_number);
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_pcm_trigger_start_playback(struct snd_aw2_saa7146
658c2ecf20Sopenharmony_ci						       *chip,
668c2ecf20Sopenharmony_ci						       int stream_number);
678c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_pcm_trigger_stop_playback(struct snd_aw2_saa7146
688c2ecf20Sopenharmony_ci						      *chip, int stream_number);
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ciextern irqreturn_t snd_aw2_saa7146_interrupt(int irq, void *dev_id);
718c2ecf20Sopenharmony_ciextern unsigned int snd_aw2_saa7146_get_hw_ptr_playback(struct snd_aw2_saa7146
728c2ecf20Sopenharmony_ci							*chip,
738c2ecf20Sopenharmony_ci							int stream_number,
748c2ecf20Sopenharmony_ci							unsigned char
758c2ecf20Sopenharmony_ci							*start_addr,
768c2ecf20Sopenharmony_ci							unsigned int
778c2ecf20Sopenharmony_ci							buffer_size);
788c2ecf20Sopenharmony_ciextern unsigned int snd_aw2_saa7146_get_hw_ptr_capture(struct snd_aw2_saa7146
798c2ecf20Sopenharmony_ci						       *chip,
808c2ecf20Sopenharmony_ci						       int stream_number,
818c2ecf20Sopenharmony_ci						       unsigned char
828c2ecf20Sopenharmony_ci						       *start_addr,
838c2ecf20Sopenharmony_ci						       unsigned int
848c2ecf20Sopenharmony_ci						       buffer_size);
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ciextern void snd_aw2_saa7146_use_digital_input(struct snd_aw2_saa7146 *chip,
878c2ecf20Sopenharmony_ci					      int use_digital);
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ciextern int snd_aw2_saa7146_is_using_digital_input(struct snd_aw2_saa7146
908c2ecf20Sopenharmony_ci						  *chip);
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci#endif
93