| dmitry pervushin | 1929cb3 | 2007-04-24 13:39:09 +0900 | [diff] [blame] | 1 | Clock framework on SuperH architecture | 
|  | 2 |  | 
|  | 3 | The framework on SH extends existing API by the function clk_set_rate_ex, | 
|  | 4 | which prototype is as follows: | 
|  | 5 |  | 
|  | 6 | clk_set_rate_ex (struct clk *clk, unsigned long rate, int algo_id) | 
|  | 7 |  | 
|  | 8 | The algo_id parameter is used to specify algorithm used to recalculate clocks, | 
|  | 9 | adjanced to clock, specified as first argument. It is assumed that algo_id==0 | 
|  | 10 | means no changes to adjanced clock | 
|  | 11 |  | 
|  | 12 | Internally, the clk_set_rate_ex forwards request to clk->ops->set_rate method, | 
|  | 13 | if it is present in ops structure. The method should set the clock rate and adjust | 
|  | 14 | all needed clocks according to the passed algo_id. | 
| Matt LaPlante | d919588 | 2008-07-25 19:45:33 -0700 | [diff] [blame] | 15 | Exact values for algo_id are machine-dependent. For the sh7722, the following | 
| dmitry pervushin | 1929cb3 | 2007-04-24 13:39:09 +0900 | [diff] [blame] | 16 | values are defined: | 
|  | 17 |  | 
|  | 18 | NO_CHANGE	= 0, | 
|  | 19 | IUS_N1_N1,	/* I:U = N:1, U:Sh = N:1 */ | 
|  | 20 | IUS_322,	/* I:U:Sh = 3:2:2	 */ | 
|  | 21 | IUS_522,	/* I:U:Sh = 5:2:2 	 */ | 
|  | 22 | IUS_N11,	/* I:U:Sh = N:1:1	 */ | 
|  | 23 | SB_N1,		/* Sh:B = N:1		 */ | 
|  | 24 | SB3_N1,		/* Sh:B3 = N:1		 */ | 
|  | 25 | SB3_32,		/* Sh:B3 = 3:2		 */ | 
|  | 26 | SB3_43,		/* Sh:B3 = 4:3		 */ | 
|  | 27 | SB3_54,		/* Sh:B3 = 5:4		 */ | 
|  | 28 | BP_N1,		/* B:P	 = N:1		 */ | 
|  | 29 | IP_N1		/* I:P	 = N:1		 */ | 
|  | 30 |  | 
|  | 31 | Each of these constants means relation between clocks that can be set via the FRQCR | 
|  | 32 | register |