camera: add support gc0329/s5k5ca/sp0838 sensor driver

This commit is contained in:
ddl 2012-07-31 17:54:22 +08:00
parent 34bcc3db74
commit d19e195105
8 changed files with 12315 additions and 0 deletions

View File

@ -64,6 +64,10 @@
#define RK29_CAM_SENSOR_HI253 hi253
#define RK29_CAM_SENSOR_HI704 hi704
#define RK29_CAM_SENSOR_NT99250 nt99250
#define RK29_CAM_SENSOR_SP0838 sp0838
#define RK29_CAM_SENSOR_GC0329 gc0329
#define RK29_CAM_SENSOR_S5K5CA s5k5ca
#define RK29_CAM_SENSOR_NAME_OV7675 "ov7675"
#define RK29_CAM_SENSOR_NAME_OV9650 "ov9650"
@ -90,6 +94,9 @@
#define RK29_CAM_SENSOR_NAME_HI253 "hi253"
#define RK29_CAM_SENSOR_NAME_HI704 "hi704"
#define RK29_CAM_SENSOR_NAME_NT99250 "nt99250"
#define RK29_CAM_SENSOR_NAME_SP0838 "sp0838"
#define RK29_CAM_SENSOR_NAME_GC0329 "gc0329"
#define RK29_CAM_SENSOR_NAME_S5K5CA "s5k5ca"
#define ov7675_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define ov9650_FULL_RESOLUTION 0x130000 // 1.3 megapixel
@ -115,6 +122,9 @@
#define hi253_FULL_RESOLUTION 0x200000 // 2 megapixel
#define hi704_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define nt99250_FULL_RESOLUTION 0x200000 // 2 megapixel
#define sp0838_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define gc0329_FULL_RESOLUTION 0x30000 // 0.3 megapixel
#define s5k5ca_FULL_RESOLUTION 0x300000 // 3 megapixel
/*---------------- Camera Sensor Must Define Macro End ------------------------*/

View File

@ -1217,6 +1217,40 @@ config NT99250_USER_DEFINED_SERIES
bool "NT99250 user defined init series"
default n
config SOC_CAMERA_GC0329
tristate "gc0329 camera support for rockchip"
depends on SOC_CAMERA && I2C
help
This is a gc0329 camera driver for rockchip
config GC0329_USER_DEFINED_SERIES
depends on SOC_CAMERA_GC0329
bool "GC0329 user defined init series"
default n
config SOC_CAMERA_S5K5CA
tristate "s5k5ca camera support for rockchip"
depends on SOC_CAMERA && I2C
help
This is a s5k5ca camera driver for rockchip
config S5K5CA_USER_DEFINED_SERIES
depends on SOC_CAMERA_S5K5CA
bool "s5k5ca user defined init series"
default n
config SOC_CAMERA_SP0838
tristate "sp0838 camera support for rockchip"
depends on SOC_CAMERA && I2C
help
This is a sp0838 camera driver for rockchip
config S5K5CA_USER_DEFINED_SERIES
depends on SOC_CAMERA_SP0838
bool "sp0838 user defined init series"
default n
config SOC_CAMERA_OV9640
tristate "ov9640 camera support"
depends on SOC_CAMERA && I2C

View File

@ -112,6 +112,9 @@ obj-$(CONFIG_SOC_CAMERA_SID130B) += sid130B.o
obj-$(CONFIG_SOC_CAMERA_HI253) += hi253.o
obj-$(CONFIG_SOC_CAMERA_HI704) += hi704.o
obj-$(CONFIG_SOC_CAMERA_NT99250) += nt99250.o
obj-$(CONFIG_SOC_CAMERA_GC0329) += gc0329.o
obj-$(CONFIG_SOC_CAMERA_SP0838) += sp0838.o
obj-$(CONFIG_SOC_CAMERA_S5K5CA) += s5k5ca.o
# And now the v4l2 drivers:
obj-$(CONFIG_VIDEO_BT848) += bt8xx/

3046
drivers/media/video/gc0329.c Executable file

File diff suppressed because it is too large Load Diff

6093
drivers/media/video/s5k5ca.c Executable file

File diff suppressed because it is too large Load Diff

242
drivers/media/video/s5k5ca.h Executable file
View File

