.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Copyright (c) 2012, 2013, NVIDIA CORPORATION. All rights reserved. |
---|
3 | | - * |
---|
4 | | - * This program is free software; you can redistribute it and/or modify it |
---|
5 | | - * under the terms and conditions of the GNU General Public License, |
---|
6 | | - * version 2, as published by the Free Software Foundation. |
---|
7 | | - * |
---|
8 | | - * This program is distributed in the hope it will be useful, but WITHOUT |
---|
9 | | - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
---|
10 | | - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
---|
11 | | - * more details. |
---|
12 | | - * |
---|
13 | | - * You should have received a copy of the GNU General Public License |
---|
14 | | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
---|
15 | 4 | */ |
---|
16 | 5 | |
---|
17 | 6 | #include <linux/io.h> |
---|
.. | .. |
---|
746 | 735 | [tegra_clk_fuse_burn] = { .dt_id = TEGRA114_CLK_FUSE_BURN, .present = true }, |
---|
747 | 736 | [tegra_clk_clk_32k] = { .dt_id = TEGRA114_CLK_CLK_32K, .present = true }, |
---|
748 | 737 | [tegra_clk_clk_m] = { .dt_id = TEGRA114_CLK_CLK_M, .present = true }, |
---|
749 | | - [tegra_clk_clk_m_div2] = { .dt_id = TEGRA114_CLK_CLK_M_DIV2, .present = true }, |
---|
750 | | - [tegra_clk_clk_m_div4] = { .dt_id = TEGRA114_CLK_CLK_M_DIV4, .present = true }, |
---|
| 738 | + [tegra_clk_osc] = { .dt_id = TEGRA114_CLK_OSC, .present = true }, |
---|
| 739 | + [tegra_clk_osc_div2] = { .dt_id = TEGRA114_CLK_OSC_DIV2, .present = true }, |
---|
| 740 | + [tegra_clk_osc_div4] = { .dt_id = TEGRA114_CLK_OSC_DIV4, .present = true }, |
---|
751 | 741 | [tegra_clk_pll_ref] = { .dt_id = TEGRA114_CLK_PLL_REF, .present = true }, |
---|
752 | 742 | [tegra_clk_pll_c] = { .dt_id = TEGRA114_CLK_PLL_C, .present = true }, |
---|
753 | 743 | [tegra_clk_pll_c_out1] = { .dt_id = TEGRA114_CLK_PLL_C_OUT1, .present = true }, |
---|
.. | .. |
---|
789 | 779 | [tegra_clk_audio3] = { .dt_id = TEGRA114_CLK_AUDIO3, .present = true }, |
---|
790 | 780 | [tegra_clk_audio4] = { .dt_id = TEGRA114_CLK_AUDIO4, .present = true }, |
---|
791 | 781 | [tegra_clk_spdif] = { .dt_id = TEGRA114_CLK_SPDIF, .present = true }, |
---|
792 | | - [tegra_clk_clk_out_1] = { .dt_id = TEGRA114_CLK_CLK_OUT_1, .present = true }, |
---|
793 | | - [tegra_clk_clk_out_2] = { .dt_id = TEGRA114_CLK_CLK_OUT_2, .present = true }, |
---|
794 | | - [tegra_clk_clk_out_3] = { .dt_id = TEGRA114_CLK_CLK_OUT_3, .present = true }, |
---|
795 | | - [tegra_clk_blink] = { .dt_id = TEGRA114_CLK_BLINK, .present = true }, |
---|
796 | 782 | [tegra_clk_xusb_host_src] = { .dt_id = TEGRA114_CLK_XUSB_HOST_SRC, .present = true }, |
---|
797 | 783 | [tegra_clk_xusb_falcon_src] = { .dt_id = TEGRA114_CLK_XUSB_FALCON_SRC, .present = true }, |
---|
798 | 784 | [tegra_clk_xusb_fs_src] = { .dt_id = TEGRA114_CLK_XUSB_FS_SRC, .present = true }, |
---|
.. | .. |
---|
814 | 800 | [tegra_clk_audio3_mux] = { .dt_id = TEGRA114_CLK_AUDIO3_MUX, .present = true }, |
---|
815 | 801 | [tegra_clk_audio4_mux] = { .dt_id = TEGRA114_CLK_AUDIO4_MUX, .present = true }, |
---|
816 | 802 | [tegra_clk_spdif_mux] = { .dt_id = TEGRA114_CLK_SPDIF_MUX, .present = true }, |
---|
817 | | - [tegra_clk_clk_out_1_mux] = { .dt_id = TEGRA114_CLK_CLK_OUT_1_MUX, .present = true }, |
---|
818 | | - [tegra_clk_clk_out_2_mux] = { .dt_id = TEGRA114_CLK_CLK_OUT_2_MUX, .present = true }, |
---|
819 | | - [tegra_clk_clk_out_3_mux] = { .dt_id = TEGRA114_CLK_CLK_OUT_3_MUX, .present = true }, |
---|
820 | 803 | [tegra_clk_dsia_mux] = { .dt_id = TEGRA114_CLK_DSIA_MUX, .present = true }, |
---|
821 | 804 | [tegra_clk_dsib_mux] = { .dt_id = TEGRA114_CLK_DSIB_MUX, .present = true }, |
---|
822 | 805 | [tegra_clk_cec] = { .dt_id = TEGRA114_CLK_CEC, .present = true }, |
---|
.. | .. |
---|
826 | 809 | { .con_id = "clk_m", .dt_id = TEGRA114_CLK_CLK_M }, |
---|
827 | 810 | { .con_id = "pll_ref", .dt_id = TEGRA114_CLK_PLL_REF }, |
---|
828 | 811 | { .con_id = "clk_32k", .dt_id = TEGRA114_CLK_CLK_32K }, |
---|
829 | | - { .con_id = "clk_m_div2", .dt_id = TEGRA114_CLK_CLK_M_DIV2 }, |
---|
830 | | - { .con_id = "clk_m_div4", .dt_id = TEGRA114_CLK_CLK_M_DIV4 }, |
---|
| 812 | + { .con_id = "osc", .dt_id = TEGRA114_CLK_OSC }, |
---|
| 813 | + { .con_id = "osc_div2", .dt_id = TEGRA114_CLK_OSC_DIV2 }, |
---|
| 814 | + { .con_id = "osc_div4", .dt_id = TEGRA114_CLK_OSC_DIV4 }, |
---|
831 | 815 | { .con_id = "pll_c", .dt_id = TEGRA114_CLK_PLL_C }, |
---|
832 | 816 | { .con_id = "pll_c_out1", .dt_id = TEGRA114_CLK_PLL_C_OUT1 }, |
---|
833 | 817 | { .con_id = "pll_c2", .dt_id = TEGRA114_CLK_PLL_C2 }, |
---|
.. | .. |
---|
874 | 858 | { .con_id = "audio3_2x", .dt_id = TEGRA114_CLK_AUDIO3_2X }, |
---|
875 | 859 | { .con_id = "audio4_2x", .dt_id = TEGRA114_CLK_AUDIO4_2X }, |
---|
876 | 860 | { .con_id = "spdif_2x", .dt_id = TEGRA114_CLK_SPDIF_2X }, |
---|
877 | | - { .con_id = "extern1", .dev_id = "clk_out_1", .dt_id = TEGRA114_CLK_EXTERN1 }, |
---|
878 | | - { .con_id = "extern2", .dev_id = "clk_out_2", .dt_id = TEGRA114_CLK_EXTERN2 }, |
---|
879 | | - { .con_id = "extern3", .dev_id = "clk_out_3", .dt_id = TEGRA114_CLK_EXTERN3 }, |
---|
880 | | - { .con_id = "blink", .dt_id = TEGRA114_CLK_BLINK }, |
---|
| 861 | + { .con_id = "extern1", .dt_id = TEGRA114_CLK_EXTERN1 }, |
---|
| 862 | + { .con_id = "extern2", .dt_id = TEGRA114_CLK_EXTERN2 }, |
---|
| 863 | + { .con_id = "extern3", .dt_id = TEGRA114_CLK_EXTERN3 }, |
---|
881 | 864 | { .con_id = "cclk_g", .dt_id = TEGRA114_CLK_CCLK_G }, |
---|
882 | 865 | { .con_id = "cclk_lp", .dt_id = TEGRA114_CLK_CCLK_LP }, |
---|
883 | 866 | { .con_id = "sclk", .dt_id = TEGRA114_CLK_SCLK }, |
---|
.. | .. |
---|
911 | 894 | /* clk_32k */ |
---|
912 | 895 | clk = clk_register_fixed_rate(NULL, "clk_32k", NULL, 0, 32768); |
---|
913 | 896 | clks[TEGRA114_CLK_CLK_32K] = clk; |
---|
914 | | - |
---|
915 | | - /* clk_m_div2 */ |
---|
916 | | - clk = clk_register_fixed_factor(NULL, "clk_m_div2", "clk_m", |
---|
917 | | - CLK_SET_RATE_PARENT, 1, 2); |
---|
918 | | - clks[TEGRA114_CLK_CLK_M_DIV2] = clk; |
---|
919 | | - |
---|
920 | | - /* clk_m_div4 */ |
---|
921 | | - clk = clk_register_fixed_factor(NULL, "clk_m_div4", "clk_m", |
---|
922 | | - CLK_SET_RATE_PARENT, 1, 4); |
---|
923 | | - clks[TEGRA114_CLK_CLK_M_DIV4] = clk; |
---|
924 | | - |
---|
925 | 897 | } |
---|
926 | 898 | |
---|
927 | 899 | static void __init tegra114_pll_init(void __iomem *clk_base, |
---|
.. | .. |
---|
1164 | 1136 | { TEGRA114_CLK_UARTB, TEGRA114_CLK_PLL_P, 408000000, 0 }, |
---|
1165 | 1137 | { TEGRA114_CLK_UARTC, TEGRA114_CLK_PLL_P, 408000000, 0 }, |
---|
1166 | 1138 | { TEGRA114_CLK_UARTD, TEGRA114_CLK_PLL_P, 408000000, 0 }, |
---|
1167 | | - { TEGRA114_CLK_PLL_A, TEGRA114_CLK_CLK_MAX, 564480000, 1 }, |
---|
1168 | | - { TEGRA114_CLK_PLL_A_OUT0, TEGRA114_CLK_CLK_MAX, 11289600, 1 }, |
---|
1169 | | - { TEGRA114_CLK_EXTERN1, TEGRA114_CLK_PLL_A_OUT0, 0, 1 }, |
---|
1170 | | - { TEGRA114_CLK_CLK_OUT_1_MUX, TEGRA114_CLK_EXTERN1, 0, 1 }, |
---|
1171 | | - { TEGRA114_CLK_CLK_OUT_1, TEGRA114_CLK_CLK_MAX, 0, 1 }, |
---|
| 1139 | + { TEGRA114_CLK_PLL_A, TEGRA114_CLK_CLK_MAX, 564480000, 0 }, |
---|
| 1140 | + { TEGRA114_CLK_PLL_A_OUT0, TEGRA114_CLK_CLK_MAX, 11289600, 0 }, |
---|
1172 | 1141 | { TEGRA114_CLK_I2S0, TEGRA114_CLK_PLL_A_OUT0, 11289600, 0 }, |
---|
1173 | 1142 | { TEGRA114_CLK_I2S1, TEGRA114_CLK_PLL_A_OUT0, 11289600, 0 }, |
---|
1174 | 1143 | { TEGRA114_CLK_I2S2, TEGRA114_CLK_PLL_A_OUT0, 11289600, 0 }, |
---|
.. | .. |
---|
1348 | 1317 | } |
---|
1349 | 1318 | |
---|
1350 | 1319 | pmc_base = of_iomap(node, 0); |
---|
| 1320 | + of_node_put(node); |
---|
1351 | 1321 | if (!pmc_base) { |
---|
1352 | 1322 | pr_err("Can't map pmc registers\n"); |
---|
1353 | 1323 | WARN_ON(1); |
---|
.. | .. |
---|
1370 | 1340 | tegra_audio_clk_init(clk_base, pmc_base, tegra114_clks, |
---|
1371 | 1341 | tegra114_audio_plls, |
---|
1372 | 1342 | ARRAY_SIZE(tegra114_audio_plls), 24000000); |
---|
1373 | | - tegra_pmc_clk_init(pmc_base, tegra114_clks); |
---|
1374 | 1343 | tegra_super_clk_gen4_init(clk_base, pmc_base, tegra114_clks, |
---|
1375 | 1344 | &pll_x_params); |
---|
1376 | 1345 | |
---|