2005-11-10 14:26:52 +00:00
/*
2010-01-26 20:13:10 -07:00
* clock2xxx . c - OMAP2xxx - specific clock integration code
2005-11-10 14:26:52 +00:00
*
2010-01-26 20:13:10 -07:00
* Copyright ( C ) 2005 - 2008 Texas Instruments , Inc .
* Copyright ( C ) 2004 - 2010 Nokia Corporation
2005-11-10 14:26:52 +00:00
*
2010-01-26 20:13:10 -07:00
* Contacts :
* Richard Woodruff < r - woodruff2 @ ti . com >
* Paul Walmsley
2005-11-10 14:26:52 +00:00
*
2010-01-26 20:13:10 -07:00
* Based on earlier work by Tuukka Tikkanen , Tony Lindgren ,
* Gordon McNutt and RidgeRun , Inc .
2005-11-10 14:26:52 +00:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
2008-03-18 10:35:15 +02:00
# undef DEBUG
2005-11-10 14:26:52 +00:00
# include <linux/kernel.h>
# include <linux/errno.h>
2006-01-07 16:15:52 +00:00
# include <linux/clk.h>
2008-03-18 10:35:15 +02:00
# include <linux/io.h>
2005-11-10 14:26:52 +00:00
2012-02-24 10:34:35 -08:00
# include <plat/cpu.h>
2009-10-20 09:40:47 -07:00
# include <plat/clock.h>
2005-11-10 14:26:52 +00:00
2008-03-18 10:35:15 +02:00
# include "clock.h"
2009-12-08 16:21:29 -07:00
# include "clock2xxx.h"
2008-03-18 10:35:15 +02:00
# include "cm.h"
# include "cm-regbits-24xx.h"
2005-11-10 14:26:52 +00:00
2009-12-08 16:21:29 -07:00
struct clk * vclk , * sclk , * dclk ;
2005-11-10 14:26:52 +00:00
2010-01-26 20:13:10 -07:00
/*
2008-03-18 10:35:15 +02:00
* Omap24xx specific clock functions
2010-01-26 20:13:10 -07:00
*/
2005-11-10 14:26:52 +00:00
2006-09-25 12:41:20 +03:00
/*
* Set clocks for bypass mode for reboot to work .
*/
2010-01-26 20:13:11 -07:00
void omap2xxx_clk_prepare_for_reboot ( void )
2006-09-25 12:41:20 +03:00
{
u32 rate ;
if ( vclk = = NULL | | sclk = = NULL )
return ;
rate = clk_get_rate ( sclk ) ;
clk_set_rate ( vclk , rate ) ;
}
2005-11-10 14:26:52 +00:00
/*
2010-02-22 22:09:36 -07:00
* Switch the MPU rate if specified on cmdline . We cannot do this
* early until cmdline is parsed . XXX This should be removed from the
* clock code and handled by the OPP layer code in the near future .
2005-11-10 14:26:52 +00:00
*/
2010-01-26 20:13:09 -07:00
static int __init omap2xxx_clk_arch_init ( void )
2005-11-10 14:26:52 +00:00
{
2010-02-22 22:09:36 -07:00
int ret ;
2009-12-08 16:21:29 -07:00
2010-01-26 20:13:09 -07:00
if ( ! cpu_is_omap24xx ( ) )
return 0 ;
2010-02-22 22:09:36 -07:00
ret = omap2_clk_switch_mpurate_at_boot ( " virt_prcm_set " ) ;
if ( ! ret )
omap2_clk_print_new_rates ( " sys_ck " , " dpll_ck " , " mpu_ck " ) ;
2005-11-10 14:26:52 +00:00
2010-02-22 22:09:36 -07:00
return ret ;
2005-11-10 14:26:52 +00:00
}
2010-02-22 22:09:36 -07:00
2010-01-26 20:13:09 -07:00
arch_initcall ( omap2xxx_clk_arch_init ) ;
2005-11-10 14:26:52 +00:00