Пример #1
0
int keymanage_efuse_init(const char *buf, int len)
{
    char ver;
    int ret = 0;

    const char* dtbLoadAddr = getenv("dtb_mem_addr");
    if (!dtbLoadAddr) {
        setenv("dtb_mem_addr", simple_itoa(CONFIG_SYS_SDRAM_BASE + (16U<<20)));
    }
    dtbLoadAddr = (char*)simple_strtoul(dtbLoadAddr, NULL, 0);

    ret = efuse_usr_api_init_dtb(dtbLoadAddr);
    if (ret) {
        KM_ERR("efuse init failed\n");
        return __LINE__;
    }

    ver = unifykey_get_efuse_version();
    if (ver == 0) {
        KM_DBG("efuse version not cfg\n");
        return 0;
    }

    //TODO: program the efuse version

    return ret;
}
Пример #2
0
static int key_efuse_init(char *buf,unsigned int len)
{
#ifdef CONFIG_EFUSE
	char ver;
	int ret;
	char title[] = "version";
	efuseinfo_item_t info;
	loff_t pos;
	if(efuse_getinfo(title, &info) < 0)
		return -EINVAL;
	pos = info.offset;
	ret = efuse_chk_written(pos, info.data_len);
	if(ret < 0){
		return -EINVAL;
	}
	if(ret > 0){
		return 0;// efuse version was written
	}
	if(!(info.we)){
		printf("%s write unsupport now. \n", title);
		return -EACCES;
	}
	ver = unifykey_get_efuse_version();
	if(ver == 0){
		printf("not config efuse version\n");
		return 0;
	}
	else{
		if(efuse_write_usr((char*)&ver, 1, &pos)<0){
			printf("error: efuse write fail.\n");
			return -1;
		}
		else{
			printf("%s written done.\n", info.title);
			return 0;
		}
	}
#else
	return 0;
#endif
}