| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: armadaxp.c,v 1.7 2014/03/15 10:54:40 kiyohara Exp $ */ | | 1 | /* $NetBSD: armadaxp.c,v 1.8 2014/04/05 22:41:50 matt Exp $ */ |
2 | /******************************************************************************* | | 2 | /******************************************************************************* |
3 | Copyright (C) Marvell International Ltd. and its affiliates | | 3 | Copyright (C) Marvell International Ltd. and its affiliates |
4 | | | 4 | |
5 | Developed by Semihalf | | 5 | Developed by Semihalf |
6 | | | 6 | |
7 | ******************************************************************************** | | 7 | ******************************************************************************** |
8 | Marvell BSD License | | 8 | Marvell BSD License |
9 | | | 9 | |
10 | If you received this File from Marvell, you may opt to use, redistribute and/or | | 10 | If you received this File from Marvell, you may opt to use, redistribute and/or |
11 | modify this File under the following licensing terms. | | 11 | modify this File under the following licensing terms. |
12 | Redistribution and use in source and binary forms, with or without modification, | | 12 | Redistribution and use in source and binary forms, with or without modification, |
13 | are permitted provided that the following conditions are met: | | 13 | are permitted provided that the following conditions are met: |
14 | | | 14 | |
| @@ -27,27 +27,27 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIG | | | @@ -27,27 +27,27 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIG |
27 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | | 27 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
28 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | | 28 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
29 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR | | 29 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
30 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | | 30 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
31 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | | 31 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
32 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | | 32 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
33 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | | 33 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
34 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | | 34 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
35 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | | 35 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
36 | | | 36 | |
37 | *******************************************************************************/ | | 37 | *******************************************************************************/ |
38 | | | 38 | |
39 | #include <sys/cdefs.h> | | 39 | #include <sys/cdefs.h> |
40 | __KERNEL_RCSID(0, "$NetBSD: armadaxp.c,v 1.7 2014/03/15 10:54:40 kiyohara Exp $"); | | 40 | __KERNEL_RCSID(0, "$NetBSD: armadaxp.c,v 1.8 2014/04/05 22:41:50 matt Exp $"); |
41 | | | 41 | |
42 | #define _INTR_PRIVATE | | 42 | #define _INTR_PRIVATE |
43 | | | 43 | |
44 | #include "opt_mvsoc.h" | | 44 | #include "opt_mvsoc.h" |
45 | | | 45 | |
46 | #include <sys/param.h> | | 46 | #include <sys/param.h> |
47 | #include <sys/bus.h> | | 47 | #include <sys/bus.h> |
48 | | | 48 | |
49 | #include <machine/intr.h> | | 49 | #include <machine/intr.h> |
50 | | | 50 | |
51 | #include <arm/pic/picvar.h> | | 51 | #include <arm/pic/picvar.h> |
52 | #include <arm/pic/picvar.h> | | 52 | #include <arm/pic/picvar.h> |
53 | | | 53 | |
| @@ -359,26 +359,28 @@ armadaxp_getclks(void) | | | @@ -359,26 +359,28 @@ armadaxp_getclks(void) |
359 | mvPclk = clock_table_xp[sar_cpu_freq] * | | 359 | mvPclk = clock_table_xp[sar_cpu_freq] * |
360 | freq_conf_table[sar_fab_freq].vco_cpu; | | 360 | freq_conf_table[sar_fab_freq].vco_cpu; |
361 | | | 361 | |
362 | /* Get L2CLK clock frequency and use as system clock (mvSysclk) */ | | 362 | /* Get L2CLK clock frequency and use as system clock (mvSysclk) */ |
363 | mvSysclk = mvPclk / freq_conf_table[sar_fab_freq].vco_l2c; | | 363 | mvSysclk = mvPclk / freq_conf_table[sar_fab_freq].vco_l2c; |
364 | | | 364 | |
365 | /* Round mvSysclk value to integer MHz */ | | 365 | /* Round mvSysclk value to integer MHz */ |
366 | if (((mvPclk % freq_conf_table[sar_fab_freq].vco_l2c) * 10 / | | 366 | if (((mvPclk % freq_conf_table[sar_fab_freq].vco_l2c) * 10 / |
367 | freq_conf_table[sar_fab_freq].vco_l2c) >= 5) | | 367 | freq_conf_table[sar_fab_freq].vco_l2c) >= 5) |
368 | mvSysclk++; | | 368 | mvSysclk++; |
369 | | | 369 | |
370 | mvPclk *= 1000000; | | 370 | mvPclk *= 1000000; |
371 | mvSysclk *= 1000000; | | 371 | mvSysclk *= 1000000; |
| | | 372 | |
| | | 373 | curcpu()->ci_data.cpu_cc_freq = mvPclk; |
372 | } | | 374 | } |
373 | | | 375 | |
374 | void | | 376 | void |
375 | armada370_getclks(void) | | 377 | armada370_getclks(void) |
376 | { | | 378 | { |
377 | uint32_t sar; | | 379 | uint32_t sar; |
378 | uint8_t cpu_freq, fab_freq; | | 380 | uint8_t cpu_freq, fab_freq; |
379 | | | 381 | |
380 | sar = read_miscreg(ARMADAXP_MISC_SAR_LO); | | 382 | sar = read_miscreg(ARMADAXP_MISC_SAR_LO); |
381 | if (sar & 0x00100000) | | 383 | if (sar & 0x00100000) |
382 | mvTclk = 200000000; /* 200 MHz */ | | 384 | mvTclk = 200000000; /* 200 MHz */ |
383 | else | | 385 | else |
384 | mvTclk = 166666667; /* 166 MHz */ | | 386 | mvTclk = 166666667; /* 166 MHz */ |