|
@@ -291,6 +291,8 @@ int twl6040_power(struct twl6040 *twl6040, int on)
|
|
|
if (twl6040->power_count++)
|
|
|
goto out;
|
|
|
|
|
|
+ clk_prepare_enable(twl6040->clk32k);
|
|
|
+
|
|
|
/* Allow writes to the chip */
|
|
|
regcache_cache_only(twl6040->regmap, false);
|
|
|
|
|
@@ -346,6 +348,8 @@ int twl6040_power(struct twl6040 *twl6040, int on)
|
|
|
|
|
|
twl6040->sysclk = 0;
|
|
|
twl6040->mclk = 0;
|
|
|
+
|
|
|
+ clk_disable_unprepare(twl6040->clk32k);
|
|
|
}
|
|
|
|
|
|
out:
|
|
@@ -644,6 +648,12 @@ static int twl6040_probe(struct i2c_client *client,
|
|
|
|
|
|
i2c_set_clientdata(client, twl6040);
|
|
|
|
|
|
+ twl6040->clk32k = devm_clk_get(&client->dev, "clk32k");
|
|
|
+ if (IS_ERR(twl6040->clk32k)) {
|
|
|
+ dev_info(&client->dev, "clk32k is not handled\n");
|
|
|
+ twl6040->clk32k = NULL;
|
|
|
+ }
|
|
|
+
|
|
|
twl6040->supplies[0].supply = "vio";
|
|
|
twl6040->supplies[1].supply = "v2v1";
|
|
|
ret = devm_regulator_bulk_get(&client->dev, TWL6040_NUM_SUPPLIES,
|