aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFancy Fang <chen.fang@freescale.com>2014-05-07 23:33:45 -0400
committerFancy Fang <chen.fang@freescale.com>2014-06-26 21:56:29 -0400
commit28e18731417fd62e44d2f756c9fc9a5cd3e92a15 (patch)
tree259273247bd301623a925db0746fa009e7f6b3aa
parent8bd1eb3574d1b9871f6bca0ee4ed997c848d8a4d (diff)
ENGR00320185-1 IMX6SX/DISPMIX: add dispmix on/off support for 6SX platform
Add the required clocks for the dispmix on/off operation. This include clocks definition and initialization. Signed-off-by: Fancy Fang <chen.fang@freescale.com> (cherry picked from commit 638acb3c30b135901631e59c9938e06422cc4b76)
-rw-r--r--arch/arm/boot/dts/imx6sx.dtsi8
-rw-r--r--arch/arm/mach-imx/gpc.c10
2 files changed, 15 insertions, 3 deletions
diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
index 502e4820225a..71f58da72003 100644
--- a/arch/arm/boot/dts/imx6sx.dtsi
+++ b/arch/arm/boot/dts/imx6sx.dtsi
@@ -553,8 +553,12 @@
553 compatible = "fsl,imx6q-gpc"; 553 compatible = "fsl,imx6q-gpc";
554 reg = <0x020dc000 0x4000>; 554 reg = <0x020dc000 0x4000>;
555 interrupts = <0 89 0x04>; 555 interrupts = <0 89 0x04>;
556 clocks = <&clks IMX6SX_CLK_GPU>, <&clks IMX6SX_CLK_IPG>; 556 clocks = <&clks IMX6SX_CLK_GPU>, <&clks IMX6SX_CLK_IPG>,
557 clock-names = "gpu3d_core", "ipg"; 557 <&clks IMX6SX_CLK_PXP_AXI>, <&clks IMX6SX_CLK_DISPLAY_AXI>,
558 <&clks IMX6SX_CLK_LCDIF1_PIX>, <&clks IMX6SX_CLK_LCDIF_APB>,
559 <&clks IMX6SX_CLK_LCDIF2_PIX>, <&clks IMX6SX_CLK_CSI>;
560 clock-names = "gpu3d_core", "ipg", "pxp_axi", "disp_axi", "lcdif1_pix",
561 "lcdif_axi", "lcdif2_pix", "csi_mclk";
558 pu-supply = <&pu_dummy>; 562 pu-supply = <&pu_dummy>;
559 pcie-supply = <&reg_pcie>; 563 pcie-supply = <&reg_pcie>;
560 fsl,mf-mix-wakeup-irq = <0x7c00000 0x3d00 0x0 0x400200>; 564 fsl,mf-mix-wakeup-irq = <0x7c00000 0x3d00 0x0 0x400200>;
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c
index 2823d4ab8a5b..00f07f1c1dd1 100644
--- a/arch/arm/mach-imx/gpc.c
+++ b/arch/arm/mach-imx/gpc.c
@@ -63,6 +63,7 @@ static u32 gpc_saved_imrs[IMR_NUM];
63static struct clk *gpu3d_clk, *gpu3d_shader_clk, *gpu2d_clk, *gpu2d_axi_clk; 63static struct clk *gpu3d_clk, *gpu3d_shader_clk, *gpu2d_clk, *gpu2d_axi_clk;
64static struct clk *lcd_axi_clk, *lcd_pix_clk, *epdc_axi_clk, *epdc_pix_clk; 64static struct clk *lcd_axi_clk, *lcd_pix_clk, *epdc_axi_clk, *epdc_pix_clk;
65static struct clk *pxp_axi_clk; 65static struct clk *pxp_axi_clk;
66static struct clk *disp_axi_clk, *lcdif_axi_clk, *lcdif1_pix_clk, *lcdif2_pix_clk, *csi_mclk;
66static struct clk *openvg_axi_clk, *vpu_clk, *ipg_clk; 67static struct clk *openvg_axi_clk, *vpu_clk, *ipg_clk;
67static struct device *gpc_dev; 68static struct device *gpc_dev;
68static struct regulator *pu_reg; 69static struct regulator *pu_reg;
@@ -593,7 +594,14 @@ static int imx_gpc_probe(struct platform_device *pdev)
593 } else if (cpu_is_imx6sx()) { 594 } else if (cpu_is_imx6sx()) {
594 gpu3d_clk = devm_clk_get(gpc_dev, "gpu3d_core"); 595 gpu3d_clk = devm_clk_get(gpc_dev, "gpu3d_core");
595 ipg_clk = devm_clk_get(gpc_dev, "ipg"); 596 ipg_clk = devm_clk_get(gpc_dev, "ipg");
596 if (IS_ERR(gpu3d_clk) || IS_ERR(ipg_clk)) { 597 pxp_axi_clk = devm_clk_get(gpc_dev, "pxp_axi");
598 disp_axi_clk = devm_clk_get(gpc_dev, "disp_axi");
599 lcdif1_pix_clk = devm_clk_get(gpc_dev, "lcdif1_pix");
600 lcdif_axi_clk = devm_clk_get(gpc_dev, "lcdif_axi");
601 lcdif2_pix_clk = devm_clk_get(gpc_dev, "lcdif2_pix");
602 csi_mclk = devm_clk_get(gpc_dev, "csi_mclk");
603 if (IS_ERR(gpu3d_clk) || IS_ERR(ipg_clk) || IS_ERR(pxp_axi_clk) || IS_ERR(disp_axi_clk) ||
604 IS_ERR(lcdif1_pix_clk) || IS_ERR(lcdif_axi_clk) || IS_ERR(lcdif2_pix_clk) || IS_ERR(csi_mclk)) {
597 dev_err(gpc_dev, "failed to get clk!\n"); 605 dev_err(gpc_dev, "failed to get clk!\n");
598 return -ENOENT; 606 return -ENOENT;
599 } 607 }