Lines Matching defs:component

59 static void wait_for_dc_servo(struct snd_soc_component *component, unsigned int op)
61 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
70 snd_soc_component_write(component, WM8993_DC_SERVO_0, val);
72 dev_dbg(component->dev, "Waiting for DC servo...\n");
88 reg = snd_soc_component_read(component, WM8993_DC_SERVO_0);
89 dev_dbg(component->dev, "DC servo: %x\n", reg);
93 dev_err(component->dev, "Timed out waiting for DC Servo %x\n",
107 static bool wm_hubs_dac_hp_direct(struct snd_soc_component *component)
112 reg = snd_soc_component_read(component, WM8993_OUTPUT_MIXER1);
115 dev_vdbg(component->dev, "Analogue paths connected: %x\n",
119 dev_vdbg(component->dev, "HPL connected to mixer\n");
122 dev_vdbg(component->dev, "HPL connected to DAC\n");
125 reg = snd_soc_component_read(component, WM8993_OUTPUT_MIXER2);
128 dev_vdbg(component->dev, "Analogue paths connected: %x\n",
132 dev_vdbg(component->dev, "HPR connected to mixer\n");
135 dev_vdbg(component->dev, "HPR connected to DAC\n");
148 static bool wm_hubs_dcs_cache_get(struct snd_soc_component *component,
151 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
155 left = snd_soc_component_read(component, WM8993_LEFT_OUTPUT_VOLUME);
158 right = snd_soc_component_read(component, WM8993_RIGHT_OUTPUT_VOLUME);
172 static void wm_hubs_dcs_cache_set(struct snd_soc_component *component, u16 dcs_cfg)
174 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
180 cache = devm_kzalloc(component->dev, sizeof(*cache), GFP_KERNEL);
184 cache->left = snd_soc_component_read(component, WM8993_LEFT_OUTPUT_VOLUME);
187 cache->right = snd_soc_component_read(component, WM8993_RIGHT_OUTPUT_VOLUME);
195 static int wm_hubs_read_dc_servo(struct snd_soc_component *component,
198 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
219 *reg_l = snd_soc_component_read(component, WM8993_DC_SERVO_READBACK_1)
221 *reg_r = snd_soc_component_read(component, WM8993_DC_SERVO_READBACK_2)
226 reg = snd_soc_component_read(component, dcs_reg);
241 static void enable_dc_servo(struct snd_soc_component *component)
243 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
259 if (wm_hubs_dac_hp_direct(component) &&
260 wm_hubs_dcs_cache_get(component, &cache)) {
261 dev_dbg(component->dev, "Using cached DCS offset %x for %d,%d\n",
263 snd_soc_component_write(component, dcs_reg, cache->dcs_cfg);
264 wait_for_dc_servo(component,
272 snd_soc_component_update_bits(component, WM8993_DC_SERVO_1,
275 wait_for_dc_servo(component,
279 wait_for_dc_servo(component,
284 if (wm_hubs_read_dc_servo(component, &reg_l, &reg_r) < 0)
287 dev_dbg(component->dev, "DCS input: %x %x\n", reg_l, reg_r);
291 dev_dbg(component->dev,
297 dev_dbg(component->dev, "DCS right %d->%d\n", offset,
304 dev_dbg(component->dev, "DCS left %d->%d\n", offset,
309 dev_dbg(component->dev, "DCS result: %x\n", dcs_cfg);
312 snd_soc_component_write(component, dcs_reg, dcs_cfg);
313 wait_for_dc_servo(component,
323 if (wm_hubs_dac_hp_direct(component))
324 wm_hubs_dcs_cache_set(component, dcs_cfg);
333 struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
334 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
345 if (snd_soc_component_read(component, WM8993_POWER_MANAGEMENT_1)
347 snd_soc_component_update_bits(component,
498 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
499 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
508 snd_soc_component_update_bits(component, WM8993_POWER_MANAGEMENT_1,
515 snd_soc_component_update_bits(component, WM8993_ANALOGUE_HP_0,
522 dev_err(component->dev, "Unknown HP startup mode %d\n",
529 snd_soc_component_update_bits(component, WM8993_CHARGE_PUMP_1,
540 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
541 unsigned int reg = snd_soc_component_read(component, WM8993_ANALOGUE_HP_0);
545 snd_soc_component_update_bits(component, WM8993_CHARGE_PUMP_1,
550 snd_soc_component_update_bits(component, WM8993_POWER_MANAGEMENT_1,
555 snd_soc_component_write(component, WM8993_ANALOGUE_HP_0, reg);
557 snd_soc_component_update_bits(component, WM8993_DC_SERVO_1,
560 enable_dc_servo(component);
564 snd_soc_component_write(component, WM8993_ANALOGUE_HP_0, reg);
568 snd_soc_component_update_bits(component, WM8993_ANALOGUE_HP_0,
574 snd_soc_component_update_bits(component, WM8993_ANALOGUE_HP_0,
578 snd_soc_component_write(component, WM8993_DC_SERVO_0, 0);
580 snd_soc_component_update_bits(component, WM8993_POWER_MANAGEMENT_1,
592 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
593 u16 reg = snd_soc_component_read(component, WM8993_ANTIPOP1) & ~WM8993_HPOUT2_IN_ENA;
598 snd_soc_component_write(component, WM8993_ANTIPOP1, reg);
603 snd_soc_component_write(component, WM8993_ANTIPOP1, reg);
617 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
618 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
647 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
648 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
666 void wm_hubs_update_class_w(struct snd_soc_component *component)
668 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
671 if (!wm_hubs_dac_hp_direct(component))
674 if (hubs->check_class_w_digital && !hubs->check_class_w_digital(component))
677 dev_vdbg(component->dev, "Class W %s\n", enable ? "enabled" : "disabled");
679 snd_soc_component_update_bits(component, WM8993_CLASS_W_0,
682 snd_soc_component_write(component, WM8993_LEFT_OUTPUT_VOLUME,
683 snd_soc_component_read(component, WM8993_LEFT_OUTPUT_VOLUME));
684 snd_soc_component_write(component, WM8993_RIGHT_OUTPUT_VOLUME,
685 snd_soc_component_read(component, WM8993_RIGHT_OUTPUT_VOLUME));
696 struct snd_soc_component *component = snd_soc_dapm_kcontrol_component(kcontrol);
701 wm_hubs_update_class_w(component);
716 struct snd_soc_component *component = snd_soc_dapm_kcontrol_component(kcontrol);
721 wm_hubs_update_class_w(component);
1112 int wm_hubs_add_analogue_controls(struct snd_soc_component *component)
1114 struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
1117 snd_soc_component_update_bits(component, WM8993_LEFT_LINE_INPUT_1_2_VOLUME,
1119 snd_soc_component_update_bits(component, WM8993_RIGHT_LINE_INPUT_1_2_VOLUME,
1121 snd_soc_component_update_bits(component, WM8993_LEFT_LINE_INPUT_3_4_VOLUME,
1123 snd_soc_component_update_bits(component, WM8993_RIGHT_LINE_INPUT_3_4_VOLUME,
1126 snd_soc_component_update_bits(component, WM8993_SPEAKER_VOLUME_LEFT,
1128 snd_soc_component_update_bits(component, WM8993_SPEAKER_VOLUME_RIGHT,
1131 snd_soc_component_update_bits(component, WM8993_LEFT_OUTPUT_VOLUME,
1134 snd_soc_component_update_bits(component, WM8993_RIGHT_OUTPUT_VOLUME,
1138 snd_soc_component_update_bits(component, WM8993_LEFT_OPGA_VOLUME,
1141 snd_soc_component_update_bits(component, WM8993_RIGHT_OPGA_VOLUME,
1145 snd_soc_add_component_controls(component, analogue_snd_controls,
1154 int wm_hubs_add_analogue_routes(struct snd_soc_component *component,
1157 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
1158 struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
1160 hubs->component = component;
1190 int wm_hubs_handle_analogue_pdata(struct snd_soc_component *component,
1197 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
1205 snd_soc_component_update_bits(component, WM8993_LINE_MIXER1,
1209 snd_soc_component_update_bits(component, WM8993_LINE_MIXER2,
1214 snd_soc_component_update_bits(component, WM8993_ANTIPOP1,
1219 snd_soc_component_update_bits(component, WM8993_ADDITIONAL_CONTROL,
1223 snd_soc_component_update_bits(component, WM8993_ADDITIONAL_CONTROL,
1229 snd_soc_component_update_bits(component, WM8993_MICBIAS,
1241 void wm_hubs_vmid_ena(struct snd_soc_component *component)
1243 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
1253 snd_soc_component_update_bits(component, WM8993_POWER_MANAGEMENT_3, val, val);
1257 void wm_hubs_set_bias_level(struct snd_soc_component *component,
1260 struct wm_hubs_data *hubs = snd_soc_component_get_drvdata(component);
1266 snd_soc_component_update_bits(component, WM8993_INPUTS_CLAMP_REG,
1293 snd_soc_component_update_bits(component, WM8993_POWER_MANAGEMENT_3,
1297 snd_soc_component_update_bits(component, WM8993_INPUTS_CLAMP_REG,