Ejemplo n.º 1
0
/* this api handle diag command(fusing check command) from ATD
 * if fusing value 0 ==> is not fused
 * if fusing value 1 ==> fused (secure boot enable, jtag disable, oem config, hw secondary key, RW permission)
 */
static ssize_t qfusing_show(struct device *dev, struct device_attribute *attr, char *buf)
{
	u32 verification_check_value = 0;

	printk(KERN_INFO "%s start\n", __func__);

	verification_check_value = qfprom_verification_blow_data();
	printk(KERN_INFO "verification_check_value = %x\n", verification_check_value);

	if (verification_check_value == FUSING_COMPLETED_STATE) {
		verification_check_value = 1;
		printk(KERN_INFO "%s: verification success\n", __func__);
		printk(KERN_INFO "%s end\n", __func__);
		return sprintf(buf, "%x\n", verification_check_value);
	} else{
		verification_check_value = 0;
		printk(KERN_ERR "%s: verification fail 1\n", __func__);
	}
	/* defensive code */
	verification_check_value = qfprom_verification_blow_data();
	printk(KERN_INFO "%s: verification_check_value = %x\n", __func__, verification_check_value);

	if (verification_check_value == FUSING_COMPLETED_STATE) {
		verification_check_value = 1;
		printk(KERN_INFO "%s: verification success\n", __func__);
		printk(KERN_INFO "%s end\n", __func__);
		return sprintf(buf, "%x\n", verification_check_value);
	} else{
		verification_check_value = 0;
		printk(KERN_ERR "%s: verification fail 2\n", __func__);
	}
	/* defensive code */
	verification_check_value = qfprom_verification_blow_data();
	printk(KERN_INFO "%s, verification_check_value = %x\n", __func__, verification_check_value);

	if (verification_check_value == FUSING_COMPLETED_STATE) {
		verification_check_value = 1;
		printk(KERN_INFO "%s: verification success\n", __func__);
		printk(KERN_INFO "%s end\n", __func__);
		return sprintf(buf, "%x\n", verification_check_value);
	} else{
		verification_check_value = 0;
		printk(KERN_ERR "%s: verification fail 3\n", __func__);
		printk(KERN_ERR "%s end\n", __func__);
		return sprintf(buf, "%x\n", verification_check_value);
	}
}
static ssize_t qfusing_verification_show(struct device* dev, struct device_attribute* attr, char* buf)
{
	u32 verification_check_value = 0;
	verification_check_value = qfprom_verification_blow_data();
	printk("verification_check_value = %x \n", verification_check_value);

	if(verification_check_value == FUSING_COMPLETED_STATE){
		
		printk("%s: verification success\n", __func__);
		return sprintf(buf,"%x\n",verification_check_value);
	}else{
		
		printk("%s: verification fail 1\n", __func__);
	}
	
	verification_check_value = qfprom_verification_blow_data();
	printk("verification_check_value = %x \n", verification_check_value);

	if(verification_check_value == FUSING_COMPLETED_STATE){
		
		printk("%s: verification success\n", __func__);
		return sprintf(buf,"%x\n",verification_check_value);
	}else{
		printk("%s: verification fail 2\n", __func__);
	}
	verification_check_value = qfprom_verification_blow_data();
	printk("verification_check_value = %x \n", verification_check_value);
	
	if(verification_check_value == FUSING_COMPLETED_STATE){
		printk("%s: verification success\n", __func__);
		return sprintf(buf,"%x\n",verification_check_value);
	}else{
		printk("%s: verification fail 3\n", __func__);
		return sprintf(buf, "%x\n", verification_check_value);
	}
	

}