Lines Matching defs:sgtl5000

3 // sgtl5000.c  --  SGTL5000 ALSA SoC Audio driver
29 #include "sgtl5000.h"
41 /* default value of sgtl5000 registers */
94 /* regulator supplies for sgtl5000, VDDD is an optional external supply */
140 /* sgtl5000 private structure in codec */
270 struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
277 sgtl5000->micbias_resistor << SGTL5000_BIAS_R_SHIFT);
307 struct sgtl5000_priv *sgtl5000 =
312 sgtl5000->mute_state[event_source] =
318 sgtl5000->mute_state[event_source]);
321 sgtl5000->mute_state[event_source] =
327 sgtl5000->mute_state[event_source]);
475 /* routes for sgtl5000 */
798 struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
801 sgtl5000->master = 0;
813 sgtl5000->master = 1;
843 sgtl5000->fmt = fmt & SND_SOC_DAIFMT_FORMAT_MASK;
866 struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
870 sgtl5000->sysclk = freq;
881 * sgtl5000 provides 2 clock sources:
894 struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
957 switch (sgtl5000->sysclk / frame_rate) {
972 if (sgtl5000->master) {
980 sgtl5000->sysclk / frame_rate);
992 if (sgtl5000->sysclk > 17000000) {
994 in = sgtl5000->sysclk / 2;
997 in = sgtl5000->sysclk;
1052 struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
1059 if (!sgtl5000->sysclk) {
1081 if (sgtl5000->fmt == SND_SOC_DAIFMT_RIGHT_J)
1098 if (sgtl5000->fmt == SND_SOC_DAIFMT_RIGHT_J)
1170 .name = "sgtl5000",
1279 * sgtl5000 has 3 internal power supplies:
1301 struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
1303 vdda = regulator_get_voltage(sgtl5000->supplies[VDDA].consumer);
1304 vddio = regulator_get_voltage(sgtl5000->supplies[VDDIO].consumer);
1305 vddd = (sgtl5000->num_supplies > VDDD)
1306 ? regulator_get_voltage(sgtl5000->supplies[VDDD].consumer)
1348 if (regulator_is_equal(sgtl5000->supplies[VDDA].consumer,
1349 sgtl5000->supplies[VDDIO].consumer)) {
1425 struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client);
1427 for (i = 0; i < ARRAY_SIZE(sgtl5000->supplies); i++)
1428 sgtl5000->supplies[i].supply = supply_names[i];
1440 sgtl5000->num_supplies = ARRAY_SIZE(sgtl5000->supplies)
1442 ret = regulator_bulk_get(&client->dev, sgtl5000->num_supplies,
1443 sgtl5000->supplies);
1447 ret = regulator_bulk_enable(sgtl5000->num_supplies,
1448 sgtl5000->supplies);
1452 regulator_bulk_free(sgtl5000->num_supplies,
1453 sgtl5000->supplies);
1462 struct sgtl5000_priv *sgtl5000 = snd_soc_component_get_drvdata(component);
1465 /* power up sgtl5000 */
1486 reg = ((sgtl5000->lrclk_strength) << SGTL5000_PAD_I2S_LRCLK_SHIFT |
1487 (sgtl5000->sclk_strength) << SGTL5000_PAD_I2S_SCLK_SHIFT |
1496 sgtl5000->micbias_resistor << SGTL5000_BIAS_R_SHIFT);
1500 sgtl5000->micbias_voltage << SGTL5000_BIAS_VOLT_SHIFT);
1558 * sgtl5000 registers, to make sure we always start with the sane registers
1561 * Since sgtl5000 does not have a reset line, nor a reset command in software,
1568 struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client);
1574 ret = regmap_write(sgtl5000->regmap, index, val);
1585 struct sgtl5000_priv *sgtl5000;
1591 sgtl5000 = devm_kzalloc(&client->dev, sizeof(*sgtl5000), GFP_KERNEL);
1592 if (!sgtl5000)
1595 i2c_set_clientdata(client, sgtl5000);
1601 sgtl5000->regmap = devm_regmap_init_i2c(client, &sgtl5000_regmap);
1602 if (IS_ERR(sgtl5000->regmap)) {
1603 ret = PTR_ERR(sgtl5000->regmap);
1608 sgtl5000->mclk = devm_clk_get(&client->dev, NULL);
1609 if (IS_ERR(sgtl5000->mclk)) {
1610 ret = PTR_ERR(sgtl5000->mclk);
1621 ret = clk_prepare_enable(sgtl5000->mclk);
1631 ret = regmap_read(sgtl5000->regmap, SGTL5000_CHIP_ID, &reg);
1640 "Device with ID register %x is not a sgtl5000\n", reg);
1646 dev_info(&client->dev, "sgtl5000 revision 0x%x\n", rev);
1647 sgtl5000->revision = rev;
1650 ret = regmap_write(sgtl5000->regmap,
1658 ret = regmap_write(sgtl5000->regmap, SGTL5000_CHIP_ANA_CTRL,
1673 ret = regmap_read(sgtl5000->regmap, SGTL5000_CHIP_ANA_POWER, &value);
1679 ret = regmap_update_bits(sgtl5000->regmap,
1693 if (sgtl5000->num_supplies <= VDDD) {
1695 ret = regmap_update_bits(sgtl5000->regmap,
1715 ret = regmap_write(sgtl5000->regmap, SGTL5000_CHIP_ANA_POWER, ana_pwr);
1726 sgtl5000->micbias_resistor = 0;
1729 sgtl5000->micbias_resistor = 1;
1732 sgtl5000->micbias_resistor = 2;
1735 sgtl5000->micbias_resistor = 3;
1738 sgtl5000->micbias_resistor = 2;
1744 sgtl5000->micbias_resistor = 2;
1751 sgtl5000->micbias_voltage = (value / 250) - 5;
1753 sgtl5000->micbias_voltage = 0;
1758 sgtl5000->micbias_voltage = 0;
1762 sgtl5000->lrclk_strength = I2S_LRCLK_STRENGTH_LOW;
1766 sgtl5000->lrclk_strength = value;
1769 sgtl5000->sclk_strength = I2S_SCLK_STRENGTH_LOW;
1773 sgtl5000->sclk_strength = value;
1776 /* Ensure sgtl5000 will start with sane register values */
1787 clk_disable_unprepare(sgtl5000->mclk);
1790 regulator_bulk_disable(sgtl5000->num_supplies, sgtl5000->supplies);
1791 regulator_bulk_free(sgtl5000->num_supplies, sgtl5000->supplies);
1798 struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client);
1800 regmap_write(sgtl5000->regmap, SGTL5000_CHIP_CLK_CTRL, SGTL5000_CHIP_CLK_CTRL_DEFAULT);
1801 regmap_write(sgtl5000->regmap, SGTL5000_CHIP_DIG_POWER, SGTL5000_DIG_POWER_DEFAULT);
1802 regmap_write(sgtl5000->regmap, SGTL5000_CHIP_ANA_POWER, SGTL5000_ANA_POWER_DEFAULT);
1804 clk_disable_unprepare(sgtl5000->mclk);
1805 regulator_bulk_disable(sgtl5000->num_supplies, sgtl5000->supplies);
1806 regulator_bulk_free(sgtl5000->num_supplies, sgtl5000->supplies);
1817 {"sgtl5000", 0},
1824 { .compatible = "fsl,sgtl5000", },
1831 .name = "sgtl5000",