Lines Matching refs:pcm_dev

541 static int pcmdev_dev_read(struct pcmdevice_priv *pcm_dev,  in pcmdev_dev_read()  argument
544 struct regmap *map = pcm_dev->regmap; in pcmdev_dev_read()
547 if (dev_no >= pcm_dev->ndev) { in pcmdev_dev_read()
548 dev_err(pcm_dev->dev, "%s: no such channel(%d)\n", __func__, in pcmdev_dev_read()
553 ret = pcmdev_change_dev(pcm_dev, dev_no); in pcmdev_dev_read()
555 dev_err(pcm_dev->dev, "%s: chg dev err = %d\n", __func__, ret); in pcmdev_dev_read()
561 dev_err(pcm_dev->dev, "%s: err = %d\n", __func__, ret); in pcmdev_dev_read()
566 static int pcmdev_dev_update_bits(struct pcmdevice_priv *pcm_dev, in pcmdev_dev_update_bits() argument
570 struct regmap *map = pcm_dev->regmap; in pcmdev_dev_update_bits()
573 if (dev_no >= pcm_dev->ndev) { in pcmdev_dev_update_bits()
574 dev_err(pcm_dev->dev, "%s: no such channel(%d)\n", __func__, in pcmdev_dev_update_bits()
579 ret = pcmdev_change_dev(pcm_dev, dev_no); in pcmdev_dev_update_bits()
581 dev_err(pcm_dev->dev, "%s: chg dev err = %d\n", __func__, ret); in pcmdev_dev_update_bits()
587 dev_err(pcm_dev->dev, "%s: update_bits err=%d\n", in pcmdev_dev_update_bits()
597 struct pcmdevice_priv *pcm_dev = in pcmdev_get_volsw() local
608 mutex_lock(&pcm_dev->codec_lock); in pcmdev_get_volsw()
610 if (pcm_dev->chip_id == PCM1690) { in pcmdev_get_volsw()
611 ret = pcmdev_dev_read(pcm_dev, dev_no, PCM1690_REG_MODE_CTRL, in pcmdev_get_volsw()
614 dev_err(pcm_dev->dev, "%s: read mode err=%d\n", in pcmdev_get_volsw()
631 ret = pcmdev_dev_read(pcm_dev, dev_no, reg, &val); in pcmdev_get_volsw()
633 dev_err(pcm_dev->dev, "%s: read err=%d\n", in pcmdev_get_volsw()
643 mutex_unlock(&pcm_dev->codec_lock); in pcmdev_get_volsw()
670 struct pcmdevice_priv *pcm_dev = in pcmdev_put_volsw() local
681 mutex_lock(&pcm_dev->codec_lock); in pcmdev_put_volsw()
699 rc = pcmdev_dev_update_bits(pcm_dev, dev_no, reg, val_mask, val); in pcmdev_put_volsw()
701 dev_err(pcm_dev->dev, "%s: update_bits err = %d\n", in pcmdev_put_volsw()
705 mutex_unlock(&pcm_dev->codec_lock); in pcmdev_put_volsw()
1086 static int pcmdev_dev_bulk_write(struct pcmdevice_priv *pcm_dev, in pcmdev_dev_bulk_write() argument
1090 struct regmap *map = pcm_dev->regmap; in pcmdev_dev_bulk_write()
1093 if (dev_no >= pcm_dev->ndev) { in pcmdev_dev_bulk_write()
1094 dev_err(pcm_dev->dev, "%s: no such channel(%d)\n", __func__, in pcmdev_dev_bulk_write()
1099 ret = pcmdev_change_dev(pcm_dev, dev_no); in pcmdev_dev_bulk_write()
1101 dev_err(pcm_dev->dev, "%s: chg dev err = %d\n", __func__, ret); in pcmdev_dev_bulk_write()
1107 dev_err(pcm_dev->dev, "%s: bulk_write err = %d\n", __func__, in pcmdev_dev_bulk_write()
1113 static int pcmdev_dev_write(struct pcmdevice_priv *pcm_dev, in pcmdev_dev_write() argument
1116 struct regmap *map = pcm_dev->regmap; in pcmdev_dev_write()
1119 if (dev_no >= pcm_dev->ndev) { in pcmdev_dev_write()
1120 dev_err(pcm_dev->dev, "%s: no such channel(%d)\n", __func__, in pcmdev_dev_write()
1125 ret = pcmdev_change_dev(pcm_dev, dev_no); in pcmdev_dev_write()
1127 dev_err(pcm_dev->dev, "%s: chg dev err = %d\n", __func__, ret); in pcmdev_dev_write()
1133 dev_err(pcm_dev->dev, "%s: err = %d\n", __func__, ret); in pcmdev_dev_write()
1144 struct pcmdevice_priv *pcm_dev = in pcmdevice_info_profile() local
1150 uinfo->value.integer.max = max(0, pcm_dev->regbin.ncfgs - 1); in pcmdevice_info_profile()
1161 struct pcmdevice_priv *pcm_dev = in pcmdevice_get_profile_id() local
1164 ucontrol->value.integer.value[0] = pcm_dev->cur_conf; in pcmdevice_get_profile_id()
1175 struct pcmdevice_priv *pcm_dev = in pcmdevice_set_profile_id() local
1178 int max = pcm_dev->regbin.ncfgs - 1; in pcmdevice_set_profile_id()
1183 if (pcm_dev->cur_conf != nr_profile) { in pcmdevice_set_profile_id()
1184 pcm_dev->cur_conf = nr_profile; in pcmdevice_set_profile_id()
1204 static void pcm9211_sw_rst(struct pcmdevice_priv *pcm_dev) in pcm9211_sw_rst() argument
1208 for (i = 0; i < pcm_dev->ndev; i++) { in pcm9211_sw_rst()
1209 ret = pcmdev_dev_update_bits(pcm_dev, i, in pcm9211_sw_rst()
1213 dev_err(pcm_dev->dev, "%s: dev %d swreset fail %d\n", in pcm9211_sw_rst()
1218 static void pcmdevice_sw_rst(struct pcmdevice_priv *pcm_dev) in pcmdevice_sw_rst() argument
1222 for (i = 0; i < pcm_dev->ndev; i++) { in pcmdevice_sw_rst()
1223 ret = pcmdev_dev_write(pcm_dev, i, PCMDEVICE_REG_SWRESET, in pcmdevice_sw_rst()
1226 dev_err(pcm_dev->dev, "%s: dev %d swreset fail %d\n", in pcmdevice_sw_rst()
1235 struct pcmdevice_priv *pcm_dev = (struct pcmdevice_priv *)ctxt; in pcmdevice_add_config() local
1246 if (pcm_dev->regbin.fw_hdr.binary_version_num >= 0x105) { in pcmdevice_add_config()
1249 dev_err(pcm_dev->dev, in pcmdevice_add_config()
1259 dev_err(pcm_dev->dev, "%s: nblocks out of boundary\n", in pcmdevice_add_config()
1277 dev_err(pcm_dev->dev, in pcmdevice_add_config()
1297 (1 << pcm_dev->ndev) - 1; in pcmdevice_add_config()
1317 dev_err(pcm_dev->dev, in pcmdevice_add_config()
1336 static int pcmdev_gain_ctrl_add(struct pcmdevice_priv *pcm_dev, in pcmdev_gain_ctrl_add() argument
1339 struct i2c_adapter *adap = pcm_dev->client->adapter; in pcmdev_gain_ctrl_add()
1340 struct snd_soc_component *comp = pcm_dev->component; in pcmdev_gain_ctrl_add()
1344 unsigned int id = pcm_dev->chip_id; in pcmdev_gain_ctrl_add()
1351 dev_dbg(pcm_dev->dev, "%s: no gain ctrl for %s\n", __func__, in pcmdev_gain_ctrl_add()
1352 pcm_dev->dev_name); in pcmdev_gain_ctrl_add()
1356 pcmdev_controls = devm_kzalloc(pcm_dev->dev, in pcmdev_gain_ctrl_add()
1366 name = devm_kzalloc(pcm_dev->dev, in pcmdev_gain_ctrl_add()
1373 ctrl_name, pcm_dev->upper_dev_name, adap->nr, in pcmdev_gain_ctrl_add()
1377 pcmdev_ctrl = devm_kmemdup(pcm_dev->dev, in pcmdev_gain_ctrl_add()
1403 dev_err(pcm_dev->dev, "%s: add_controls err = %d\n", in pcmdev_gain_ctrl_add()
1409 static int pcmdev_profile_ctrl_add(struct pcmdevice_priv *pcm_dev) in pcmdev_profile_ctrl_add() argument
1411 struct snd_soc_component *comp = pcm_dev->component; in pcmdev_profile_ctrl_add()
1412 struct i2c_adapter *adap = pcm_dev->client->adapter; in pcmdev_profile_ctrl_add()
1417 pcmdev_ctrl = devm_kzalloc(pcm_dev->dev, in pcmdev_profile_ctrl_add()
1423 name = devm_kzalloc(pcm_dev->dev, SNDRV_CTL_ELEM_ID_NAME_MAXLEN, in pcmdev_profile_ctrl_add()
1429 "%s i2c%d Profile id", pcm_dev->upper_dev_name, adap->nr); in pcmdev_profile_ctrl_add()
1438 dev_err(pcm_dev->dev, "%s: add_controls err = %d\n", in pcmdev_profile_ctrl_add()
1446 struct pcmdevice_priv *pcm_dev = (struct pcmdevice_priv *) ctxt; in pcmdevice_config_info_remove() local
1447 struct pcmdevice_regbin *regbin = &(pcm_dev->regbin); in pcmdevice_config_info_remove()
1473 struct pcmdevice_priv *pcm_dev = ctxt; in pcmdev_regbin_ready() local
1480 regbin = &(pcm_dev->regbin); in pcmdev_regbin_ready()
1483 dev_err(pcm_dev->dev, "%s: failed to read %s\n", in pcmdev_regbin_ready()
1484 __func__, pcm_dev->bin_name); in pcmdev_regbin_ready()
1485 pcm_dev->fw_state = PCMDEVICE_FW_LOAD_FAILED; in pcmdev_regbin_ready()
1494 dev_err(pcm_dev->dev, "%s: file size(%d) not match %u", in pcmdev_regbin_ready()
1496 pcm_dev->fw_state = PCMDEVICE_FW_LOAD_FAILED; in pcmdev_regbin_ready()
1505 dev_err(pcm_dev->dev, "%s: bin version 0x%04x is out of date", in pcmdev_regbin_ready()
1507 pcm_dev->fw_state = PCMDEVICE_FW_LOAD_FAILED; in pcmdev_regbin_ready()
1522 if (fw_hdr->ndev != pcm_dev->ndev) { in pcmdev_regbin_ready()
1523 dev_err(pcm_dev->dev, "%s: invalid ndev(%u)\n", __func__, in pcmdev_regbin_ready()
1525 pcm_dev->fw_state = PCMDEVICE_FW_LOAD_FAILED; in pcmdev_regbin_ready()
1531 dev_err(pcm_dev->dev, "%s: devs out of boundary!\n", __func__); in pcmdev_regbin_ready()
1532 pcm_dev->fw_state = PCMDEVICE_FW_LOAD_FAILED; in pcmdev_regbin_ready()
1550 dev_err(pcm_dev->dev, "%s: bin file error!\n", __func__); in pcmdev_regbin_ready()
1551 pcm_dev->fw_state = PCMDEVICE_FW_LOAD_FAILED; in pcmdev_regbin_ready()
1557 pcm_dev->fw_state = PCMDEVICE_FW_LOAD_FAILED; in pcmdev_regbin_ready()
1569 pcm_dev->fw_state = PCMDEVICE_FW_LOAD_FAILED; in pcmdev_regbin_ready()
1577 if (pcm_dev->fw_state == PCMDEVICE_FW_LOAD_FAILED) { in pcmdev_regbin_ready()
1578 dev_err(pcm_dev->dev, in pcmdev_regbin_ready()
1580 pcmdevice_config_info_remove(pcm_dev); in pcmdev_regbin_ready()
1588 struct pcmdevice_priv *pcm_dev = snd_soc_component_get_drvdata(comp); in pcmdevice_comp_probe() local
1589 struct i2c_adapter *adap = pcm_dev->client->adapter; in pcmdevice_comp_probe()
1593 mutex_lock(&pcm_dev->codec_lock); in pcmdevice_comp_probe()
1595 pcm_dev->component = comp; in pcmdevice_comp_probe()
1597 for (i = 0; i < pcm_dev->ndev; i++) { in pcmdevice_comp_probe()
1599 ret = pcmdev_gain_ctrl_add(pcm_dev, i, j); in pcmdevice_comp_probe()
1613 scnprintf(pcm_dev->bin_name, PCMDEVICE_BIN_FILENAME_LEN, in pcmdevice_comp_probe()
1625 scnprintf(pcm_dev->bin_name, PCMDEVICE_BIN_FILENAME_LEN, in pcmdevice_comp_probe()
1626 "%s-i2c-%d-%udev.bin", pcm_dev->dev_name, adap->nr, in pcmdevice_comp_probe()
1627 pcm_dev->ndev); in pcmdevice_comp_probe()
1630 ret = request_firmware(&fw_entry, pcm_dev->bin_name, pcm_dev->dev); in pcmdevice_comp_probe()
1632 dev_err(pcm_dev->dev, "%s: request %s err = %d\n", __func__, in pcmdevice_comp_probe()
1633 pcm_dev->bin_name, ret); in pcmdevice_comp_probe()
1637 ret = pcmdev_regbin_ready(fw_entry, pcm_dev); in pcmdevice_comp_probe()
1639 dev_err(pcm_dev->dev, "%s: %s parse err = %d\n", __func__, in pcmdevice_comp_probe()
1640 pcm_dev->bin_name, ret); in pcmdevice_comp_probe()
1643 ret = pcmdev_profile_ctrl_add(pcm_dev); in pcmdevice_comp_probe()
1647 mutex_unlock(&pcm_dev->codec_lock); in pcmdevice_comp_probe()
1654 struct pcmdevice_priv *pcm_dev = snd_soc_component_get_drvdata(codec); in pcmdevice_comp_remove() local
1656 if (!pcm_dev) in pcmdevice_comp_remove()
1658 mutex_lock(&pcm_dev->codec_lock); in pcmdevice_comp_remove()
1659 pcmdevice_config_info_remove(pcm_dev); in pcmdevice_comp_remove()
1660 mutex_unlock(&pcm_dev->codec_lock); in pcmdevice_comp_remove()
1690 static int pcmdev_single_byte_wr(struct pcmdevice_priv *pcm_dev, in pcmdev_single_byte_wr() argument
1699 dev_err(pcm_dev->dev, "%s: dev-%d byt wr out of boundary\n", in pcmdev_single_byte_wr()
1705 ret = pcmdev_dev_write(pcm_dev, devn, in pcmdev_single_byte_wr()
1710 dev_err(pcm_dev->dev, "%s: dev-%d single write err\n", in pcmdev_single_byte_wr()
1719 static int pcmdev_burst_wr(struct pcmdevice_priv *pcm_dev, in pcmdev_burst_wr() argument
1728 dev_err(pcm_dev->dev, "%s: dev-%d burst Out of boundary\n", in pcmdev_burst_wr()
1733 dev_err(pcm_dev->dev, "%s: dev-%d bst-len(%u) not div by 4\n", in pcmdev_burst_wr()
1737 ret = pcmdev_dev_bulk_write(pcm_dev, devn, in pcmdev_burst_wr()
1742 dev_err(pcm_dev->dev, "%s: dev-%d bulk_write err = %d\n", in pcmdev_burst_wr()
1750 static int pcmdev_delay(struct pcmdevice_priv *pcm_dev, in pcmdev_delay() argument
1757 dev_err(pcm_dev->dev, "%s: dev-%d delay out of boundary\n", in pcmdev_delay()
1768 static int pcmdev_bits_wr(struct pcmdevice_priv *pcm_dev, in pcmdev_bits_wr() argument
1775 dev_err(pcm_dev->dev, "%s: dev-%d bit write out of memory\n", in pcmdev_bits_wr()
1779 ret = pcmdev_dev_update_bits(pcm_dev, devn, in pcmdev_bits_wr()
1784 dev_err(pcm_dev->dev, "%s: dev-%d update_bits err = %d\n", in pcmdev_bits_wr()
1795 struct pcmdevice_priv *pcm_dev = (struct pcmdevice_priv *)ctxt; in pcmdevice_process_block() local
1804 dev_end = pcm_dev->ndev; in pcmdevice_process_block()
1811 ret = pcmdev_single_byte_wr(pcm_dev, data, devn, sublocksize); in pcmdevice_process_block()
1814 ret = pcmdev_burst_wr(pcm_dev, data, devn, sublocksize); in pcmdevice_process_block()
1817 ret = pcmdev_delay(pcm_dev, data, devn, sublocksize); in pcmdevice_process_block()
1820 ret = pcmdev_bits_wr(pcm_dev, data, devn, sublocksize); in pcmdevice_process_block()
1839 struct pcmdevice_priv *pcm_dev = (struct pcmdevice_priv *)ctxt; in pcmdevice_select_cfg_blk() local
1840 struct pcmdevice_regbin *regbin = &(pcm_dev->regbin); in pcmdevice_select_cfg_blk()
1846 dev_err(pcm_dev->dev, "%s: conf_no should be less than %u\n", in pcmdevice_select_cfg_blk()
1856 dev_err(pcm_dev->dev, in pcmdevice_select_cfg_blk()
1865 ret = pcmdevice_process_block(pcm_dev, in pcmdevice_select_cfg_blk()
1871 dev_err(pcm_dev->dev, in pcmdevice_select_cfg_blk()
1879 dev_err(pcm_dev->dev, "%s: %u %u size is not same\n", in pcmdevice_select_cfg_blk()
1890 struct pcmdevice_priv *pcm_dev = snd_soc_component_get_drvdata(codec); in pcmdevice_mute() local
1893 if (pcm_dev->fw_state == PCMDEVICE_FW_LOAD_FAILED) { in pcmdevice_mute()
1894 dev_err(pcm_dev->dev, "%s: bin file not loaded\n", __func__); in pcmdevice_mute()
1903 mutex_lock(&pcm_dev->codec_lock); in pcmdevice_mute()
1904 pcmdevice_select_cfg_blk(pcm_dev, pcm_dev->cur_conf, block_type); in pcmdevice_mute()
1905 mutex_unlock(&pcm_dev->codec_lock); in pcmdevice_mute()
1912 struct pcmdevice_priv *pcm_dev = snd_soc_dai_get_drvdata(dai); in pcmdevice_hw_params() local
1925 dev_err(pcm_dev->dev, "%s: incorrect sample rate = %u\n", in pcmdevice_hw_params()
1942 dev_err(pcm_dev->dev, "%s: incorrect slot width = %u\n", in pcmdevice_hw_params()
1950 dev_err(pcm_dev->dev, "%s: incorrect bclk rate = %d\n", in pcmdevice_hw_params()
2035 static void pcmdevice_remove(struct pcmdevice_priv *pcm_dev) in pcmdevice_remove() argument
2037 if (pcm_dev->irq) in pcmdevice_remove()
2038 free_irq(pcm_dev->irq, pcm_dev); in pcmdevice_remove()
2039 mutex_destroy(&pcm_dev->codec_lock); in pcmdevice_remove()
2059 struct pcmdevice_priv *pcm_dev; in pcmdevice_i2c_probe() local
2064 pcm_dev = devm_kzalloc(&i2c->dev, sizeof(*pcm_dev), GFP_KERNEL); in pcmdevice_i2c_probe()
2065 if (!pcm_dev) in pcmdevice_i2c_probe()
2068 pcm_dev->chip_id = (uintptr_t)i2c_get_match_data(i2c); in pcmdevice_i2c_probe()
2070 pcm_dev->dev = &i2c->dev; in pcmdevice_i2c_probe()
2071 pcm_dev->client = i2c; in pcmdevice_i2c_probe()
2073 if (pcm_dev->chip_id >= MAX_DEVICE) in pcmdevice_i2c_probe()
2074 pcm_dev->chip_id = 0; in pcmdevice_i2c_probe()
2076 strscpy(pcm_dev->dev_name, pcmdevice_i2c_id[pcm_dev->chip_id].name, in pcmdevice_i2c_probe()
2077 sizeof(pcm_dev->dev_name)); in pcmdevice_i2c_probe()
2079 strscpy(pcm_dev->upper_dev_name, in pcmdevice_i2c_probe()
2080 pcmdevice_i2c_id[pcm_dev->chip_id].name, in pcmdevice_i2c_probe()
2081 sizeof(pcm_dev->upper_dev_name)); in pcmdevice_i2c_probe()
2083 str_to_upper(pcm_dev->upper_dev_name); in pcmdevice_i2c_probe()
2085 pcm_dev->regmap = devm_regmap_init_i2c(i2c, &pcmdevice_i2c_regmap); in pcmdevice_i2c_probe()
2086 if (IS_ERR(pcm_dev->regmap)) { in pcmdevice_i2c_probe()
2087 ret = PTR_ERR(pcm_dev->regmap); in pcmdevice_i2c_probe()
2093 i2c_set_clientdata(i2c, pcm_dev); in pcmdevice_i2c_probe()
2094 mutex_init(&pcm_dev->codec_lock); in pcmdevice_i2c_probe()
2095 np = pcm_dev->dev->of_node; in pcmdevice_i2c_probe()
2109 pcm_dev->irq = of_irq_get(np, 0); in pcmdevice_i2c_probe()
2112 pcm_dev->addr[i] = dev_addrs[i]; in pcmdevice_i2c_probe()
2114 pcm_dev->ndev = ndev; in pcmdevice_i2c_probe()
2116 pcm_dev->hw_rst = devm_gpiod_get_optional(&i2c->dev, in pcmdevice_i2c_probe()
2119 if (IS_ERR(pcm_dev->hw_rst)) { in pcmdevice_i2c_probe()
2120 if (pcm_dev->chip_id == PCM9211 || pcm_dev->chip_id == PCM1690) in pcmdevice_i2c_probe()
2121 pcm9211_sw_rst(pcm_dev); in pcmdevice_i2c_probe()
2123 pcmdevice_sw_rst(pcm_dev); in pcmdevice_i2c_probe()
2125 gpiod_set_value_cansleep(pcm_dev->hw_rst, 0); in pcmdevice_i2c_probe()
2127 gpiod_set_value_cansleep(pcm_dev->hw_rst, 1); in pcmdevice_i2c_probe()
2130 if (pcm_dev->chip_id == PCM1690) in pcmdevice_i2c_probe()
2132 if (pcm_dev->irq) { in pcmdevice_i2c_probe()
2133 dev_dbg(pcm_dev->dev, "irq = %d", pcm_dev->irq); in pcmdevice_i2c_probe()
2135 dev_err(pcm_dev->dev, "No irq provided\n"); in pcmdevice_i2c_probe()
2146 pcmdevice_remove(pcm_dev); in pcmdevice_i2c_probe()
2152 struct pcmdevice_priv *pcm_dev = i2c_get_clientdata(i2c); in pcmdevice_i2c_remove() local
2154 pcmdevice_remove(pcm_dev); in pcmdevice_i2c_remove()