| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0 |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Marvell Armada XP SoC clocks |
|---|
| 3 | 4 | * |
|---|
| .. | .. |
|---|
| 7 | 8 | * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> |
|---|
| 8 | 9 | * Andrew Lunn <andrew@lunn.ch> |
|---|
| 9 | 10 | * |
|---|
| 10 | | - * This file is licensed under the terms of the GNU General Public |
|---|
| 11 | | - * License version 2. This program is licensed "as is" without any |
|---|
| 12 | | - * warranty of any kind, whether express or implied. |
|---|
| 13 | 11 | */ |
|---|
| 14 | 12 | |
|---|
| 15 | 13 | #include <linux/kernel.h> |
|---|
| .. | .. |
|---|
| 52 | 50 | return 250000000; |
|---|
| 53 | 51 | } |
|---|
| 54 | 52 | |
|---|
| 55 | | -/* MV98DX3236 TCLK frequency is fixed to 200MHz */ |
|---|
| 56 | | -static u32 __init mv98dx3236_get_tclk_freq(void __iomem *sar) |
|---|
| 57 | | -{ |
|---|
| 58 | | - return 200000000; |
|---|
| 59 | | -} |
|---|
| 60 | | - |
|---|
| 61 | 53 | static const u32 axp_cpu_freqs[] __initconst = { |
|---|
| 62 | 54 | 1000000000, |
|---|
| 63 | 55 | 1066000000, |
|---|
| .. | .. |
|---|
| 93 | 85 | cpu_freq = axp_cpu_freqs[cpu_freq_select]; |
|---|
| 94 | 86 | |
|---|
| 95 | 87 | return cpu_freq; |
|---|
| 96 | | -} |
|---|
| 97 | | - |
|---|
| 98 | | -/* MV98DX3236 CLK frequency is fixed to 800MHz */ |
|---|
| 99 | | -static u32 __init mv98dx3236_get_cpu_freq(void __iomem *sar) |
|---|
| 100 | | -{ |
|---|
| 101 | | - return 800000000; |
|---|
| 102 | 88 | } |
|---|
| 103 | 89 | |
|---|
| 104 | 90 | static const int axp_nbclk_ratios[32][2] __initconst = { |
|---|
| .. | .. |
|---|
| 170 | 156 | .num_ratios = ARRAY_SIZE(axp_coreclk_ratios), |
|---|
| 171 | 157 | }; |
|---|
| 172 | 158 | |
|---|
| 173 | | -static const struct coreclk_soc_desc mv98dx3236_coreclks = { |
|---|
| 174 | | - .get_tclk_freq = mv98dx3236_get_tclk_freq, |
|---|
| 175 | | - .get_cpu_freq = mv98dx3236_get_cpu_freq, |
|---|
| 176 | | -}; |
|---|
| 177 | | - |
|---|
| 178 | 159 | /* |
|---|
| 179 | 160 | * Clock Gating Control |
|---|
| 180 | 161 | */ |
|---|
| .. | .. |
|---|
| 209 | 190 | { "xor1", NULL, 28, 0 }, |
|---|
| 210 | 191 | { "sata1lnk", NULL, 29, 0 }, |
|---|
| 211 | 192 | { "sata1", "sata1lnk", 30, 0 }, |
|---|
| 212 | | - { } |
|---|
| 213 | | -}; |
|---|
| 214 | | - |
|---|
| 215 | | -static const struct clk_gating_soc_desc mv98dx3236_gating_desc[] __initconst = { |
|---|
| 216 | | - { "ge1", NULL, 3, 0 }, |
|---|
| 217 | | - { "ge0", NULL, 4, 0 }, |
|---|
| 218 | | - { "pex00", NULL, 5, 0 }, |
|---|
| 219 | | - { "sdio", NULL, 17, 0 }, |
|---|
| 220 | | - { "xor0", NULL, 22, 0 }, |
|---|
| 221 | 193 | { } |
|---|
| 222 | 194 | }; |
|---|
| 223 | 195 | |
|---|