2 * Qualcomm/Atheros common/helper functions
4 * Copyright (C) 2015 Piotr Dymacz <piotr@dymacz.pl>
7 * Linux/arch/mips/ath79/setup.c
9 * SPDX-License-Identifier:GPL-2.0
14 #include <asm/addrspace.h>
15 #include <soc/qca_soc_common.h>
18 * Returns 1 if reference clock is 40 MHz
20 inline u32 qca_xtal_is_40mhz(void)
22 return ((qca_soc_reg_read(QCA_RST_BOOTSTRAP_REG) &
23 QCA_RST_BOOTSTRAP_REF_CLK_MASK) >> QCA_RST_BOOTSTRAP_REF_CLK_SHIFT);
27 * Return memory type value from BOOT_STRAP register
29 u32 qca_dram_type(void)
31 #if defined(CONFIG_BOARD_CONST_DRAM_TYPE_SDR)
32 return RAM_MEMORY_TYPE_SDR;
33 #elif defined(CONFIG_BOARD_CONST_DRAM_TYPE_DDR1)
34 return RAM_MEMORY_TYPE_DDR1;
35 #elif defined(CONFIG_BOARD_CONST_DRAM_TYPE_DDR2)
36 return RAM_MEMORY_TYPE_DDR2;
38 static u32 dram_type = 0;
41 dram_type = ((qca_soc_reg_read(QCA_RST_BOOTSTRAP_REG) &
42 QCA_RST_BOOTSTRAP_MEM_TYPE_MASK) >> QCA_RST_BOOTSTRAP_MEM_TYPE_SHIFT);
45 case QCA_RST_BOOTSTRAP_MEM_TYPE_SDR_VAL:
46 dram_type = RAM_MEMORY_TYPE_SDR;
48 case QCA_RST_BOOTSTRAP_MEM_TYPE_DDR1_VAL:
49 dram_type = RAM_MEMORY_TYPE_DDR1;
51 case QCA_RST_BOOTSTRAP_MEM_TYPE_DDR2_VAL:
52 dram_type = RAM_MEMORY_TYPE_DDR2;
55 dram_type = RAM_MEMORY_TYPE_UNKNOWN;
65 * Put QCA SOC name, version and revision in buffer
67 void qca_soc_name_rev(char *buf)
76 /* Get revision ID value */
77 id = qca_soc_reg_read(QCA_RST_REVISION_ID_REG);
79 major = id & QCA_RST_REVISION_ID_MAJOR_MASK;
80 rev = id & QCA_RST_REVISION_ID_REV_MASK;
83 #if (SOC_TYPE & QCA_AR933X_SOC)
84 case QCA_RST_REVISION_ID_MAJOR_AR9330_VAL:
85 sprintf(buf, "AR9330 rev. %d", rev);
87 case QCA_RST_REVISION_ID_MAJOR_AR9331_VAL:
88 sprintf(buf, "AR9331 rev. %d", rev);
91 #if (SOC_TYPE & QCA_AR934X_SOC)
92 case QCA_RST_REVISION_ID_MAJOR_AR9341_VAL:
93 sprintf(buf, "AR9341 rev. %d", rev);
95 case QCA_RST_REVISION_ID_MAJOR_AR9344_VAL:
96 sprintf(buf, "AR9344 rev. %d", rev);
99 #if (SOC_TYPE & QCA_QCA953X_SOC)
100 case QCA_RST_REVISION_ID_MAJOR_QCA953X_VAL:
101 sprintf(buf, "QCA953x ver. 1 rev. %d", rev);
103 case QCA_RST_REVISION_ID_MAJOR_QCA953X_V2_VAL:
104 sprintf(buf, "QCA953x ver. 2 rev. %d", rev);
107 #if (SOC_TYPE & QCA_QCA955X_SOC)
108 case QCA_RST_REVISION_ID_MAJOR_QCA9558_VAL:
109 sprintf(buf, "QCA9558 rev. %d", rev);
113 sprintf(buf, "Unknown");
119 * Performs full chip reset
121 void qca_full_chip_reset(void)
126 qca_soc_reg_write(QCA_RST_RST_REG,
127 QCA_RST_RESET_FULL_CHIP_RST_MASK
128 | QCA_RST_RESET_DDR_RST_MASK);