/* 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); } }