static int constant_flashlight_ioctl(MUINT32 cmd, MUINT32 arg) { int i4RetValue = 0; int ior; int iow; int iowr; ior = _IOR(FLASHLIGHT_MAGIC,0, int); iow = _IOW(FLASHLIGHT_MAGIC,0, int); iowr = _IOWR(FLASHLIGHT_MAGIC,0, int); PK_DBG("constant_flashlight_ioctl() line=%d cmd=%d, ior=%d, iow=%d iowr=%d arg=%d\n",__LINE__, cmd, ior, iow, iowr, arg); PK_DBG("constant_flashlight_ioctl() line=%d cmd-ior=%d, cmd-iow=%d cmd-iowr=%d arg=%d\n",__LINE__, cmd-ior, cmd-iow, cmd-iowr, arg); switch(cmd) { case FLASH_IOC_SET_TIME_OUT_TIME_MS: PK_DBG("FLASH_IOC_SET_TIME_OUT_TIME_MS: %d\n",arg); g_timeOutTimeMs=arg; break; case FLASH_IOC_SET_DUTY : PK_DBG("FLASHLIGHT_DUTY: %d\n",arg); g_duty=arg; FL_dim_duty(arg); break; case FLASH_IOC_SET_STEP: PK_DBG("FLASH_IOC_SET_STEP: %d\n",arg); g_step=arg; FL_step(arg); break; case FLASH_IOC_SET_ONOFF : PK_DBG("FLASHLIGHT_ONOFF: %d\n",arg); if(arg==1) { if(g_timeOutTimeMs!=0) { ktime_t ktime; ktime = ktime_set( 0, g_timeOutTimeMs*1000000 ); hrtimer_start( &g_timeOutTimer, ktime, HRTIMER_MODE_REL ); } FL_enable(); g_strobe_On=1; } else { FL_disable(); hrtimer_cancel( &g_timeOutTimer ); g_strobe_On=0; } break; default : PK_DBG(" No such command \n"); i4RetValue = -EPERM; break; } return i4RetValue; }
static int constant_flashlight_ioctl(MUINT32 cmd, MUINT32 arg) { int i4RetValue = 0; int iFlashType = (int)FLASHLIGHT_NONE; int ior; int iow; int iowr; ior = _IOR(FLASHLIGHT_MAGIC,0, int); iow = _IOW(FLASHLIGHT_MAGIC,0, int); iowr = _IOWR(FLASHLIGHT_MAGIC,0, int); PK_DBG("constant_flashlight_ioctl() line=%d cmd=%d, ior=%d, iow=%d iowr=%d arg=%d\n",__LINE__, cmd, ior, iow, iowr, arg); PK_DBG("constant_flashlight_ioctl() line=%d cmd-ior=%d, cmd-iow=%d cmd-iowr=%d arg=%d\n",__LINE__, cmd-ior, cmd-iow, cmd-iowr, arg); switch(cmd) { case FLASH_IOC_SET_TIME_OUT_TIME_MS: PK_DBG("FLASH_IOC_SET_TIME_OUT_TIME_MS: %d\n",arg); g_timeOutTimeMs=arg; break; case FLASH_IOC_SET_DUTY : PK_DBG("FLASHLIGHT_DUTY: %d\n",arg); g_duty=arg; FL_dim_duty(arg); break; case FLASH_IOC_SET_STEP: PK_DBG("FLASH_IOC_SET_STEP: %d\n",arg); g_step=arg; FL_step(arg); break; case FLASH_IOC_SET_ONOFF : PK_DBG("FLASHLIGHT_ONOFF: %d\n",arg); if(arg==1) { if(g_timeOutTimeMs!=0) { ktime_t ktime; ktime = ktime_set( 0, g_timeOutTimeMs*1000000 ); hrtimer_start( &g_timeOutTimer, ktime, HRTIMER_MODE_REL ); } FL_enable(); g_strobe_On=1; } else { FL_disable(); hrtimer_cancel( &g_timeOutTimer ); g_strobe_On=0; } break; case FLASHLIGHTIOC_G_FLASHTYPE: iFlashType = FLASHLIGHT_LED_CONSTANT; if(copy_to_user((void __user *) arg , (void*)&iFlashType , _IOC_SIZE(cmd))) { PK_DBG("[strobe_ioctl] ioctl copy to user failed\n"); return -EFAULT; } break; default : PK_DBG(" No such command \n"); i4RetValue = -EPERM; break; } return i4RetValue; }