static ssize_t store_mst_ftmdrv(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { u64 r0 = 0, r1 = 0, r2 = 0, r3 = 0; char test_result[256]={0,}; int result=0; sscanf(buf, "%88s\n", test_result); printk(KERN_ERR "MST Store test result : %s\n", test_result); /* #if defined(CONFIG_MST_NOBLE_TARGET) || defined(CONFIG_MST_ZEN_TARGET) printk("[MST] Data Value : %d, %d, %d, %d\n", mst_en, mst_pd, mst_md, mst_phase_en); #else printk("[MST] Data Value : %d, %d, %d\n", mst_en, mst_pd, mst_md); #endif */ switch(test_result[0]){ case '1': of_mst_hw_onoff(1); printk(KERN_INFO "%s\n", __func__); printk(KERN_INFO "MST_FTM_DRV]]] Track1 data transmit\n"); //Will Add here r0 = (0x8300000f); r1 = 1; result = exynos_smc(r0, r1, r2, r3); if(result == 0){ printk(KERN_INFO "MST_FTM_DRV]]] Track1 data sent : %d\n", result); }else if(result == -1){ printk(KERN_INFO "MST_FTM_DRV]]] Invalid Track number : %d\n", result); }else{ printk(KERN_INFO "MST_FTM_DRV]]] Invalid SMC return : %d\n", result); } of_mst_hw_onoff(0); break; case '2': of_mst_hw_onoff(1); printk(KERN_INFO "%s\n", __func__); printk(KERN_INFO "MST_FTM_DRV]]] Track2 data transmit\n"); //Will Add here r0 = (0x8300000f); r1 = 2; result = exynos_smc(r0, r1, r2, r3); if(result == 0){ printk(KERN_INFO "MST_FTM_DRV]]] Track1 data sent : %d\n", result); }else if(result == -1){ printk(KERN_INFO "MST_FTM_DRV]]] Invalid Track number : %d\n", result); }else{ printk(KERN_INFO "MST_FTM_DRV]]] Invalid SMC return : %d\n", result); } of_mst_hw_onoff(0); break; case '3': #if 0 case_i = 1; printk("MST send track1 data, case_i : %d\n", case_i); if (transmit_mst_data(case_i)) { printk("track1 data is sent\n"); } mdelay(300); case_i = 2; printk("MST send track2 data, case_i : %d\n", case_i); if (transmit_mst_data(case_i)) { printk("track2 data is sent\n"); } #endif break; case '4': if(escape_loop){ wake_lock_init(&mst_wakelock, WAKE_LOCK_SUSPEND, "mst_wakelock"); wake_lock(&mst_wakelock); } escape_loop = 0; while( 1 ) { if(escape_loop == 1) break; of_mst_hw_onoff(1); mdelay(10); printk("MST_FTM_DRV]]] Track2 data transmit to infinity\n"); r0 = (0x8300000f); r1 = 2; result = exynos_smc(r0, r1, r2, r3); printk(KERN_INFO "MST_FTM_DRV]]] Track2 data transmit to infinity after smc : %d\n", result); of_mst_hw_onoff(0); mdelay(1000); } break; case '5': if(!escape_loop) wake_lock_destroy(&mst_wakelock); escape_loop = 1; printk("MST escape_loop value = 1\n"); break; case '6': of_mst_hw_onoff(1); printk(KERN_INFO "%s\n", __func__); printk(KERN_INFO "MST_LDO_DRV]]] Track3 data transmit\n"); //Will Add here r0 = (0x8300000f); r1 = 3; result = exynos_smc(r0, r1, r2, r3); printk(KERN_INFO "MST_LDO_DRV]]] Track3 data sent : %d\n", result); of_mst_hw_onoff(0); break; default: printk("MST data send failed\n"); break; } of_mst_hw_onoff(0); return count; }
static ssize_t store_mst_drv(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { u64 r0 = 0, r1 = 0, r2 = 0, r3 = 0; char test_result[256]={0,}; int result=0; sscanf(buf, "%20s\n", test_result); printk(KERN_ERR "MST Store test result : %s\n", test_result); switch(test_result[0]){ case '1': of_mst_hw_onoff(1); break; case '0': of_mst_hw_onoff(0); break; case '2': of_mst_hw_onoff(1); printk(KERN_INFO "%s\n", __func__); printk(KERN_INFO "MST_LDO_DRV]]] Track1 data transmit\n"); //Will Add here r0 = (0x8300000f); r1 = 1; result = exynos_smc(r0, r1, r2, r3); printk(KERN_INFO "MST_LDO_DRV]]] Track1 data sent : %d\n", result); of_mst_hw_onoff(0); break; case '3': of_mst_hw_onoff(1); printk(KERN_INFO "%s\n", __func__); printk(KERN_INFO "MST_LDO_DRV]]] Track2 data transmit\n"); //Will Add here r0 = (0x8300000f); r1 = 2; result = exynos_smc(r0, r1, r2, r3); printk(KERN_INFO "MST_LDO_DRV]]] Track2 data sent : %d\n", result); of_mst_hw_onoff(0); break; case '4': if(escape_loop){ wake_lock_init(&mst_wakelock, WAKE_LOCK_SUSPEND, "mst_wakelock"); wake_lock(&mst_wakelock); } escape_loop = 0; while( 1 ) { if(escape_loop == 1) break; of_mst_hw_onoff(1); mdelay(10); printk("MST_LDO_DRV]]] Track2 data transmit to infinity until stop button pushed\n"); r0 = (0x8300000f); r1 = 2; result = exynos_smc(r0, r1, r2, r3); printk(KERN_INFO "MST_LDO_DRV]]] Track2 data transmit to infinity after smc : %d\n", result); of_mst_hw_onoff(0); mdelay(1000); } break; case '5': if(!escape_loop) wake_lock_destroy(&mst_wakelock); escape_loop = 1; printk("MST escape_loop value = 1\n"); break; default: printk(KERN_ERR "MST invalid value : %s\n", test_result); break; } return count; }