Symbol: nau8325
sound/soc/codecs/nau8325.c
220
struct nau8325 *nau8325 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8325.c
224
regmap_update_bits(nau8325->regmap, NAU8325_R12_MUTE_CTRL,
sound/soc/codecs/nau8325.c
230
regmap_update_bits(nau8325->regmap, NAU8325_R12_MUTE_CTRL,
sound/soc/codecs/nau8325.c
246
struct nau8325 *nau8325 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8325.c
248
if (nau8325->clock_detection)
sound/soc/codecs/nau8325.c
253
regmap_update_bits(nau8325->regmap, NAU8325_R40_CLK_DET_CTRL,
sound/soc/codecs/nau8325.c
257
regmap_update_bits(nau8325->regmap, NAU8325_R40_CLK_DET_CTRL,
sound/soc/codecs/nau8325.c
293
static int nau8325_srate_clk_apply(struct nau8325 *nau8325,
sound/soc/codecs/nau8325.c
299
dev_dbg(nau8325->dev, "The CLK isn't supported.");
sound/soc/codecs/nau8325.c
303
regmap_update_bits(nau8325->regmap, NAU8325_R40_CLK_DET_CTRL,
sound/soc/codecs/nau8325.c
307
regmap_update_bits(nau8325->regmap, NAU8325_R03_CLK_CTRL,
sound/soc/codecs/nau8325.c
309
regmap_update_bits(nau8325->regmap, NAU8325_R03_CLK_CTRL,
sound/soc/codecs/nau8325.c
314
regmap_update_bits(nau8325->regmap, NAU8325_R03_CLK_CTRL,
sound/soc/codecs/nau8325.c
319
regmap_update_bits(nau8325->regmap, NAU8325_R03_CLK_CTRL,
sound/soc/codecs/nau8325.c
325
regmap_update_bits(nau8325->regmap, NAU8325_R65_ANALOG_CONTROL_5,
sound/soc/codecs/nau8325.c
329
regmap_update_bits(nau8325->regmap, NAU8325_R65_ANALOG_CONTROL_5,
sound/soc/codecs/nau8325.c
334
regmap_update_bits(nau8325->regmap, NAU8325_R65_ANALOG_CONTROL_5,
sound/soc/codecs/nau8325.c
342
static int nau8325_clksrc_n2(struct nau8325 *nau8325,
sound/soc/codecs/nau8325.c
385
static int nau8325_clksrc_choose(struct nau8325 *nau8325,
sound/soc/codecs/nau8325.c
392
if (!nau8325->mclk || !nau8325->fs)
sound/soc/codecs/nau8325.c
396
*srate_table = target_srate_attribute(nau8325->fs);
sound/soc/codecs/nau8325.c
403
ratio = nau8325_clksrc_n2(nau8325, *srate_table, nau8325->mclk, n2_sel);
sound/soc/codecs/nau8325.c
414
mclk = nau8325->mclk << mclk_n3_mult[j].param;
sound/soc/codecs/nau8325.c
416
ratio = nau8325_clksrc_n2(nau8325,
sound/soc/codecs/nau8325.c
436
dev_dbg(nau8325->dev, "The MCLK %d is invalid. It can't get MCLK_SRC of 256/400/500 FS (%d)",
sound/soc/codecs/nau8325.c
437
nau8325->mclk, nau8325->fs);
sound/soc/codecs/nau8325.c
440
dev_dbg(nau8325->dev, "nau8325->fs=%d,range=0x%x, %s, (n1,mu,n2,dmu):(%d,%d,%d), MCLK_SRC=%uHz (%d)",
sound/soc/codecs/nau8325.c
441
nau8325->fs, (*srate_table)->range,
sound/soc/codecs/nau8325.c
449
(*srate_table)->mclk_src[ratio] / nau8325->fs);
sound/soc/codecs/nau8325.c
454
static int nau8325_clock_config(struct nau8325 *nau8325)
sound/soc/codecs/nau8325.c
459
ret = nau8325_clksrc_choose(nau8325, &srate_table,
sound/soc/codecs/nau8325.c
464
ret = nau8325_srate_clk_apply(nau8325, srate_table,
sound/soc/codecs/nau8325.c
474
static const struct nau8325_osr_attr *nau8325_get_osr(struct nau8325 *nau8325)
sound/soc/codecs/nau8325.c
478
regmap_read(nau8325->regmap, NAU8325_R29_DAC_CTRL1, &osr);
sound/soc/codecs/nau8325.c
490
struct nau8325 *nau8325 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8325.c
493
osr = nau8325_get_osr(nau8325);
sound/soc/codecs/nau8325.c
507
struct nau8325 *nau8325 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8325.c
512
nau8325->fs = params_rate(params);
sound/soc/codecs/nau8325.c
513
osr = nau8325_get_osr(nau8325);
sound/soc/codecs/nau8325.c
514
if (!osr || !osr->osr || nau8325->fs * osr->osr > CLK_DA_AD_MAX) {
sound/soc/codecs/nau8325.c
518
regmap_update_bits(nau8325->regmap, NAU8325_R03_CLK_CTRL,
sound/soc/codecs/nau8325.c
522
ret = nau8325_clock_config(nau8325);
sound/soc/codecs/nau8325.c
544
regmap_update_bits(nau8325->regmap, NAU8325_R0D_I2S_PCM_CTRL1,
sound/soc/codecs/nau8325.c
556
struct nau8325 *nau8325 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8325.c
597
regmap_update_bits(nau8325->regmap, NAU8325_R0D_I2S_PCM_CTRL1,
sound/soc/codecs/nau8325.c
607
struct nau8325 *nau8325 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/nau8325.c
610
dev_dbg(nau8325->dev, "MCLK exceeds the range, MCLK:%d", freq);
sound/soc/codecs/nau8325.c
614
nau8325->mclk = freq;
sound/soc/codecs/nau8325.c
615
dev_dbg(nau8325->dev, "MCLK %dHz", nau8325->mclk);
sound/soc/codecs/nau8325.c
679
static void nau8325_init_regs(struct nau8325 *nau8325)
sound/soc/codecs/nau8325.c
681
struct regmap *regmap = nau8325->regmap;
sound/soc/codecs/nau8325.c
682
struct device *dev = nau8325->dev;
sound/soc/codecs/nau8325.c
694
if (nau8325->alc_enable)
sound/soc/codecs/nau8325.c
697
if (nau8325->clock_detection)
sound/soc/codecs/nau8325.c
705
if (nau8325->clock_det_data)
sound/soc/codecs/nau8325.c
713
switch (nau8325->dac_vref_microvolt) {
sound/soc/codecs/nau8325.c
731
dev_dbg(dev, "Invalid dac-vref-microvolt %d", nau8325->dac_vref_microvolt);
sound/soc/codecs/nau8325.c
743
switch (nau8325->vref_impedance_ohms) {
sound/soc/codecs/nau8325.c
761
dev_dbg(dev, "Invalid vref-impedance-ohms %d", nau8325->vref_impedance_ohms);
sound/soc/codecs/nau8325.c
781
if (nau8325->alc_enable)
sound/soc/codecs/nau8325.c
784
if (nau8325->clock_det_data)
sound/soc/codecs/nau8325.c
790
if (nau8325->clock_detection)
sound/soc/codecs/nau8325.c
803
static void nau8325_print_device_properties(struct nau8325 *nau8325)
sound/soc/codecs/nau8325.c
805
struct device *dev = nau8325->dev;
sound/soc/codecs/nau8325.c
807
dev_dbg(dev, "vref-impedance-ohms: %d", nau8325->vref_impedance_ohms);
sound/soc/codecs/nau8325.c
808
dev_dbg(dev, "dac-vref-microvolt: %d", nau8325->dac_vref_microvolt);
sound/soc/codecs/nau8325.c
809
dev_dbg(dev, "alc-enable: %d", nau8325->alc_enable);
sound/soc/codecs/nau8325.c
810
dev_dbg(dev, "clock-det-data: %d", nau8325->clock_det_data);
sound/soc/codecs/nau8325.c
811
dev_dbg(dev, "clock-detection-disable: %d", nau8325->clock_detection);
sound/soc/codecs/nau8325.c
815
struct nau8325 *nau8325)
sound/soc/codecs/nau8325.c
819
nau8325->alc_enable =
sound/soc/codecs/nau8325.c
821
nau8325->clock_det_data =
sound/soc/codecs/nau8325.c
823
nau8325->clock_detection =
sound/soc/codecs/nau8325.c
827
&nau8325->vref_impedance_ohms);
sound/soc/codecs/nau8325.c
829
nau8325->vref_impedance_ohms = 125000;
sound/soc/codecs/nau8325.c
831
&nau8325->dac_vref_microvolt);
sound/soc/codecs/nau8325.c
833
nau8325->dac_vref_microvolt = 2880000;
sound/soc/codecs/nau8325.c
841
struct nau8325 *nau8325 = dev_get_platdata(dev);
sound/soc/codecs/nau8325.c
844
if (!nau8325) {
sound/soc/codecs/nau8325.c
845
nau8325 = devm_kzalloc(dev, sizeof(*nau8325), GFP_KERNEL);
sound/soc/codecs/nau8325.c
846
if (!nau8325) {
sound/soc/codecs/nau8325.c
850
ret = nau8325_read_device_properties(dev, nau8325);
sound/soc/codecs/nau8325.c
854
i2c_set_clientdata(i2c, nau8325);
sound/soc/codecs/nau8325.c
856
nau8325->regmap = devm_regmap_init_i2c(i2c, &nau8325_regmap_config);
sound/soc/codecs/nau8325.c
857
if (IS_ERR(nau8325->regmap)) {
sound/soc/codecs/nau8325.c
858
ret = PTR_ERR(nau8325->regmap);
sound/soc/codecs/nau8325.c
861
nau8325->dev = dev;
sound/soc/codecs/nau8325.c
862
nau8325_print_device_properties(nau8325);
sound/soc/codecs/nau8325.c
864
nau8325_reset_chip(nau8325->regmap);
sound/soc/codecs/nau8325.c
865
nau8325_software_reset(nau8325->regmap);
sound/soc/codecs/nau8325.c
866
ret = regmap_read(nau8325->regmap, NAU8325_R02_DEVICE_ID, &value);
sound/soc/codecs/nau8325.c
871
nau8325_init_regs(nau8325);