提交 2b4d9d2b 编写于 作者: R Russell King

MFD: ucb1x00-core: disable mcp clock when bus is not required

The ucb1x00-core was leaving the mcp clock enabled indefinitely after
probe.  This needlessly wastes power.  Add the necessary disables to
ensure that the clock remains off when we don't need it.
Acked-by: NJochen Friedrich <jochen@scram.de>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 ed442b67
......@@ -554,16 +554,17 @@ static int ucb1x00_probe(struct mcp *mcp)
mcp_enable(mcp);
id = mcp_reg_read(mcp, UCB_ID);
mcp_disable(mcp);
if (id != UCB_ID_1200 && id != UCB_ID_1300 && id != UCB_ID_TC35143) {
printk(KERN_WARNING "UCB1x00 ID not found: %04x\n", id);
goto err_disable;
goto out;
}
ucb = kzalloc(sizeof(struct ucb1x00), GFP_KERNEL);
ret = -ENOMEM;
if (!ucb)
goto err_disable;
goto out;
device_initialize(&ucb->dev);
ucb->dev.class = &ucb1x00_class;
......@@ -581,7 +582,9 @@ static int ucb1x00_probe(struct mcp *mcp)
if (ret)
goto err_dev_add;
ucb1x00_enable(ucb);
ucb->irq = ucb1x00_detect_irq(ucb);
ucb1x00_disable(ucb);
if (ucb->irq == NO_IRQ) {
dev_err(&ucb->dev, "IRQ probe failed\n");
ret = -ENODEV;
......@@ -633,8 +636,6 @@ static int ucb1x00_probe(struct mcp *mcp)
device_del(&ucb->dev);
err_dev_add:
put_device(&ucb->dev);
err_disable:
mcp_disable(mcp);
out:
if (pdata && pdata->reset)
pdata->reset(UCB_RST_PROBE_FAIL);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册