2011-01-10 16:20:29 +01:00
# ifndef XONAR_DG_H_INCLUDED
# define XONAR_DG_H_INCLUDED
# include "oxygen.h"
2014-01-24 16:18:07 +04:00
# define GPIO_MAGIC 0x0008
# define GPIO_HP_DETECT 0x0010
# define GPIO_INPUT_ROUTE 0x0060
# define GPIO_HP_REAR 0x0080
# define GPIO_OUTPUT_ENABLE 0x0100
# define CAPTURE_SRC_MIC 0
# define CAPTURE_SRC_FP_MIC 1
# define CAPTURE_SRC_LINE 2
# define CAPTURE_SRC_AUX 3
# define PLAYBACK_DST_HP 0
# define PLAYBACK_DST_HP_FP 1
# define PLAYBACK_DST_MULTICH 2
2014-01-24 16:18:08 +04:00
enum cs4245_shadow_operation {
CS4245_SAVE_TO_SHADOW ,
CS4245_LOAD_FROM_SHADOW
} ;
2014-01-24 16:18:07 +04:00
struct dg {
2014-01-24 16:18:08 +04:00
/* shadow copy of the CS4245 register space */
unsigned char cs4245_shadow [ 17 ] ;
2014-01-24 16:18:11 +04:00
/* output select: headphone/speakers */
2014-01-24 16:18:15 +04:00
unsigned char output_sel ;
2014-01-24 16:18:17 +04:00
/* volumes for all capture sources */
char input_vol [ 4 ] [ 2 ] ;
2014-01-24 16:18:18 +04:00
/* input select: mic/fp mic/line/aux */
unsigned char input_sel ;
2014-01-24 16:18:07 +04:00
} ;
2014-01-24 16:18:13 +04:00
/* Xonar DG control routines */
int cs4245_write_spi ( struct oxygen * chip , u8 reg ) ;
int cs4245_read_spi ( struct oxygen * chip , u8 reg ) ;
int cs4245_shadow_control ( struct oxygen * chip , enum cs4245_shadow_operation op ) ;
void dg_init ( struct oxygen * chip ) ;
void set_cs4245_dac_params ( struct oxygen * chip ,
struct snd_pcm_hw_params * params ) ;
void set_cs4245_adc_params ( struct oxygen * chip ,
struct snd_pcm_hw_params * params ) ;
unsigned int adjust_dg_dac_routing ( struct oxygen * chip ,
unsigned int play_routing ) ;
void dump_cs4245_registers ( struct oxygen * chip ,
struct snd_info_buffer * buffer ) ;
void dg_suspend ( struct oxygen * chip ) ;
void dg_resume ( struct oxygen * chip ) ;
void dg_cleanup ( struct oxygen * chip ) ;
2011-01-10 16:20:29 +01:00
extern struct oxygen_model model_xonar_dg ;
# endif