2 * Copyright (C) 2008-2009 QUALCOMM Incorporated.
4 #ifndef __MSM_VFE8X_H__
5 #define __MSM_VFE8X_H__
9 #define boolean uint8_t
18 *Important! Command_ID are arranged in order.
23 /* bus and camif config */
24 VFE_CMD_ID_AXI_INPUT_CONFIG
,
25 VFE_CMD_ID_CAMIF_CONFIG
,
26 VFE_CMD_ID_AXI_OUTPUT_CONFIG
,
29 VFE_CMD_ID_BLACK_LEVEL_CONFIG
,
30 VFE_CMD_ID_ROLL_OFF_CONFIG
,
31 VFE_CMD_ID_DEMUX_CHANNEL_GAIN_CONFIG
,
32 VFE_CMD_ID_DEMOSAIC_CONFIG
,
33 VFE_CMD_ID_FOV_CROP_CONFIG
,
34 VFE_CMD_ID_MAIN_SCALER_CONFIG
,
35 VFE_CMD_ID_WHITE_BALANCE_CONFIG
,
36 VFE_CMD_ID_COLOR_CORRECTION_CONFIG
,
38 VFE_CMD_ID_RGB_GAMMA_CONFIG
,
39 VFE_CMD_ID_CHROMA_ENHAN_CONFIG
,
40 VFE_CMD_ID_CHROMA_SUPPRESSION_CONFIG
,
41 VFE_CMD_ID_ASF_CONFIG
,
42 VFE_CMD_ID_SCALER2Y_CONFIG
,
43 VFE_CMD_ID_SCALER2CbCr_CONFIG
,
44 VFE_CMD_ID_CHROMA_SUBSAMPLE_CONFIG
,
45 VFE_CMD_ID_FRAME_SKIP_CONFIG
,
46 VFE_CMD_ID_OUTPUT_CLAMP_CONFIG
,
49 VFE_CMD_ID_TEST_GEN_START
,
53 /* ackownledge from upper layer */
54 VFE_CMD_ID_OUTPUT1_ACK
,
55 VFE_CMD_ID_OUTPUT2_ACK
,
56 VFE_CMD_ID_EPOCH1_ACK
,
57 VFE_CMD_ID_EPOCH2_ACK
,
58 VFE_CMD_ID_STATS_AUTOFOCUS_ACK
,
59 VFE_CMD_ID_STATS_WB_EXP_ACK
,
61 /* module update commands */
62 VFE_CMD_ID_BLACK_LEVEL_UPDATE
,
63 VFE_CMD_ID_DEMUX_CHANNEL_GAIN_UPDATE
,
64 VFE_CMD_ID_DEMOSAIC_BPC_UPDATE
,
65 VFE_CMD_ID_DEMOSAIC_ABF_UPDATE
,
66 VFE_CMD_ID_FOV_CROP_UPDATE
,
67 VFE_CMD_ID_WHITE_BALANCE_UPDATE
,
68 VFE_CMD_ID_COLOR_CORRECTION_UPDATE
,
70 VFE_CMD_ID_RGB_GAMMA_UPDATE
,
71 VFE_CMD_ID_CHROMA_ENHAN_UPDATE
,
72 VFE_CMD_ID_CHROMA_SUPPRESSION_UPDATE
,
73 VFE_CMD_ID_MAIN_SCALER_UPDATE
,
74 VFE_CMD_ID_SCALER2CbCr_UPDATE
,
75 VFE_CMD_ID_SCALER2Y_UPDATE
,
76 VFE_CMD_ID_ASF_UPDATE
,
77 VFE_CMD_ID_FRAME_SKIP_UPDATE
,
78 VFE_CMD_ID_CAMIF_FRAME_UPDATE
,
80 /* stats update commands */
81 VFE_CMD_ID_STATS_AUTOFOCUS_UPDATE
,
82 VFE_CMD_ID_STATS_WB_EXP_UPDATE
,
84 /* control of start, stop, update, etc... */
86 VFE_CMD_ID_GET_HW_VERSION
,
89 VFE_CMD_ID_STATS_SETTING
,
90 VFE_CMD_ID_STATS_AUTOFOCUS_START
,
91 VFE_CMD_ID_STATS_AUTOFOCUS_STOP
,
92 VFE_CMD_ID_STATS_WB_EXP_START
,
93 VFE_CMD_ID_STATS_WB_EXP_STOP
,
95 VFE_CMD_ID_ASYNC_TIMER_SETTING
,
101 struct vfe_cmd_hw_version
{
102 uint32_t minorVersion
;
103 uint32_t majorVersion
;
104 uint32_t coreVersion
;
107 enum VFE_CAMIF_SYNC_EDGE
{
108 VFE_CAMIF_SYNC_EDGE_ActiveHigh
,
109 VFE_CAMIF_SYNC_EDGE_ActiveLow
112 enum VFE_CAMIF_SYNC_MODE
{
113 VFE_CAMIF_SYNC_MODE_APS
,
114 VFE_CAMIF_SYNC_MODE_EFS
,
115 VFE_CAMIF_SYNC_MODE_ELS
,
116 VFE_CAMIF_SYNC_MODE_ILLEGAL
119 struct vfe_cmds_camif_efs
{
120 uint8_t efsendofline
;
121 uint8_t efsstartofline
;
122 uint8_t efsendofframe
;
123 uint8_t efsstartofframe
;
126 struct vfe_cmds_camif_frame
{
127 uint16_t pixelsPerLine
;
128 uint16_t linesPerFrame
;
131 struct vfe_cmds_camif_window
{
138 enum CAMIF_SUBSAMPLE_FRAME_SKIP
{
139 CAMIF_SUBSAMPLE_FRAME_SKIP_0
,
140 CAMIF_SUBSAMPLE_FRAME_SKIP_AllFrames
,
141 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_2Frame
,
142 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_3Frame
,
143 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_4Frame
,
144 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_5Frame
,
145 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_6Frame
,
146 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_7Frame
,
147 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_8Frame
,
148 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_9Frame
,
149 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_10Frame
,
150 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_11Frame
,
151 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_12Frame
,
152 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_13Frame
,
153 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_14Frame
,
154 CAMIF_SUBSAMPLE_FRAME_SKIP_ONE_OUT_OF_EVERY_15Frame
157 struct vfe_cmds_camif_subsample
{
158 uint16_t pixelskipmask
;
159 uint16_t lineskipmask
;
160 enum CAMIF_SUBSAMPLE_FRAME_SKIP frameskip
;
161 uint8_t frameskipmode
;
162 uint8_t pixelskipwrap
;
165 struct vfe_cmds_camif_epoch
{
170 struct vfe_cmds_camif_cfg
{
171 enum VFE_CAMIF_SYNC_EDGE vSyncEdge
;
172 enum VFE_CAMIF_SYNC_EDGE hSyncEdge
;
173 enum VFE_CAMIF_SYNC_MODE syncMode
;
174 uint8_t vfeSubSampleEnable
;
175 uint8_t busSubSampleEnable
;
176 uint8_t irqSubSampleEnable
;
177 uint8_t binningEnable
;
181 struct vfe_cmd_camif_config
{
182 struct vfe_cmds_camif_cfg camifConfig
;
183 struct vfe_cmds_camif_efs EFS
;
184 struct vfe_cmds_camif_frame frame
;
185 struct vfe_cmds_camif_window window
;
186 struct vfe_cmds_camif_subsample subsample
;
187 struct vfe_cmds_camif_epoch epoch1
;
188 struct vfe_cmds_camif_epoch epoch2
;
191 enum VFE_AXI_OUTPUT_MODE
{
192 VFE_AXI_OUTPUT_MODE_Output1
,
193 VFE_AXI_OUTPUT_MODE_Output2
,
194 VFE_AXI_OUTPUT_MODE_Output1AndOutput2
,
195 VFE_AXI_OUTPUT_MODE_CAMIFToAXIViaOutput2
,
196 VFE_AXI_OUTPUT_MODE_Output2AndCAMIFToAXIViaOutput1
,
197 VFE_AXI_OUTPUT_MODE_Output1AndCAMIFToAXIViaOutput2
,
198 VFE_AXI_LAST_OUTPUT_MODE_ENUM
201 enum VFE_RAW_WR_PATH_SEL
{
202 VFE_RAW_OUTPUT_DISABLED
,
203 VFE_RAW_OUTPUT_ENC_CBCR_PATH
,
204 VFE_RAW_OUTPUT_VIEW_CBCR_PATH
,
205 VFE_RAW_OUTPUT_PATH_INVALID
208 enum VFE_RAW_PIXEL_DATA_SIZE
{
209 VFE_RAW_PIXEL_DATA_SIZE_8BIT
,
210 VFE_RAW_PIXEL_DATA_SIZE_10BIT
,
211 VFE_RAW_PIXEL_DATA_SIZE_12BIT
,
214 #define VFE_AXI_OUTPUT_BURST_LENGTH 4
215 #define VFE_MAX_NUM_FRAGMENTS_PER_FRAME 4
216 #define VFE_AXI_OUTPUT_CFG_FRAME_COUNT 3
218 struct vfe_cmds_axi_out_per_component
{
220 uint16_t imageHeight
;
221 uint16_t outRowCount
;
222 uint16_t outRowIncrement
;
223 uint32_t outFragments
[VFE_AXI_OUTPUT_CFG_FRAME_COUNT
]
224 [VFE_MAX_NUM_FRAGMENTS_PER_FRAME
];
227 struct vfe_cmds_axi_per_output_path
{
228 uint8_t fragmentCount
;
229 struct vfe_cmds_axi_out_per_component outputY
;
230 struct vfe_cmds_axi_out_per_component outputCbcr
;
233 enum VFE_AXI_BURST_LENGTH
{
234 VFE_AXI_BURST_LENGTH_IS_2
= 2,
235 VFE_AXI_BURST_LENGTH_IS_4
= 4,
236 VFE_AXI_BURST_LENGTH_IS_8
= 8,
237 VFE_AXI_BURST_LENGTH_IS_16
= 16
240 struct vfe_cmd_axi_output_config
{
241 enum VFE_AXI_BURST_LENGTH burstLength
;
242 enum VFE_AXI_OUTPUT_MODE outputMode
;
243 enum VFE_RAW_PIXEL_DATA_SIZE outputDataSize
;
244 struct vfe_cmds_axi_per_output_path output1
;
245 struct vfe_cmds_axi_per_output_path output2
;
248 struct vfe_cmd_fov_crop_config
{
256 struct vfe_cmds_main_scaler_stripe_init
{
257 uint16_t MNCounterInit
;
261 struct vfe_cmds_scaler_one_dimension
{
265 uint32_t phaseMultiplicationFactor
;
266 uint8_t interpolationResolution
;
269 struct vfe_cmd_main_scaler_config
{
271 struct vfe_cmds_scaler_one_dimension hconfig
;
272 struct vfe_cmds_scaler_one_dimension vconfig
;
273 struct vfe_cmds_main_scaler_stripe_init MNInitH
;
274 struct vfe_cmds_main_scaler_stripe_init MNInitV
;
277 struct vfe_cmd_scaler2_config
{
279 struct vfe_cmds_scaler_one_dimension hconfig
;
280 struct vfe_cmds_scaler_one_dimension vconfig
;
283 struct vfe_cmd_frame_skip_config
{
284 uint8_t output1Period
;
285 uint32_t output1Pattern
;
286 uint8_t output2Period
;
287 uint32_t output2Pattern
;
290 struct vfe_cmd_frame_skip_update
{
291 uint32_t output1Pattern
;
292 uint32_t output2Pattern
;
295 struct vfe_cmd_output_clamp_config
{
304 struct vfe_cmd_chroma_subsample_config
{
307 uint8_t vsubSampleEnable
;
308 uint8_t hsubSampleEnable
;
311 uint8_t vCositedPhase
;
312 uint8_t hCositedPhase
;
313 uint16_t cropWidthFirstPixel
;
314 uint16_t cropWidthLastPixel
;
315 uint16_t cropHeightFirstLine
;
316 uint16_t cropHeightLastLine
;
319 enum VFE_START_INPUT_SOURCE
{
320 VFE_START_INPUT_SOURCE_CAMIF
,
321 VFE_START_INPUT_SOURCE_TESTGEN
,
322 VFE_START_INPUT_SOURCE_AXI
,
323 VFE_START_INPUT_SOURCE_INVALID
326 enum VFE_START_OPERATION_MODE
{
327 VFE_START_OPERATION_MODE_CONTINUOUS
,
328 VFE_START_OPERATION_MODE_SNAPSHOT
331 enum VFE_START_PIXEL_PATTERN
{
342 enum VFE_BUS_RD_INPUT_PIXEL_PATTERN
{
345 VFE_YUV_PSEUDO_PLANAR_Y
,
346 VFE_YUV_PSEUDO_PLANAR_CBCR
349 enum VFE_YUV_INPUT_COSITING_MODE
{
354 struct vfe_cmd_start
{
355 enum VFE_START_INPUT_SOURCE inputSource
;
356 enum VFE_START_OPERATION_MODE operationMode
;
357 uint8_t snapshotCount
;
358 enum VFE_START_PIXEL_PATTERN pixel
;
359 enum VFE_YUV_INPUT_COSITING_MODE yuvInputCositingMode
;
362 struct vfe_cmd_output_ack
{
363 uint32_t ybufaddr
[VFE_MAX_NUM_FRAGMENTS_PER_FRAME
];
364 uint32_t chromabufaddr
[VFE_MAX_NUM_FRAGMENTS_PER_FRAME
];
367 #define VFE_STATS_BUFFER_COUNT 3
369 struct vfe_cmd_stats_setting
{
370 uint16_t frameHDimension
;
371 uint16_t frameVDimension
;
372 uint8_t afBusPrioritySelection
;
373 uint8_t afBusPriority
;
374 uint8_t awbBusPrioritySelection
;
375 uint8_t awbBusPriority
;
376 uint8_t histBusPrioritySelection
;
377 uint8_t histBusPriority
;
378 uint32_t afBuffer
[VFE_STATS_BUFFER_COUNT
];
379 uint32_t awbBuffer
[VFE_STATS_BUFFER_COUNT
];
380 uint32_t histBuffer
[VFE_STATS_BUFFER_COUNT
];
383 struct vfe_cmd_stats_af_start
{
386 uint16_t windowHOffset
;
387 uint16_t windowVOffset
;
388 uint16_t windowWidth
;
389 uint16_t windowHeight
;
390 uint8_t gridForMultiWindows
[16];
391 uint8_t metricSelection
;
393 int8_t highPassCoef
[7];
397 struct vfe_cmd_stats_af_update
{
399 uint16_t windowHOffset
;
400 uint16_t windowVOffset
;
401 uint16_t windowWidth
;
402 uint16_t windowHeight
;
405 struct vfe_cmd_stats_wb_exp_start
{
407 uint8_t wbExpRegions
;
408 uint8_t wbExpSubRegion
;
416 struct vfe_cmd_stats_wb_exp_update
{
417 uint8_t wbExpRegions
;
418 uint8_t wbExpSubRegion
;
425 struct vfe_cmd_stats_af_ack
{
426 uint32_t nextAFOutputBufferAddr
;
429 struct vfe_cmd_stats_wb_exp_ack
{
430 uint32_t nextWbExpOutputBufferAddr
;
433 struct vfe_cmd_black_level_config
{
435 uint16_t evenEvenAdjustment
;
436 uint16_t evenOddAdjustment
;
437 uint16_t oddEvenAdjustment
;
438 uint16_t oddOddAdjustment
;
442 #define VFE_ROLL_OFF_INIT_TABLE_SIZE 13
444 #define VFE_ROLL_OFF_DELTA_TABLE_SIZE 208
446 struct vfe_cmd_roll_off_config
{
453 uint16_t gridPixelXIndex
;
454 uint16_t gridPixelYIndex
;
455 uint16_t yDeltaAccum
;
456 uint16_t initTableR
[VFE_ROLL_OFF_INIT_TABLE_SIZE
];
457 uint16_t initTableGr
[VFE_ROLL_OFF_INIT_TABLE_SIZE
];
458 uint16_t initTableB
[VFE_ROLL_OFF_INIT_TABLE_SIZE
];
459 uint16_t initTableGb
[VFE_ROLL_OFF_INIT_TABLE_SIZE
];
460 int16_t deltaTableR
[VFE_ROLL_OFF_DELTA_TABLE_SIZE
];
461 int16_t deltaTableGr
[VFE_ROLL_OFF_DELTA_TABLE_SIZE
];
462 int16_t deltaTableB
[VFE_ROLL_OFF_DELTA_TABLE_SIZE
];
463 int16_t deltaTableGb
[VFE_ROLL_OFF_DELTA_TABLE_SIZE
];
466 struct vfe_cmd_demux_channel_gain_config
{
467 uint16_t ch0EvenGain
;
473 struct vfe_cmds_demosaic_abf
{
477 uint16_t lpThreshold
;
483 struct vfe_cmds_demosaic_bpc
{
485 uint16_t fmaxThreshold
;
486 uint16_t fminThreshold
;
487 uint16_t redDiffThreshold
;
488 uint16_t blueDiffThreshold
;
489 uint16_t greenDiffThreshold
;
492 struct vfe_cmd_demosaic_config
{
495 struct vfe_cmds_demosaic_abf abfConfig
;
496 struct vfe_cmds_demosaic_bpc bpcConfig
;
499 struct vfe_cmd_demosaic_bpc_update
{
500 struct vfe_cmds_demosaic_bpc bpcUpdate
;
503 struct vfe_cmd_demosaic_abf_update
{
504 struct vfe_cmds_demosaic_abf abfUpdate
;
507 struct vfe_cmd_white_balance_config
{
514 enum VFE_COLOR_CORRECTION_COEF_QFACTOR
{
521 struct vfe_cmd_color_correction_config
{
523 enum VFE_COLOR_CORRECTION_COEF_QFACTOR coefQFactor
;
538 #define VFE_LA_TABLE_LENGTH 256
539 struct vfe_cmd_la_config
{
541 int16_t table
[VFE_LA_TABLE_LENGTH
];
544 #define VFE_GAMMA_TABLE_LENGTH 256
545 enum VFE_RGB_GAMMA_TABLE_SELECT
{
546 RGB_GAMMA_CH0_SELECTED
,
547 RGB_GAMMA_CH1_SELECTED
,
548 RGB_GAMMA_CH2_SELECTED
,
549 RGB_GAMMA_CH0_CH1_SELECTED
,
550 RGB_GAMMA_CH0_CH2_SELECTED
,
551 RGB_GAMMA_CH1_CH2_SELECTED
,
552 RGB_GAMMA_CH0_CH1_CH2_SELECTED
555 struct vfe_cmd_rgb_gamma_config
{
557 enum VFE_RGB_GAMMA_TABLE_SELECT channelSelect
;
558 int16_t table
[VFE_GAMMA_TABLE_LENGTH
];
561 struct vfe_cmd_chroma_enhan_config
{
573 int16_t RGBtoYConversionV0
;
574 int16_t RGBtoYConversionV1
;
575 int16_t RGBtoYConversionV2
;
576 uint8_t RGBtoYConversionOffset
;
579 struct vfe_cmd_chroma_suppression_config
{
589 struct vfe_cmd_asf_config
{
591 uint8_t smoothFilterEnabled
;
593 uint8_t smoothCoefCenter
;
594 uint8_t smoothCoefSurr
;
595 uint8_t normalizeFactor
;
598 uint8_t sharpThreshE1
;
599 int8_t sharpThreshE2
;
600 int8_t sharpThreshE3
;
601 int8_t sharpThreshE4
;
602 int8_t sharpThreshE5
;
603 int8_t filter1Coefficients
[9];
604 int8_t filter2Coefficients
[9];
606 uint16_t cropFirstPixel
;
607 uint16_t cropLastPixel
;
608 uint16_t cropFirstLine
;
609 uint16_t cropLastLine
;
612 struct vfe_cmd_asf_update
{
614 uint8_t smoothFilterEnabled
;
616 uint8_t smoothCoefCenter
;
617 uint8_t smoothCoefSurr
;
618 uint8_t normalizeFactor
;
621 uint8_t sharpThreshE1
;
622 int8_t sharpThreshE2
;
623 int8_t sharpThreshE3
;
624 int8_t sharpThreshE4
;
625 int8_t sharpThreshE5
;
626 int8_t filter1Coefficients
[9];
627 int8_t filter2Coefficients
[9];
631 enum VFE_TEST_GEN_SYNC_EDGE
{
632 VFE_TEST_GEN_SYNC_EDGE_ActiveHigh
,
633 VFE_TEST_GEN_SYNC_EDGE_ActiveLow
636 struct vfe_cmd_test_gen_start
{
637 uint8_t pixelDataSelect
;
638 uint8_t systematicDataSelect
;
639 enum VFE_TEST_GEN_SYNC_EDGE hsyncEdge
;
640 enum VFE_TEST_GEN_SYNC_EDGE vsyncEdge
;
642 enum VFE_RAW_PIXEL_DATA_SIZE pixelDataSize
;
644 uint16_t imageHeight
;
645 uint32_t startOfFrameOffset
;
646 uint32_t endOfFrameNOffset
;
647 uint16_t startOfLineOffset
;
648 uint16_t endOfLineNOffset
;
652 uint8_t startOfFrameDummyLine
;
653 uint8_t endOfFrameDummyLine
;
654 uint8_t unicolorBarEnable
;
655 uint8_t colorBarsSplitEnable
;
656 uint8_t unicolorBarSelect
;
657 enum VFE_START_PIXEL_PATTERN colorBarsPixelPattern
;
658 uint8_t colorBarsRotatePeriod
;
659 uint16_t testGenRandomSeed
;
662 struct vfe_cmd_bus_pm_start
{
663 uint8_t output2YWrPmEnable
;
664 uint8_t output2CbcrWrPmEnable
;
665 uint8_t output1YWrPmEnable
;
666 uint8_t output1CbcrWrPmEnable
;
669 struct vfe_cmd_camif_frame_update
{
670 struct vfe_cmds_camif_frame camifFrame
;
673 struct vfe_cmd_sync_timer_setting
{
674 uint8_t whichSyncTimer
;
677 uint16_t repeatCount
;
680 uint32_t outputDuration
;
683 struct vfe_cmd_async_timer_setting
{
684 uint8_t whichAsyncTimer
;
687 uint16_t repeatCount
;
688 uint16_t inactiveCount
;
689 uint32_t activeCount
;
692 struct vfe_frame_skip_counts
{
693 uint32_t totalFrameCount
;
694 uint32_t output1Count
;
695 uint32_t output2Count
;
698 enum VFE_AXI_RD_UNPACK_HBI_SEL
{
699 VFE_AXI_RD_HBI_32_CLOCK_CYCLES
,
700 VFE_AXI_RD_HBI_64_CLOCK_CYCLES
,
701 VFE_AXI_RD_HBI_128_CLOCK_CYCLES
,
702 VFE_AXI_RD_HBI_256_CLOCK_CYCLES
,
703 VFE_AXI_RD_HBI_512_CLOCK_CYCLES
,
704 VFE_AXI_RD_HBI_1024_CLOCK_CYCLES
,
705 VFE_AXI_RD_HBI_2048_CLOCK_CYCLES
,
706 VFE_AXI_RD_HBI_4096_CLOCK_CYCLES
709 struct vfe_cmd_axi_input_config
{
710 uint32_t fragAddr
[4];
711 uint8_t totalFragmentCount
;
715 uint16_t rowIncrement
;
717 enum VFE_AXI_BURST_LENGTH burstLength
;
719 enum VFE_AXI_RD_UNPACK_HBI_SEL unpackHbi
;
720 enum VFE_RAW_PIXEL_DATA_SIZE pixelSize
;
721 uint8_t padRepeatCountLeft
;
722 uint8_t padRepeatCountRight
;
723 uint8_t padRepeatCountTop
;
724 uint8_t padRepeatCountBottom
;
725 uint8_t padLeftComponentSelectCycle0
;
726 uint8_t padLeftComponentSelectCycle1
;
727 uint8_t padLeftComponentSelectCycle2
;
728 uint8_t padLeftComponentSelectCycle3
;
729 uint8_t padLeftStopCycle0
;
730 uint8_t padLeftStopCycle1
;
731 uint8_t padLeftStopCycle2
;
732 uint8_t padLeftStopCycle3
;
733 uint8_t padRightComponentSelectCycle0
;
734 uint8_t padRightComponentSelectCycle1
;
735 uint8_t padRightComponentSelectCycle2
;
736 uint8_t padRightComponentSelectCycle3
;
737 uint8_t padRightStopCycle0
;
738 uint8_t padRightStopCycle1
;
739 uint8_t padRightStopCycle2
;
740 uint8_t padRightStopCycle3
;
741 uint8_t padTopLineCount
;
742 uint8_t padBottomLineCount
;
745 struct vfe_interrupt_status
{
746 uint8_t camifErrorIrq
;
750 uint8_t camifEpoch1Irq
;
751 uint8_t camifEpoch2Irq
;
752 uint8_t camifOverflowIrq
;
754 uint8_t regUpdateIrq
;
756 uint8_t encYPingpongIrq
;
757 uint8_t encCbcrPingpongIrq
;
758 uint8_t viewYPingpongIrq
;
759 uint8_t viewCbcrPingpongIrq
;
760 uint8_t rdPingpongIrq
;
761 uint8_t afPingpongIrq
;
762 uint8_t awbPingpongIrq
;
763 uint8_t histPingpongIrq
;
766 uint8_t busOverflowIrq
;
767 uint8_t afOverflowIrq
;
768 uint8_t awbOverflowIrq
;
769 uint8_t syncTimer0Irq
;
770 uint8_t syncTimer1Irq
;
771 uint8_t syncTimer2Irq
;
772 uint8_t asyncTimer0Irq
;
773 uint8_t asyncTimer1Irq
;
774 uint8_t asyncTimer2Irq
;
775 uint8_t asyncTimer3Irq
;
777 uint8_t violationIrq
;
778 uint8_t anyErrorIrqs
;
779 uint8_t anyOutput1PathIrqs
;
780 uint8_t anyOutput2PathIrqs
;
781 uint8_t anyOutputPathIrqs
;
782 uint8_t anyAsyncTimerIrqs
;
783 uint8_t anySyncTimerIrqs
;
784 uint8_t anyIrqForActiveStatesOnly
;
787 enum VFE_MESSAGE_ID
{
788 VFE_MSG_ID_RESET_ACK
,
789 VFE_MSG_ID_START_ACK
,
791 VFE_MSG_ID_UPDATE_ACK
,
794 VFE_MSG_ID_SNAPSHOT_DONE
,
795 VFE_MSG_ID_STATS_AUTOFOCUS
,
796 VFE_MSG_ID_STATS_WB_EXP
,
799 VFE_MSG_ID_SYNC_TIMER0_DONE
,
800 VFE_MSG_ID_SYNC_TIMER1_DONE
,
801 VFE_MSG_ID_SYNC_TIMER2_DONE
,
802 VFE_MSG_ID_ASYNC_TIMER0_DONE
,
803 VFE_MSG_ID_ASYNC_TIMER1_DONE
,
804 VFE_MSG_ID_ASYNC_TIMER2_DONE
,
805 VFE_MSG_ID_ASYNC_TIMER3_DONE
,
806 VFE_MSG_ID_AF_OVERFLOW
,
807 VFE_MSG_ID_AWB_OVERFLOW
,
808 VFE_MSG_ID_AXI_ERROR
,
809 VFE_MSG_ID_CAMIF_OVERFLOW
,
810 VFE_MSG_ID_VIOLATION
,
811 VFE_MSG_ID_CAMIF_ERROR
,
812 VFE_MSG_ID_BUS_OVERFLOW
,
815 struct vfe_msg_stats_autofocus
{
817 uint32_t frameCounter
;
820 struct vfe_msg_stats_wb_exp
{
822 uint32_t frameCounter
;
825 struct vfe_frame_bpc_info
{
826 uint32_t greenDefectPixelCount
;
827 uint32_t redBlueDefectPixelCount
;
830 struct vfe_frame_asf_info
{
832 uint32_t asfHbiCount
;
835 struct vfe_msg_camif_status
{
841 struct vfe_bus_pm_per_path
{
842 uint32_t yWrPmStats0
;
843 uint32_t yWrPmStats1
;
844 uint32_t cbcrWrPmStats0
;
845 uint32_t cbcrWrPmStats1
;
848 struct vfe_bus_performance_monitor
{
849 struct vfe_bus_pm_per_path encPathPmInfo
;
850 struct vfe_bus_pm_per_path viewPathPmInfo
;
853 struct vfe_irq_thread_msg
{
854 uint32_t vfeIrqStatus
;
855 uint32_t camifStatus
;
856 uint32_t demosaicStatus
;
858 struct vfe_bus_performance_monitor pmInfo
;
861 struct vfe_msg_output
{
864 struct vfe_frame_bpc_info bpcInfo
;
865 struct vfe_frame_asf_info asfInfo
;
866 uint32_t frameCounter
;
867 struct vfe_bus_pm_per_path pmData
;
871 enum VFE_MESSAGE_ID _d
;
873 struct vfe_msg_output msgOutput1
;
874 struct vfe_msg_output msgOutput2
;
875 struct vfe_msg_stats_autofocus msgStatsAf
;
876 struct vfe_msg_stats_wb_exp msgStatsWbExp
;
877 struct vfe_msg_camif_status msgCamifError
;
878 struct vfe_bus_performance_monitor msgBusOverflow
;
883 struct msm_vfe_command_8k
{
889 struct vfe_frame_extra
{
890 struct vfe_frame_bpc_info bpcInfo
;
891 struct vfe_frame_asf_info asfInfo
;
892 uint32_t frameCounter
;
893 struct vfe_bus_pm_per_path pmData
;
895 #endif /* __MSM_VFE8X_H__ */