94 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*****************************************************************************3 *4 * Copyright (C) 2008 Cedric Bregardis <cedric.bregardis@free.fr> and5 * Jean-Christian Hassler <jhassler@free.fr>6 *7 * This file is part of the Audiowerk2 ALSA driver8 *9 *****************************************************************************/10 11#ifndef AW2_SAA7146_H12#define AW2_SAA7146_H13 14#define NB_STREAM_PLAYBACK 215#define NB_STREAM_CAPTURE 116 17#define NUM_STREAM_PLAYBACK_ANA 018#define NUM_STREAM_PLAYBACK_DIG 119 20#define NUM_STREAM_CAPTURE_ANA 021 22struct snd_pcm_substream;23typedef void (*snd_aw2_saa7146_it_cb) (struct snd_pcm_substream *);24 25struct snd_aw2_saa7146_cb_param {26 snd_aw2_saa7146_it_cb p_it_callback;27 struct snd_pcm_substream *p_callback_param;28};29 30/* definition of the chip-specific record */31 32struct snd_aw2_saa7146 {33 void __iomem *base_addr;34};35 36extern void snd_aw2_saa7146_setup(struct snd_aw2_saa7146 *chip,37 void __iomem *pci_base_addr);38extern int snd_aw2_saa7146_free(struct snd_aw2_saa7146 *chip);39 40extern void snd_aw2_saa7146_pcm_init_playback(struct snd_aw2_saa7146 *chip,41 int stream_number,42 unsigned long dma_addr,43 unsigned long period_size,44 unsigned long buffer_size);45extern void snd_aw2_saa7146_pcm_init_capture(struct snd_aw2_saa7146 *chip,46 int stream_number,47 unsigned long dma_addr,48 unsigned long period_size,49 unsigned long buffer_size);50extern void snd_aw2_saa7146_define_it_playback_callback(unsigned int51 stream_number,52 snd_aw2_saa7146_it_cb53 p_it_callback,54 void *p_callback_param);55extern void snd_aw2_saa7146_define_it_capture_callback(unsigned int56 stream_number,57 snd_aw2_saa7146_it_cb58 p_it_callback,59 void *p_callback_param);60extern void snd_aw2_saa7146_pcm_trigger_start_capture(struct snd_aw2_saa714661 *chip, int stream_number);62extern void snd_aw2_saa7146_pcm_trigger_stop_capture(struct snd_aw2_saa714663 *chip, int stream_number);64 65extern void snd_aw2_saa7146_pcm_trigger_start_playback(struct snd_aw2_saa714666 *chip,67 int stream_number);68extern void snd_aw2_saa7146_pcm_trigger_stop_playback(struct snd_aw2_saa714669 *chip, int stream_number);70 71extern irqreturn_t snd_aw2_saa7146_interrupt(int irq, void *dev_id);72extern unsigned int snd_aw2_saa7146_get_hw_ptr_playback(struct snd_aw2_saa714673 *chip,74 int stream_number,75 unsigned char76 *start_addr,77 unsigned int78 buffer_size);79extern unsigned int snd_aw2_saa7146_get_hw_ptr_capture(struct snd_aw2_saa714680 *chip,81 int stream_number,82 unsigned char83 *start_addr,84 unsigned int85 buffer_size);86 87extern void snd_aw2_saa7146_use_digital_input(struct snd_aw2_saa7146 *chip,88 int use_digital);89 90extern int snd_aw2_saa7146_is_using_digital_input(struct snd_aw2_saa714691 *chip);92 93#endif94