summaryrefslogtreecommitdiffstats
path: root/drivers/staging/media/atomisp/pci/atomisp2/css2400/ia_css_acc_types.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/media/atomisp/pci/atomisp2/css2400/ia_css_acc_types.h')
-rw-r--r--drivers/staging/media/atomisp/pci/atomisp2/css2400/ia_css_acc_types.h468
1 files changed, 0 insertions, 468 deletions
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/css2400/ia_css_acc_types.h b/drivers/staging/media/atomisp/pci/atomisp2/css2400/ia_css_acc_types.h
deleted file mode 100644
index 138bc3b..0000000
--- a/drivers/staging/media/atomisp/pci/atomisp2/css2400/ia_css_acc_types.h
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef _IA_CSS_ACC_TYPES_H
-#define _IA_CSS_ACC_TYPES_H
-
-/* @file
- * This file contains types used for acceleration
- */
-
-#include <system_types.h> /* HAS_IRQ_MAP_VERSION_# */
-#include <type_support.h>
-#include <platform_support.h>
-#include <debug_global.h>
-
-#include "ia_css_types.h"
-#include "ia_css_frame_format.h"
-
-/* Should be included without the path.
- However, that requires adding the path to numerous makefiles
- that have nothing to do with isp parameters.
- */
-#include "runtime/isp_param/interface/ia_css_isp_param_types.h"
-
-/* Types for the acceleration API.
- * These should be moved to sh_css_internal.h once the old acceleration
- * argument handling has been completed.
- * After that, interpretation of these structures is no longer needed
- * in the kernel and HAL.
-*/
-
-/* Type of acceleration.
- */
-enum ia_css_acc_type {
- IA_CSS_ACC_NONE, /** Normal binary */
- IA_CSS_ACC_OUTPUT, /** Accelerator stage on output frame */
- IA_CSS_ACC_VIEWFINDER, /** Accelerator stage on viewfinder frame */
- IA_CSS_ACC_STANDALONE, /** Stand-alone acceleration */
-};
-
-/* Cells types
- */
-enum ia_css_cell_type {
- IA_CSS_SP0 = 0,
- IA_CSS_SP1,
- IA_CSS_ISP,
- MAX_NUM_OF_CELLS
-};
-
-/* Firmware types.
- */
-enum ia_css_fw_type {
- ia_css_sp_firmware, /** Firmware for the SP */
- ia_css_isp_firmware, /** Firmware for the ISP */
- ia_css_bootloader_firmware, /** Firmware for the BootLoader */
- ia_css_acc_firmware /** Firmware for accelrations */
-};
-
-struct ia_css_blob_descr;
-
-/* Blob descriptor.
- * This structure describes an SP or ISP blob.
- * It describes the test, data and bss sections as well as position in a
- * firmware file.
- * For convenience, it contains dynamic data after loading.
- */
-struct ia_css_blob_info {
- /** Static blob data */
- uint32_t offset; /** Blob offset in fw file */
- struct ia_css_isp_param_memory_offsets memory_offsets; /** offset wrt hdr in bytes */
- uint32_t prog_name_offset; /** offset wrt hdr in bytes */
- uint32_t size; /** Size of blob */
- uint32_t padding_size; /** total cummulative of bytes added due to section alignment */
- uint32_t icache_source; /** Position of icache in blob */
- uint32_t icache_size; /** Size of icache section */
- uint32_t icache_padding;/** bytes added due to icache section alignment */
- uint32_t text_source; /** Position of text in blob */
- uint32_t text_size; /** Size of text section */
- uint32_t text_padding; /** bytes added due to text section alignment */
- uint32_t data_source; /** Position of data in blob */
- uint32_t data_target; /** Start of data in SP dmem */
- uint32_t data_size; /** Size of text section */
- uint32_t data_padding; /** bytes added due to data section alignment */
- uint32_t bss_target; /** Start position of bss in SP dmem */
- uint32_t bss_size; /** Size of bss section */
- /** Dynamic data filled by loader */
- CSS_ALIGN(const void *code, 8); /** Code section absolute pointer within fw, code = icache + text */
- CSS_ALIGN(const void *data, 8); /** Data section absolute pointer within fw, data = data + bss */
-};
-
-struct ia_css_binary_input_info {
- uint32_t min_width;
- uint32_t min_height;
- uint32_t max_width;
- uint32_t max_height;
- uint32_t source; /* memory, sensor, variable */
-};
-
-struct ia_css_binary_output_info {
- uint32_t min_width;
- uint32_t min_height;
- uint32_t max_width;
- uint32_t max_height;
- uint32_t num_chunks;
- uint32_t variable_format;
-};
-
-struct ia_css_binary_internal_info {
- uint32_t max_width;
- uint32_t max_height;
-};
-
-struct ia_css_binary_bds_info {
- uint32_t supported_bds_factors;
-};
-
-struct ia_css_binary_dvs_info {
- uint32_t max_envelope_width;
- uint32_t max_envelope_height;
-};
-
-struct ia_css_binary_vf_dec_info {
- uint32_t is_variable;
- uint32_t max_log_downscale;
-};
-
-struct ia_css_binary_s3a_info {
- uint32_t s3atbl_use_dmem;
- uint32_t fixed_s3a_deci_log;
-};
-
-/* DPC related binary info */
-struct ia_css_binary_dpc_info {
- uint32_t bnr_lite; /** bnr lite enable flag */
-};
-
-struct ia_css_binary_iterator_info {
- uint32_t num_stripes;
- uint32_t row_stripes_height;
- uint32_t row_stripes_overlap_lines;
-};
-
-struct ia_css_binary_address_info {
- uint32_t isp_addresses; /* Address in ISP dmem */
- uint32_t main_entry; /* Address of entry fct */
- uint32_t in_frame; /* Address in ISP dmem */
- uint32_t out_frame; /* Address in ISP dmem */
- uint32_t in_data; /* Address in ISP dmem */
- uint32_t out_data; /* Address in ISP dmem */
- uint32_t sh_dma_cmd_ptr; /* In ISP dmem */
-};
-
-struct ia_css_binary_uds_info {
- uint16_t bpp;
- uint16_t use_bci;
- uint16_t use_str;
- uint16_t woix;
- uint16_t woiy;
- uint16_t extra_out_vecs;
- uint16_t vectors_per_line_in;
- uint16_t vectors_per_line_out;
- uint16_t vectors_c_per_line_in;
- uint16_t vectors_c_per_line_out;
- uint16_t vmem_gdc_in_block_height_y;
- uint16_t vmem_gdc_in_block_height_c;
- /* uint16_t padding; */
-};
-
-struct ia_css_binary_pipeline_info {
- uint32_t mode;
- uint32_t isp_pipe_version;
- uint32_t pipelining;
- uint32_t c_subsampling;
- uint32_t top_cropping;
- uint32_t left_cropping;
- uint32_t variable_resolution;
-};
-
-struct ia_css_binary_block_info {
- uint32_t block_width;
- uint32_t block_height;
- uint32_t output_block_height;
-};
-
-/* Structure describing an ISP binary.
- * It describes the capabilities of a binary, like the maximum resolution,
- * support features, dma channels, uds features, etc.
- * This part is to be used by the SP.
- * Future refactoring should move binary properties to ia_css_binary_xinfo,
- * thereby making the SP code more binary independent.
- */
-struct ia_css_binary_info {
- CSS_ALIGN(uint32_t id, 8); /* IA_CSS_BINARY_ID_* */
- struct ia_css_binary_pipeline_info pipeline;
- struct ia_css_binary_input_info input;
- struct ia_css_binary_output_info output;
- struct ia_css_binary_internal_info internal;
- struct ia_css_binary_bds_info bds;
- struct ia_css_binary_dvs_info dvs;
- struct ia_css_binary_vf_dec_info vf_dec;
- struct ia_css_binary_s3a_info s3a;
- struct ia_css_binary_dpc_info dpc_bnr; /** DPC related binary info */
- struct ia_css_binary_iterator_info iterator;
- struct ia_css_binary_address_info addresses;
- struct ia_css_binary_uds_info uds;
- struct ia_css_binary_block_info block;
- struct ia_css_isp_param_isp_segments mem_initializers;
-/* MW: Packing (related) bools in an integer ?? */
- struct {
-#ifdef ISP2401
- uint8_t luma_only;
- uint8_t input_yuv;
- uint8_t input_raw;
-#endif
- uint8_t reduced_pipe;
- uint8_t vf_veceven;
- uint8_t dis;
- uint8_t dvs_envelope;
- uint8_t uds;
- uint8_t dvs_6axis;
- uint8_t block_output;
- uint8_t streaming_dma;
- uint8_t ds;
- uint8_t bayer_fir_6db;
- uint8_t raw_binning;
- uint8_t continuous;
- uint8_t s3a;
- uint8_t fpnr;
- uint8_t sc;
- uint8_t macc;
- uint8_t output;
- uint8_t ref_frame;
- uint8_t tnr;
- uint8_t xnr;
- uint8_t params;
- uint8_t ca_gdc;
- uint8_t isp_addresses;
- uint8_t in_frame;
- uint8_t out_frame;
- uint8_t high_speed;
- uint8_t dpc;
- uint8_t padding[2];
- } enable;
- struct {
-/* DMA channel ID: [0,...,HIVE_ISP_NUM_DMA_CHANNELS> */
- uint8_t ref_y_channel;
- uint8_t ref_c_channel;
- uint8_t tnr_channel;
- uint8_t tnr_out_channel;
- uint8_t dvs_coords_channel;
- uint8_t output_channel;
- uint8_t c_channel;
- uint8_t vfout_channel;
- uint8_t vfout_c_channel;
- uint8_t vfdec_bits_per_pixel;
- uint8_t claimed_by_isp;
- uint8_t padding[2];
- } dma;
-};
-
-/* Structure describing an ISP binary.
- * It describes the capabilities of a binary, like the maximum resolution,
- * support features, dma channels, uds features, etc.
- */
-struct ia_css_binary_xinfo {
- /* Part that is of interest to the SP. */
- struct ia_css_binary_info sp;
-
- /* Rest of the binary info, only interesting to the host. */
- enum ia_css_acc_type type;
- CSS_ALIGN(int32_t num_output_formats, 8);
- enum ia_css_frame_format output_formats[IA_CSS_FRAME_FORMAT_NUM];
- CSS_ALIGN(int32_t num_vf_formats, 8); /** number of supported vf formats */
- enum ia_css_frame_format vf_formats[IA_CSS_FRAME_FORMAT_NUM]; /** types of supported vf formats */
- uint8_t num_output_pins;
- ia_css_ptr xmem_addr;
- CSS_ALIGN(const struct ia_css_blob_descr *blob, 8);
- CSS_ALIGN(uint32_t blob_index, 8);
- CSS_ALIGN(union ia_css_all_memory_offsets mem_offsets, 8);
- CSS_ALIGN(struct ia_css_binary_xinfo *next, 8);
-};
-
-/* Structure describing the Bootloader (an ISP binary).
- * It contains several address, either in ddr, isp_dmem or
- * the entry function in icache.
- */
-struct ia_css_bl_info {
- uint32_t num_dma_cmds; /** Number of cmds sent by CSS */
- uint32_t dma_cmd_list; /** Dma command list sent by CSS */
- uint32_t sw_state; /** Polled from css */
- /* Entry functions */
- uint32_t bl_entry; /** The SP entry function */
-};
-
-/* Structure describing the SP binary.
- * It contains several address, either in ddr, sp_dmem or
- * the entry function in pmem.
- */
-struct ia_css_sp_info {
- uint32_t init_dmem_data; /** data sect config, stored to dmem */
- uint32_t per_frame_data; /** Per frame data, stored to dmem */
- uint32_t group; /** Per pipeline data, loaded by dma */
- uint32_t output; /** SP output data, loaded by dmem */
- uint32_t host_sp_queue; /** Host <-> SP queues */
- uint32_t host_sp_com;/** Host <-> SP commands */
- uint32_t isp_started; /** Polled from sensor thread, csim only */
- uint32_t sw_state; /** Polled from css */
- uint32_t host_sp_queues_initialized; /** Polled from the SP */
- uint32_t sleep_mode; /** different mode to halt SP */
- uint32_t invalidate_tlb; /** inform SP to invalidate mmu TLB */
-#ifndef ISP2401
- uint32_t stop_copy_preview; /** suspend copy and preview pipe when capture */
-#endif
- uint32_t debug_buffer_ddr_address; /** inform SP the address
- of DDR debug queue */
- uint32_t perf_counter_input_system_error; /** input system perf
- counter array */
-#ifdef HAS_WATCHDOG_SP_THREAD_DEBUG
- uint32_t debug_wait; /** thread/pipe post mortem debug */
- uint32_t debug_stage; /** thread/pipe post mortem debug */
- uint32_t debug_stripe; /** thread/pipe post mortem debug */
-#endif
- uint32_t threads_stack; /** sp thread's stack pointers */
- uint32_t threads_stack_size; /** sp thread's stack sizes */
- uint32_t curr_binary_id; /** current binary id */
- uint32_t raw_copy_line_count; /** raw copy line counter */
- uint32_t ddr_parameter_address; /** acc param ddrptr, sp dmem */
- uint32_t ddr_parameter_size; /** acc param size, sp dmem */
- /* Entry functions */
- uint32_t sp_entry; /** The SP entry function */
- uint32_t tagger_frames_addr; /** Base address of tagger state */
-};
-
-/* The following #if is there because this header file is also included
- by SP and ISP code but they do not need this data and HIVECC has alignment
- issue with the firmware struct/union's.
- More permanent solution will be to refactor this include.
-*/
-#if !defined(__ISP)
-/* Accelerator firmware information.
- */
-struct ia_css_acc_info {
- uint32_t per_frame_data; /** Dummy for now */
-};
-
-/* Firmware information.
- */
-union ia_css_fw_union {
- struct ia_css_binary_xinfo isp; /** ISP info */
- struct ia_css_sp_info sp; /** SP info */
- struct ia_css_bl_info bl; /** Bootloader info */
- struct ia_css_acc_info acc; /** Accelerator info */
-};
-
-/* Firmware information.
- */
-struct ia_css_fw_info {
- size_t header_size; /** size of fw header */
- CSS_ALIGN(uint32_t type, 8);
- union ia_css_fw_union info; /** Binary info */
- struct ia_css_blob_info blob; /** Blob info */
- /* Dynamic part */
- struct ia_css_fw_info *next;
- CSS_ALIGN(uint32_t loaded, 8); /** Firmware has been loaded */
- CSS_ALIGN(const uint8_t *isp_code, 8); /** ISP pointer to code */
- /** Firmware handle between user space and kernel */
- CSS_ALIGN(uint32_t handle, 8);
- /** Sections to copy from/to ISP */
- struct ia_css_isp_param_css_segments mem_initializers;
- /** Initializer for local ISP memories */
-};
-
-struct ia_css_blob_descr {
- const unsigned char *blob;
- struct ia_css_fw_info header;
- const char *name;
- union ia_css_all_memory_offsets mem_offsets;
-};
-
-struct ia_css_acc_fw;
-
-/* Structure describing the SP binary of a stand-alone accelerator.
- */
-struct ia_css_acc_sp {
- void (*init)(struct ia_css_acc_fw *); /** init for crun */
- uint32_t sp_prog_name_offset; /** program name offset wrt hdr in bytes */
- uint32_t sp_blob_offset; /** blob offset wrt hdr in bytes */
- void *entry; /** Address of sp entry point */
- uint32_t *css_abort; /** SP dmem abort flag */
- void *isp_code; /** SP dmem address holding xmem
- address of isp code */
- struct ia_css_fw_info fw; /** SP fw descriptor */
- const uint8_t *code; /** ISP pointer of allocated SP code */
-};
-
-/* Acceleration firmware descriptor.
- * This descriptor descibes either SP code (stand-alone), or
- * ISP code (a separate pipeline stage).
- */
-struct ia_css_acc_fw_hdr {
- enum ia_css_acc_type type; /** Type of accelerator */
- uint32_t isp_prog_name_offset; /** program name offset wrt
- header in bytes */
- uint32_t isp_blob_offset; /** blob offset wrt header
- in bytes */
- uint32_t isp_size; /** Size of isp blob */
- const uint8_t *isp_code; /** ISP pointer to code */
- struct ia_css_acc_sp sp; /** Standalone sp code */
- /** Firmware handle between user space and kernel */
- uint32_t handle;
- struct ia_css_data parameters; /** Current SP parameters */
-};
-
-/* Firmware structure.
- * This contains the header and actual blobs.
- * For standalone, it contains SP and ISP blob.
- * For a pipeline stage accelerator, it contains ISP code only.
- * Since its members are variable size, their offsets are described in the
- * header and computed using the access macros below.
- */
-struct ia_css_acc_fw {
- struct ia_css_acc_fw_hdr header; /** firmware header */
- /*
- int8_t isp_progname[]; **< ISP program name
- int8_t sp_progname[]; **< SP program name, stand-alone only
- uint8_t sp_code[]; **< SP blob, stand-alone only
- uint8_t isp_code[]; **< ISP blob
- */
-};
-
-/* Access macros for firmware */
-#define IA_CSS_ACC_OFFSET(t, f, n) ((t)((uint8_t *)(f)+(f->header.n)))
-#define IA_CSS_ACC_SP_PROG_NAME(f) IA_CSS_ACC_OFFSET(const char *, f, \
- sp.sp_prog_name_offset)
-#define IA_CSS_ACC_ISP_PROG_NAME(f) IA_CSS_ACC_OFFSET(const char *, f, \
- isp_prog_name_offset)
-#define IA_CSS_ACC_SP_CODE(f) IA_CSS_ACC_OFFSET(uint8_t *, f, \
- sp.sp_blob_offset)
-#define IA_CSS_ACC_SP_DATA(f) (IA_CSS_ACC_SP_CODE(f) + \
- (f)->header.sp.fw.blob.data_source)
-#define IA_CSS_ACC_ISP_CODE(f) IA_CSS_ACC_OFFSET(uint8_t*, f,\
- isp_blob_offset)
-#define IA_CSS_ACC_ISP_SIZE(f) ((f)->header.isp_size)
-
-/* Binary name follows header immediately */
-#define IA_CSS_EXT_ISP_PROG_NAME(f) ((const char *)(f)+(f)->blob.prog_name_offset)
-#define IA_CSS_EXT_ISP_MEM_OFFSETS(f) \
- ((const struct ia_css_memory_offsets *)((const char *)(f)+(f)->blob.mem_offsets))
-
-#endif /* !defined(__ISP) */
-
-enum ia_css_sp_sleep_mode {
- SP_DISABLE_SLEEP_MODE = 0,
- SP_SLEEP_AFTER_FRAME = 1 << 0,
- SP_SLEEP_AFTER_IRQ = 1 << 1
-};
-#endif /* _IA_CSS_ACC_TYPES_H */
OpenPOWER on IntegriCloud