#include <sound/jack.h>
#include <linux/workqueue.h>
#include <sound/rt286.h>
-- --#include <sound/hda_verbs.h>
#include "rl6347a.h"
#include "rt286.h"
#define RT288_VENDOR_ID 0x10ec0288
struct rt286_priv {
---- const struct reg_default *index_cache;
++++ struct reg_default *index_cache;
int index_cache_size;
struct regmap *regmap;
struct snd_soc_codec *codec;
return -ENODEV;
}
---- rt286->index_cache = rt286_index_def;
++++ rt286->index_cache = devm_kmemdup(&i2c->dev, rt286_index_def,
++++ sizeof(rt286_index_def), GFP_KERNEL);
++++ if (!rt286->index_cache)
++++ return -ENOMEM;
++++
rt286->index_cache_size = INDEX_CACHE_SIZE;
rt286->i2c = i2c;
i2c_set_clientdata(i2c, rt286);
#include <sound/jack.h>
#include <linux/workqueue.h>
#include <sound/rt298.h>
-- --#include <sound/hda_verbs.h>
#include "rl6347a.h"
#include "rt298.h"
};
static struct reg_default rt298_index_def[] = {
---- { 0x01, 0xaaaa },
---- { 0x02, 0x8aaa },
++++ { 0x01, 0xa5a8 },
++++ { 0x02, 0x8e95 },
{ 0x03, 0x0002 },
---- { 0x04, 0xaf01 },
---- { 0x08, 0x000d },
---- { 0x09, 0xd810 },
---- { 0x0a, 0x0120 },
++++ { 0x04, 0xaf67 },
++++ { 0x08, 0x200f },
++++ { 0x09, 0xd010 },
++++ { 0x0a, 0x0100 },
{ 0x0b, 0x0000 },
{ 0x0d, 0x2800 },
---- { 0x0f, 0x0000 },
---- { 0x19, 0x0a17 },
++++ { 0x0f, 0x0022 },
++++ { 0x19, 0x0217 },
{ 0x20, 0x0020 },
{ 0x33, 0x0208 },
{ 0x46, 0x0300 },
---- { 0x49, 0x0004 },
---- { 0x4f, 0x50e9 },
---- { 0x50, 0x2000 },
---- { 0x63, 0x2902 },
++++ { 0x49, 0x4004 },
++++ { 0x4f, 0x50c9 },
++++ { 0x50, 0x3000 },
++++ { 0x63, 0x1b02 },
{ 0x67, 0x1111 },
{ 0x68, 0x1016 },
{ 0x69, 0x273f },
mdelay(10);
if (!rt298->pdata.gpio2_en)
---- regmap_write(rt298->regmap, RT298_SET_DMIC2_DEFAULT, 0x4000);
++++ regmap_write(rt298->regmap, RT298_SET_DMIC2_DEFAULT, 0x40);
else
regmap_write(rt298->regmap, RT298_SET_DMIC2_DEFAULT, 0);