1*edb47025SStefan Roese /* 2*edb47025SStefan Roese * Copyright (C) Marvell International Ltd. and its affiliates 3*edb47025SStefan Roese * 4*edb47025SStefan Roese * SPDX-License-Identifier: GPL-2.0 5*edb47025SStefan Roese */ 6*edb47025SStefan Roese 7*edb47025SStefan Roese #ifndef _SYS_ENV_LIB_H 8*edb47025SStefan Roese #define _SYS_ENV_LIB_H 9*edb47025SStefan Roese 10*edb47025SStefan Roese #include "../../../drivers/ddr/marvell/a38x/ddr3_init.h" 11*edb47025SStefan Roese #include "../../../drivers/ddr/marvell/a38x/ddr3_hws_hw_training.h" 12*edb47025SStefan Roese 13*edb47025SStefan Roese /* Serdes definitions */ 14*edb47025SStefan Roese #define COMMON_PHY_BASE_ADDR 0x18300 15*edb47025SStefan Roese 16*edb47025SStefan Roese #define DEVICE_CONFIGURATION_REG0 0x18284 17*edb47025SStefan Roese #define DEVICE_CONFIGURATION_REG1 0x18288 18*edb47025SStefan Roese #define COMMON_PHY_CONFIGURATION1_REG 0x18300 19*edb47025SStefan Roese #define COMMON_PHY_CONFIGURATION2_REG 0x18304 20*edb47025SStefan Roese #define COMMON_PHY_CONFIGURATION4_REG 0x1830c 21*edb47025SStefan Roese #define COMMON_PHY_STATUS1_REG 0x18318 22*edb47025SStefan Roese #define COMMON_PHYS_SELECTORS_REG 0x183fc 23*edb47025SStefan Roese #define SOC_CONTROL_REG1 0x18204 24*edb47025SStefan Roese #define GENERAL_PURPOSE_RESERVED0_REG 0x182e0 25*edb47025SStefan Roese #define GBE_CONFIGURATION_REG 0x18460 26*edb47025SStefan Roese #define DEVICE_SAMPLE_AT_RESET1_REG 0x18600 27*edb47025SStefan Roese #define DEVICE_SAMPLE_AT_RESET2_REG 0x18604 28*edb47025SStefan Roese #define DEV_ID_REG 0x18238 29*edb47025SStefan Roese 30*edb47025SStefan Roese #define CORE_PLL_PARAMETERS_REG 0xe42e0 31*edb47025SStefan Roese #define CORE_PLL_CONFIG_REG 0xe42e4 32*edb47025SStefan Roese 33*edb47025SStefan Roese #define QSGMII_CONTROL_REG1 0x18494 34*edb47025SStefan Roese 35*edb47025SStefan Roese #define DEV_ID_REG_DEVICE_ID_OFFS 16 36*edb47025SStefan Roese #define DEV_ID_REG_DEVICE_ID_MASK 0xffff0000 37*edb47025SStefan Roese 38*edb47025SStefan Roese #define SAR_DEV_ID_OFFS 27 39*edb47025SStefan Roese #define SAR_DEV_ID_MASK 0x7 40*edb47025SStefan Roese 41*edb47025SStefan Roese #define POWER_AND_PLL_CTRL_REG 0xa0004 42*edb47025SStefan Roese #define CALIBRATION_CTRL_REG 0xa0008 43*edb47025SStefan Roese #define DFE_REG0 0xa001c 44*edb47025SStefan Roese #define DFE_REG3 0xa0028 45*edb47025SStefan Roese #define RESET_DFE_REG 0xa0148 46*edb47025SStefan Roese #define LOOPBACK_REG 0xa008c 47*edb47025SStefan Roese #define SYNC_PATTERN_REG 0xa0090 48*edb47025SStefan Roese #define INTERFACE_REG 0xa0094 49*edb47025SStefan Roese #define ISOLATE_REG 0xa0098 50*edb47025SStefan Roese #define MISC_REG 0xa013c 51*edb47025SStefan Roese #define GLUE_REG 0xa0140 52*edb47025SStefan Roese #define GENERATION_DIVIDER_FORCE_REG 0xa0144 53*edb47025SStefan Roese #define PCIE_REG0 0xa0120 54*edb47025SStefan Roese #define LANE_ALIGN_REG0 0xa0124 55*edb47025SStefan Roese #define SQUELCH_FFE_SETTING_REG 0xa0018 56*edb47025SStefan Roese #define G1_SETTINGS_0_REG 0xa0034 57*edb47025SStefan Roese #define G1_SETTINGS_1_REG 0xa0038 58*edb47025SStefan Roese #define G1_SETTINGS_3_REG 0xa0440 59*edb47025SStefan Roese #define G1_SETTINGS_4_REG 0xa0444 60*edb47025SStefan Roese #define G2_SETTINGS_0_REG 0xa003c 61*edb47025SStefan Roese #define G2_SETTINGS_1_REG 0xa0040 62*edb47025SStefan Roese #define G2_SETTINGS_2_REG 0xa00f8 63*edb47025SStefan Roese #define G2_SETTINGS_3_REG 0xa0448 64*edb47025SStefan Roese #define G2_SETTINGS_4_REG 0xa044c 65*edb47025SStefan Roese #define G3_SETTINGS_0_REG 0xa0044 66*edb47025SStefan Roese #define G3_SETTINGS_1_REG 0xa0048 67*edb47025SStefan Roese #define G3_SETTINGS_3_REG 0xa0450 68*edb47025SStefan Roese #define G3_SETTINGS_4_REG 0xa0454 69*edb47025SStefan Roese #define VTHIMPCAL_CTRL_REG 0xa0104 70*edb47025SStefan Roese #define REF_REG0 0xa0134 71*edb47025SStefan Roese #define CAL_REG6 0xa0168 72*edb47025SStefan Roese #define RX_REG2 0xa0184 73*edb47025SStefan Roese #define RX_REG3 0xa0188 74*edb47025SStefan Roese #define PCIE_REG1 0xa0288 75*edb47025SStefan Roese #define PCIE_REG3 0xa0290 76*edb47025SStefan Roese #define LANE_CFG1_REG 0xa0604 77*edb47025SStefan Roese #define LANE_CFG4_REG 0xa0620 78*edb47025SStefan Roese #define LANE_CFG5_REG 0xa0624 79*edb47025SStefan Roese #define GLOBAL_CLK_CTRL 0xa0704 80*edb47025SStefan Roese #define GLOBAL_MISC_CTRL 0xa0718 81*edb47025SStefan Roese #define GLOBAL_CLK_SRC_HI 0xa0710 82*edb47025SStefan Roese 83*edb47025SStefan Roese #define GLOBAL_CLK_CTRL 0xa0704 84*edb47025SStefan Roese #define GLOBAL_MISC_CTRL 0xa0718 85*edb47025SStefan Roese #define GLOBAL_PM_CTRL 0xa0740 86*edb47025SStefan Roese 87*edb47025SStefan Roese /* SATA registers */ 88*edb47025SStefan Roese #define SATA_CTRL_REG_IND_ADDR 0xa80a0 89*edb47025SStefan Roese #define SATA_CTRL_REG_IND_DATA 0xa80a4 90*edb47025SStefan Roese 91*edb47025SStefan Roese #define SATA_VENDOR_PORT_0_REG_ADDR 0xa8178 92*edb47025SStefan Roese #define SATA_VENDOR_PORT_1_REG_ADDR 0xa81f8 93*edb47025SStefan Roese #define SATA_VENDOR_PORT_0_REG_DATA 0xa817c 94*edb47025SStefan Roese #define SATA_VENDOR_PORT_1_REG_DATA 0xa81fc 95*edb47025SStefan Roese 96*edb47025SStefan Roese /* Reference clock values and mask */ 97*edb47025SStefan Roese #define POWER_AND_PLL_CTRL_REG_100MHZ_VAL 0x0 98*edb47025SStefan Roese #define POWER_AND_PLL_CTRL_REG_25MHZ_VAL_1 0x1 99*edb47025SStefan Roese #define POWER_AND_PLL_CTRL_REG_25MHZ_VAL_2 0x2 100*edb47025SStefan Roese #define POWER_AND_PLL_CTRL_REG_40MHZ_VAL 0x3 101*edb47025SStefan Roese #define GLOBAL_PM_CTRL_REG_25MHZ_VAL 0x7 102*edb47025SStefan Roese #define GLOBAL_PM_CTRL_REG_40MHZ_VAL 0xc 103*edb47025SStefan Roese #define LANE_CFG4_REG_25MHZ_VAL 0x200 104*edb47025SStefan Roese #define LANE_CFG4_REG_40MHZ_VAL 0x300 105*edb47025SStefan Roese 106*edb47025SStefan Roese #define POWER_AND_PLL_CTRL_REG_MASK (~(0x1f)) 107*edb47025SStefan Roese #define GLOBAL_PM_CTRL_REG_MASK (~(0xff)) 108*edb47025SStefan Roese #define LANE_CFG4_REG_MASK (~(0x1f00)) 109*edb47025SStefan Roese 110*edb47025SStefan Roese #define REF_CLK_SELECTOR_VAL_PEX0(reg_val) (reg_val >> 2) & 0x1 111*edb47025SStefan Roese #define REF_CLK_SELECTOR_VAL_PEX1(reg_val) (reg_val >> 3) & 0x1 112*edb47025SStefan Roese #define REF_CLK_SELECTOR_VAL_PEX2(reg_val) (reg_val >> 30) & 0x1 113*edb47025SStefan Roese #define REF_CLK_SELECTOR_VAL_PEX3(reg_val) (reg_val >> 31) & 0x1 114*edb47025SStefan Roese #define REF_CLK_SELECTOR_VAL(reg_val) (reg_val & 0x1) 115*edb47025SStefan Roese 116*edb47025SStefan Roese #define MAX_SELECTOR_VAL 10 117*edb47025SStefan Roese 118*edb47025SStefan Roese /* TWSI addresses */ 119*edb47025SStefan Roese /* starting from A38x A0, i2c address of EEPROM is 0x57 */ 120*edb47025SStefan Roese #ifdef CONFIG_ARMADA_39X 121*edb47025SStefan Roese #define EEPROM_I2C_ADDR 0x50 122*edb47025SStefan Roese #else 123*edb47025SStefan Roese #define EEPROM_I2C_ADDR (sys_env_device_rev_get() == \ 124*edb47025SStefan Roese MV_88F68XX_Z1_ID ? 0x50 : 0x57) 125*edb47025SStefan Roese #endif 126*edb47025SStefan Roese #define RD_GET_MODE_ADDR 0x4c 127*edb47025SStefan Roese #define DB_GET_MODE_SLM1363_ADDR 0x25 128*edb47025SStefan Roese #define DB_GET_MODE_SLM1364_ADDR 0x24 129*edb47025SStefan Roese #define DB381_GET_MODE_SLM1426_1427_ADDR 0x56 130*edb47025SStefan Roese 131*edb47025SStefan Roese /* DB-BP Board 'SatR' mapping */ 132*edb47025SStefan Roese #define SATR_DB_LANE1_MAX_OPTIONS 7 133*edb47025SStefan Roese #define SATR_DB_LANE1_CFG_MASK 0x7 134*edb47025SStefan Roese #define SATR_DB_LANE1_CFG_OFFSET 0 135*edb47025SStefan Roese #define SATR_DB_LANE2_MAX_OPTIONS 4 136*edb47025SStefan Roese #define SATR_DB_LANE2_CFG_MASK 0x38 137*edb47025SStefan Roese #define SATR_DB_LANE2_CFG_OFFSET 3 138*edb47025SStefan Roese 139*edb47025SStefan Roese /* GP Board 'SatR' mapping */ 140*edb47025SStefan Roese #define SATR_GP_LANE1_CFG_MASK 0x4 141*edb47025SStefan Roese #define SATR_GP_LANE1_CFG_OFFSET 2 142*edb47025SStefan Roese #define SATR_GP_LANE2_CFG_MASK 0x8 143*edb47025SStefan Roese #define SATR_GP_LANE2_CFG_OFFSET 3 144*edb47025SStefan Roese 145*edb47025SStefan Roese /* For setting MPP2 and MPP3 to be TWSI mode and MPP 0,1 to UART mode */ 146*edb47025SStefan Roese #define MPP_CTRL_REG 0x18000 147*edb47025SStefan Roese #define MPP_SET_MASK (~(0xffff)) 148*edb47025SStefan Roese #define MPP_SET_DATA (0x1111) 149*edb47025SStefan Roese #define MPP_UART1_SET_MASK (~(0xff000)) 150*edb47025SStefan Roese #define MPP_UART1_SET_DATA (0x66000) 151*edb47025SStefan Roese 152*edb47025SStefan Roese #define AVS_DEBUG_CNTR_REG 0xe4124 153*edb47025SStefan Roese #define AVS_DEBUG_CNTR_DEFAULT_VALUE 0x08008073 154*edb47025SStefan Roese 155*edb47025SStefan Roese #define AVS_ENABLED_CONTROL 0xe4130 156*edb47025SStefan Roese #define AVS_LOW_VDD_LIMIT_OFFS 4 157*edb47025SStefan Roese #define AVS_LOW_VDD_LIMIT_MASK (0xff << AVS_LOW_VDD_LIMIT_OFFS) 158*edb47025SStefan Roese #define AVS_LOW_VDD_LIMIT_VAL (0x27 << AVS_LOW_VDD_LIMIT_OFFS) 159*edb47025SStefan Roese 160*edb47025SStefan Roese #define AVS_HIGH_VDD_LIMIT_OFFS 12 161*edb47025SStefan Roese #define AVS_HIGH_VDD_LIMIT_MASK (0xff << AVS_HIGH_VDD_LIMIT_OFFS) 162*edb47025SStefan Roese #define AVS_HIGH_VDD_LIMIT_VAL (0x27 << AVS_HIGH_VDD_LIMIT_OFFS) 163*edb47025SStefan Roese 164*edb47025SStefan Roese /* Board ID numbers */ 165*edb47025SStefan Roese #define MARVELL_BOARD_ID_MASK 0x10 166*edb47025SStefan Roese /* Customer boards for A38x */ 167*edb47025SStefan Roese #define A38X_CUSTOMER_BOARD_ID_BASE 0x0 168*edb47025SStefan Roese #define A38X_CUSTOMER_BOARD_ID0 (A38X_CUSTOMER_BOARD_ID_BASE + 0) 169*edb47025SStefan Roese #define A38X_CUSTOMER_BOARD_ID1 (A38X_CUSTOMER_BOARD_ID_BASE + 1) 170*edb47025SStefan Roese #define A38X_MV_MAX_CUSTOMER_BOARD_ID (A38X_CUSTOMER_BOARD_ID_BASE + 2) 171*edb47025SStefan Roese #define A38X_MV_CUSTOMER_BOARD_NUM (A38X_MV_MAX_CUSTOMER_BOARD_ID - \ 172*edb47025SStefan Roese A38X_CUSTOMER_BOARD_ID_BASE) 173*edb47025SStefan Roese 174*edb47025SStefan Roese /* Marvell boards for A38x */ 175*edb47025SStefan Roese #define A38X_MARVELL_BOARD_ID_BASE 0x10 176*edb47025SStefan Roese #define RD_NAS_68XX_ID (A38X_MARVELL_BOARD_ID_BASE + 0) 177*edb47025SStefan Roese #define DB_68XX_ID (A38X_MARVELL_BOARD_ID_BASE + 1) 178*edb47025SStefan Roese #define RD_AP_68XX_ID (A38X_MARVELL_BOARD_ID_BASE + 2) 179*edb47025SStefan Roese #define DB_AP_68XX_ID (A38X_MARVELL_BOARD_ID_BASE + 3) 180*edb47025SStefan Roese #define DB_GP_68XX_ID (A38X_MARVELL_BOARD_ID_BASE + 4) 181*edb47025SStefan Roese #define DB_BP_6821_ID (A38X_MARVELL_BOARD_ID_BASE + 5) 182*edb47025SStefan Roese #define DB_AMC_6820_ID (A38X_MARVELL_BOARD_ID_BASE + 6) 183*edb47025SStefan Roese #define A38X_MV_MAX_MARVELL_BOARD_ID (A38X_MARVELL_BOARD_ID_BASE + 7) 184*edb47025SStefan Roese #define A38X_MV_MARVELL_BOARD_NUM (A38X_MV_MAX_MARVELL_BOARD_ID - \ 185*edb47025SStefan Roese A38X_MARVELL_BOARD_ID_BASE) 186*edb47025SStefan Roese 187*edb47025SStefan Roese /* Customer boards for A39x */ 188*edb47025SStefan Roese #define A39X_CUSTOMER_BOARD_ID_BASE 0x20 189*edb47025SStefan Roese #define A39X_CUSTOMER_BOARD_ID0 (A39X_CUSTOMER_BOARD_ID_BASE + 0) 190*edb47025SStefan Roese #define A39X_CUSTOMER_BOARD_ID1 (A39X_CUSTOMER_BOARD_ID_BASE + 1) 191*edb47025SStefan Roese #define A39X_MV_MAX_CUSTOMER_BOARD_ID (A39X_CUSTOMER_BOARD_ID_BASE + 2) 192*edb47025SStefan Roese #define A39X_MV_CUSTOMER_BOARD_NUM (A39X_MV_MAX_CUSTOMER_BOARD_ID - \ 193*edb47025SStefan Roese A39X_CUSTOMER_BOARD_ID_BASE) 194*edb47025SStefan Roese 195*edb47025SStefan Roese /* Marvell boards for A39x */ 196*edb47025SStefan Roese #define A39X_MARVELL_BOARD_ID_BASE 0x30 197*edb47025SStefan Roese #define A39X_DB_69XX_ID (A39X_MARVELL_BOARD_ID_BASE + 0) 198*edb47025SStefan Roese #define A39X_RD_69XX_ID (A39X_MARVELL_BOARD_ID_BASE + 1) 199*edb47025SStefan Roese #define A39X_MV_MAX_MARVELL_BOARD_ID (A39X_MARVELL_BOARD_ID_BASE + 2) 200*edb47025SStefan Roese #define A39X_MV_MARVELL_BOARD_NUM (A39X_MV_MAX_MARVELL_BOARD_ID - \ 201*edb47025SStefan Roese A39X_MARVELL_BOARD_ID_BASE) 202*edb47025SStefan Roese 203*edb47025SStefan Roese #ifdef CONFIG_ARMADA_38X 204*edb47025SStefan Roese #define CUTOMER_BOARD_ID_BASE A38X_CUSTOMER_BOARD_ID_BASE 205*edb47025SStefan Roese #define CUSTOMER_BOARD_ID0 A38X_CUSTOMER_BOARD_ID0 206*edb47025SStefan Roese #define CUSTOMER_BOARD_ID1 A38X_CUSTOMER_BOARD_ID1 207*edb47025SStefan Roese #define MV_MAX_CUSTOMER_BOARD_ID A38X_MV_MAX_CUSTOMER_BOARD_ID 208*edb47025SStefan Roese #define MV_CUSTOMER_BOARD_NUM A38X_MV_CUSTOMER_BOARD_NUM 209*edb47025SStefan Roese #define MARVELL_BOARD_ID_BASE A38X_MARVELL_BOARD_ID_BASE 210*edb47025SStefan Roese #define MV_MAX_MARVELL_BOARD_ID A38X_MV_MAX_MARVELL_BOARD_ID 211*edb47025SStefan Roese #define MV_MARVELL_BOARD_NUM A38X_MV_MARVELL_BOARD_NUM 212*edb47025SStefan Roese #define MV_DEFAULT_BOARD_ID DB_68XX_ID 213*edb47025SStefan Roese #define MV_DEFAULT_DEVICE_ID MV_6811 214*edb47025SStefan Roese #elif defined(CONFIG_ARMADA_39X) 215*edb47025SStefan Roese #define CUTOMER_BOARD_ID_BASE A39X_CUSTOMER_BOARD_ID_BASE 216*edb47025SStefan Roese #define CUSTOMER_BOARD_ID0 A39X_CUSTOMER_BOARD_ID0 217*edb47025SStefan Roese #define CUSTOMER_BOARD_ID1 A39X_CUSTOMER_BOARD_ID1 218*edb47025SStefan Roese #define MV_MAX_CUSTOMER_BOARD_ID A39X_MV_MAX_CUSTOMER_BOARD_ID 219*edb47025SStefan Roese #define MV_CUSTOMER_BOARD_NUM A39X_MV_CUSTOMER_BOARD_NUM 220*edb47025SStefan Roese #define MARVELL_BOARD_ID_BASE A39X_MARVELL_BOARD_ID_BASE 221*edb47025SStefan Roese #define MV_MAX_MARVELL_BOARD_ID A39X_MV_MAX_MARVELL_BOARD_ID 222*edb47025SStefan Roese #define MV_MARVELL_BOARD_NUM A39X_MV_MARVELL_BOARD_NUM 223*edb47025SStefan Roese #define MV_DEFAULT_BOARD_ID A39X_DB_69XX_ID 224*edb47025SStefan Roese #define MV_DEFAULT_DEVICE_ID MV_6920 225*edb47025SStefan Roese #endif 226*edb47025SStefan Roese 227*edb47025SStefan Roese #define MV_INVALID_BOARD_ID 0xffffffff 228*edb47025SStefan Roese 229*edb47025SStefan Roese /* device revesion */ 230*edb47025SStefan Roese #define DEV_VERSION_ID_REG 0x1823c 231*edb47025SStefan Roese #define REVISON_ID_OFFS 8 232*edb47025SStefan Roese #define REVISON_ID_MASK 0xf00 233*edb47025SStefan Roese 234*edb47025SStefan Roese /* A38x revisions */ 235*edb47025SStefan Roese #define MV_88F68XX_Z1_ID 0x0 236*edb47025SStefan Roese #define MV_88F68XX_A0_ID 0x4 237*edb47025SStefan Roese /* A39x revisions */ 238*edb47025SStefan Roese #define MV_88F69XX_Z1_ID 0x2 239*edb47025SStefan Roese 240*edb47025SStefan Roese #define MPP_CONTROL_REG(id) (0x18000 + (id * 4)) 241*edb47025SStefan Roese #define GPP_DATA_OUT_REG(grp) (MV_GPP_REGS_BASE(grp) + 0x00) 242*edb47025SStefan Roese #define GPP_DATA_OUT_EN_REG(grp) (MV_GPP_REGS_BASE(grp) + 0x04) 243*edb47025SStefan Roese #define GPP_DATA_IN_REG(grp) (MV_GPP_REGS_BASE(grp) + 0x10) 244*edb47025SStefan Roese #define MV_GPP_REGS_BASE(unit) (0x18100 + ((unit) * 0x40)) 245*edb47025SStefan Roese 246*edb47025SStefan Roese #define MPP_REG_NUM(GPIO_NUM) (GPIO_NUM / 8) 247*edb47025SStefan Roese #define MPP_MASK(GPIO_NUM) (0xf << 4 * (GPIO_NUM - \ 248*edb47025SStefan Roese (MPP_REG_NUM(GPIO_NUM) * 8))); 249*edb47025SStefan Roese #define GPP_REG_NUM(GPIO_NUM) (GPIO_NUM / 32) 250*edb47025SStefan Roese #define GPP_MASK(GPIO_NUM) (1 << GPIO_NUM % 32) 251*edb47025SStefan Roese 252*edb47025SStefan Roese /* device ID */ 253*edb47025SStefan Roese /* Armada 38x Family */ 254*edb47025SStefan Roese #define MV_6810_DEV_ID 0x6810 255*edb47025SStefan Roese #define MV_6811_DEV_ID 0x6811 256*edb47025SStefan Roese #define MV_6820_DEV_ID 0x6820 257*edb47025SStefan Roese #define MV_6828_DEV_ID 0x6828 258*edb47025SStefan Roese /* Armada 39x Family */ 259*edb47025SStefan Roese #define MV_6920_DEV_ID 0x6920 260*edb47025SStefan Roese #define MV_6928_DEV_ID 0x6928 261*edb47025SStefan Roese 262*edb47025SStefan Roese enum { 263*edb47025SStefan Roese MV_6810, 264*edb47025SStefan Roese MV_6820, 265*edb47025SStefan Roese MV_6811, 266*edb47025SStefan Roese MV_6828, 267*edb47025SStefan Roese MV_NONE, 268*edb47025SStefan Roese MV_6920, 269*edb47025SStefan Roese MV_6928, 270*edb47025SStefan Roese MV_MAX_DEV_ID, 271*edb47025SStefan Roese }; 272*edb47025SStefan Roese 273*edb47025SStefan Roese #define MV_6820_INDEX 0 274*edb47025SStefan Roese #define MV_6810_INDEX 1 275*edb47025SStefan Roese #define MV_6811_INDEX 2 276*edb47025SStefan Roese #define MV_6828_INDEX 3 277*edb47025SStefan Roese 278*edb47025SStefan Roese #define MV_6920_INDEX 0 279*edb47025SStefan Roese #define MV_6928_INDEX 1 280*edb47025SStefan Roese 281*edb47025SStefan Roese #ifdef CONFIG_ARMADA_38X 282*edb47025SStefan Roese #define MAX_DEV_ID_NUM 4 283*edb47025SStefan Roese #else 284*edb47025SStefan Roese #define MAX_DEV_ID_NUM 2 285*edb47025SStefan Roese #endif 286*edb47025SStefan Roese 287*edb47025SStefan Roese #define MV_6820_INDEX 0 288*edb47025SStefan Roese #define MV_6810_INDEX 1 289*edb47025SStefan Roese #define MV_6811_INDEX 2 290*edb47025SStefan Roese #define MV_6828_INDEX 3 291*edb47025SStefan Roese #define MV_6920_INDEX 0 292*edb47025SStefan Roese #define MV_6928_INDEX 1 293*edb47025SStefan Roese 294*edb47025SStefan Roese enum unit_id { 295*edb47025SStefan Roese PEX_UNIT_ID, 296*edb47025SStefan Roese ETH_GIG_UNIT_ID, 297*edb47025SStefan Roese USB3H_UNIT_ID, 298*edb47025SStefan Roese USB3D_UNIT_ID, 299*edb47025SStefan Roese SATA_UNIT_ID, 300*edb47025SStefan Roese QSGMII_UNIT_ID, 301*edb47025SStefan Roese XAUI_UNIT_ID, 302*edb47025SStefan Roese RXAUI_UNIT_ID, 303*edb47025SStefan Roese MAX_UNITS_ID 304*edb47025SStefan Roese }; 305*edb47025SStefan Roese 306*edb47025SStefan Roese struct board_wakeup_gpio { 307*edb47025SStefan Roese u32 board_id; 308*edb47025SStefan Roese int gpio_num; 309*edb47025SStefan Roese }; 310*edb47025SStefan Roese 311*edb47025SStefan Roese enum suspend_wakeup_status { 312*edb47025SStefan Roese SUSPEND_WAKEUP_DISABLED, 313*edb47025SStefan Roese SUSPEND_WAKEUP_ENABLED, 314*edb47025SStefan Roese SUSPEND_WAKEUP_ENABLED_GPIO_DETECTED, 315*edb47025SStefan Roese }; 316*edb47025SStefan Roese 317*edb47025SStefan Roese /* 318*edb47025SStefan Roese * GPIO status indication for Suspend Wakeup: 319*edb47025SStefan Roese * If suspend to RAM is supported and GPIO inidcation is implemented, 320*edb47025SStefan Roese * set the gpio number 321*edb47025SStefan Roese * If suspend to RAM is supported but GPIO indication is not implemented 322*edb47025SStefan Roese * set '-2' 323*edb47025SStefan Roese * If suspend to RAM is not supported set '-1' 324*edb47025SStefan Roese */ 325*edb47025SStefan Roese #ifdef CONFIG_CUSTOMER_BOARD_SUPPORT 326*edb47025SStefan Roese #ifdef CONFIG_ARMADA_38X 327*edb47025SStefan Roese #define MV_BOARD_WAKEUP_GPIO_INFO { \ 328*edb47025SStefan Roese {A38X_CUSTOMER_BOARD_ID0, -1 }, \ 329*edb47025SStefan Roese {A38X_CUSTOMER_BOARD_ID0, -1 }, \ 330*edb47025SStefan Roese }; 331*edb47025SStefan Roese #else 332*edb47025SStefan Roese #define MV_BOARD_WAKEUP_GPIO_INFO { \ 333*edb47025SStefan Roese {A39X_CUSTOMER_BOARD_ID0, -1 }, \ 334*edb47025SStefan Roese {A39X_CUSTOMER_BOARD_ID0, -1 }, \ 335*edb47025SStefan Roese }; 336*edb47025SStefan Roese #endif /* CONFIG_ARMADA_38X */ 337*edb47025SStefan Roese 338*edb47025SStefan Roese #else 339*edb47025SStefan Roese 340*edb47025SStefan Roese #ifdef CONFIG_ARMADA_38X 341*edb47025SStefan Roese #define MV_BOARD_WAKEUP_GPIO_INFO { \ 342*edb47025SStefan Roese {RD_NAS_68XX_ID, -2 }, \ 343*edb47025SStefan Roese {DB_68XX_ID, -1 }, \ 344*edb47025SStefan Roese {RD_AP_68XX_ID, -2 }, \ 345*edb47025SStefan Roese {DB_AP_68XX_ID, -2 }, \ 346*edb47025SStefan Roese {DB_GP_68XX_ID, -2 }, \ 347*edb47025SStefan Roese {DB_BP_6821_ID, -2 }, \ 348*edb47025SStefan Roese {DB_AMC_6820_ID, -2 }, \ 349*edb47025SStefan Roese }; 350*edb47025SStefan Roese #else 351*edb47025SStefan Roese #define MV_BOARD_WAKEUP_GPIO_INFO { \ 352*edb47025SStefan Roese {A39X_RD_69XX_ID, -1 }, \ 353*edb47025SStefan Roese {A39X_DB_69XX_ID, -1 }, \ 354*edb47025SStefan Roese }; 355*edb47025SStefan Roese #endif /* CONFIG_ARMADA_38X */ 356*edb47025SStefan Roese #endif /* CONFIG_CUSTOMER_BOARD_SUPPORT */ 357*edb47025SStefan Roese 358*edb47025SStefan Roese u32 mv_board_tclk_get(void); 359*edb47025SStefan Roese u32 mv_board_id_get(void); 360*edb47025SStefan Roese u32 mv_board_id_index_get(u32 board_id); 361*edb47025SStefan Roese u32 sys_env_unit_max_num_get(enum unit_id unit); 362*edb47025SStefan Roese enum suspend_wakeup_status sys_env_suspend_wakeup_check(void); 363*edb47025SStefan Roese u8 sys_env_device_rev_get(void); 364*edb47025SStefan Roese u32 sys_env_device_id_get(void); 365*edb47025SStefan Roese u16 sys_env_model_get(void); 366*edb47025SStefan Roese struct dlb_config *sys_env_dlb_config_ptr_get(void); 367*edb47025SStefan Roese u32 sys_env_get_cs_ena_from_reg(void); 368*edb47025SStefan Roese 369*edb47025SStefan Roese #endif /* _SYS_ENV_LIB_H */ 370