224 lines
7.1 KiB
C
224 lines
7.1 KiB
C
/*
|
|
* Copyright (c) 2015, 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 __MDM_CLOCKS_FERMIUM_HWIO_H
|
|
#define __MDM_CLOCKS_FERMIUM_HWIO_H
|
|
|
|
#define GPLL0_MODE 0x21000
|
|
#define GPLL0_STATUS 0x21024
|
|
#define GPLL1_MODE 0x20000
|
|
#define GPLL1_STATUS 0x2001C
|
|
#define GPLL2_MODE 0x25000
|
|
#define GPLL2_STATUS 0x25024
|
|
#define APCS_GPLL_ENA_VOTE 0x45000
|
|
#define APCS_MODE 0x00018
|
|
#define APSS_AHB_CMD_RCGR 0x46000
|
|
#define PRNG_AHB_CBCR 0x13004
|
|
#define EMAC_0_125M_CMD_RCGR 0x4E028
|
|
#define BLSP1_QUP1_I2C_APPS_CMD_RCGR 0x200C
|
|
#define BLSP1_QUP1_SPI_APPS_CMD_RCGR 0x2024
|
|
#define BLSP1_QUP2_I2C_APPS_CMD_RCGR 0x3000
|
|
#define BLSP1_QUP2_SPI_APPS_CMD_RCGR 0x3014
|
|
#define BLSP1_QUP3_I2C_APPS_CMD_RCGR 0x4000
|
|
#define BLSP1_QUP3_SPI_APPS_CMD_RCGR 0x4024
|
|
#define BLSP1_QUP4_I2C_APPS_CMD_RCGR 0x5000
|
|
#define BLSP1_QUP4_SPI_APPS_CMD_RCGR 0x5024
|
|
#define BLSP1_QUP5_I2C_APPS_CMD_RCGR 0x6000
|
|
#define BLSP1_QUP5_SPI_APPS_CMD_RCGR 0x6024
|
|
#define BLSP1_QUP6_I2C_APPS_CMD_RCGR 0x7000
|
|
#define BLSP1_QUP6_SPI_APPS_CMD_RCGR 0x7024
|
|
#define BLSP1_UART1_APPS_CMD_RCGR 0x2044
|
|
#define BLSP1_UART2_APPS_CMD_RCGR 0x3034
|
|
#define BLSP1_UART3_APPS_CMD_RCGR 0x4044
|
|
#define BLSP1_UART4_APPS_CMD_RCGR 0x5044
|
|
#define BLSP1_UART5_APPS_CMD_RCGR 0x6044
|
|
#define BLSP1_UART6_APPS_CMD_RCGR 0x7044
|
|
#define CRYPTO_CMD_RCGR 0x16004
|
|
#define GP1_CMD_RCGR 0x8004
|
|
#define GP2_CMD_RCGR 0x9004
|
|
#define GP3_CMD_RCGR 0xA004
|
|
#define PDM2_CMD_RCGR 0x44010
|
|
#define QPIC_CMD_RCGR 0x3F004
|
|
#define SDCC1_APPS_CMD_RCGR 0x42004
|
|
#define SDCC2_APPS_CMD_RCGR 0x43004
|
|
#define EMAC_0_SYS_25M_CMD_RCGR 0x4E03C
|
|
#define EMAC_0_TX_CMD_RCGR 0x4E014
|
|
#define USB_HS_SYSTEM_CMD_RCGR 0x41010
|
|
#define USB_HSIC_CMD_RCGR 0x3D018
|
|
#define USB_HSIC_IO_CAL_CMD_RCGR 0x3D030
|
|
#define USB_HSIC_SYSTEM_CMD_RCGR 0x3D000
|
|
#define BIMC_PCNOC_AXI_CBCR 0x31024
|
|
#define BLSP1_AHB_CBCR 0x1008
|
|
#define APCS_CLOCK_BRANCH_ENA_VOTE 0x45004
|
|
#define BLSP1_QUP1_I2C_APPS_CBCR 0x2008
|
|
#define BLSP1_QUP1_SPI_APPS_CBCR 0x2004
|
|
#define BLSP1_QUP2_I2C_APPS_CBCR 0x3010
|
|
#define BLSP1_QUP2_SPI_APPS_CBCR 0x300C
|
|
#define BLSP1_QUP3_I2C_APPS_CBCR 0x4020
|
|
#define BLSP1_QUP3_SPI_APPS_CBCR 0x401C
|
|
#define BLSP1_QUP4_I2C_APPS_CBCR 0x5020
|
|
#define BLSP1_QUP4_SPI_APPS_CBCR 0x501C
|
|
#define BLSP1_QUP5_I2C_APPS_CBCR 0x6020
|
|
#define BLSP1_QUP5_SPI_APPS_CBCR 0x601C
|
|
#define BLSP1_QUP6_I2C_APPS_CBCR 0x7020
|
|
#define BLSP1_QUP6_SPI_APPS_CBCR 0x701C
|
|
#define BLSP1_UART1_APPS_CBCR 0x203C
|
|
#define BLSP1_UART2_APPS_CBCR 0x302C
|
|
#define BLSP1_UART3_APPS_CBCR 0x403C
|
|
#define BLSP1_UART4_APPS_CBCR 0x503C
|
|
#define BLSP1_UART5_APPS_CBCR 0x603C
|
|
#define BLSP1_UART6_APPS_CBCR 0x703C
|
|
#define APSS_AHB_CBCR 0x4601C
|
|
#define APSS_AXI_CBCR 0x46020
|
|
#define BOOT_ROM_AHB_CBCR 0x1300C
|
|
#define CRYPTO_AHB_CBCR 0x16024
|
|
#define CRYPTO_AXI_CBCR 0x16020
|
|
#define CRYPTO_CBCR 0x1601C
|
|
#define GP1_CBCR 0x8000
|
|
#define GP2_CBCR 0x9000
|
|
#define GP3_CBCR 0xA000
|
|
#define MSS_CFG_AHB_CBCR 0x49000
|
|
#define MSS_Q6_BIMC_AXI_CBCR 0x49004
|
|
#define PCNOC_APSS_AHB_CBCR 0x27030
|
|
#define PDM2_CBCR 0x4400C
|
|
#define PDM_AHB_CBCR 0x44004
|
|
#define QPIC_AHB_CBCR 0x3F01C
|
|
#define QPIC_CBCR 0x3F018
|
|
#define QPIC_SYSTEM_CBCR 0x3F020
|
|
#define SDCC1_AHB_CBCR 0x4201C
|
|
#define SDCC1_APPS_CBCR 0x42018
|
|
#define SDCC2_AHB_CBCR 0x4301C
|
|
#define SDCC2_APPS_CBCR 0x43018
|
|
#define EMAC_0_125M_CBCR 0x4E010
|
|
#define EMAC_0_AHB_CBCR 0x4E000
|
|
#define EMAC_0_AXI_CBCR 0x4E008
|
|
#define EMAC_0_RX_CBCR 0x4E030
|
|
#define EMAC_0_SYS_25M_CBCR 0x4E038
|
|
#define EMAC_0_SYS_CBCR 0x4E034
|
|
#define EMAC_0_TX_CBCR 0x4E00C
|
|
#define APSS_TCU_CBCR 0x12018
|
|
#define SMMU_CFG_CBCR 0x12038
|
|
#define QDSS_DAP_CBCR 0x29084
|
|
#define APCS_SMMU_CLOCK_BRANCH_ENA_VOTE 0x4500C
|
|
#define USB2A_PHY_SLEEP_CBCR 0x4102C
|
|
#define USB_HS_PHY_CFG_AHB_CBCR 0x41030
|
|
#define USB_HS_AHB_CBCR 0x41008
|
|
#define USB_HS_SYSTEM_CBCR 0x41004
|
|
#define USB_HSIC_AHB_CBCR 0x3D04C
|
|
#define USB_HSIC_CBCR 0x3D050
|
|
#define USB_HSIC_IO_CAL_CBCR 0x3D054
|
|
#define USB_HSIC_IO_CAL_SLEEP_CBCR 0x3D058
|
|
#define USB_HSIC_SYSTEM_CBCR 0x3D048
|
|
#define USB2_HS_PHY_ONLY_BCR 0x41034
|
|
#define QUSB2_PHY_BCR 0x4103C
|
|
#define GCC_DEBUG_CLK_CTL 0x74000
|
|
#define CLOCK_FRQ_MEASURE_CTL 0x74004
|
|
#define CLOCK_FRQ_MEASURE_STATUS 0x74008
|
|
#define PLLTEST_PAD_CFG 0x7400C
|
|
#define GCC_XO_DIV4_CBCR 0x30034
|
|
|
|
#define xo_source_val 0
|
|
#define xo_a_source_val 0
|
|
#define gpll0_source_val 1
|
|
#define gpll2_source_val 1
|
|
#define emac_0_125m_clk_source_val 1
|
|
|
|
#define F(f, s, div, m, n) \
|
|
{ \
|
|
.freq_hz = (f), \
|
|
.src_clk = &s##_clk_src.c, \
|
|
.m_val = (m), \
|
|
.n_val = ~((n)-(m)) * !!(n), \
|
|
.d_val = ~(n),\
|
|
.div_src_val = BVAL(4, 0, (int)(2*(div) - 1)) \
|
|
| BVAL(10, 8, s##_source_val), \
|
|
}
|
|
|
|
#define F_EXT(f, s, div, m, n) \
|
|
{ \
|
|
.freq_hz = (f), \
|
|
.m_val = (m), \
|
|
.n_val = ~((n)-(m)) * !!(n), \
|
|
.d_val = ~(n),\
|
|
.div_src_val = BVAL(4, 0, (int)(2*(div) - 1)) \
|
|
| BVAL(10, 8, s##_source_val), \
|
|
}
|
|
|
|
#define VDD_DIG_FMAX_MAP1(l1, f1) \
|
|
.vdd_class = &vdd_dig, \
|
|
.fmax = (unsigned long[VDD_DIG_NUM]) { \
|
|
[VDD_DIG_##l1] = (f1), \
|
|
}, \
|
|
.num_fmax = VDD_DIG_NUM
|
|
|
|
#define VDD_DIG_FMAX_MAP2(l1, f1, l2, f2) \
|
|
.vdd_class = &vdd_dig, \
|
|
.fmax = (unsigned long[VDD_DIG_NUM]) { \
|
|
[VDD_DIG_##l1] = (f1), \
|
|
[VDD_DIG_##l2] = (f2), \
|
|
}, \
|
|
.num_fmax = VDD_DIG_NUM
|
|
|
|
#define VDD_DIG_FMAX_MAP3(l1, f1, l2, f2, l3, f3) \
|
|
.vdd_class = &vdd_dig, \
|
|
.fmax = (unsigned long[VDD_DIG_NUM]) { \
|
|
[VDD_DIG_##l1] = (f1), \
|
|
[VDD_DIG_##l2] = (f2), \
|
|
[VDD_DIG_##l3] = (f3), \
|
|
}, \
|
|
.num_fmax = VDD_DIG_NUM
|
|
|
|
enum vdd_dig_levels {
|
|
VDD_DIG_NONE,
|
|
VDD_DIG_LOWER,
|
|
VDD_DIG_LOW,
|
|
VDD_DIG_NOMINAL,
|
|
VDD_DIG_HIGH,
|
|
VDD_DIG_NUM
|
|
};
|
|
|
|
static int vdd_corner[] = {
|
|
RPM_REGULATOR_LEVEL_NONE, /* VDD_DIG_NONE */
|
|
RPM_REGULATOR_LEVEL_SVS, /* VDD_DIG_LOWER */
|
|
RPM_REGULATOR_LEVEL_SVS_PLUS, /*VDD_DIG_LOW*/
|
|
RPM_REGULATOR_LEVEL_NOM, /* VDD_DIG_NOMINAL */
|
|
RPM_REGULATOR_LEVEL_TURBO, /* VDD_DIG_HIGH */
|
|
};
|
|
|
|
static DEFINE_VDD_REGULATORS(vdd_dig, VDD_DIG_NUM, 1, vdd_corner, NULL);
|
|
|
|
|
|
#define VDD_STROMER_FMAX_MAP1(l1, f1) \
|
|
.vdd_class = &vdd_stromer_pll, \
|
|
.fmax = (unsigned long[VDD_DIG_NUM]) { \
|
|
[VDD_DIG_##l1] = (f1), \
|
|
}, \
|
|
.num_fmax = VDD_DIG_NUM
|
|
|
|
|
|
#define RPM_MISC_CLK_TYPE 0x306b6c63
|
|
#define RPM_BUS_CLK_TYPE 0x316b6c63
|
|
#define RPM_MEM_CLK_TYPE 0x326b6c63
|
|
#define RPM_SMD_KEY_ENABLE 0x62616E45
|
|
#define RPM_QPIC_CLK_TYPE 0x63697071
|
|
|
|
#define XO_ID 0x0
|
|
#define QDSS_ID 0x1
|
|
#define PCNOC_ID 0x0
|
|
#define BIMC_ID 0x0
|
|
#define QPIC_ID 0x0
|
|
|
|
/* XO clock */
|
|
#define BB_CLK1_ID 1
|
|
#define RF_CLK2_ID 5
|
|
|
|
#endif
|