]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
ARM: tegra210: clock: implement PLLD2 support
authorSvyatoslav Ryhel <clamor95@gmail.com>
Fri, 29 Nov 2024 06:14:21 +0000 (08:14 +0200)
committerSvyatoslav Ryhel <clamor95@gmail.com>
Wed, 12 Feb 2025 08:35:17 +0000 (10:35 +0200)
PLLD2 is a simple clock (controlled by 2 registers) and appears starting
from T30. Primary use of PLLD2 is as main HDMI clock parent.

Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
arch/arm/include/asm/arch-tegra210/clock-tables.h
arch/arm/mach-tegra/tegra210/clock.c

index c6d7487e629400a07cc3d12357fcb8959826846a..5c4d7fc84c4e065563a91a8f6d7e0f12d80bc76c 100644 (file)
@@ -24,6 +24,7 @@ enum clock_id {
        CLOCK_ID_XCPU = CLOCK_ID_FIRST_SIMPLE,
        CLOCK_ID_EPCI,
        CLOCK_ID_SFROM32KHZ,
+       CLOCK_ID_DISPLAY2,
        CLOCK_ID_DP,
 
        /* These are the base clocks (inputs to the Tegra SoC) */
@@ -37,7 +38,6 @@ enum clock_id {
         * These are clock IDs that are used in table clock_source[][]
         * but will not be assigned as a clock source for any peripheral.
         */
-       CLOCK_ID_DISPLAY2,
        CLOCK_ID_CGENERAL_0,
        CLOCK_ID_CGENERAL_1,
        CLOCK_ID_CGENERAL2,
index 57ff0b2a19afec2e2fc41086c78779c39b8c2481..04708f971444ea5112d12df281146129785bf0af 100644 (file)
@@ -668,6 +668,8 @@ struct clk_pll_info tegra_pll_info_table[CLOCK_ID_PLL_COUNT] = {
          .lock_ena = 9,  .lock_det = 11, .kcp_shift = 6, .kcp_mask = 3, .kvco_shift = 0, .kvco_mask = 1 },     /* PLLE */
        { .m_shift = 0, .m_mask = 0, .n_shift = 0, .n_mask = 0, .p_shift = 0, .p_mask = 0,
          .lock_ena = 0, .lock_det = 0, .kcp_shift = 0, .kcp_mask = 0, .kvco_shift = 0, .kvco_mask = 0 },       /* PLLS (gone)*/
+       { .m_shift = 0, .m_mask = 0x1F, .n_shift = 8, .n_mask = 0x3FF, .p_shift = 20, .p_mask = 0x07,
+         .lock_ena = 22, .lock_det = 27, .kcp_shift = 8, .kcp_mask = 0xF, .kvco_shift = 4, .kvco_mask = 0xF }, /* PLLD2 */
        { .m_shift = 0, .m_mask = 0xFF, .n_shift = 8, .n_mask = 0xFF,  .p_shift = 19,  .p_mask = 0x1F,
          .lock_ena = 30, .lock_det = 27, .kcp_shift = 25, .kcp_mask = 3, .kvco_shift = 24, .kvco_mask = 1 },   /* PLLDP */
 };
@@ -939,6 +941,9 @@ enum clock_id clk_id_to_pll_id(int clk_id)
        case TEGRA210_CLK_PLL_D:
        case TEGRA210_CLK_PLL_D_OUT0:
                return CLOCK_ID_DISPLAY;
+       case TEGRA210_CLK_PLL_D2:
+       case TEGRA210_CLK_PLL_D2_OUT0:
+               return CLOCK_ID_DISPLAY2;
        case TEGRA210_CLK_PLL_X:
                return CLOCK_ID_XCPU;
        case TEGRA210_CLK_PLL_E:
@@ -1276,6 +1281,8 @@ struct clk_pll_simple *clock_get_simple_pll(enum clock_id clkid)
        case CLOCK_ID_EPCI:
        case CLOCK_ID_SFROM32KHZ:
                return &clkrst->crc_pll_simple[clkid - CLOCK_ID_FIRST_SIMPLE];
+       case CLOCK_ID_DISPLAY2:
+               return &clkrst->plld2;
        default:
                return NULL;
        }