Load some default value
authorTracy Yi <tracy-yi@ti.com>
Thu, 10 Jan 2019 07:57:09 +0000 (15:57 +0800)
committerTracy Yi <tracy-yi@ti.com>
Thu, 10 Jan 2019 09:10:05 +0000 (17:10 +0800)
Signed-off-by: Tracy Yi <tracy-yi@ti.com>
tas2562-codec.c
tas2562-regmap.c

index 9e1a87a0506c3bf16190d07b26e2398cb8a3e825..1e917e63ea2081be49af6e9403bfc0f8ba8d1f48 100644 (file)
@@ -63,7 +63,7 @@ static int tas2562_mute_ctrl_put(struct snd_kcontrol *pKcontrol,
        struct snd_ctl_elem_value *pValue);
 
 static unsigned int p_tas2562_classH_D_data[] = {
-               /* reg address                  size    values  */
+               /* reg address                  size    values */
        TAS2562_ClassHHeadroom, 0x4, 0x09, 0x99, 0x99, 0x9a,
        TAS2562_ClassHHysteresis, 0x4, 0x0, 0x0, 0x0, 0x0,
        TAS2562_ClassHMtct, 0x4, 0xb, 0x0, 0x0, 0x0,
@@ -761,6 +761,24 @@ static struct snd_soc_dai_driver tas2562_dai_driver[] = {
        },
 };
 
+static int tas2562_load_init(struct tas2562_priv *pTAS2562)
+{
+       int ret;
+
+       ret = pTAS2562->write(pTAS2562, TAS2562_MiscConfigurationReg0, 0xcf);
+       if(ret < 0)
+               return ret;
+       ret = pTAS2562->write(pTAS2562, TAS2562_TDMConfigurationReg4, 0x01);
+       if(ret < 0)
+               return ret;
+       ret = pTAS2562->write(pTAS2562, TAS2562_ClockConfiguration, 0x0c);
+       if(ret < 0)
+               return ret;
+       ret = tas2562_i2c_load_data(pTAS2562, p_tas2562_classH_D_data);
+
+       return ret;
+}
+
 static int tas2562_codec_probe(struct snd_soc_codec *codec)
 {
        int ret;
@@ -774,11 +792,11 @@ static int tas2562_codec_probe(struct snd_soc_codec *codec)
                return ret;
        }
 
+       tas2562_load_init(pTAS2562);
        tas2562_iv_enable(pTAS2562, 1);
        pTAS2562->codec = codec;
        dev_err(pTAS2562->dev, "%s\n", __func__);
 
-       tas2562_i2c_load_data(pTAS2562, p_tas2562_classH_D_data);
        return 0;
 }
 
@@ -842,13 +860,14 @@ void tas2562_LoadConfig(struct tas2562_priv *pTAS2562)
                hrtimer_cancel(&pTAS2562->mtimer);
        } else
                dev_info(pTAS2562->dev, "timer not active\n");
-               
+
        pTAS2562->hw_reset(pTAS2562);
+       msleep(2);
        pTAS2562->write(pTAS2562, TAS2562_SoftwareReset,
                        TAS2562_SoftwareReset_SoftwareReset_Reset);
-    msleep(3);
+       msleep(3);
 
-    pTAS2562->write(pTAS2562, TAS2562_MiscConfigurationReg0, 0xce);
+       tas2562_load_init(pTAS2562);
 
        ret = tas2562_set_slot(pTAS2562->codec, pTAS2562->mnSlot_width);
        if (ret < 0)
index b64941a62456a925c34fe25ad2e8b0235ed9e653..daac3ba2df9f2b69e0c9bdc79effdb83631b0572 100644 (file)
@@ -384,7 +384,7 @@ end:
                        ns_to_ktime((u64)CHECK_PERIOD * NSEC_PER_MSEC), HRTIMER_MODE_REL);
        } else
                dev_info(pTAS2562->dev, "timer not active\n");
-       
+
 #ifdef CONFIG_TAS2562_CODEC
        mutex_unlock(&pTAS2562->codec_lock);
 #endif
@@ -474,11 +474,7 @@ static int tas2562_parse_dt(struct device *dev, struct tas2562_priv *pTAS2562)
                dev_dbg(pTAS2562->dev, "ti,reset-gpio=%d",
                        pTAS2562->mnResetGPIO);
        }
-/*
-       of_property_read_u32_array(np, "debounce",
-                           debounceInfo, ARRAY_SIZE(debounceInfo));
-       gpio_set_debounce(37, debounceInfo[1]);
-*/
+
        pTAS2562->mnIRQGPIO = of_get_named_gpio(np, "ti,irq-gpio", 0);
        if (!gpio_is_valid(pTAS2562->mnIRQGPIO)) {
                dev_err(pTAS2562->dev, "Looking up %s property in node %s failed %d\n",
@@ -563,7 +559,6 @@ static int tas2562_i2c_probe(struct i2c_client *pClient,
                gpio_direction_input(pTAS2562->mnIRQGPIO);
                nResult = gpio_get_value(pTAS2562->mnIRQGPIO);
                dev_info(pTAS2562->dev, "irq GPIO state: %d\n", nResult);
-               tas2562_dev_write(pTAS2562, TAS2562_MiscConfigurationReg0, 0xce);
 
                pTAS2562->mnIRQ = gpio_to_irq(pTAS2562->mnIRQGPIO);
                dev_dbg(pTAS2562->dev, "irq = %d\n", pTAS2562->mnIRQ);