Lines Matching defs:cs35l34

3  * cs35l34.c -- CS35l34 ALSA SoC audio driver
32 #include <sound/cs35l34.h>
34 #include "cs35l34.h"
603 struct cs35l34_private *cs35l34 = snd_soc_component_get_drvdata(component);
609 cs35l34->mclk_int = freq;
613 cs35l34->mclk_int = freq;
617 cs35l34->mclk_int = freq;
621 cs35l34->mclk_int = freq / 2;
625 cs35l34->mclk_int = freq / 2;
629 cs35l34->mclk_int = freq / 2;
633 cs35l34->mclk_int = 0;
636 regmap_update_bits(cs35l34->regmap, CS35L34_MCLK_CTL,
651 .name = "cs35l34",
671 static int cs35l34_boost_inductor(struct cs35l34_private *cs35l34,
674 struct snd_soc_component *component = cs35l34->component;
678 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_COEF_1, 0x24);
679 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_COEF_2, 0x24);
680 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_SLOPE_COMP,
682 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_SW_FREQ, 0);
685 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_COEF_1, 0x20);
686 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_COEF_2, 0x20);
687 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_SLOPE_COMP,
689 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_SW_FREQ, 1);
692 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_COEF_1, 0x20);
693 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_COEF_2, 0x20);
694 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_SLOPE_COMP,
696 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_SW_FREQ, 2);
699 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_COEF_1, 0x19);
700 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_COEF_2, 0x25);
701 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_SLOPE_COMP,
703 regmap_write(cs35l34->regmap, CS35L34_BST_CONV_SW_FREQ, 3);
716 struct cs35l34_private *cs35l34 = snd_soc_component_get_drvdata(component);
721 regmap_update_bits(cs35l34->regmap, CS35L34_PROTECT_CTL,
727 regmap_write(cs35l34->regmap, CS35L34_PWRCTL2, 0xFD);
728 regmap_write(cs35l34->regmap, CS35L34_PWRCTL3, 0x1F);
731 regmap_update_bits(cs35l34->regmap, CS35L34_PROTECT_CTL,
735 if (cs35l34->pdata.boost_peak)
736 regmap_update_bits(cs35l34->regmap, CS35L34_BST_PEAK_I,
738 cs35l34->pdata.boost_peak);
740 if (cs35l34->pdata.gain_zc_disable)
741 regmap_update_bits(cs35l34->regmap, CS35L34_PROTECT_CTL,
744 regmap_update_bits(cs35l34->regmap, CS35L34_PROTECT_CTL,
747 if (cs35l34->pdata.aif_half_drv)
748 regmap_update_bits(cs35l34->regmap, CS35L34_ADSP_CLK_CTL,
751 if (cs35l34->pdata.digsft_disable)
752 regmap_update_bits(cs35l34->regmap, CS35L34_AMP_DIG_VOL_CTL,
755 if (cs35l34->pdata.amp_inv)
756 regmap_update_bits(cs35l34->regmap, CS35L34_AMP_DIG_VOL_CTL,
759 if (cs35l34->pdata.boost_ind)
760 ret = cs35l34_boost_inductor(cs35l34, cs35l34->pdata.boost_ind);
762 if (cs35l34->pdata.i2s_sdinloc)
763 regmap_update_bits(cs35l34->regmap, CS35L34_ADSP_I2S_CTL,
765 cs35l34->pdata.i2s_sdinloc << CS35L34_I2S_LOC_SHIFT);
767 if (cs35l34->pdata.tdm_rising_edge)
768 regmap_update_bits(cs35l34->regmap, CS35L34_ADSP_TDM_CTL,
864 struct cs35l34_private *cs35l34 = data;
865 struct snd_soc_component *component = cs35l34->component;
871 regmap_read(cs35l34->regmap, CS35L34_INT_STATUS_4, &sticky4);
872 regmap_read(cs35l34->regmap, CS35L34_INT_STATUS_3, &sticky3);
873 regmap_read(cs35l34->regmap, CS35L34_INT_STATUS_2, &sticky2);
874 regmap_read(cs35l34->regmap, CS35L34_INT_STATUS_1, &sticky1);
876 regmap_read(cs35l34->regmap, CS35L34_INT_MASK_4, &mask4);
877 regmap_read(cs35l34->regmap, CS35L34_INT_MASK_3, &mask3);
878 regmap_read(cs35l34->regmap, CS35L34_INT_MASK_2, &mask2);
879 regmap_read(cs35l34->regmap, CS35L34_INT_MASK_1, &mask1);
885 regmap_read(cs35l34->regmap, CS35L34_INT_STATUS_1, &current1);
893 regmap_update_bits(cs35l34->regmap,
896 regmap_update_bits(cs35l34->regmap,
900 regmap_update_bits(cs35l34->regmap,
917 regmap_update_bits(cs35l34->regmap,
920 regmap_update_bits(cs35l34->regmap,
924 regmap_update_bits(cs35l34->regmap,
937 regmap_update_bits(cs35l34->regmap,
940 regmap_update_bits(cs35l34->regmap,
944 regmap_update_bits(cs35l34->regmap,
957 regmap_update_bits(cs35l34->regmap,
960 regmap_update_bits(cs35l34->regmap,
964 regmap_update_bits(cs35l34->regmap,
972 regmap_update_bits(cs35l34->regmap, CS35L34_PWRCTL2,
974 regmap_update_bits(cs35l34->regmap, CS35L34_PWRCTL1,
980 regmap_update_bits(cs35l34->regmap, CS35L34_PWRCTL2,
982 regmap_update_bits(cs35l34->regmap, CS35L34_PWRCTL1,
996 struct cs35l34_private *cs35l34;
1003 cs35l34 = devm_kzalloc(&i2c_client->dev, sizeof(*cs35l34), GFP_KERNEL);
1004 if (!cs35l34)
1007 i2c_set_clientdata(i2c_client, cs35l34);
1008 cs35l34->regmap = devm_regmap_init_i2c(i2c_client, &cs35l34_regmap);
1009 if (IS_ERR(cs35l34->regmap)) {
1010 ret = PTR_ERR(cs35l34->regmap);
1015 cs35l34->num_core_supplies = ARRAY_SIZE(cs35l34_core_supplies);
1017 cs35l34->core_supplies[i].supply = cs35l34_core_supplies[i];
1020 cs35l34->num_core_supplies,
1021 cs35l34->core_supplies);
1028 ret = regulator_bulk_enable(cs35l34->num_core_supplies,
1029 cs35l34->core_supplies);
1037 cs35l34->pdata = *pdata;
1052 cs35l34->pdata = *pdata;
1057 "cs35l34", cs35l34);
1061 cs35l34->reset_gpio = devm_gpiod_get_optional(&i2c_client->dev,
1063 if (IS_ERR(cs35l34->reset_gpio)) {
1064 ret = PTR_ERR(cs35l34->reset_gpio);
1068 gpiod_set_value_cansleep(cs35l34->reset_gpio, 1);
1072 devid = cirrus_read_device_id(cs35l34->regmap, CS35L34_DEVID_AB);
1087 ret = regmap_read(cs35l34->regmap, CS35L34_REV_ID, &reg);
1098 regmap_update_bits(cs35l34->regmap, CS35L34_INT_MASK_1,
1102 regmap_update_bits(cs35l34->regmap, CS35L34_INT_MASK_3,
1121 gpiod_set_value_cansleep(cs35l34->reset_gpio, 0);
1123 regulator_bulk_disable(cs35l34->num_core_supplies,
1124 cs35l34->core_supplies);
1131 struct cs35l34_private *cs35l34 = i2c_get_clientdata(client);
1133 gpiod_set_value_cansleep(cs35l34->reset_gpio, 0);
1136 regulator_bulk_disable(cs35l34->num_core_supplies,
1137 cs35l34->core_supplies);
1142 struct cs35l34_private *cs35l34 = dev_get_drvdata(dev);
1145 ret = regulator_bulk_enable(cs35l34->num_core_supplies,
1146 cs35l34->core_supplies);
1154 regcache_cache_only(cs35l34->regmap, false);
1156 gpiod_set_value_cansleep(cs35l34->reset_gpio, 1);
1159 ret = regcache_sync(cs35l34->regmap);
1166 regcache_cache_only(cs35l34->regmap, true);
1167 regulator_bulk_disable(cs35l34->num_core_supplies,
1168 cs35l34->core_supplies);
1175 struct cs35l34_private *cs35l34 = dev_get_drvdata(dev);
1177 regcache_cache_only(cs35l34->regmap, true);
1178 regcache_mark_dirty(cs35l34->regmap);
1180 gpiod_set_value_cansleep(cs35l34->reset_gpio, 0);
1182 regulator_bulk_disable(cs35l34->num_core_supplies,
1183 cs35l34->core_supplies);
1195 {.compatible = "cirrus,cs35l34"},
1201 {"cs35l34", 0},
1208 .name = "cs35l34",