Lines Matching full:sma1307
2 // sma1307.c -- sma1307 ALSA SoC Audio driver
15 #include "sma1307.h"
309 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_force_mute_get() local
311 ucontrol->value.integer.value[0] = (int)sma1307->force_mute_status; in sma1307_force_mute_get()
321 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_force_mute_put() local
324 if (sma1307->force_mute_status == val) { in sma1307_force_mute_put()
328 sma1307->force_mute_status = val; in sma1307_force_mute_put()
339 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_tdm_slot_get() local
342 regmap_read(sma1307->regmap, SMA1307_A5_TDM1, &val1); in sma1307_tdm_slot_get()
343 regmap_read(sma1307->regmap, SMA1307_A6_TDM2, &val2); in sma1307_tdm_slot_get()
348 sma1307->tdm_slot0_rx = ucontrol->value.integer.value[0]; in sma1307_tdm_slot_get()
352 sma1307->tdm_slot1_rx = ucontrol->value.integer.value[0]; in sma1307_tdm_slot_get()
356 sma1307->tdm_slot0_tx = ucontrol->value.integer.value[0]; in sma1307_tdm_slot_get()
360 sma1307->tdm_slot1_tx = ucontrol->value.integer.value[0]; in sma1307_tdm_slot_get()
373 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_tdm_slot_put() local
378 if (sma1307->tdm_slot0_rx == val) in sma1307_tdm_slot_put()
382 sma1307->tdm_slot0_rx = val; in sma1307_tdm_slot_put()
383 regmap_update_bits(sma1307->regmap, SMA1307_A5_TDM1, in sma1307_tdm_slot_put()
387 if (sma1307->tdm_slot1_rx == val) in sma1307_tdm_slot_put()
391 sma1307->tdm_slot1_rx = val; in sma1307_tdm_slot_put()
392 regmap_update_bits(sma1307->regmap, SMA1307_A5_TDM1, in sma1307_tdm_slot_put()
396 if (sma1307->tdm_slot0_tx == val) in sma1307_tdm_slot_put()
400 sma1307->tdm_slot0_tx = val; in sma1307_tdm_slot_put()
401 regmap_update_bits(sma1307->regmap, SMA1307_A6_TDM2, in sma1307_tdm_slot_put()
405 if (sma1307->tdm_slot1_tx == val) in sma1307_tdm_slot_put()
409 sma1307->tdm_slot1_tx = val; in sma1307_tdm_slot_put()
410 regmap_update_bits(sma1307->regmap, SMA1307_A6_TDM2, in sma1307_tdm_slot_put()
414 dev_err(sma1307->dev, "%s: Invalid Control ID - %s\n", in sma1307_tdm_slot_put()
427 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_sw_ot1_prot_get() local
429 ucontrol->value.integer.value[0] = (int)sma1307->sw_ot1_prot; in sma1307_sw_ot1_prot_get()
439 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_sw_ot1_prot_put() local
442 if (sma1307->sw_ot1_prot == val) in sma1307_sw_ot1_prot_put()
446 sma1307->sw_ot1_prot = val; in sma1307_sw_ot1_prot_put()
457 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_check_fault_status_get() local
459 ucontrol->value.integer.value[0] = (int)sma1307->check_fault_status; in sma1307_check_fault_status_get()
469 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_check_fault_status_put() local
472 if (sma1307->check_fault_status == val) { in sma1307_check_fault_status_put()
476 sma1307->check_fault_status = val; in sma1307_check_fault_status_put()
487 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_check_fault_period_get() local
489 ucontrol->value.integer.value[0] = sma1307->check_fault_period; in sma1307_check_fault_period_get()
499 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_check_fault_period_put() local
507 if (sma1307->check_fault_period == val) { in sma1307_check_fault_period_put()
511 sma1307->check_fault_period = val; in sma1307_check_fault_period_put()
522 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_reset_put() local
524 regmap_update_bits(sma1307->regmap, SMA1307_00_SYSTEM_CTRL, in sma1307_reset_put()
539 struct sma1307_priv *sma1307 = snd_kcontrol_chip(kcontrol); in sma1307_binary_mode_put() local
541 sma1307->binary_mode = (int)ucontrol->value.enumerated.item[0]; in sma1307_binary_mode_put()
542 if (sma1307->set.status) in sma1307_binary_mode_put()
550 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_startup() local
552 regmap_update_bits(sma1307->regmap, SMA1307_A2_TOP_MAN1, in sma1307_startup()
554 regmap_update_bits(sma1307->regmap, SMA1307_00_SYSTEM_CTRL, in sma1307_startup()
557 if (sma1307->amp_mode == SMA1307_MONO_MODE) { in sma1307_startup()
558 regmap_update_bits(sma1307->regmap, in sma1307_startup()
563 regmap_update_bits(sma1307->regmap, in sma1307_startup()
569 if (sma1307->check_fault_status) { in sma1307_startup()
570 if (sma1307->check_fault_period > 0) in sma1307_startup()
572 &sma1307->check_fault_work, in sma1307_startup()
573 sma1307->check_fault_period * HZ); in sma1307_startup()
576 &sma1307->check_fault_work, in sma1307_startup()
583 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_shutdown() local
586 cancel_delayed_work_sync(&sma1307->check_fault_work); in sma1307_shutdown()
588 regmap_update_bits(sma1307->regmap, SMA1307_0E_MUTE_VOL_CTRL, in sma1307_shutdown()
593 regmap_update_bits(sma1307->regmap, SMA1307_10_SYSTEM_CTRL1, in sma1307_shutdown()
595 regmap_update_bits(sma1307->regmap, SMA1307_A2_TOP_MAN1, in sma1307_shutdown()
597 regmap_update_bits(sma1307->regmap, SMA1307_00_SYSTEM_CTRL, in sma1307_shutdown()
606 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_aif_in_event() local
607 unsigned int mux = sma1307->dapm_aif_in; in sma1307_aif_in_event()
613 regmap_update_bits(sma1307->regmap, in sma1307_aif_in_event()
619 regmap_update_bits(sma1307->regmap, in sma1307_aif_in_event()
623 regmap_update_bits(sma1307->regmap, in sma1307_aif_in_event()
629 regmap_update_bits(sma1307->regmap, in sma1307_aif_in_event()
633 regmap_update_bits(sma1307->regmap, in sma1307_aif_in_event()
640 dev_err(sma1307->dev, "%s: Invalid value (%d)\n", in sma1307_aif_in_event()
644 sma1307->amp_mode = mux; in sma1307_aif_in_event()
655 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_sdo_setting_event() local
656 unsigned int mux = sma1307->dapm_sdo_setting; in sma1307_sdo_setting_event()
662 regmap_update_bits(sma1307->regmap, in sma1307_sdo_setting_event()
666 regmap_update_bits(sma1307->regmap, in sma1307_sdo_setting_event()
675 regmap_update_bits(sma1307->regmap, in sma1307_sdo_setting_event()
679 regmap_update_bits(sma1307->regmap, in sma1307_sdo_setting_event()
688 regmap_update_bits(sma1307->regmap, in sma1307_sdo_setting_event()
692 regmap_update_bits(sma1307->regmap, in sma1307_sdo_setting_event()
701 regmap_update_bits(sma1307->regmap, in sma1307_sdo_setting_event()
708 regmap_update_bits(sma1307->regmap, in sma1307_sdo_setting_event()
715 dev_err(sma1307->dev, "%s: Invalid value (%d)\n", in sma1307_sdo_setting_event()
729 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_aif_out_event() local
733 mux = sma1307->dapm_aif_out0; in sma1307_aif_out_event()
737 mux = sma1307->dapm_aif_out1; in sma1307_aif_out_event()
741 dev_err(sma1307->dev, "%s: Invalid widget - %s\n", in sma1307_aif_out_event()
747 regmap_update_bits(sma1307->regmap, SMA1307_09_OUTPUT_CTRL, in sma1307_aif_out_event()
759 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_sdo_event() local
763 regmap_update_bits(sma1307->regmap, in sma1307_sdo_event()
767 regmap_update_bits(sma1307->regmap, in sma1307_sdo_event()
773 regmap_update_bits(sma1307->regmap, in sma1307_sdo_event()
777 regmap_update_bits(sma1307->regmap, in sma1307_sdo_event()
808 struct sma1307_priv *sma1307 = in sma1307_dapm_aif_in_get() local
811 ucontrol->value.enumerated.item[0] = (unsigned int)sma1307->dapm_aif_in; in sma1307_dapm_aif_in_get()
822 struct sma1307_priv *sma1307 = in sma1307_dapm_aif_in_put() local
828 dev_err(sma1307->dev, "%s: Out of range\n", __func__); in sma1307_dapm_aif_in_put()
832 if (sma1307->dapm_aif_in != val) { in sma1307_dapm_aif_in_put()
834 sma1307->dapm_aif_in = val; in sma1307_dapm_aif_in_put()
848 struct sma1307_priv *sma1307 = in sma1307_dapm_sdo_setting_get() local
852 (unsigned int)sma1307->dapm_sdo_setting; in sma1307_dapm_sdo_setting_get()
863 struct sma1307_priv *sma1307 = in sma1307_dapm_sdo_setting_put() local
869 dev_err(sma1307->dev, "%s: Out of range\n", __func__); in sma1307_dapm_sdo_setting_put()
873 if (sma1307->dapm_sdo_setting != val) { in sma1307_dapm_sdo_setting_put()
875 sma1307->dapm_sdo_setting = val; in sma1307_dapm_sdo_setting_put()
889 struct sma1307_priv *sma1307 = in sma1307_dapm_aif_out_get() local
894 val = (unsigned int)sma1307->dapm_aif_out0; in sma1307_dapm_aif_out_get()
896 val = (unsigned int)sma1307->dapm_aif_out1; in sma1307_dapm_aif_out_get()
898 dev_err(sma1307->dev, "%s: Invalid Control ID - %s\n", in sma1307_dapm_aif_out_get()
913 struct sma1307_priv *sma1307 = in sma1307_dapm_aif_out_put() local
919 dev_err(sma1307->dev, "%s: Out of range\n", __func__); in sma1307_dapm_aif_out_put()
924 if (sma1307->dapm_aif_out0 != val) { in sma1307_dapm_aif_out_put()
926 sma1307->dapm_aif_out0 = val; in sma1307_dapm_aif_out_put()
930 if (sma1307->dapm_aif_out1 != val) { in sma1307_dapm_aif_out_put()
932 sma1307->dapm_aif_out1 = val; in sma1307_dapm_aif_out_put()
936 dev_err(sma1307->dev, "%s: Invalid Control ID - %s\n", in sma1307_dapm_aif_out_put()
951 struct sma1307_priv *sma1307 = in sma1307_dapm_sdo_enable_get() local
954 ucontrol->value.integer.value[0] = (long)sma1307->dapm_sdo_en; in sma1307_dapm_sdo_enable_get()
965 struct sma1307_priv *sma1307 = in sma1307_dapm_sdo_enable_put() local
971 dev_err(sma1307->dev, "%s: Out of range\n", __func__); in sma1307_dapm_sdo_enable_put()
975 if (sma1307->dapm_sdo_en != val) { in sma1307_dapm_sdo_enable_put()
977 sma1307->dapm_sdo_en = val; in sma1307_dapm_sdo_enable_put()
1151 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_setup_pll() local
1157 if (sma1307->sys_clk_id == SMA1307_PLL_CLKIN_MCLK) { in sma1307_setup_pll()
1160 } else if (sma1307->sys_clk_id == SMA1307_PLL_CLKIN_BCLK) { in sma1307_setup_pll()
1161 for (i = 0; i < sma1307->num_of_pll_matches; i++) { in sma1307_setup_pll()
1162 if (sma1307->pll_matches[i].input_clk == bclk) in sma1307_setup_pll()
1165 if (i == sma1307->num_of_pll_matches) { in sma1307_setup_pll()
1172 regmap_update_bits(sma1307->regmap, in sma1307_setup_pll()
1177 regmap_write(sma1307->regmap, SMA1307_8B_PLL_POST_N, in sma1307_setup_pll()
1178 sma1307->pll_matches[i].post_n); in sma1307_setup_pll()
1179 regmap_write(sma1307->regmap, SMA1307_8C_PLL_N, in sma1307_setup_pll()
1180 sma1307->pll_matches[i].n); in sma1307_setup_pll()
1181 regmap_write(sma1307->regmap, SMA1307_8D_PLL_A_SETTING, in sma1307_setup_pll()
1182 sma1307->pll_matches[i].vco); in sma1307_setup_pll()
1183 regmap_write(sma1307->regmap, SMA1307_8E_PLL_P_CP, in sma1307_setup_pll()
1184 sma1307->pll_matches[i].p_cp); in sma1307_setup_pll()
1192 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_dai_hw_params_amp() local
1195 if (sma1307->format == SND_SOC_DAIFMT_DSP_A) in sma1307_dai_hw_params_amp()
1196 bclk = params_rate(params) * sma1307->frame_size; in sma1307_dai_hw_params_amp()
1207 if (sma1307->sys_clk_id == SMA1307_PLL_CLKIN_BCLK) { in sma1307_dai_hw_params_amp()
1208 if (sma1307->last_bclk != bclk) { in sma1307_dai_hw_params_amp()
1210 sma1307->last_bclk = bclk; in sma1307_dai_hw_params_amp()
1242 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1252 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1262 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1278 switch (sma1307->format) { in sma1307_dai_hw_params_amp()
1280 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1284 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1290 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1293 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1301 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1308 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1316 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1320 regmap_update_bits(sma1307->regmap, in sma1307_dai_hw_params_amp()
1346 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_dai_set_sysclk_amp() local
1359 sma1307->sys_clk_id = clk_id; in sma1307_dai_set_sysclk_amp()
1367 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_dai_set_fmt_amp() local
1374 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_fmt_amp()
1383 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_fmt_amp()
1402 sma1307->format = fmt & SND_SOC_DAIFMT_FORMAT_MASK; in sma1307_dai_set_fmt_amp()
1416 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_fmt_amp()
1424 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_fmt_amp()
1434 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_fmt_amp()
1458 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_dai_set_tdm_slot() local
1463 sma1307->frame_size = slot_width * slots; in sma1307_dai_set_tdm_slot()
1465 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1469 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1476 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1482 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1495 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1501 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1512 if (sma1307->tdm_slot0_rx < slots) in sma1307_dai_set_tdm_slot()
1513 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1516 sma1307->tdm_slot0_rx << 3); in sma1307_dai_set_tdm_slot()
1519 __func__, sma1307->tdm_slot0_rx); in sma1307_dai_set_tdm_slot()
1521 if (sma1307->tdm_slot1_rx < slots) in sma1307_dai_set_tdm_slot()
1522 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1525 sma1307->tdm_slot1_rx); in sma1307_dai_set_tdm_slot()
1528 __func__, sma1307->tdm_slot1_rx); in sma1307_dai_set_tdm_slot()
1530 if (sma1307->tdm_slot0_tx < slots) in sma1307_dai_set_tdm_slot()
1531 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1534 sma1307->tdm_slot0_tx << 3); in sma1307_dai_set_tdm_slot()
1537 __func__, sma1307->tdm_slot0_tx); in sma1307_dai_set_tdm_slot()
1539 if (sma1307->tdm_slot1_tx < slots) in sma1307_dai_set_tdm_slot()
1540 regmap_update_bits(sma1307->regmap, in sma1307_dai_set_tdm_slot()
1543 sma1307->tdm_slot1_tx); in sma1307_dai_set_tdm_slot()
1546 __func__, sma1307->tdm_slot1_tx); in sma1307_dai_set_tdm_slot()
1555 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_dai_mute_stream() local
1561 regmap_update_bits(sma1307->regmap, in sma1307_dai_mute_stream()
1566 if (!sma1307->force_mute_status) { in sma1307_dai_mute_stream()
1569 regmap_update_bits(sma1307->regmap, in sma1307_dai_mute_stream()
1574 dev_dbg(sma1307->dev, "%s: FORCE MUTE!!!\n", __func__); in sma1307_dai_mute_stream()
1596 .name = "sma1307-amplifier",
1618 struct sma1307_priv *sma1307 = in sma1307_check_fault_worker() local
1623 if (sma1307->tsdw_cnt) in sma1307_check_fault_worker()
1624 regmap_read(sma1307->regmap, in sma1307_check_fault_worker()
1625 SMA1307_0A_SPK_VOL, &sma1307->cur_vol); in sma1307_check_fault_worker()
1627 regmap_read(sma1307->regmap, in sma1307_check_fault_worker()
1628 SMA1307_0A_SPK_VOL, &sma1307->init_vol); in sma1307_check_fault_worker()
1630 regmap_read(sma1307->regmap, SMA1307_FA_STATUS1, &status1_val); in sma1307_check_fault_worker()
1631 regmap_read(sma1307->regmap, SMA1307_FB_STATUS2, &status2_val); in sma1307_check_fault_worker()
1634 dev_crit(sma1307->dev, in sma1307_check_fault_worker()
1637 if (sma1307->sw_ot1_prot) { in sma1307_check_fault_worker()
1639 if ((sma1307->cur_vol + 6) <= 0xFA) { in sma1307_check_fault_worker()
1640 sma1307->cur_vol += 6; in sma1307_check_fault_worker()
1641 regmap_write(sma1307->regmap, in sma1307_check_fault_worker()
1643 sma1307->cur_vol); in sma1307_check_fault_worker()
1645 "VOLUME=0x%02X", sma1307->cur_vol); in sma1307_check_fault_worker()
1648 sma1307->tsdw_cnt++; in sma1307_check_fault_worker()
1649 } else if (sma1307->tsdw_cnt) { in sma1307_check_fault_worker()
1650 regmap_write(sma1307->regmap, in sma1307_check_fault_worker()
1651 SMA1307_0A_SPK_VOL, sma1307->init_vol); in sma1307_check_fault_worker()
1652 sma1307->tsdw_cnt = 0; in sma1307_check_fault_worker()
1653 sma1307->cur_vol = sma1307->init_vol; in sma1307_check_fault_worker()
1656 "VOLUME=0x%02X", sma1307->cur_vol); in sma1307_check_fault_worker()
1660 dev_crit(sma1307->dev, in sma1307_check_fault_worker()
1665 dev_crit(sma1307->dev, in sma1307_check_fault_worker()
1670 dev_crit(sma1307->dev, in sma1307_check_fault_worker()
1675 dev_crit(sma1307->dev, in sma1307_check_fault_worker()
1680 dev_crit(sma1307->dev, in sma1307_check_fault_worker()
1685 dev_crit(sma1307->dev, in sma1307_check_fault_worker()
1691 if (kobject_uevent_env(sma1307->kobj, KOBJ_CHANGE, envp)) in sma1307_check_fault_worker()
1692 dev_err(sma1307->dev, in sma1307_check_fault_worker()
1698 if (sma1307->check_fault_status) { in sma1307_check_fault_worker()
1699 if (sma1307->check_fault_period > 0) in sma1307_check_fault_worker()
1701 &sma1307->check_fault_work, in sma1307_check_fault_worker()
1702 sma1307->check_fault_period * HZ); in sma1307_check_fault_worker()
1705 &sma1307->check_fault_work, in sma1307_check_fault_worker()
1710 static void sma1307_setting_loaded(struct sma1307_priv *sma1307, const char *file) in sma1307_setting_loaded() argument
1716 ret = request_firmware(&fw, file, sma1307->dev); in sma1307_setting_loaded()
1719 dev_err(sma1307->dev, "%s: failed to read \"%s\": %pe\n", in sma1307_setting_loaded()
1721 sma1307->set.status = false; in sma1307_setting_loaded()
1724 dev_err(sma1307->dev, "%s: Invalid file\n", __func__); in sma1307_setting_loaded()
1726 sma1307->set.status = false; in sma1307_setting_loaded()
1737 sma1307->set.header_size = SMA1307_SETTING_HEADER_SIZE; in sma1307_setting_loaded()
1738 sma1307->set.checksum = data[sma1307->set.header_size - 2]; in sma1307_setting_loaded()
1739 sma1307->set.num_mode = data[sma1307->set.header_size - 1]; in sma1307_setting_loaded()
1740 num_mode = sma1307->set.num_mode; in sma1307_setting_loaded()
1741 sma1307->set.header = devm_kzalloc(sma1307->dev, in sma1307_setting_loaded()
1742 sma1307->set.header_size, in sma1307_setting_loaded()
1744 memcpy(sma1307->set.header, data, in sma1307_setting_loaded()
1745 sma1307->set.header_size * sizeof(int)); in sma1307_setting_loaded()
1747 if ((sma1307->set.checksum >> 8) != SMA1307_SETTING_CHECKSUM) { in sma1307_setting_loaded()
1748 dev_err(sma1307->dev, "%s: failed by dismatch \"%s\"\n", in sma1307_setting_loaded()
1750 sma1307->set.status = false; in sma1307_setting_loaded()
1755 sma1307->set.def_size = SMA1307_SETTING_DEFAULT_SIZE; in sma1307_setting_loaded()
1756 sma1307->set.def in sma1307_setting_loaded()
1757 = devm_kzalloc(sma1307->dev, in sma1307_setting_loaded()
1758 sma1307->set.def_size * sizeof(int), GFP_KERNEL); in sma1307_setting_loaded()
1759 memcpy(sma1307->set.def, in sma1307_setting_loaded()
1760 &data[sma1307->set.header_size], in sma1307_setting_loaded()
1761 sma1307->set.def_size * sizeof(int)); in sma1307_setting_loaded()
1764 offset = sma1307->set.header_size + sma1307->set.def_size; in sma1307_setting_loaded()
1765 sma1307->set.mode_size = DIV_ROUND_CLOSEST(size - offset, num_mode + 1); in sma1307_setting_loaded()
1767 sma1307->set.mode_set[i] in sma1307_setting_loaded()
1768 = devm_kzalloc(sma1307->dev, in sma1307_setting_loaded()
1769 sma1307->set.mode_size * 2 * sizeof(int), in sma1307_setting_loaded()
1771 for (int j = 0; j < sma1307->set.mode_size; j++) { in sma1307_setting_loaded()
1772 sma1307->set.mode_set[i][2 * j] in sma1307_setting_loaded()
1774 sma1307->set.mode_set[i][2 * j + 1] in sma1307_setting_loaded()
1780 sma1307->set.status = true; in sma1307_setting_loaded()
1786 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_reset() local
1789 regmap_read(sma1307->regmap, SMA1307_FF_DEVICE_INDEX, &status); in sma1307_reset()
1791 sma1307->rev_num = status & SMA1307_REV_NUM_STATUS; in sma1307_reset()
1792 dev_dbg(component->dev, "%s: SMA1307 Revision %d\n", in sma1307_reset()
1793 __func__, sma1307->rev_num); in sma1307_reset()
1794 regmap_read(sma1307->regmap, SMA1307_99_OTP_TRM2, &sma1307->otp_trm2); in sma1307_reset()
1795 regmap_read(sma1307->regmap, SMA1307_9A_OTP_TRM3, &sma1307->otp_trm3); in sma1307_reset()
1797 if ((sma1307->otp_trm2 & SMA1307_OTP_STAT_MASK) != SMA1307_OTP_STAT_1) in sma1307_reset()
1798 dev_warn(component->dev, "%s: SMA1307 OTP Status Fail\n", in sma1307_reset()
1802 sma1307_setting_loaded(sma1307, setting_file); in sma1307_reset()
1803 if (sma1307->set.status) in sma1307_reset()
1808 regmap_update_bits(sma1307->regmap, in sma1307_reset()
1811 regmap_write(sma1307->regmap, SMA1307_0A_SPK_VOL, sma1307->init_vol); in sma1307_reset()
1816 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_set_binary() local
1819 for (i = 0; i < (sma1307->set.def_size); i++) { in sma1307_set_binary()
1820 if (sma1307_writeable_register(sma1307->dev, i) in sma1307_set_binary()
1823 regmap_write(sma1307->regmap, i, sma1307->set.def[i]); in sma1307_set_binary()
1827 for (i = 0; i < (sma1307->set.mode_size); i++) { in sma1307_set_binary()
1828 if (sma1307_writeable_register(sma1307->dev, i) in sma1307_set_binary()
1831 mode = sma1307->binary_mode; in sma1307_set_binary()
1832 regmap_write(sma1307->regmap, in sma1307_set_binary()
1833 sma1307->set.mode_set[mode][2 * i], in sma1307_set_binary()
1834 sma1307->set.mode_set[mode][2 * i + in sma1307_set_binary()
1842 struct sma1307_priv *sma1307 = snd_soc_component_get_drvdata(component); in sma1307_set_default() local
1846 regmap_write(sma1307->regmap, in sma1307_set_default()
1850 if (!strcmp(sma1307->name, DEVICE_NAME_SMA1307AQ)) in sma1307_set_default()
1851 sma1307->data->init(sma1307->regmap); in sma1307_set_default()
1931 struct sma1307_priv *sma1307; in sma1307_i2c_probe() local
1936 sma1307 = devm_kzalloc(&client->dev, in sma1307_i2c_probe()
1937 sizeof(*sma1307), GFP_KERNEL); in sma1307_i2c_probe()
1938 if (!sma1307) in sma1307_i2c_probe()
1941 sma1307->regmap = devm_regmap_init_i2c(client, &sma_i2c_regmap); in sma1307_i2c_probe()
1942 if (IS_ERR(sma1307->regmap)) { in sma1307_i2c_probe()
1943 return dev_err_probe(&client->dev, PTR_ERR(sma1307->regmap), in sma1307_i2c_probe()
1951 sma1307->data = data; in sma1307_i2c_probe()
1954 sma1307->name = client->name; in sma1307_i2c_probe()
1955 sma1307->format = SND_SOC_DAIFMT_I2S; in sma1307_i2c_probe()
1956 sma1307->sys_clk_id = SMA1307_PLL_CLKIN_BCLK; in sma1307_i2c_probe()
1957 sma1307->num_of_pll_matches = ARRAY_SIZE(sma1307_pll_matches); in sma1307_i2c_probe()
1959 sma1307->check_fault_period = CHECK_PERIOD_TIME; in sma1307_i2c_probe()
1960 sma1307->check_fault_status = true; in sma1307_i2c_probe()
1961 sma1307->init_vol = 0x32; in sma1307_i2c_probe()
1962 sma1307->cur_vol = sma1307->init_vol; in sma1307_i2c_probe()
1963 sma1307->sw_ot1_prot = true; in sma1307_i2c_probe()
1965 mutex_init(&sma1307->default_lock); in sma1307_i2c_probe()
1967 INIT_DELAYED_WORK(&sma1307->check_fault_work, in sma1307_i2c_probe()
1970 sma1307->dev = &client->dev; in sma1307_i2c_probe()
1971 sma1307->kobj = &client->dev.kobj; in sma1307_i2c_probe()
1973 i2c_set_clientdata(client, sma1307); in sma1307_i2c_probe()
1975 sma1307->pll_matches = sma1307_pll_matches; in sma1307_i2c_probe()
1977 regmap_read(sma1307->regmap, in sma1307_i2c_probe()
1989 i2c_set_clientdata(client, sma1307); in sma1307_i2c_probe()
2007 struct sma1307_priv *sma1307 = in sma1307_i2c_remove() local
2010 cancel_delayed_work_sync(&sma1307->check_fault_work); in sma1307_i2c_remove()
2036 .name = "sma1307",
2046 MODULE_DESCRIPTION("ALSA SoC SMA1307 driver");