192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev/* Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev *
392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev * This program is free software; you can redistribute it and/or modify
492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev * it under the terms of the GNU General Public License version 2 and
592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev * only version 2 as published by the Free Software Foundation.
692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev *
792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev * This program is distributed in the hope that it will be useful,
892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev * but WITHOUT ANY WARRANTY; without even the implied warranty of
992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev * GNU General Public License for more details.
1192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev *
1292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev */
1392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#ifndef __MSM_ISP_H__
1492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define __MSM_ISP_H__
1592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
1692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define BIT(nr)			(1UL << (nr))
1792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
1892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev/* ISP message IDs */
1992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_RESET_ACK                0
2092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_START_ACK                1
2192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STOP_ACK                 2
2292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_UPDATE_ACK               3
2392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_OUTPUT_P                 4
2492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_OUTPUT_T                 5
2592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_OUTPUT_S                 6
2692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_OUTPUT_V                 7
2792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_SNAPSHOT_DONE            8
2892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_AEC                9
2992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_AF                 10
3092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_AWB                11
3192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_RS                 12
3292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_CS                 13
3392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_IHIST              14
3492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_SKIN               15
3592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_EPOCH1                   16
3692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_EPOCH2                   17
3792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_SYNC_TIMER0_DONE         18
3892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_SYNC_TIMER1_DONE         19
3992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_SYNC_TIMER2_DONE         20
4092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_ASYNC_TIMER0_DONE        21
4192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_ASYNC_TIMER1_DONE        22
4292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_ASYNC_TIMER2_DONE        23
4392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_ASYNC_TIMER3_DONE        24
4492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_AE_OVERFLOW              25
4592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_AF_OVERFLOW              26
4692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_AWB_OVERFLOW             27
4792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_RS_OVERFLOW              28
4892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_CS_OVERFLOW              29
4992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_IHIST_OVERFLOW           30
5092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_SKIN_OVERFLOW            31
5192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_AXI_ERROR                32
5292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_CAMIF_OVERFLOW           33
5392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_VIOLATION                34
5492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_CAMIF_ERROR              35
5592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_BUS_OVERFLOW             36
5692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_SOF_ACK                  37
5792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STOP_REC_ACK             38
5892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_AWB_AEC            39
5992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_OUTPUT_PRIMARY           40
6092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_OUTPUT_SECONDARY         41
6192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STATS_COMPOSITE          42
6292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_OUTPUT_TERTIARY1         43
6392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_STOP_LS_ACK              44
6492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSG_ID_OUTPUT_TERTIARY2         45
6587c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define MSG_ID_STATS_BG                 46
6687c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define MSG_ID_STATS_BF                 47
6787c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define MSG_ID_STATS_BHIST              48
6826966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define MSG_ID_RDI0_UPDATE_ACK          49
6926966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define MSG_ID_RDI1_UPDATE_ACK          50
7026966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define MSG_ID_RDI2_UPDATE_ACK          51
7192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
7292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev/* ISP command IDs */
7392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_0                                 0
7492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_SET_CLK                                 1
7592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_RESET                                   2
7692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_START                                   3
7792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_TEST_GEN_START                          4
7892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_OPERATION_CFG                           5
7992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_AXI_OUT_CFG                             6
8092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CAMIF_CFG                               7
8192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_AXI_INPUT_CFG                           8
8292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_BLACK_LEVEL_CFG                         9
8392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_MESH_ROLL_OFF_CFG                       10
8492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMUX_CFG                               11
8592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_FOV_CFG                                 12
8692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_MAIN_SCALER_CFG                         13
8792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_WB_CFG                                  14
8892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_COLOR_COR_CFG                           15
8992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_RGB_G_CFG                               16
9092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_LA_CFG                                  17
9192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CHROMA_EN_CFG                           18
9292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CHROMA_SUP_CFG                          19
9392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_MCE_CFG                                 20
9492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_SK_ENHAN_CFG                            21
9592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_ASF_CFG                                 22
9692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_S2Y_CFG                                 23
9792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_S2CbCr_CFG                              24
9892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CHROMA_SUBS_CFG                         25
9992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_OUT_CLAMP_CFG                           26
10092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_FRAME_SKIP_CFG                          27
10192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_1                                 28
10292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_2                                 29
10392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_3                                 30
10492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_UPDATE                                  31
10592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_BL_LVL_UPDATE                           32
10692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMUX_UPDATE                            33
10792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_FOV_UPDATE                              34
10892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_MAIN_SCALER_UPDATE                      35
10992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_WB_UPDATE                               36
11092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_COLOR_COR_UPDATE                        37
11192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_RGB_G_UPDATE                            38
11292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_LA_UPDATE                               39
11392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CHROMA_EN_UPDATE                        40
11492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CHROMA_SUP_UPDATE                       41
11592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_MCE_UPDATE                              42
11692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_SK_ENHAN_UPDATE                         43
11792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_S2CbCr_UPDATE                           44
11892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_S2Y_UPDATE                              45
11992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_ASF_UPDATE                              46
12092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_FRAME_SKIP_UPDATE                       47
12192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CAMIF_FRAME_UPDATE                      48
12292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AF_UPDATE                         49
12392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AE_UPDATE                         50
12492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AWB_UPDATE                        51
12592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_RS_UPDATE                         52
12692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_CS_UPDATE                         53
12792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_SKIN_UPDATE                       54
12892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_IHIST_UPDATE                      55
12992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_4                                 56
13092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_EPOCH1_ACK                              57
13192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_EPOCH2_ACK                              58
13292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_START_RECORDING                         59
13392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STOP_RECORDING                          60
13492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_5                                 61
13592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_6                                 62
13692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CAPTURE                                 63
13792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_7                                 64
13892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STOP                                    65
13992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_GET_HW_VERSION                          66
14092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_GET_FRAME_SKIP_COUNTS                   67
14192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_OUTPUT1_BUFFER_ENQ                      68
14292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_OUTPUT2_BUFFER_ENQ                      69
14392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_OUTPUT3_BUFFER_ENQ                      70
14492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_JPEG_OUT_BUF_ENQ                        71
14592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_RAW_OUT_BUF_ENQ                         72
14692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_RAW_IN_BUF_ENQ                          73
14792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AF_ENQ                            74
14892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AE_ENQ                            75
14992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AWB_ENQ                           76
15092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_RS_ENQ                            77
15192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_CS_ENQ                            78
15292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_SKIN_ENQ                          79
15392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_IHIST_ENQ                         80
15492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_8                                 81
15592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_JPEG_ENC_CFG                            82
15692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_9                                 83
15792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AF_START                          84
15892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AF_STOP                           85
15992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AE_START                          86
16092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AE_STOP                           87
16192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AWB_START                         88
16292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_AWB_STOP                          89
16392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_RS_START                          90
16492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_RS_STOP                           91
16592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_CS_START                          92
16692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_CS_STOP                           93
16792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_SKIN_START                        94
16892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_SKIN_STOP                         95
16992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_IHIST_START                       96
17092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_IHIST_STOP                        97
17192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DUMMY_10                                98
17292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_SYNC_TIMER_SETTING                      99
17392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_ASYNC_TIMER_SETTING                     100
17492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_LIVESHOT                                101
17592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_LA_SETUP                                102
17692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_LINEARIZATION_CFG                       103
17792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3                              104
17892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_ABCC_CFG                     105
17992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_DBCC_CFG                     106
18092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_DBPC_CFG                     107
18192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_ABF_CFG                      108
18292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_ABCC_UPDATE                  109
18392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_DBCC_UPDATE                  110
18492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_DBPC_UPDATE                  111
18592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_XBAR_CFG                                112
18692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_MODULE_CFG                              113
18792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_ZSL                                     114
18892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_LINEARIZATION_UPDATE                    115
18992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_ABF_UPDATE                   116
19092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CLF_CFG                                 117
19192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CLF_LUMA_UPDATE                         118
19292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CLF_CHROMA_UPDATE                       119
19392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_PCA_ROLL_OFF_CFG                        120
19492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_PCA_ROLL_OFF_UPDATE                     121
19592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_GET_REG_DUMP                            122
19692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_GET_LINEARIZATON_TABLE                  123
19792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_GET_MESH_ROLLOFF_TABLE                  124
19892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_GET_PCA_ROLLOFF_TABLE                   125
19992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_GET_RGB_G_TABLE                         126
20092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_GET_LA_TABLE                            127
20192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_DEMOSAICV3_UPDATE                       128
20292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_ACTIVE_REGION_CFG                       129
20392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_COLOR_PROCESSING_CONFIG                 130
20492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_WB_AEC_CONFIG                     131
20592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STATS_WB_AEC_UPDATE                     132
20692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_Y_GAMMA_CONFIG                          133
20792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_SCALE_OUTPUT1_CONFIG                    134
20892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_SCALE_OUTPUT2_CONFIG                    135
20992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_CAPTURE_RAW                             136
21092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_STOP_LIVESHOT                           137
21192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_CMD_RECONFIG_VFE                            138
21287c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_REQBUF                            139
21387c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_ENQUEUEBUF                        140
21487c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_FLUSH_BUFQ                        141
21587c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_UNREGBUF                          142
21687c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_BG_START                          143
21787c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_BG_STOP                           144
21887c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_BF_START                          145
21987c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_BF_STOP                           146
22087c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_BHIST_START                       147
22187c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_STATS_BHIST_STOP                        148
22287c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev#define VFE_CMD_RESET_2                                 149
22326966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_FOV_ENC_CFG                             150
22426966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_FOV_VIEW_CFG                            151
22526966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_FOV_ENC_UPDATE                          152
22626966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_FOV_VIEW_UPDATE                         153
22726966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_SCALER_ENC_CFG                          154
22826966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_SCALER_VIEW_CFG                         155
22926966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_SCALER_ENC_UPDATE                       156
23026966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_SCALER_VIEW_UPDATE                      157
23126966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_COLORXFORM_ENC_CFG                      158
23226966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_COLORXFORM_VIEW_CFG                     159
23326966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_COLORXFORM_ENC_UPDATE                   160
23426966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_COLORXFORM_VIEW_UPDATE                  161
23526966d1888be91e7c49145350c833a88eb1bbce8Iliyan Malchev#define VFE_CMD_TEST_GEN_CFG                            162
23692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
23792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_isp_cmd {
23892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	int32_t  id;
23992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint16_t length;
24092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	void     *value;
24192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
24292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
24392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_DUMMY_0                                 0
24492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_INIT                                    1
24592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_DEINIT                                  2
24692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_ENABLE                                  3
24792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_DISABLE                                 4
24892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_RESET                                   5
24992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_FLUSH                                   6
25092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_OPERATION_MODE_CFG                      7
25192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_INPUT_PLANE_CFG                         8
25292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_OUTPUT_PLANE_CFG                        9
25392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_INPUT_PLANE_UPDATE                      10
25492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_SCALE_CFG_TYPE                          11
25592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_ZOOM                                    13
25692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_CMD_MAX                                     14
25792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
25892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSM_PP_CMD_TYPE_NOT_USED        0  /* not used */
25992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSM_PP_CMD_TYPE_VPE             1  /* VPE cmd */
26092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSM_PP_CMD_TYPE_MCTL            2  /* MCTL cmd */
26192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
26292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MCTL_CMD_DUMMY_0                0  /* not used */
26392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MCTL_CMD_GET_FRAME_BUFFER       1  /* reserve a free frame buffer */
26492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MCTL_CMD_PUT_FRAME_BUFFER       2  /* return the free frame buffer */
26592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MCTL_CMD_DIVERT_FRAME_PP_PATH   3  /* divert frame for pp */
26692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
26792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev/* event typese sending to MCTL PP module */
26892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MCTL_PP_EVENT_NOTUSED           0
26992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MCTL_PP_EVENT_CMD_ACK           1
27092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
27192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_OPERATION_MODE_CFG_LEN      4
27292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_INPUT_PLANE_CFG_LEN         24
27392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_OUTPUT_PLANE_CFG_LEN        20
27492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_INPUT_PLANE_UPDATE_LEN      12
27592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_SCALER_CONFIG_LEN           260
27692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VPE_DIS_OFFSET_CFG_LEN          12
27792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
27892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
27992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define CAPTURE_WIDTH          1280
28092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define IMEM_Y_SIZE            (CAPTURE_WIDTH*16)
28192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define IMEM_CBCR_SIZE         (CAPTURE_WIDTH*8)
28292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
28392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define IMEM_Y_PING_OFFSET     0x2E000000
28492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define IMEM_CBCR_PING_OFFSET  (IMEM_Y_PING_OFFSET + IMEM_Y_SIZE)
28592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
28692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define IMEM_Y_PONG_OFFSET     (IMEM_CBCR_PING_OFFSET + IMEM_CBCR_SIZE)
28792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define IMEM_CBCR_PONG_OFFSET  (IMEM_Y_PONG_OFFSET + IMEM_Y_SIZE)
28892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
28992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
29092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_vpe_op_mode_cfg {
29192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint8_t op_mode_cfg[VPE_OPERATION_MODE_CFG_LEN];
29292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
29392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
29492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_vpe_input_plane_cfg {
29592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint8_t input_plane_cfg[VPE_INPUT_PLANE_CFG_LEN];
29692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
29792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
29892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_vpe_output_plane_cfg {
29992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint8_t output_plane_cfg[VPE_OUTPUT_PLANE_CFG_LEN];
30092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
30192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
30292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_vpe_input_plane_update_cfg {
30392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint8_t input_plane_update_cfg[VPE_INPUT_PLANE_UPDATE_LEN];
30492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
30592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
30692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_vpe_scaler_cfg {
30792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint8_t scaler_cfg[VPE_SCALER_CONFIG_LEN];
30892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
30992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
31092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_vpe_flush_frame_buffer {
31192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t src_buf_handle;
31292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t dest_buf_handle;
31392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	int path;
31492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
31592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
31692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_mctl_pp_frame_buffer {
31792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t buf_handle;
31892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	int path;
31992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
32092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_mctl_pp_divert_pp {
32192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	int path;
32292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	int enable;
32392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
32492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_vpe_clock_rate {
32592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t rate;
32692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
32792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_pp_crop {
32892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t  src_x;
32992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t  src_y;
33092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t  src_w;
33192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t  src_h;
33292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t  dst_x;
33392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t  dst_y;
33492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t  dst_w;
33592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t  dst_h;
33692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint8_t update_flag;
33792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
33892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSM_MCTL_PP_VPE_FRAME_ACK    (1<<0)
33992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define MSM_MCTL_PP_VPE_FRAME_TO_APP (1<<1)
34092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
34192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_mctl_pp_frame_cmd {
34292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t cookie;
34392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint8_t  vpe_output_action;
34492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t src_buf_handle;
34592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t dest_buf_handle;
34692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	struct msm_pp_crop crop;
34792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	int path;
34892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	/* TBD: 3D related */
34992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
35092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
35192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_MAIN_AND_PREVIEW    BIT(0)
35292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_MAIN_AND_VIDEO      BIT(1)
35392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_MAIN_AND_THUMB      BIT(2)
35492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_THUMB_AND_MAIN      BIT(3)
35592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_PREVIEW_AND_VIDEO   BIT(4)
35692a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_VIDEO_AND_PREVIEW   BIT(5)
35792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_PREVIEW             BIT(6)
35892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_VIDEO               BIT(7)
35992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_RAW                 BIT(8)
36092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_JPEG_AND_THUMB      BIT(9)
36192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_THUMB_AND_JPEG      BIT(10)
36292a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_RDI0                BIT(11)
36392a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#define VFE_OUTPUTS_RDI1                BIT(12)
36492a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
36592a0538051ff3deeda67521c966f476bed90d23bIliyan Malchevstruct msm_frame_info {
36687c36b2363b5141e7ec5ea5acd831a1d10d092dcIliyan Malchev	uint32_t inst_handle;
36792a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev	uint32_t path;
36892a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev};
36992a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
37092a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev#endif /*__MSM_ISP_H__*/
37192a0538051ff3deeda67521c966f476bed90d23bIliyan Malchev
372