ASoC: rt298: Make rt298_index_def const
authorAxel Lin <axel.lin@ingics.com>
Mon, 5 Oct 2015 13:23:48 +0000 (21:23 +0800)
committerMark Brown <broonie@kernel.org>
Fri, 16 Oct 2015 17:13:35 +0000 (18:13 +0100)
The index_cache is per instance run time state but rt298_index_def is not.
Make rt298_index_def const and make a copy of memory for index_cache rather
than directly use the rt298_index_def.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt298.c

index ff126a7cee76ff9f164a7f6e3a86f78ef0993b15..d039c995c0512f90a1bbf79a00155adf876ea690 100644 (file)
@@ -49,7 +49,7 @@ struct rt298_priv {
        int is_hp_in;
 };
 
-static struct reg_default rt298_index_def[] = {
+static const struct reg_default rt298_index_def[] = {
        { 0x01, 0xaaaa },
        { 0x02, 0x8aaa },
        { 0x03, 0x0002 },
@@ -1165,7 +1165,11 @@ static int rt298_i2c_probe(struct i2c_client *i2c,
                return -ENODEV;
        }
 
-       rt298->index_cache = rt298_index_def;
+       rt298->index_cache = devm_kmemdup(&i2c->dev, rt298_index_def,
+                                         sizeof(rt298_index_def), GFP_KERNEL);
+       if (!rt298->index_cache)
+               return -ENOMEM;
+
        rt298->index_cache_size = INDEX_CACHE_SIZE;
        rt298->i2c = i2c;
        i2c_set_clientdata(i2c, rt298);