| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | #ifndef XONAR_DG_H_INCLUDED | 
 | #define XONAR_DG_H_INCLUDED | 
 |  | 
 | #include "oxygen.h" | 
 |  | 
 | #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 | 
 |  | 
 | enum cs4245_shadow_operation { | 
 | 	CS4245_SAVE_TO_SHADOW, | 
 | 	CS4245_LOAD_FROM_SHADOW | 
 | }; | 
 |  | 
 | struct dg { | 
 | 	/* shadow copy of the CS4245 register space */ | 
 | 	unsigned char cs4245_shadow[17]; | 
 | 	/* output select: headphone/speakers */ | 
 | 	unsigned char output_sel; | 
 | 	/* volumes for all capture sources */ | 
 | 	char input_vol[4][2]; | 
 | 	/* input select: mic/fp mic/line/aux */ | 
 | 	unsigned char input_sel; | 
 | }; | 
 |  | 
 | /* 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); | 
 |  | 
 | extern const struct oxygen_model model_xonar_dg; | 
 |  | 
 | #endif |