diff -drupN a/include/linux/sunxi-sid.h b/include/linux/sunxi-sid.h --- a/include/linux/sunxi-sid.h 1970-01-01 03:00:00.000000000 +0300 +++ b/include/linux/sunxi-sid.h 2022-06-12 05:28:14.000000000 +0300 @@ -0,0 +1,149 @@ +/* + * linux/sunxi-sid.h + * + * Copyright(c) 2014-2016 Allwinnertech Co., Ltd. + * http://www.allwinnertech.com + * + * Author: sunny + * + * allwinner sunxi soc chip version and chip id manager. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + +#ifndef __SUNXI_MACH_SUNXI_CHIP_H +#define __SUNXI_MACH_SUNXI_CHIP_H + +#include +/* About ChipID of version */ + +#define SUNXI_CHIP_REV(p, v) (p + v) + +#define SUNXI_CHIP_SUN8IW6 (0x16730000) +#define SUN8IW6P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW6, 0x0000) +#define SUN8IW6P1_REV_B SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW6, 0x0001) + +#define SUNXI_CHIP_SUN8IW7 (0x16800000) +#define SUN8IW7P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW7, 0x0000) +#define SUN8IW7P1_REV_B SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW7, 0x0001) +#define SUN8IW7P2_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW7, 0x0100) +#define SUN8IW7P2_REV_B SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW7, 0x0101) + +#define SUNXI_CHIP_SUN8IW11 (0x17010000) +#define SUN8IW11P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW11, 0x0000) +#define SUN8IW11P2_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW11, 0x0001) +#define SUN8IW11P3_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW11, 0x0011) +#define SUN8IW11P4_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW11, 0x0101) + +#define SUNXI_CHIP_SUN8IW12 (0x17210000) +#define SUN8IW12P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW12, 0x0000) + +#define SUNXI_CHIP_SUN8IW15 (0x17550000) +#define SUN8IW15P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW15, 0x0000) + +#define SUNXI_CHIP_SUN8IW16 (0x18160000) +#define SUN8IW16P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW16, 0x0000) +#define SUN8IW16P1_REV_B SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW16, 0x0001) + +#define SUNXI_CHIP_SUN8IW19 (0x18170000) +#define SUN8IW19P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW19, 0x0000) + +#define SUNXI_CHIP_SUN8IW17 (0x17080000) +#define SUN8IW17P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW17, 0x0000) + +#define SUNXI_CHIP_SUN8IW18 (0x18210000) +#define SUN8IW18P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN8IW18, 0x0000) + +#define SUNXI_CHIP_SUN50IW1 (0x16890000) +#define SUN50IW1P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN50IW1, 0x0) + +#define SUNXI_CHIP_SUN50IW2 (0x17180000) +#define SUN50IW2P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN50IW2, 0x0) + +#define SUNXI_CHIP_SUN50IW3 (0x17190000) +#define SUN50IW3P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN50IW3, 0x0) + +#define SUNXI_CHIP_SUN50IW6 (0x17280000) +#define SUN50IW6P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN50IW6, 0x0) + +#define SUNXI_CHIP_SUN50IW9 (0x18230000) +#define SUN50IW9P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN50IW9, 0x0) + +#define SUNXI_CHIP_SUN50IW10 (0x18550000) +#define SUN50IW10P1_REV_A SUNXI_CHIP_REV(SUNXI_CHIP_SUN50IW10, 0x0) + +/* The key info in Efuse */ + +#define EFUSE_CHIPID_NAME "chipid" +#define EFUSE_BROM_CONF_NAME "brom_conf" +#define EFUSE_BROM_TRY_NAME "brom_try" +#define EFUSE_THM_SENSOR_NAME "thermal_sensor" +#define EFUSE_FT_ZONE_NAME "ft_zone" +#define EFUSE_TV_OUT_NAME "tvout" +#define EFUSE_TVE_NAME "tve" +#define EFUSE_OEM_NAME "oem" +#define EFUSE_ANTI_BLUSH_NAME "anti_blushing" + +#define EFUSE_PSENSOR_NAME "psensor" +#define EFUSE_DDR_CFG_NAME "ddr_cfg" +#define EFUSE_LDOA_NAME "ldoa" +#define EFUSE_LDOB_NAME "ldob" +#define EFUSE_AUDIO_BIAS_NAME "audio_bias" +#define EFUSE_GAMMA_NAME "gamma" +#define EFUSE_WR_PROTECT_NAME "write_protect" +#define EFUSE_RD_PROTECT_NAME "read_protect" +#define EFUSE_IN_NAME "in" +#define EFUSE_ID_NAME "id" +#define EFUSE_ROTPK_NAME "rotpk" +#define EFUSE_SSK_NAME "ssk" +#define EFUSE_RSSK_NAME "rssk" +#define EFUSE_HDCP_HASH_NAME "hdcp_hash" +#define EFUSE_HDCP_PKF_NAME "hdcp_pkf" +#define EFUSE_HDCP_DUK_NAME "hdcp_duk" +#define EFUSE_EK_HASH_NAME "ek_hash" +#define EFUSE_SN_NAME "sn" +#define EFUSE_NV1_NAME "nv1" +#define EFUSE_NV2_NAME "nv2" +#define EFUSE_BACKUP_KEY_NAME "backup_key" +#define EFUSE_BACKUP_KEY2_NAME "backup_key2" +#define EFUSE_TCON_PARM_NAME "tcon_parm" +#define EFUSE_RSAKEY_HASH_NAME "rsakey_hash" +#define EFUSE_RENEW_NAME "renewability" +#define EFUSE_OPT_ID_NAME "operator_id" +#define EFUSE_LIFE_CYCLE_NAME "life_cycle" +#define EFUSE_JTAG_SECU_NAME "jtag_security" +#define EFUSE_JTAG_ATTR_NAME "jtag_attr" +#define EFUSE_CHIP_CONF_NAME "chip_config" +#define EFUSE_RESERVED_NAME "reserved" +#define EFUSE_RESERVED2_NAME "reserved2" + +#define SUNXI_KEY_NAME_LEN 32 + +#define SID_PRCTL 0x40 +#define SID_RDKEY 0x60 +#define SID_OP_LOCK 0xAC + +#define EFUSE_CHIPID_BASE "allwinner,sunxi-chipid" +#define EFUSE_SID_BASE "allwinner,sunxi-sid" + +#define sunxi_efuse_read(key_name, read_buf) \ + sunxi_efuse_readn(key_name, read_buf, 1024) + +/* The interface functions */ + +unsigned int sunxi_get_soc_ver(void); +int sunxi_get_soc_chipid(unsigned char *chipid); +int sunxi_get_soc_chipid_str(char *chipid); +int sunxi_get_soc_ft_zone_str(char *serial); +int sunxi_get_soc_rotpk_status_str(char *status); +int sunxi_get_pmu_chipid(unsigned char *chipid); +int sunxi_get_serial(unsigned char *serial); +unsigned int sunxi_get_soc_bin(void); +int sunxi_soc_is_secure(void); +s32 sunxi_get_platform(s8 *buf, s32 size); +s32 sunxi_efuse_readn(void *key_name, void *buf, u32 n); + +#endif /* __SUNXI_MACH_SUNXI_CHIP_H */