summaryrefslogtreecommitdiff
path: root/arch/arm/cpu
diff options
context:
space:
mode:
authorPeng Fan <Peng.Fan@freescale.com>2015-04-17 18:28:29 +0800
committerPeng Fan <Peng.Fan@freescale.com>2015-04-29 15:10:28 +0800
commiteafbfbac360c5f255253981098be071b5ccdc98f (patch)
tree4cbee9ebb83eb334d86397fd6a17c913e6839807 /arch/arm/cpu
parentb7b3449744e81bbf56c787f47eb07a345dca408a (diff)
downloadu-boot-imx-eafbfbac360c5f255253981098be071b5ccdc98f.zip
u-boot-imx-eafbfbac360c5f255253981098be071b5ccdc98f.tar.gz
u-boot-imx-eafbfbac360c5f255253981098be071b5ccdc98f.tar.bz2
MLK-10674-2 imx: mx6qp settings for PRE
Since the following piece settings can not be in DCD table, we add them in enable_ipu_clock. " setmem /32 0x00bb048c = 0x00000002 ## Bypass IPU1 QoS generator setmem /32 0x00bb050c = 0x00000002 ## Bypass IPU2 QoS generator setmem /32 0x00bb0690 = 0x00000200 ## Bandwidth THR for of PRE0 setmem /32 0x00bb0710 = 0x00000200 ## Bandwidth THR for of PRE1 setmem /32 0x00bb0790 = 0x00000200 ## Bandwidth THR for of PRE2 setmem /32 0x00bb0810 = 0x00000200 ## Bandwidth THR for of PRE3 setmem /32 0x00bb0694 = 0x00000020 ## Saturation THR for of PRE0 setmem /32 0x00bb0714 = 0x00000020 ## Saturation THR for of PRE1 setmem /32 0x00bb0794 = 0x00000020 ## Saturation THR for of PRE2 setmem /32 0x00bb0814 = 0x00000020 ## Saturation THR for of PRE " CONFIG_VIDEO_IPUV3 is always defined in mx6sabre_common.h, the settings sure will effect. Signed-off-by: Peng Fan <Peng.Fan@freescale.com> (cherry picked from commit 61cec88a59ebf450dd1352d81e03b5aa842e1d71)
Diffstat (limited to 'arch/arm/cpu')
-rw-r--r--arch/arm/cpu/armv7/mx6/clock.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/mx6/clock.c b/arch/arm/cpu/armv7/mx6/clock.c
index 0a1fd44..8f7676b 100644
--- a/arch/arm/cpu/armv7/mx6/clock.c
+++ b/arch/arm/cpu/armv7/mx6/clock.c
@@ -1098,6 +1098,32 @@ int do_mx6_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
}
#ifndef CONFIG_MX6SX
+#ifdef CONFIG_MX6QP
+static void pre_misc_setting(void)
+{
+ /* Bypass IPU1 QoS generator */
+ writel(0x00000002, 0x00bb048c);
+ /* Bypass IPU2 QoS generator */
+ writel(0x00000002, 0x00bb050c);
+ /* Bandwidth THR for of PRE0 */
+ writel(0x00000200, 0x00bb0690);
+ /* Bandwidth THR for of PRE1 */
+ writel(0x00000200, 0x00bb0710);
+ /* Bandwidth THR for of PRE2 */
+ writel(0x00000200, 0x00bb0790);
+ /* Bandwidth THR for of PRE3 */
+ writel(0x00000200, 0x00bb0810);
+ /* Saturation THR for of PRE0 */
+ writel(0x00000020, 0x00bb0694);
+ /* Saturation THR for of PRE1 */
+ writel(0x00000020, 0x00bb0714);
+ /* Saturation THR for of PRE2 */
+ writel(0x00000020, 0x00bb0794);
+ /* Saturation THR for of PRE */
+ writel(0x00000020, 0x00bb0814);
+}
+#endif
+
void enable_ipu_clock(void)
{
struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
@@ -1110,8 +1136,20 @@ void enable_ipu_clock(void)
reg = readl(&mxc_ccm->CCGR6);
reg |= MXC_CCM_CCGR6_PRG_CLK0_MASK;
writel(reg, &mxc_ccm->CCGR6);
+
+ reg = readl(&mxc_ccm->CCGR3);
+ reg |= MXC_CCM_CCGR3_IPU2_IPU_MASK;
+ writel(reg, &mxc_ccm->CCGR3);
+
+ /*
+ * Since CONFIG_VIDEO_IPUV3 is always set in mx6sabre_common.h and
+ * this misc setting is a must for mx6qp, this position is ok
+ * to do such settings.
+ */
+ pre_misc_setting();
#endif
}
+
#endif
/***************************************************/