| 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 |