blob: c523d7869f2f3cd3e7eb4e9b3dcf8215d5d930eb [file] [log] [blame]
/*
* Copyright (c) 2021 Microchip Technology Inc. and its subsidiaries.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef _MEC_GLOBAL_CFG_H
#define _MEC_GLOBAL_CFG_H
#include <stdint.h>
#include <stddef.h>
/*
* Device and Revision ID 32-bit register
* b[7:0] = Revision
* b[15:8] = Device Sub-ID
* b[31:16] = Device ID
* This register can be accesses as bytes or a single 32-bit read from
* the EC. Host access byte access via the Host visible configuration
* register space at 0x2E/0x2F (default).
*/
#define MCHP_GCFG_DEV_ID_REG32_OFS 28u
#define MCHP_GCFG_DEV_ID_REG_MASK GENMASK(31, 0)
#define MCHP_GCFG_REV_ID_POS 0
#define MCHP_GCFG_DID_REV_MASK GENMASK(7, 0)
#define MCHP_GCFG_DID_SUB_ID_POS 8
#define MCHP_GCFG_DID_SUB_ID_MASK GENMASK(15, 8)
#define MCHP_GCFG_DID_DEV_ID_POS 16
#define MCHP_GCFG_DID_DEV_ID_MASK GENMASK(31, 16)
/* Byte[0] at offset 0x1c is the 8-bit revision ID */
#define MCHP_GCFG_REV_A1 2u
#define MCHP_GCFG_REV_B0 3u
/*
* Byte[1] at offset 0x1D is the 8-bit Sub-ID
* bits[3:0] = package type
* bits[7:4] = chip family
*/
#define MCHP_GCFG_SUB_ID_OFS 0x1du
#define MCHP_GCFG_SUB_ID_PKG_POS 0
#define MCHP_GCFG_SUB_ID_PKG_MASK GENMASK(3, 0)
#define MCHP_GCFG_SUB_ID_PKG_UNDEF 0u
#define MCHP_GCFG_SUB_ID_PKG_64_PIN 1u
#define MCHP_GCFG_SUB_ID_PKG_84_PIN 2u
#define MCHP_GCFG_SUB_ID_PKG_128_PIN 3u
#define MCHP_GCFG_SUB_ID_PKG_144_PIN 4u
#define MCHP_GCFG_SUB_ID_PKG_176_PIN 7u
/* chip family field */
#define MCHP_GCFG_SUB_ID_FAM_POS 4u
#define MCHP_GCFG_SUB_ID_FAM_MASK GENMASK(7, 4)
#define MCHP_GCFG_SUB_ID_FAM_UNDEF 0u
#define MCHP_GCFG_SUB_ID_FAM_1 0x10u
#define MCHP_GCFG_SUB_ID_FAM_2 0x20u
#define MCHP_GCFG_SUB_ID_FAM_3 0x30u
#define MCHP_GCFG_SUB_ID_FAM_4 0x40u
#define MCHP_GCFG_SUB_ID_FAM_5 0x50u
#define MCHP_GCFG_SUB_ID_FAM_6 0x60u
#define MCHP_GCFG_SUB_ID_FAM_7 0x70u
#define MCHP_GCFG_DEV_ID_LSB_OFS 0x1eu
#define MCHP_GCFG_DEV_ID_MSB_OFS 0x1fu
#define MCHP_GCFG_DEV_ID_172X 0x0022u
#define MCHP_GCFG_DEV_ID_172X_LSB 0x22u
#define MCHP_GCFG_DEV_ID_172X_MSB 0x00u
/* SZ 144-pin package parts */
#define MCHP_GCFG_DEVID_1723_144 0x00223400u
#define MCHP_GCFG_DEVID_1727_144 0x00227400u
/* LJ 176-pin package parts */
#define MCHP_GCFG_DID_1721_176 0x00222700u
#define MCHP_GCFG_DID_1723_176 0x00223700u
#define MCHP_GCFG_DID_1727_176 0x00227700u
/* Legacy Device ID value */
#define MCHP_CCFG_LEGACY_DID_REG_OFS 0x20u
#define MCHP_GCFG_LEGACY_DEV_ID 0xfeu
/* Host access via configuration port (default I/O locations 0x2E/0x2F) */
#define MCHP_HOST_CFG_INDEX_IO_DFLT 0x2eu
#define MCHP_HOST_CFG_DATA_IO_DFLT 0x2fu
#define MCHP_HOST_CFG_UNLOCK 0x55u
#define MCHP_HOST_CFG_LOCK 0xaau
/* Logical Device Configuration Indices */
#define MCHP_HOST_CFG_LDN_IDX 7u
#define MCHP_HOST_CFG_LD_ACTIVATE_IDX 0x30u
#define MCHP_HOST_CFG_LD_BASE_ADDR_IDX 0x34u
#define MCHP_HOST_CFG_LD_CFG_SEL_IDX 0xf0u
/* Global Configuration Registers */
struct global_cfg_regs {
volatile uint8_t RSVD0[2];
volatile uint8_t TEST02;
volatile uint8_t RSVD1[4];
volatile uint8_t LOG_DEV_NUM;
volatile uint8_t RSVD2[20];
volatile uint32_t DEV_REV_ID;
volatile uint8_t LEGACY_DEV_ID;
volatile uint8_t RSVD3[14];
};
#endif /* #ifndef _MEC_GLOBAL_CFG_H */