| /* |
| * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| |
| #ifndef _IPQ5018_CDP_H_ |
| #define _IPQ5018_CDP_H_ |
| |
| #include <configs/ipq5018.h> |
| #include <asm/u-boot.h> |
| #include <asm/arch-qca-common/qca_common.h> |
| #include "phy.h" |
| |
| /* |
| * Eud register |
| */ |
| #define EUD_EUD_EN2 0x0005A000 |
| |
| #define MSM_SDC1_BASE 0x7800000 |
| #define MSM_SDC1_SDHCI_BASE 0x7804000 |
| |
| #define GCC_MDIO0_BASE 0x1858000 |
| #define GCC_GMAC_CFG_RCGR 0x01868084 |
| #define GCC_GMAC_CMD_RCGR 0x01868080 |
| #define GCC_GMAC_BASE 0x01868000 |
| |
| |
| #define GCC_GMAC_CFG_RCGR_SRC_SEL_MASK 0x700 |
| #define GCC_GMAC0_RX_SRC_SEL_GEPHY_TX 0x200 |
| #define GCC_GMAC0_TX_SRC_SEL_GEPHY_TX 0x100 |
| #define GCC_GMAC1_RX_SRC_SEL_UNIPHY_RX 0x100 |
| #define GCC_GMAC1_TX_SRC_SEL_UNIPHY_TX 0x100 |
| #define CMN_PLL_PLL_LOCKED_REG 0x9B064 |
| #define CMN_PLL_PLL_LOCKED_SIZE 0x4 |
| #define CMN_PLL_LOCKED 0x4 |
| |
| /* |
| * CMN BLK clock |
| */ |
| #define GCC_CMN_BLK_AHB_CBCR 0x01856308 |
| #define GCC_CMN_BLK_SYS_CBCR 0x0185630C |
| #define CMN_BLK_ADDR 0x0009B780 |
| #define CMN_BLK_SIZE 0x100 |
| #define FREQUENCY_MASK 0xfffffdf0 |
| #define INTERNAL_48MHZ_CLOCK 0x7 |
| |
| #define CMN_BLK_PLL_SRC_ADDR 0x0009B028 |
| #define PLL_CTRL_SRC_MASK 0xfffffcff |
| #define PLL_REFCLK_DIV_MASK 0xfffffe0f |
| #define PLL_REFCLK_DIV_2 0x20 |
| #define CMN_BLK_PLL_SRC_SEL_FROM_REG 0x0 |
| #define CMN_BLK_PLL_SRC_SEL_FROM_LOGIC 0x1 |
| #define CMN_BLK_PLL_SRC_SEL_FROM_PCS 0x2 |
| #define TCSR_ETH_LDO_RDY_REG 0x19475C4 |
| #define TCSR_ETH_LDO_RDY_SIZE 0x4 |
| #define ETH_LDO_RDY 0x1 |
| |
| /* |
| * GEPHY Block Register |
| */ |
| #define GCC_GEPHY_BCR 0x01856000 |
| #define GCC_GEPHY_MISC 0x01856004 |
| #define GCC_GEPHY_RX_CBCR 0x01856010 |
| #define GCC_GEPHY_TX_CBCR 0x01856014 |
| #define GCC_GEPHY_BCR_BLK_ARES 0x1 |
| #define GCC_GEPHY_MISC_ARES 0xf |
| |
| /* |
| * UNIPHY Block Register |
| */ |
| #define GCC_UNIPHY_BCR 0x01856100 |
| #define GCC_UNIPHY_AHB_CBCR 0x01856108 |
| #define GCC_UNIPHY_SYS_CBCR 0x0185610C |
| #define GCC_UNIPHY_BCR_BLK_ARES 0x1 |
| #define GCC_UNIPHY_MISC_ARES 0x32 |
| #define GCC_UNIPHY_RX_CBCR 0x01856110 |
| #define GCC_UNIPHY_TX_CBCR 0x01856114 |
| |
| /* GMAC0 GCC clock */ |
| #define GCC_GMAC0_RX_CMD_RCGR 0x01868020 |
| #define GCC_GMAC0_RX_CFG_RCGR 0x01868024 |
| #define GCC_GMAC0_TX_CMD_RCGR 0x01868028 |
| #define GCC_GMAC0_TX_CFG_RCGR 0x0186802C |
| #define GCC_GMAC0_RX_MISC 0x01868420 |
| #define GCC_GMAC0_TX_MISC 0x01868424 |
| #define GCC_GMAC0_MISC 0x01868428 |
| #define GCC_GMAC0_BCR 0x01819000 |
| #define GCC_SNOC_GMAC0_AXI_CBCR 0x01826084 |
| #define GCC_SNOC_GMAC0_AHB_CBCR 0x018260A0 |
| #define GCC_GMAC0_PTP_CBCR 0x01868300 |
| #define GCC_GMAC0_CFG_CBCR 0x01868304 |
| #define GCC_GMAC0_SYS_CBCR 0x01868190 |
| #define GCC_GMAC0_RX_CBCR 0x01868240 |
| #define GCC_GMAC0_TX_CBCR 0x01868244 |
| #define GCC_GMAC0_BCR_BLK_ARES 0x1 |
| |
| /* GMAC1 GCC Clock */ |
| #define GCC_GMAC1_RX_CMD_RCGR 0x01868030 |
| #define GCC_GMAC1_RX_CFG_RCGR 0x01868034 |
| #define GCC_GMAC1_TX_CMD_RCGR 0x01868038 |
| #define GCC_GMAC1_TX_CFG_RCGR 0x0186803C |
| #define GCC_GMAC1_RX_MISC 0x01868430 |
| #define GCC_GMAC1_TX_MISC 0x01868434 |
| #define GCC_GMAC1_MISC 0x01868438 |
| #define GCC_GMAC1_BCR 0x01819100 |
| #define GCC_SNOC_GMAC1_AXI_CBCR 0x01826088 |
| #define GCC_SNOC_GMAC1_AHB_CBCR 0x018260A4 |
| #define GCC_GMAC1_SYS_CBCR 0x01868310 |
| #define GCC_GMAC1_PTP_CBCR 0x01868320 |
| #define GCC_GMAC1_CFG_CBCR 0x01868324 |
| #define GCC_GMAC1_RX_CBCR 0x01868248 |
| #define GCC_GMAC1_TX_CBCR 0x0186824C |
| #define GCC_GMAC1_BCR_BLK_ARES 0x1 |
| |
| #define GCC_CBCR_CLK_ENABLE 0x1 |
| |
| /* |
| * GCC-SDCC Registers |
| */ |
| |
| #define GCC_SDCC1_BCR 0x01842000 |
| #define GCC_SDCC1_APPS_CMD_RCGR 0x01842004 |
| #define GCC_SDCC1_APPS_CFG_RCGR 0x01842008 |
| #define GCC_SDCC1_APPS_M 0x0184200C |
| #define GCC_SDCC1_APPS_N 0x01842010 |
| #define GCC_SDCC1_APPS_D 0x01842014 |
| #define GCC_SDCC1_APPS_CBCR 0x01842018 |
| #define GCC_SDCC1_AHB_CBCR 0x0184201C |
| |
| /* |
| * GCC-QPIC Registers |
| */ |
| #define GCC_QPIC_IO_MACRO_CBCR 0x0185701C |
| #define GCC_QPIC_CBCR_ADDR 0x01857020 |
| #define GCC_QPIC_AHB_CBCR_ADDR 0x01857024 |
| #define GCC_QPIC_SLEEP_CBCR 0x01857028 |
| #define QPIC_CBCR_VAL 0x80004FF1 |
| #define GCC_QPIC_IO_MACRO_CMD_RCGR 0x01857010 |
| #define GCC_QPIC_IO_MACRO_CFG_RCGR 0x01857014 |
| #define IO_MACRO_CLK_320_MHZ 320000000 |
| #define IO_MACRO_CLK_266_MHZ 266000000 |
| #define IO_MACRO_CLK_228_MHZ 228000000 |
| #define IO_MACRO_CLK_200_MHZ 200000000 |
| #define IO_MACRO_CLK_100_MHZ 100000000 |
| #define IO_MACRO_CLK_24MHZ 24000000 |
| #define QPIC_IO_MACRO_CLK 0 |
| #define QPIC_CORE_CLK 1 |
| #define XO_CLK_SRC 2 |
| #define GPLL0_CLK_SRC 3 |
| #define FB_CLK_BIT (1 << 4) |
| #define UPDATE_EN 0x1 |
| |
| /* UART 1 */ |
| #define GCC_BLSP1_UART1_BCR 0x01802038 |
| #define GCC_BLSP1_UART1_APPS_CBCR 0x0180203C |
| #define GCC_BLSP1_UART1_APPS_CMD_RCGR 0x01802044 |
| #define GCC_BLSP1_UART1_APPS_CFG_RCGR 0x01802048 |
| #define GCC_BLSP1_UART1_APPS_M 0x0180204C |
| #define GCC_BLSP1_UART1_APPS_N 0x01802050 |
| #define GCC_BLSP1_UART1_APPS_D 0x01802054 |
| |
| /* UART 2 */ |
| #define GCC_BLSP1_UART2_BCR 0x01803028 |
| #define GCC_BLSP1_UART2_APPS_CBCR 0x0180302C |
| #define GCC_BLSP1_UART2_APPS_CMD_RCGR 0x01803034 |
| #define GCC_BLSP1_UART2_APPS_CFG_RCGR 0x01803038 |
| #define GCC_BLSP1_UART2_APPS_M 0x0180303C |
| #define GCC_BLSP1_UART2_APPS_N 0x01803040 |
| #define GCC_BLSP1_UART2_APPS_D 0x01803044 |
| |
| #define GCC_UART_CFG_RCGR_MODE_MASK 0x3000 |
| #define GCC_UART_CFG_RCGR_SRCSEL_MASK 0x0700 |
| #define GCC_UART_CFG_RCGR_SRCDIV_MASK 0x001F |
| |
| #define GCC_UART_CFG_RCGR_MODE_SHIFT 12 |
| #define GCC_UART_CFG_RCGR_SRCSEL_SHIFT 8 |
| #define GCC_UART_CFG_RCGR_SRCDIV_SHIFT 0 |
| |
| #define UART1_RCGR_SRC_SEL 0x1 |
| #define UART1_RCGR_SRC_DIV 0x0 |
| #define UART1_RCGR_MODE 0x2 |
| #define UART1_CMD_RCGR_UPDATE 0x1 |
| #define UART1_CMD_RCGR_ROOT_EN 0x2 |
| #define UART1_CBCR_CLK_ENABLE 0x1 |
| |
| /* USB Registers */ |
| |
| #define QSCRATCH_BASE 0x8AF8800 |
| #define QSCRATCH_SS_PHY_CTRL 0x30 |
| #define LANE0_PWR_PRESENT (1 << 24) |
| #define QSCRATCH_HS_PHY_CTRL 0x10 |
| #define UTMI_OTG_VBUS_VALID (1 << 20) |
| #define SW_SESSVLD_SEL (1 << 28) |
| |
| #define GCC_SYS_NOC_USB0_AXI_CBCR 0x1826040 |
| |
| #define TCSR_USB_PCIE_SEL 0x01947540 |
| |
| #define GCC_USB0_MASTER_CBCR 0x183E000 |
| #define GCC_USB0_SLEEP_CBCR 0x183E004 |
| #define GCC_USB0_MOCK_UTMI_CBCR 0x183E008 |
| #define GCC_USB0_MASTER_CMD_RCGR 0x183E00C |
| #define GCC_USB0_MASTER_CFG_RCGR 0x183E010 |
| #define GCC_USB0_MASTER_M 0x183E014 |
| #define GCC_USB0_MASTER_N 0x183E018 |
| #define GCC_USB0_MASTER_D 0x183E01C |
| #define GCC_USB0_MOCK_UTMI_CMD_RCGR 0x183E020 |
| #define GCC_USB0_MOCK_UTMI_CFG_RCGR 0x183E024 |
| #define GCC_USB0_MOCK_UTMI_M 0x183E028 |
| #define GCC_USB0_MOCK_UTMI_N 0x183E02C |
| #define GCC_USB0_MOCK_UTMI_D 0x183E030 |
| #define GCC_USB0_PHY_BCR 0x183E034 |
| #define GCC_USB0_PIPE_CBCR 0x183E040 |
| #define GCC_USB0_AUX_CBCR 0x183E044 |
| #define GCC_USB0_PHY_PIPE_MISC 0x183E048 |
| #define GCC_USB0_EUD_AT_CBCR 0x183E04C |
| #define GCC_USB0_LFPS_CBCR 0x183E050 |
| #define GCC_USB0_AUX_CMD_RCGR 0x183E05C |
| #define GCC_USB0_AUX_CFG_RCGR 0x183E060 |
| #define GCC_USB0_BCR 0x183E070 |
| #define GCC_USB0_PHY_CFG_AHB_CBCR 0x183E080 |
| #define GCC_USB0_LFPS_CMD_RCGR 0x183E090 |
| #define GCC_USB0_LFPS_CFG_RCGR 0x183E094 |
| #define GCC_USB0_LFPS_M 0x183E098 |
| #define GCC_USB0_LFPS_N 0x183E09C |
| #define GCC_USB0_LFPS_D 0x183E0A0 |
| |
| #define GCC_USB_0_BOOT_CLOCK_CTL 0x1840000 |
| #define GCC_QUSB2_0_PHY_BCR 0x1841030 |
| |
| #define USB30_GENERAL_CFG 0x8AF8808 |
| #define USB30_GUCTL 0x8A0C12C |
| #define USB30_FLADJ 0x8A0C630 |
| #define GUCTL 0x700C12C |
| #define FLADJ 0x700C630 |
| |
| #define PIPE_UTMI_CLK_SEL 0x1 |
| #define PIPE3_PHYSTATUS_SW (0x1 << 3) |
| #define PIPE_UTMI_CLK_DIS (0x1 << 8) |
| |
| #define QUSB2PHY_BASE 0x5b000 |
| |
| #define GCC_USB0_LFPS_CFG_SRC_SEL (0x1 << 8) |
| #define GCC_USB0_LFPS_CFG_SRC_DIV (0x1f << 0) |
| #define LFPS_M 0x1 |
| #define LFPS_N 0xfe |
| #define LFPS_D 0xfd |
| #define GCC_USB0_LFPS_MODE (0x2 << 12) |
| |
| #define GCC_USB0_AUX_CFG_MODE_DUAL_EDGE (2 << 12) |
| #define GCC_USB0_AUX_CFG_SRC_SEL (0 << 8) |
| #define GCC_USB0_AUX_CFG_SRC_DIV (0x17 << 0) |
| |
| #define AUX_M 0x0 |
| #define AUX_N 0x0 |
| #define AUX_D 0x0 |
| |
| #define SW_COLLAPSE_ENABLE (1 << 0) |
| #define SW_OVERRIDE_ENABLE (1 << 2) |
| |
| |
| #define GCC_USB0_MASTER_CFG_RCGR_SRC_SEL (1 << 8) |
| #define GCC_USB0_MASTER_CFG_RCGR_SRC_DIV (0x7 << 0) |
| |
| #define GCC_USB_MOCK_UTMI_SRC_SEL (1 << 8) |
| #define GCC_USB_MOCK_UTMI_SRC_DIV (0x13 << 0) |
| #define GCC_USB_MOCK_UTMI_CLK_DIV (0x1 << 16) |
| |
| #define GCC_QUSB2_1_PHY_BCR 0x1841040 |
| |
| #define USB3PHY_APB_BASE 0x5d000 |
| |
| #define USB3_PHY_POWER_DOWN_CONTROL 0x804 |
| #define QSERDES_COM_SYSCLK_EN_SEL 0xac |
| #define QSERDES_COM_BIAS_EN_CLKBUFLR_EN 0x34 |
| #define QSERDES_COM_CLK_SELECT 0x174 |
| #define QSERDES_COM_BG_TRIM 0x70 |
| #define QSERDES_RX_UCDR_FASTLOCK_FO_GAIN 0x440 |
| #define QSERDES_COM_SVS_MODE_CLK_SEL 0x19c |
| #define QSERDES_COM_HSCLK_SEL 0x178 |
| #define QSERDES_COM_CMN_CONFIG 0x194 |
| #define QSERDES_COM_PLL_IVCO 0x048 |
| #define QSERDES_COM_SYS_CLK_CTRL 0x3c |
| #define QSERDES_COM_DEC_START_MODE0 0xd0 |
| #define QSERDES_COM_DIV_FRAC_START1_MODE0 0xdc |
| #define QSERDES_COM_DIV_FRAC_START2_MODE0 0xe0 |
| #define QSERDES_COM_DIV_FRAC_START3_MODE0 0xe4 |
| #define QSERDES_COM_CP_CTRL_MODE0 0x78 |
| #define QSERDES_COM_PLL_RCTRL_MODE0 0x84 |
| #define QSERDES_COM_PLL_CCTRL_MODE0 0x90 |
| #define QSERDES_COM_INTEGLOOP_GAIN0_MODE0 0x108 |
| #define QSERDES_COM_LOCK_CMP1_MODE0 0x4c |
| #define QSERDES_COM_LOCK_CMP2_MODE0 0x50 |
| #define QSERDES_COM_LOCK_CMP3_MODE0 0x54 |
| #define QSERDES_COM_CORE_CLK_EN 0x18c |
| #define QSERDES_COM_LOCK_CMP_CFG 0xcc |
| #define QSERDES_COM_VCO_TUNE_MAP 0x128 |
| #define QSERDES_COM_BG_TIMER 0x0c |
| #define QSERDES_COM_SSC_EN_CENTER 0x10 |
| #define QSERDES_COM_SSC_PER1 0x1c |
| #define QSERDES_COM_SSC_PER2 0x20 |
| #define QSERDES_COM_SSC_ADJ_PER1 0x14 |
| #define QSERDES_COM_SSC_ADJ_PER2 0x18 |
| #define QSERDES_COM_SSC_STEP_SIZE1 0x24 |
| #define QSERDES_COM_SSC_STEP_SIZE2 0x28 |
| #define QSERDES_RX_UCDR_SO_GAIN 0x410 |
| #define QSERDES_RX_RX_EQU_ADAPTOR_CNTRL2 0x4d8 |
| #define QSERDES_RX_RX_EQU_ADAPTOR_CNTRL3 0x4dc |
| #define QSERDES_RX_RX_EQU_ADAPTOR_CNTRL4 0x4e0 |
| #define QSERDES_RX_RX_EQ_OFFSET_ADAPTOR_CNTRL 0x508 |
| #define QSERDES_RX_RX_OFFSET_ADAPTOR_CNTRL2 0x50c |
| #define QSERDES_RX_SIGDET_CNTRL 0x514 |
| #define QSERDES_RX_SIGDET_DEGLITCH_CNTRL 0x51c |
| #define QSERDES_RX_SIGDET_ENABLES 0x510 |
| #define QSERDES_TX_HIGHZ_TRANSCEIVEREN_BIAS_D 0x268 |
| #define QSERDES_TX_RCV_DETECT_LVL_2 0x2ac |
| #define QSERDES_TX_LANE_MODE 0x294 |
| #define PCS_TXDEEMPH_M6DB_V0 0x824 |
| #define PCS_TXDEEMPH_M3P5DB_V0 0x828 |
| #define PCS_FLL_CNTRL2 0x8c8 |
| #define PCS_FLL_CNTRL1 0x8c4 |
| #define PCS_FLL_CNT_VAL_L 0x8cc |
| #define PCS_FLL_CNT_VAL_H_TOL 0x8d0 |
| #define PCS_FLL_MAN_CODE 0x8d4 |
| #define PCS_LOCK_DETECT_CONFIG1 0x880 |
| #define PCS_LOCK_DETECT_CONFIG2 0x884 |
| #define PCS_LOCK_DETECT_CONFIG3 0x888 |
| #define PCS_POWER_STATE_CONFIG2 0x864 |
| #define PCS_RXEQTRAINING_WAIT_TIME 0x8b8 |
| #define PCS_RXEQTRAINING_RUN_TIME 0x8bc |
| #define PCS_LFPS_TX_ECSTART_EQTLOCK 0x8b0 |
| #define PCS_PWRUP_RESET_DLY_TIME_AUXCLK 0x8a0 |
| #define PCS_TSYNC_RSYNC_TIME 0x88c |
| #define PCS_RCVR_DTCT_DLY_P1U2_L 0x870 |
| #define PCS_RCVR_DTCT_DLY_P1U2_H 0x874 |
| #define PCS_RCVR_DTCT_DLY_U3_L 0x878 |
| #define PCS_RCVR_DTCT_DLY_U3_H 0x87c |
| #define PCS_RX_SIGDET_LVL 0x9d8 |
| #define USB3_PCS_TXDEEMPH_M6DB_V0 0x824 |
| #define USB3_PCS_TXDEEMPH_M3P5DB_V0 0x828 |
| #define QSERDES_RX_SIGDET_ENABLES 0x510 |
| #define USB3_PHY_START_CONTROL 0x808 |
| #define USB3_PHY_SW_RESET 0x800 |
| |
| #define CMD_UPDATE 0x1 |
| #define ROOT_EN 0x2 |
| #define CLK_DISABLE 0x0 |
| #define NOC_HANDSHAKE_FSM_EN (1 << 15) |
| |
| #define set_mdelay_clearbits_le32(addr, value, delay) \ |
| setbits_le32(addr, value); \ |
| mdelay(delay); \ |
| clrbits_le32(addr, value); \ |
| /* |
| * PCIE Register |
| */ |
| #define GCC_SYS_NOC_PCIE0_AXI_CBCR 0x01826048 |
| #define GCC_SYS_NOC_PCIE1_AXI_CBCR 0x0182604C |
| |
| #define GCC_PCIE_BCR_ENABLE (1 << 0) |
| #define GCC_PCIE_BLK_ARES (1 << 0) |
| #define GCC_PCIE_PIPE_ARES (1 << 0) |
| #define GCC_PCIE_SLEEP_ARES (1 << 1) |
| #define GCC_PCIE_CORE_STICKY_ARES (1 << 2) |
| #define GCC_PCIE_AXI_MASTER_ARES (1 << 3) |
| #define GCC_PCIE_AXI_SLAVE_ARES (1 << 4) |
| #define GCC_PCIE_AHB_ARES (1 << 5) |
| #define GCC_PCI_AXI_MASTER_STICKY_ARES (1 << 6) |
| #define GCC_PCI_AXI_SLAVE_STICKY_ARES (1 << 7) |
| |
| #define GCC_PCIE0_BOOT_CLOCK_CTL 0x01875000 |
| #define GCC_PCIE0_BCR 0x01875004 |
| #define GCC_PCIE0_AXI_M_CBCR 0x01875008 |
| #define GCC_PCIE0_AXI_S_CBCR 0x0187500C |
| #define GCC_PCIE0_AHB_CBCR 0x01875010 |
| #define GCC_PCIE0_PHY_PIPE_MISC 0x0187501C |
| #define GCC_PCIE0_AUX_CBCR 0x01875014 |
| #define GCC_PCIE0_PIPE_CBCR 0x01875018 |
| #define GCC_PCIE0_PHY_PIPE_MISC 0x0187501C |
| #define GCC_PCIE0_AUX_CMD_RCGR 0x01875020 |
| #define GCC_PCIE0_AUX_CFG_RCGR 0x01875024 |
| #define GCC_PCIE0_PHY_BCR 0x01875038 |
| #define GCC_PCIE0PHY_PHY_BCR 0x0187503C |
| #define GCC_PCIE0_MISC_RESET 0x01875040 |
| #define GCC_PCIE0_AXI_S_BRIDGE_CBCR 0x01875048 |
| #define GCC_PCIE0_AXI_CMD_RCGR 0x01875050 |
| #define GCC_PCIE0_AXI_CFG_RCGR 0x01875054 |
| #define GCC_PCIE0_LINK_DOWN_BCR 0x018750A8 |
| #define GCC_PCIE0_AUX_CFG_RCGR_SRC_SEL (0 << 8) |
| #define GCC_PCIE0_AUX_CFG_RCGR_SRC_DIV 0x17 |
| #define GCC_PCIE0_AXI_CFG_RCGR_SRC_SEL (2 << 8) |
| #define GCC_PCIE0_AXI_CFG_RCGR_SRC_DIV 0x9 |
| |
| |
| #define GCC_PCIE1_BOOT_CLOCK_CTL 0x01876000 |
| #define GCC_PCIE1_BCR 0x01876004 |
| #define GCC_PCIE1_AXI_M_CBCR 0x01876008 |
| #define GCC_PCIE1_AXI_S_CBCR 0x0187600C |
| #define GCC_PCIE1_AHB_CBCR 0x01876010 |
| #define GCC_PCIE1_AUX_CBCR 0x01876014 |
| #define GCC_PCIE1_PIPE_CBCR 0x01876018 |
| #define GCC_PCIE1_PHY_PIPE_MISC 0x0187601C |
| #define GCC_PCIE1_AUX_CMD_RCGR 0x01876020 |
| #define GCC_PCIE1_AUX_CFG_RCGR 0x01876024 |
| #define GCC_PCIE1_PHY_BCR 0x01876038 |
| #define GCC_PCIE1PHY_PHY_BCR 0x0187603C |
| #define GCC_PCIE1_MISC_RESET 0x01876040 |
| #define GCC_PCIE1_LINK_DOWN_BCR 0x01876044 |
| #define GCC_PCIE1_AXI_S_BRIDGE_CBCR 0x01876048 |
| #define GCC_PCIE1_AXI_CMD_RCGR 0x01876050 |
| #define GCC_PCIE1_AXI_CFG_RCGR 0x01876054 |
| #define GCC_PCIE1_AUX_CFG_RCGR_SRC_SEL (0 << 8) |
| #define GCC_PCIE1_AUX_CFG_RCGR_SRC_DIV 0x17 |
| #define GCC_PCIE1_AXI_CFG_RCGR_SRC_SEL (1 << 8) |
| #define GCC_PCIE1_AXI_CFG_RCGR_SRC_DIV 0x7 |
| |
| #define PCIE_BCR 0x4 |
| #define PCIE_AXI_M_CBCR 0x8 |
| #define PCIE_AXI_S_CBCR 0xC |
| #define PCIE_AHB_CBCR 0x10 |
| #define PCIE_AUX_CBCR 0x14 |
| #define PCIE_PIPE_CBCR 0x18 |
| #define PCIE_AUX_CMD_RCGR 0x20 |
| #define PCIE_AUX_CFG_RCGR 0x24 |
| #define PCIE_PHY_BCR 0x38 |
| #define PCIE_PHY_PHY_BCR 0x3c |
| #define PCIE_MISC_RESET 0x40 |
| #define PCIE_AXI_S_BRIDGE_CBCR 0x48 |
| #define PCIE_AXI_CMD_RCGR 0x50 |
| #define PCIE_AXI_CFG_RCGR 0x54 |
| |
| #define NOT_2D(two_d) (~two_d) |
| #define NOT_N_MINUS_M(n,m) (~(n - m)) |
| #define CLOCK_UPDATE_TIMEOUT_US 1000 |
| |
| #define KERNEL_AUTH_CMD 0x13 |
| #define SCM_CMD_SEC_AUTH 0x15 |
| |
| #define ARM_PSCI_TZ_FN_BASE 0x84000000 |
| #define ARM_PSCI_TZ_FN(n) (ARM_PSCI_TZ_FN_BASE + (n)) |
| |
| #define ARM_PSCI_TZ_FN_CPU_OFF ARM_PSCI_TZ_FN(2) |
| #define ARM_PSCI_TZ_FN_CPU_ON ARM_PSCI_TZ_FN(3) |
| #define ARM_PSCI_TZ_FN_AFFINITY_INFO ARM_PSCI_TZ_FN(4) |
| |
| #define CLK_ENABLE 0x1 |
| |
| #define SSCG_CTRL_REG_1 0x9c |
| #define SSCG_CTRL_REG_2 0xa0 |
| #define SSCG_CTRL_REG_3 0xa4 |
| #define SSCG_CTRL_REG_4 0xa8 |
| #define SSCG_CTRL_REG_5 0xac |
| #define SSCG_CTRL_REG_6 0xb0 |
| #define CDR_CTRL_REG_1 0x80 |
| #define CDR_CTRL_REG_2 0x84 |
| #define CDR_CTRL_REG_3 0x88 |
| #define CDR_CTRL_REG_4 0x8C |
| #define CDR_CTRL_REG_5 0x90 |
| #define CDR_CTRL_REG_6 0x94 |
| #define CDR_CTRL_REG_7 0x98 |
| |
| #define USB_PHY_CFG0 0x94 |
| #define USB_PHY_UTMI_CTRL5 0x50 |
| #define USB_PHY_FSEL_SEL 0xB8 |
| #define USB_PHY_HS_PHY_CTRL_COMMON0 0x54 |
| #define USB_PHY_REFCLK_CTRL 0xA0 |
| #define USB_PHY_HS_PHY_CTRL2 0x64 |
| #define USB_PHY_UTMI_CTRL0 0x3c |
| |
| #define UTMI_PHY_OVERRIDE_EN (1 << 1) |
| #define POR_EN (1 << 1) |
| #define FREQ_SEL (1 << 0) |
| #define COMMONONN (1 << 7) |
| #define FSEL (1 << 4) |
| #define RETENABLEN (1 << 3) |
| #define USB2_SUSPEND_N_SEL (1 << 3) |
| #define USB2_SUSPEND_N (1 << 2) |
| #define USB2_UTMI_CLK_EN (1 << 1) |
| #define CLKCORE (1 << 1) |
| #define ATERESET ~(1 << 0) |
| |
| unsigned int __invoke_psci_fn_smc(unsigned int, unsigned int, |
| unsigned int, unsigned int); |
| |
| #define S17C_MAX_PORT 4 |
| |
| typedef struct { |
| u32 base; |
| int unit; |
| int phy_addr; |
| int phy_interface_mode; |
| int phy_napa_gpio; |
| int phy_8033_gpio; |
| int phy_type; |
| u32 mac_pwr; |
| int ipq_swith; |
| int phy_external_link; |
| int switch_port_count; |
| int switch_port_phy_address[S17C_MAX_PORT]; |
| const char phy_name[MDIO_NAME_LEN]; |
| } ipq_gmac_board_cfg_t; |
| |
| extern ipq_gmac_board_cfg_t gmac_cfg[]; |
| |
| static inline int gmac_cfg_is_valid(ipq_gmac_board_cfg_t *cfg) |
| { |
| /* |
| * 'cfg' is valid if and only if |
| * unit number is non-negative and less than CONFIG_IPQ_NO_MACS. |
| */ |
| return ((cfg >= &gmac_cfg[0]) && |
| (cfg < &gmac_cfg[CONFIG_IPQ_NO_MACS]) && |
| (cfg->unit >= 0) && (cfg->unit < CONFIG_IPQ_NO_MACS)); |
| } |
| |
| extern void ipq_gmac_common_init(ipq_gmac_board_cfg_t *cfg); |
| extern int ipq_gmac_init(ipq_gmac_board_cfg_t *cfg); |
| |
| #ifdef CONFIG_PCI_IPQ |
| void board_pci_init(int id); |
| #endif |
| |
| struct smem_ram_ptn { |
| char name[16]; |
| unsigned long long start; |
| unsigned long long size; |
| |
| /* RAM Partition attribute: READ_ONLY, READWRITE etc. */ |
| unsigned attr; |
| |
| /* RAM Partition category: EBI0, EBI1, IRAM, IMEM */ |
| unsigned category; |
| |
| /* RAM Partition domain: APPS, MODEM, APPS & MODEM (SHARED) etc. */ |
| unsigned domain; |
| |
| /* RAM Partition type: system, bootloader, appsboot, apps etc. */ |
| unsigned type; |
| |
| /* reserved for future expansion without changing version number */ |
| unsigned reserved2, reserved3, reserved4, reserved5; |
| } __attribute__ ((__packed__)); |
| |
| __weak void aquantia_phy_reset_init_done(void) {} |
| __weak void aquantia_phy_reset_init(void) {} |
| __weak void qgic_init(void) {} |
| __weak void handle_noc_err(void) {} |
| __weak void board_pcie_clock_init(int id) {} |
| |
| struct smem_ram_ptable { |
| #define _SMEM_RAM_PTABLE_MAGIC_1 0x9DA5E0A8 |
| #define _SMEM_RAM_PTABLE_MAGIC_2 0xAF9EC4E2 |
| unsigned magic[2]; |
| unsigned version; |
| unsigned reserved1; |
| unsigned len; |
| unsigned buf; |
| struct smem_ram_ptn parts[32]; |
| } __attribute__ ((__packed__)); |
| |
| int smem_ram_ptable_init(struct smem_ram_ptable *smem_ram_ptable); |
| void reset_crashdump(void); |
| void reset_board(void); |
| void qpic_clk_enbale(void); |
| int ipq_get_tz_version(char *version_name, int buf_size); |
| void ipq_fdt_fixup_socinfo(void *blob); |
| void qpic_set_clk_rate(unsigned int clk_rate, int blk_type, |
| int req_clk_src_type); |
| |
| extern const char *rsvd_node; |
| extern const char *del_node[]; |
| extern const add_node_t add_fdt_node[]; |
| |
| typedef enum { |
| SMEM_SPINLOCK_ARRAY = 7, |
| SMEM_AARM_PARTITION_TABLE = 9, |
| SMEM_HW_SW_BUILD_ID = 137, |
| SMEM_USABLE_RAM_PARTITION_TABLE = 402, |
| SMEM_POWER_ON_STATUS_INFO = 403, |
| SMEM_MACHID_INFO_LOCATION = 425, |
| SMEM_IMAGE_VERSION_TABLE = 469, |
| SMEM_BOOT_FLASH_TYPE = 498, |
| SMEM_BOOT_FLASH_INDEX = 499, |
| SMEM_BOOT_FLASH_CHIP_SELECT = 500, |
| SMEM_BOOT_FLASH_BLOCK_SIZE = 501, |
| SMEM_BOOT_FLASH_DENSITY = 502, |
| SMEM_BOOT_DUALPARTINFO = 503, |
| SMEM_PARTITION_TABLE_OFFSET = 504, |
| SMEM_SPI_FLASH_ADDR_LEN = 505, |
| SMEM_FIRST_VALID_TYPE = SMEM_SPINLOCK_ARRAY, |
| SMEM_LAST_VALID_TYPE = SMEM_SPI_FLASH_ADDR_LEN, |
| SMEM_MAX_SIZE = SMEM_SPI_FLASH_ADDR_LEN + 1, |
| } smem_mem_type_t; |
| |
| #ifdef CONFIG_IPQ_BT_SUPPORT |
| #define NVM_SEGMENT_SIZE 243 |
| #define TLV_REQ_OPCODE 0xFC00 |
| #define TLV_COMMAND_REQUEST 0x1E |
| #define DATA_REMAINING_LENGTH 2 |
| #define TLV_RESPONSE_PACKET_SIZE 8 |
| #define TLV_RESPONSE_STATUS_INDEX 6 |
| |
| #define PACKED_STRUCT __attribute__((__packed__)) |
| |
| #define LE_UNALIGNED(x, y) \ |
| { \ |
| ((u8 *)(x))[0] = ((u8)(((u32)(y)) & 0xFF)); \ |
| ((u8 *)(x))[1] = ((u8)((((u32)(y)) >> 8) & 0xFF)); \ |
| } |
| |
| typedef enum |
| { |
| ptHCICommandPacket = 0x01, /* Simple HCI Command Packet */ |
| ptHCIACLDataPacket = 0x02, /* HCI ACL Data Packet Type. */ |
| ptHCISCODataPacket = 0x03, /* HCI SCO Data Packet Type. */ |
| ptHCIeSCODataPacket= 0x03, /* HCI eSCO Data Packet Type. */ |
| ptHCIEventPacket = 0x04, /* HCI Event Packet Type. */ |
| ptHCIAdditional = 0x05 /* Starting Point for Additional*/ |
| } HCI_PacketType_t; |
| |
| typedef struct _tlv_download_req |
| { |
| u16 opcode; |
| u8 parameter_total_length; |
| u8 command_request; |
| u8 tlv_segment_length; |
| u8 tlv_segment_data[0]; |
| |
| } PACKED_STRUCT tlv_download_req; |
| |
| typedef struct _tagHCI_Packet_t |
| { |
| u8 HCIPacketType; |
| tlv_download_req HCIPayload; |
| } PACKED_STRUCT HCI_Packet_t; |
| |
| typedef enum { |
| BT_WAIT_FOR_START = 0, |
| BT_WAIT_FOR_TX_COMPLETE = 1, |
| BT_WAIT_FOR_STOP = 2, |
| } bt_wait; |
| |
| #define BT_TIMEOUT_US 500000 |
| |
| int bt_init(void); |
| #endif |
| #endif /* _IPQ5018_CDP_H_ */ |