Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: tegra: Remove tegra_pmc_clk_init along with clk ids

Current Tegra clock driver registers PMC clocks clk_out_1, clk_out_2,
clk_out_3 and 32KHz blink output in tegra_pmc_init() which does direct
PMC register access during clk_ops and these PMC register read and write
access will not happen when PMC is in secure mode.

Any direct PMC register access from non-secure world will not go
through.

All the PMC clocks are moved to Tegra PMC driver with PMC as a clock
provider.

This patch removes tegra_pmc_clk_init along with corresponding clk ids
from Tegra clock driver.

Tested-by: Dmitry Osipenko <digetx@gmail.com>
Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>

authored by

Sowjanya Komatineni and committed by
Thierry Reding
acbeec3d c9e28c25

+19 -201
-1
drivers/clk/tegra/Makefile
··· 12 12 obj-y += clk-super.o 13 13 obj-y += clk-tegra-audio.o 14 14 obj-y += clk-tegra-periph.o 15 - obj-y += clk-tegra-pmc.o 16 15 obj-y += clk-tegra-fixed.o 17 16 obj-y += clk-tegra-super-gen4.o 18 17 obj-$(CONFIG_TEGRA_CLK_EMC) += clk-emc.o
-7
drivers/clk/tegra/clk-id.h
··· 32 32 tegra_clk_audio4, 33 33 tegra_clk_audio4_2x, 34 34 tegra_clk_audio4_mux, 35 - tegra_clk_blink, 36 35 tegra_clk_bsea, 37 36 tegra_clk_bsev, 38 37 tegra_clk_cclk_g, ··· 46 47 tegra_clk_osc, 47 48 tegra_clk_osc_div2, 48 49 tegra_clk_osc_div4, 49 - tegra_clk_clk_out_1, 50 - tegra_clk_clk_out_1_mux, 51 - tegra_clk_clk_out_2, 52 - tegra_clk_clk_out_2_mux, 53 - tegra_clk_clk_out_3, 54 - tegra_clk_clk_out_3_mux, 55 50 tegra_clk_cml0, 56 51 tegra_clk_cml1, 57 52 tegra_clk_csi,
-122
drivers/clk/tegra/clk-tegra-pmc.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * Copyright (c) 2012, 2013, NVIDIA CORPORATION. All rights reserved. 4 - */ 5 - 6 - #include <linux/io.h> 7 - #include <linux/clk-provider.h> 8 - #include <linux/clkdev.h> 9 - #include <linux/of.h> 10 - #include <linux/of_address.h> 11 - #include <linux/delay.h> 12 - #include <linux/export.h> 13 - #include <linux/clk/tegra.h> 14 - 15 - #include "clk.h" 16 - #include "clk-id.h" 17 - 18 - #define PMC_CLK_OUT_CNTRL 0x1a8 19 - #define PMC_DPD_PADS_ORIDE 0x1c 20 - #define PMC_DPD_PADS_ORIDE_BLINK_ENB 20 21 - #define PMC_CTRL 0 22 - #define PMC_CTRL_BLINK_ENB 7 23 - #define PMC_BLINK_TIMER 0x40 24 - 25 - struct pmc_clk_init_data { 26 - char *mux_name; 27 - char *gate_name; 28 - const char **parents; 29 - int num_parents; 30 - int mux_id; 31 - int gate_id; 32 - char *dev_name; 33 - u8 mux_shift; 34 - u8 gate_shift; 35 - }; 36 - 37 - #define PMC_CLK(_num, _mux_shift, _gate_shift)\ 38 - {\ 39 - .mux_name = "clk_out_" #_num "_mux",\ 40 - .gate_name = "clk_out_" #_num,\ 41 - .parents = clk_out ##_num ##_parents,\ 42 - .num_parents = ARRAY_SIZE(clk_out ##_num ##_parents),\ 43 - .mux_id = tegra_clk_clk_out_ ##_num ##_mux,\ 44 - .gate_id = tegra_clk_clk_out_ ##_num,\ 45 - .dev_name = "extern" #_num,\ 46 - .mux_shift = _mux_shift,\ 47 - .gate_shift = _gate_shift,\ 48 - } 49 - 50 - static DEFINE_SPINLOCK(clk_out_lock); 51 - 52 - static const char *clk_out1_parents[] = { "osc", "osc_div2", 53 - "osc_div4", "extern1", 54 - }; 55 - 56 - static const char *clk_out2_parents[] = { "osc", "osc_div2", 57 - "osc_div4", "extern2", 58 - }; 59 - 60 - static const char *clk_out3_parents[] = { "osc", "osc_div2", 61 - "osc_div4", "extern3", 62 - }; 63 - 64 - static struct pmc_clk_init_data pmc_clks[] = { 65 - PMC_CLK(1, 6, 2), 66 - PMC_CLK(2, 14, 10), 67 - PMC_CLK(3, 22, 18), 68 - }; 69 - 70 - void __init tegra_pmc_clk_init(void __iomem *pmc_base, 71 - struct tegra_clk *tegra_clks) 72 - { 73 - struct clk *clk; 74 - struct clk **dt_clk; 75 - int i; 76 - 77 - for (i = 0; i < ARRAY_SIZE(pmc_clks); i++) { 78 - struct pmc_clk_init_data *data; 79 - 80 - data = pmc_clks + i; 81 - 82 - dt_clk = tegra_lookup_dt_id(data->mux_id, tegra_clks); 83 - if (!dt_clk) 84 - continue; 85 - 86 - clk = clk_register_mux(NULL, data->mux_name, data->parents, 87 - data->num_parents, 88 - CLK_SET_RATE_NO_REPARENT | CLK_SET_RATE_PARENT, 89 - pmc_base + PMC_CLK_OUT_CNTRL, data->mux_shift, 90 - 3, 0, &clk_out_lock); 91 - *dt_clk = clk; 92 - 93 - 94 - dt_clk = tegra_lookup_dt_id(data->gate_id, tegra_clks); 95 - if (!dt_clk) 96 - continue; 97 - 98 - clk = clk_register_gate(NULL, data->gate_name, data->mux_name, 99 - CLK_SET_RATE_PARENT, 100 - pmc_base + PMC_CLK_OUT_CNTRL, 101 - data->gate_shift, 0, &clk_out_lock); 102 - *dt_clk = clk; 103 - clk_register_clkdev(clk, data->dev_name, data->gate_name); 104 - } 105 - 106 - /* blink */ 107 - writel_relaxed(0, pmc_base + PMC_BLINK_TIMER); 108 - clk = clk_register_gate(NULL, "blink_override", "clk_32k", 0, 109 - pmc_base + PMC_DPD_PADS_ORIDE, 110 - PMC_DPD_PADS_ORIDE_BLINK_ENB, 0, NULL); 111 - 112 - dt_clk = tegra_lookup_dt_id(tegra_clk_blink, tegra_clks); 113 - if (!dt_clk) 114 - return; 115 - 116 - clk = clk_register_gate(NULL, "blink", "blink_override", 0, 117 - pmc_base + PMC_CTRL, 118 - PMC_CTRL_BLINK_ENB, 0, NULL); 119 - clk_register_clkdev(clk, "blink", NULL); 120 - *dt_clk = clk; 121 - } 122 -
+3 -14
drivers/clk/tegra/clk-tegra114.c
··· 779 779 [tegra_clk_audio3] = { .dt_id = TEGRA114_CLK_AUDIO3, .present = true }, 780 780 [tegra_clk_audio4] = { .dt_id = TEGRA114_CLK_AUDIO4, .present = true }, 781 781 [tegra_clk_spdif] = { .dt_id = TEGRA114_CLK_SPDIF, .present = true }, 782 - [tegra_clk_clk_out_1] = { .dt_id = TEGRA114_CLK_CLK_OUT_1, .present = true }, 783 - [tegra_clk_clk_out_2] = { .dt_id = TEGRA114_CLK_CLK_OUT_2, .present = true }, 784 - [tegra_clk_clk_out_3] = { .dt_id = TEGRA114_CLK_CLK_OUT_3, .present = true }, 785 - [tegra_clk_blink] = { .dt_id = TEGRA114_CLK_BLINK, .present = true }, 786 782 [tegra_clk_xusb_host_src] = { .dt_id = TEGRA114_CLK_XUSB_HOST_SRC, .present = true }, 787 783 [tegra_clk_xusb_falcon_src] = { .dt_id = TEGRA114_CLK_XUSB_FALCON_SRC, .present = true }, 788 784 [tegra_clk_xusb_fs_src] = { .dt_id = TEGRA114_CLK_XUSB_FS_SRC, .present = true }, ··· 800 804 [tegra_clk_audio3_mux] = { .dt_id = TEGRA114_CLK_AUDIO3_MUX, .present = true }, 801 805 [tegra_clk_audio4_mux] = { .dt_id = TEGRA114_CLK_AUDIO4_MUX, .present = true }, 802 806 [tegra_clk_spdif_mux] = { .dt_id = TEGRA114_CLK_SPDIF_MUX, .present = true }, 803 - [tegra_clk_clk_out_1_mux] = { .dt_id = TEGRA114_CLK_CLK_OUT_1_MUX, .present = true }, 804 - [tegra_clk_clk_out_2_mux] = { .dt_id = TEGRA114_CLK_CLK_OUT_2_MUX, .present = true }, 805 - [tegra_clk_clk_out_3_mux] = { .dt_id = TEGRA114_CLK_CLK_OUT_3_MUX, .present = true }, 806 807 [tegra_clk_dsia_mux] = { .dt_id = TEGRA114_CLK_DSIA_MUX, .present = true }, 807 808 [tegra_clk_dsib_mux] = { .dt_id = TEGRA114_CLK_DSIB_MUX, .present = true }, 808 809 [tegra_clk_cec] = { .dt_id = TEGRA114_CLK_CEC, .present = true }, ··· 858 865 { .con_id = "audio3_2x", .dt_id = TEGRA114_CLK_AUDIO3_2X }, 859 866 { .con_id = "audio4_2x", .dt_id = TEGRA114_CLK_AUDIO4_2X }, 860 867 { .con_id = "spdif_2x", .dt_id = TEGRA114_CLK_SPDIF_2X }, 861 - { .con_id = "extern1", .dev_id = "clk_out_1", .dt_id = TEGRA114_CLK_EXTERN1 }, 862 - { .con_id = "extern2", .dev_id = "clk_out_2", .dt_id = TEGRA114_CLK_EXTERN2 }, 863 - { .con_id = "extern3", .dev_id = "clk_out_3", .dt_id = TEGRA114_CLK_EXTERN3 }, 864 - { .con_id = "blink", .dt_id = TEGRA114_CLK_BLINK }, 868 + { .con_id = "extern1", .dt_id = TEGRA114_CLK_EXTERN1 }, 869 + { .con_id = "extern2", .dt_id = TEGRA114_CLK_EXTERN2 }, 870 + { .con_id = "extern3", .dt_id = TEGRA114_CLK_EXTERN3 }, 865 871 { .con_id = "cclk_g", .dt_id = TEGRA114_CLK_CCLK_G }, 866 872 { .con_id = "cclk_lp", .dt_id = TEGRA114_CLK_CCLK_LP }, 867 873 { .con_id = "sclk", .dt_id = TEGRA114_CLK_SCLK }, ··· 1139 1147 { TEGRA114_CLK_PLL_A, TEGRA114_CLK_CLK_MAX, 564480000, 1 }, 1140 1148 { TEGRA114_CLK_PLL_A_OUT0, TEGRA114_CLK_CLK_MAX, 11289600, 1 }, 1141 1149 { TEGRA114_CLK_EXTERN1, TEGRA114_CLK_PLL_A_OUT0, 0, 1 }, 1142 - { TEGRA114_CLK_CLK_OUT_1_MUX, TEGRA114_CLK_EXTERN1, 0, 1 }, 1143 - { TEGRA114_CLK_CLK_OUT_1, TEGRA114_CLK_CLK_MAX, 0, 1 }, 1144 1150 { TEGRA114_CLK_I2S0, TEGRA114_CLK_PLL_A_OUT0, 11289600, 0 }, 1145 1151 { TEGRA114_CLK_I2S1, TEGRA114_CLK_PLL_A_OUT0, 11289600, 0 }, 1146 1152 { TEGRA114_CLK_I2S2, TEGRA114_CLK_PLL_A_OUT0, 11289600, 0 }, ··· 1340 1350 tegra_audio_clk_init(clk_base, pmc_base, tegra114_clks, 1341 1351 tegra114_audio_plls, 1342 1352 ARRAY_SIZE(tegra114_audio_plls), 24000000); 1343 - tegra_pmc_clk_init(pmc_base, tegra114_clks); 1344 1353 tegra_super_clk_gen4_init(clk_base, pmc_base, tegra114_clks, 1345 1354 &pll_x_params); 1346 1355
+10 -23
drivers/clk/tegra/clk-tegra124.c
··· 903 903 [tegra_clk_audio3] = { .dt_id = TEGRA124_CLK_AUDIO3, .present = true }, 904 904 [tegra_clk_audio4] = { .dt_id = TEGRA124_CLK_AUDIO4, .present = true }, 905 905 [tegra_clk_spdif] = { .dt_id = TEGRA124_CLK_SPDIF, .present = true }, 906 - [tegra_clk_clk_out_1] = { .dt_id = TEGRA124_CLK_CLK_OUT_1, .present = true }, 907 - [tegra_clk_clk_out_2] = { .dt_id = TEGRA124_CLK_CLK_OUT_2, .present = true }, 908 - [tegra_clk_clk_out_3] = { .dt_id = TEGRA124_CLK_CLK_OUT_3, .present = true }, 909 - [tegra_clk_blink] = { .dt_id = TEGRA124_CLK_BLINK, .present = true }, 910 906 [tegra_clk_xusb_host_src] = { .dt_id = TEGRA124_CLK_XUSB_HOST_SRC, .present = true }, 911 907 [tegra_clk_xusb_falcon_src] = { .dt_id = TEGRA124_CLK_XUSB_FALCON_SRC, .present = true }, 912 908 [tegra_clk_xusb_fs_src] = { .dt_id = TEGRA124_CLK_XUSB_FS_SRC, .present = true }, ··· 928 932 [tegra_clk_audio3_mux] = { .dt_id = TEGRA124_CLK_AUDIO3_MUX, .present = true }, 929 933 [tegra_clk_audio4_mux] = { .dt_id = TEGRA124_CLK_AUDIO4_MUX, .present = true }, 930 934 [tegra_clk_spdif_mux] = { .dt_id = TEGRA124_CLK_SPDIF_MUX, .present = true }, 931 - [tegra_clk_clk_out_1_mux] = { .dt_id = TEGRA124_CLK_CLK_OUT_1_MUX, .present = true }, 932 - [tegra_clk_clk_out_2_mux] = { .dt_id = TEGRA124_CLK_CLK_OUT_2_MUX, .present = true }, 933 - [tegra_clk_clk_out_3_mux] = { .dt_id = TEGRA124_CLK_CLK_OUT_3_MUX, .present = true }, 934 935 [tegra_clk_cec] = { .dt_id = TEGRA124_CLK_CEC, .present = true }, 935 936 }; 936 937 ··· 983 990 { .con_id = "audio3_2x", .dt_id = TEGRA124_CLK_AUDIO3_2X }, 984 991 { .con_id = "audio4_2x", .dt_id = TEGRA124_CLK_AUDIO4_2X }, 985 992 { .con_id = "spdif_2x", .dt_id = TEGRA124_CLK_SPDIF_2X }, 986 - { .con_id = "extern1", .dev_id = "clk_out_1", .dt_id = TEGRA124_CLK_EXTERN1 }, 987 - { .con_id = "extern2", .dev_id = "clk_out_2", .dt_id = TEGRA124_CLK_EXTERN2 }, 988 - { .con_id = "extern3", .dev_id = "clk_out_3", .dt_id = TEGRA124_CLK_EXTERN3 }, 989 - { .con_id = "blink", .dt_id = TEGRA124_CLK_BLINK }, 993 + { .con_id = "extern1", .dt_id = TEGRA124_CLK_EXTERN1 }, 994 + { .con_id = "extern2", .dt_id = TEGRA124_CLK_EXTERN2 }, 995 + { .con_id = "extern3", .dt_id = TEGRA124_CLK_EXTERN3 }, 990 996 { .con_id = "cclk_g", .dt_id = TEGRA124_CLK_CCLK_G }, 991 997 { .con_id = "cclk_lp", .dt_id = TEGRA124_CLK_CCLK_LP }, 992 998 { .con_id = "sclk", .dt_id = TEGRA124_CLK_SCLK }, ··· 1295 1303 { TEGRA124_CLK_PLL_A, TEGRA124_CLK_CLK_MAX, 564480000, 1 }, 1296 1304 { TEGRA124_CLK_PLL_A_OUT0, TEGRA124_CLK_CLK_MAX, 11289600, 1 }, 1297 1305 { TEGRA124_CLK_EXTERN1, TEGRA124_CLK_PLL_A_OUT0, 0, 1 }, 1298 - { TEGRA124_CLK_CLK_OUT_1_MUX, TEGRA124_CLK_EXTERN1, 0, 1 }, 1299 - { TEGRA124_CLK_CLK_OUT_1, TEGRA124_CLK_CLK_MAX, 0, 1 }, 1300 1306 { TEGRA124_CLK_I2S0, TEGRA124_CLK_PLL_A_OUT0, 11289600, 0 }, 1301 1307 { TEGRA124_CLK_I2S1, TEGRA124_CLK_PLL_A_OUT0, 11289600, 0 }, 1302 1308 { TEGRA124_CLK_I2S2, TEGRA124_CLK_PLL_A_OUT0, 11289600, 0 }, ··· 1449 1459 * tegra124_132_clock_init_pre - clock initialization preamble for T124/T132 1450 1460 * @np: struct device_node * of the DT node for the SoC CAR IP block 1451 1461 * 1452 - * Register most of the clocks controlled by the CAR IP block, along 1453 - * with a few clocks controlled by the PMC IP block. Everything in 1454 - * this function should be common to Tegra124 and Tegra132. XXX The 1455 - * PMC clock initialization should probably be moved to PMC-specific 1456 - * driver code. No return value. 1462 + * Register most of the clocks controlled by the CAR IP block. 1463 + * Everything in this function should be common to Tegra124 and Tegra132. 1464 + * No return value. 1457 1465 */ 1458 1466 static void __init tegra124_132_clock_init_pre(struct device_node *np) 1459 1467 { ··· 1494 1506 tegra_audio_clk_init(clk_base, pmc_base, tegra124_clks, 1495 1507 tegra124_audio_plls, 1496 1508 ARRAY_SIZE(tegra124_audio_plls), 24576000); 1497 - tegra_pmc_clk_init(pmc_base, tegra124_clks); 1498 1509 1499 1510 /* For Tegra124 & Tegra132, PLLD is the only source for DSIA & DSIB */ 1500 1511 plld_base = readl(clk_base + PLLD_BASE); ··· 1505 1518 * tegra124_132_clock_init_post - clock initialization postamble for T124/T132 1506 1519 * @np: struct device_node * of the DT node for the SoC CAR IP block 1507 1520 * 1508 - * Register most of the along with a few clocks controlled by the PMC 1509 - * IP block. Everything in this function should be common to Tegra124 1521 + * Register most of the clocks controlled by the CAR IP block. 1522 + * Everything in this function should be common to Tegra124 1510 1523 * and Tegra132. This function must be called after 1511 - * tegra124_132_clock_init_pre(), otherwise clk_base and pmc_base will 1512 - * not be set. No return value. 1524 + * tegra124_132_clock_init_pre(), otherwise clk_base will not be set. 1525 + * No return value. 1513 1526 */ 1514 1527 static void __init tegra124_132_clock_init_post(struct device_node *np) 1515 1528 {
-4
drivers/clk/tegra/clk-tegra20.c
··· 458 458 { .con_id = "cdev1", .dt_id = TEGRA20_CLK_CDEV1 }, 459 459 { .con_id = "cdev2", .dt_id = TEGRA20_CLK_CDEV2 }, 460 460 { .con_id = "clk_32k", .dt_id = TEGRA20_CLK_CLK_32K }, 461 - { .con_id = "blink", .dt_id = TEGRA20_CLK_BLINK }, 462 461 { .con_id = "clk_m", .dt_id = TEGRA20_CLK_CLK_M }, 463 462 { .con_id = "pll_ref", .dt_id = TEGRA20_CLK_PLL_REF }, 464 463 { .dev_id = "tegra20-i2s.0", .dt_id = TEGRA20_CLK_I2S1 }, ··· 536 537 [tegra_clk_csi] = { .dt_id = TEGRA20_CLK_CSI, .present = true }, 537 538 [tegra_clk_isp] = { .dt_id = TEGRA20_CLK_ISP, .present = true }, 538 539 [tegra_clk_clk_32k] = { .dt_id = TEGRA20_CLK_CLK_32K, .present = true }, 539 - [tegra_clk_blink] = { .dt_id = TEGRA20_CLK_BLINK, .present = true }, 540 540 [tegra_clk_hclk] = { .dt_id = TEGRA20_CLK_HCLK, .present = true }, 541 541 [tegra_clk_pclk] = { .dt_id = TEGRA20_CLK_PCLK, .present = true }, 542 542 [tegra_clk_pll_p_out1] = { .dt_id = TEGRA20_CLK_PLL_P_OUT1, .present = true }, ··· 1032 1034 { TEGRA20_CLK_PLL_A, TEGRA20_CLK_CLK_MAX, 56448000, 1 }, 1033 1035 { TEGRA20_CLK_PLL_A_OUT0, TEGRA20_CLK_CLK_MAX, 11289600, 1 }, 1034 1036 { TEGRA20_CLK_CDEV1, TEGRA20_CLK_CLK_MAX, 0, 1 }, 1035 - { TEGRA20_CLK_BLINK, TEGRA20_CLK_CLK_MAX, 32768, 1 }, 1036 1037 { TEGRA20_CLK_I2S1, TEGRA20_CLK_PLL_A_OUT0, 11289600, 0 }, 1037 1038 { TEGRA20_CLK_I2S2, TEGRA20_CLK_PLL_A_OUT0, 11289600, 0 }, 1038 1039 { TEGRA20_CLK_SDMMC1, TEGRA20_CLK_PLL_P, 48000000, 0 }, ··· 1143 1146 tegra_super_clk_gen4_init(clk_base, pmc_base, tegra20_clks, NULL); 1144 1147 tegra20_periph_clk_init(); 1145 1148 tegra20_audio_clk_init(); 1146 - tegra_pmc_clk_init(pmc_base, tegra20_clks); 1147 1149 1148 1150 tegra_init_dup_clks(tegra_clk_duplicates, clks, TEGRA20_CLK_CLK_MAX); 1149 1151
+3 -14
drivers/clk/tegra/clk-tegra210.c
··· 2418 2418 [tegra_clk_audio3] = { .dt_id = TEGRA210_CLK_AUDIO3, .present = true }, 2419 2419 [tegra_clk_audio4] = { .dt_id = TEGRA210_CLK_AUDIO4, .present = true }, 2420 2420 [tegra_clk_spdif] = { .dt_id = TEGRA210_CLK_SPDIF, .present = true }, 2421 - [tegra_clk_clk_out_1] = { .dt_id = TEGRA210_CLK_CLK_OUT_1, .present = true }, 2422 - [tegra_clk_clk_out_2] = { .dt_id = TEGRA210_CLK_CLK_OUT_2, .present = true }, 2423 - [tegra_clk_clk_out_3] = { .dt_id = TEGRA210_CLK_CLK_OUT_3, .present = true }, 2424 - [tegra_clk_blink] = { .dt_id = TEGRA210_CLK_BLINK, .present = true }, 2425 2421 [tegra_clk_xusb_gate] = { .dt_id = TEGRA210_CLK_XUSB_GATE, .present = true }, 2426 2422 [tegra_clk_xusb_host_src_8] = { .dt_id = TEGRA210_CLK_XUSB_HOST_SRC, .present = true }, 2427 2423 [tegra_clk_xusb_falcon_src_8] = { .dt_id = TEGRA210_CLK_XUSB_FALCON_SRC, .present = true }, ··· 2449 2453 [tegra_clk_audio3_mux] = { .dt_id = TEGRA210_CLK_AUDIO3_MUX, .present = true }, 2450 2454 [tegra_clk_audio4_mux] = { .dt_id = TEGRA210_CLK_AUDIO4_MUX, .present = true }, 2451 2455 [tegra_clk_spdif_mux] = { .dt_id = TEGRA210_CLK_SPDIF_MUX, .present = true }, 2452 - [tegra_clk_clk_out_1_mux] = { .dt_id = TEGRA210_CLK_CLK_OUT_1_MUX, .present = true }, 2453 - [tegra_clk_clk_out_2_mux] = { .dt_id = TEGRA210_CLK_CLK_OUT_2_MUX, .present = true }, 2454 - [tegra_clk_clk_out_3_mux] = { .dt_id = TEGRA210_CLK_CLK_OUT_3_MUX, .present = true }, 2455 2456 [tegra_clk_maud] = { .dt_id = TEGRA210_CLK_MAUD, .present = true }, 2456 2457 [tegra_clk_mipibif] = { .dt_id = TEGRA210_CLK_MIPIBIF, .present = true }, 2457 2458 [tegra_clk_qspi] = { .dt_id = TEGRA210_CLK_QSPI, .present = true }, ··· 2535 2542 { .con_id = "audio4", .dt_id = TEGRA210_CLK_AUDIO4 }, 2536 2543 { .con_id = "spdif", .dt_id = TEGRA210_CLK_SPDIF }, 2537 2544 { .con_id = "spdif_2x", .dt_id = TEGRA210_CLK_SPDIF_2X }, 2538 - { .con_id = "extern1", .dev_id = "clk_out_1", .dt_id = TEGRA210_CLK_EXTERN1 }, 2539 - { .con_id = "extern2", .dev_id = "clk_out_2", .dt_id = TEGRA210_CLK_EXTERN2 }, 2540 - { .con_id = "extern3", .dev_id = "clk_out_3", .dt_id = TEGRA210_CLK_EXTERN3 }, 2541 - { .con_id = "blink", .dt_id = TEGRA210_CLK_BLINK }, 2545 + { .con_id = "extern1", .dt_id = TEGRA210_CLK_EXTERN1 }, 2546 + { .con_id = "extern2", .dt_id = TEGRA210_CLK_EXTERN2 }, 2547 + { .con_id = "extern3", .dt_id = TEGRA210_CLK_EXTERN3 }, 2542 2548 { .con_id = "cclk_g", .dt_id = TEGRA210_CLK_CCLK_G }, 2543 2549 { .con_id = "cclk_lp", .dt_id = TEGRA210_CLK_CCLK_LP }, 2544 2550 { .con_id = "sclk", .dt_id = TEGRA210_CLK_SCLK }, ··· 3445 3453 { TEGRA210_CLK_PLL_A, TEGRA210_CLK_CLK_MAX, 564480000, 1 }, 3446 3454 { TEGRA210_CLK_PLL_A_OUT0, TEGRA210_CLK_CLK_MAX, 11289600, 1 }, 3447 3455 { TEGRA210_CLK_EXTERN1, TEGRA210_CLK_PLL_A_OUT0, 0, 1 }, 3448 - { TEGRA210_CLK_CLK_OUT_1_MUX, TEGRA210_CLK_EXTERN1, 0, 1 }, 3449 - { TEGRA210_CLK_CLK_OUT_1, TEGRA210_CLK_CLK_MAX, 0, 1 }, 3450 3456 { TEGRA210_CLK_I2S0, TEGRA210_CLK_PLL_A_OUT0, 11289600, 0 }, 3451 3457 { TEGRA210_CLK_I2S1, TEGRA210_CLK_PLL_A_OUT0, 11289600, 0 }, 3452 3458 { TEGRA210_CLK_I2S2, TEGRA210_CLK_PLL_A_OUT0, 11289600, 0 }, ··· 3685 3695 tegra_audio_clk_init(clk_base, pmc_base, tegra210_clks, 3686 3696 tegra210_audio_plls, 3687 3697 ARRAY_SIZE(tegra210_audio_plls), 24576000); 3688 - tegra_pmc_clk_init(pmc_base, tegra210_clks); 3689 3698 3690 3699 /* For Tegra210, PLLD is the only source for DSIA & DSIB */ 3691 3700 value = readl(clk_base + PLLD_BASE);
+3 -15
drivers/clk/tegra/clk-tegra30.c
··· 569 569 { .con_id = "audio3_2x", .dt_id = TEGRA30_CLK_AUDIO3_2X }, 570 570 { .con_id = "audio4_2x", .dt_id = TEGRA30_CLK_AUDIO4_2X }, 571 571 { .con_id = "spdif_2x", .dt_id = TEGRA30_CLK_SPDIF_2X }, 572 - { .con_id = "extern1", .dev_id = "clk_out_1", .dt_id = TEGRA30_CLK_EXTERN1 }, 573 - { .con_id = "extern2", .dev_id = "clk_out_2", .dt_id = TEGRA30_CLK_EXTERN2 }, 574 - { .con_id = "extern3", .dev_id = "clk_out_3", .dt_id = TEGRA30_CLK_EXTERN3 }, 575 - { .con_id = "blink", .dt_id = TEGRA30_CLK_BLINK }, 572 + { .con_id = "extern1", .dt_id = TEGRA30_CLK_EXTERN1 }, 573 + { .con_id = "extern2", .dt_id = TEGRA30_CLK_EXTERN2 }, 574 + { .con_id = "extern3", .dt_id = TEGRA30_CLK_EXTERN3 }, 576 575 { .con_id = "cclk_g", .dt_id = TEGRA30_CLK_CCLK_G }, 577 576 { .con_id = "cclk_lp", .dt_id = TEGRA30_CLK_CCLK_LP }, 578 577 { .con_id = "sclk", .dt_id = TEGRA30_CLK_SCLK }, ··· 712 713 [tegra_clk_audio3_2x] = { .dt_id = TEGRA30_CLK_AUDIO3_2X, .present = true }, 713 714 [tegra_clk_audio4_2x] = { .dt_id = TEGRA30_CLK_AUDIO4_2X, .present = true }, 714 715 [tegra_clk_spdif_2x] = { .dt_id = TEGRA30_CLK_SPDIF_2X, .present = true }, 715 - [tegra_clk_clk_out_1] = { .dt_id = TEGRA30_CLK_CLK_OUT_1, .present = true }, 716 - [tegra_clk_clk_out_2] = { .dt_id = TEGRA30_CLK_CLK_OUT_2, .present = true }, 717 - [tegra_clk_clk_out_3] = { .dt_id = TEGRA30_CLK_CLK_OUT_3, .present = true }, 718 - [tegra_clk_blink] = { .dt_id = TEGRA30_CLK_BLINK, .present = true }, 719 - [tegra_clk_clk_out_1_mux] = { .dt_id = TEGRA30_CLK_CLK_OUT_1_MUX, .present = true }, 720 - [tegra_clk_clk_out_2_mux] = { .dt_id = TEGRA30_CLK_CLK_OUT_2_MUX, .present = true }, 721 - [tegra_clk_clk_out_3_mux] = { .dt_id = TEGRA30_CLK_CLK_OUT_3_MUX, .present = true }, 722 716 [tegra_clk_hclk] = { .dt_id = TEGRA30_CLK_HCLK, .present = true }, 723 717 [tegra_clk_pclk] = { .dt_id = TEGRA30_CLK_PCLK, .present = true }, 724 718 [tegra_clk_i2s0] = { .dt_id = TEGRA30_CLK_I2S0, .present = true }, ··· 1224 1232 { TEGRA30_CLK_PLL_A, TEGRA30_CLK_CLK_MAX, 564480000, 1 }, 1225 1233 { TEGRA30_CLK_PLL_A_OUT0, TEGRA30_CLK_CLK_MAX, 11289600, 1 }, 1226 1234 { TEGRA30_CLK_EXTERN1, TEGRA30_CLK_PLL_A_OUT0, 0, 1 }, 1227 - { TEGRA30_CLK_CLK_OUT_1_MUX, TEGRA30_CLK_EXTERN1, 0, 0 }, 1228 - { TEGRA30_CLK_CLK_OUT_1, TEGRA30_CLK_CLK_MAX, 0, 1 }, 1229 - { TEGRA30_CLK_BLINK, TEGRA30_CLK_CLK_MAX, 0, 1 }, 1230 1235 { TEGRA30_CLK_I2S0, TEGRA30_CLK_PLL_A_OUT0, 11289600, 0 }, 1231 1236 { TEGRA30_CLK_I2S1, TEGRA30_CLK_PLL_A_OUT0, 11289600, 0 }, 1232 1237 { TEGRA30_CLK_I2S2, TEGRA30_CLK_PLL_A_OUT0, 11289600, 0 }, ··· 1353 1364 tegra_audio_clk_init(clk_base, pmc_base, tegra30_clks, 1354 1365 tegra30_audio_plls, 1355 1366 ARRAY_SIZE(tegra30_audio_plls), 24000000); 1356 - tegra_pmc_clk_init(pmc_base, tegra30_clks); 1357 1367 1358 1368 tegra_init_dup_clks(tegra_clk_duplicates, clks, TEGRA30_CLK_CLK_MAX); 1359 1369
-1
drivers/clk/tegra/clk.h
··· 854 854 struct tegra_clk *tegra_clks, 855 855 struct tegra_clk_pll_params *pll_params); 856 856 857 - void tegra_pmc_clk_init(void __iomem *pmc_base, struct tegra_clk *tegra_clks); 858 857 void tegra_fixed_clk_init(struct tegra_clk *tegra_clks); 859 858 int tegra_osc_clk_init(void __iomem *clk_base, struct tegra_clk *clks, 860 859 unsigned long *input_freqs, unsigned int num,