2019-05-28 09:57:21 -07:00
// SPDX-License-Identifier: GPL-2.0-only
2013-09-17 10:11:53 +01:00
/*
* Clock definitions for u8500 platform .
*
* Copyright ( C ) 2012 ST - Ericsson SA
* Author : Ulf Hansson < ulf . hansson @ linaro . org >
*/
2013-09-17 10:26:24 +01:00
# include <linux/of.h>
2015-07-30 15:19:25 +02:00
# include <linux/of_address.h>
2013-09-17 10:11:53 +01:00
# include <linux/clk-provider.h>
# include <linux/mfd/dbx500-prcmu.h>
# include "clk.h"
2013-09-17 10:31:39 +01:00
# define PRCC_NUM_PERIPH_CLUSTERS 6
# define PRCC_PERIPHS_PER_CLUSTER 32
2013-09-17 10:30:19 +01:00
static struct clk * prcmu_clk [ PRCMU_NUM_CLKS ] ;
2013-09-17 10:31:39 +01:00
static struct clk * prcc_pclk [ ( PRCC_NUM_PERIPH_CLUSTERS + 1 ) * PRCC_PERIPHS_PER_CLUSTER ] ;
2013-09-17 10:33:05 +01:00
static struct clk * prcc_kclk [ ( PRCC_NUM_PERIPH_CLUSTERS + 1 ) * PRCC_PERIPHS_PER_CLUSTER ] ;
2013-09-17 10:30:19 +01:00
2013-07-22 13:13:01 +01:00
# define PRCC_SHOW(clk, base, bit) \
clk [ ( base * PRCC_PERIPHS_PER_CLUSTER ) + bit ]
2013-09-17 10:31:39 +01:00
# define PRCC_PCLK_STORE(clk, base, bit) \
prcc_pclk [ ( base * PRCC_PERIPHS_PER_CLUSTER ) + bit ] = clk
2013-09-17 10:33:05 +01:00
# define PRCC_KCLK_STORE(clk, base, bit) \
prcc_kclk [ ( base * PRCC_PERIPHS_PER_CLUSTER ) + bit ] = clk
2013-07-22 13:13:01 +01:00
2014-01-15 11:13:26 +05:30
static struct clk * ux500_twocell_get ( struct of_phandle_args * clkspec ,
void * data )
2013-07-22 13:13:01 +01:00
{
struct clk * * clk_data = data ;
unsigned int base , bit ;
if ( clkspec - > args_count ! = 2 )
return ERR_PTR ( - EINVAL ) ;
base = clkspec - > args [ 0 ] ;
bit = clkspec - > args [ 1 ] ;
if ( base ! = 1 & & base ! = 2 & & base ! = 3 & & base ! = 5 & & base ! = 6 ) {
pr_err ( " %s: invalid PRCC base %d \n " , __func__ , base ) ;
return ERR_PTR ( - EINVAL ) ;
}
return PRCC_SHOW ( clk_data , base , bit ) ;
}
2015-07-30 15:19:25 +02:00
/* CLKRST4 is missing making it hard to index things */
enum clkrst_index {
CLKRST1_INDEX = 0 ,
CLKRST2_INDEX ,
CLKRST3_INDEX ,
CLKRST5_INDEX ,
CLKRST6_INDEX ,
CLKRST_MAX ,
} ;
2016-06-20 22:47:53 +02:00
static void u8500_clk_init ( struct device_node * np )
2013-09-17 10:11:53 +01:00
{
struct prcmu_fw_version * fw_version ;
2013-09-17 10:26:24 +01:00
struct device_node * child = NULL ;
2013-09-17 10:11:53 +01:00
const char * sgaclk_parent = NULL ;
2013-09-17 10:35:00 +01:00
struct clk * clk , * rtc_clk , * twd_clk ;
2015-07-30 15:19:25 +02:00
u32 bases [ CLKRST_MAX ] ;
int i ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
for ( i = 0 ; i < ARRAY_SIZE ( bases ) ; i + + ) {
struct resource r ;
if ( of_address_to_resource ( np , i , & r ) )
/* Not much choice but to continue */
pr_err ( " failed to get CLKRST %d base address \n " ,
i + 1 ) ;
bases [ i ] = r . start ;
}
2013-09-17 10:26:24 +01:00
2013-09-17 10:11:53 +01:00
/* Clock sources */
clk = clk_reg_prcmu_gate ( " soc0_pll " , NULL , PRCMU_PLLSOC0 ,
2016-03-01 11:00:04 -08:00
CLK_IGNORE_UNUSED ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PLLSOC0 ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_gate ( " soc1_pll " , NULL , PRCMU_PLLSOC1 ,
2016-03-01 11:00:04 -08:00
CLK_IGNORE_UNUSED ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PLLSOC1 ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_gate ( " ddr_pll " , NULL , PRCMU_PLLDDR ,
2016-03-01 11:00:04 -08:00
CLK_IGNORE_UNUSED ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PLLDDR ] = clk ;
2013-09-17 10:11:53 +01:00
/* FIXME: Add sys, ulp and int clocks here. */
2013-09-17 10:34:24 +01:00
rtc_clk = clk_register_fixed_rate ( NULL , " rtc32k " , " NULL " ,
2016-03-01 11:00:04 -08:00
CLK_IGNORE_UNUSED ,
2013-09-17 10:11:53 +01:00
32768 ) ;
/* PRCMU clocks */
fw_version = prcmu_get_fw_version ( ) ;
if ( fw_version ! = NULL ) {
switch ( fw_version - > project ) {
case PRCMU_FW_PROJECT_U8500_C2 :
2019-12-17 22:05:04 +01:00
case PRCMU_FW_PROJECT_U8500_MBL :
2013-09-17 10:11:53 +01:00
case PRCMU_FW_PROJECT_U8520 :
case PRCMU_FW_PROJECT_U8420 :
2019-12-17 22:05:04 +01:00
case PRCMU_FW_PROJECT_U8420_SYSCLK :
2013-09-17 10:11:53 +01:00
sgaclk_parent = " soc0_pll " ;
break ;
default :
break ;
}
}
if ( sgaclk_parent )
clk = clk_reg_prcmu_gate ( " sgclk " , sgaclk_parent ,
PRCMU_SGACLK , 0 ) ;
else
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " sgclk " , NULL , PRCMU_SGACLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_SGACLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " uartclk " , NULL , PRCMU_UARTCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_UARTCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " msp02clk " , NULL , PRCMU_MSP02CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_MSP02CLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " msp1clk " , NULL , PRCMU_MSP1CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_MSP1CLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " i2cclk " , NULL , PRCMU_I2CCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_I2CCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " slimclk " , NULL , PRCMU_SLIMCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_SLIMCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " per1clk " , NULL , PRCMU_PER1CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PER1CLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " per2clk " , NULL , PRCMU_PER2CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PER2CLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " per3clk " , NULL , PRCMU_PER3CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PER3CLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " per5clk " , NULL , PRCMU_PER5CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PER5CLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " per6clk " , NULL , PRCMU_PER6CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PER6CLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " per7clk " , NULL , PRCMU_PER7CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PER7CLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " lcdclk " , NULL , PRCMU_LCDCLK , 0 ,
2016-03-01 11:00:04 -08:00
CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_LCDCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_opp_gate ( " bmlclk " , NULL , PRCMU_BMLCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_BMLCLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " hsitxclk " , NULL , PRCMU_HSITXCLK , 0 ,
2016-03-01 11:00:04 -08:00
CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_HSITXCLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " hsirxclk " , NULL , PRCMU_HSIRXCLK , 0 ,
2016-03-01 11:00:04 -08:00
CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_HSIRXCLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " hdmiclk " , NULL , PRCMU_HDMICLK , 0 ,
2016-03-01 11:00:04 -08:00
CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_HDMICLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " apeatclk " , NULL , PRCMU_APEATCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_APEATCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2015-04-20 15:06:28 +02:00
clk = clk_reg_prcmu_scalable ( " apetraceclk " , NULL , PRCMU_APETRACECLK , 0 ,
2016-03-01 11:00:04 -08:00
CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_APETRACECLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " mcdeclk " , NULL , PRCMU_MCDECLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_MCDECLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_opp_gate ( " ipi2cclk " , NULL , PRCMU_IPI2CCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_IPI2CCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " dsialtclk " , NULL , PRCMU_DSIALTCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_DSIALTCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " dmaclk " , NULL , PRCMU_DMACLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_DMACLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " b2r2clk " , NULL , PRCMU_B2R2CLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_B2R2CLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " tvclk " , NULL , PRCMU_TVCLK , 0 ,
2016-03-01 11:00:04 -08:00
CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_TVCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " sspclk " , NULL , PRCMU_SSPCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_SSPCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " rngclk " , NULL , PRCMU_RNGCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_RNGCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " uiccclk " , NULL , PRCMU_UICCCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_UICCCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2016-03-01 11:00:04 -08:00
clk = clk_reg_prcmu_gate ( " timclk " , NULL , PRCMU_TIMCLK , 0 ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_TIMCLK ] = clk ;
2013-09-17 10:11:53 +01:00
2017-01-13 16:07:47 +01:00
clk = clk_reg_prcmu_gate ( " ab8500_sysclk " , NULL , PRCMU_SYSCLK , 0 ) ;
prcmu_clk [ PRCMU_SYSCLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_opp_volt_scalable ( " sdmmcclk " , NULL , PRCMU_SDMMCCLK ,
2016-03-01 11:00:04 -08:00
100000000 , CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_SDMMCCLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " dsi_pll " , " hdmiclk " ,
PRCMU_PLLDSI , 0 , CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_PLLDSI ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " dsi0clk " , " dsi_pll " ,
PRCMU_DSI0CLK , 0 , CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_DSI0CLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " dsi1clk " , " dsi_pll " ,
PRCMU_DSI1CLK , 0 , CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_DSI1CLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " dsi0escclk " , " tvclk " ,
PRCMU_DSI0ESCCLK , 0 , CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_DSI0ESCCLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " dsi1escclk " , " tvclk " ,
PRCMU_DSI1ESCCLK , 0 , CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_DSI1ESCCLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable ( " dsi2escclk " , " tvclk " ,
PRCMU_DSI2ESCCLK , 0 , CLK_SET_RATE_GATE ) ;
2013-09-17 10:30:19 +01:00
prcmu_clk [ PRCMU_DSI2ESCCLK ] = clk ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcmu_scalable_rate ( " armss " , NULL ,
2016-03-01 11:00:04 -08:00
PRCMU_ARMSS , 0 , CLK_IGNORE_UNUSED ) ;
2013-09-18 16:09:38 +01:00
prcmu_clk [ PRCMU_ARMSS ] = clk ;
2013-09-17 10:11:53 +01:00
2013-09-17 10:35:00 +01:00
twd_clk = clk_register_fixed_factor ( NULL , " smp_twd " , " armss " ,
2013-09-17 10:11:53 +01:00
CLK_IGNORE_UNUSED , 1 , 2 ) ;
/*
* FIXME : Add special handled PRCMU clocks here :
* 1. clkout0yuv , use PRCMU as parent + need regulator + pinctrl .
* 2. ab9540_clkout1yuv , see clkout0yuv
*/
/* PRCC P-clocks */
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk0 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 0 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 0 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk1 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 1 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 1 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk2 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 2 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 2 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk3 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 3 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 3 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk4 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 4 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 4 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk5 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 5 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 5 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk6 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 6 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 6 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk7 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 7 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 7 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk8 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 8 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 8 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk9 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 9 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 9 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk10 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 10 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 10 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p1_pclk11 " , " per1clk " , bases [ CLKRST1_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 11 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 1 , 11 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk0 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 0 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 0 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk1 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 1 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 1 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk2 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 2 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 2 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk3 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 3 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 3 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk4 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 4 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 4 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk5 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 5 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 5 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk6 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 6 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 6 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk7 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 7 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 7 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk8 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 8 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 8 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk9 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 9 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 9 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk10 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 10 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 10 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk11 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 11 ) , 0 ) ;
2013-10-18 10:56:14 +02:00
PRCC_PCLK_STORE ( clk , 2 , 11 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p2_pclk12 " , " per2clk " , bases [ CLKRST2_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 12 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 2 , 12 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk0 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 0 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 0 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk1 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 1 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 1 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk2 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 2 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 2 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk3 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 3 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 3 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk4 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 4 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 4 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk5 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 5 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 5 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk6 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 6 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 6 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk7 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 7 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 7 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p3_pclk8 " , " per3clk " , bases [ CLKRST3_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 8 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 3 , 8 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p5_pclk0 " , " per5clk " , bases [ CLKRST5_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 0 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 5 , 0 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p5_pclk1 " , " per5clk " , bases [ CLKRST5_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 1 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 5 , 1 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p6_pclk0 " , " per6clk " , bases [ CLKRST6_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 0 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 6 , 0 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p6_pclk1 " , " per6clk " , bases [ CLKRST6_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 1 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 6 , 1 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p6_pclk2 " , " per6clk " , bases [ CLKRST6_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 2 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 6 , 2 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p6_pclk3 " , " per6clk " , bases [ CLKRST6_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 3 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 6 , 3 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p6_pclk4 " , " per6clk " , bases [ CLKRST6_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 4 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 6 , 4 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p6_pclk5 " , " per6clk " , bases [ CLKRST6_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 5 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 6 , 5 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p6_pclk6 " , " per6clk " , bases [ CLKRST6_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 6 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 6 , 6 ) ;
2013-09-17 10:11:53 +01:00
2015-07-30 15:19:25 +02:00
clk = clk_reg_prcc_pclk ( " p6_pclk7 " , " per6clk " , bases [ CLKRST6_INDEX ] ,
2013-09-17 10:11:53 +01:00
BIT ( 7 ) , 0 ) ;
2013-09-17 10:31:39 +01:00
PRCC_PCLK_STORE ( clk , 6 , 7 ) ;
2013-09-17 10:11:53 +01:00
/* PRCC K-clocks
*
* FIXME : Some drivers requires PERPIH [ n | to be automatically enabled
* by enabling just the K - clock , even if it is not a valid parent to
* the K - clock . Until drivers get fixed we might need some kind of
* " parent muxed join " .
*/
/* Periph1 */
clk = clk_reg_prcc_kclk ( " p1_uart0_kclk " , " uartclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 0 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 0 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_uart1_kclk " , " uartclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 1 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 1 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_i2c1_kclk " , " i2cclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 2 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 2 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_msp0_kclk " , " msp02clk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 3 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 3 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_msp1_kclk " , " msp1clk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 4 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 4 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_sdi0_kclk " , " sdmmcclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 5 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 5 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_i2c2_kclk " , " i2cclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 6 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 6 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_slimbus0_kclk " , " slimclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 8 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 8 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_i2c4_kclk " , " i2cclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 9 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 9 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p1_msp3_kclk " , " msp1clk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST1_INDEX ] , BIT ( 10 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 1 , 10 ) ;
2013-09-17 10:11:53 +01:00
/* Periph2 */
clk = clk_reg_prcc_kclk ( " p2_i2c3_kclk " , " i2cclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST2_INDEX ] , BIT ( 0 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 2 , 0 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p2_sdi4_kclk " , " sdmmcclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST2_INDEX ] , BIT ( 2 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 2 , 2 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p2_msp2_kclk " , " msp02clk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST2_INDEX ] , BIT ( 3 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 2 , 3 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p2_sdi1_kclk " , " sdmmcclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST2_INDEX ] , BIT ( 4 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 2 , 4 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p2_sdi3_kclk " , " sdmmcclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST2_INDEX ] , BIT ( 5 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 2 , 5 ) ;
2013-09-17 10:11:53 +01:00
/* Note that rate is received from parent. */
clk = clk_reg_prcc_kclk ( " p2_ssirx_kclk " , " hsirxclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST2_INDEX ] , BIT ( 6 ) ,
2013-09-17 10:11:53 +01:00
CLK_SET_RATE_GATE | CLK_SET_RATE_PARENT ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 2 , 6 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p2_ssitx_kclk " , " hsitxclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST2_INDEX ] , BIT ( 7 ) ,
2013-09-17 10:11:53 +01:00
CLK_SET_RATE_GATE | CLK_SET_RATE_PARENT ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 2 , 7 ) ;
2013-09-17 10:11:53 +01:00
/* Periph3 */
clk = clk_reg_prcc_kclk ( " p3_ssp0_kclk " , " sspclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST3_INDEX ] , BIT ( 1 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 3 , 1 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p3_ssp1_kclk " , " sspclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST3_INDEX ] , BIT ( 2 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 3 , 2 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p3_i2c0_kclk " , " i2cclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST3_INDEX ] , BIT ( 3 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 3 , 3 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p3_sdi2_kclk " , " sdmmcclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST3_INDEX ] , BIT ( 4 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 3 , 4 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p3_ske_kclk " , " rtc32k " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST3_INDEX ] , BIT ( 5 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 3 , 5 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p3_uart2_kclk " , " uartclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST3_INDEX ] , BIT ( 6 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 3 , 6 ) ;
2013-09-17 10:11:53 +01:00
clk = clk_reg_prcc_kclk ( " p3_sdi5_kclk " , " sdmmcclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST3_INDEX ] , BIT ( 7 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 3 , 7 ) ;
2013-09-17 10:11:53 +01:00
/* Periph6 */
clk = clk_reg_prcc_kclk ( " p3_rng_kclk " , " rngclk " ,
2015-07-30 15:19:25 +02:00
bases [ CLKRST6_INDEX ] , BIT ( 0 ) , CLK_SET_RATE_GATE ) ;
2013-09-17 10:33:05 +01:00
PRCC_KCLK_STORE ( clk , 6 , 0 ) ;
2013-09-17 10:26:24 +01:00
for_each_child_of_node ( np , child ) {
2013-09-17 10:30:19 +01:00
static struct clk_onecell_data clk_data ;
2018-12-05 13:50:21 -06:00
if ( of_node_name_eq ( child , " prcmu-clock " ) ) {
2013-09-17 10:30:19 +01:00
clk_data . clks = prcmu_clk ;
clk_data . clk_num = ARRAY_SIZE ( prcmu_clk ) ;
of_clk_add_provider ( child , of_clk_src_onecell_get , & clk_data ) ;
}
2018-12-05 13:50:21 -06:00
if ( of_node_name_eq ( child , " prcc-periph-clock " ) )
2013-09-17 10:31:39 +01:00
of_clk_add_provider ( child , ux500_twocell_get , prcc_pclk ) ;
2013-09-17 10:33:05 +01:00
2018-12-05 13:50:21 -06:00
if ( of_node_name_eq ( child , " prcc-kernel-clock " ) )
2013-09-17 10:33:05 +01:00
of_clk_add_provider ( child , ux500_twocell_get , prcc_kclk ) ;
2013-09-17 10:34:24 +01:00
2018-12-05 13:50:21 -06:00
if ( of_node_name_eq ( child , " rtc32k-clock " ) )
2013-09-17 10:34:24 +01:00
of_clk_add_provider ( child , of_clk_src_simple_get , rtc_clk ) ;
2013-09-17 10:35:00 +01:00
2018-12-05 13:50:21 -06:00
if ( of_node_name_eq ( child , " smp-twd-clock " ) )
2013-09-17 10:35:00 +01:00
of_clk_add_provider ( child , of_clk_src_simple_get , twd_clk ) ;
2013-09-17 10:26:24 +01:00
}
2013-09-17 10:11:53 +01:00
}
2016-06-20 22:47:53 +02:00
CLK_OF_DECLARE ( u8500_clks , " stericsson,u8500-clks " , u8500_clk_init ) ;