From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Babic Date: Wed, 31 May 2017 10:50:40 +0200 Subject: [U-Boot] [PATCH 3/4] mx25: Add function to set PER clocks In-Reply-To: <1493805546-3567-3-git-send-email-benoit@wsystem.com> References: <1493805546-3567-1-git-send-email-benoit@wsystem.com> <1493805546-3567-3-git-send-email-benoit@wsystem.com> Message-ID: <6c3061d3-0750-f3de-98c6-b5dcc4ce7137@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: u-boot@lists.denx.de On 03/05/2017 11:59, Benoît Thébaudeau wrote: > Introduce the imx_set_perclk() function to make it possible to set the > PER clocks. > > Signed-off-by: Benoît Thébaudeau > --- > arch/arm/cpu/arm926ejs/mx25/generic.c | 19 +++++++++++++++++++ > arch/arm/include/asm/arch-mx25/clock.h | 1 + > 2 files changed, 20 insertions(+) > > diff --git a/arch/arm/cpu/arm926ejs/mx25/generic.c b/arch/arm/cpu/arm926ejs/mx25/generic.c > index f02cffb..5d9bc6c 100644 > --- a/arch/arm/cpu/arm926ejs/mx25/generic.c > +++ b/arch/arm/cpu/arm926ejs/mx25/generic.c > @@ -113,6 +113,25 @@ static ulong imx_get_perclk(int clk) > return fref / div; > } > > +int imx_set_perclk(enum mxc_clock clk, bool from_upll, unsigned int freq) > +{ > + struct ccm_regs *ccm = (struct ccm_regs *)IMX_CCM_BASE; > + ulong fref = from_upll ? imx_get_upllclk() : imx_get_ahbclk(); > + ulong div = (fref + freq - 1) / freq; > + > + if (clk > MXC_UART_CLK || !div || --div > CCM_PERCLK_MASK) > + return -EINVAL; > + > + clrsetbits_le32(&ccm->pcdr[CCM_PERCLK_REG(clk)], > + CCM_PERCLK_MASK << CCM_PERCLK_SHIFT(clk), > + div << CCM_PERCLK_SHIFT(clk)); > + if (from_upll) > + setbits_le32(&ccm->mcr, 1 << clk); > + else > + clrbits_le32(&ccm->mcr, 1 << clk); > + return 0; > +} > + > unsigned int mxc_get_clock(enum mxc_clock clk) > { > if (clk >= MXC_CLK_NUM) > diff --git a/arch/arm/include/asm/arch-mx25/clock.h b/arch/arm/include/asm/arch-mx25/clock.h > index 9fdaa9d..7753caf 100644 > --- a/arch/arm/include/asm/arch-mx25/clock.h > +++ b/arch/arm/include/asm/arch-mx25/clock.h > @@ -51,6 +51,7 @@ enum mxc_clock { > MXC_CLK_NUM > }; > > +int imx_set_perclk(enum mxc_clock clk, bool from_upll, unsigned int freq); > unsigned int mxc_get_clock(enum mxc_clock clk); > > #define imx_get_uartclk() mxc_get_clock(MXC_UART_CLK) > Applied to u-boot-imx -master, thanks ! Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================