From patchwork Sun Apr 29 18:11:13 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fabio Estevam X-Patchwork-Id: 155760 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 7BA87B701A for ; Mon, 30 Apr 2012 04:11:36 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5F39B2835D; Sun, 29 Apr 2012 20:11:34 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de 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 bYaxAdud9WNo; Sun, 29 Apr 2012 20:11:34 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 556A02840C; Sun, 29 Apr 2012 20:11:32 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 480EA2840C for ; Sun, 29 Apr 2012 20:11:30 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de 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 0kwDyjZNAxl6 for ; Sun, 29 Apr 2012 20:11:29 +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 mail-yw0-f44.google.com (mail-yw0-f44.google.com [209.85.213.44]) by theia.denx.de (Postfix) with ESMTPS id 36F352835D for ; Sun, 29 Apr 2012 20:11:26 +0200 (CEST) Received: by yhq56 with SMTP id 56so232355yhq.3 for ; Sun, 29 Apr 2012 11:11:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=Nw7dVQidHYIb0vZO1z1z7o8t4q2xpKCvsThtutx1OtE=; b=dIv7qOWU1VXdRcXZ9/EGc4eGFtMcmMuYl9lgTCD4L33gg+cl+OgXkmkAX5fks+pQto Zqg7HfMlS1ozd/B6aat6H+mtFxB2E3133qQNVvyMNj+K5j+6TI3keLC4SpdCKFNdQ2GD cFvZzZqXQG/Wn5pggP3tYG8vBnrrN+Bzt0jA0sFPlzufrn4yWwCim9tHwJ0EMPscDDPX 78fKsvS5wW81MBKRL/pfzBF+j/WvxOEhxth2LrTDNrFYa8zmfvBCDHQedTgFsDTqaHim LDaSNwCnaUyFQ5RUkjNSvE6ibMY/AmvHaiJjEOPiL3WXIM4lRV4ZP9igDMZOFA6S7//Y Jnwg== Received: by 10.236.109.66 with SMTP id r42mr19337236yhg.39.1335723084272; Sun, 29 Apr 2012 11:11:24 -0700 (PDT) Received: from localhost.localdomain ([189.101.178.179]) by mx.google.com with ESMTPS id a35sm62152178yhh.13.2012.04.29.11.11.21 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 29 Apr 2012 11:11:23 -0700 (PDT) From: Fabio Estevam To: u-boot@lists.denx.de Date: Sun, 29 Apr 2012 15:11:13 -0300 Message-Id: <1335723073-13421-1-git-send-email-festevam@gmail.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1332279610-22838-2-git-send-email-fabio.estevam@freescale.com> References: <1332279610-22838-2-git-send-email-fabio.estevam@freescale.com> Cc: Fabio Estevam Subject: [U-Boot] [PATCH v2] imx-common: Factor out get_ahb_clk() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de get_ahb_clk() is a common function between mx5 and mx6. Place it into imx-common directory. Cc: Dirk Behme Signed-off-by: Fabio Estevam Tested-by: Dirk Behme --- Changes since v1: Do not use weak definition for get_periph_clk() arch/arm/cpu/armv7/imx-common/cpu.c | 13 +++++++++++++ arch/arm/cpu/armv7/mx5/clock.c | 19 ++----------------- arch/arm/cpu/armv7/mx6/clock.c | 19 ++++--------------- arch/arm/include/asm/arch-mx5/sys_proto.h | 2 ++ .../asm/arch-mx6/{ccm_regs.h => crm_regs.h} | 2 +- arch/arm/include/asm/arch-mx6/sys_proto.h | 3 ++- 6 files changed, 24 insertions(+), 34 deletions(-) rename arch/arm/include/asm/arch-mx6/{ccm_regs.h => crm_regs.h} (99%) diff --git a/arch/arm/cpu/armv7/imx-common/cpu.c b/arch/arm/cpu/armv7/imx-common/cpu.c index 3d58d8a..b96fa5b 100644 --- a/arch/arm/cpu/armv7/imx-common/cpu.c +++ b/arch/arm/cpu/armv7/imx-common/cpu.c @@ -29,6 +29,7 @@ #include #include #include +#include #ifdef CONFIG_FSL_ESDHC #include @@ -127,3 +128,15 @@ void reset_cpu(ulong addr) { __raw_writew(4, WDOG1_BASE_ADDR); } + +u32 get_ahb_clk(void) +{ + struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; + u32 reg, ahb_podf; + + reg = __raw_readl(&imx_ccm->cbcdr); + reg &= MXC_CCM_CBCDR_AHB_PODF_MASK; + ahb_podf = reg >> MXC_CCM_CBCDR_AHB_PODF_OFFSET; + + return get_periph_clk() / (ahb_podf + 1); +} diff --git a/arch/arm/cpu/armv7/mx5/clock.c b/arch/arm/cpu/armv7/mx5/clock.c index d769a4d..903e207 100644 --- a/arch/arm/cpu/armv7/mx5/clock.c +++ b/arch/arm/cpu/armv7/mx5/clock.c @@ -30,6 +30,7 @@ #include #include #include +#include enum pll_clocks { PLL1_CLOCK = 0, @@ -192,7 +193,7 @@ u32 get_mcu_main_clk(void) /* * Get the rate of peripheral's root clock. */ -static u32 get_periph_clk(void) +u32 get_periph_clk(void) { u32 reg; @@ -213,22 +214,6 @@ static u32 get_periph_clk(void) } /* - * Get the rate of ahb clock. - */ -static u32 get_ahb_clk(void) -{ - uint32_t freq, div, reg; - - freq = get_periph_clk(); - - reg = __raw_readl(&mxc_ccm->cbcdr); - div = ((reg & MXC_CCM_CBCDR_AHB_PODF_MASK) >> - MXC_CCM_CBCDR_AHB_PODF_OFFSET) + 1; - - return freq / div; -} - -/* * Get the rate of ipg clock. */ static u32 get_ipg_clk(void) diff --git a/arch/arm/cpu/armv7/mx6/clock.c b/arch/arm/cpu/armv7/mx6/clock.c index ef98563..0f05432 100644 --- a/arch/arm/cpu/armv7/mx6/clock.c +++ b/arch/arm/cpu/armv7/mx6/clock.c @@ -24,8 +24,9 @@ #include #include #include -#include +#include #include +#include enum pll_clocks { PLL_SYS, /* System PLL */ @@ -34,7 +35,7 @@ enum pll_clocks { PLL_ENET, /* ENET PLL */ }; -struct imx_ccm_reg *imx_ccm = (struct imx_ccm_reg *)CCM_BASE_ADDR; +struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; void enable_usboh3_clk(unsigned char enable) { @@ -92,7 +93,7 @@ static u32 get_mcu_main_clk(void) return freq / (reg + 1); } -static u32 get_periph_clk(void) +u32 get_periph_clk(void) { u32 reg, freq = 0; @@ -139,18 +140,6 @@ static u32 get_periph_clk(void) return freq; } - -static u32 get_ahb_clk(void) -{ - u32 reg, ahb_podf; - - reg = __raw_readl(&imx_ccm->cbcdr); - reg &= MXC_CCM_CBCDR_AHB_PODF_MASK; - ahb_podf = reg >> MXC_CCM_CBCDR_AHB_PODF_OFFSET; - - return get_periph_clk() / (ahb_podf + 1); -} - static u32 get_ipg_clk(void) { u32 reg, ipg_podf; diff --git a/arch/arm/include/asm/arch-mx5/sys_proto.h b/arch/arm/include/asm/arch-mx5/sys_proto.h index 13d12ee..3f10d29 100644 --- a/arch/arm/include/asm/arch-mx5/sys_proto.h +++ b/arch/arm/include/asm/arch-mx5/sys_proto.h @@ -35,5 +35,7 @@ void set_chipselect_size(int const); */ int fecmxc_initialize(bd_t *bis); +u32 get_ahb_clk(void); +u32 get_periph_clk(void); #endif diff --git a/arch/arm/include/asm/arch-mx6/ccm_regs.h b/arch/arm/include/asm/arch-mx6/crm_regs.h similarity index 99% rename from arch/arm/include/asm/arch-mx6/ccm_regs.h rename to arch/arm/include/asm/arch-mx6/crm_regs.h index 4af0b90..0e605c2 100644 --- a/arch/arm/include/asm/arch-mx6/ccm_regs.h +++ b/arch/arm/include/asm/arch-mx6/crm_regs.h @@ -20,7 +20,7 @@ #ifndef __ARCH_ARM_MACH_MX6_CCM_REGS_H__ #define __ARCH_ARM_MACH_MX6_CCM_REGS_H__ -struct imx_ccm_reg { +struct mxc_ccm_reg { u32 ccr; /* 0x0000 */ u32 ccdr; u32 csr; diff --git a/arch/arm/include/asm/arch-mx6/sys_proto.h b/arch/arm/include/asm/arch-mx6/sys_proto.h index 668e77a..69687a8 100644 --- a/arch/arm/include/asm/arch-mx6/sys_proto.h +++ b/arch/arm/include/asm/arch-mx6/sys_proto.h @@ -34,5 +34,6 @@ u32 get_cpu_rev(void); */ int fecmxc_initialize(bd_t *bis); - +u32 get_ahb_clk(void); +u32 get_periph_clk(void); #endif