Lines Matching refs:reg

32 #define get_verb(reg)	(((reg) >> 8) & 0xfff)  argument
34 static bool hda_volatile_reg(struct device *dev, unsigned int reg) in hda_volatile_reg() argument
37 unsigned int verb = get_verb(reg); in hda_volatile_reg()
61 static bool hda_writeable_reg(struct device *dev, unsigned int reg) in hda_writeable_reg() argument
64 unsigned int verb = get_verb(reg); in hda_writeable_reg()
110 static bool hda_readable_reg(struct device *dev, unsigned int reg) in hda_readable_reg() argument
113 unsigned int verb = get_verb(reg); in hda_readable_reg()
132 return hda_writeable_reg(dev, reg); in hda_readable_reg()
143 static bool is_stereo_amp_verb(unsigned int reg) in is_stereo_amp_verb() argument
145 if (((reg >> 8) & 0x700) != AC_VERB_SET_AMP_GAIN_MUTE) in is_stereo_amp_verb()
147 return (reg & (AC_AMP_SET_LEFT | AC_AMP_SET_RIGHT)) == in is_stereo_amp_verb()
153 unsigned int reg, unsigned int *val) in hda_reg_read_stereo_amp() argument
158 reg &= ~(AC_AMP_SET_LEFT | AC_AMP_SET_RIGHT); in hda_reg_read_stereo_amp()
159 err = snd_hdac_exec_verb(codec, reg | AC_AMP_GET_LEFT, 0, &left); in hda_reg_read_stereo_amp()
162 err = snd_hdac_exec_verb(codec, reg | AC_AMP_GET_RIGHT, 0, &right); in hda_reg_read_stereo_amp()
171 unsigned int reg, unsigned int val) in hda_reg_write_stereo_amp() argument
177 if (reg & AC_AMP_GET_OUTPUT) in hda_reg_write_stereo_amp()
180 verb |= AC_AMP_SET_INPUT | ((reg & 0xf) << 8); in hda_reg_write_stereo_amp()
181 reg = (reg & ~0xfffff) | verb; in hda_reg_write_stereo_amp()
186 reg |= AC_AMP_SET_LEFT | AC_AMP_SET_RIGHT; in hda_reg_write_stereo_amp()
187 return snd_hdac_exec_verb(codec, reg | left, 0, NULL); in hda_reg_write_stereo_amp()
190 err = snd_hdac_exec_verb(codec, reg | AC_AMP_SET_LEFT | left, 0, NULL); in hda_reg_write_stereo_amp()
193 err = snd_hdac_exec_verb(codec, reg | AC_AMP_SET_RIGHT | right, 0, NULL); in hda_reg_write_stereo_amp()
200 static int hda_reg_read_coef(struct hdac_device *codec, unsigned int reg, in hda_reg_read_coef() argument
209 verb = (reg & ~0xfff00) | (AC_VERB_SET_COEF_INDEX << 8); in hda_reg_read_coef()
213 verb = (reg & ~0xfffff) | (AC_VERB_GET_COEF_INDEX << 8); in hda_reg_read_coef()
218 static int hda_reg_write_coef(struct hdac_device *codec, unsigned int reg, in hda_reg_write_coef() argument
227 verb = (reg & ~0xfff00) | (AC_VERB_SET_COEF_INDEX << 8); in hda_reg_write_coef()
231 verb = (reg & ~0xfffff) | (AC_VERB_GET_COEF_INDEX << 8) | in hda_reg_write_coef()
236 static int hda_reg_read(void *context, unsigned int reg, unsigned int *val) in hda_reg_read() argument
239 int verb = get_verb(reg); in hda_reg_read()
244 reg |= (codec->addr << 28); in hda_reg_read()
245 if (is_stereo_amp_verb(reg)) in hda_reg_read()
246 return hda_reg_read_stereo_amp(codec, reg, val); in hda_reg_read()
248 return hda_reg_read_coef(codec, reg, val); in hda_reg_read()
250 reg &= ~AC_AMP_FAKE_MUTE; in hda_reg_read()
252 err = snd_hdac_exec_verb(codec, reg, 0, val); in hda_reg_read()
265 static int hda_reg_write(void *context, unsigned int reg, unsigned int val) in hda_reg_write() argument
274 reg &= ~0x00080000U; /* drop GET bit */ in hda_reg_write()
275 reg |= (codec->addr << 28); in hda_reg_write()
276 verb = get_verb(reg); in hda_reg_write()
281 if (is_stereo_amp_verb(reg)) in hda_reg_write()
282 return hda_reg_write_stereo_amp(codec, reg, val); in hda_reg_write()
285 return hda_reg_write_coef(codec, reg, val); in hda_reg_write()
289 if ((reg & AC_AMP_FAKE_MUTE) && (val & AC_AMP_MUTE)) in hda_reg_write()
292 if (reg & AC_AMP_GET_LEFT) in hda_reg_write()
296 if (reg & AC_AMP_GET_OUTPUT) { in hda_reg_write()
300 verb |= reg & 0xf; in hda_reg_write()
318 reg &= ~0xfffff; in hda_reg_write()
319 reg |= (verb + i) << 8 | ((val >> (8 * i)) & 0xff); in hda_reg_write()
320 err = snd_hdac_exec_verb(codec, reg, 0, NULL); in hda_reg_write()
399 static int reg_raw_write(struct hdac_device *codec, unsigned int reg, in reg_raw_write() argument
403 return hda_reg_write(codec, reg, val); in reg_raw_write()
405 return regmap_write(codec->regmap, reg, val); in reg_raw_write()
416 int snd_hdac_regmap_write_raw(struct hdac_device *codec, unsigned int reg, in snd_hdac_regmap_write_raw() argument
421 err = reg_raw_write(codec, reg, val); in snd_hdac_regmap_write_raw()
425 err = reg_raw_write(codec, reg, val); in snd_hdac_regmap_write_raw()
432 static int reg_raw_read(struct hdac_device *codec, unsigned int reg, in reg_raw_read() argument
436 return hda_reg_read(codec, reg, val); in reg_raw_read()
438 return regmap_read(codec->regmap, reg, val); in reg_raw_read()
449 int snd_hdac_regmap_read_raw(struct hdac_device *codec, unsigned int reg, in snd_hdac_regmap_read_raw() argument
454 err = reg_raw_read(codec, reg, val); in snd_hdac_regmap_read_raw()
458 err = reg_raw_read(codec, reg, val); in snd_hdac_regmap_read_raw()
474 int snd_hdac_regmap_update_raw(struct hdac_device *codec, unsigned int reg, in snd_hdac_regmap_update_raw() argument
481 err = snd_hdac_regmap_read_raw(codec, reg, &orig); in snd_hdac_regmap_update_raw()
487 err = snd_hdac_regmap_write_raw(codec, reg, val); in snd_hdac_regmap_update_raw()