1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Support for Intel Camera Imaging ISP subsystem. 4 * Copyright (c) 2015, Intel Corporation. 5 */ 6 7 #ifndef __IA_CSS_XNR3_PARAM_H 8 #define __IA_CSS_XNR3_PARAM_H 9 10 #include "type_support.h" 11 #include "vmem.h" /* ISP2401: needed for VMEM_ARRAY */ 12 13 /* Scaling factor of the alpha values: which fixed-point value represents 1.0? 14 * It must be chosen such that 1/min_sigma still fits in an ISP vector 15 * element. */ 16 #define XNR_ALPHA_SCALE_LOG2 5 17 #define XNR_ALPHA_SCALE_FACTOR BIT(XNR_ALPHA_SCALE_LOG2) 18 19 /* Scaling factor of the coring values on the ISP. */ 20 #define XNR_CORING_SCALE_LOG2 (ISP_VEC_ELEMBITS - 1) 21 #define XNR_CORING_SCALE_FACTOR BIT(XNR_CORING_SCALE_LOG2) 22 23 /* Scaling factor of the blending strength on the ISP. */ 24 #define XNR_BLENDING_SCALE_LOG2 (ISP_VEC_ELEMBITS - 1) 25 #define XNR_BLENDING_SCALE_FACTOR BIT(XNR_BLENDING_SCALE_LOG2) 26 27 /* XNR3 filter size. Must be 11x11, 9x9 or 5x5. */ 28 #define XNR_FILTER_SIZE 5 29 30 /* XNR3 alpha (1/sigma) parameters on the ISP, expressed as a base (0) value 31 * for dark areas, and a scaled diff towards the value for bright areas. */ 32 struct sh_css_xnr3_alpha_params { 33 s32 y0; 34 s32 u0; 35 s32 v0; 36 s32 ydiff; 37 s32 udiff; 38 s32 vdiff; 39 }; 40 41 /* XNR3 coring parameters on the ISP, expressed as a base (0) value 42 * for dark areas, and a scaled diff towards the value for bright areas. */ 43 struct sh_css_xnr3_coring_params { 44 s32 u0; 45 s32 v0; 46 s32 udiff; 47 s32 vdiff; 48 }; 49 50 /* XNR3 blending strength on the ISP. */ 51 struct sh_css_xnr3_blending_params { 52 s32 strength; 53 }; 54 55 /* XNR3 ISP parameters */ 56 struct sh_css_isp_xnr3_params { 57 struct sh_css_xnr3_alpha_params alpha; 58 struct sh_css_xnr3_coring_params coring; 59 struct sh_css_xnr3_blending_params blending; 60 }; 61 62 /* ISP2401 */ 63 /* 64 * STRUCT sh_css_isp_xnr3_vmem_params 65 * ----------------------------------------------- 66 * ISP VMEM parameters 67 */ 68 struct sh_css_isp_xnr3_vmem_params { 69 VMEM_ARRAY(x, ISP_VEC_NELEMS); 70 VMEM_ARRAY(a, ISP_VEC_NELEMS); 71 VMEM_ARRAY(b, ISP_VEC_NELEMS); 72 VMEM_ARRAY(c, ISP_VEC_NELEMS); 73 }; 74 75 #endif /*__IA_CSS_XNR3_PARAM_H */ 76