From patchwork Sat Jul 11 03:38:43 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 493962 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id B50361402C4 for ; Sat, 11 Jul 2015 13:39:32 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D40F64B65A; Sat, 11 Jul 2015 05:39:26 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RuG85rEjzcR4; Sat, 11 Jul 2015 05:39:26 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id AD6484B65F; Sat, 11 Jul 2015 05:39:24 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4BFEF4B615 for ; Sat, 11 Jul 2015 05:39:16 +0200 (CEST) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id A3fAcOp55yMJ for ; Sat, 11 Jul 2015 05:39:16 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from na01-bl2-obe.outbound.protection.outlook.com (mail-bl2on0126.outbound.protection.outlook.com [65.55.169.126]) by theia.denx.de (Postfix) with ESMTPS id 88B794A03A for ; Sat, 11 Jul 2015 05:39:12 +0200 (CEST) Received: from BN3PR0301CA0013.namprd03.prod.outlook.com (10.160.180.151) by BY2PR03MB256.namprd03.prod.outlook.com (10.242.37.23) with Microsoft SMTP Server (TLS) id 15.1.207.12; Sat, 11 Jul 2015 03:39:09 +0000 Received: from BN1AFFO11FD035.protection.gbl (2a01:111:f400:7c10::157) by BN3PR0301CA0013.outlook.office365.com (2a01:111:e400:4000::23) with Microsoft SMTP Server (TLS) id 15.1.213.14 via Frontend Transport; Sat, 11 Jul 2015 03:39:08 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; freescale.mail.onmicrosoft.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of freescale.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1AFFO11FD035.mail.protection.outlook.com (10.58.52.159) with Microsoft SMTP Server (TLS) id 15.1.213.8 via Frontend Transport; Sat, 11 Jul 2015 03:39:08 +0000 Received: from linux-jyl1.am.freescale.net ([10.192.185.84]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id t6B3cosK003738; Fri, 10 Jul 2015 20:39:05 -0700 From: Peng Fan To: Date: Sat, 11 Jul 2015 11:38:43 +0800 Message-ID: <1436585927-18677-2-git-send-email-Peng.Fan@freescale.com> X-Mailer: git-send-email 1.8.4 In-Reply-To: <1436585927-18677-1-git-send-email-Peng.Fan@freescale.com> References: <1436585927-18677-1-git-send-email-Peng.Fan@freescale.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD035; 1:3fCM1JAyZOh7kEO8xYb3ZIHiyuZsPms/eW8NHZ0/V1o/BPN8KcmNUtiVa4W3Y4zSD72tJI7czd7H40YGhS3KQVz03w4k2hxxx0ZSnQSxmiTasIBn4sclr3uUO8AujFyDrcWBcPgFQvLobURvTgoyJE/qDjXpc3vRHhS9hZK27yQx1eZmCArgAHDC8SL+0r8uacntCH+Glu6hiRnhlmPdbz2LefzI0TjII5Hef5r5deYg1cn7iE6H51jhQHG8g1xvbxVs1BQQ+pL3hZInSGKm+GwjzQxVZfiS3LRebMChbsjugFeKQMW0qDtknyLLWyI4t0G13oB0OuOia0puHmek0mZfbghVmuhGHi6aJ7moE2QJLNXGDmZMhROfGCO96UTRbpcdPgBF8x1UZ1ty7La9mtT9qTbmmNvuHg4nPpAmiNXAvF0GXbytRqMW+MVwHQAG X-Forefront-Antispam-Report: CIP:192.88.158.2; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(2980300002)(339900001)(189002)(199003)(48376002)(110136002)(5001960100002)(107886002)(189998001)(6806004)(2950100001)(46102003)(50986999)(77156002)(62966003)(76176999)(47776003)(19580405001)(2351001)(77096005)(92566002)(36756003)(229853001)(5003940100001)(85426001)(50466002)(104016003)(19580395003)(86362001)(106466001)(87936001)(50226001)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY2PR03MB256; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:sfv; MX:1; A:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB256; 2:xSmFPSrPXv8njH0hmMwzauA2DCb/Ts/grrMaaUApLvkamUGdXHyhNSdTwj8d783G; 3:hTtcXJRBdT8/pop8fEQCartaqgI0n36vUUmuUiydvtwQ3hRT0dfOpY0fXC06CX1UQnizH5gxesTpzprRpOpOwc/82yRaH8NR9SWYkr1/T/9Lq78t6KH1Xjplz36jlfDhEeb6PseYCsQ1hKuTgePziAJW1cTXZTf75dbCXVxW/K/QiAEGTj1x4ItqDMx763tqj/vaW1qR1eGLFWAvAdmrE94qYaI94DlHushtws5JqXM=; 25:wf6HaGfyb28jlaQqAThXLSe5M1E7PJwlMMXhwEXfJrZit5IkcHIhEn6T+RpcQ5zxh1yUcVTgUVxj+aOikzW/rcgk+O6dHy4j9Yg6exQcUC4nXGC9dfofFO4HvGHc2iY6JgTpiw6OEjFRD2YJS7XzGVJCC9JBVrRH8oyfNvCXFGD+FjzNHqODdLfFhigOsOhTzZ6Df3JSayG3WVkHH7MzErqKoGh9Pec6ztsG1bf43a3+oUBV8OyFuaEQW04i33/p; 20:Dk6Stuqf5JqQVk4RJ93WwRDjjSjlklenm1xYkDI5PQH4TSdPvzMW1BoitT8W0k43T7PVxfkHnVpPdfhuA4IoUcIZ/FedxsuH+J909k2Vv7/MEP/W1Tq3eU7cTdFOqUTzVrSJYi6cSp4lykV0b/claiRYF9WrxPFxD+JPIZTKx8frOn/+izVKjI0BoJXuhmo141X1hEDHVi15X+i9tQCI2cV5jHvNaEtJpsMDAe8wDNk4YyROUDF11xIShBkbaWraRuWlJXOG2ehVMVEgKT6BHSJzG2ZJCC8UwpXR7NYBDKGuMYWhk0n8ynmviWj4jG8bJc2M5WTx/JvFPF4BnJVbyr/9pHg7imAwHLsZshVl+sw= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB256; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BY2PR03MB256; BCL:0; PCL:0; RULEID:; SRVR:BY2PR03MB256; X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB256; 4:K9e91NKEbIuIyTbnpmHWf1rGLOYRkwtgRXZta4x6gqSRD9RH6CpSxulD8msosqodDfuabC3v2DA9O8D0FjpyYXB0lk4aKpOqHCwQrmUmFHi49dIzlnQwbTSNcY8Znc4a1YC2hH6YIlEdrot9aJpFGllxWeMErF1N4Bwt1JC9/RHt/q+MZ3PCbJRHSBKkthGR5zy/We099pRk8KyTLuJajPzXQCykT07rC39nNJx4pv1VmfvHYFpVRNcUH4MdBAH8VV+leVSsHLLyr4qR/2K+j8saLP7gbYmVd7hSi5QHruc= X-Forefront-PRVS: 0634F37BFF X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB256; 23:VVR7jkQfCMUZR71HXv4iVqrQ/xbqPxnW/plQ4O9IecoV0G/uWznHrjM4T9PApKj4w9+cxLqBY8FqqRhE1FOOQHLPm207x655iz8+HVNsi8hM3o8B/Bj2o1+QlL8XiC5jGkziTV2AJe2pVQ4wOaaByuPyZcZGdhrduclJ3ndy7007/ukUDZKzW8H+8M89HD6D9ajsR8LwSCb+qkSJBtPmZN0SrKixqVVk37k8asxN3oi76hJC/j/xj2+R0O93xBYCOR6v2p5Wo/C+FQNWfdtbTY8HWi9PyMhhQM2QL4ka83UPQl4bd8w/eWxd1DkHEu6BvSByxswXxAjX3Frc0BTYBG1Y4CrCOmZUxjDlbb8gCCyxYcaT6mCAK/2FL+PUNL+PIA4W5PVsDb2SVsibpwYnftzuxYtYunWCAoKPuW2pLECA1YSP+W0lA5t+db+ttZrMy7XBjh4jLBXT/VamzdT6L9MtlXifOSKXQ+TrcJhHU6CZlgQEAeh5Gzha4EN9jY2jwS08HZPZF8JdlTm01sErh4wpiIaJrSKvF+q9n5mxegNWEf6yQ6VkwYBpKsR80SbMgBjduN1oOTq0nLfxPy93MQGIZUuRkVO2OrXoR6Zw+xL+dHj+uVX0Vox84yBpTxW4N0kJUD0fWPM3/MNMH4E1tUS0/M0mSRCziTIYV2VVQjhtdKD9xN6Eq/8TPLwn6lV0hWRW4Id3MHTUiGm98cscFinpHbWeeRz8zANTq06toMVuzmBIayLYBEKtSB+gGqyltaSRcuMkQvWGGTScohpshGiJMrg22JDIia5T2dJWXHit4K1Bg4tKH7aNJl5dO+TGeZRN4hhr7KC4t/dp14YAZ0IHyzT7ZFqy52HRM5hht/qnEB1YcvzFl1aaEIoeu2cXz0h3h09M6gXSMPZcO9noVaERjYr6LLxDjATJysx99ig= X-Microsoft-Exchange-Diagnostics: 1; BY2PR03MB256; 5:neJZ43ZDQi8evovEbdrrty1UVmjwaJfGfvuwHAs6EEByKVzAc8ZvUqf1VZEJkix/OrFWzaE+X7YK85mKc1VsMseRdgFPC88+BpGgLxn+KEf/OhJf01p78tqBcnR+zbM1nRiTaTPmsWPSGsO+RJUupw==; 24:owcrSkhlADTt8avPUVRu3Q0O5/jOH36d38uKSkJZTNiWatdg24iFeseox+L5G2aX9ca1MwQ5g7iLzSrkM95SHyXtwlMgTQ8aLJjlcI46lIg=; 20:NgzSc//GnInZP3FEM3xBQsmBEas2fbn/RvsVgFbgZRuZWUIWnWLMwbr2gHyTqrMWtmRbOmXngoHK1JVD+SXPdg== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2015 03:39:08.3483 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB256 Cc: fabio.estevam@freescale.com, u-boot@lists.denx.de Subject: [U-Boot] [PATCH V5 2/6] imx: mx6: ccm: Change the clock settings for i.MX6QP X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Since i.MX6QP changes some CCM registers, so modify the clocks settings to follow the hardware changes. In c files, use runtime check and discard #ifdef. Signed-off-by: Peng Fan Signed-off-by: Ye.Li Reviewed-by: Fabio Estevam Acked-by: Stefano Babic --- Changes v5: Add Stefano's Acked-by Changes v4: Add Fabio's Reviewed-by Changes v3: Move bit definition to crm_regs.h. Changes v2: 1. Remove #ifdef, but use runtime check 2. A few bit definitions are introduced in c files, because to other platforms the macro will make compilation fail, also there are no other places refer the bit macro definitions. arch/arm/cpu/armv7/mx6/clock.c | 30 +++++++++++++------- arch/arm/cpu/armv7/mx6/soc.c | 5 +++- arch/arm/include/asm/arch-mx6/crm_regs.h | 48 +++++++++++++++++--------------- 3 files changed, 49 insertions(+), 34 deletions(-) diff --git a/arch/arm/cpu/armv7/mx6/clock.c b/arch/arm/cpu/armv7/mx6/clock.c index b461898..cd4bfdd 100644 --- a/arch/arm/cpu/armv7/mx6/clock.c +++ b/arch/arm/cpu/armv7/mx6/clock.c @@ -310,10 +310,12 @@ static u32 get_ipg_per_clk(void) u32 reg, perclk_podf; reg = __raw_readl(&imx_ccm->cscmr1); -#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX)) - if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK) - return MXC_HCLK; /* OSC 24Mhz */ -#endif + if (is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6SX) || + is_mx6dqp()) { + if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK) + return MXC_HCLK; /* OSC 24Mhz */ + } + perclk_podf = reg & MXC_CCM_CSCMR1_PERCLK_PODF_MASK; return get_ipg_clk() / (perclk_podf + 1); @@ -324,10 +326,13 @@ static u32 get_uart_clk(void) u32 reg, uart_podf; u32 freq = decode_pll(PLL_USBOTG, MXC_HCLK) / 6; /* static divider */ reg = __raw_readl(&imx_ccm->cscdr1); -#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX)) - if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL) - freq = MXC_HCLK; -#endif + + if (is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6SX) || + is_mx6dqp()) { + if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL) + freq = MXC_HCLK; + } + reg &= MXC_CCM_CSCDR1_UART_CLK_PODF_MASK; uart_podf = reg >> MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET; @@ -339,8 +344,13 @@ static u32 get_cspi_clk(void) u32 reg, cspi_podf; reg = __raw_readl(&imx_ccm->cscdr2); - reg &= MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK; - cspi_podf = reg >> MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET; + cspi_podf = (reg & MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK) >> + MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET; + + if (is_mx6dqp()) { + if (reg & MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK) + return MXC_HCLK / (cspi_podf + 1); + } return decode_pll(PLL_USBOTG, MXC_HCLK) / (8 * (cspi_podf + 1)); } diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c index d3a3b2e..e80c09c 100644 --- a/arch/arm/cpu/armv7/mx6/soc.c +++ b/arch/arm/cpu/armv7/mx6/soc.c @@ -342,9 +342,12 @@ static void set_ahb_rate(u32 val) static void clear_mmdc_ch_mask(void) { struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; + u32 reg; + reg = readl(&mxc_ccm->ccdr); /* Clear MMDC channel mask */ - writel(0, &mxc_ccm->ccdr); + reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK | MXC_CCM_CCDR_MMDC_CH0_HS_MASK); + writel(reg, &mxc_ccm->ccdr); } static void init_bandgap(void) diff --git a/arch/arm/include/asm/arch-mx6/crm_regs.h b/arch/arm/include/asm/arch-mx6/crm_regs.h index 98415ac..7d9fe73 100644 --- a/arch/arm/include/asm/arch-mx6/crm_regs.h +++ b/arch/arm/include/asm/arch-mx6/crm_regs.h @@ -123,6 +123,8 @@ struct mxc_ccm_reg { /* Define the bits in register CCDR */ #define MXC_CCM_CCDR_MMDC_CH1_HS_MASK (1 << 16) #define MXC_CCM_CCDR_MMDC_CH0_HS_MASK (1 << 17) +/* Exists on i.MX6QP */ +#define MXC_CCM_CCDR_MMDC_CH1_AXI_ROOT_CG (1 << 18) /* Define the bits in register CSR */ #define MXC_CCM_CSR_COSC_READY (1 << 5) @@ -195,10 +197,8 @@ struct mxc_ccm_reg { #define MXC_CCM_CBCMR_GPU3D_SHADER_CLK_SEL_OFFSET 8 #define MXC_CCM_CBCMR_GPU3D_CORE_CLK_SEL_MASK (0x3 << 4) #define MXC_CCM_CBCMR_GPU3D_CORE_CLK_SEL_OFFSET 4 -#ifndef CONFIG_MX6SX -#define MXC_CCM_CBCMR_GPU3D_AXI_CLK_SEL (1 << 1) -#define MXC_CCM_CBCMR_GPU2D_AXI_CLK_SEL (1 << 0) -#endif +/* Exists on i.MX6QP */ +#define MXC_CCM_CBCMR_PRE_CLK_SEL (1 << 1) /* Define the bits in register CSCMR1 */ #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK (0x3 << 29) @@ -229,10 +229,10 @@ struct mxc_ccm_reg { #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK (0x7 << 7) #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET 7 #endif -#if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX)) -#define MXC_CCM_CSCMR1_PER_CLK_SEL_MASK (1 << 6) +/* CSCMR1_PER_CLK exists on i.MX6SX/SL/QP */ +#define MXC_CCM_CSCMR1_PER_CLK_SEL_MASK (1 << 6) #define MXC_CCM_CSCMR1_PER_CLK_SEL_OFFSET 6 -#endif + #define MXC_CCM_CSCMR1_PERCLK_PODF_MASK 0x3F /* Define the bits in register CSCMR2 */ @@ -244,15 +244,12 @@ struct mxc_ccm_reg { #define MXC_CCM_CSCMR2_ESAI_PRE_SEL_OFFSET 19 #define MXC_CCM_CSCMR2_LDB_DI1_IPU_DIV (1 << 11) #define MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV (1 << 10) -#ifdef CONFIG_MX6SX +/* CSCMR1_CAN_CLK exists on i.MX6SX/QP */ #define MXC_CCM_CSCMR2_CAN_CLK_SEL_MASK (0x3 << 8) #define MXC_CCM_CSCMR2_CAN_CLK_SEL_OFFSET 8 + #define MXC_CCM_CSCMR2_CAN_CLK_PODF_MASK (0x3F << 2) #define MXC_CCM_CSCMR2_CAN_CLK_PODF_OFFSET 2 -#else -#define MXC_CCM_CSCMR2_CAN_CLK_SEL_MASK (0x3F << 2) -#define MXC_CCM_CSCMR2_CAN_CLK_SEL_OFFSET 2 -#endif /* Define the bits in register CSCDR1 */ #ifndef CONFIG_MX6SX @@ -273,16 +270,10 @@ struct mxc_ccm_reg { #define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_OFFSET 6 #define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_MASK (0x3 << 6) #endif -#ifdef CONFIG_MX6SL -#define MXC_CCM_CSCDR1_UART_CLK_PODF_MASK 0x1F -#define MXC_CCM_CSCDR1_UART_CLK_SEL (1 << 6) -#else #define MXC_CCM_CSCDR1_UART_CLK_PODF_MASK 0x3F -#ifdef CONFIG_MX6SX -#define MXC_CCM_CSCDR1_UART_CLK_SEL (1 << 6) -#endif -#endif #define MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET 0 +/* UART_CLK_SEL exists on i.MX6SL/SX/QP */ +#define MXC_CCM_CSCDR1_UART_CLK_SEL (1 << 6) /* Define the bits in register CS1CDR */ #define MXC_CCM_CS1CDR_ESAI_CLK_PODF_MASK (0x3F << 25) @@ -316,9 +307,14 @@ struct mxc_ccm_reg { #define MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK (0x7 << 18) #define MXC_CCM_CS2CDR_ENFC_CLK_PRED_OFFSET 18 #define MXC_CCM_CS2CDR_ENFC_CLK_PRED(v) (((v) & 0x7) << 18) -#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK (0x3 << 16) -#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET 16 -#define MXC_CCM_CS2CDR_ENFC_CLK_SEL(v) (((v) & 0x3) << 16) + +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK \ + (is_mx6dqp() ? (0x7 << 15) : (0x3 << 16)) +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET \ + (is_mx6dqp() ? 15 : 16) +#define MXC_CCM_CS2CDR_ENFC_CLK_SEL(v) \ + (is_mx6dqp() ? (((v) & 0x7) << 15) : (((v) & 0x3) << 16)) + #endif #define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK (0x7 << 12) #define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET 12 @@ -384,6 +380,9 @@ struct mxc_ccm_reg { /* Define the bits in register CSCDR2 */ #define MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK (0x3F << 19) #define MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET 19 +/* ECSPI_CLK_SEL exists on i.MX6SX/SL/QP */ +#define MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK (0x1 << 18) + /* All IPU2_DI1 are LCDIF1 on MX6SX */ #define MXC_CCM_CHSCCDR_IPU2_DI1_PRE_CLK_SEL_MASK (0x7 << 15) #define MXC_CCM_CHSCCDR_IPU2_DI1_PRE_CLK_SEL_OFFSET 15 @@ -728,6 +727,9 @@ struct mxc_ccm_reg { #define MXC_CCM_CCGR5_SAI2_MASK (3 << MXC_CCM_CCGR5_SAI2_OFFSET) #endif +/* PRG_CLK0 exists on i.MX6QP */ +#define MXC_CCM_CCGR6_PRG_CLK0_MASK (3 << 24) + #define MXC_CCM_CCGR6_USBOH3_OFFSET 0 #define MXC_CCM_CCGR6_USBOH3_MASK (3 << MXC_CCM_CCGR6_USBOH3_OFFSET) #define MXC_CCM_CCGR6_USDHC1_OFFSET 2