summaryrefslogblamecommitdiff
path: root/Documentation/sh/clk.txt
blob: 114b595cfa978a2d17c1cced940043732d7fe333 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14













                                                                                  
                                                                             
















                                                                                   
Clock framework on SuperH architecture

The framework on SH extends existing API by the function clk_set_rate_ex,
which prototype is as follows:

    clk_set_rate_ex (struct clk *clk, unsigned long rate, int algo_id)

The algo_id parameter is used to specify algorithm used to recalculate clocks,
adjanced to clock, specified as first argument. It is assumed that algo_id==0
means no changes to adjanced clock

Internally, the clk_set_rate_ex forwards request to clk->ops->set_rate method,
if it is present in ops structure. The method should set the clock rate and adjust
all needed clocks according to the passed algo_id.
Exact values for algo_id are machine-dependent. For the sh7722, the following
values are defined:

	NO_CHANGE	= 0,
	IUS_N1_N1,	/* I:U = N:1, U:Sh = N:1 */
	IUS_322,	/* I:U:Sh = 3:2:2	 */
	IUS_522,	/* I:U:Sh = 5:2:2 	 */
	IUS_N11,	/* I:U:Sh = N:1:1	 */
	SB_N1,		/* Sh:B = N:1		 */
	SB3_N1,		/* Sh:B3 = N:1		 */
	SB3_32,		/* Sh:B3 = 3:2		 */
	SB3_43,		/* Sh:B3 = 4:3		 */
	SB3_54,		/* Sh:B3 = 5:4		 */
	BP_N1,		/* B:P	 = N:1		 */
	IP_N1		/* I:P	 = N:1		 */

Each of these constants means relation between clocks that can be set via the FRQCR
register