@ -0,0 +1,242 @@
#ifndef __S5K6AA_H__
#define __S5K6AA_H__
struct reginfo
{
u16 reg;
u16 val;
};
/* General purpose section */
#define REG_TC_GP_SpecialEffects 0x01EE
#define REG_TC_GP_EnablePreview 0x01F0
#define REG_TC_GP_EnablePreviewChanged 0x01F2
#define REG_TC_GP_EnableCapture 0x01F4
#define REG_TC_GP_EnableCaptureChanged 0x01F6
#define REG_TC_GP_NewConfigSync 0x01F8
#define REG_TC_GP_PrevReqInputWidth 0x01FA
#define REG_TC_GP_PrevReqInputHeight 0x01FC
#define REG_TC_GP_PrevInputWidthOfs 0x01FE
#define REG_TC_GP_PrevInputHeightOfs 0x0200
#define REG_TC_GP_CapReqInputWidth 0x0202
#define REG_TC_GP_CapReqInputHeight 0x0204
#define REG_TC_GP_CapInputWidthOfs 0x0206
#define REG_TC_GP_CapInputHeightOfs 0x0208
#define REG_TC_GP_PrevZoomReqInputWidth 0x020A
#define REG_TC_GP_PrevZoomReqInputHeight 0x020C
#define REG_TC_GP_PrevZoomReqInputWidthOfs 0x020E
#define REG_TC_GP_PrevZoomReqInputHeightOfs 0x0210
#define REG_TC_GP_CapZoomReqInputWidth 0x0212
#define REG_TC_GP_CapZoomReqInputHeight 0x0214
#define REG_TC_GP_CapZoomReqInputWidthOfs 0x0216
#define REG_TC_GP_CapZoomReqInputHeightOfs 0x0218
#define REG_TC_GP_InputsChangeRequest 0x021A
#define REG_TC_GP_ActivePrevConfig 0x021C
#define REG_TC_GP_PrevConfigChanged 0x021E
#define REG_TC_GP_PrevOpenAfterChange 0x0220
#define REG_TC_GP_ErrorPrevConfig 0x0222
#define REG_TC_GP_ActiveCapConfig 0x0224
#define REG_TC_GP_CapConfigChanged 0x0226
#define REG_TC_GP_ErrorCapConfig 0x0228
#define REG_TC_GP_PrevConfigBypassChanged 0x022A
#define REG_TC_GP_CapConfigBypassChanged 0x022C
#define REG_TC_GP_SleepMode 0x022E
#define REG_TC_GP_SleepModeChanged 0x0230
#define REG_TC_GP_SRA_AddLow 0x0232
#define REG_TC_GP_SRA_AddHigh 0x0234
#define REG_TC_GP_SRA_AccessType 0x0236
#define REG_TC_GP_SRA_Changed 0x0238
#define REG_TC_GP_PrevMinFrTimeMsecMult10 0x023A
#define REG_TC_GP_PrevOutKHzRate 0x023C
#define REG_TC_GP_CapMinFrTimeMsecMult10 0x023E
#define REG_TC_GP_CapOutKHzRate 0x0240
/* Image property control section */
#define REG_TC_UserBrightness 0x01E4
#define REG_TC_UserContrast 0x01E6
#define REG_TC_UserSaturation 0x01E8
#define REG_TC_UserSharpBlur 0x01EA
#define REG_TC_UserGlamour 0x01EC
/* Flash control section */
#define REG_TC_FLS_Mode 0x03B6
#define REG_TC_FLS_Threshold 0x03B8
#define REG_TC_FLS_Polarity 0x03BA
#define REG_TC_FLS_XenonMode 0x03BC
#define REG_TC_FLS_XenonPreFlashCnt 0x03BE
/* Extended image property control section */
#define REG_SF_USER_LeiLow 0x03C0
#define REG_SF_USER_LeiHigh 0x03C2
#define REG_SF_USER_LeiChanged 0x03C4
#define REG_SF_USER_Exposure 0x03C6
#define REG_SF_USER_ExposureChanged 0x03CA
#define REG_SF_USER_TotalGain 0x03CC
#define REG_SF_USER_TotalGainChanged 0x03CE
#define REG_SF_USER_Rgain 0x03D0
#define REG_SF_USER_RgainChanged 0x03D2
#define REG_SF_USER_Ggain 0x03D4
#define REG_SF_USER_GgainChanged 0x03D6
#define REG_SF_USER_Bgain 0x03D8
#define REG_SF_USER_BgainChanged 0x03DA
#define REG_SF_USER_FlickerQuant 0x03DC
#define REG_SF_USER_FlickerQuantChanged 0x03DE
#define REG_SF_USER_GASRAlphaVal 0x03E0
#define REG_SF_USER_GASRAlphaChanged 0x03E2
#define REG_SF_USER_GASGAlphaVal 0x03E4
#define REG_SF_USER_GASGAlphaChanged 0x03E6
#define REG_SF_USER_GASBAlphaVal 0x03E8
#define REG_SF_USER_GASBAlphaChanged 0x03EA
#define REG_SF_USER_DbgIdx 0x03EC
#define REG_SF_USER_DbgVal 0x03EE
#define REG_SF_USER_DbgChanged 0x03F0
#define REG_SF_USER_aGain 0x03F2
#define REG_SF_USER_aGainChanged 0x03F4
#define REG_SF_USER_dGain 0x03F6
#define REG_SF_USER_dGainChanged 0x03F8
/* Output interface control section */
#define REG_TC_OIF_EnMipiLanes 0x03FA
#define REG_TC_OIF_EnPackets 0x03FC
#define REG_TC_OIF_CfgChanged 0x03FE
/* Debug control section */
#define REG_TC_DBG_AutoAlgEnBits 0x0400
#define REG_TC_DBG_IspBypass 0x0402
#define REG_TC_DBG_ReInitCmd 0x0404
/* Version information section */
#define REG_FWdate 0x012C
#define REG_FWapiVer 0x012E
#define REG_FWrevision 0x0130
#define REG_FWpid 0x0132
#define REG_FWprjName 0x0134
#define REG_FWcompDate 0x0140
#define REG_FWSFC_VER 0x014C
#define REG_FWTC_VER 0x014E
#define REG_FWrealImageLine 0x0150
#define REG_FWsenId 0x0152
#define REG_FWusDevIdQaVersion 0x0154
#define REG_FWusFwCompilationBits 0x0156
#define REG_ulSVNrevision 0x0158
#define REG_SVNpathRomAddress 0x015C
#define REG_TRAP_N_PATCH_START_ADD 0x1B00
#define setot_usForceClocksSettings 0x0AEA
#define setot_usConfigClocksSettings 0x0AEC
#define REG_0TC_CCFG_uCaptureMode 0x030C
#define REG_0TC_CCFG_usWidth 0x030E
#define REG_0TC_CCFG_usHeight 0x0310
#define REG_0TC_CCFG_Format 0x0312
#define REG_0TC_CCFG_usMaxOut4KHzRate 0x0314
#define REG_0TC_CCFG_usMinOut4KHzRate 0x0316
#define REG_0TC_CCFG_PVIMask 0x0318
#define REG_0TC_CCFG_uClockInd 0x031A
#define REG_0TC_CCFG_usFrTimeType 0x031C
#define REG_0TC_CCFG_FrRateQualityType 0x031E
#define REG_0TC_CCFG_usMaxFrTimeMsecMult10 0x0320
#define REG_0TC_CCFG_usMinFrTimeMsecMult10 0x0322
#define lt_uMaxAnGain2 0x049A
#define REG_TC_GP_ActivePrevConfig 0x021C
#define REG_TC_GP_PrevOpenAfterChange 0x0220
#define REG_TC_GP_NewConfigSync 0x01F8
#define REG_TC_GP_PrevConfigChanged 0x021E
#define REG_TC_GP_ActiveCapConfig 0x0224
#define REG_TC_GP_CapConfigChanged 0x0226
#define REG_TC_GP_EnableCapture 0x01F4
#define REG_TC_GP_EnableCaptureChanged 0x01F6
#define lt_uMaxExp1 0x0488 // 0x9C40
#define lt_uMaxExp2 0x048C // 0xE848
#define lt_uCapMaxExp1 0x0490 // 0x9C40
#define lt_uCapMaxExp2 0x0494 // 0xE848
#define lt_uMaxDigGain 0x049C // 0x0200
#define lt_uMaxAnGain1 0x0498 // 0x0200
#define lt_uMaxAnGain2 0x049A // 0x0500
#define REG_1TC_CCFG_uCaptureMode 0x032E // 0x0000
#define REG_1TC_CCFG_Cfg 0x0330 // 0x0500
#define REG_1TC_CCFG_usWidth 0x0330 // 0x0500
#define REG_1TC_CCFG_usHeight 0x0332 // 0x03C0
#define REG_1TC_CCFG_Format 0x0334 // 0x0009
#define REG_1TC_CCFG_usMaxOut4KHzRate 0x0336 // 0x1770
#define REG_1TC_CCFG_usMinOut4KHzRate 0x0338 // 0x05DC
#define REG_1TC_CCFG_PVIMask 0x033A // 0x0042
#define REG_1TC_CCFG_uClockInd 0x033C // 0x0000
#define REG_1TC_CCFG_usFrTimeType 0x033E // 0x0000
#define REG_1TC_CCFG_FrRateQualityType 0x0340 // 0x0002
#define REG_1TC_CCFG_usMaxFrTimeMsecMult10 0x0342 // 0x1964
#define REG_1TC_CCFG_usMinFrTimeMsecMult10 0x0344 // 0x0000
#define REG_1TC_CCFG_sSaturation 0x0346 // 0x0000
#define REG_1TC_CCFG_sSharpBlur 0x0348 // 0x0000
#define REG_1TC_CCFG_sGlamour 0x034A // 0x0000
#define REG_1TC_CCFG_sColorTemp 0x034C // 0x0000
#define REG_1TC_CCFG_uDeviceGammaIndex 0x034E // 0x0000
#define REG_CapConfigControls_2_ 0x0350 // 0x0000
#define REG_1TC_PCFG_usWidth 0x0268
#define REG_1TC_PCFG_usHeight 0x026A
#define REG_1TC_PCFG_Format 0x026C
#define REG_1TC_PCFG_usMaxOut4KHzRate 0x026E
#define REG_1TC_PCFG_usMinOut4KHzRate 0x0270
#define REG_1TC_PCFG_PVIMask 0x0272
#define REG_1TC_PCFG_uClockInd 0x0274
#define REG_1TC_PCFG_usFrTimeType 0x0276
#define REG_1TC_PCFG_FrRateQualityType 0x0278
#define REG_1TC_PCFG_usMaxFrTimeMsecMult10 0x027A
#define REG_1TC_PCFG_usMinFrTimeMsecMult10 0x027C
#define AFC_Default60Hz 0x0B2A
#define REG_TC_DBG_AutoAlgEnBits 0x0400
#define REG_SF_USER_FlickerQuant 0x03DC
#define REG_SF_USER_FlickerQuantChanged 0x03DE
#define REG_2TC_PCFG_usWidth 0x028E
#define REG_2TC_PCFG_usHeight 0x0290
#define REG_2TC_PCFG_Format 0x0292
#define REG_2TC_PCFG_usMaxOut4KHzRate 0x0294
#define REG_2TC_PCFG_usMinOut4KHzRate 0x0296
#define REG_2TC_PCFG_PVIMask 0x0298
#define REG_2TC_PCFG_uClockInd 0x029A
#define REG_2TC_PCFG_usFrTimeType 0x029C
#define REG_2TC_PCFG_FrRateQualityType 0x029E
#define REG_2TC_PCFG_usMaxFrTimeMsecMult10 0x02A0
#define REG_2TC_PCFG_usMinFrTimeMsecMult10 0x02A2
#define REG_3TC_PCFG_usWidth 0x02B4
#define REG_3TC_PCFG_usHeight 0x02B6
#define REG_3TC_PCFG_Format 0x02B8
#define REG_3TC_PCFG_usMaxOut4KHzRate 0x02BA
#define REG_3TC_PCFG_usMinOut4KHzRate 0x02BC
#define REG_3TC_PCFG_PVIMask 0x02BE
#define REG_3TC_PCFG_uClockInd 0x02C0
#define REG_3TC_PCFG_usFrTimeType 0x02C2
#define REG_3TC_PCFG_FrRateQualityType 0x02C4
#define REG_3TC_PCFG_usMaxFrTimeMsecMult10 0x02C6
#define REG_3TC_PCFG_usMinFrTimeMsecMult10 0x02C8
#define SEQUENCE_INIT 0x00
#define SEQUENCE_NORMAL 0x01
#define SEQUENCE_CAPTURE 0x02
#define SEQUENCE_PREVIEW 0x03
#define SEQUENCE_PROPERTY 0xFFF9
#define SEQUENCE_WAIT_MS 0xFFFA
#define SEQUENCE_WAIT_US 0xFFFB
#define SEQUENCE_END (0xFFFF)
#define SEQUENCE_FAST_SETMODE_START (0xFFFD)
#define SEQUENCE_FAST_SETMODE_END (0xFFFC)
/*configure register for flipe and mirror during initial*/
#define CONFIG_SENSOR_FLIPE 0
#define CONFIG_SENSOR_MIRROR 1
#define CONFIG_SENSOR_MIRROR_AND_FLIPE 0
#define CONFIG_SENSOR_NONE_FLIP_MIRROR 0
/**configure to indicate android cts****/
#define CONFIG_SENSOR_FOR_CTS 1
#endif

2884
drivers/media/video/sp0838.c Executable file

File diff suppressed because it is too large Load Diff

View File

@ -90,6 +90,7 @@ enum {
/* Samsung sensors: reserved range 310-319 */
V4L2_IDENT_S5K66A = 310, /* ddl@rock-chips.com : s5k66a support */
V4L2_IDENT_S5K5CA = 311, /* ddl@rock-chips.com : s5k5ca support */
/* Conexant MPEG encoder/decoders: reserved range 400-420 */
V4L2_IDENT_CX23418_843 = 403, /* Integrated A/V Decoder on the '418 */
@ -349,6 +350,8 @@ enum {
V4L2_IDENT_NT99250 = 64108, /* ddl@rock-chips.com : nt99250 support */
V4L2_IDENT_SID130B = 64109, /* ddl@rock-chips.com : sid130B support */
V4L2_IDENT_SP0838 = 64110, /* ddl@rock-chips.com : SP0838 support */
V4L2_IDENT_GC0329 = 64111, /* ddl@rock-chips.com : GC0329 support */
/* Don't just add new IDs at the end: KEEP THIS LIST ORDERED BY ID! */
};