aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorPhilipp Zabel <p.zabel@pengutronix.de>2013-03-28 12:35:21 -0400
committerShawn Guo <shawn.guo@linaro.org>2013-04-12 07:28:13 -0400
commit6c64155de972e8c42750340c21e225a2f8b78f26 (patch)
treee1cf842bb4109ffb22d73862f5a3dcc455f5f12c /drivers/staging
parent02985b94638b4de3ef9f2eb2ac5befe5bab12c26 (diff)
staging: drm/imx: Use SRC to reset IPU
Request the System Reset Controller to reset the IPU if specified via device tree phandle. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Marek Vasut <marex@denx.de> Reviewed-by: Pavel Machek <pavel@ucw.cz> Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/imx-drm/ipu-v3/ipu-common.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-common.c b/drivers/staging/imx-drm/ipu-v3/ipu-common.c
index 366f259e3756..04b8320d6579 100644
--- a/drivers/staging/imx-drm/ipu-v3/ipu-common.c
+++ b/drivers/staging/imx-drm/ipu-v3/ipu-common.c
@@ -16,6 +16,7 @@
16#include <linux/export.h> 16#include <linux/export.h>
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/init.h> 18#include <linux/init.h>
19#include <linux/reset.h>
19#include <linux/platform_device.h> 20#include <linux/platform_device.h>
20#include <linux/err.h> 21#include <linux/err.h>
21#include <linux/spinlock.h> 22#include <linux/spinlock.h>
@@ -660,7 +661,7 @@ int ipu_idmac_disable_channel(struct ipuv3_channel *channel)
660} 661}
661EXPORT_SYMBOL_GPL(ipu_idmac_disable_channel); 662EXPORT_SYMBOL_GPL(ipu_idmac_disable_channel);
662 663
663static int ipu_reset(struct ipu_soc *ipu) 664static int ipu_memory_reset(struct ipu_soc *ipu)
664{ 665{
665 unsigned long timeout; 666 unsigned long timeout;
666 667
@@ -1104,7 +1105,12 @@ static int ipu_probe(struct platform_device *pdev)
1104 if (ret) 1105 if (ret)
1105 goto out_failed_irq; 1106 goto out_failed_irq;
1106 1107
1107 ret = ipu_reset(ipu); 1108 ret = device_reset(&pdev->dev);
1109 if (ret) {
1110 dev_err(&pdev->dev, "failed to reset: %d\n", ret);
1111 goto out_failed_reset;
1112 }
1113 ret = ipu_memory_reset(ipu);
1108 if (ret) 1114 if (ret)
1109 goto out_failed_reset; 1115 goto out_failed_reset;
1110 1116
@@ -1130,8 +1136,8 @@ static int ipu_probe(struct platform_device *pdev)
1130failed_add_clients: 1136failed_add_clients:
1131 ipu_submodules_exit(ipu); 1137 ipu_submodules_exit(ipu);
1132failed_submodules_init: 1138failed_submodules_init:
1133 ipu_irq_exit(ipu);
1134out_failed_reset: 1139out_failed_reset:
1140 ipu_irq_exit(ipu);
1135out_failed_irq: 1141out_failed_irq:
1136 clk_disable_unprepare(ipu->clk); 1142 clk_disable_unprepare(ipu->clk);
1137failed_clk_get: 1143failed_clk_get: