123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- #include "osdef.h" //joshua check
- #include "pq.h"
- #include "pq_hw.h"
- #include "pq_ioctl.h"
- #include <linux/version.h>
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)
- #include <drv_dev.h>
- #include <drv_platform.h>
- #endif
- #include "drv_types.h"
- //PQ_CONTEXT PQContext;
- extern UINT8 utempSharpnesscValue;
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,8)
- LONG sispq_ioctl(struct file *filp,UINT32 cmd,ULONG arg);
- #else
- ssize_t sispq_ioctl(struct inode *inode,struct file *filp,UINT32 cmd,ULONG arg);
- #endif
- INT32 sispq_init(void);
- void sispq_exit(void);
- static struct file_operations fops = {
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,8)
- unlocked_ioctl: sispq_ioctl,
- #else
- ioctl: sispq_ioctl,
- #endif
- owner: THIS_MODULE,
- };
- static struct cdev cdev_sispq = {
- .kobj = {.name = "sispq", },
- .owner = THIS_MODULE,
- .ops = &fops,
- };
- void PQ_Initialization(void)
- {
- PQ_InitialTable();
- }
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,8)
- LONG sispq_ioctl(struct file *filp,UINT32 cmd,ULONG arg){
- #else
- ssize_t sispq_ioctl(struct inode *inode,struct file *filp,UINT32 cmd,ULONG arg){
- #endif
- switch(cmd){
- #ifdef DYNAMIC_BACKLIGHT
- case PQ_IOCTL_SWITCH_DYNAMIC_BACKLIGHT:
- {
- PQ_DynamicBacklight DynamicBacklight;
- copy_from_user(&DynamicBacklight, (PQ_DynamicBacklight*)arg, sizeof(PQ_DynamicBacklight));
- PQ_EnableDynamicBackLight(DynamicBacklight.ucLevel, DynamicBacklight.uiBacklightValue);
- }
- break;
- case PQ_IOCTL_SWITCH_DYNAMIC_BACKLIGHT_MAP:
- {
- PQ_DynamicBacklight DynamicBacklight;
- copy_from_user(&DynamicBacklight, (PQ_DynamicBacklight*)arg, sizeof(PQ_DynamicBacklight));
- PQ_DynamicBackLightAP(DynamicBacklight.ucLevel, DynamicBacklight.uiBacklightValue);
- }
- break;
- case PQ_IOCTL_DYNCBACKLIGHT:
- {
- PQ_BacklightParameter BackLightPara;
- copy_from_user(&BackLightPara, (PQ_BacklightParameter*)arg, sizeof(PQ_BacklightParameter));
- PQ_SetBacklightParameter(BackLightPara.ucTop,BackLightPara.ucBot,BackLightPara.ucTh_low,BackLightPara.ucTh_High);
- }
- break;
- #endif
- case PQ_IOCTL_FADE_IN_OUT:
- {
- PQ_FadeInOut FadeInOut;
- copy_from_user(&FadeInOut, (PQ_FadeInOut*)arg, sizeof(PQ_FadeInOut));
- PQ_SetFadeValue(1, FadeInOut.ucStartValue, FadeInOut.ucEndValue, FadeInOut.ucIncValue);
- }
- break;
- }
- return 0;
- }
- PQ_EXPORT void PQ_WatchDemo_DynamicContrast_AvgY(INT32* demoMin, INT32* demoMax,INT32* demoCurValue)
- {
- }
- void PQ_EventGammaPattern(UINT8 ucGrayLevel)
- {
- PQ_GammaCorrect(ucGrayLevel);
- }
- PQ_EXPORT void PQ_ChangeBackLight(UINT32 dwLightTarget, INT32 nSpeed)
- {
- #ifdef DYNAMIC_BACKLIGHT
- PQ_KICDebugPrint("%s:dwLightTarget = %ld(%#lx), nSpeed = %d\n",__FUNCTION__, dwLightTarget, dwLightTarget, nSpeed);
- dwLightTarget &= ~(0x80000000); //clear the setting bit
- //PQ_GetOrderedBackLight(&dwLightTarget);
- PQ_PresetBackLight(TRUE, dwLightTarget, nSpeed);
- #endif
- }
- PQ_EXPORT void PQ_SetColorStyleSaturation(UINT8 ucType)
- {
- PQ_ColorStyleSaturation(ucType);
- }
- PQ_EXPORT void PQ_EventSetFunction(UINT8 ucFunID, INT32 iValue, INT32 iUserMin, INT32 iUserMax)
- {
- UINT8 ucUserSource;
- UINT8 ucSubSource;
- INT32 iRealValue= iValue;
- INT16 bRgain = 1024,bGgain = 1024,bBgain = 1024,bGammaSwitch = 0,bGammaIndex = 0;
- VIP_GetSource(&ucUserSource, &ucSubSource);
- KICDebugPrint("%s 1: ucFunID=%d iUserMin=%d iUserMax=%d iValue=%d iRealValue=%d\n",__FUNCTION__, ucFunID, iUserMin, iUserMax, iValue, iRealValue);
- KICDebugPrint("%s 2: ucFunID=%d iUserMin=%d iUserMax=%d iValue=%d iRealValue=%d\n",__FUNCTION__, ucFunID, iUserMin, iUserMax, iValue, iRealValue);
- PQ_SetMenuValue(ucFunID,iRealValue);
-
- if(ucFunID == PQ_COLORTEMPGAIN)
- {
- bGgain = iValue & 0x0000ffff;
- bRgain = (iValue >> 16) & 0x0000ffff;
- bBgain = (iUserMin >> 16) & 0x0000ffff;
- bGammaIndex = iUserMin & 0x000000ff;
- bGammaSwitch = (iUserMin >> 8) & 0x000000ff;
-
- PQ_SetMenuValueCT(ucFunID,bRgain,bGgain,bBgain);
- }
- switch(ucFunID)
- {
- case PQ_BRIGHTNESS:
- PQ_Brightness(TRUE, iRealValue);
- break;
- case PQ_CONTRAST:
- if(PQ_IsFadeEn())
- {
- PQ_SetCurrContrastValue(iRealValue);
- }
- else
- {
- PQ_Contrast(TRUE, iRealValue);
- }
- break;
- case PQ_SHARPNESS:
- utempSharpnesscValue = iRealValue;
- PQ_Sharpness(TRUE, iRealValue);
- break;
- case PQ_SATURATION:
- PQ_Saturation(iRealValue);
- break;
- case PQ_HUE:
- PQ_Hue(iRealValue);
- break;
- case PQ_CT_R_GAIN: // color temp
- PQ_ColorTempGain(PQ_CT_GAIN_R, iRealValue);
- break;
- case PQ_CT_G_GAIN:
- PQ_ColorTempGain(PQ_CT_GAIN_G, iRealValue);
- break;
- case PQ_CT_B_GAIN:
- PQ_ColorTempGain(PQ_CT_GAIN_B, iRealValue);
- break;
- case PQ_CT_R_BIAS:
- PQ_ColorTempBias(PQ_CT_BIAS_R, iRealValue);
- break;
- case PQ_CT_G_BIAS:
- PQ_ColorTempBias(PQ_CT_BIAS_G, iRealValue);
- break;
- case PQ_CT_B_BIAS:
- PQ_ColorTempBias(PQ_CT_BIAS_B, iRealValue);
- break;
- case PQ_COLORTEMPGAIN:
- PQ_ColorTempGainALL(bRgain,bGgain,bBgain,bGammaSwitch,bGammaIndex);
- break;
- case PQ_DIGITAL_NR:
- PQ_3DNoiseReductoin(iValue, iUserMin, iUserMax);
- PQ_Set_NR_BlockAlpha(NR_BLOCK_ALPHA_TNR);
- PQ_Set_NR_BlockAlpha(NR_BLOCK_ALPHA_TNR_SNR);
- PQ_Set_NR_BlockAlpha(NR_BLOCK_ALPHA_TNR_C);
- PQ_Set_NR_BlockAlpha(NR_BLOCK_ALPHA_TNRZ);
- PQ_Set_NR_BlockAlpha(NR_BLOCK_ALPHA_TNRZ_C);
- PQ_Set_NR_SLR_SNR(NR_SNR_BEFORE_SCALER);
- PQ_Set_NR_SLR_SNR(NR_SNR_AFTER_SCALER);
-
- #ifdef CONFIG_FORCE_NR_EFFECT_ENHANCED_IN_OFF_OPTION
- PQ_SigmaNR(TRUE, 0xff, 0xff, 0xff);
- #else
- PQ_SigmaNR(TRUE, iValue, 0xff, 0xff);
- #endif
- break;
- case PQ_MPEG_NOISE_FILTER:
- PQ_MPEGNoiseReductoin(iValue, iUserMin, iUserMax);
- break;
- case PQ_GAMMA:
- break;
- case PQ_GAMMATABLE:
-
- #ifdef CONFIG_PANEL_LM201WE3_TLF5_1680X1050__S2TEK_IS_DEFAULT
- #else
- if( iValue==0xff )
- {
- PQ_SetupGammaTable(DISABLE, 0xff, FALSE);
- }
- else
- {
- PQ_SetupGammaTable(ENABLE, iValue, FALSE);
- }
- #endif
- break;
- case PQ_DYNAMIC_CONTRAST:
- break;
- case PQ_COLOR_SPACE_MODE:
- PQ_ColorSpaceMode(iValue, ucUserSource);
- break;
- case PQ_GAMMA_CORRECT:
- PQ_EventGammaPattern((UINT8)iValue);
- break;
- case PQ_SET_COLOR_PROCESSER:
- PQ_ColorProcesser(iValue);
- break;
- case PQ_DYNAMIC_BACKLIGHT:
- #ifdef DYNAMIC_BACKLIGHT
- PQ_EnableDynamicBackLight(iValue, iUserMax);
- #endif
- break;
- case PQ_DEMOMODE:
- //PQ_DemoModeEnable(iValue);
- PQ_DPYDemoModeEnable(iValue);
- break;
- case PQ_STATIC_GAMMA:
- PQ_StaticGammaSetup(iValue);
- break;
- case PQ_DITHERING:
- PQ_SetDithering(iValue);
- break;
- case PQ_DITHERING_LEVEL:
- PQ_DitheringLevel(iValue);
- break;
- case PQ_DITHERING_ALGO:
- PQ_DitheringAlgo(iValue);
- break;
- case PQ_FLESHTONE_COMPENSATION:
- PQ_FlDetLevel(iValue);
- break;
- case PQ_ADAPTIVE_MAX_BACKLIGHT:
- #ifdef DYNAMIC_BACKLIGHT
- PQ_KICDebugPrint("%s, PQ_LIGHT_SENSOR_BACKLIGHT: light sensor = %d, index = %d\n",__FUNCTION__,iValue,iUserMin);
- PQ_GetLightSensorInfo(iValue, iUserMin, iUserMax);
- break;
- case PQ_DYNAMIC_BACKLIGHT_TYPE:
- PQ_SetDynamicBLType(iValue);
- break;
- case PQ_DYNAMIC_BACKLIGHT_HISTMINRATE:
- PQ_SetBacklightHistMin(iValue);
- break;
- case PQ_DYNAMIC_BACKLIGHT_PWMMAX:
- PQ_SetMaxPWM(iValue);
- break;
- #endif
- case PQ_DYNAMIC_CONTRAST_ENABLE:
- PQ_SW_DynamicContrast_Enable(iValue);
- break;
- case PQ_CONTRAST_LEVEL:
- PQ_SW_DynamicContrast_Y_Level(iValue);
- break;
- case PQ_CHROMA_LEVEL:
- PQ_SW_DynamicContrast_C_Level(iValue);
- break;
- case PQ_ALPHA_MODE1:
- PQ_SW_DynamicContrast_Alpha_Mode(0,iValue);
- break;
- case PQ_ALPHA_MODE2:
- PQ_SW_DynamicContrast_Alpha_Mode(1,iValue);
- break;
- case PQ_ALPHA_MODE3:
- PQ_SW_DynamicContrast_Alpha_Mode(2,iValue);
- break;
- case PQ_ALPHA_MODE4:
- PQ_SW_DynamicContrast_Alpha_Mode(3,iValue);
- break;
- case PQ_DVDSoruce:
- VIP_EventDVDSourceSelect(iValue);
- break;
- case PQ_NetworkSoruce:
- VIP_EventNetowrkSourceSelect(iValue);
- break;
- case PQ_PWMFREQ:
- PQ_SETPWMFreq(iValue);
- break;
- default:
- break;
- }
- }
- INT32 sispq_init(void)
- {
- INT32 err, devno;
- #ifndef LOGO_PROLONG
- PQ_Initialization();
- #endif
- devno=MKDEV(CDEV_PQ_MAJOR,0);
- cdev_init(&cdev_sispq, &fops);
- cdev_sispq.owner = THIS_MODULE;
- cdev_sispq.ops = &fops;
- err = cdev_add (&cdev_sispq, devno, 1);
- if (err)
- {
- PQDebugPrint( "Error");
- }
- return 0;
- }
- void sispq_exit(void)
- {
- cdev_del(&cdev_sispq);
- }
- #ifndef INIT_BY_KMF
- module_init(sispq_init);
- module_exit(sispq_exit);
- #endif
- MODULE_LICENSE("Dual BSD/GPL");
|