static int test_write_block(const char *val, struct kernel_param *kp) { int i; int err; /* LGE_CHANGE_S [[email protected]] 2010-08-22, merge First Boot Complete Test from VS660 */ unsigned char *test_string; unsigned long flag=0; // LGE_CHANGE [[email protected]] 2010-08-23, do something after cold boot struct diagcmd_dev *diagpdev; flag = simple_strtoul(val,NULL,10); if(5 == flag) test_string="FACT_RESET_5"; else if(6 == flag) test_string="FACT_RESET_6"; // LGE_CHANGE [[email protected]] 2010-09-04, for RTN and Factory reset else if (3 == flag) test_string="FACT_RESET_3"; else return -1; test_init(); test_erase_block(); printk(KERN_INFO"%s: writing block: flag = %lu\n", __func__, flag); /* LGE_CHANGE_E [[email protected]] 2010-08-22, merge First Boot Complete Test from VS660 */ for (i = 0; i < ebcnt; i++) { if (bbt[i]) continue; else break; } #ifdef LGE_RETRY_MTD_DIRECT_ACCESS err = lge_retry_write_block(i, test_string, strlen(test_string)); #else err = lge_write_block(i, test_string, strlen(test_string)); #endif if (err) { printk(KERN_INFO"%s: write %u block fail\n", __func__, i); return err; } printk(KERN_INFO"%s: write %u block\n", __func__, i); // LGE_CHANGE [[email protected]] 2010-08-23, do something after cold boot if (flag == 5) { diagpdev = diagcmd_get_dev(); if (diagpdev != NULL) { update_diagcmd_state(diagpdev, "ADBSET", 0); } } return 0; }
/* ========================================================================== ===========================================================================*/ PACK (void *)LGF_TestMode ( PACK (void *)req_pkt_ptr, /* pointer to request packet */ uint16 pkt_len ) /* length of request packet */ { DIAG_TEST_MODE_F_req_type *req_ptr = (DIAG_TEST_MODE_F_req_type *) req_pkt_ptr; DIAG_TEST_MODE_F_rsp_type *rsp_ptr; unsigned int rsp_len; testmode_func_type func_ptr= NULL; int nIndex = 0; diagpdev = diagcmd_get_dev(); if(req_ptr->sub_cmd_code == TEST_MODE_FACTORY_RESET_CHECK_TEST) rsp_len = sizeof(DIAG_TEST_MODE_F_rsp_type) - sizeof(test_mode_rsp_type); else rsp_len = sizeof(DIAG_TEST_MODE_F_rsp_type); rsp_ptr = (DIAG_TEST_MODE_F_rsp_type *)diagpkt_alloc(DIAG_TEST_MODE_F, rsp_len); if (!rsp_ptr) return 0; rsp_ptr->sub_cmd_code = req_ptr->sub_cmd_code; rsp_ptr->ret_stat_code = TEST_OK_S; // ÃʱⰪ for( nIndex = 0 ; nIndex < TESTMODE_MSTR_TBL_SIZE ; nIndex++)
static int lge_diag_ioctl(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg) { struct diag_cmd_data ctrl_buf; int ret; diagpdev = diagcmd_get_dev(); switch (cmd) { case DIAG_IOCTL_UPDATE: if(copy_from_user(&ctrl_buf , arg ,sizeof(struct diag_cmd_data))){ printk(KERN_INFO "%s: copy_from_user error.\n", __func__); ret = -EFAULT; } printk(KERN_INFO "%d: ctrl_buf.sub_cmd_code\n", ctrl_buf.sub_cmd_code); printk(KERN_INFO "%d: ctrl_buf.state\n", ctrl_buf.state); switch(ctrl_buf.sub_cmd_code){ /* Test Mode */ case TEST_MODE_MOTOR: update_diagcmd_state(diagpdev,"MOTOR", ctrl_buf.state); break; case TEST_MODE_ACOUSTIC: update_diagcmd_state(diagpdev,"ACOUSTIC", ctrl_buf.state); break; case TEST_MODE_CAM: update_diagcmd_state(diagpdev,"CAMERA", ctrl_buf.state); break; case TEST_MODE_BLUETOOTH_TEST: update_diagcmd_state(diagpdev,"BT_TEST_MODE", ctrl_buf.state); break; case TEST_MODE_MP3_TEST: update_diagcmd_state(diagpdev,"MP3", ctrl_buf.state); break; /* LGE_CHANGE_S [[email protected]] [2011.05.05] [B project] added for accelerometer testmode [START] */ case TEST_MODE_ACCEL_SENSOR_TEST: update_diagcmd_state(diagpdev,"ACCEL", ctrl_buf.state); break; /* LGE_CHANGE_E [[email protected]] [2011.05.05] [B project] added for accelerometer testmode [END] */ case TEST_MODE_FM_TRANCEIVER_TEST: update_diagcmd_state(diagpdev,"FM_TRANCEIVER", ctrl_buf.state); break; case TEST_MODE_SLEEP_MODE_TEST: update_diagcmd_state(diagpdev,"SLEEP_MODE", ctrl_buf.state); break; case TEST_MODE_SPEAKER_PHONE_TEST: update_diagcmd_state(diagpdev,"SPEAKERPHONE", ctrl_buf.state); break; case TEST_MODE_VOLUME_TEST: update_diagcmd_state(diagpdev,"VOLUMELEVEL", ctrl_buf.state); break; case TEST_MODE_HFA_TEST: update_diagcmd_state(diagpdev,"HFA", ctrl_buf.state); break; case TEST_MODE_DB_INTEGRITY_TEST: update_diagcmd_state(diagpdev,"DBCHECK", ctrl_buf.state); break; //20110519 [email protected] [LS855] adding cod for gyro test [START] case TEST_MODE_GYRO_SENSOR_TEST: update_diagcmd_state(diagpdev,"GYRO", ctrl_buf.state); break; //20110519 [email protected] [LS855] adding cod for gyro test [END] case TEST_MODE_MANUAL_MODE_TEST://20110608 update_diagcmd_state(diagpdev,"MANUALMODE", ctrl_buf.state); break; // 20110611 [email protected] test script on -> go to Idle START case TEST_MODE_TEST_SCRIPT_MODE: update_diagcmd_state(diagpdev,"TESTSCRIPTMODE", ctrl_buf.state); break; // 20110611 [email protected] test script on -> go to Idle END /* for slate */ case ICD_EXTENDEDVERSIONINFO_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_GETEXTENDEDVERSION", ctrl_buf.state); break; case ICD_GETAIRPLANEMODE_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_GETAIRPLANEMODE", ctrl_buf.state); break; case ICD_SETAIRPLANEMODE_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_SETAIRPLANEMODE", ctrl_buf.state); break; case ICD_GETBACKLIGHTSETTING_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_GETBACKLIGHTSETTING", ctrl_buf.state); break; case ICD_SETBACKLIGHTSETTING_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_SETBACKLIGHTSETTING", ctrl_buf.state); break; case ICD_GETBLUETOOTHSTATUS_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_GETBLUETOOTH", ctrl_buf.state); break; case ICD_SETBLUETOOTHSTATUS_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_SETBLUETOOTH", ctrl_buf.state); break; case ICD_GETUISCREENID_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_GETUISCREENID", ctrl_buf.state); break; case ICD_GETWIFISTATUS_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_GETWIFISTATUS", ctrl_buf.state); break; case ICD_SETWIFISTATUS_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_SETWIFISTATUS", ctrl_buf.state); break; case ICD_SETSCREENORIENTATIONLOCK_REQ_IOCTL: update_diagcmd_state(diagpdev,"ICD_SETORIENTATIONLOCK", ctrl_buf.state); break; } break; default: break; } return 0; }