Symbol: aw88261
sound/soc/codecs/aw88261.c
1011
aw88261_dev_set_volume(aw88261->aw_pa, vol_desc->ctl_volume);
sound/soc/codecs/aw88261.c
1039
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88261.c
1041
mutex_lock(&aw88261->lock);
sound/soc/codecs/aw88261.c
1044
aw88261_start(aw88261);
sound/soc/codecs/aw88261.c
1047
aw88261_dev_stop(aw88261->aw_pa);
sound/soc/codecs/aw88261.c
1052
mutex_unlock(&aw88261->lock);
sound/soc/codecs/aw88261.c
1074
static int aw88261_frcset_check(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
1080
ret = regmap_read(aw88261->regmap, AW88261_EFRH3_REG, &reg_val);
sound/soc/codecs/aw88261.c
1085
ret = regmap_read(aw88261->regmap, AW88261_EFRL3_REG, &reg_val);
sound/soc/codecs/aw88261.c
1090
if (aw88261->efuse_check == AW88261_EF_OR_CHECK)
sound/soc/codecs/aw88261.c
1096
aw88261->frcset_en = AW88261_FRCSET_ENABLE;
sound/soc/codecs/aw88261.c
1098
aw88261->frcset_en = AW88261_FRCSET_DISABLE;
sound/soc/codecs/aw88261.c
1100
dev_dbg(aw88261->aw_pa->dev, "tem is 0x%04x, frcset_en is %d",
sound/soc/codecs/aw88261.c
1101
tem, aw88261->frcset_en);
sound/soc/codecs/aw88261.c
1106
static int aw88261_dev_init(struct aw88261 *aw88261, struct aw_container *aw_cfg)
sound/soc/codecs/aw88261.c
1108
struct aw_device *aw_dev = aw88261->aw_pa;
sound/soc/codecs/aw88261.c
1124
ret = aw88261_dev_fw_update(aw88261);
sound/soc/codecs/aw88261.c
1130
ret = aw88261_frcset_check(aw88261);
sound/soc/codecs/aw88261.c
1153
static int aw88261_request_firmware_file(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
1160
aw88261->aw_pa->fw_status = AW88261_DEV_FW_FAILED;
sound/soc/codecs/aw88261.c
1162
ret = device_property_read_string(aw88261->aw_pa->dev, "firmware-name", &fw_name);
sound/soc/codecs/aw88261.c
1166
ret = request_firmware(&cont, fw_name, aw88261->aw_pa->dev);
sound/soc/codecs/aw88261.c
1168
return dev_err_probe(aw88261->aw_pa->dev, ret,
sound/soc/codecs/aw88261.c
1171
dev_info(aw88261->aw_pa->dev, "loaded %s - size: %zu\n",
sound/soc/codecs/aw88261.c
1174
aw_cfg = devm_kzalloc(aw88261->aw_pa->dev, struct_size(aw_cfg, data, cont->size), GFP_KERNEL);
sound/soc/codecs/aw88261.c
1183
aw88261->aw_cfg = aw_cfg;
sound/soc/codecs/aw88261.c
1185
ret = aw88395_dev_load_acf_check(aw88261->aw_pa, aw88261->aw_cfg);
sound/soc/codecs/aw88261.c
1187
dev_err(aw88261->aw_pa->dev, "load [%s] failed !", fw_name);
sound/soc/codecs/aw88261.c
1191
mutex_lock(&aw88261->lock);
sound/soc/codecs/aw88261.c
1193
ret = aw88261_dev_init(aw88261, aw88261->aw_cfg);
sound/soc/codecs/aw88261.c
1195
dev_err(aw88261->aw_pa->dev, "dev init failed");
sound/soc/codecs/aw88261.c
1196
mutex_unlock(&aw88261->lock);
sound/soc/codecs/aw88261.c
1204
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88261.c
1207
ret = aw88261_request_firmware_file(aw88261);
sound/soc/codecs/aw88261.c
1209
return dev_err_probe(aw88261->aw_pa->dev, ret,
sound/soc/codecs/aw88261.c
1234
static void aw88261_parse_channel_dt(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
1236
struct aw_device *aw_dev = aw88261->aw_pa;
sound/soc/codecs/aw88261.c
1241
aw88261->phase_sync = of_property_read_bool(np, "awinic,sync-flag");
sound/soc/codecs/aw88261.c
1246
static int aw88261_init(struct aw88261 *aw88261, struct i2c_client *i2c, struct regmap *regmap)
sound/soc/codecs/aw88261.c
127
static int aw88261_dev_configure_syspll(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
1273
aw88261->aw_pa = aw_dev;
sound/soc/codecs/aw88261.c
1286
aw88261_parse_channel_dt(aw88261);
sound/soc/codecs/aw88261.c
129
struct aw_device *aw_dev = aw88261->aw_pa;
sound/soc/codecs/aw88261.c
1293
struct aw88261 *aw88261;
sound/soc/codecs/aw88261.c
1299
aw88261 = devm_kzalloc(&i2c->dev, sizeof(*aw88261), GFP_KERNEL);
sound/soc/codecs/aw88261.c
1300
if (!aw88261)
sound/soc/codecs/aw88261.c
1304
aw88261->slot_num_value = AW88261_SLOT_NUM_I2S_MODE_VALUE;
sound/soc/codecs/aw88261.c
1305
aw88261->sr_value = AW88261_I2SSR_48KHZ_VALUE;
sound/soc/codecs/aw88261.c
1306
aw88261->cco_mux_value = AW88261_CCO_MUX_BYPASS_VALUE;
sound/soc/codecs/aw88261.c
1307
aw88261->fs_value = AW88261_I2SFS_24_BITS_VALUE;
sound/soc/codecs/aw88261.c
1308
aw88261->bck_value = AW88261_I2SBCK_64FS_VALUE;
sound/soc/codecs/aw88261.c
1309
aw88261->bck_inv_value = AW88261_BCKINV_NOT_INVERT_VALUE;
sound/soc/codecs/aw88261.c
1310
aw88261->tdm_bck_value = AW88261_TDM_BCK_UNSET;
sound/soc/codecs/aw88261.c
1311
aw88261->md_value = AW88261_I2SMD_PHILIPS_STANDARD_VALUE;
sound/soc/codecs/aw88261.c
1312
aw88261->rxr_slotvld_mask = 1 << AW88261_I2S_RXR_SLOTVLD_START_BIT;
sound/soc/codecs/aw88261.c
1314
mutex_init(&aw88261->lock);
sound/soc/codecs/aw88261.c
1316
i2c_set_clientdata(i2c, aw88261);
sound/soc/codecs/aw88261.c
1318
aw88261->regmap = devm_regmap_init_i2c(i2c, &aw88261_remap_config);
sound/soc/codecs/aw88261.c
1319
if (IS_ERR(aw88261->regmap)) {
sound/soc/codecs/aw88261.c
1320
ret = PTR_ERR(aw88261->regmap);
sound/soc/codecs/aw88261.c
1325
ret = aw88261_init(aw88261, i2c, aw88261->regmap);
sound/soc/codecs/aw88261.c
134
~AW88261_SLOT_NUM_MASK, aw88261->slot_num_value);
sound/soc/codecs/aw88261.c
140
aw88261->tx_slotvld_mask);
sound/soc/codecs/aw88261.c
146
aw88261->rxl_slotvld_mask);
sound/soc/codecs/aw88261.c
152
aw88261->rxr_slotvld_mask);
sound/soc/codecs/aw88261.c
158
~AW88261_CCO_MUX_MASK, aw88261->cco_mux_value);
sound/soc/codecs/aw88261.c
164
~AW88261_I2SSR_MASK, aw88261->sr_value);
sound/soc/codecs/aw88261.c
171
(aw88261->tdm_bck_value != AW88261_TDM_BCK_UNSET)
sound/soc/codecs/aw88261.c
172
? aw88261->tdm_bck_value : aw88261->bck_value);
sound/soc/codecs/aw88261.c
178
~AW88261_I2SFS_MASK, aw88261->fs_value);
sound/soc/codecs/aw88261.c
184
~AW88261_I2SMD_MASK, aw88261->md_value);
sound/soc/codecs/aw88261.c
190
~AW88261_BCKINV_MASK, aw88261->bck_inv_value);
sound/soc/codecs/aw88261.c
234
static void aw88261_reg_force_set(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
236
if (aw88261->frcset_en == AW88261_FRCSET_ENABLE) {
sound/soc/codecs/aw88261.c
238
regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL3_REG,
sound/soc/codecs/aw88261.c
241
regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL5_REG,
sound/soc/codecs/aw88261.c
244
regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL6_REG,
sound/soc/codecs/aw88261.c
247
regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL7_REG,
sound/soc/codecs/aw88261.c
250
regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL8_REG,
sound/soc/codecs/aw88261.c
253
regmap_update_bits(aw88261->regmap, AW88261_BSTCTRL9_REG,
sound/soc/codecs/aw88261.c
256
dev_dbg(aw88261->aw_pa->dev, "needn't set reg value");
sound/soc/codecs/aw88261.c
345
static int aw88261_dev_reg_update(struct aw88261 *aw88261,
sound/soc/codecs/aw88261.c
348
struct aw_device *aw_dev = aw88261->aw_pa;
sound/soc/codecs/aw88261.c
374
aw88261->amppd_st = reg_val & (~AW88261_AMPPD_MASK);
sound/soc/codecs/aw88261.c
393
aw88261->efuse_check = AW88261_EF_OR_CHECK;
sound/soc/codecs/aw88261.c
395
aw88261->efuse_check = AW88261_EF_AND_CHECK;
sound/soc/codecs/aw88261.c
465
static int aw88261_dev_fw_update(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
467
struct aw_device *aw_dev = aw88261->aw_pa;
sound/soc/codecs/aw88261.c
487
ret = aw88261_dev_reg_update(aw88261, sec_desc[AW88395_DATA_TYPE_REG].data,
sound/soc/codecs/aw88261.c
499
static int aw88261_dev_start(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
501
struct aw_device *aw_dev = aw88261->aw_pa;
sound/soc/codecs/aw88261.c
513
ret = aw88261_dev_configure_syspll(aw88261);
sound/soc/codecs/aw88261.c
533
if (aw88261->amppd_st)
sound/soc/codecs/aw88261.c
536
aw88261_reg_force_set(aw88261);
sound/soc/codecs/aw88261.c
542
if (!aw88261->mute_st)
sound/soc/codecs/aw88261.c
591
static int aw88261_reg_update(struct aw88261 *aw88261, bool force)
sound/soc/codecs/aw88261.c
593
struct aw_device *aw_dev = aw88261->aw_pa;
sound/soc/codecs/aw88261.c
602
ret = aw88261_dev_fw_update(aw88261);
sound/soc/codecs/aw88261.c
607
ret = aw88261_dev_fw_update(aw88261);
sound/soc/codecs/aw88261.c
620
static void aw88261_start_pa(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
625
ret = aw88261_reg_update(aw88261, aw88261->phase_sync);
sound/soc/codecs/aw88261.c
627
dev_dbg(aw88261->aw_pa->dev,
sound/soc/codecs/aw88261.c
631
ret = aw88261_dev_start(aw88261);
sound/soc/codecs/aw88261.c
633
dev_dbg(aw88261->aw_pa->dev,
sound/soc/codecs/aw88261.c
637
dev_dbg(aw88261->aw_pa->dev, "start success\n");
sound/soc/codecs/aw88261.c
642
dev_err(aw88261->aw_pa->dev, "start failure (%d)\n", ret);
sound/soc/codecs/aw88261.c
645
static void aw88261_start(struct aw88261 *aw88261)
sound/soc/codecs/aw88261.c
647
if (aw88261->aw_pa->fw_status != AW88261_DEV_FW_OK)
sound/soc/codecs/aw88261.c
650
if (aw88261->aw_pa->status == AW88261_DEV_PW_ON)
sound/soc/codecs/aw88261.c
653
aw88261_start_pa(aw88261);
sound/soc/codecs/aw88261.c
659
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88261.c
663
aw88261->bck_inv_value = AW88261_BCKINV_NOT_INVERT_VALUE;
sound/soc/codecs/aw88261.c
666
aw88261->bck_inv_value = AW88261_BCKINV_INVERTED_VALUE;
sound/soc/codecs/aw88261.c
669
dev_err(aw88261->aw_pa->dev, "unsupported invert mode 0x%x\n",
sound/soc/codecs/aw88261.c
677
aw88261->md_value = AW88261_I2SMD_PHILIPS_STANDARD_VALUE;
sound/soc/codecs/aw88261.c
681
aw88261->md_value = AW88261_I2SMD_MSB_JUSTIFIED_VALUE;
sound/soc/codecs/aw88261.c
684
aw88261->md_value = AW88261_I2SMD_LSB_JUSTIFIED_VALUE;
sound/soc/codecs/aw88261.c
687
dev_err(aw88261->aw_pa->dev, "unsupported DAI format 0x%x\n",
sound/soc/codecs/aw88261.c
700
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88261.c
705
aw88261->cco_mux_value = AW88261_CCO_MUX_BYPASS_VALUE;
sound/soc/codecs/aw88261.c
708
aw88261->sr_value = AW88261_I2SSR_8KHZ_VALUE;
sound/soc/codecs/aw88261.c
709
aw88261->cco_mux_value = AW88261_CCO_MUX_DIVIDED_VALUE;
sound/soc/codecs/aw88261.c
712
aw88261->sr_value = AW88261_I2SSR_11P025KHZ_VALUE;
sound/soc/codecs/aw88261.c
715
aw88261->sr_value = AW88261_I2SSR_12KHZ_VALUE;
sound/soc/codecs/aw88261.c
718
aw88261->sr_value = AW88261_I2SSR_16KHZ_VALUE;
sound/soc/codecs/aw88261.c
719
aw88261->cco_mux_value = AW88261_CCO_MUX_DIVIDED_VALUE;
sound/soc/codecs/aw88261.c
722
aw88261->sr_value = AW88261_I2SSR_22P05KHZ_VALUE;
sound/soc/codecs/aw88261.c
725
aw88261->sr_value = AW88261_I2SSR_24KHZ_VALUE;
sound/soc/codecs/aw88261.c
728
aw88261->sr_value = AW88261_I2SSR_32KHZ_VALUE;
sound/soc/codecs/aw88261.c
729
aw88261->cco_mux_value = AW88261_CCO_MUX_DIVIDED_VALUE;
sound/soc/codecs/aw88261.c
732
aw88261->sr_value = AW88261_I2SSR_44P1KHZ_VALUE;
sound/soc/codecs/aw88261.c
735
aw88261->sr_value = AW88261_I2SSR_48KHZ_VALUE;
sound/soc/codecs/aw88261.c
738
aw88261->sr_value = AW88261_I2SSR_96KHZ_VALUE;
sound/soc/codecs/aw88261.c
741
aw88261->sr_value = AW88261_I2SSR_192KHZ_VALUE;
sound/soc/codecs/aw88261.c
744
dev_err(aw88261->aw_pa->dev, "unsupported sample rate %d\n",
sound/soc/codecs/aw88261.c
751
aw88261->fs_value = AW88261_I2SFS_16_BITS_VALUE;
sound/soc/codecs/aw88261.c
754
aw88261->fs_value = AW88261_I2SFS_20_BITS_VALUE;
sound/soc/codecs/aw88261.c
757
aw88261->fs_value = AW88261_I2SFS_24_BITS_VALUE;
sound/soc/codecs/aw88261.c
760
aw88261->fs_value = AW88261_I2SFS_32_BITS_VALUE;
sound/soc/codecs/aw88261.c
763
dev_err(aw88261->aw_pa->dev, "unsupported bit width %d\n",
sound/soc/codecs/aw88261.c
770
aw88261->bck_value = AW88261_I2SBCK_32FS_VALUE;
sound/soc/codecs/aw88261.c
773
aw88261->bck_value = AW88261_I2SBCK_48FS_VALUE;
sound/soc/codecs/aw88261.c
776
aw88261->bck_value = AW88261_I2SBCK_64FS_VALUE;
sound/soc/codecs/aw88261.c
779
dev_err(aw88261->aw_pa->dev, "unsupported physical bit width %d\n",
sound/soc/codecs/aw88261.c
791
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(component);
sound/soc/codecs/aw88261.c
797
aw88261->slot_num_value = AW88261_SLOT_NUM_I2S_MODE_VALUE;
sound/soc/codecs/aw88261.c
798
aw88261->tdm_bck_value = AW88261_TDM_BCK_UNSET;
sound/soc/codecs/aw88261.c
799
aw88261->tx_slotvld_mask = 0 << AW88261_I2S_TX_SLOTVLD_START_BIT;
sound/soc/codecs/aw88261.c
800
aw88261->rxl_slotvld_mask = 0 << AW88261_I2S_RXL_SLOTVLD_START_BIT;
sound/soc/codecs/aw88261.c
801
aw88261->rxr_slotvld_mask = 1 << AW88261_I2S_RXR_SLOTVLD_START_BIT;
sound/soc/codecs/aw88261.c
804
aw88261->slot_num_value = AW88261_SLOT_NUM_TDM1S_VALUE;
sound/soc/codecs/aw88261.c
807
aw88261->slot_num_value = AW88261_SLOT_NUM_TDM2S_VALUE;
sound/soc/codecs/aw88261.c
810
aw88261->slot_num_value = AW88261_SLOT_NUM_TDM4S_VALUE;
sound/soc/codecs/aw88261.c
813
aw88261->slot_num_value = AW88261_SLOT_NUM_TDM6S_VALUE;
sound/soc/codecs/aw88261.c
816
aw88261->slot_num_value = AW88261_SLOT_NUM_TDM8S_VALUE;
sound/soc/codecs/aw88261.c
819
aw88261->slot_num_value = AW88261_SLOT_NUM_TDM16S_VALUE;
sound/soc/codecs/aw88261.c
822
dev_err(aw88261->aw_pa->dev, "unsupported slot count %d\n", slots);
sound/soc/codecs/aw88261.c
828
aw88261->tdm_bck_value = AW88261_I2SBCK_32FS_VALUE;
sound/soc/codecs/aw88261.c
832
aw88261->tdm_bck_value = AW88261_I2SBCK_48FS_VALUE;
sound/soc/codecs/aw88261.c
835
aw88261->tdm_bck_value = AW88261_I2SBCK_64FS_VALUE;
sound/soc/codecs/aw88261.c
838
dev_err(aw88261->aw_pa->dev, "unsupported slot width %d\n",
sound/soc/codecs/aw88261.c
847
aw88261->tx_slotvld_mask = chan << AW88261_I2S_TX_SLOTVLD_START_BIT;
sound/soc/codecs/aw88261.c
854
aw88261->rxl_slotvld_mask = chan << AW88261_I2S_RXL_SLOTVLD_START_BIT;
sound/soc/codecs/aw88261.c
861
aw88261->rxr_slotvld_mask = chan << AW88261_I2S_RXR_SLOTVLD_START_BIT;
sound/soc/codecs/aw88261.c
913
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88261.c
920
count = aw88261->aw_pa->prof_info.count;
sound/soc/codecs/aw88261.c
933
ret = aw88261_dev_get_prof_name(aw88261->aw_pa, count, &prof_name);
sound/soc/codecs/aw88261.c
948
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88261.c
950
ucontrol->value.integer.value[0] = aw88261->aw_pa->prof_index;
sound/soc/codecs/aw88261.c
959
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88261.c
963
mutex_lock(&aw88261->lock);
sound/soc/codecs/aw88261.c
964
ret = aw88261_dev_set_profile_index(aw88261->aw_pa, ucontrol->value.integer.value[0]);
sound/soc/codecs/aw88261.c
967
mutex_unlock(&aw88261->lock);
sound/soc/codecs/aw88261.c
971
if (aw88261->aw_pa->status) {
sound/soc/codecs/aw88261.c
972
aw88261_dev_stop(aw88261->aw_pa);
sound/soc/codecs/aw88261.c
973
aw88261_start(aw88261);
sound/soc/codecs/aw88261.c
976
mutex_unlock(&aw88261->lock);
sound/soc/codecs/aw88261.c
985
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88261.c
986
struct aw_volume_desc *vol_desc = &aw88261->aw_pa->volume_desc;
sound/soc/codecs/aw88261.c
998
struct aw88261 *aw88261 = snd_soc_component_get_drvdata(codec);
sound/soc/codecs/aw88261.c
999
struct aw_volume_desc *vol_desc = &aw88261->aw_pa->volume_desc;