| /* Copyright (c) 2007, 2012-2013, 2018, The Linux Foundation. All rights reserved. |
| * Copyright (C) 2007 Google Incorporated |
| * |
| * This software is licensed under the terms of the GNU General Public |
| * License version 2, as published by the Free Software Foundation, and |
| * may be copied, distributed, and modified under those terms. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| |
| #include <linux/types.h> |
| |
| #include "mdss_fb.h" |
| #include "mdp3_ppp.h" |
| |
| #define MDP_IS_IMGTYPE_BAD(x) ((x) >= MDP_IMGTYPE_LIMIT) |
| |
| /* bg_config_lut not needed since it is same as src */ |
| const uint32_t src_cfg_lut[MDP_IMGTYPE_LIMIT] = { |
| [MDP_RGB_565] = MDP_RGB_565_SRC_REG, |
| [MDP_BGR_565] = MDP_RGB_565_SRC_REG, |
| [MDP_RGB_888] = MDP_RGB_888_SRC_REG, |
| [MDP_BGR_888] = MDP_RGB_888_SRC_REG, |
| [MDP_BGRA_8888] = MDP_RGBX_8888_SRC_REG, |
| [MDP_RGBA_8888] = MDP_RGBX_8888_SRC_REG, |
| [MDP_ARGB_8888] = MDP_RGBX_8888_SRC_REG, |
| [MDP_XRGB_8888] = MDP_RGBX_8888_SRC_REG, |
| [MDP_RGBX_8888] = MDP_RGBX_8888_SRC_REG, |
| [MDP_Y_CRCB_H2V2] = MDP_Y_CBCR_H2V2_SRC_REG, |
| [MDP_Y_CBCR_H2V2] = MDP_Y_CBCR_H2V2_SRC_REG, |
| [MDP_Y_CBCR_H2V2_ADRENO] = MDP_Y_CBCR_H2V2_SRC_REG, |
| [MDP_Y_CBCR_H2V2_VENUS] = MDP_Y_CBCR_H2V2_SRC_REG, |
| [MDP_YCRYCB_H2V1] = MDP_YCRYCB_H2V1_SRC_REG, |
| [MDP_Y_CBCR_H2V1] = MDP_Y_CRCB_H2V1_SRC_REG, |
| [MDP_Y_CRCB_H2V1] = MDP_Y_CRCB_H2V1_SRC_REG, |
| [MDP_BGRX_8888] = MDP_RGBX_8888_SRC_REG, |
| }; |
| |
| const uint32_t out_cfg_lut[MDP_IMGTYPE_LIMIT] = { |
| [MDP_RGB_565] = MDP_RGB_565_DST_REG, |
| [MDP_BGR_565] = MDP_RGB_565_DST_REG, |
| [MDP_RGB_888] = MDP_RGB_888_DST_REG, |
| [MDP_BGR_888] = MDP_RGB_888_DST_REG, |
| [MDP_BGRA_8888] = MDP_RGBX_8888_DST_REG, |
| [MDP_RGBA_8888] = MDP_RGBX_8888_DST_REG, |
| [MDP_ARGB_8888] = MDP_RGBX_8888_DST_REG, |
| [MDP_XRGB_8888] = MDP_RGBX_8888_DST_REG, |
| [MDP_RGBX_8888] = MDP_RGBX_8888_DST_REG, |
| [MDP_Y_CRCB_H2V2] = MDP_Y_CBCR_H2V2_DST_REG, |
| [MDP_Y_CBCR_H2V2] = MDP_Y_CBCR_H2V2_DST_REG, |
| [MDP_Y_CBCR_H2V2_ADRENO] = MDP_Y_CBCR_H2V2_DST_REG, |
| [MDP_Y_CBCR_H2V2_VENUS] = MDP_Y_CBCR_H2V2_DST_REG, |
| [MDP_YCRYCB_H2V1] = MDP_YCRYCB_H2V1_DST_REG, |
| [MDP_Y_CBCR_H2V1] = MDP_Y_CRCB_H2V1_DST_REG, |
| [MDP_Y_CRCB_H2V1] = MDP_Y_CRCB_H2V1_DST_REG, |
| [MDP_BGRX_8888] = MDP_RGBX_8888_DST_REG, |
| }; |
| |
| const uint32_t pack_patt_lut[MDP_IMGTYPE_LIMIT] = { |
| [MDP_RGB_565] = PPP_GET_PACK_PATTERN(0, CLR_B, CLR_G, CLR_R, 8), |
| [MDP_BGR_565] = PPP_GET_PACK_PATTERN(0, CLR_R, CLR_G, CLR_B, 8), |
| [MDP_RGB_888] = PPP_GET_PACK_PATTERN(0, CLR_R, CLR_G, CLR_B, 8), |
| [MDP_BGR_888] = PPP_GET_PACK_PATTERN(0, CLR_B, CLR_G, CLR_R, 8), |
| [MDP_BGRA_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_B, |
| CLR_G, CLR_R, 8), |
| [MDP_RGBA_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_R, |
| CLR_G, CLR_B, 8), |
| [MDP_ARGB_8888] = PPP_GET_PACK_PATTERN(CLR_R, |
| CLR_G, CLR_B, CLR_ALPHA, 8), |
| [MDP_XRGB_8888] = PPP_GET_PACK_PATTERN(CLR_R, |
| CLR_G, CLR_B, CLR_ALPHA, 8), |
| [MDP_RGBX_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_R, |
| CLR_G, CLR_B, 8), |
| [MDP_Y_CRCB_H2V2] = PPP_GET_PACK_PATTERN(0, 0, CLR_CR, CLR_CB, 8), |
| [MDP_Y_CBCR_H2V2] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, CLR_CR, 8), |
| [MDP_Y_CBCR_H2V2_ADRENO] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, |
| CLR_CR, 8), |
| [MDP_Y_CBCR_H2V2_VENUS] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, |
| CLR_CR, 8), |
| [MDP_YCRYCB_H2V1] = PPP_GET_PACK_PATTERN(CLR_Y, |
| CLR_CR, CLR_Y, CLR_CB, 8), |
| [MDP_Y_CBCR_H2V1] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, CLR_CR, 8), |
| [MDP_Y_CRCB_H2V1] = PPP_GET_PACK_PATTERN(0, 0, CLR_CR, CLR_CB, 8), |
| [MDP_BGRX_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_B, |
| CLR_G, CLR_R, 8), |
| }; |
| |
| const uint32_t swapped_pack_patt_lut[MDP_IMGTYPE_LIMIT] = { |
| [MDP_RGB_565] = PPP_GET_PACK_PATTERN(0, CLR_R, CLR_G, CLR_B, 8), |
| [MDP_BGR_565] = PPP_GET_PACK_PATTERN(0, CLR_B, CLR_G, CLR_R, 8), |
| [MDP_RGB_888] = PPP_GET_PACK_PATTERN(0, CLR_B, CLR_G, CLR_R, 8), |
| [MDP_BGR_888] = PPP_GET_PACK_PATTERN(0, CLR_R, CLR_G, CLR_B, 8), |
| [MDP_BGRA_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_R, |
| CLR_G, CLR_B, 8), |
| [MDP_RGBA_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_B, |
| CLR_G, CLR_R, 8), |
| [MDP_ARGB_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_B, |
| CLR_G, CLR_R, 8), |
| [MDP_XRGB_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_B, |
| CLR_G, CLR_R, 8), |
| [MDP_RGBX_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_B, |
| CLR_G, CLR_R, 8), |
| [MDP_Y_CRCB_H2V2] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, CLR_CR, 8), |
| [MDP_Y_CBCR_H2V2] = PPP_GET_PACK_PATTERN(0, 0, CLR_CR, CLR_CB, 8), |
| [MDP_Y_CBCR_H2V2_ADRENO] = PPP_GET_PACK_PATTERN(0, 0, CLR_CR, |
| CLR_CB, 8), |
| [MDP_Y_CBCR_H2V2_VENUS] = PPP_GET_PACK_PATTERN(0, 0, CLR_CR, |
| CLR_CB, 8), |
| [MDP_YCRYCB_H2V1] = PPP_GET_PACK_PATTERN(CLR_Y, |
| CLR_CB, CLR_Y, CLR_CR, 8), |
| [MDP_Y_CBCR_H2V1] = PPP_GET_PACK_PATTERN(0, 0, CLR_CR, CLR_CB, 8), |
| [MDP_Y_CRCB_H2V1] = PPP_GET_PACK_PATTERN(0, 0, CLR_CB, CLR_CR, 8), |
| [MDP_BGRX_8888] = PPP_GET_PACK_PATTERN(CLR_ALPHA, CLR_R, |
| CLR_G, CLR_B, 8), |
| }; |
| |
| const uint32_t dst_op_reg[MDP_IMGTYPE_LIMIT] = { |
| [MDP_Y_CRCB_H2V2] = PPP_OP_DST_CHROMA_420, |
| [MDP_Y_CBCR_H2V2] = PPP_OP_DST_CHROMA_420, |
| [MDP_Y_CBCR_H2V1] = PPP_OP_DST_CHROMA_H2V1, |
| [MDP_Y_CRCB_H2V1] = PPP_OP_DST_CHROMA_H2V1, |
| [MDP_YCRYCB_H2V1] = PPP_OP_DST_CHROMA_H2V1, |
| }; |
| |
| const uint32_t src_op_reg[MDP_IMGTYPE_LIMIT] = { |
| [MDP_Y_CRCB_H2V2] = PPP_OP_SRC_CHROMA_420 | PPP_OP_COLOR_SPACE_YCBCR, |
| [MDP_Y_CBCR_H2V2] = PPP_OP_SRC_CHROMA_420 | PPP_OP_COLOR_SPACE_YCBCR, |
| [MDP_Y_CBCR_H2V2_ADRENO] = PPP_OP_SRC_CHROMA_420 | |
| PPP_OP_COLOR_SPACE_YCBCR, |
| [MDP_Y_CBCR_H2V2_VENUS] = PPP_OP_SRC_CHROMA_420 | |
| PPP_OP_COLOR_SPACE_YCBCR, |
| [MDP_Y_CBCR_H2V1] = PPP_OP_SRC_CHROMA_H2V1, |
| [MDP_Y_CRCB_H2V1] = PPP_OP_SRC_CHROMA_H2V1, |
| [MDP_YCRYCB_H2V1] = PPP_OP_SRC_CHROMA_H2V1, |
| }; |
| |
| const uint32_t bytes_per_pixel[MDP_IMGTYPE_LIMIT] = { |
| [MDP_RGB_565] = 2, |
| [MDP_BGR_565] = 2, |
| [MDP_RGB_888] = 3, |
| [MDP_BGR_888] = 3, |
| [MDP_XRGB_8888] = 4, |
| [MDP_ARGB_8888] = 4, |
| [MDP_RGBA_8888] = 4, |
| [MDP_BGRA_8888] = 4, |
| [MDP_RGBX_8888] = 4, |
| [MDP_Y_CBCR_H2V1] = 1, |
| [MDP_Y_CBCR_H2V2] = 1, |
| [MDP_Y_CBCR_H2V2_ADRENO] = 1, |
| [MDP_Y_CBCR_H2V2_VENUS] = 1, |
| [MDP_Y_CRCB_H2V1] = 1, |
| [MDP_Y_CRCB_H2V2] = 1, |
| [MDP_YCRYCB_H2V1] = 2, |
| [MDP_BGRX_8888] = 4, |
| }; |
| |
| const bool per_pixel_alpha[MDP_IMGTYPE_LIMIT] = { |
| [MDP_BGRA_8888] = true, |
| [MDP_RGBA_8888] = true, |
| [MDP_ARGB_8888] = true, |
| }; |
| |
| const bool multi_plane[MDP_IMGTYPE_LIMIT] = { |
| [MDP_Y_CRCB_H2V2] = true, |
| [MDP_Y_CBCR_H2V2] = true, |
| [MDP_Y_CBCR_H2V1] = true, |
| [MDP_Y_CRCB_H2V1] = true, |
| }; |
| |
| /* lut default */ |
| uint32_t default_pre_lut_val[PPP_LUT_MAX] = { |
| 0x0, |
| 0x151515, |
| 0x1d1d1d, |
| 0x232323, |
| 0x272727, |
| 0x2b2b2b, |
| 0x2f2f2f, |
| 0x333333, |
| 0x363636, |
| 0x393939, |
| 0x3b3b3b, |
| 0x3e3e3e, |
| 0x404040, |
| 0x434343, |
| 0x454545, |
| 0x474747, |
| 0x494949, |
| 0x4b4b4b, |
| 0x4d4d4d, |
| 0x4f4f4f, |
| 0x515151, |
| 0x535353, |
| 0x555555, |
| 0x565656, |
| 0x585858, |
| 0x5a5a5a, |
| 0x5b5b5b, |
| 0x5d5d5d, |
| 0x5e5e5e, |
| 0x606060, |
| 0x616161, |
| 0x636363, |
| 0x646464, |
| 0x666666, |
| 0x676767, |
| 0x686868, |
| 0x6a6a6a, |
| 0x6b6b6b, |
| 0x6c6c6c, |
| 0x6e6e6e, |
| 0x6f6f6f, |
| 0x707070, |
| 0x717171, |
| 0x727272, |
| 0x747474, |
| 0x757575, |
| 0x767676, |
| 0x777777, |
| 0x787878, |
| 0x797979, |
| 0x7a7a7a, |
| 0x7c7c7c, |
| 0x7d7d7d, |
| 0x7e7e7e, |
| 0x7f7f7f, |
| 0x808080, |
| 0x818181, |
| 0x828282, |
| 0x838383, |
| 0x848484, |
| 0x858585, |
| 0x868686, |
| 0x878787, |
| 0x888888, |
| 0x898989, |
| 0x8a8a8a, |
| 0x8b8b8b, |
| 0x8c8c8c, |
| 0x8d8d8d, |
| 0x8e8e8e, |
| 0x8f8f8f, |
| 0x8f8f8f, |
| 0x909090, |
| 0x919191, |
| 0x929292, |
| 0x939393, |
| 0x949494, |
| 0x959595, |
| 0x969696, |
| 0x969696, |
| 0x979797, |
| 0x989898, |
| 0x999999, |
| 0x9a9a9a, |
| 0x9b9b9b, |
| 0x9c9c9c, |
| 0x9c9c9c, |
| 0x9d9d9d, |
| 0x9e9e9e, |
| 0x9f9f9f, |
| 0xa0a0a0, |
| 0xa0a0a0, |
| 0xa1a1a1, |
| 0xa2a2a2, |
| 0xa3a3a3, |
| 0xa4a4a4, |
| 0xa4a4a4, |
| 0xa5a5a5, |
| 0xa6a6a6, |
| 0xa7a7a7, |
| 0xa7a7a7, |
| 0xa8a8a8, |
| 0xa9a9a9, |
| 0xaaaaaa, |
| 0xaaaaaa, |
| 0xababab, |
| 0xacacac, |
| 0xadadad, |
| 0xadadad, |
| 0xaeaeae, |
| 0xafafaf, |
| 0xafafaf, |
| 0xb0b0b0, |
| 0xb1b1b1, |
| 0xb2b2b2, |
| 0xb2b2b2, |
| 0xb3b3b3, |
| 0xb4b4b4, |
| 0xb4b4b4, |
| 0xb5b5b5, |
| 0xb6b6b6, |
| 0xb6b6b6, |
| 0xb7b7b7, |
| 0xb8b8b8, |
| 0xb8b8b8, |
| 0xb9b9b9, |
| 0xbababa, |
| 0xbababa, |
| 0xbbbbbb, |
| 0xbcbcbc, |
| 0xbcbcbc, |
| 0xbdbdbd, |
| 0xbebebe, |
| 0xbebebe, |
| 0xbfbfbf, |
| 0xc0c0c0, |
| 0xc0c0c0, |
| 0xc1c1c1, |
| 0xc1c1c1, |
| 0xc2c2c2, |
| 0xc3c3c3, |
| 0xc3c3c3, |
| 0xc4c4c4, |
| 0xc5c5c5, |
| 0xc5c5c5, |
| 0xc6c6c6, |
| 0xc6c6c6, |
| 0xc7c7c7, |
| 0xc8c8c8, |
| 0xc8c8c8, |
| 0xc9c9c9, |
| 0xc9c9c9, |
| 0xcacaca, |
| 0xcbcbcb, |
| 0xcbcbcb, |
| 0xcccccc, |
| 0xcccccc, |
| 0xcdcdcd, |
| 0xcecece, |
| 0xcecece, |
| 0xcfcfcf, |
| 0xcfcfcf, |
| 0xd0d0d0, |
| 0xd0d0d0, |
| 0xd1d1d1, |
| 0xd2d2d2, |
| 0xd2d2d2, |
| 0xd3d3d3, |
| 0xd3d3d3, |
| 0xd4d4d4, |
| 0xd4d4d4, |
| 0xd5d5d5, |
| 0xd6d6d6, |
| 0xd6d6d6, |
| 0xd7d7d7, |
| 0xd7d7d7, |
| 0xd8d8d8, |
| 0xd8d8d8, |
| 0xd9d9d9, |
| 0xd9d9d9, |
| 0xdadada, |
| 0xdbdbdb, |
| 0xdbdbdb, |
| 0xdcdcdc, |
| 0xdcdcdc, |
| 0xdddddd, |
| 0xdddddd, |
| 0xdedede, |
| 0xdedede, |
| 0xdfdfdf, |
| 0xdfdfdf, |
| 0xe0e0e0, |
| 0xe0e0e0, |
| 0xe1e1e1, |
| 0xe1e1e1, |
| 0xe2e2e2, |
| 0xe3e3e3, |
| 0xe3e3e3, |
| 0xe4e4e4, |
| 0xe4e4e4, |
| 0xe5e5e5, |
| 0xe5e5e5, |
| 0xe6e6e6, |
| 0xe6e6e6, |
| 0xe7e7e7, |
| 0xe7e7e7, |
| 0xe8e8e8, |
| 0xe8e8e8, |
| 0xe9e9e9, |
| 0xe9e9e9, |
| 0xeaeaea, |
| 0xeaeaea, |
| 0xebebeb, |
| 0xebebeb, |
| 0xececec, |
| 0xececec, |
| 0xededed, |
| 0xededed, |
| 0xeeeeee, |
| 0xeeeeee, |
| 0xefefef, |
| 0xefefef, |
| 0xf0f0f0, |
| 0xf0f0f0, |
| 0xf1f1f1, |
| 0xf1f1f1, |
| 0xf2f2f2, |
| 0xf2f2f2, |
| 0xf2f2f2, |
| 0xf3f3f3, |
| 0xf3f3f3, |
| 0xf4f4f4, |
| 0xf4f4f4, |
| 0xf5f5f5, |
| 0xf5f5f5, |
| 0xf6f6f6, |
| 0xf6f6f6, |
| 0xf7f7f7, |
| 0xf7f7f7, |
| 0xf8f8f8, |
| 0xf8f8f8, |
| 0xf9f9f9, |
| 0xf9f9f9, |
| 0xfafafa, |
| 0xfafafa, |
| 0xfafafa, |
| 0xfbfbfb, |
| 0xfbfbfb, |
| 0xfcfcfc, |
| 0xfcfcfc, |
| 0xfdfdfd, |
| 0xfdfdfd, |
| 0xfefefe, |
| 0xfefefe, |
| 0xffffff, |
| 0xffffff, |
| }; |
| |
| uint32_t default_post_lut_val[PPP_LUT_MAX] = { |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x0, |
| 0x10101, |
| 0x10101, |
| 0x10101, |
| 0x10101, |
| 0x10101, |
| 0x10101, |
| 0x10101, |
| 0x10101, |
| 0x10101, |
| 0x10101, |
| 0x20202, |
| 0x20202, |
| 0x20202, |
| 0x20202, |
| 0x20202, |
| 0x20202, |
| 0x30303, |
| 0x30303, |
| 0x30303, |
| 0x30303, |
| 0x30303, |
| 0x40404, |
| 0x40404, |
| 0x40404, |
| 0x40404, |
| 0x40404, |
| 0x50505, |
| 0x50505, |
| 0x50505, |
| 0x50505, |
| 0x60606, |
| 0x60606, |
| 0x60606, |
| 0x70707, |
| 0x70707, |
| 0x70707, |
| 0x70707, |
| 0x80808, |
| 0x80808, |
| 0x80808, |
| 0x90909, |
| 0x90909, |
| 0xa0a0a, |
| 0xa0a0a, |
| 0xa0a0a, |
| 0xb0b0b, |
| 0xb0b0b, |
| 0xb0b0b, |
| 0xc0c0c, |
| 0xc0c0c, |
| 0xd0d0d, |
| 0xd0d0d, |
| 0xe0e0e, |
| 0xe0e0e, |
| 0xe0e0e, |
| 0xf0f0f, |
| 0xf0f0f, |
| 0x101010, |
| 0x101010, |
| 0x111111, |
| 0x111111, |
| 0x121212, |
| 0x121212, |
| 0x131313, |
| 0x131313, |
| 0x141414, |
| 0x151515, |
| 0x151515, |
| 0x161616, |
| 0x161616, |
| 0x171717, |
| 0x171717, |
| 0x181818, |
| 0x191919, |
| 0x191919, |
| 0x1a1a1a, |
| 0x1b1b1b, |
| 0x1b1b1b, |
| 0x1c1c1c, |
| 0x1c1c1c, |
| 0x1d1d1d, |
| 0x1e1e1e, |
| 0x1f1f1f, |
| 0x1f1f1f, |
| 0x202020, |
| 0x212121, |
| 0x212121, |
| 0x222222, |
| 0x232323, |
| 0x242424, |
| 0x242424, |
| 0x252525, |
| 0x262626, |
| 0x272727, |
| 0x272727, |
| 0x282828, |
| 0x292929, |
| 0x2a2a2a, |
| 0x2b2b2b, |
| 0x2c2c2c, |
| 0x2c2c2c, |
| 0x2d2d2d, |
| 0x2e2e2e, |
| 0x2f2f2f, |
| 0x303030, |
| 0x313131, |
| 0x323232, |
| 0x333333, |
| 0x333333, |
| 0x343434, |
| 0x353535, |
| 0x363636, |
| 0x373737, |
| 0x383838, |
| 0x393939, |
| 0x3a3a3a, |
| 0x3b3b3b, |
| 0x3c3c3c, |
| 0x3d3d3d, |
| 0x3e3e3e, |
| 0x3f3f3f, |
| 0x404040, |
| 0x414141, |
| 0x424242, |
| 0x434343, |
| 0x444444, |
| 0x464646, |
| 0x474747, |
| 0x484848, |
| 0x494949, |
| 0x4a4a4a, |
| 0x4b4b4b, |
| 0x4c4c4c, |
| 0x4d4d4d, |
| 0x4f4f4f, |
| 0x505050, |
| 0x515151, |
| 0x525252, |
| 0x535353, |
| 0x545454, |
| 0x565656, |
| 0x575757, |
| 0x585858, |
| 0x595959, |
| 0x5b5b5b, |
| 0x5c5c5c, |
| 0x5d5d5d, |
| 0x5e5e5e, |
| 0x606060, |
| 0x616161, |
| 0x626262, |
| 0x646464, |
| 0x656565, |
| 0x666666, |
| 0x686868, |
| 0x696969, |
| 0x6a6a6a, |
| 0x6c6c6c, |
| 0x6d6d6d, |
| 0x6f6f6f, |
| 0x707070, |
| 0x717171, |
| 0x737373, |
| 0x747474, |
| 0x767676, |
| 0x777777, |
| 0x797979, |
| 0x7a7a7a, |
| 0x7c7c7c, |
| 0x7d7d7d, |
| 0x7f7f7f, |
| 0x808080, |
| 0x828282, |
| 0x838383, |
| 0x858585, |
| 0x868686, |
| 0x888888, |
| 0x898989, |
| 0x8b8b8b, |
| 0x8d8d8d, |
| 0x8e8e8e, |
| 0x909090, |
| 0x919191, |
| 0x939393, |
| 0x959595, |
| 0x969696, |
| 0x989898, |
| 0x9a9a9a, |
| 0x9b9b9b, |
| 0x9d9d9d, |
| 0x9f9f9f, |
| 0xa1a1a1, |
| 0xa2a2a2, |
| 0xa4a4a4, |
| 0xa6a6a6, |
| 0xa7a7a7, |
| 0xa9a9a9, |
| 0xababab, |
| 0xadadad, |
| 0xafafaf, |
| 0xb0b0b0, |
| 0xb2b2b2, |
| 0xb4b4b4, |
| 0xb6b6b6, |
| 0xb8b8b8, |
| 0xbababa, |
| 0xbbbbbb, |
| 0xbdbdbd, |
| 0xbfbfbf, |
| 0xc1c1c1, |
| 0xc3c3c3, |
| 0xc5c5c5, |
| 0xc7c7c7, |
| 0xc9c9c9, |
| 0xcbcbcb, |
| 0xcdcdcd, |
| 0xcfcfcf, |
| 0xd1d1d1, |
| 0xd3d3d3, |
| 0xd5d5d5, |
| 0xd7d7d7, |
| 0xd9d9d9, |
| 0xdbdbdb, |
| 0xdddddd, |
| 0xdfdfdf, |
| 0xe1e1e1, |
| 0xe3e3e3, |
| 0xe5e5e5, |
| 0xe7e7e7, |
| 0xe9e9e9, |
| 0xebebeb, |
| 0xeeeeee, |
| 0xf0f0f0, |
| 0xf2f2f2, |
| 0xf4f4f4, |
| 0xf6f6f6, |
| 0xf8f8f8, |
| 0xfbfbfb, |
| 0xfdfdfd, |
| 0xffffff, |
| }; |
| |
| struct ppp_csc_table rgb2yuv = { |
| .fwd_matrix = { |
| 0x83, |
| 0x102, |
| 0x32, |
| 0xffb5, |
| 0xff6c, |
| 0xe1, |
| 0xe1, |
| 0xff45, |
| 0xffdc, |
| }, |
| .rev_matrix = { |
| 0x254, |
| 0x0, |
| 0x331, |
| 0x254, |
| 0xff38, |
| 0xfe61, |
| 0x254, |
| 0x409, |
| 0x0, |
| }, |
| .bv = { |
| 0x10, |
| 0x80, |
| 0x80, |
| }, |
| .lv = { |
| 0x10, |
| 0xeb, |
| 0x10, |
| 0xf0, |
| }, |
| }; |
| |
| struct ppp_csc_table default_table2 = { |
| .fwd_matrix = { |
| 0x5d, |
| 0x13a, |
| 0x20, |
| 0xffcd, |
| 0xff54, |
| 0xe1, |
| 0xe1, |
| 0xff35, |
| }, |
| .rev_matrix = { |
| 0x254, |
| 0x0, |
| 0x396, |
| 0x254, |
| 0xff94, |
| 0xfef0, |
| 0x254, |
| 0x43a, |
| 0x0, |
| }, |
| .bv = { |
| 0x10, |
| 0x80, |
| 0x80, |
| }, |
| .lv = { |
| 0x10, |
| 0xeb, |
| 0x10, |
| 0xf0, |
| }, |
| }; |
| |
| const struct ppp_table upscale_table[PPP_UPSCALE_MAX] = { |
| { 0x5fffc, 0x0 }, |
| { 0x50200, 0x7fc00000 }, |
| { 0x5fffc, 0xff80000d }, |
| { 0x50204, 0x7ec003f9 }, |
| { 0x5fffc, 0xfec0001c }, |
| { 0x50208, 0x7d4003f3 }, |
| { 0x5fffc, 0xfe40002b }, |
| { 0x5020c, 0x7b8003ed }, |
| { 0x5fffc, 0xfd80003c }, |
| { 0x50210, 0x794003e8 }, |
| { 0x5fffc, 0xfcc0004d }, |
| { 0x50214, 0x76c003e4 }, |
| { 0x5fffc, 0xfc40005f }, |
| { 0x50218, 0x73c003e0 }, |
| { 0x5fffc, 0xfb800071 }, |
| { 0x5021c, 0x708003de }, |
| { 0x5fffc, 0xfac00085 }, |
| { 0x50220, 0x6d0003db }, |
| { 0x5fffc, 0xfa000098 }, |
| { 0x50224, 0x698003d9 }, |
| { 0x5fffc, 0xf98000ac }, |
| { 0x50228, 0x654003d8 }, |
| { 0x5fffc, 0xf8c000c1 }, |
| { 0x5022c, 0x610003d7 }, |
| { 0x5fffc, 0xf84000d5 }, |
| { 0x50230, 0x5c8003d7 }, |
| { 0x5fffc, 0xf7c000e9 }, |
| { 0x50234, 0x580003d7 }, |
| { 0x5fffc, 0xf74000fd }, |
| { 0x50238, 0x534003d8 }, |
| { 0x5fffc, 0xf6c00112 }, |
| { 0x5023c, 0x4e8003d8 }, |
| { 0x5fffc, 0xf6800126 }, |
| { 0x50240, 0x494003da }, |
| { 0x5fffc, 0xf600013a }, |
| { 0x50244, 0x448003db }, |
| { 0x5fffc, 0xf600014d }, |
| { 0x50248, 0x3f4003dd }, |
| { 0x5fffc, 0xf5c00160 }, |
| { 0x5024c, 0x3a4003df }, |
| { 0x5fffc, 0xf5c00172 }, |
| { 0x50250, 0x354003e1 }, |
| { 0x5fffc, 0xf5c00184 }, |
| { 0x50254, 0x304003e3 }, |
| { 0x5fffc, 0xf6000195 }, |
| { 0x50258, 0x2b0003e6 }, |
| { 0x5fffc, 0xf64001a6 }, |
| { 0x5025c, 0x260003e8 }, |
| { 0x5fffc, 0xf6c001b4 }, |
| { 0x50260, 0x214003eb }, |
| { 0x5fffc, 0xf78001c2 }, |
| { 0x50264, 0x1c4003ee }, |
| { 0x5fffc, 0xf80001cf }, |
| { 0x50268, 0x17c003f1 }, |
| { 0x5fffc, 0xf90001db }, |
| { 0x5026c, 0x134003f3 }, |
| { 0x5fffc, 0xfa0001e5 }, |
| { 0x50270, 0xf0003f6 }, |
| { 0x5fffc, 0xfb4001ee }, |
| { 0x50274, 0xac003f9 }, |
| { 0x5fffc, 0xfcc001f5 }, |
| { 0x50278, 0x70003fb }, |
| { 0x5fffc, 0xfe4001fb }, |
| { 0x5027c, 0x34003fe }, |
| }; |
| |
| const struct ppp_table mdp_gaussian_blur_table[PPP_BLUR_SCALE_MAX] = { |
| /* max variance */ |
| { 0x5fffc, 0x20000080 }, |
| { 0x50280, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50284, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50288, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5028c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50290, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50294, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50298, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5029c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502a0, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502a4, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502a8, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502ac, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502b0, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502b4, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502b8, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502bc, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502c0, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502c4, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502c8, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502cc, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502d0, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502d4, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502d8, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502dc, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502e0, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502e4, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502e8, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502ec, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502f0, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502f4, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502f8, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x502fc, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50300, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50304, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50308, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5030c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50310, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50314, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50318, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5031c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50320, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50324, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50328, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5032c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50330, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50334, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50338, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5033c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50340, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50344, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50348, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5034c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50350, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50354, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50358, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5035c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50360, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50364, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50368, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5036c, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50370, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50374, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x50378, 0x20000080 }, |
| { 0x5fffc, 0x20000080 }, |
| { 0x5037c, 0x20000080 }, |
| }; |
| |
| const struct ppp_table downscale_x_table_pt2topt4[] = { |
| { 0x5fffc, 0x740008c }, |
| { 0x50280, 0x33800088 }, |
| { 0x5fffc, 0x800008e }, |
| { 0x50284, 0x33400084 }, |
| { 0x5fffc, 0x8400092 }, |
| { 0x50288, 0x33000080 }, |
| { 0x5fffc, 0x9000094 }, |
| { 0x5028c, 0x3300007b }, |
| { 0x5fffc, 0x9c00098 }, |
| { 0x50290, 0x32400077 }, |
| { 0x5fffc, 0xa40009b }, |
| { 0x50294, 0x32000073 }, |
| { 0x5fffc, 0xb00009d }, |
| { 0x50298, 0x31c0006f }, |
| { 0x5fffc, 0xbc000a0 }, |
| { 0x5029c, 0x3140006b }, |
| { 0x5fffc, 0xc8000a2 }, |
| { 0x502a0, 0x31000067 }, |
| { 0x5fffc, 0xd8000a5 }, |
| { 0x502a4, 0x30800062 }, |
| { 0x5fffc, 0xe4000a8 }, |
| { 0x502a8, 0x2fc0005f }, |
| { 0x5fffc, 0xec000aa }, |
| { 0x502ac, 0x2fc0005b }, |
| { 0x5fffc, 0xf8000ad }, |
| { 0x502b0, 0x2f400057 }, |
| { 0x5fffc, 0x108000b0 }, |
| { 0x502b4, 0x2e400054 }, |
| { 0x5fffc, 0x114000b2 }, |
| { 0x502b8, 0x2e000050 }, |
| { 0x5fffc, 0x124000b4 }, |
| { 0x502bc, 0x2d80004c }, |
| { 0x5fffc, 0x130000b6 }, |
| { 0x502c0, 0x2d000049 }, |
| { 0x5fffc, 0x140000b8 }, |
| { 0x502c4, 0x2c800045 }, |
| { 0x5fffc, 0x150000b9 }, |
| { 0x502c8, 0x2c000042 }, |
| { 0x5fffc, 0x15c000bd }, |
| { 0x502cc, 0x2b40003e }, |
| { 0x5fffc, 0x16c000bf }, |
| { 0x502d0, 0x2a80003b }, |
| { 0x5fffc, 0x17c000bf }, |
| { 0x502d4, 0x2a000039 }, |
| { 0x5fffc, 0x188000c2 }, |
| { 0x502d8, 0x29400036 }, |
| { 0x5fffc, 0x19c000c4 }, |
| { 0x502dc, 0x28800032 }, |
| { 0x5fffc, 0x1ac000c5 }, |
| { 0x502e0, 0x2800002f }, |
| { 0x5fffc, 0x1bc000c7 }, |
| { 0x502e4, 0x2740002c }, |
| { 0x5fffc, 0x1cc000c8 }, |
| { 0x502e8, 0x26c00029 }, |
| { 0x5fffc, 0x1dc000c9 }, |
| { 0x502ec, 0x26000027 }, |
| { 0x5fffc, 0x1ec000cc }, |
| { 0x502f0, 0x25000024 }, |
| { 0x5fffc, 0x200000cc }, |
| { 0x502f4, 0x24800021 }, |
| { 0x5fffc, 0x210000cd }, |
| { 0x502f8, 0x23800020 }, |
| { 0x5fffc, 0x220000ce }, |
| { 0x502fc, 0x2300001d }, |
| }; |
| |
| static const struct ppp_table downscale_x_table_pt4topt6[] = { |
| { 0x5fffc, 0x740008c }, |
| { 0x50280, 0x33800088 }, |
| { 0x5fffc, 0x800008e }, |
| { 0x50284, 0x33400084 }, |
| { 0x5fffc, 0x8400092 }, |
| { 0x50288, 0x33000080 }, |
| { 0x5fffc, 0x9000094 }, |
| { 0x5028c, 0x3300007b }, |
| { 0x5fffc, 0x9c00098 }, |
| { 0x50290, 0x32400077 }, |
| { 0x5fffc, 0xa40009b }, |
| { 0x50294, 0x32000073 }, |
| { 0x5fffc, 0xb00009d }, |
| { 0x50298, 0x31c0006f }, |
| { 0x5fffc, 0xbc000a0 }, |
| { 0x5029c, 0x3140006b }, |
| { 0x5fffc, 0xc8000a2 }, |
| { 0x502a0, 0x31000067 }, |
| { 0x5fffc, 0xd8000a5 }, |
| { 0x502a4, 0x30800062 }, |
| { 0x5fffc, 0xe4000a8 }, |
| { 0x502a8, 0x2fc0005f }, |
| { 0x5fffc, 0xec000aa }, |
| { 0x502ac, 0x2fc0005b }, |
| { 0x5fffc, 0xf8000ad }, |
| { 0x502b0, 0x2f400057 }, |
| { 0x5fffc, 0x108000b0 }, |
| { 0x502b4, 0x2e400054 }, |
| { 0x5fffc, 0x114000b2 }, |
| { 0x502b8, 0x2e000050 }, |
| { 0x5fffc, 0x124000b4 }, |
| { 0x502bc, 0x2d80004c }, |
| { 0x5fffc, 0x130000b6 }, |
| { 0x502c0, 0x2d000049 }, |
| { 0x5fffc, 0x140000b8 }, |
| { 0x502c4, 0x2c800045 }, |
| { 0x5fffc, 0x150000b9 }, |
| { 0x502c8, 0x2c000042 }, |
| { 0x5fffc, 0x15c000bd }, |
| { 0x502cc, 0x2b40003e }, |
| { 0x5fffc, 0x16c000bf }, |
| { 0x502d0, 0x2a80003b }, |
| { 0x5fffc, 0x17c000bf }, |
| { 0x502d4, 0x2a000039 }, |
| { 0x5fffc, 0x188000c2 }, |
| { 0x502d8, 0x29400036 }, |
| { 0x5fffc, 0x19c000c4 }, |
| { 0x502dc, 0x28800032 }, |
| { 0x5fffc, 0x1ac000c5 }, |
| { 0x502e0, 0x2800002f }, |
| { 0x5fffc, 0x1bc000c7 }, |
| { 0x502e4, 0x2740002c }, |
| { 0x5fffc, 0x1cc000c8 }, |
| { 0x502e8, 0x26c00029 }, |
| { 0x5fffc, 0x1dc000c9 }, |
| { 0x502ec, 0x26000027 }, |
| { 0x5fffc, 0x1ec000cc }, |
| { 0x502f0, 0x25000024 }, |
| { 0x5fffc, 0x200000cc }, |
| { 0x502f4, 0x24800021 }, |
| { 0x5fffc, 0x210000cd }, |
| { 0x502f8, 0x23800020 }, |
| { 0x5fffc, 0x220000ce }, |
| { 0x502fc, 0x2300001d }, |
| }; |
| |
| static const struct ppp_table downscale_x_table_pt6topt8[] = { |
| { 0x5fffc, 0xfe000070 }, |
| { 0x50280, 0x4bc00068 }, |
| { 0x5fffc, 0xfe000078 }, |
| { 0x50284, 0x4bc00060 }, |
| { 0x5fffc, 0xfe000080 }, |
| { 0x50288, 0x4b800059 }, |
| { 0x5fffc, 0xfe000089 }, |
| { 0x5028c, 0x4b000052 }, |
| { 0x5fffc, 0xfe400091 }, |
| { 0x50290, 0x4a80004b }, |
| { 0x5fffc, 0xfe40009a }, |
| { 0x50294, 0x4a000044 }, |
| { 0x5fffc, 0xfe8000a3 }, |
| { 0x50298, 0x4940003d }, |
| { 0x5fffc, 0xfec000ac }, |
| { 0x5029c, 0x48400037 }, |
| { 0x5fffc, 0xff0000b4 }, |
| { 0x502a0, 0x47800031 }, |
| { 0x5fffc, 0xff8000bd }, |
| { 0x502a4, 0x4640002b }, |
| { 0x5fffc, 0xc5 }, |
| { 0x502a8, 0x45000026 }, |
| { 0x5fffc, 0x8000ce }, |
| { 0x502ac, 0x43800021 }, |
| { 0x5fffc, 0x10000d6 }, |
| { 0x502b0, 0x4240001c }, |
| { 0x5fffc, 0x18000df }, |
| { 0x502b4, 0x40800018 }, |
| { 0x5fffc, 0x24000e6 }, |
| { 0x502b8, 0x3f000014 }, |
| { 0x5fffc, 0x30000ee }, |
| { 0x502bc, 0x3d400010 }, |
| { 0x5fffc, 0x40000f5 }, |
| { 0x502c0, 0x3b80000c }, |
| { 0x5fffc, 0x50000fc }, |
| { 0x502c4, 0x39800009 }, |
| { 0x5fffc, 0x6000102 }, |
| { 0x502c8, 0x37c00006 }, |
| { 0x5fffc, 0x7000109 }, |
| { 0x502cc, 0x35800004 }, |
| { 0x5fffc, 0x840010e }, |
| { 0x502d0, 0x33800002 }, |
| { 0x5fffc, 0x9800114 }, |
| { 0x502d4, 0x31400000 }, |
| { 0x5fffc, 0xac00119 }, |
| { 0x502d8, 0x2f4003fe }, |
| { 0x5fffc, 0xc40011e }, |
| { 0x502dc, 0x2d0003fc }, |
| { 0x5fffc, 0xdc00121 }, |
| { 0x502e0, 0x2b0003fb }, |
| { 0x5fffc, 0xf400125 }, |
| { 0x502e4, 0x28c003fa }, |
| { 0x5fffc, 0x11000128 }, |
| { 0x502e8, 0x268003f9 }, |
| { 0x5fffc, 0x12c0012a }, |
| { 0x502ec, 0x244003f9 }, |
| { 0x5fffc, 0x1480012c }, |
| { 0x502f0, 0x224003f8 }, |
| { 0x5fffc, 0x1640012e }, |
| { 0x502f4, 0x200003f8 }, |
| { 0x5fffc, 0x1800012f }, |
| { 0x502f8, 0x1e0003f8 }, |
| { 0x5fffc, 0x1a00012f }, |
| { 0x502fc, 0x1c0003f8 }, |
| }; |
| |
| static const struct ppp_table downscale_x_table_pt8topt1[] = { |
| { 0x5fffc, 0x0 }, |
| { 0x50280, 0x7fc00000 }, |
| { 0x5fffc, 0xff80000d }, |
| { 0x50284, 0x7ec003f9 }, |
| { 0x5fffc, 0xfec0001c }, |
| { 0x50288, 0x7d4003f3 }, |
| { 0x5fffc, 0xfe40002b }, |
| { 0x5028c, 0x7b8003ed }, |
| { 0x5fffc, 0xfd80003c }, |
| { 0x50290, 0x794003e8 }, |
| { 0x5fffc, 0xfcc0004d }, |
| { 0x50294, 0x76c003e4 }, |
| { 0x5fffc, 0xfc40005f }, |
| { 0x50298, 0x73c003e0 }, |
| { 0x5fffc, 0xfb800071 }, |
| { 0x5029c, 0x708003de }, |
| { 0x5fffc, 0xfac00085 }, |
| { 0x502a0, 0x6d0003db }, |
| { 0x5fffc, 0xfa000098 }, |
| { 0x502a4, 0x698003d9 }, |
| { 0x5fffc, 0xf98000ac }, |
| { 0x502a8, 0x654003d8 }, |
| { 0x5fffc, 0xf8c000c1 }, |
| { 0x502ac, 0x610003d7 }, |
| { 0x5fffc, 0xf84000d5 }, |
| { 0x502b0, 0x5c8003d7 }, |
| { 0x5fffc, 0xf7c000e9 }, |
| { 0x502b4, 0x580003d7 }, |
| { 0x5fffc, 0xf74000fd }, |
| { 0x502b8, 0x534003d8 }, |
| { 0x5fffc, 0xf6c00112 }, |
| { 0x502bc, 0x4e8003d8 }, |
| { 0x5fffc, 0xf6800126 }, |
| { 0x502c0, 0x494003da }, |
| { 0x5fffc, 0xf600013a }, |
| { 0x502c4, 0x448003db }, |
| { 0x5fffc, 0xf600014d }, |
| { 0x502c8, 0x3f4003dd }, |
| { 0x5fffc, 0xf5c00160 }, |
| { 0x502cc, 0x3a4003df }, |
| { 0x5fffc, 0xf5c00172 }, |
| { 0x502d0, 0x354003e1 }, |
| { 0x5fffc, 0xf5c00184 }, |
| { 0x502d4, 0x304003e3 }, |
| { 0x5fffc, 0xf6000195 }, |
| { 0x502d8, 0x2b0003e6 }, |
| { 0x5fffc, 0xf64001a6 }, |
| { 0x502dc, 0x260003e8 }, |
| { 0x5fffc, 0xf6c001b4 }, |
| { 0x502e0, 0x214003eb }, |
| { 0x5fffc, 0xf78001c2 }, |
| { 0x502e4, 0x1c4003ee }, |
| { 0x5fffc, 0xf80001cf }, |
| { 0x502e8, 0x17c003f1 }, |
| { 0x5fffc, 0xf90001db }, |
| { 0x502ec, 0x134003f3 }, |
| { 0x5fffc, 0xfa0001e5 }, |
| { 0x502f0, 0xf0003f6 }, |
| { 0x5fffc, 0xfb4001ee }, |
| { 0x502f4, 0xac003f9 }, |
| { 0x5fffc, 0xfcc001f5 }, |
| { 0x502f8, 0x70003fb }, |
| { 0x5fffc, 0xfe4001fb }, |
| { 0x502fc, 0x34003fe }, |
| }; |
| |
| static const struct ppp_table *downscale_x_table[PPP_DOWNSCALE_MAX] = { |
| [PPP_DOWNSCALE_PT2TOPT4] = downscale_x_table_pt2topt4, |
| [PPP_DOWNSCALE_PT4TOPT6] = downscale_x_table_pt4topt6, |
| [PPP_DOWNSCALE_PT6TOPT8] = downscale_x_table_pt6topt8, |
| [PPP_DOWNSCALE_PT8TOPT1] = downscale_x_table_pt8topt1, |
| }; |
| |
| static const struct ppp_table downscale_y_table_pt2topt4[] = { |
| { 0x5fffc, 0x740008c }, |
| { 0x50300, 0x33800088 }, |
| { 0x5fffc, 0x800008e }, |
| { 0x50304, 0x33400084 }, |
| { 0x5fffc, 0x8400092 }, |
| { 0x50308, 0x33000080 }, |
| { 0x5fffc, 0x9000094 }, |
| { 0x5030c, 0x3300007b }, |
| { 0x5fffc, 0x9c00098 }, |
| { 0x50310, 0x32400077 }, |
| { 0x5fffc, 0xa40009b }, |
| { 0x50314, 0x32000073 }, |
| { 0x5fffc, 0xb00009d }, |
| { 0x50318, 0x31c0006f }, |
| { 0x5fffc, 0xbc000a0 }, |
| { 0x5031c, 0x3140006b }, |
| { 0x5fffc, 0xc8000a2 }, |
| { 0x50320, 0x31000067 }, |
| { 0x5fffc, 0xd8000a5 }, |
| { 0x50324, 0x30800062 }, |
| { 0x5fffc, 0xe4000a8 }, |
| { 0x50328, 0x2fc0005f }, |
| { 0x5fffc, 0xec000aa }, |
| { 0x5032c, 0x2fc0005b }, |
| { 0x5fffc, 0xf8000ad }, |
| { 0x50330, 0x2f400057 }, |
| { 0x5fffc, 0x108000b0 }, |
| { 0x50334, 0x2e400054 }, |
| { 0x5fffc, 0x114000b2 }, |
| { 0x50338, 0x2e000050 }, |
| { 0x5fffc, 0x124000b4 }, |
| { 0x5033c, 0x2d80004c }, |
| { 0x5fffc, 0x130000b6 }, |
| { 0x50340, 0x2d000049 }, |
| { 0x5fffc, 0x140000b8 }, |
| { 0x50344, 0x2c800045 }, |
| { 0x5fffc, 0x150000b9 }, |
| { 0x50348, 0x2c000042 }, |
| { 0x5fffc, 0x15c000bd }, |
| { 0x5034c, 0x2b40003e }, |
| { 0x5fffc, 0x16c000bf }, |
| { 0x50350, 0x2a80003b }, |
| { 0x5fffc, 0x17c000bf }, |
| { 0x50354, 0x2a000039 }, |
| { 0x5fffc, 0x188000c2 }, |
| { 0x50358, 0x29400036 }, |
| { 0x5fffc, 0x19c000c4 }, |
| { 0x5035c, 0x28800032 }, |
| { 0x5fffc, 0x1ac000c5 }, |
| { 0x50360, 0x2800002f }, |
| { 0x5fffc, 0x1bc000c7 }, |
| { 0x50364, 0x2740002c }, |
| { 0x5fffc, 0x1cc000c8 }, |
| { 0x50368, 0x26c00029 }, |
| { 0x5fffc, 0x1dc000c9 }, |
| { 0x5036c, 0x26000027 }, |
| { 0x5fffc, 0x1ec000cc }, |
| { 0x50370, 0x25000024 }, |
| { 0x5fffc, 0x200000cc }, |
| { 0x50374, 0x24800021 }, |
| { 0x5fffc, 0x210000cd }, |
| { 0x50378, 0x23800020 }, |
| { 0x5fffc, 0x220000ce }, |
| { 0x5037c, 0x2300001d }, |
| }; |
| |
| static const struct ppp_table downscale_y_table_pt4topt6[] = { |
| { 0x5fffc, 0x740008c }, |
| { 0x50300, 0x33800088 }, |
| { 0x5fffc, 0x800008e }, |
| { 0x50304, 0x33400084 }, |
| { 0x5fffc, 0x8400092 }, |
| { 0x50308, 0x33000080 }, |
| { 0x5fffc, 0x9000094 }, |
| { 0x5030c, 0x3300007b }, |
| { 0x5fffc, 0x9c00098 }, |
| { 0x50310, 0x32400077 }, |
| { 0x5fffc, 0xa40009b }, |
| { 0x50314, 0x32000073 }, |
| { 0x5fffc, 0xb00009d }, |
| { 0x50318, 0x31c0006f }, |
| { 0x5fffc, 0xbc000a0 }, |
| { 0x5031c, 0x3140006b }, |
| { 0x5fffc, 0xc8000a2 }, |
| { 0x50320, 0x31000067 }, |
| { 0x5fffc, 0xd8000a5 }, |
| { 0x50324, 0x30800062 }, |
| { 0x5fffc, 0xe4000a8 }, |
| { 0x50328, 0x2fc0005f }, |
| { 0x5fffc, 0xec000aa }, |
| { 0x5032c, 0x2fc0005b }, |
| { 0x5fffc, 0xf8000ad }, |
| { 0x50330, 0x2f400057 }, |
| { 0x5fffc, 0x108000b0 }, |
| { 0x50334, 0x2e400054 }, |
| { 0x5fffc, 0x114000b2 }, |
| { 0x50338, 0x2e000050 }, |
| { 0x5fffc, 0x124000b4 }, |
| { 0x5033c, 0x2d80004c }, |
| { 0x5fffc, 0x130000b6 }, |
| { 0x50340, 0x2d000049 }, |
| { 0x5fffc, 0x140000b8 }, |
| { 0x50344, 0x2c800045 }, |
| { 0x5fffc, 0x150000b9 }, |
| { 0x50348, 0x2c000042 }, |
| { 0x5fffc, 0x15c000bd }, |
| { 0x5034c, 0x2b40003e }, |
| { 0x5fffc, 0x16c000bf }, |
| { 0x50350, 0x2a80003b }, |
| { 0x5fffc, 0x17c000bf }, |
| { 0x50354, 0x2a000039 }, |
| { 0x5fffc, 0x188000c2 }, |
| { 0x50358, 0x29400036 }, |
| { 0x5fffc, 0x19c000c4 }, |
| { 0x5035c, 0x28800032 }, |
| { 0x5fffc, 0x1ac000c5 }, |
| { 0x50360, 0x2800002f }, |
| { 0x5fffc, 0x1bc000c7 }, |
| { 0x50364, 0x2740002c }, |
| { 0x5fffc, 0x1cc000c8 }, |
| { 0x50368, 0x26c00029 }, |
| { 0x5fffc, 0x1dc000c9 }, |
| { 0x5036c, 0x26000027 }, |
| { 0x5fffc, 0x1ec000cc }, |
| { 0x50370, 0x25000024 }, |
| { 0x5fffc, 0x200000cc }, |
| { 0x50374, 0x24800021 }, |
| { 0x5fffc, 0x210000cd }, |
| { 0x50378, 0x23800020 }, |
| { 0x5fffc, 0x220000ce }, |
| { 0x5037c, 0x2300001d }, |
| }; |
| |
| static const struct ppp_table downscale_y_table_pt6topt8[] = { |
| { 0x5fffc, 0xfe000070 }, |
| { 0x50300, 0x4bc00068 }, |
| { 0x5fffc, 0xfe000078 }, |
| { 0x50304, 0x4bc00060 }, |
| { 0x5fffc, 0xfe000080 }, |
| { 0x50308, 0x4b800059 }, |
| { 0x5fffc, 0xfe000089 }, |
| { 0x5030c, 0x4b000052 }, |
| { 0x5fffc, 0xfe400091 }, |
| { 0x50310, 0x4a80004b }, |
| { 0x5fffc, 0xfe40009a }, |
| { 0x50314, 0x4a000044 }, |
| { 0x5fffc, 0xfe8000a3 }, |
| { 0x50318, 0x4940003d }, |
| { 0x5fffc, 0xfec000ac }, |
| { 0x5031c, 0x48400037 }, |
| { 0x5fffc, 0xff0000b4 }, |
| { 0x50320, 0x47800031 }, |
| { 0x5fffc, 0xff8000bd }, |
| { 0x50324, 0x4640002b }, |
| { 0x5fffc, 0xc5 }, |
| { 0x50328, 0x45000026 }, |
| { 0x5fffc, 0x8000ce }, |
| { 0x5032c, 0x43800021 }, |
| { 0x5fffc, 0x10000d6 }, |
| { 0x50330, 0x4240001c }, |
| { 0x5fffc, 0x18000df }, |
| { 0x50334, 0x40800018 }, |
| { 0x5fffc, 0x24000e6 }, |
| { 0x50338, 0x3f000014 }, |
| { 0x5fffc, 0x30000ee }, |
| { 0x5033c, 0x3d400010 }, |
| { 0x5fffc, 0x40000f5 }, |
| { 0x50340, 0x3b80000c }, |
| { 0x5fffc, 0x50000fc }, |
| { 0x50344, 0x39800009 }, |
| { 0x5fffc, 0x6000102 }, |
| { 0x50348, 0x37c00006 }, |
| { 0x5fffc, 0x7000109 }, |
| { 0x5034c, 0x35800004 }, |
| { 0x5fffc, 0x840010e }, |
| { 0x50350, 0x33800002 }, |
| { 0x5fffc, 0x9800114 }, |
| { 0x50354, 0x31400000 }, |
| { 0x5fffc, 0xac00119 }, |
| { 0x50358, 0x2f4003fe }, |
| { 0x5fffc, 0xc40011e }, |
| { 0x5035c, 0x2d0003fc }, |
| { 0x5fffc, 0xdc00121 }, |
| { 0x50360, 0x2b0003fb }, |
| { 0x5fffc, 0xf400125 }, |
| { 0x50364, 0x28c003fa }, |
| { 0x5fffc, 0x11000128 }, |
| { 0x50368, 0x268003f9 }, |
| { 0x5fffc, 0x12c0012a }, |
| { 0x5036c, 0x244003f9 }, |
| { 0x5fffc, 0x1480012c }, |
| { 0x50370, 0x224003f8 }, |
| { 0x5fffc, 0x1640012e }, |
| { 0x50374, 0x200003f8 }, |
| { 0x5fffc, 0x1800012f }, |
| { 0x50378, 0x1e0003f8 }, |
| { 0x5fffc, 0x1a00012f }, |
| { 0x5037c, 0x1c0003f8 }, |
| }; |
| |
| static const struct ppp_table downscale_y_table_pt8topt1[] = { |
| { 0x5fffc, 0x0 }, |
| { 0x50300, 0x7fc00000 }, |
| { 0x5fffc, 0xff80000d }, |
| { 0x50304, 0x7ec003f9 }, |
| { 0x5fffc, 0xfec0001c }, |
| { 0x50308, 0x7d4003f3 }, |
| { 0x5fffc, 0xfe40002b }, |
| { 0x5030c, 0x7b8003ed }, |
| { 0x5fffc, 0xfd80003c }, |
| { 0x50310, 0x794003e8 }, |
| { 0x5fffc, 0xfcc0004d }, |
| { 0x50314, 0x76c003e4 }, |
| { 0x5fffc, 0xfc40005f }, |
| { 0x50318, 0x73c003e0 }, |
| { 0x5fffc, 0xfb800071 }, |
| { 0x5031c, 0x708003de }, |
| { 0x5fffc, 0xfac00085 }, |
| { 0x50320, 0x6d0003db }, |
| { 0x5fffc, 0xfa000098 }, |
| { 0x50324, 0x698003d9 }, |
| { 0x5fffc, 0xf98000ac }, |
| { 0x50328, 0x654003d8 }, |
| { 0x5fffc, 0xf8c000c1 }, |
| { 0x5032c, 0x610003d7 }, |
| { 0x5fffc, 0xf84000d5 }, |
| { 0x50330, 0x5c8003d7 }, |
| { 0x5fffc, 0xf7c000e9 }, |
| { 0x50334, 0x580003d7 }, |
| { 0x5fffc, 0xf74000fd }, |
| { 0x50338, 0x534003d8 }, |
| { 0x5fffc, 0xf6c00112 }, |
| { 0x5033c, 0x4e8003d8 }, |
| { 0x5fffc, 0xf6800126 }, |
| { 0x50340, 0x494003da }, |
| { 0x5fffc, 0xf600013a }, |
| { 0x50344, 0x448003db }, |
| { 0x5fffc, 0xf600014d }, |
| { 0x50348, 0x3f4003dd }, |
| { 0x5fffc, 0xf5c00160 }, |
| { 0x5034c, 0x3a4003df }, |
| { 0x5fffc, 0xf5c00172 }, |
| { 0x50350, 0x354003e1 }, |
| { 0x5fffc, 0xf5c00184 }, |
| { 0x50354, 0x304003e3 }, |
| { 0x5fffc, 0xf6000195 }, |
| { 0x50358, 0x2b0003e6 }, |
| { 0x5fffc, 0xf64001a6 }, |
| { 0x5035c, 0x260003e8 }, |
| { 0x5fffc, 0xf6c001b4 }, |
| { 0x50360, 0x214003eb }, |
| { 0x5fffc, 0xf78001c2 }, |
| { 0x50364, 0x1c4003ee }, |
| { 0x5fffc, 0xf80001cf }, |
| { 0x50368, 0x17c003f1 }, |
| { 0x5fffc, 0xf90001db }, |
| { 0x5036c, 0x134003f3 }, |
| { 0x5fffc, 0xfa0001e5 }, |
| { 0x50370, 0xf0003f6 }, |
| { 0x5fffc, 0xfb4001ee }, |
| { 0x50374, 0xac003f9 }, |
| { 0x5fffc, 0xfcc001f5 }, |
| { 0x50378, 0x70003fb }, |
| { 0x5fffc, 0xfe4001fb }, |
| { 0x5037c, 0x34003fe }, |
| }; |
| |
| static const struct ppp_table *downscale_y_table[PPP_DOWNSCALE_MAX] = { |
| [PPP_DOWNSCALE_PT2TOPT4] = downscale_y_table_pt2topt4, |
| [PPP_DOWNSCALE_PT4TOPT6] = downscale_y_table_pt4topt6, |
| [PPP_DOWNSCALE_PT6TOPT8] = downscale_y_table_pt6topt8, |
| [PPP_DOWNSCALE_PT8TOPT1] = downscale_y_table_pt8topt1, |
| }; |
| |
| void ppp_load_table(const struct ppp_table *table, int len) |
| { |
| int i; |
| |
| for (i = 0; i < len; i++) |
| PPP_WRITEL(table[i].val, table[i].reg); |
| } |
| |
| void ppp_load_up_lut(void) |
| { |
| ppp_load_table(upscale_table, |
| PPP_UPSCALE_MAX); |
| } |
| |
| void ppp_load_gaussian_lut(void) |
| { |
| ppp_load_table(mdp_gaussian_blur_table, |
| PPP_BLUR_SCALE_MAX); |
| } |
| |
| void ppp_load_x_scale_table(int idx) |
| { |
| ppp_load_table(downscale_x_table[idx], 64); |
| } |
| |
| void ppp_load_y_scale_table(int idx) |
| { |
| ppp_load_table(downscale_y_table[idx], 64); |
| } |
| |
| uint32_t ppp_bpp(uint32_t type) |
| { |
| if (MDP_IS_IMGTYPE_BAD(type)) |
| return 0; |
| return bytes_per_pixel[type]; |
| } |
| |
| uint32_t ppp_src_config(uint32_t type) |
| { |
| if (MDP_IS_IMGTYPE_BAD(type)) |
| return 0; |
| return src_cfg_lut[type]; |
| } |
| |
| uint32_t ppp_out_config(uint32_t type) |
| { |
| if (MDP_IS_IMGTYPE_BAD(type)) |
| return 0; |
| return out_cfg_lut[type]; |
| } |
| |
| uint32_t ppp_pack_pattern(uint32_t type, uint32_t yuv2rgb) |
| { |
| if (MDP_IS_IMGTYPE_BAD(type)) |
| return 0; |
| if (yuv2rgb) |
| return swapped_pack_patt_lut[type]; |
| |
| return pack_patt_lut[type]; |
| } |
| |
| uint32_t ppp_dst_op_reg(uint32_t type) |
| { |
| if (MDP_IS_IMGTYPE_BAD(type)) |
| return 0; |
| return dst_op_reg[type]; |
| } |
| |
| uint32_t ppp_src_op_reg(uint32_t type) |
| { |
| if (MDP_IS_IMGTYPE_BAD(type)) |
| return 0; |
| return src_op_reg[type]; |
| } |
| |
| bool ppp_per_p_alpha(uint32_t type) |
| { |
| if (MDP_IS_IMGTYPE_BAD(type)) |
| return 0; |
| return per_pixel_alpha[type]; |
| } |
| |
| bool ppp_multi_plane(uint32_t type) |
| { |
| if (MDP_IS_IMGTYPE_BAD(type)) |
| return 0; |
| return multi_plane[type]; |
| } |
| |
| uint32_t *ppp_default_pre_lut(void) |
| { |
| return default_pre_lut_val; |
| } |
| |
| uint32_t *ppp_default_post_lut(void) |
| { |
| return default_post_lut_val; |
| } |
| |
| struct ppp_csc_table *ppp_csc_rgb2yuv(void) |
| { |
| return &rgb2yuv; |
| } |
| |
| struct ppp_csc_table *ppp_csc_table2(void) |
| { |
| return &default_table2; |
| } |