2
* TI DaVinci clock definitions
4
* Copyright (C) 2006-2007 Texas Instruments.
5
* Copyright (C) 2008-2009 Deep Root Systems, LLC
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License version 2 as
9
* published by the Free Software Foundation.
12
#ifndef __ARCH_ARM_DAVINCI_CLOCK_H
13
#define __ARCH_ARM_DAVINCI_CLOCK_H
15
#define DAVINCI_PLL1_BASE 0x01c40800
16
#define DAVINCI_PLL2_BASE 0x01c40c00
19
/* PLL/Reset register offsets */
21
#define PLLCTL_PLLEN BIT(0)
22
#define PLLCTL_PLLPWRDN BIT(1)
23
#define PLLCTL_PLLRST BIT(3)
24
#define PLLCTL_PLLDIS BIT(4)
25
#define PLLCTL_PLLENSRC BIT(5)
26
#define PLLCTL_CLKMODE BIT(8)
29
#define PLLM_PLLM_MASK 0xff
39
#define PLLALNCTL 0x140
40
#define PLLDCHANGE 0x144
42
#define PLLCKSTAT 0x14c
43
#define PLLSYSTAT 0x150
50
#define PLLDIV_EN BIT(15)
51
#define PLLDIV_RATIO_MASK 0x1f
54
* OMAP-L138 system reference guide recommends a wait for 4 OSCIN/CLKIN
55
* cycles to ensure that the PLLC has switched to bypass mode. Delay of 1us
56
* ensures we are good for all > 4MHz OSCIN/CLKIN inputs. Typically the input
57
* is ~25MHz. Units are micro seconds.
59
#define PLL_BYPASS_TIME 1
60
/* From OMAP-L138 datasheet table 6-4. Units are micro seconds */
61
#define PLL_RESET_TIME 1
63
* From OMAP-L138 datasheet table 6-4; assuming prediv = 1, sqrt(pllm) = 4
64
* Units are micro seconds.
66
#define PLL_LOCK_TIME 20
70
#include <linux/list.h>
71
#include <asm/clkdev.h>
81
#define PLL_HAS_PREDIV 0x01
82
#define PLL_HAS_POSTDIV 0x02
85
struct list_head node;
94
struct list_head children; /* list of children */
95
struct list_head childnode; /* parent's child list node */
96
struct pll_data *pll_data;
98
unsigned long (*recalc) (struct clk *);
99
int (*set_rate) (struct clk *clk, unsigned long rate);
100
int (*round_rate) (struct clk *clk, unsigned long rate);
103
/* Clock flags: SoC-specific flags start at BIT(16) */
104
#define ALWAYS_ENABLED BIT(1)
105
#define CLK_PSC BIT(2)
106
#define PSC_DSP BIT(3) /* PSC uses DSP domain, not ARM */
107
#define CLK_PLL BIT(4) /* PLL-derived clock */
108
#define PRE_PLL BIT(5) /* source is before PLL mult/div */
109
#define PSC_SWRSTDISABLE BIT(6) /* Disable state is SwRstDisable */
111
#define CLK(dev, con, ck) \
118
int davinci_clk_init(struct clk_lookup *clocks);
119
int davinci_set_pllrate(struct pll_data *pll, unsigned int prediv,
120
unsigned int mult, unsigned int postdiv);
122
extern struct platform_device davinci_wdt_device;
123
extern void davinci_watchdog_reset(struct platform_device *);