From 895783d7d4b95980a6b91e518c95d9d07815a3c1 Mon Sep 17 00:00:00 2001 From: Lokesh Gupta Date: Tue, 15 Nov 2011 21:33:48 +0100 Subject: [PATCH] [PORT FROM R2] atomisp: CSS/FW release from 20111115_0600 baseline BZ: 17272 A white line on the right side of frame when double click the screen to zoom 16x. This release fixes this issue. Change-Id: I77b8ea0ac7e20c558ead3cfd3010e4377cd03c13 Orig-Change-Id: I5cdb439a14c0cc3b6f6cc8425019169453a2be60 Signed-off-by: Lokesh Gupta Reviewed-on: http://android.intel.com:8080/24138 Reviewed-by: Kruger, Jozef Reviewed-by: Wang, Wen W Reviewed-by: Koski, Anttu Tested-by: Koski, Anttu Reviewed-by: buildbot Tested-by: buildbot Reviewed-on: http://android.intel.com:8080/28004 Reviewed-by: Tuominen, TeemuX --- drivers/media/video/atomisp/css/hrt/sp.map.h | 2 +- drivers/media/video/atomisp/css/sh_css_internal.h | 4 +++ drivers/media/video/atomisp/css/sh_css_params.c | 37 ++++++++++++++++++++++- drivers/media/video/atomisp/css/sh_css_params.h | 7 +++++ drivers/media/video/atomisp/css/sh_css_types.h | 5 +++ 5 files changed, 53 insertions(+), 2 deletions(-) diff --git a/drivers/media/video/atomisp/css/hrt/sp.map.h b/drivers/media/video/atomisp/css/hrt/sp.map.h index d88c531..dad0254 100644 --- a/drivers/media/video/atomisp/css/hrt/sp.map.h +++ b/drivers/media/video/atomisp/css/hrt/sp.map.h @@ -129,7 +129,7 @@ #define HIVE_MEM_histogram_args scalar_processor_dmem #define HIVE_ADDR_histogram_args 0x2810 #define HIVE_SIZE_histogram_args 4 -#define HIVE_ADDR_capture_pp_dynamic_entry 0x32F7 +#define HIVE_ADDR_capture_pp_dynamic_entry 0x3311 #define HIVE_MEM_isp_sdis_horiproj_num scalar_processor_dmem #define HIVE_ADDR_isp_sdis_horiproj_num 0x1464 #define HIVE_SIZE_isp_sdis_horiproj_num 4 diff --git a/drivers/media/video/atomisp/css/sh_css_internal.h b/drivers/media/video/atomisp/css/sh_css_internal.h index 1e18ce0..c0e3cef 100644 --- a/drivers/media/video/atomisp/css/sh_css_internal.h +++ b/drivers/media/video/atomisp/css/sh_css_internal.h @@ -133,6 +133,10 @@ struct sh_css_isp_params { /* ANR (Advance Noise Reduction) */ int anr_threshold; + + /* CE (Chroma Enhancement) */ + int ce_uv_level_min; + int ce_uv_level_max; }; /* xmem address map allocation */ diff --git a/drivers/media/video/atomisp/css/sh_css_params.c b/drivers/media/video/atomisp/css/sh_css_params.c index f8344e2..71d5609 100644 --- a/drivers/media/video/atomisp/css/sh_css_params.c +++ b/drivers/media/video/atomisp/css/sh_css_params.c @@ -95,6 +95,7 @@ static const struct sh_css_ee_config *ee_config; static const struct sh_css_de_config *de_config; static const struct sh_css_gc_config *gc_config; static const struct sh_css_anr_config *anr_config; +static const struct sh_css_ce_config *ce_config; static bool isp_params_changed, fpn_table_changed, dis_coef_table_changed, @@ -113,7 +114,8 @@ static bool isp_params_changed, ee_config_changed, de_config_changed, gc_config_changed, - anr_config_changed; + anr_config_changed, + ce_config_changed; static size_t fpn_tbl_size, sc_tbl_size, @@ -616,6 +618,11 @@ static const struct sh_css_anr_config default_anr_config = { .threshold = 5, }; +static const struct sh_css_ce_config default_ce_config = { + .uv_level_min = 0, + .uv_level_max = 255 +}; + int sh_css_get_gdc_coord_one(void) { @@ -1208,6 +1215,15 @@ sh_css_process_anr(void) anr_config_changed = false; } +static void +sh_css_process_ce(void) +{ + isp_parameters.ce_uv_level_min = ce_config->uv_level_min; + isp_parameters.ce_uv_level_max = ce_config->uv_level_max; + isp_params_changed = true; + ce_config_changed = false; +} + void sh_css_set_gamma_table(const struct sh_css_gamma_table *table) { @@ -1542,6 +1558,22 @@ sh_css_get_anr_config(const struct sh_css_anr_config **config) *config = anr_config; } +void +sh_css_set_ce_config(const struct sh_css_ce_config *config) +{ + if (config) + ce_config = config; + else + ce_config = &default_ce_config; + ce_config_changed = true; +} + +void +sh_css_get_ce_config(const struct sh_css_ce_config **config) +{ + *config = ce_config; +} + static bool alloc(void **ptr, unsigned int bytes) { @@ -1733,6 +1765,7 @@ sh_css_params_init(void) sh_css_set_de_config(&default_de_config); sh_css_set_gc_config(&default_gc_config); sh_css_set_anr_config(&default_anr_config); + sh_css_set_ce_config(&default_ce_config); sh_css_set_macc_table(&default_macc_table); sh_css_set_gamma_table(&default_gamma_table); sh_css_set_ctc_table(&default_ctc_table); @@ -1906,6 +1939,8 @@ sh_css_params_write_to_ddr(const struct sh_css_binary *binary) sh_css_process_gc(); if (anr_config && anr_config_changed) sh_css_process_anr(); + if (ce_config && ce_config_changed) + sh_css_process_ce(); if (isp_params_changed) { if (SH_CSS_PREVENT_UNINIT_READS) { diff --git a/drivers/media/video/atomisp/css/sh_css_params.h b/drivers/media/video/atomisp/css/sh_css_params.h index cbf505b..d47a115 100644 --- a/drivers/media/video/atomisp/css/sh_css_params.h +++ b/drivers/media/video/atomisp/css/sh_css_params.h @@ -131,6 +131,13 @@ sh_css_set_de_config(const struct sh_css_de_config *de_config); void sh_css_get_de_config(const struct sh_css_de_config **de_config); +/* Color Enhancement */ +void +sh_css_set_ce_config(const struct sh_css_ce_config *ce_config); + +void +sh_css_get_ce_config(const struct sh_css_ce_config **ce_config); + /* Gamma Correction */ void sh_css_set_gc_config(const struct sh_css_gc_config *gc_config); diff --git a/drivers/media/video/atomisp/css/sh_css_types.h b/drivers/media/video/atomisp/css/sh_css_types.h index 6a497ef..5c1a108 100644 --- a/drivers/media/video/atomisp/css/sh_css_types.h +++ b/drivers/media/video/atomisp/css/sh_css_types.h @@ -628,6 +628,11 @@ struct sh_css_anr_config { int threshold; }; +struct sh_css_ce_config { + u0_16 uv_level_min; + u0_16 uv_level_max; +}; + struct sh_css_3a_config { u0_16 ae_y_coef_r; /* [gain] Weight of R for Y */ u0_16 ae_y_coef_g; /* [gain] Weight of G for Y */ -- 2.7.4