Path: blob/main/sys/arm64/nvidia/tegra210/tegra210_car.h
48262 views
/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright 2020 Michal Meloun <[email protected]>4*5* Redistribution and use in source and binary forms, with or without6* modification, are permitted provided that the following conditions7* are met:8* 1. Redistributions of source code must retain the above copyright9* notice, this list of conditions and the following disclaimer.10* 2. Redistributions in binary form must reproduce the above copyright11* notice, this list of conditions and the following disclaimer in the12* documentation and/or other materials provided with the distribution.13*14* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND15* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE16* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE17* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE18* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL19* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS20* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)21* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT22* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY23* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF24* SUCH DAMAGE.25*/2627#ifndef _TEGRA210_CAR_28#define _TEGRA210_CAR_2930#include "clkdev_if.h"3132#define RD4(sc, reg, val) CLKDEV_READ_4((sc)->clkdev, reg, val)33#define WR4(sc, reg, val) CLKDEV_WRITE_4((sc)->clkdev, reg, val)34#define MD4(sc, reg, mask, set) CLKDEV_MODIFY_4((sc)->clkdev, reg, mask, set)35#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev)36#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev)3738#define RST_SOURCE 0x00039#define RST_DEVICES_L 0x00440#define RST_DEVICES_H 0x00841#define RST_DEVICES_U 0x00C42#define CLK_OUT_ENB_L 0x01043#define CLK_OUT_ENB_H 0x01444#define CLK_OUT_ENB_U 0x01845#define SUPER_CCLK_DIVIDER 0x02446#define SCLK_BURST_POLICY 0x02847#define SUPER_SCLK_DIVIDER 0x02c48#define CLK_SYSTEM_RATE 0x03049#define CLK_MASK_ARM 0x04450#define MISC_CLK_ENB 0x0485152#define OSC_CTRL 0x05053#define OSC_CTRL_OSC_FREQ_GET(x) (((x) >> 28) & 0x0F)54#define OSC_CTRL_PLL_REF_DIV_GET(x) (((x) >> 26) & 0x03)5556#define OSC_FREQ_DET_STATUS 0x05c57#define PLLE_SS_CNTL 0x06858#define PLLE_SS_CNTL_INTEGOFFSET(x) (((x) & 0x03) << 30)59#define PLLE_SS_CNTL_SSCINCINTRV(x) (((x) & 0x3f) << 24)60#define PLLE_SS_CNTL_SSCINC(x) (((x) & 0xff) << 16)61#define PLLE_SS_CNTL_SSCINVERT (1 << 15)62#define PLLE_SS_CNTL_SSCCENTER (1 << 14)63#define PLLE_SS_CNTL_SSCPDMBYP (1 << 13)64#define PLLE_SS_CNTL_SSCBYP (1 << 12)65#define PLLE_SS_CNTL_INTERP_RESET (1 << 11)66#define PLLE_SS_CNTL_BYPASS_SS (1 << 10)67#define PLLE_SS_CNTL_SSCMAX(x) (((x) & 0x1ff) << 0)6869#define PLLE_SS_CNTL_SSCINCINTRV_MASK (0x3f << 24)70#define PLLE_SS_CNTL_SSCINCINTRV_VAL (0x20 << 24)71#define PLLE_SS_CNTL_SSCINC_MASK (0xff << 16)72#define PLLE_SS_CNTL_SSCINC_VAL (0x1 << 16)73#define PLLE_SS_CNTL_SSCMAX_MASK 0x1ff74#define PLLE_SS_CNTL_SSCMAX_VAL 0x2575#define PLLE_SS_CNTL_DISABLE (PLLE_SS_CNTL_BYPASS_SS | \76PLLE_SS_CNTL_INTERP_RESET | \77PLLE_SS_CNTL_SSCBYP)78#define PLLE_SS_CNTL_COEFFICIENTS_MASK (PLLE_SS_CNTL_SSCMAX_MASK | \79PLLE_SS_CNTL_SSCINC_MASK | \80PLLE_SS_CNTL_SSCINCINTRV_MASK)81#define PLLE_SS_CNTL_COEFFICIENTS_VAL (PLLE_SS_CNTL_SSCMAX_VAL | \82PLLE_SS_CNTL_SSCINC_VAL | \83PLLE_SS_CNTL_SSCINCINTRV_VAL)8485#define PLLE_MISC1 0x06C86#define PLLC_BASE 0x08087#define PLLC_OUT 0x08488#define PLLC_MISC_0 0x08889#define PLLC_MISC_1 0x08c90#define PLLM_BASE 0x09091#define PLLM_MISC1 0x09992#define PLLM_MISC2 0x09c93#define PLLP_BASE 0x0a094#define PLLP_OUTA 0x0a495#define PLLP_OUTB 0x0a896#define PLLP_MISC 0x0ac97#define PLLA_BASE 0x0b098#define PLLA_OUT 0x0b499#define PLLA_MISC1 0x0b8100#define PLLA_MISC 0x0bc101#define PLLU_BASE 0x0c0102#define PLLU_OUTA 0x0c4103#define PLLU_MISC1 0x0c8104#define PLLU_MISC 0x0cc105#define PLLD_BASE 0x0d0106#define PLLD_MISC1 0x0d8107#define PLLD_MISC 0x0dc108#define PLLX_BASE 0x0e0109#define PLLX_MISC 0x0e4110#define PLLX_MISC_LOCK_ENABLE (1 << 18)111112#define PLLE_BASE 0x0e8113#define PLLE_BASE_ENABLE (1U << 31)114#define PLLE_BASE_LOCK_OVERRIDE (1 << 30)115116#define PLLE_MISC 0x0ec117#define PLLE_MISC_SETUP_BASE(x) (((x) & 0xFFFF) << 16)118#define PLLE_MISC_CLKENABLE (1 << 15)119#define PLLE_MISC_IDDQ_SWCTL (1 << 14)120#define PLLE_MISC_IDDQ_OVERRIDE_VALUE (1 << 13)121#define PLLE_MISC_IDDQ_FREQLOCK (1 << 12)122#define PLLE_MISC_LOCK (1 << 11)123#define PLLE_MISC_REF_DIS (1 << 10)124#define PLLE_MISC_LOCK_ENABLE (1 << 9)125#define PLLE_MISC_PTS (1 << 8)126#define PLLE_MISC_KCP(x) (((x) & 0x03) << 6)127#define PLLE_MISC_VREG_BG_CTRL(x) (((x) & 0x03) << 4)128#define PLLE_MISC_VREG_CTRL(x) (((x) & 0x03) << 2)129#define PLLE_MISC_KVCO (1 << 0)130131#define PLLE_MISC_VREG_BG_CTRL_SHIFT 4132#define PLLE_MISC_VREG_BG_CTRL_MASK (3 << PLLE_MISC_VREG_BG_CTRL_SHIFT)133#define PLLE_MISC_VREG_CTRL_SHIFT 2134#define PLLE_MISC_VREG_CTRL_MASK (2 << PLLE_MISC_VREG_CTRL_SHIFT)135#define PLLE_MISC_SETUP_BASE_SHIFT 16136#define PLLE_MISC_SETUP_BASE_MASK (0xffff << PLLE_MISC_SETUP_BASE_SHIFT)137138#define PLLE_SS_CNTL1 0x0f0139#define PLLE_SS_CNTL2 0x0f4140#define LVL2_CLK_GATE_OVRA 0x0f8141#define LVL2_CLK_GATE_OVRB 0x0fc142#define LVL2_CLK_GATE_OVRC 0x3a0 /* Misordered in TRM */143#define LVL2_CLK_GATE_OVRD 0x3a4144#define LVL2_CLK_GATE_OVRE 0x554145146#define CLK_SOURCE_I2S2 0x100147#define CLK_SOURCE_I2S3 0x104148#define CLK_SOURCE_SPDIF_OUT 0x108149#define CLK_SOURCE_SPDIF_IN 0x10c150#define CLK_SOURCE_PWM 0x110151#define CLK_SOURCE_SPI2 0x118152#define CLK_SOURCE_SPI3 0x11c153#define CLK_SOURCE_I2C1 0x124154#define CLK_SOURCE_I2C5 0x128155#define CLK_SOURCE_SPI1 0x134156#define CLK_SOURCE_DISP1 0x138157#define CLK_SOURCE_DISP2 0x13c158#define CLK_SOURCE_ISP 0x144159#define CLK_SOURCE_VI 0x148160#define CLK_SOURCE_SDMMC1 0x150161#define CLK_SOURCE_SDMMC2 0x154162#define CLK_SOURCE_SDMMC4 0x164163#define CLK_SOURCE_UARTA 0x178164#define CLK_SOURCE_UARTB 0x17c165#define CLK_SOURCE_HOST1X 0x180166#define CLK_SOURCE_I2C2 0x198167#define CLK_SOURCE_EMC 0x19c168#define CLK_SOURCE_UARTC 0x1a0169#define CLK_SOURCE_VI_SENSOR 0x1a8170#define CLK_SOURCE_SPI4 0x1b4171#define CLK_SOURCE_I2C3 0x1b8172#define CLK_SOURCE_SDMMC3 0x1bc173#define CLK_SOURCE_UARTD 0x1c0174#define CLK_SOURCE_OWR 0x1cc175#define CLK_SOURCE_CSITE 0x1d4176#define CLK_SOURCE_I2S1 0x1d8177#define CLK_SOURCE_DTV 0x1dc178#define CLK_SOURCE_TSEC 0x1f4179#define CLK_SOURCE_SPARE2 0x1f8180181#define CLK_OUT_ENB_X 0x280182#define CLK_ENB_X_SET 0x284183#define CLK_ENB_X_CLR 0x288184#define RST_DEVICES_X 0x28C185#define RST_DEV_X_SET 0x290186#define RST_DEV_X_CLR 0x294187#define CLK_OUT_ENB_Y 0x298188#define CLK_ENB_Y_SET 0x29c189#define CLK_ENB_Y_CLR 0x2a0190#define RST_DEVICES_Y 0x2a4191#define RST_DEV_Y_SET 0x2a8192#define RST_DEV_Y_CLR 0x2ac193#define DFLL_BASE 0x2f4194#define DFLL_BASE_DVFS_DFLL_RESET (1 << 0)195196#define RST_DEV_L_SET 0x300197#define RST_DEV_L_CLR 0x304198#define RST_DEV_H_SET 0x308199#define RST_DEV_H_CLR 0x30c200#define RST_DEV_U_SET 0x310201#define RST_DEV_U_CLR 0x314202#define CLK_ENB_L_SET 0x320203#define CLK_ENB_L_CLR 0x324204#define CLK_ENB_H_SET 0x328205#define CLK_ENB_H_CLR 0x32c206#define CLK_ENB_U_SET 0x330207#define CLK_ENB_U_CLR 0x334208#define CCPLEX_PG_SM_OVRD 0x33c209#define CPU_CMPLX_SET 0x340210#define RST_DEVICES_V 0x358211#define RST_DEVICES_W 0x35c212#define CLK_OUT_ENB_V 0x360213#define CLK_OUT_ENB_W 0x364214#define CCLKG_BURST_POLICY 0x368215#define SUPER_CCLKG_DIVIDER 0x36C216#define CCLKLP_BURST_POLICY 0x370217#define SUPER_CCLKLP_DIVIDER 0x374218#define CLK_CPUG_CMPLX 0x378219#define CPU_SOFTRST_CTRL 0x380220#define CPU_SOFTRST_CTRL1 0x384221#define CPU_SOFTRST_CTRL2 0x388222#define CLK_SOURCE_MSELECT 0x3b4223#define CLK_SOURCE_TSENSOR 0x3b8224#define CLK_SOURCE_I2S4 0x3bc225#define CLK_SOURCE_I2S5 0x3c0226#define CLK_SOURCE_I2C4 0x3c4227#define CLK_SOURCE_AHUB 0x3d0228#define CLK_SOURCE_HDA2CODEC_2X 0x3e4229#define CLK_SOURCE_ACTMON 0x3e8230#define CLK_SOURCE_EXTPERIPH1 0x3ec231#define CLK_SOURCE_EXTPERIPH2 0x3f0232#define CLK_SOURCE_EXTPERIPH3 0x3f4233#define CLK_SOURCE_I2C_SLOW 0x3fc234235#define CLK_SOURCE_SYS 0x400236#define CLK_SOURCE_ISPB 0x404237#define CLK_SOURCE_SOR1 0x410238#define CLK_SOURCE_SOR0 0x414239#define CLK_SOURCE_SATA_OOB 0x420240#define CLK_SOURCE_SATA 0x424241#define CLK_SOURCE_HDA 0x428242#define RST_DEV_V_SET 0x430243#define RST_DEV_V_CLR 0x434244#define RST_DEV_W_SET 0x438245#define RST_DEV_W_CLR 0x43c246#define CLK_ENB_V_SET 0x440247#define CLK_ENB_V_CLR 0x444248#define CLK_ENB_W_SET 0x448249#define CLK_ENB_W_CLR 0x44c250#define RST_CPUG_CMPLX_SET 0x450251#define RST_CPUG_CMPLX_CLR 0x454252#define CLK_CPUG_CMPLX_SET 0x460253#define CLK_CPUG_CMPLX_CLR 0x464254#define CPU_CMPLX_STATUS 0x470255#define INTSTATUS 0x478256#define INTMASK 0x47c257#define UTMIP_PLL_CFG0 0x480258259#define UTMIP_PLL_CFG1 0x484260#define UTMIP_PLL_CFG1_FORCE_PLLU_POWERUP (1 << 17)261#define UTMIP_PLL_CFG1_FORCE_PLLU_POWERDOWN (1 << 16)262#define UTMIP_PLL_CFG1_FORCE_PLL_ENABLE_POWERUP (1 << 15)263#define UTMIP_PLL_CFG1_FORCE_PLL_ENABLE_POWERDOWN (1 << 14)264#define UTMIP_PLL_CFG1_FORCE_PLL_ACTIVE_POWERDOWN (1 << 12)265#define UTMIP_PLL_CFG1_ENABLE_DLY_COUNT(x) (((x) & 0x1f) << 6)266#define UTMIP_PLL_CFG1_XTAL_FREQ_COUNT(x) (((x) & 0xfff) << 0)267268#define UTMIP_PLL_CFG2 0x488269#define UTMIP_PLL_CFG2_PHY_XTAL_CLOCKEN (1 << 30)270#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_D_POWERUP (1 << 25)271#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_D_POWERDOWN (1 << 24)272#define UTMIP_PLL_CFG2_ACTIVE_DLY_COUNT(x) (((x) & 0x3f) << 18)273#define UTMIP_PLL_CFG2_STABLE_COUNT(x) (((x) & 0xffff) << 6)274#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_C_POWERUP (1 << 5)275#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_C_POWERDOWN (1 << 4)276#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_B_POWERUP (1 << 3)277#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_B_POWERDOWN (1 << 2)278#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_A_POWERUP (1 << 1)279#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_A_POWERDOWN (1 << 0)280281#define PLLE_AUX 0x48c282#define PLLE_AUX_SS_SEQ_INCLUDE (1U << 31)283#define PLLE_AUX_REF_SEL_PLLREFE (1 << 28)284#define PLLE_AUX_SEQ_STATE_GET(x) (((x) >> 26) & 0x03)285#define PLLE_AUX_SEQ_STATE_OFF 0286#define PLLE_AUX_SEQ_STATE_ON 1287#define PLLE_AUX_SEQ_STATE_BUSY 2288#define PLLE_AUX_SEQ_START_STATE (1 << 25)289#define PLLE_AUX_SEQ_ENABLE (1 << 24)290#define PLLE_AUX_SS_DLY(x) (((x) & 0xFF) << 16)291#define PLLE_AUX_SS_LOCK_DLY(x) (((x) & 0xFF) << 8)292#define PLLE_AUX_SS_TEST_FAST_PT (1 << 7)293#define PLLE_AUX_SS_SWCTL (1 << 6)294#define PLLE_AUX_CONFIG_SWCTL (1 << 6)295#define PLLE_AUX_ENABLE_SWCTL (1 << 4)296#define PLLE_AUX_USE_LOCKDET (1 << 3)297#define PLLE_AUX_REF_SRC (1 << 2)298#define PLLE_AUX_PLLP_CML1_OEN (1 << 1)299#define PLLE_AUX_PLLP_CML0_OEN (1 << 0)300301#define SATA_PLL_CFG0 0x490302#define SATA_PLL_CFG0_SEQ_START_STATE (1 << 25)303#define SATA_PLL_CFG0_SEQ_ENABLE (1 << 24)304#define SATA_PLL_CFG0_PADPLL_SLEEP_IDDQ (1 << 13)305#define SATA_PLL_CFG0_SEQ_PADPLL_PD_INPUT_VALUE (1 << 7)306#define SATA_PLL_CFG0_SEQ_LANE_PD_INPUT_VALUE (1 << 6)307#define SATA_PLL_CFG0_SEQ_RESET_INPUT_VALUE (1 << 5)308#define SATA_PLL_CFG0_SEQ_IN_SWCTL (1 << 4)309#define SATA_PLL_CFG0_PADPLL_USE_LOCKDET (1 << 2)310#define SATA_PLL_CFG0_PADPLL_RESET_OVERRIDE_VALUE (1 << 1)311#define SATA_PLL_CFG0_PADPLL_RESET_SWCTL (1 << 0)312313#define SATA_PLL_CFG1 0x494314#define PCIE_PLL_CFG 0x498315#define PCIE_PLL_CFG_SEQ_START_STATE (1 << 25)316#define PCIE_PLL_CFG_SEQ_ENABLE (1 << 24)317318#define PROG_AUDIO_DLY_CLK 0x49c319#define AUDIO_SYNC_CLK_I2S1 0x4a0320#define AUDIO_SYNC_CLK_I2S2 0x4a4321#define AUDIO_SYNC_CLK_I2S3 0x4a8322#define AUDIO_SYNC_CLK_I2S4 0x4ac323#define AUDIO_SYNC_CLK_I2S5 0x4b0324#define AUDIO_SYNC_CLK_SPDIF 0x4b4325#define PLLD2_BASE 0x4b8326#define PLLD2_MISC 0x4bc327#define UTMIP_PLL_CFG3 0x4c0328#define PLLREFE_BASE 0x4c4329#define PLLREFE_MISC 0x4c8330#define PLLREFE_OUT 0x4cc331#define CPU_FINETRIM_BYP 0x4d0332#define CPU_FINETRIM_SELECT 0x4d4333#define CPU_FINETRIM_DR 0x4d8334#define CPU_FINETRIM_DF 0x4dc335#define CPU_FINETRIM_F 0x4e0336#define CPU_FINETRIM_R 0x4e4337#define PLLC2_BASE 0x4e8338#define PLLC2_MISC_0 0x4ec339#define PLLC2_MISC_1 0x4f0340#define PLLC2_MISC_2 0x4f4341#define PLLC2_MISC_3 0x4f8342#define PLLC3_BASE 0x4fc343344#define PLLC3_MISC_0 0x500345#define PLLC3_MISC_1 0x504346#define PLLC3_MISC_2 0x508347#define PLLC3_MISC_3 0x50c348#define PLLX_MISC_2 0x514349#define PLLX_MISC_2 0x514350#define PLLX_MISC_2_DYNRAMP_STEPB(x) (((x) & 0xFF) << 24)351#define PLLX_MISC_2_DYNRAMP_STEPA(x) (((x) & 0xFF) << 16)352#define PLLX_MISC_2_NDIV_NEW(x) (((x) & 0xFF) << 8)353#define PLLX_MISC_2_EN_FSTLCK (1 << 5)354#define PLLX_MISC_2_LOCK_OVERRIDE (1 << 4)355#define PLLX_MISC_2_PLL_FREQLOCK (1 << 3)356#define PLLX_MISC_2_DYNRAMP_DONE (1 << 2)357#define PLLX_MISC_2_EN_DYNRAMP (1 << 0)358359#define PLLX_MISC_3 0x518360361#define XUSBIO_PLL_CFG0 0x51c362#define XUSBIO_PLL_CFG0_SEQ_START_STATE (1 << 25)363#define XUSBIO_PLL_CFG0_SEQ_ENABLE (1 << 24)364#define XUSBIO_PLL_CFG0_PADPLL_SLEEP_IDDQ (1 << 13)365#define XUSBIO_PLL_CFG0_PADPLL_USE_LOCKDET (1 << 6)366#define XUSBIO_PLL_CFG0_CLK_ENABLE_SWCTL (1 << 2)367#define XUSBIO_PLL_CFG0_PADPLL_RESET_SWCTL (1 << 0)368369#define XUSBIO_PLL_CFG1 0x520370#define PLLE_AUX1 0x524371#define PLLP_RESHIFT 0x528372#define UTMIPLL_HW_PWRDN_CFG0 0x52c373#define UTMIPLL_HW_PWRDN_CFG0_UTMIPLL_LOCK (1U << 31)374#define UTMIPLL_HW_PWRDN_CFG0_SEQ_START_STATE (1 << 25)375#define UTMIPLL_HW_PWRDN_CFG0_SEQ_ENABLE (1 << 24)376#define UTMIPLL_HW_PWRDN_CFG0_IDDQ_PD_INCLUDE (1 << 7)377#define UTMIPLL_HW_PWRDN_CFG0_USE_LOCKDET (1 << 6)378#define UTMIPLL_HW_PWRDN_CFG0_SEQ_RESET_INPUT_VALUE (1 << 5)379#define UTMIPLL_HW_PWRDN_CFG0_SEQ_IN_SWCTL (1 << 4)380#define UTMIPLL_HW_PWRDN_CFG0_CLK_ENABLE_SWCTL (1 << 2)381#define UTMIPLL_HW_PWRDN_CFG0_IDDQ_OVERRIDE (1 << 1)382#define UTMIPLL_HW_PWRDN_CFG0_IDDQ_SWCTL (1 << 0)383384#define PLLU_HW_PWRDN_CFG0 0x530385#define PLLU_HW_PWRDN_CFG0_IDDQ_PD_INCLUDE (1 << 28)386#define PLLU_HW_PWRDN_CFG0_SEQ_ENABLE (1 << 24)387#define PLLU_HW_PWRDN_CFG0_USE_SWITCH_DETECT (1 << 7)388#define PLLU_HW_PWRDN_CFG0_USE_LOCKDET (1 << 6)389#define PLLU_HW_PWRDN_CFG0_CLK_ENABLE_SWCTL (1 << 2)390#define PLLU_HW_PWRDN_CFG0_CLK_SWITCH_SWCTL (1 << 0)391392#define XUSB_PLL_CFG0 0x534393#define XUSB_PLL_CFG0_UTMIPLL_LOCK_DLY 0x3ff394#define XUSB_PLL_CFG0_PLLU_LOCK_DLY_MASK (0x3ff << 14)395396#define CLK_CPU_MISC 0x53c397#define CLK_CPUG_MISC 0x540398#define PLLX_HW_CTRL_CFG 0x548399#define PLLX_SW_RAMP_CFG 0x54c400#define PLLX_HW_CTRL_STATUS 0x550401#define SPARE_REG0 0x55c402#define SPARE_REG0_MDIV_GET(x) (((x) >> 2) & 0x03)403404#define AUDIO_SYNC_CLK_DMIC1 0x560405#define AUDIO_SYNC_CLK_DMIC2 0x564406#define PLLD2_SS_CFG 0x570407#define PLLD2_SS_CTRL1 0x574408#define PLLD2_SS_CTRL2 0x578409#define PLLDP_BASE 0x590410#define PLLDP_MISC 0x594411#define PLLDP_SS_CFG 0x594412#define PLLDP_SS_CTRL1 0x598413#define PLLDP_SS_CTRL2 0x5a0414#define PLLC4_BASE 0x5a4415#define PLLC4_MISC 0x5a8416#define SPARE0 0x5c4417#define SPARE1 0x5c8418#define GPU_ISOB_CTRL 0x5cc419#define PLLC_MISC_2 0x5d0420#define PLLC_MISC_3 0x5d4421#define PLLA_MISC2 0x5d8422#define PLLC4_OUT 0x5e4423#define PLLMB_BASE 0x5e8424#define PLLMB_MISC1 0x5ec425#define PLLX_MISC_4 0x5f0426#define PLLX_MISC_5 0x5f4427428#define CLK_SOURCE_XUSB_CORE_HOST 0x600429#define CLK_SOURCE_XUSB_FALCON 0x604430#define CLK_SOURCE_XUSB_FS 0x608431#define CLK_SOURCE_XUSB_CORE_DEV 0x60c432#define CLK_SOURCE_XUSB_SS 0x610433#define CLK_SOURCE_CILAB 0x614434#define CLK_SOURCE_CILCD 0x618435#define CLK_SOURCE_CILEF 0x61c436#define CLK_SOURCE_DSIA_LP 0x620437#define CLK_SOURCE_DSIB_LP 0x624438#define CLK_SOURCE_ENTROPY 0x628439#define CLK_SOURCE_DVFS_REF 0x62c440#define CLK_SOURCE_DVFS_SOC 0x630441#define CLK_SOURCE_EMC_LATENCY 0x640442#define CLK_SOURCE_SOC_THERM 0x644443#define CLK_SOURCE_DMIC1 0x64c444#define CLK_SOURCE_DMIC2 0x650445#define CLK_SOURCE_VI_SENSOR2 0x658446#define CLK_SOURCE_I2C6 0x65c447#define CLK_SOURCE_MIPIBIF 0x660448#define CLK_SOURCE_EMC_DLL 0x664449#define CLK_SOURCE_UART_FST_MIPI_CAL 0x66c450#define CLK_SOURCE_VIC 0x678451#define PLLP_OUTC 0x67c452#define PLLP_MISC1 0x680453#define EMC_DIV_CLK_SHAPER_CTRL 0x68c454#define EMC_PLLC_SHAPER_CTRL 0x690455#define CLK_SOURCE_SDMMC_LEGACY_TM 0x694456#define CLK_SOURCE_NVDEC 0x698457#define CLK_SOURCE_NVJPG 0x69c458#define CLK_SOURCE_NVENC 0x6a0459#define PLLA1_BASE 0x6a4460#define PLLA1_MISC_0 0x6a8461#define PLLA1_MISC_1 0x6ac462#define PLLA1_MISC_2 0x6b0463#define PLLA1_MISC_3 0x6b4464#define AUDIO_SYNC_CLK_DMIC3 0x6b8465#define CLK_SOURCE_DMIC3 0x6bc466#define CLK_SOURCE_APE 0x6c0467#define CLK_SOURCE_QSPI 0x6c4468#define CLK_SOURCE_VI_I2C 0x6c8469#define CLK_SOURCE_USB2_HSIC_TRK 0x6cc470#define CLK_SOURCE_PEX_SATA_USB_RX_BYP 0x6d0471#define CLK_SOURCE_MAUD 0x6d4472#define CLK_SOURCE_TSECB 0x6d8473#define CLK_CPUG_MISC1 0x6d8474#define ACLK_BURST_POLICY 0x6e0475#define SUPER_ACLK_DIVIDER 0x6e4476#define NVENC_SUPER_CLK_DIVIDER 0x6e8477#define VI_SUPER_CLK_DIVIDER 0x6ec478#define VIC_SUPER_CLK_DIVIDER 0x6f0479#define NVDEC_SUPER_CLK_DIVIDER 0x6f4480#define ISP_SUPER_CLK_DIVIDER 0x6f8481#define ISPB_SUPER_CLK_DIVIDER 0x6fc482483#define NVJPG_SUPER_CLK_DIVIDER 0x700484#define SE_SUPER_CLK_DIVIDER 0x704485#define TSEC_SUPER_CLK_DIVIDER 0x708486#define TSECB_SUPER_CLK_DIVIDER 0x70c487#define CLK_SOURCE_UARTAPE 0x710488#define CLK_CPUG_MISC2 0x714489#define CLK_SOURCE_DBGAPB 0x718490#define CLK_CCPLEX_CC4_RET_CLK_ENB 0x71c491#define ACTMON_CPU_CLK 0x720492#define CLK_SOURCE_EMC_SAFE 0x724493#define SDMMC2_PLLC4_OUT0_SHAPER_CTRL 0x728494#define SDMMC2_PLLC4_OUT1_SHAPER_CTRL 0x72c495#define SDMMC2_PLLC4_OUT2_SHAPER_CTRL 0x730496#define SDMMC2_DIV_CLK_SHAPER_CTRL 0x734497#define SDMMC4_PLLC4_OUT0_SHAPER_CTRL 0x738498#define SDMMC4_PLLC4_OUT1_SHAPER_CTRL 0x73c499#define SDMMC4_PLLC4_OUT2_SHAPER_CTRL 0x740500#define SDMMC4_DIV_CLK_SHAPER_CTRL 0x744501502struct tegra210_car_softc {503device_t dev;504struct resource * mem_res;505struct mtx mtx;506struct clkdom *clkdom;507int type;508};509510struct tegra210_init_item {511char *name;512char *parent;513uint64_t frequency;514int enable;515};516517void tegra210_init_plls(struct tegra210_car_softc *sc);518519void tegra210_periph_clock(struct tegra210_car_softc *sc);520void tegra210_super_mux_clock(struct tegra210_car_softc *sc);521522int tegra210_hwreset_by_idx(struct tegra210_car_softc *sc, intptr_t idx,523bool reset);524525#endif /*_TEGRA210_CAR_*/526527