Files
banban/ql-config/soc_platform/preboot_boot2/drivers/include/efuse.h
T

140 lines
5.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef _EFUSE_H
#define _EFUSE_H
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* define fuse value for psram devie
* PSRAM Type Code:
* AP 16M 00000
* Winbond 16M 00001
* AP 8M + 8M 00010
* Winbond 8M + 8M 00100
* AP 8M 00101
* Winbond 8M 00110
* Winbond 250MHz 8M 00111
* AP UHS 8M + UHS 8M 01000
* Winbond 250MHz 8M + 250MHz 8M 01001
*/
#define AP_16M 0
#define WB_16M 1
#define AP_8M8M 2
#define UNIIC_16M 3
#define WB_8M8M 4
#define AP_8M 5
#define WB_8M 6
#define WB_250MHZ_8M 7
#define AP_UHS_8M8M 8
#define WB_250MHZ_8M8M 9
#define AP_250MHZ_8M8M 10
#define WB_XCCELA_8M 11
#define WB_XCCELA_8M8M 12
#define WB_4M 13
#define AP_4M 14
#define WB_XCCELA_4M 15
#define AP_250MHZ_8M 16
#define WB_32M 17
#define AP_250MHZ_16M 18
#define WB_250MHZ_16M 19
#define UNIIC_4M 20
#define GD_4M 21
#define GD_8M 22
#define WB_8M_HYPER21 23
#define WB_8M8M_HYPER21 24
typedef enum {
NO_PHY_AP_4M, /* 0 */
NO_PHY_WB_4M, /* 1 */
NO_PHY_AP_8M, /* 2 */
NO_PHY_WB_8M, /* 3 */
NO_PHY_AP_16M, /* 4 */
NO_PHY_WB_16M, /* 5 */
NO_PHY_UNIIC_16M, /* 6 */
NO_PHY_UNIIC_4M, /* 7 */
NO_PHY_PSRAM_TYPE_MAX /* 8 */
} NO_PHY_PSRAM_TYPE_T;
#define AP_16M_NAME "AP_16M" /* 0 */
#define WB_16M_NAME "WB_16M" /* 1 */
#define AP_8M8M_NAME "AP_8M8M" /* 2 */
#define UNIIC_16M_NAME "UNIIC_16M" /* 3 */
#define WB_8M8M_NAME "WB_8M8M" /* 4 */
#define AP_8MB_NAME "AP_8M" /* 5 */
#define WB_8MB_NAME "WB_8M" /* 6 */
#define WB_250MHZ_8M_NAME "WB_250MHZ_8M" /* 7 */
#define AP_UHS_8M8M_NAME "AP_UHS_8M8M" /* 8 */
#define WB_250MHZ_8M8M_NAME "WB_250MHZ_8M8M" /* 9 */
#define AP_250MHZ_8M8M_NAME "AP_250MHZ_8M8M" /* 10 */
#define WB_XCCELA_8M_NAME "WB_XCCELA_8M" /* 11 */
#define WB_XCCELA_8M8M_NAME "WB_XCCELA_8M8M" /* 12 */
#define WB_4MB_NAME "WB_4M" /* 13 */
#define AP_4MB_NAME "AP_4M" /* 14 */
#define WB_XCCELA_4M_NAME "WB_XCCELA_4M" /* 15 */
#define AP_250MHZ_8M_NAME "AP_250MHZ_8M" /* 16 */
#define WB_32M_NAME "WB_32M" /* 17 */
#define AP_250MHZ_16M_NAME "AP_250MHZ_16M" /* 18 */
#define WB_250MHZ_16M_NAME "WB_250MHZ_16M" /* 19 */
#define UNIIC_4M_NAME "UNIIC_4M" /* 20 */
#define GD_4M_NAME "GD_4M" /* 21 */
#define GD_8M_NAME "GD_8M" /* 22 */
/* 3660 CR5 boot by mcu, not in preboot, preboot only read psram type for scrtach reg, and set prop */
#define WB_8M_HYPER21_NAME "WB_8M_HYPER21" /* 23 */
#define WB_8M8M_HYPER21_NAME "WB_8M8M_HYPER21" /* 24 */
/* psram_crane_mcu.h defined psram type id instead of efuse.h */
#define AP256Mb_1_2V_X16_CS0_NAME "AP256Mb_1_2V_X16_CS0" /* 0 */
#define AP256Mb_1_2V_X16_CS1_NAME "AP256Mb_1_2V_X16_CS1" /* 1 */
#define AP256Mb_1_2V_X16_CS0_CS1_NAME "AP256Mb_1_2V_X16_CS0_CS1" /* 2 */
#define WB256Mb_1_8V_X16_CS0_NAME "WB256Mb_1_8V_X16_CS0" /* 3 */
#define WB256Mb_1_8V_X16_CS1_NAME "WB256Mb_1_8V_X16_CS1" /* 4 */
#define WB256Mb_1_8V_X16_CS0_CS1_NAME "WB256Mb_1_8V_X16_CS0_CS1" /* 5 */
#define PSRAM_SIZE_4M 0x400000
#define PSRAM_SIZE_8M 0x800000
#define PSRAM_SIZE_16M 0x1000000
#define PSRAM_SIZE_32M 0x2000000
/* software defined ddr type, can diff with fuse value for ddr device:
* DDR Type Code:
* CraneGT use DDR, connect flash instead of SIP
* 3605S: DDR 32MB + Nor flash 16MB
* 3605E: DDR 64MB + Nand flash 64MB
*/
typedef enum {
DRAM_AP_32M, /* 0 / * 3605S-111 * / */
DRAM_UniIC_32M, /* 1 / * 3605S-110 * / */
DRAM_AP_64M, /* 2 / * 3605E-110 * / */
DSRAM_TYPE_MAX /* 3 */
} DRAM_TYPE_T;
#define DRAM_AP_32M_NAME "DRAM_AP_32M" /*Bytes */
#define DRAM_AP_64M_NAME "DRAM_AP_64M"
#define DRAM_UniIC_32M_NAME "DRAM_UniIC_32M"
#define DRAM_UniIC_64M_NAME "DRAM_UniIC_64M"
/* reversed fuse ddr bits, but not use fuse now, use autodetect */
#define DRAM_SIZE_32M 0x2000000
#define DRAM_SIZE_64M 0x4000000
#define DRAM_SIZE_128M 0x8000000
unsigned int efuse_get_psram_version(void);
unsigned efuse_cranew_mcu_psram(void);
unsigned int get_psram_size(void);
unsigned int get_ddr_size(void);
void fuse_read_lotid(void);
int fuse_trust_boot_enabled(void);
bool is_chip_support_auto_detect(void);
bool efuse_modem_type_is_radio(void);
#ifdef __cplusplus
}
#endif
#endif /* _EFUSE_H */
/** @} */