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 |