diff options
Diffstat (limited to 'drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param')
3 files changed, 0 insertions, 443 deletions
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/interface/ia_css_isp_param.h b/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/interface/ia_css_isp_param.h deleted file mode 100644 index 285749885105..000000000000 --- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/interface/ia_css_isp_param.h +++ /dev/null @@ -1,118 +0,0 @@ -#ifndef ISP2401 -/* - * Support for Intel Camera Imaging ISP subsystem. - * Copyright (c) 2015, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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. - */ -#else -/** -Support for Intel Camera Imaging ISP subsystem. -Copyright (c) 2010 - 2015, Intel Corporation. - -This program is free software; you can redistribute it and/or modify it -under the terms and conditions of the GNU General Public License, -version 2, as published by the Free Software Foundation. - -This program is distributed in the hope 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. -*/ -#endif - -#ifndef _IA_CSS_ISP_PARAM_H_ -#define _IA_CSS_ISP_PARAM_H_ - -#include <ia_css_err.h> -#include "ia_css_isp_param_types.h" - -/* Set functions for parameter memory descriptors */ -void -ia_css_isp_param_set_mem_init( - struct ia_css_isp_param_host_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem, - char *address, size_t size); - -void -ia_css_isp_param_set_css_mem_init( - struct ia_css_isp_param_css_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem, - hrt_vaddress address, size_t size); - -void -ia_css_isp_param_set_isp_mem_init( - struct ia_css_isp_param_isp_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem, - uint32_t address, size_t size); - -/* Get functions for parameter memory descriptors */ -const struct ia_css_host_data* -ia_css_isp_param_get_mem_init( - const struct ia_css_isp_param_host_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem); - -const struct ia_css_data* -ia_css_isp_param_get_css_mem_init( - const struct ia_css_isp_param_css_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem); - -const struct ia_css_isp_data* -ia_css_isp_param_get_isp_mem_init( - const struct ia_css_isp_param_isp_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem); - -/* Initialize the memory interface sizes and addresses */ -void -ia_css_init_memory_interface( - struct ia_css_isp_param_css_segments *isp_mem_if, - const struct ia_css_isp_param_host_segments *mem_params, - const struct ia_css_isp_param_css_segments *css_params); - -/* Allocate memory parameters */ -enum ia_css_err -ia_css_isp_param_allocate_isp_parameters( - struct ia_css_isp_param_host_segments *mem_params, - struct ia_css_isp_param_css_segments *css_params, - const struct ia_css_isp_param_isp_segments *mem_initializers); - -/* Destroy memory parameters */ -void -ia_css_isp_param_destroy_isp_parameters( - struct ia_css_isp_param_host_segments *mem_params, - struct ia_css_isp_param_css_segments *css_params); - -/* Load fw parameters */ -void -ia_css_isp_param_load_fw_params( - const char *fw, - union ia_css_all_memory_offsets *mem_offsets, - const struct ia_css_isp_param_memory_offsets *memory_offsets, - bool init); - -/* Copy host parameter images to ddr */ -enum ia_css_err -ia_css_isp_param_copy_isp_mem_if_to_ddr( - struct ia_css_isp_param_css_segments *ddr, - const struct ia_css_isp_param_host_segments *host, - enum ia_css_param_class pclass); - -/* Enable a pipeline by setting the control field in the isp dmem parameters */ -void -ia_css_isp_param_enable_pipeline( - const struct ia_css_isp_param_host_segments *mem_params); - -#endif /* _IA_CSS_ISP_PARAM_H_ */ diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/interface/ia_css_isp_param_types.h b/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/interface/ia_css_isp_param_types.h deleted file mode 100644 index 9d111793bb65..000000000000 --- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/interface/ia_css_isp_param_types.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef ISP2401 -/* - * Support for Intel Camera Imaging ISP subsystem. - * Copyright (c) 2015, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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. - */ -#else -/** -Support for Intel Camera Imaging ISP subsystem. -Copyright (c) 2010 - 2015, Intel Corporation. - -This program is free software; you can redistribute it and/or modify it -under the terms and conditions of the GNU General Public License, -version 2, as published by the Free Software Foundation. - -This program is distributed in the hope 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. -*/ -#endif - -#ifndef _IA_CSS_ISP_PARAM_TYPES_H_ -#define _IA_CSS_ISP_PARAM_TYPES_H_ - -#include "ia_css_types.h" -#include <platform_support.h> -#include <system_global.h> - -/* Short hands */ -#define IA_CSS_ISP_DMEM IA_CSS_ISP_DMEM0 -#define IA_CSS_ISP_VMEM IA_CSS_ISP_VMEM0 - -/* The driver depends on this, to be removed later. */ -#define IA_CSS_NUM_ISP_MEMORIES IA_CSS_NUM_MEMORIES - -/* Explicit member numbering to avoid fish type checker bug */ -enum ia_css_param_class { - IA_CSS_PARAM_CLASS_PARAM = 0, /* Late binding parameters, like 3A */ - IA_CSS_PARAM_CLASS_CONFIG = 1, /* Pipe config time parameters, like resolution */ - IA_CSS_PARAM_CLASS_STATE = 2, /* State parameters, like tnr buffer index */ -#if 0 /* Not yet implemented */ - IA_CSS_PARAM_CLASS_FRAME = 3, /* Frame time parameters, like output buffer */ -#endif -}; -#define IA_CSS_NUM_PARAM_CLASSES (IA_CSS_PARAM_CLASS_STATE + 1) - -/* ISP parameter descriptor */ -struct ia_css_isp_parameter { - uint32_t offset; /* Offset in isp_<mem>)parameters, etc. */ - uint32_t size; /* Disabled if 0 */ -}; - - -/* Address/size of each parameter class in each isp memory, host memory pointers */ -struct ia_css_isp_param_host_segments { - struct ia_css_host_data params[IA_CSS_NUM_PARAM_CLASSES][IA_CSS_NUM_MEMORIES]; -}; - -/* Address/size of each parameter class in each isp memory, css memory pointers */ -struct ia_css_isp_param_css_segments { - struct ia_css_data params[IA_CSS_NUM_PARAM_CLASSES][IA_CSS_NUM_MEMORIES]; -}; - -/* Address/size of each parameter class in each isp memory, isp memory pointers */ -struct ia_css_isp_param_isp_segments { - struct ia_css_isp_data params[IA_CSS_NUM_PARAM_CLASSES][IA_CSS_NUM_MEMORIES]; -}; - -/* Memory offsets in binary info */ -struct ia_css_isp_param_memory_offsets { - uint32_t offsets[IA_CSS_NUM_PARAM_CLASSES]; /** offset wrt hdr in bytes */ -}; - -/* Offsets for ISP kernel parameters per isp memory. - * Only relevant for standard ISP binaries, not ACC or SP. - */ -union ia_css_all_memory_offsets { - struct { - CSS_ALIGN(struct ia_css_memory_offsets *param, 8); - CSS_ALIGN(struct ia_css_config_memory_offsets *config, 8); - CSS_ALIGN(struct ia_css_state_memory_offsets *state, 8); - } offsets; - struct { - CSS_ALIGN(void *ptr, 8); - } array[IA_CSS_NUM_PARAM_CLASSES]; -}; - -#endif /* _IA_CSS_ISP_PARAM_TYPES_H_ */ - diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/src/isp_param.c b/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/src/isp_param.c deleted file mode 100644 index f793ce125f02..000000000000 --- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/runtime/isp_param/src/isp_param.c +++ /dev/null @@ -1,227 +0,0 @@ -#ifndef ISP2401 -/* - * Support for Intel Camera Imaging ISP subsystem. - * Copyright (c) 2015, Intel Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope 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. - */ -#else -/* -Support for Intel Camera Imaging ISP subsystem. -Copyright (c) 2010 - 2015, Intel Corporation. - -This program is free software; you can redistribute it and/or modify it -under the terms and conditions of the GNU General Public License, -version 2, as published by the Free Software Foundation. - -This program is distributed in the hope 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. -*/ -#endif - -#include "memory_access.h" -#include "ia_css_pipeline.h" -#include "ia_css_isp_param.h" - -/* Set functions for parameter memory descriptors */ - -void -ia_css_isp_param_set_mem_init( - struct ia_css_isp_param_host_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem, - char *address, size_t size) -{ - mem_init->params[pclass][mem].address = address; - mem_init->params[pclass][mem].size = (uint32_t)size; -} - -void -ia_css_isp_param_set_css_mem_init( - struct ia_css_isp_param_css_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem, - hrt_vaddress address, size_t size) -{ - mem_init->params[pclass][mem].address = address; - mem_init->params[pclass][mem].size = (uint32_t)size; -} - -void -ia_css_isp_param_set_isp_mem_init( - struct ia_css_isp_param_isp_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem, - uint32_t address, size_t size) -{ - mem_init->params[pclass][mem].address = address; - mem_init->params[pclass][mem].size = (uint32_t)size; -} - -/* Get functions for parameter memory descriptors */ -const struct ia_css_host_data* -ia_css_isp_param_get_mem_init( - const struct ia_css_isp_param_host_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem) -{ - return &mem_init->params[pclass][mem]; -} - -const struct ia_css_data* -ia_css_isp_param_get_css_mem_init( - const struct ia_css_isp_param_css_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem) -{ - return &mem_init->params[pclass][mem]; -} - -const struct ia_css_isp_data* -ia_css_isp_param_get_isp_mem_init( - const struct ia_css_isp_param_isp_segments *mem_init, - enum ia_css_param_class pclass, - enum ia_css_isp_memories mem) -{ - return &mem_init->params[pclass][mem]; -} - -void -ia_css_init_memory_interface( - struct ia_css_isp_param_css_segments *isp_mem_if, - const struct ia_css_isp_param_host_segments *mem_params, - const struct ia_css_isp_param_css_segments *css_params) -{ - unsigned pclass, mem; - for (pclass = 0; pclass < IA_CSS_NUM_PARAM_CLASSES; pclass++) { - memset(isp_mem_if->params[pclass], 0, sizeof(isp_mem_if->params[pclass])); - for (mem = 0; mem < IA_CSS_NUM_MEMORIES; mem++) { - if (!mem_params->params[pclass][mem].address) - continue; - isp_mem_if->params[pclass][mem].size = mem_params->params[pclass][mem].size; - if (pclass != IA_CSS_PARAM_CLASS_PARAM) - isp_mem_if->params[pclass][mem].address = css_params->params[pclass][mem].address; - } - } -} - -enum ia_css_err -ia_css_isp_param_allocate_isp_parameters( - struct ia_css_isp_param_host_segments *mem_params, - struct ia_css_isp_param_css_segments *css_params, - const struct ia_css_isp_param_isp_segments *mem_initializers) -{ - enum ia_css_err err = IA_CSS_SUCCESS; - unsigned mem, pclass; - - pclass = IA_CSS_PARAM_CLASS_PARAM; - for (mem = 0; mem < IA_CSS_NUM_MEMORIES; mem++) { - for (pclass = 0; pclass < IA_CSS_NUM_PARAM_CLASSES; pclass++) { - uint32_t size = 0; - if (mem_initializers) - size = mem_initializers->params[pclass][mem].size; - mem_params->params[pclass][mem].size = size; - mem_params->params[pclass][mem].address = NULL; - css_params->params[pclass][mem].size = size; - css_params->params[pclass][mem].address = 0x0; - if (size) { - mem_params->params[pclass][mem].address = sh_css_calloc(1, size); - if (!mem_params->params[pclass][mem].address) { - err = IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY; - goto cleanup; - } - if (pclass != IA_CSS_PARAM_CLASS_PARAM) { - css_params->params[pclass][mem].address = mmgr_malloc(size); - if (!css_params->params[pclass][mem].address) { - err = IA_CSS_ERR_CANNOT_ALLOCATE_MEMORY; - goto cleanup; - } - } - } - } - } - return err; -cleanup: - ia_css_isp_param_destroy_isp_parameters(mem_params, css_params); - return err; -} - -void -ia_css_isp_param_destroy_isp_parameters( - struct ia_css_isp_param_host_segments *mem_params, - struct ia_css_isp_param_css_segments *css_params) -{ - unsigned mem, pclass; - - for (mem = 0; mem < IA_CSS_NUM_MEMORIES; mem++) { - for (pclass = 0; pclass < IA_CSS_NUM_PARAM_CLASSES; pclass++) { - if (mem_params->params[pclass][mem].address) - sh_css_free(mem_params->params[pclass][mem].address); - if (css_params->params[pclass][mem].address) - hmm_free(css_params->params[pclass][mem].address); - mem_params->params[pclass][mem].address = NULL; - css_params->params[pclass][mem].address = 0x0; - } - } -} - -void -ia_css_isp_param_load_fw_params( - const char *fw, - union ia_css_all_memory_offsets *mem_offsets, - const struct ia_css_isp_param_memory_offsets *memory_offsets, - bool init) -{ - unsigned pclass; - for (pclass = 0; pclass < IA_CSS_NUM_PARAM_CLASSES; pclass++) { - mem_offsets->array[pclass].ptr = NULL; - if (init) - mem_offsets->array[pclass].ptr = (void *)(fw + memory_offsets->offsets[pclass]); - } -} - -enum ia_css_err -ia_css_isp_param_copy_isp_mem_if_to_ddr( - struct ia_css_isp_param_css_segments *ddr, - const struct ia_css_isp_param_host_segments *host, - enum ia_css_param_class pclass) -{ - unsigned mem; - - for (mem = 0; mem < N_IA_CSS_ISP_MEMORIES; mem++) { - size_t size = host->params[pclass][mem].size; - hrt_vaddress ddr_mem_ptr = ddr->params[pclass][mem].address; - char *host_mem_ptr = host->params[pclass][mem].address; - if (size != ddr->params[pclass][mem].size) - return IA_CSS_ERR_INTERNAL_ERROR; - if (!size) - continue; - mmgr_store(ddr_mem_ptr, host_mem_ptr, size); - } - return IA_CSS_SUCCESS; -} - -void -ia_css_isp_param_enable_pipeline( - const struct ia_css_isp_param_host_segments *mem_params) -{ - /* By protocol b0 of the mandatory uint32_t first field of the - input parameter is a disable bit*/ - short dmem_offset = 0; - - if (mem_params->params[IA_CSS_PARAM_CLASS_PARAM][IA_CSS_ISP_DMEM0].size == 0) - return; - - *(uint32_t *)&mem_params->params[IA_CSS_PARAM_CLASS_PARAM][IA_CSS_ISP_DMEM0].address[dmem_offset] = 0x0; -} - - |