media: staging: media: atomisp2: remove unused headers
All thoses headers are not used by any source files. Lets just remove them. Signed-off-by: Corentin Labbe <clabbe@baylibre.com> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
parent
01b610594f
commit
d82a4a14d4
@ -1,30 +0,0 @@
|
||||
/*
|
||||
* vlv2_plat_clock.h
|
||||
*
|
||||
* Copyright (C) 2013 Intel Corp
|
||||
* Author: Asutosh Pathak <asutosh.pathak@intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; version 2 of the License.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
||||
*/
|
||||
|
||||
#ifndef __VLV2_PLAT_CLOCK_H
|
||||
#define __VLV2_PLAT_CLOCK_H
|
||||
|
||||
int vlv2_plat_set_clock_freq(int clock_num, int freq_type);
|
||||
int vlv2_plat_get_clock_freq(int clock_num);
|
||||
|
||||
int vlv2_plat_configure_clock(int clock_num, u32 conf);
|
||||
int vlv2_plat_get_clock_status(int clock_num);
|
||||
|
||||
#endif /* __VLV2_PLAT_CLOCK_H */
|
@ -1,22 +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 _gp_regs_defs_h
|
||||
#define _gp_regs_defs_h
|
||||
|
||||
#define _HRT_GP_REGS_IS_FWD_REG_IDX 0
|
||||
|
||||
#define _HRT_GP_REGS_REG_ALIGN 4
|
||||
|
||||
#endif /* _gp_regs_defs_h */
|
@ -1,24 +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.
|
||||
*/
|
||||
|
||||
#ifndef _sp_hrt_h_
|
||||
#define _sp_hrt_h_
|
||||
|
||||
#define hrt_sp_dmem(cell) HRT_PROC_TYPE_PROP(cell, _dmem)
|
||||
|
||||
#define hrt_sp_dmem_master_port_address(cell) hrt_mem_master_port_address(cell, hrt_sp_dmem(cell))
|
||||
|
||||
#endif /* _sp_hrt_h_ */
|
||||
#endif
|
@ -1,22 +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 _gp_regs_defs_h
|
||||
#define _gp_regs_defs_h
|
||||
|
||||
#define _HRT_GP_REGS_IS_FWD_REG_IDX 0
|
||||
|
||||
#define _HRT_GP_REGS_REG_ALIGN 4
|
||||
|
||||
#endif /* _gp_regs_defs_h */
|
@ -1,24 +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.
|
||||
*/
|
||||
|
||||
#ifndef _sp_hrt_h_
|
||||
#define _sp_hrt_h_
|
||||
|
||||
#define hrt_sp_dmem(cell) HRT_PROC_TYPE_PROP(cell, _dmem)
|
||||
|
||||
#define hrt_sp_dmem_master_port_address(cell) hrt_mem_master_port_address(cell, hrt_sp_dmem(cell))
|
||||
|
||||
#endif /* _sp_hrt_h_ */
|
||||
#endif
|
@ -1,22 +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 _gp_regs_defs_h
|
||||
#define _gp_regs_defs_h
|
||||
|
||||
#define _HRT_GP_REGS_IS_FWD_REG_IDX 0
|
||||
|
||||
#define _HRT_GP_REGS_REG_ALIGN 4
|
||||
|
||||
#endif /* _gp_regs_defs_h */
|
@ -1,24 +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.
|
||||
*/
|
||||
|
||||
#ifndef _sp_hrt_h_
|
||||
#define _sp_hrt_h_
|
||||
|
||||
#define hrt_sp_dmem(cell) HRT_PROC_TYPE_PROP(cell, _dmem)
|
||||
|
||||
#define hrt_sp_dmem_master_port_address(cell) hrt_mem_master_port_address(cell, hrt_sp_dmem(cell))
|
||||
|
||||
#endif /* _sp_hrt_h_ */
|
||||
#endif
|
@ -1,673 +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.
|
||||
#endif
|
||||
|
||||
#ifdef ISP2401
|
||||
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 __CSS_API_VERSION_H
|
||||
#define __CSS_API_VERSION_H
|
||||
|
||||
/* @file
|
||||
* CSS API version file. This file contains the version number of the CSS-API.
|
||||
*
|
||||
* This file is generated from a set of input files describing the CSS-API
|
||||
* changes. Don't edit this file directly.
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
|
||||
The version string has four dot-separated numbers, read left to right:
|
||||
The first two are the API version, and should not be changed.
|
||||
The third number is incremented by a CSS firmware developer when the
|
||||
API change is not backwards compatible.
|
||||
The fourth number is incremented by the a CSS firmware developer for
|
||||
every API change.
|
||||
It should be zeroed when the third number changes.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef ISP2401
|
||||
#define CSS_API_VERSION_STRING "2.1.15.3"
|
||||
#else
|
||||
#define CSS_API_VERSION_STRING "2.1.20.9"
|
||||
#endif
|
||||
|
||||
/*
|
||||
Change log
|
||||
|
||||
v2.0.1.0, initial version:
|
||||
- added API versioning
|
||||
|
||||
v2.0.1.1, activate CSS-API versioning:
|
||||
- added description of major and minor version numbers
|
||||
|
||||
v2.0.1.2, modified struct ia_css_frame_info:
|
||||
- added new member ia_css_crop_info
|
||||
|
||||
v2.0.1.3, added IA_CSS_ERR_NOT_SUPPORTED
|
||||
|
||||
v2.1.0.0
|
||||
- moved version number to 2.1.0.0
|
||||
- created new files for refactoring the code
|
||||
|
||||
v2.1.1.0, modified struct ia_css_pipe_config and struct ia_css_pipe_info and struct ia_css_pipe:
|
||||
- use array to handle multiple output ports
|
||||
|
||||
v2.1.1.1
|
||||
- added api to lock/unlock of RAW Buffers to Support HALv3 Feature
|
||||
|
||||
v2.1.1.2, modified struct ia_css_stream_config:
|
||||
- to support multiple isys streams in one virtual channel, keep the old one for backward compatibility
|
||||
|
||||
v2.1.2.0, modify ia_css_stream_config:
|
||||
- add isys_config and input_config to support multiple isys stream within one virtual channel
|
||||
|
||||
v2.1.2.1, add IA_CSS_STREAM_FORMAT_NUM
|
||||
- add IA_CSS_STREAM_FORMAT_NUM definition to reflect the number of ia_css_stream_format enums
|
||||
|
||||
v2.1.2.2, modified enum ia_css_stream_format
|
||||
- Add 16bit YUV formats to ia_css_stream_format enum:
|
||||
- IA_CSS_STREAM_FORMAT_YUV420_16 (directly after IA_CSS_STREAM_FORMAT_YUV420_10)
|
||||
- IA_CSS_STREAM_FORMAT_YUV422_16 (directly after IA_CSS_STREAM_FORMAT_YUV422_10)
|
||||
|
||||
v2.1.2.3
|
||||
- added api to enable/disable digital zoom for capture pipe.
|
||||
|
||||
v2.1.2.4, change CSS API to generate the shading table which should be directly sent to ISP:
|
||||
- keep the old CSS API (which uses the conversion of the shading table in CSS) for backward compatibility
|
||||
|
||||
v2.1.2.5
|
||||
- Added SP frame time measurement (in ticks) and result is sent on a new member
|
||||
- in ia_css_buffer.h.
|
||||
|
||||
v2.1.2.6, add function ia_css_check_firmware_version()
|
||||
- the function ia_css_check_firmware_version() returns true when the firmware version matches and returns false otherwise.
|
||||
|
||||
v2.1.2.7
|
||||
- rename dynamic_data_index to dynamic_queue_id in struct ia_css_frame.
|
||||
- update IA_CSS_PIPE_MODE_NUM
|
||||
|
||||
v2.1.2.8
|
||||
- added flag for video full range
|
||||
|
||||
v2.1.2.9
|
||||
- add public parameters for xnr3 kernel
|
||||
|
||||
v2.1.2.10
|
||||
- add new interface to enable output mirroring
|
||||
|
||||
v2.1.2.11, MIPI buffers optimization
|
||||
- modified struct ia_css_mipi_buffer_config, added number of MIPI buffers needed for the stream
|
||||
- backwards compatible, need another patch to remove legacy function and code
|
||||
|
||||
v2.1.2.12
|
||||
- create consolidated firmware package for 2400, 2401, csi2p, bxtpoc
|
||||
|
||||
v2.1.3.0
|
||||
- rename ia_css_output_config.enable_mirror
|
||||
- add new interface to enable vertical output flipping
|
||||
|
||||
v2.1.3.1
|
||||
- deprecated ia_css_rx_get_irq_info and ia_css_rx_clear_irq_info because both are hardcoded to work on CSI port 1.
|
||||
- added new functions ia_css_rx_port_get_irq_info and ia_css_rx_port_clear_irq_info, both have a port ID as extra argument.
|
||||
|
||||
v2.1.3.2
|
||||
- reverted v2.1.3.0 change
|
||||
|
||||
v2.1.3.3
|
||||
- Added isys event queue.
|
||||
- Renamed ia_css_dequeue_event to ia_css_dequeue_psys_event
|
||||
- Made ia_css_dequeue_event deprecated
|
||||
|
||||
v2.1.3.4
|
||||
- added new interface to support ACC extension QoS feature.
|
||||
- added IA_CSS_EVENT_TYPE_ACC_STAGE_COMPLETE.
|
||||
|
||||
v2.1.3.5
|
||||
- added tiled frame format IA_CSS_FRAME_FORMAT_NV12_TILEY
|
||||
|
||||
v2.1.3.6
|
||||
- added functions ia_css_host_data_allocate and ia_css_host_data_free
|
||||
|
||||
v2.1.4.0, default pipe config change
|
||||
- disable enable_dz param by default
|
||||
|
||||
v2.1.5.0
|
||||
- removed mix_range field from yuvp1_y_ee_nr_frng_public_config
|
||||
|
||||
v2.1.5.1, exposure IDs per stream
|
||||
- added MIN/MAX exposure ID macros
|
||||
- made exposure ID sequence per-stream instead of global (across all streams)
|
||||
|
||||
#ifdef ISP2401
|
||||
v2.1.5.1, Add parameters to mmgr routines via a macro.
|
||||
- Replaced mmgr funtions with macros to add caller func name + line #.
|
||||
- This is done to help debug memory access issues, allocation issues, etc.
|
||||
|
||||
#endif
|
||||
v2.1.6.0, Interface for vertical output flip
|
||||
- add new interface to enable vertical output flipping
|
||||
- rename ia_css_output_config.enable_mirror
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.6.1, Effective res on pipe
|
||||
#else
|
||||
v2.1.6.2 (2 changes parallel), Effective res on pipe
|
||||
#endif
|
||||
- Added input_effective_res to struct ia_css_pipe_config in ia_css_pipe_public.h.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.6.2, CSS-API version file generated from individual changes
|
||||
#else
|
||||
v2.1.6.3 (2 changes parallel), CSS-API version file generated from individual changes
|
||||
#endif
|
||||
- Avoid merge-conflicts by generating version file from individual CSS-API changes.
|
||||
- Parallel CSS-API changes can map to the same version number after this change.
|
||||
- Version numbers for a change could increase due to parallel changes being merged.
|
||||
- The version number would not decrease for a change.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.6.5 (2 changes parallel), Add SP FW error event
|
||||
#else
|
||||
v2.1.6.6 (4 changes parallel), Add SP FW error event
|
||||
#endif
|
||||
- Added FW error event. This gets raised when the SP FW runs into an
|
||||
- error situation from which it cannot recover.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.6.5 (2 changes parallel), expose bnr FF enable bits in bnr public API
|
||||
#else
|
||||
v2.1.6.6 (4 changes parallel), expose bnr FF enable bits in bnr public API
|
||||
#endif
|
||||
- Added ff enable bits to bnr_public_config_dn_detect_ctrl_config_t struct
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.6.5 (2 changes parallel), ISP configuration per pipe
|
||||
#else
|
||||
v2.1.6.6 (4 changes parallel), ISP configuration per pipe
|
||||
#endif
|
||||
- Added ISP configuration per pipe support: p_isp_config field in
|
||||
- struct ia_css_pipe_config and ia_css_pipe_set_isp_config_on_pipe
|
||||
- and ia_css_pipe_set_isp_config functions
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.7.0, removed css_version.h
|
||||
#else
|
||||
v2.1.7.0 (2 changes parallel), removed css_version.h
|
||||
#endif
|
||||
- Removed css_version.h that was used for versioning in manual (non-CI) releases.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.7.1, Add helpers (get and set) for ISP cfg per pipe
|
||||
#else
|
||||
v2.1.7.2 (2 changes parallel), Add helpers (get and set) for ISP cfg per pipe
|
||||
#endif
|
||||
- Add helpers (get and set) for ISP configuration per pipe
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.7.2, Add feature to lock all RAW buffers
|
||||
#else
|
||||
v2.1.7.3 (2 changes parallel), Add feature to lock all RAW buffers
|
||||
#endif
|
||||
- This API change adds a boolean flag (lock_all) in the stream_config struct.
|
||||
- If this flag is set to true, then all frames will be locked if locking is
|
||||
- enabled. By default this flag is set to false.
|
||||
- When this flag is false, then only buffers that are sent to the preview pipe
|
||||
- will be locked. If continuous viewfinder is disabled, the flag should be set
|
||||
- to true.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.8.0 (2 changes parallel), Various changes to support ACC configuration per pipe
|
||||
#else
|
||||
v2.1.8.0 (4 changes parallel), Various changes to support ACC configuration per pipe
|
||||
#endif
|
||||
- Add ia_css_pipe_get_isp_config()
|
||||
- Remove ia_css_pipe_set_isp_config_on_pipe (duplicated
|
||||
- by ia_css_pipe_set_isp_config)
|
||||
- Add isp configuration as parameter for
|
||||
- ia_css_pipe_set_isp_config
|
||||
- Remove ia_css_pipe_isp_config_set()
|
||||
- Remove ia_css_pipe_isp_config_get()
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.8.2 (2 changes parallel), Added member num_invalid_frames to ia_css_pipe_info structure.
|
||||
#else
|
||||
v2.1.8.3 (4 changes parallel), Added member num_invalid_frames to ia_css_pipe_info structure.
|
||||
#endif
|
||||
- Added member num_invalid_frames to ia_css_pipe_info structure.
|
||||
- This helps the driver make sure that the first valid output
|
||||
- frame goes into the first user-supplied output buffer.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.8.4 (2 changes parallel), ISYS EOF timestamp for output buffers
|
||||
#else
|
||||
v2.1.8.5 (4 changes parallel), ISYS EOF timestamp for output buffers
|
||||
#endif
|
||||
- driver gets EOF timer to every out frame . ia_css_buffer modified to accomodate same.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.8.4 (4 changes parallel), display_config
|
||||
#else
|
||||
v2.1.8.5 (6 changes parallel), display_config
|
||||
#endif
|
||||
- Added formats- and output config parameters for configuration of the (optional) display output.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.8.4 (2 changes parallel), Adding zoom region parameters to CSS API
|
||||
#else
|
||||
v2.1.8.5 (4 changes parallel), Adding zoom region parameters to CSS API
|
||||
#endif
|
||||
- Adding ia_css_point and ia_css_region structures to css-api.
|
||||
- Adding zoom_region(type ia_css_region) parameter to ia_css_dz_config structure.
|
||||
- By using this user can do the zoom based on zoom region and
|
||||
- the center of the zoom region is not restricted at the center of the input frame.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.8.6 (1 changes parallel), Add new ia_css_fw_warning type
|
||||
#else
|
||||
v2.1.8.7 (3 changes parallel), Add new ia_css_fw_warning type
|
||||
#endif
|
||||
- Add IA_CSS_FW_WARNING_TAG_EXP_ID_FAILED enum to ia_css_fw_warning type
|
||||
- Extend sp_warning() with exp_id parameter
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.8.6 (1 changes parallel), Add includes in GC, GC2 kernel interface files
|
||||
#else
|
||||
v2.1.8.7 (3 changes parallel), Add includes in GC, GC2 kernel interface files
|
||||
#endif
|
||||
- add ia_css_ctc_types.h includes in ia_css_gc_types.h and ia_css_gc2_types.h. Needed to get ia_css_vamem_type.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.9.0 (1 changes parallel), Introduce sp assert event.
|
||||
#else
|
||||
v2.1.9.0 (3 changes parallel), Introduce sp assert event.
|
||||
#endif
|
||||
- Add IA_CSS_EVENT_TYPE_FW_ASSERT. The FW sends the event in case an assert goes off.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.9.1 (1 changes parallel), Exclude driver part from ia_css_buffer.h as it is also used by SP
|
||||
#else
|
||||
v2.1.9.2 (3 changes parallel), Exclude driver part from ia_css_buffer.h as it is also used by SP
|
||||
#endif
|
||||
- Excluded driver part of the interface from SP/ISP code
|
||||
- Driver I/F is not affected
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.9.2, added IA_CSS_EVENT_TYPE_TIMER
|
||||
#else
|
||||
v2.1.9.3 (2 changes parallel), added IA_CSS_EVENT_TYPE_TIMER
|
||||
#endif
|
||||
- Added a new event called IA_CSS_EVENT_TYPE_TIMER
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.10.0 (4 changes parallel), Add a flag "enable_dpc" to "struct ia_css_pipe_config"
|
||||
#else
|
||||
v2.1.10.0 (6 changes parallel), Add a flag "enable_dpc" to "struct ia_css_pipe_config"
|
||||
#endif
|
||||
- Add a flag "enable_dpc" to "struct ia_css_pipe_config"
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.10.6 (6 changes parallel), change the pipe version type from integer to enum
|
||||
#else
|
||||
v2.1.10.8 (9 changes parallel), change the pipe version type from integer to enum
|
||||
#endif
|
||||
- add new enum to enumerate ISP pipe version
|
||||
- change the pipe version type in pipe_config from integer to enum
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.13.0 (8 changes parallel), Stop Support for Skycam B0
|
||||
#else
|
||||
v2.1.14.0 (12 changes parallel), Stop Support for Skycam B0
|
||||
#endif
|
||||
- Remove a few pre-processor defines for Skycam B0/C0 as support
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.0 (24 changes parallel), change the pipe version type from integer to enum
|
||||
#else
|
||||
v2.1.15.0 (28 changes parallel), change the pipe version type from integer to enum
|
||||
#endif
|
||||
- remove the temporary workaround for backward compatability
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.0 (13 changes parallel), expose_gamma_enable_option
|
||||
#else
|
||||
v2.1.15.0 (17 changes parallel), expose_gamma_enable_option
|
||||
#endif
|
||||
- added enable param to gamma_corr_public_config
|
||||
- added documentation to rgbpp_public.h
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.0 (12 changes parallel), Remove deprecated FW_ERROR event.
|
||||
#else
|
||||
v2.1.15.0 (16 changes parallel), Remove deprecated FW_ERROR event.
|
||||
#endif
|
||||
- Remove code for deprecated FW_ERROR event.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.3 (5 changes parallel), fix IEFD's puclic API types
|
||||
#else
|
||||
v2.1.15.5 (8 changes parallel), fix IEFD's puclic API types
|
||||
#endif
|
||||
- fix IEFD public API members types: rad_cu6_x1,rad_cu_unsharp_x1 & unsharp_amount
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.3 (5 changes parallel), Add IA_CSS_FW_WARNING_FRAME_PARAM_MISMATCH
|
||||
#else
|
||||
v2.1.15.5 (8 changes parallel), Add IA_CSS_FW_WARNING_FRAME_PARAM_MISMATCH
|
||||
#endif
|
||||
- Add IA_CSS_FW_WARNING_FRAME_PARAM_MISMATCH enum to ia_css_fw_warning type
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.4 (5 changes parallel), new API getter functions for gdc in buffer information
|
||||
#else
|
||||
v2.1.15.8 (11 changes parallel), add_flag_to_disable_continous_viewfinder
|
||||
- add a new flag in stream_config to disable continuous viewfinder
|
||||
- in ZSL use case.
|
||||
|
||||
v2.1.16.0 (8 changes parallel), revert ia_css_skc_dvs_statistics field size change
|
||||
- Reverted field size change, change was not ready for driver yet.
|
||||
|
||||
v2.1.17.0 (7 changes parallel), change CSS API to fix the shading correction off-center issue
|
||||
- update the ia_css_shading_info structure in ia_css_types.h
|
||||
|
||||
v2.1.17.0 (32 changes parallel), add_flag_to_disable_continous_viewfinder_part2
|
||||
- remove the old interfaces
|
||||
|
||||
v2.1.17.4 (8 changes parallel), Added public interface for setting the scaler LUT.
|
||||
- Added the public struct to output system and modified the global config struct.
|
||||
|
||||
v2.1.17.5 (7 changes parallel), Add parameters for new TNR3 component
|
||||
- Add new parameters for new TNR3 component
|
||||
|
||||
v2.1.17.6 (9 changes parallel), Update skycam DPC_MAX_NUMBER_OF_DP
|
||||
- Automated tooling requires an API change request
|
||||
- This change changes the implementation of #define DPC_MAX_NUMBER_OF_DP
|
||||
- it now returns a different number
|
||||
|
||||
v2.1.17.6 (8 changes parallel), Return an error when both DPC and BDS are enabled in a pipe config
|
||||
- Return an error when both DPC and BDS are enabled in a pipe config
|
||||
|
||||
v2.1.17.6 (9 changes parallel), new API getter functions for gdc in buffer information
|
||||
#endif
|
||||
- ia_css_pipe_get_dvs_filter() added
|
||||
- ia_css_pipe_get_gdc_in_buffer_info() added
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.5 (8 changes parallel), Update CNR2 ineffective values
|
||||
#else
|
||||
v2.1.17.7 (12 changes parallel), Update CNR2 ineffective values
|
||||
#endif
|
||||
- Fixed Incorrect ineffective values listed in ia_css_cnr_config
|
||||
- Correct Ineffective value is 8191
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.5 (8 changes parallel), af_roi_api
|
||||
#else
|
||||
v2.1.17.7 (12 changes parallel), af_roi_api
|
||||
#endif
|
||||
- added a new function to set AF ROI ia_css_set_af_roi
|
||||
- added a new struct ia_css_s3a_roi_offset
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.5 (8 changes parallel), remove x_y_end_from_ae_and_awb
|
||||
#else
|
||||
v2.1.17.7 (12 changes parallel), Enlarge AF AWB_FR stats buffers
|
||||
- Enlarge AF and AWB_FR stats buffers to support max grid width per stripe as oppose to per frame
|
||||
|
||||
v2.1.17.7 (12 changes parallel), remove x_y_end_from_ae_and_awb
|
||||
#endif
|
||||
- added a flag to prepare removal of x_end and y_end from ae grid public config
|
||||
- added a flag to prepare removal of x_end and y_end from awb grid public config
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.5 (4 changes parallel), Added public interface for setting the scaler LUT.
|
||||
- Added the public struct to output system and modified the global config struct.
|
||||
#else
|
||||
v2.1.17.8 (5 changes parallel)
|
||||
- added input_yuv , input_raw to ia_css_binary_info.enable
|
||||
- struct, these attributes were always there but not saved
|
||||
- in the binary_info struct
|
||||
#endif
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.6 (8 changes parallel), add_flag_to_disable_continous_viewfinder
|
||||
- add a new flag in stream_config to disable continuous viewfinder
|
||||
- in ZSL use case.
|
||||
#else
|
||||
v2.1.17.9 (6 changes parallel), cleanup_awb_ae_rgb_integration_flags
|
||||
- this change only cleans up an approved api CR see wikis below
|
||||
#endif
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.6 (8 changes parallel), Enlarge AF AWB_FR stats buffers
|
||||
- Enlarge AF and AWB_FR stats buffers to support max grid width per stripe as oppose to per frame
|
||||
#else
|
||||
v2.1.17.10 (6 changes parallel), output_system_input_resolution
|
||||
- adedd gdc_output_system_in_resolution to pipe config struct
|
||||
#endif
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.8 (6 changes parallel), pipe config option for vf output bci mode downscaling
|
||||
#else
|
||||
v2.1.17.10 (5 changes parallel), Per pipe DPC configuration is added to ia_css_isp_parameters
|
||||
- Per pipe DPC configuration is added to ia_css_isp_parameters
|
||||
|
||||
v2.1.17.10 (10 changes parallel), pipe config option for vf output bci mode downscaling
|
||||
#endif
|
||||
- vf downscaling using yuv_scale binary.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.10 (7 changes parallel), Add scale mode GDC V2 LUT to CSS API
|
||||
#else
|
||||
v2.1.17.12 (11 changes parallel), Add scale mode GDC V2 LUT to CSS API
|
||||
#endif
|
||||
- Allow client to set global LUT for gdc v2 (First step in this change. See wiki page for more details)
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.10 (8 changes parallel), Include added to type-support.h.
|
||||
#else
|
||||
v2.1.17.12 (12 changes parallel), Include added to type-support.h.
|
||||
#endif
|
||||
- Include of hive/cell_support.h was added to type-support.h, in order to
|
||||
- have access to define HAVE_STDINT.
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.11 (7 changes parallel), Pipe configuration to enable BLI mode downscaling for
|
||||
#else
|
||||
v2.1.17.13 (11 changes parallel), Pipe configuration to enable BLI mode downscaling for
|
||||
#endif
|
||||
- BLI mode downscaling for capture post-processing
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.14 (9 changes parallel), Fix copyright headers (no functional change)
|
||||
#else
|
||||
v2.1.17.15 (8 changes parallel), Add copyright headers to css files
|
||||
- Add copyright headers to css API files
|
||||
|
||||
v2.1.17.15 (8 changes parallel), add copyright header to include files
|
||||
- add copyright header to include files
|
||||
|
||||
v2.1.17.15 (8 changes parallel), add copyright header to isp files
|
||||
- add copyright header to isp files
|
||||
|
||||
v2.1.17.15 (8 changes parallel), add copyright header to refactored code
|
||||
- add copyright header to refactored code
|
||||
- (base, camera, runtime directories)
|
||||
|
||||
v2.1.17.16 (13 changes parallel), Fix copyright headers (no functional change)
|
||||
#endif
|
||||
- No functional change; only fixes copyright headers
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.14 (6 changes parallel), Remove continuous mode special case handling in ia_css_pipe_set_isp_config
|
||||
#else
|
||||
v2.1.17.16 (10 changes parallel), Remove continuous mode special case handling in ia_css_pipe_set_isp_config
|
||||
#endif
|
||||
- For continuous mode isp_config was being send to all pipes,
|
||||
- even though API ia_css_pipe_set_isp_config is for single pipe
|
||||
- Removed incorrect case
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.14 (6 changes parallel), DVS statistics grid produced by accelerator
|
||||
#else
|
||||
v2.1.17.16 (5 changes parallel), Added documentation to formats_config header file
|
||||
- Added description of ranges for full-range flag
|
||||
|
||||
v2.1.17.16 (10 changes parallel), DVS statistics grid produced by accelerator
|
||||
#endif
|
||||
- Add DVS statistics produced by accelerator grid to pipe info
|
||||
- Add ia_css_pipe_has_dvs_stats function
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.15 (7 changes parallel), cont_remove_x_y_end_from_ae_and_awb
|
||||
#else
|
||||
v2.1.17.17 (5 changes parallel), Provide the CSS interface to select the luma only binaries
|
||||
- Add a flag "enable_luma_only" to "struct ia_css_pipe_config"
|
||||
|
||||
v2.1.17.17 (11 changes parallel), cont_remove_x_y_end_from_ae_and_awb
|
||||
#endif
|
||||
- this patch doesn't introduce any new api change, it only fixes a recent
|
||||
- api merged change (#31938) , in order to have success CI i had to upload an api change request
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.17 (6 changes parallel), Add XNR3 blending strength to kernel interface
|
||||
- Added a blending strength field to the XNR3 kernel interface to add
|
||||
- support for blending.
|
||||
#else
|
||||
v2.1.17.17 (10 changes parallel), GAC state dump for debug
|
||||
- added ia_css_dump_gac_state function
|
||||
|
||||
v2.1.17.18 (23 changes parallel), output_format_nv12_16
|
||||
- added new output fromat nv12_16
|
||||
#endif
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.18 (22 changes parallel), eliminate two_pixels_per_clock field
|
||||
#else
|
||||
v2.1.17.18 (4 changes parallel), Remove author details from SKC src code
|
||||
- remove author details from skc src code
|
||||
|
||||
v2.1.17.19 (26 changes parallel), eliminate two_pixels_per_clock field
|
||||
#endif
|
||||
- remove obsolete field two_pixels_per_clock
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.19 (3 changes parallel), Fix copyright headers (no functional change)
|
||||
#else
|
||||
v2.1.17.20 (7 changes parallel), Fix copyright headers (no functional change)
|
||||
#endif
|
||||
- No functional change; only fixes copyright headers
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.14.21 (3 changes parallel), ia_css_skc_dvs_statistics field size change
|
||||
- ia_css_skc_dvs_statistics field size change
|
||||
#else
|
||||
v2.1.17.20 (11 changes parallel), Add XNR3 blending strength to kernel interface
|
||||
- Added a blending strength field to the XNR3 kernel interface to add
|
||||
- support for blending.
|
||||
#endif
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.15.0 (3 changes parallel), revert ia_css_skc_dvs_statistics field size change
|
||||
- Reverted field size change, change was not ready for driver yet.
|
||||
#else
|
||||
v2.1.17.21 (24 changes parallel), Add N_CSS_PRBS_IDS and N_CSS_TPG_IDS
|
||||
- Add N_CSS_PRBS_IDS to reflect the number of ia_css_prbs_id enum
|
||||
- Add N_CSS_TPG_IDS to reflect the number of ia_css_tpg_id enum
|
||||
#endif
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.15.2 (3 changes parallel), Return an error when both DPC and BDS are enabled in a pipe config
|
||||
- Return an error when both DPC and BDS are enabled in a pipe config
|
||||
#else
|
||||
v2.1.17.23 (8 changes parallel), ia_css_skc_dvs_statistics field size change
|
||||
- ia_css_skc_dvs_statistics field size change
|
||||
#endif
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.15.3 (2 changes parallel), Update skycam DPC_MAX_NUMBER_OF_DP
|
||||
- Automated tooling requires an API change request
|
||||
- This change changes the implementation of #define DPC_MAX_NUMBER_OF_DP
|
||||
- it now returns a different number
|
||||
#else
|
||||
v2.1.19.0 (6 changes parallel)
|
||||
- Added code to calculate input_res using the Windows specification of binning
|
||||
#endif
|
||||
|
||||
#ifndef ISP2401
|
||||
v2.1.15.3 (18 changes parallel), output_format_nv12_16
|
||||
- added new output fromat nv12_16
|
||||
#else
|
||||
v2.1.20.0 (7 changes parallel), Add interface to select TNR enabled binaries
|
||||
- Add a bool "enable_tnr" to "struct ia_css_pipe_config"
|
||||
|
||||
v2.1.20.0 (6 changes parallel), OSYS & GDC Debug dump function addition
|
||||
- add GDC state dump function
|
||||
- add OSYS state dump function
|
||||
|
||||
v2.1.20.4 (7 changes parallel), Add ref_buf_select parameter for TNR3 to kernel interface
|
||||
- Added a ref_buf_select parameter to the TNR3 kernel interface to add
|
||||
- support for multiple reference buffers.
|
||||
|
||||
v2.1.20.4 (6 changes parallel), DVS MAX grid dimensions to cover maximal resolution
|
||||
- rename DVS_TABLE_HEIGHT/WIDTH to MAX_DVS_COORDS_TABLE_HEIGHT/WIDTH
|
||||
- modify value of the above macros to cover max resolution
|
||||
|
||||
v2.1.20.5 (54 changes parallel), add input feeder calculations getter
|
||||
- add input_feeder_config public struct
|
||||
- add get_input_feeder_config getter
|
||||
|
||||
v2.1.20.5 (4 changes parallel), Enable runtime updating mapped args for QoS extension pipe
|
||||
- added ia_css_pipe_update_qos_ext_mapped_arg()
|
||||
|
||||
v2.1.20.7 (77 changes parallel), Add parameters to CPU routines via a macro.
|
||||
- Replaced CPU memory allocation functions with macros to add caller func name + line number.
|
||||
- This is done to help debug memory access issues, allocation issues, etc.
|
||||
- Changed API: only ia_css_env.h
|
||||
|
||||
v2.1.20.7 (2 changes parallel), Frame format override
|
||||
- Added a function call to the pipe interface for overriding
|
||||
- the frame format as set in the pipe.
|
||||
- This is an optional interface that can be used under
|
||||
- some strict conditions.
|
||||
|
||||
v2.1.20.7 (2 changes parallel), Output_system_in_res Information
|
||||
- Output_system_in_res_info field added to pipe_info struct
|
||||
|
||||
v2.1.20.8, Temprarily disable memory debug features for SVOS.
|
||||
- Temporary commented out the additions to allow SKC testing till root cause found
|
||||
- Changed files ia_css_env.h and sh_css.c.
|
||||
|
||||
v2.1.20.9, Enable ISP 2.7 naming
|
||||
- Add IA_CSS_PIPE_VERSION_2_7 to enum ia_css_pipe_version
|
||||
- Add #define SH_CSS_ISP_PIPE_VERSION_2_7 4
|
||||
#endif
|
||||
|
||||
*/
|
||||
|
||||
#endif /*__CSS_API_VERSION_H*/
|
@ -1,148 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _hive_isp_css_ddr_hrt_modified_h_
|
||||
#define _hive_isp_css_ddr_hrt_modified_h_
|
||||
|
||||
#include <hmm_64/hmm.h>
|
||||
|
||||
/* This function reads an image from DDR and stores it in the img_buf array
|
||||
that has been allocated by the caller.
|
||||
The specifics of how the pixels are stored into DDR by the DMA are taken
|
||||
into account (bits padded to a width of 256, depending on the number of
|
||||
elements per ddr word).
|
||||
The DMA specific parameters give to this function (elems_per_xword and sign_extend)
|
||||
should correspond to those given to the DMA engine.
|
||||
The address is a virtual address which will be translated to a physical address before
|
||||
data is loaded from or stored to that address.
|
||||
|
||||
The return value is 0 in case of success and 1 in case of failure.
|
||||
*/
|
||||
unsigned int
|
||||
hrt_isp_css_read_image_from_ddr(
|
||||
unsigned short *img_buf,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int elems_per_xword,
|
||||
unsigned int sign_extend,
|
||||
hmm_ptr virt_addr);
|
||||
|
||||
/* This function writes an image to DDR, keeping the same aspects into account as the read_image function
|
||||
above. */
|
||||
unsigned int
|
||||
hrt_isp_css_write_image_to_ddr(
|
||||
const unsigned short *img_buf,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int elems_per_xword,
|
||||
unsigned int sign_extend,
|
||||
hmm_ptr virt_addr);
|
||||
|
||||
/* return the size in bytes of an image (frame or plane). */
|
||||
unsigned int
|
||||
hrt_isp_css_sizeof_image_in_ddr(
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int bits_per_element);
|
||||
|
||||
unsigned int
|
||||
hrt_isp_css_stride_of_image_in_ddr(
|
||||
unsigned int width,
|
||||
unsigned int bits_per_element);
|
||||
|
||||
hmm_ptr
|
||||
hrt_isp_css_alloc_image_in_ddr(
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int elems_per_xword);
|
||||
|
||||
hmm_ptr
|
||||
hrt_isp_css_calloc_image_in_ddr(
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int elems_per_xword);
|
||||
|
||||
#ifndef HIVE_ISP_NO_GDC
|
||||
#include "gdc_v2_defs.h"
|
||||
|
||||
hmm_ptr
|
||||
hrt_isp_css_alloc_gdc_lut_in_ddr(void);
|
||||
|
||||
void
|
||||
hrt_isp_css_write_gdc_lut_to_ddr(
|
||||
short values[4][HRT_GDC_N],
|
||||
hmm_ptr virt_addr);
|
||||
#endif
|
||||
|
||||
#ifdef _HIVE_ISP_CSS_FPGA_SYSTEM
|
||||
hmm_ptr
|
||||
hrt_isp_css_alloc_image_for_display(
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int elems_per_xword);
|
||||
|
||||
hmm_ptr
|
||||
hrt_isp_css_calloc_image_for_display(
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int elems_per_xword);
|
||||
#endif
|
||||
|
||||
/* New set of functions, these do not require the elems_per_xword, but use bits_per_element instead,
|
||||
this way the user does not need to know about the width of a DDR word. */
|
||||
unsigned int
|
||||
hrt_isp_css_read_unsigned(
|
||||
unsigned short *target,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int source_bits_per_element,
|
||||
hmm_ptr source);
|
||||
|
||||
unsigned int
|
||||
hrt_isp_css_read_signed(
|
||||
short *target,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int source_bits_per_element,
|
||||
hmm_ptr source);
|
||||
|
||||
unsigned int
|
||||
hrt_isp_css_write_unsigned(
|
||||
const unsigned short *source,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int target_bits_per_element,
|
||||
hmm_ptr target);
|
||||
|
||||
unsigned int
|
||||
hrt_isp_css_write_signed(
|
||||
const short *source,
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int target_bits_per_element,
|
||||
hmm_ptr target);
|
||||
|
||||
hmm_ptr
|
||||
hrt_isp_css_alloc(
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int bits_per_element);
|
||||
|
||||
hmm_ptr
|
||||
hrt_isp_css_calloc(
|
||||
unsigned int width,
|
||||
unsigned int height,
|
||||
unsigned int bits_per_element);
|
||||
|
||||
#endif /* _hive_isp_css_ddr_hrt_modified_h_ */
|
@ -1,79 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _hive_isp_css_hrt_h
|
||||
#define _hive_isp_css_hrt_h
|
||||
|
||||
#include "system_types.h"
|
||||
|
||||
#include "hive_isp_css_host_ids_hrt.h"
|
||||
#include "hive_isp_css_defs.h"
|
||||
|
||||
#ifdef HRT_ISP_CSS_CUSTOM_HOST
|
||||
#ifndef HRT_USE_VIR_ADDRS
|
||||
#define HRT_USE_VIR_ADDRS
|
||||
#endif
|
||||
/*#include "hive_isp_css_custom_host_hrt.h"*/
|
||||
#endif
|
||||
|
||||
#include <gpio_block.h>
|
||||
#include <gp_regs.h>
|
||||
#include <gp_timer_hrt.h>
|
||||
#include <css_receiver_2400_hrt.h>
|
||||
// #include <isp2400_mamoiada_params.h>
|
||||
// #include <isp2400_support.h>
|
||||
/* insert idle signal clearing and setting around hrt_main */
|
||||
#if !defined(HRT_HW) || defined(HRT_ISP_CSS_INSERT_IDLE_SIGNAL)
|
||||
#define hrt_main _hrt_isp_css_main
|
||||
#endif
|
||||
#ifdef _HIVE_ISP_CSS_SPECMAN_SYSTEM
|
||||
#include "hive_isp_css_2400_specman_system.h"
|
||||
#else
|
||||
#if defined(IS_ISP_2400_MAMOIADA_SYSTEM)
|
||||
#include "hive_isp_css_2400_system.h"
|
||||
#elif defined(IS_ISP_2401_MAMOIADA_SYSTEM)
|
||||
#include "hive_isp_css_2401_system.h"
|
||||
#else
|
||||
#error "hive_isp_css_hrt_modified.h: SYSTEM must be one of {2400_MAMOIADA_SYSTEM, 2401_MAMOIADA_SYSTEM}"
|
||||
#endif
|
||||
#endif
|
||||
#include <sp_hrt.h>
|
||||
#include <input_system_hrt.h>
|
||||
#include <input_selector_hrt.h>
|
||||
#include <sig_monitor_hrt.h>
|
||||
|
||||
#include "hive_isp_css_sdram_wakeup_hrt.h"
|
||||
#include "hive_isp_css_idle_signal_hrt.h"
|
||||
#include "hive_isp_css_sp_hrt.h"
|
||||
#include "hive_isp_css_isp_hrt.h"
|
||||
#include "hive_isp_css_streaming_to_mipi_hrt.h"
|
||||
#include "hive_isp_css_testbench_hrt.h"
|
||||
#include "hive_isp_css_streaming_monitors_hrt.h"
|
||||
#include "hive_isp_css_gp_regs_hrt.h"
|
||||
#if defined(IS_ISP_2400_MAMOIADA_SYSTEM)
|
||||
#include "hive_isp_css_irq_hrt.h"
|
||||
#elif defined(IS_ISP_2401_MAMOIADA_SYSTEM)
|
||||
#include "hive_isp_css_2401_irq_hrt.h"
|
||||
#else
|
||||
#error "hive_isp_css_hrt_modified.h: SYSTEM must be one of {2400_MAMOIADA_SYSTEM, 2401_MAMOIADA_SYSTEM}"
|
||||
#endif
|
||||
|
||||
#include "hive_isp_css_stream_switch_hrt.h"
|
||||
|
||||
#include "hive_isp_css_ddr_hrt_modified.h"
|
||||
#include "hive_isp_css_dma_set_hrt.h"
|
||||
|
||||
#define HIVE_ISP_CSS_NO_STREAM_SWITCH 1
|
||||
|
||||
#endif /* _hive_isp_css_hrt_h */
|
@ -1,35 +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 __RESOURCE_GLOBAL_H_INCLUDED__
|
||||
#define __RESOURCE_GLOBAL_H_INCLUDED__
|
||||
|
||||
#define IS_RESOURCE_VERSION_1
|
||||
|
||||
typedef enum {
|
||||
DMA_CHANNEL_RESOURCE_TYPE,
|
||||
IRQ_CHANNEL_RESOURCE_TYPE,
|
||||
MEM_SECTION_RESOURCE_TYPE,
|
||||
N_RESOURCE_TYPE
|
||||
} resource_type_ID_t;
|
||||
|
||||
typedef enum {
|
||||
PERMANENT_RESOURCE_RESERVATION,
|
||||
PERSISTENT_RESOURCE_RESERVATION,
|
||||
DEDICTATED_RESOURCE_RESERVATION,
|
||||
SHARED_RESOURCE_RESERVATION,
|
||||
N_RESOURCE_RESERVATION
|
||||
} resource_reservation_t;
|
||||
|
||||
#endif /* __RESOURCE_GLOBAL_H_INCLUDED__ */
|
@ -1,20 +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 __XMEM_GLOBAL_H_INCLUDED__
|
||||
#define __XMEM_GLOBAL_H_INCLUDED__
|
||||
|
||||
#include "isp.h"
|
||||
|
||||
#endif /* __XMEM_GLOBAL_H_INCLUDED__ */
|
@ -1,46 +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 __BAMEM_H_INCLUDED__
|
||||
#define __BAMEM_H_INCLUDED__
|
||||
|
||||
/*
|
||||
* This file is included on every cell {SP,ISP,host} and on every system
|
||||
* that uses the BAMEM device. It defines the API to DLI bridge
|
||||
*
|
||||
* System and cell specific interfaces and inline code are included
|
||||
* conditionally through Makefile path settings.
|
||||
*
|
||||
* - . system and cell agnostic interfaces, constants and identifiers
|
||||
* - public: system agnostic, cell specific interfaces
|
||||
* - private: system dependent, cell specific interfaces & inline implementations
|
||||
* - global: system specific constants and identifiers
|
||||
* - local: system and cell specific constants and identifiers
|
||||
*/
|
||||
|
||||
|
||||
#include "system_local.h"
|
||||
#include "bamem_local.h"
|
||||
|
||||
#ifndef __INLINE_BAMEM__
|
||||
#define STORAGE_CLASS_BAMEM_H extern
|
||||
#define STORAGE_CLASS_BAMEM_C
|
||||
#include "bamem_public.h"
|
||||
#else /* __INLINE_BAMEM__ */
|
||||
#define STORAGE_CLASS_BAMEM_H static inline
|
||||
#define STORAGE_CLASS_BAMEM_C static inline
|
||||
#include "bamem_private.h"
|
||||
#endif /* __INLINE_BAMEM__ */
|
||||
|
||||
#endif /* __BAMEM_H_INCLUDED__ */
|
@ -1,27 +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 __BBB_CONFIG_H_INCLUDED__
|
||||
#define __BBB_CONFIG_H_INCLUDED__
|
||||
/* This header contains BBB defines common to ISP and host */
|
||||
|
||||
#define BFA_MAX_KWAY (49)
|
||||
#define BFA_RW_LUT_SIZE (7)
|
||||
|
||||
#define SAD3x3_IN_SHIFT (2) /* input right shift value for SAD3x3 */
|
||||
#define SAD3x3_OUT_SHIFT (2) /* output right shift value for SAD3x3 */
|
||||
|
||||
/* XCU and BMA related defines shared between host and ISP
|
||||
* also need to be moved here */
|
||||
#endif /* __BBB_CONFIG_H_INCLUDED__ */
|
@ -1,59 +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 __CPU_MEM_SUPPORT_H_INCLUDED__
|
||||
#define __CPU_MEM_SUPPORT_H_INCLUDED__
|
||||
|
||||
#if defined (__KERNEL__)
|
||||
#include <linux/string.h> /* memset */
|
||||
#else
|
||||
#include <string.h> /* memset */
|
||||
#endif
|
||||
|
||||
#include "sh_css_internal.h" /* sh_css_malloc and sh_css_free */
|
||||
|
||||
static inline void*
|
||||
ia_css_cpu_mem_alloc(unsigned int size)
|
||||
{
|
||||
return sh_css_malloc(size);
|
||||
}
|
||||
|
||||
static inline void*
|
||||
ia_css_cpu_mem_copy(void* dst, const void* src, unsigned int size)
|
||||
{
|
||||
if(!src || !dst)
|
||||
return NULL;
|
||||
|
||||
return memcpy(dst, src, size);
|
||||
}
|
||||
|
||||
static inline void*
|
||||
ia_css_cpu_mem_set_zero(void* dst, unsigned int size)
|
||||
{
|
||||
if(!dst)
|
||||
return NULL;
|
||||
|
||||
return memset(dst, 0, size);
|
||||
}
|
||||
|
||||
static inline void
|
||||
ia_css_cpu_mem_free(void* ptr)
|
||||
{
|
||||
if(!ptr)
|
||||
return;
|
||||
|
||||
sh_css_free(ptr);
|
||||
}
|
||||
|
||||
#endif /* __CPU_MEM_SUPPORT_H_INCLUDED__ */
|
@ -1,24 +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 __ISP2400_CONFIG_H_INCLUDED__
|
||||
#define __ISP2400_CONFIG_H_INCLUDED__
|
||||
|
||||
#define NUM_BITS 14
|
||||
#define NUM_SLICE_ELEMS 4
|
||||
#define ROUNDMODE ROUND_NEAREST_EVEN
|
||||
#define MAX_SHIFT_1W (NUM_BITS-1) /* Max number of bits a 1w input can be shifted */
|
||||
#define MAX_SHIFT_2W (2*NUM_BITS-1) /* Max number of bits a 2w input can be shifted */
|
||||
|
||||
#endif /* __ISP2400_CONFIG_H_INCLUDED__ */
|
@ -1,29 +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 __ISP2500_CONFIG_H_INCLUDED__
|
||||
#define __ISP2500_CONFIG_H_INCLUDED__
|
||||
|
||||
#define NUM_BITS 12
|
||||
#define NUM_SLICE_ELEMS 4
|
||||
#define ROUNDMODE ROUND_NEAREST_EVEN
|
||||
#define MAX_SHIFT_1W (NUM_BITS-1) /* Max number of bits a 1w input can be shifted */
|
||||
#define MAX_SHIFT_2W (2*NUM_BITS-1) /* Max number of bits a 2w input can be shifted */
|
||||
|
||||
|
||||
#define HAS_div_unit
|
||||
|
||||
#define HAS_vec_sub
|
||||
|
||||
#endif /* __ISP2500_CONFIG_H_INCLUDED__ */
|
@ -1,34 +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 __ISP2600_CONFIG_H_INCLUDED__
|
||||
#define __ISP2600_CONFIG_H_INCLUDED__
|
||||
|
||||
|
||||
#define NUM_BITS 16
|
||||
|
||||
|
||||
#define NUM_SLICE_ELEMS 8
|
||||
#define ROUNDMODE ROUND_NEAREST_EVEN
|
||||
#define MAX_SHIFT_1W (NUM_BITS-1) /* Max number of bits a 1w input can be shifted */
|
||||
#define MAX_SHIFT_2W (2*NUM_BITS-1) /* Max number of bits a 2w input can be shifted */
|
||||
#define ISP_NWAY 32 /* Number of elements in a vector in ISP 2600 */
|
||||
|
||||
#define HAS_div_unit
|
||||
#define HAS_1w_sqrt_u_unit
|
||||
#define HAS_2w_sqrt_u_unit
|
||||
|
||||
#define HAS_vec_sub
|
||||
|
||||
#endif /* __ISP2600_CONFIG_H_INCLUDED__ */
|
@ -1,70 +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.
|
||||
*/
|
||||
|
||||
#ifndef __ISP2601_CONFIG_H_INCLUDED__
|
||||
#define __ISP2601_CONFIG_H_INCLUDED__
|
||||
|
||||
#define NUM_BITS 16
|
||||
#define ISP_VEC_ELEMBITS NUM_BITS
|
||||
#define ISP_NWAY 32
|
||||
#define NUM_SLICE_ELEMS 4
|
||||
#define ROUNDMODE ROUND_NEAREST_EVEN
|
||||
#define MAX_SHIFT_1W (NUM_BITS-1) /* Max number of bits a 1w input can be shifted */
|
||||
#define MAX_SHIFT_2W (2*NUM_BITS-1) /* Max number of bits a 2w input can be shifted */
|
||||
|
||||
#define HAS_div_unit
|
||||
#define HAS_bfa_unit
|
||||
#define HAS_1w_sqrt_u_unit
|
||||
#define HAS_2w_sqrt_u_unit
|
||||
|
||||
#define HAS_vec_sub
|
||||
|
||||
/* Bit widths and element widths defined in HW implementation of BFA */
|
||||
#define BFA_THRESHOLD_BIT_CNT (8)
|
||||
#define BFA_THRESHOLD_MASK ((1<<BFA_THRESHOLD_BIT_CNT)-1)
|
||||
#define BFA_SW_BIT_CNT (7)
|
||||
#define BFA_SW_MASK ((1<<BFA_SW_BIT_CNT)-1)
|
||||
|
||||
#define BFA_RW_BIT_CNT (7)
|
||||
#define BFA_RW_MASK ((1<<BFA_RW_BIT_CNT)-1)
|
||||
#define BFA_RW_SLOPE_BIT_POS (8)
|
||||
#define BFA_RW_SLOPE_BIT_SHIFT (5)
|
||||
|
||||
#define BFA_RW_IDX_BIT_CNT (3)
|
||||
#define BFA_RW_FRAC_BIT_CNT (5)
|
||||
#define BFA_RW_LUT0_FRAC_START_BIT (0)
|
||||
#define BFA_RW_LUT0_FRAC_END_BIT (BFA_RW_LUT0_FRAC_START_BIT+BFA_RW_FRAC_BIT_CNT-1) /* 4 */
|
||||
#define BFA_RW_LUT1_FRAC_START_BIT (2)
|
||||
#define BFA_RW_LUT1_FRAC_END_BIT (BFA_RW_LUT1_FRAC_START_BIT+BFA_RW_FRAC_BIT_CNT-1) /* 6 */
|
||||
/* LUT IDX end bit computation, start+idx_bit_cnt-2, one -1 comes as we count
|
||||
* bits from 0, another -1 comes as we use 2 lut table, so idx_bit_cnt is one
|
||||
* bit more */
|
||||
#define BFA_RW_LUT0_IDX_START_BIT (BFA_RW_LUT0_FRAC_END_BIT+1) /* 5 */
|
||||
#define BFA_RW_LUT0_IDX_END_BIT (BFA_RW_LUT0_IDX_START_BIT+BFA_RW_IDX_BIT_CNT-2) /* 6 */
|
||||
#define BFA_RW_LUT1_IDX_START_BIT (BFA_RW_LUT1_FRAC_END_BIT + 1) /* 7 */
|
||||
#define BFA_RW_LUT1_IDX_END_BIT (BFA_RW_LUT1_IDX_START_BIT+BFA_RW_IDX_BIT_CNT-2) /* 8 */
|
||||
#define BFA_RW_LUT_THRESHOLD (1<<(BFA_RW_LUT1_IDX_END_BIT-1)) /* 0x80 : next bit after lut1 end is set */
|
||||
#define BFA_RW_LUT1_IDX_OFFSET ((1<<(BFA_RW_IDX_BIT_CNT-1))-1) /* 3 */
|
||||
|
||||
#define BFA_CP_MASK (0xFFFFFF80)
|
||||
#define BFA_SUBABS_SHIFT (6)
|
||||
#define BFA_SUBABS_BIT_CNT (8)
|
||||
#define BFA_SUBABS_MAX ((1<<BFA_SUBABS_BIT_CNT)-1)
|
||||
#define BFA_SUBABSSAT_BIT_CNT (9)
|
||||
#define BFA_SUBABSSAT_MAX ((1<<BFA_SUBABSSAT_BIT_CNT)-1)
|
||||
#define BFA_WEIGHT_SHIFT (6)
|
||||
|
||||
#endif /* __ISP2601_CONFIG_H_INCLUDED__ */
|
||||
#endif
|
@ -1,24 +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 __ISP_CONFIG_H_INCLUDED__
|
||||
#define __ISP_CONFIG_H_INCLUDED__
|
||||
|
||||
#if defined(ISP2400) || defined(ISP2401)
|
||||
#include "isp2400_config.h"
|
||||
#else
|
||||
#error "Please define a core {ISP2400, ISP2401}"
|
||||
#endif
|
||||
|
||||
#endif /* __ISP_CONFIG_H_INCLUDED__ */
|
@ -1,844 +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 __ISP_OP1W_H_INCLUDED__
|
||||
#define __ISP_OP1W_H_INCLUDED__
|
||||
|
||||
/*
|
||||
* This file is part of the Multi-precision vector operations exstension package.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Single-precision vector operations
|
||||
*/
|
||||
|
||||
/*
|
||||
* Prerequisites:
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef INLINE_ISP_OP1W
|
||||
#define STORAGE_CLASS_ISP_OP1W_FUNC_H static inline
|
||||
#define STORAGE_CLASS_ISP_OP1W_DATA_H static inline_DATA
|
||||
#else /* INLINE_ISP_OP1W */
|
||||
#define STORAGE_CLASS_ISP_OP1W_FUNC_H extern
|
||||
#define STORAGE_CLASS_ISP_OP1W_DATA_H extern_DATA
|
||||
#endif /* INLINE_ISP_OP1W */
|
||||
|
||||
/*
|
||||
* Single-precision data type specification
|
||||
*/
|
||||
|
||||
#include "isp_op1w_types.h"
|
||||
#include "isp_op2w_types.h" // for doubling operations.
|
||||
|
||||
/*
|
||||
* Single-precision prototype specification
|
||||
*/
|
||||
|
||||
/* Arithmetic */
|
||||
|
||||
/* @brief bitwise AND
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return bitwise and of both input arguments
|
||||
*
|
||||
* This function will calculate the bitwise and.
|
||||
* result = _a & _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_and(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief bitwise OR
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return bitwise or of both input arguments
|
||||
*
|
||||
* This function will calculate the bitwise or.
|
||||
* result = _a | _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_or(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief bitwise XOR
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return bitwise xor of both input arguments
|
||||
*
|
||||
* This function will calculate the bitwise xor.
|
||||
* result = _a ^ _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_xor(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief bitwise inverse
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
*
|
||||
* @return bitwise inverse of both input arguments
|
||||
*
|
||||
* This function will calculate the bitwise inverse.
|
||||
* result = ~_a
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_inv(
|
||||
const tvector1w _a);
|
||||
|
||||
/* Additive */
|
||||
|
||||
/* @brief addition
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return sum of both input arguments
|
||||
*
|
||||
* This function will calculate the sum of the input arguments.
|
||||
* in case of overflow it will wrap around.
|
||||
* result = _a + _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_add(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief subtraction
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _b subtracted from _a.
|
||||
*
|
||||
* This function will subtract _b from _a.
|
||||
* in case of overflow it will wrap around.
|
||||
* result = _a - _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_sub(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief saturated addition
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return saturated sum of both input arguments
|
||||
*
|
||||
* This function will calculate the sum of the input arguments.
|
||||
* in case of overflow it will saturate.
|
||||
* result = CLIP(_a + _b, MIN_RANGE, MAX_RANGE);
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_addsat(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief saturated subtraction
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return saturated subtraction of both input arguments
|
||||
*
|
||||
* This function will subtract _b from _a.
|
||||
* in case of overflow it will saturate.
|
||||
* result = CLIP(_a - _b, MIN_RANGE, MAX_RANGE);
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_subsat(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
#ifdef ISP2401
|
||||
/* @brief Unsigned saturated subtraction
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return saturated subtraction of both input arguments
|
||||
*
|
||||
* This function will subtract _b from _a.
|
||||
* in case of overflow it will saturate.
|
||||
* result = CLIP(_a - _b, 0, MAX_RANGE);
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w_unsigned OP_1w_subsat_u(
|
||||
const tvector1w_unsigned _a,
|
||||
const tvector1w_unsigned _b);
|
||||
|
||||
#endif
|
||||
/* @brief subtraction with shift right and rounding
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return (a - b) >> 1
|
||||
*
|
||||
* This function subtracts _b from _a and right shifts
|
||||
* the result by 1 bit with rounding.
|
||||
* No overflow can occur.
|
||||
* result = (_a - _b) >> 1
|
||||
*
|
||||
* Note: This function will be deprecated due to
|
||||
* the naming confusion and it will be replaced
|
||||
* by "OP_1w_subhalfrnd".
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_subasr1(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Subtraction with shift right and rounding
|
||||
*
|
||||
* @param[in] _a first operand
|
||||
* @param[in] _b second operand
|
||||
*
|
||||
* @return (_a - _b) >> 1
|
||||
*
|
||||
* This function subtracts _b from _a and right shifts
|
||||
* the result by 1 bit with rounding.
|
||||
* No overflow can occur.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_subhalfrnd(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Subtraction with shift right and no rounding
|
||||
*
|
||||
* @param[in] _a first operand
|
||||
* @param[in] _b second operand
|
||||
*
|
||||
* @return (_a - _b) >> 1
|
||||
*
|
||||
* This function subtracts _b from _a and right shifts
|
||||
* the result by 1 bit without rounding (i.e. truncation).
|
||||
* No overflow can occur.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_subhalf(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
|
||||
/* @brief saturated absolute value
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return saturated absolute value of the input
|
||||
*
|
||||
* This function will calculate the saturated absolute value of the input.
|
||||
* in case of overflow it will saturate.
|
||||
* if (_a > 0) return _a;<br>
|
||||
* else return CLIP(-_a, MIN_RANGE, MAX_RANGE);<br>
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_abs(
|
||||
const tvector1w _a);
|
||||
|
||||
/* @brief saturated absolute difference
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return sat(abs(a-b));
|
||||
*
|
||||
* This function will calculate the saturated absolute value
|
||||
* of the saturated difference of both inputs.
|
||||
* result = sat(abs(sat(_a - _b)));
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_subabssat(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* Multiplicative */
|
||||
|
||||
/* @brief doubling multiply
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return product of _a and _b
|
||||
*
|
||||
* This function will calculate the product
|
||||
* of the input arguments and returns a double
|
||||
* precision result.
|
||||
* No overflow can occur.
|
||||
* result = _a * _b;
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector2w OP_1w_muld(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief integer multiply
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return product of _a and _b
|
||||
*
|
||||
* This function will calculate the product
|
||||
* of the input arguments and returns the LSB
|
||||
* aligned single precision result.
|
||||
* In case of overflow it will wrap around.
|
||||
* result = _a * _b;
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_mul(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief fractional saturating multiply
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return saturated product of _a and _b
|
||||
*
|
||||
* This function will calculate the fixed point
|
||||
* product of the input arguments
|
||||
* and returns a single precision result.
|
||||
* In case of overflow it will saturate.
|
||||
* FP_UNITY * FP_UNITY => FP_UNITY.
|
||||
* result = CLIP(_a * _b >> (NUM_BITS-1), MIN_RANGE, MAX_RANGE);
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_qmul(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief fractional saturating multiply with rounding
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return product of _a and _b
|
||||
*
|
||||
* This function will calculate the fixed point
|
||||
* product of the input arguments
|
||||
* and returns a single precision result.
|
||||
* FP_UNITY * FP_UNITY => FP_UNITY.
|
||||
* Depending on the rounding mode of the core
|
||||
* it will round to nearest or to nearest even.
|
||||
* result = CLIP(_a * _b >> (NUM_BITS-1), MIN_RANGE, MAX_RANGE);
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_qrmul(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* Comparative */
|
||||
|
||||
/* @brief equal
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a == _b
|
||||
*
|
||||
* This function will return true if both inputs
|
||||
* are equal, and false if not equal.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tflags OP_1w_eq(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief not equal
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a != _b
|
||||
*
|
||||
* This function will return false if both inputs
|
||||
* are equal, and true if not equal.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tflags OP_1w_ne(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief less or equal
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a <= _b
|
||||
*
|
||||
* This function will return true if _a is smaller
|
||||
* or equal than _b.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tflags OP_1w_le(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief less then
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a < _b
|
||||
*
|
||||
* This function will return true if _a is smaller
|
||||
* than _b.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tflags OP_1w_lt(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief greater or equal
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a >= _b
|
||||
*
|
||||
* This function will return true if _a is greater
|
||||
* or equal than _b.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tflags OP_1w_ge(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief greater than
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a > _b
|
||||
*
|
||||
* This function will return true if _a is greater
|
||||
* than _b.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tflags OP_1w_gt(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* Shift */
|
||||
|
||||
/* @brief aritmetic shift right
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a >> _b
|
||||
*
|
||||
* This function will shift _a with _b bits to the right,
|
||||
* preserving the sign bit.
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_1W.
|
||||
*
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_asr(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief aritmetic shift right with rounding
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a >> _b
|
||||
*
|
||||
* If _b < NUM_BITS, this function will shift _a with _b bits to the right,
|
||||
* preserving the sign bit, and depending on the rounding mode of the core
|
||||
* it will round to nearest or to nearest even.
|
||||
* If _b >= NUM_BITS, this function will return 0.
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_1W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_asrrnd(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief saturating arithmetic shift left
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << _b
|
||||
*
|
||||
* If _b < MAX_BITDEPTH, this function will shift _a with _b bits to the left,
|
||||
* saturating at MIN_RANGE/MAX_RANGE in case of overflow.
|
||||
* If _b >= MAX_BITDEPTH, this function will return MIN_RANGE if _a < 0,
|
||||
* MAX_RANGE if _a > 0, 0 if _a == 0.
|
||||
* (with MAX_BITDEPTH=64)
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_1W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_asl(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief saturating aritmetic shift left
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << _b
|
||||
*
|
||||
* This function is identical to OP_1w_asl( )
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_aslsat(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief logical shift left
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << _b
|
||||
*
|
||||
* This function will shift _a with _b bits to the left.
|
||||
* It will insert zeroes on the right.
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_1W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_lsl(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief logical shift right
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a >> _b
|
||||
*
|
||||
* This function will shift _a with _b bits to the right.
|
||||
* It will insert zeroes on the left.
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_1W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_lsr(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
#ifdef ISP2401
|
||||
/* @brief bidirectional saturating arithmetic shift
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << |_b| if _b is positive
|
||||
* _a >> |_b| if _b is negative
|
||||
*
|
||||
* If _b > 0, this function will shift _a with _b bits to the left,
|
||||
* saturating at MIN_RANGE/MAX_RANGE in case of overflow.
|
||||
* if _b < 0, this function will shift _a with _b bits to the right.
|
||||
* It asserts -MAX_SHIFT_1W <= _b <= MAX_SHIFT_1W.
|
||||
* If _b = 0, it returns _a.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_ashift_sat(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief bidirectional non-saturating arithmetic shift
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << |_b| if _b is positive
|
||||
* _a >> |_b| if _b is negative
|
||||
*
|
||||
* If _b > 0, this function will shift _a with _b bits to the left,
|
||||
* no saturation is performed in case of overflow.
|
||||
* if _b < 0, this function will shift _a with _b bits to the right.
|
||||
* It asserts -MAX_SHIFT_1W <= _b <= MAX_SHIFT_1W.
|
||||
* If _b = 0, it returns _a.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_ashift(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
|
||||
/* @brief bidirectional logical shift
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << |_b| if _b is positive
|
||||
* _a >> |_b| if _b is negative
|
||||
*
|
||||
* This function will shift _a with _b bits to the left if _b is positive.
|
||||
* This function will shift _a with _b bits to the right if _b is negative.
|
||||
* It asserts -MAX_SHIFT_1W <= _b <= MAX_SHIFT_1W.
|
||||
* It inserts zeros on the left or right depending on the shift direction:
|
||||
* right or left.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_lshift(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
#endif
|
||||
/* Cast */
|
||||
|
||||
/* @brief Cast from int to 1w
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return _a
|
||||
*
|
||||
* This function casts the input from integer type to
|
||||
* single precision. It asserts there is no overflow.
|
||||
*
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_int_cast_to_1w(
|
||||
const int _a);
|
||||
|
||||
/* @brief Cast from 1w to int
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return _a
|
||||
*
|
||||
* This function casts the input from single precision type to
|
||||
* integer, preserving value and sign.
|
||||
*
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H int OP_1w_cast_to_int(
|
||||
const tvector1w _a);
|
||||
|
||||
/* @brief Cast from 1w to 2w
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return _a
|
||||
*
|
||||
* This function casts the input from single precision type to
|
||||
* double precision, preserving value and sign.
|
||||
*
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector2w OP_1w_cast_to_2w(
|
||||
const tvector1w _a);
|
||||
|
||||
/* @brief Cast from 2w to 1w
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return _a
|
||||
*
|
||||
* This function casts the input from double precision type to
|
||||
* single precision. In case of overflow it will wrap around.
|
||||
*
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_2w_cast_to_1w(
|
||||
const tvector2w _a);
|
||||
|
||||
|
||||
/* @brief Cast from 2w to 1w with saturation
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return _a
|
||||
*
|
||||
* This function casts the input from double precision type to
|
||||
* single precision after saturating it to the range of single
|
||||
* precision.
|
||||
*
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_2w_sat_cast_to_1w(
|
||||
const tvector2w _a);
|
||||
|
||||
/* clipping */
|
||||
|
||||
/* @brief Clip asymmetrical
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a clipped between ~_b and b
|
||||
*
|
||||
* This function will clip the first argument between
|
||||
* (-_b - 1) and _b.
|
||||
* It asserts _b >= 0.
|
||||
*
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_clip_asym(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Clip zero
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a clipped beteween 0 and _b
|
||||
*
|
||||
* This function will clip the first argument between
|
||||
* zero and _b.
|
||||
* It asserts _b >= 0.
|
||||
*
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_clipz(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* division */
|
||||
|
||||
/* @brief Truncated division
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return trunc( _a / _b )
|
||||
*
|
||||
* This function will divide the first argument by
|
||||
* the second argument, with rounding toward 0.
|
||||
* If _b == 0 and _a < 0, the function will return MIN_RANGE.
|
||||
* If _b == 0 and _a == 0, the function will return 0.
|
||||
* If _b == 0 and _a > 0, the function will return MAX_RANGE.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_div(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Fractional saturating divide
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a / _b
|
||||
*
|
||||
* This function will perform fixed point division of
|
||||
* the first argument by the second argument, with rounding toward 0.
|
||||
* In case of overflow it will saturate.
|
||||
* If _b == 0 and _a < 0, the function will return MIN_RANGE.
|
||||
* If _b == 0 and _a == 0, the function will return 0.
|
||||
* If _b == 0 and _a > 0, the function will return MAX_RANGE.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_qdiv(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Modulo
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a % _b
|
||||
*
|
||||
* This function will return the remainder r = _a - _b * trunc( _a / _b ),
|
||||
* Note that the sign of the remainder is always equal to the sign of _a.
|
||||
* If _b == 0 the function will return _a.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_mod(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Unsigned integer Square root
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return Integer square root of _a
|
||||
*
|
||||
* This function will calculate the Integer square root of _a
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w_unsigned OP_1w_sqrt_u(
|
||||
const tvector1w_unsigned _a);
|
||||
|
||||
/* Miscellaneous */
|
||||
|
||||
/* @brief Multiplexer
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
* @param[in] _c condition
|
||||
*
|
||||
* @return _c ? _a : _b
|
||||
*
|
||||
* This function will return _a if the condition _c
|
||||
* is true and _b otherwise.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_mux(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b,
|
||||
const tflags _c);
|
||||
|
||||
/* @brief Average without rounding
|
||||
*
|
||||
* @param[in] _a first operand
|
||||
* @param[in] _b second operand
|
||||
*
|
||||
* @return (_a + _b) >> 1
|
||||
*
|
||||
* This function will add _a and _b, and right shift
|
||||
* the result by one without rounding. No overflow
|
||||
* will occur because addition is performed in the
|
||||
* proper precision.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_avg(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Average with rounding
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return (_a + _b) >> 1
|
||||
*
|
||||
* This function will add _a and _b at full precision,
|
||||
* and right shift with rounding the result with 1 bit.
|
||||
* Depending on the rounding mode of the core
|
||||
* it will round to nearest or to nearest even.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_avgrnd(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Minimum
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return (_a < _b) ? _a : _b;
|
||||
*
|
||||
* This function will return the smallest of both
|
||||
* input arguments.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_min(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Maximum
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return (_a > _b) ? _a : _b;
|
||||
*
|
||||
* This function will return the largest of both
|
||||
* input arguments.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP1W_FUNC_H tvector1w OP_1w_max(
|
||||
const tvector1w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
#ifndef INLINE_ISP_OP1W
|
||||
#define STORAGE_CLASS_ISP_OP1W_FUNC_C
|
||||
#define STORAGE_CLASS_ISP_OP1W_DATA_C const
|
||||
#else /* INLINE_ISP_OP1W */
|
||||
#define STORAGE_CLASS_ISP_OP1W_FUNC_C STORAGE_CLASS_ISP_OP1W_FUNC_H
|
||||
#define STORAGE_CLASS_ISP_OP1W_DATA_C STORAGE_CLASS_ISP_OP1W_DATA_H
|
||||
#include "isp_op1w.c"
|
||||
#define ISP_OP1W_INLINED
|
||||
#endif /* INLINE_ISP_OP1W */
|
||||
|
||||
#endif /* __ISP_OP1W_H_INCLUDED__ */
|
||||
|
@ -1,54 +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 __ISP_OP1W_TYPES_H_INCLUDED__
|
||||
#define __ISP_OP1W_TYPES_H_INCLUDED__
|
||||
|
||||
/*
|
||||
* This file is part of the Multi-precision vector operations exstension package.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Single-precision vector operations
|
||||
*/
|
||||
|
||||
/*
|
||||
* Prerequisites:
|
||||
*
|
||||
*/
|
||||
|
||||
#include "mpmath.h"
|
||||
|
||||
/*
|
||||
* Single-precision data type specification
|
||||
*/
|
||||
|
||||
|
||||
typedef mpsdata_t tvector1w;
|
||||
typedef mpsdata_t tscalar1w;
|
||||
typedef spsdata_t tflags;
|
||||
typedef mpudata_t tvector1w_unsigned;
|
||||
typedef mpsdata_t tscalar1w_weight;
|
||||
typedef mpsdata_t tvector1w_signed_positive;
|
||||
typedef mpsdata_t tvector1w_weight;
|
||||
#ifdef ISP2401
|
||||
typedef bool tscalar_bool;
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
tvector1w d;
|
||||
tflags f;
|
||||
} tvector1w_tflags1w;
|
||||
|
||||
#endif /* __ISP_OP1W_TYPES_H_INCLUDED__ */
|
@ -1,674 +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 __ISP_OP2W_H_INCLUDED__
|
||||
#define __ISP_OP2W_H_INCLUDED__
|
||||
|
||||
/*
|
||||
* This file is part of the Multi-precision vector operations exstension package.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Double-precision vector operations
|
||||
*/
|
||||
|
||||
/*
|
||||
* Prerequisites:
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef INLINE_ISP_OP2W
|
||||
#define STORAGE_CLASS_ISP_OP2W_FUNC_H static inline
|
||||
#define STORAGE_CLASS_ISP_OP2W_DATA_H static inline_DATA
|
||||
#else /* INLINE_ISP_OP2W */
|
||||
#define STORAGE_CLASS_ISP_OP2W_FUNC_H extern
|
||||
#define STORAGE_CLASS_ISP_OP2W_DATA_H extern_DATA
|
||||
#endif /* INLINE_ISP_OP2W */
|
||||
|
||||
/*
|
||||
* Double-precision data type specification
|
||||
*/
|
||||
|
||||
#include "isp_op2w_types.h"
|
||||
|
||||
/*
|
||||
* Double-precision prototype specification
|
||||
*/
|
||||
|
||||
/* Arithmetic */
|
||||
|
||||
/* @brief bitwise AND
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return bitwise and of both input arguments
|
||||
*
|
||||
* This function will calculate the bitwise and.
|
||||
* result = _a & _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_and(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief bitwise OR
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return bitwise or of both input arguments
|
||||
*
|
||||
* This function will calculate the bitwise or.
|
||||
* result = _a | _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_or(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief bitwise XOR
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return bitwise xor of both input arguments
|
||||
*
|
||||
* This function will calculate the bitwise xor.
|
||||
* result = _a ^ _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_xor(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief bitwise inverse
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
*
|
||||
* @return bitwise inverse of both input arguments
|
||||
*
|
||||
* This function will calculate the bitwise inverse.
|
||||
* result = ~_a
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_inv(
|
||||
const tvector2w _a);
|
||||
|
||||
/* Additive */
|
||||
|
||||
/* @brief addition
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return sum of both input arguments
|
||||
*
|
||||
* This function will calculate the sum of the input arguments.
|
||||
* in case of overflow it will wrap around.
|
||||
* result = _a + _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_add(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief subtraction
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _b subtracted from _a.
|
||||
*
|
||||
* This function will subtract _b from _a.
|
||||
* in case of overflow it will wrap around.
|
||||
* result = _a - _b
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_sub(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief saturated addition
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return saturated sum of both input arguments
|
||||
*
|
||||
* This function will calculate the sum of the input arguments.
|
||||
* in case of overflow it will saturate
|
||||
* result = CLIP(_a + _b, MIN_RANGE, MAX_RANGE);
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_addsat(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief saturated subtraction
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return saturated subtraction of both input arguments
|
||||
*
|
||||
* This function will subtract _b from _a.
|
||||
* in case of overflow it will saturate
|
||||
* result = CLIP(_a - _b, MIN_RANGE, MAX_RANGE);
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_subsat(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief subtraction with shift right and rounding
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return (a - b) >> 1
|
||||
*
|
||||
* This function subtracts _b from _a and right shifts
|
||||
* the result by 1 bit with rounding.
|
||||
* No overflow can occur.
|
||||
* result = (_a - _b) >> 1
|
||||
*
|
||||
* Note: This function will be deprecated due to
|
||||
* the naming confusion and it will be replaced
|
||||
* by "OP_2w_subhalfrnd".
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_subasr1(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief Subtraction with shift right and rounding
|
||||
*
|
||||
* @param[in] _a first operand
|
||||
* @param[in] _b second operand
|
||||
*
|
||||
* @return (_a - _b) >> 1
|
||||
*
|
||||
* This function subtracts _b from _a and right shifts
|
||||
* the result by 1 bit with rounding.
|
||||
* No overflow can occur.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_subhalfrnd(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief Subtraction with shift right and no rounding
|
||||
*
|
||||
* @param[in] _a first operand
|
||||
* @param[in] _b second operand
|
||||
*
|
||||
* @return (_a - _b) >> 1
|
||||
*
|
||||
* This function subtracts _b from _a and right shifts
|
||||
* the result by 1 bit without rounding (i.e. truncation).
|
||||
* No overflow can occur.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_subhalf(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief saturated absolute value
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return saturated absolute value of the input
|
||||
*
|
||||
* This function will calculate the saturated absolute value of the input.
|
||||
* In case of overflow it will saturate.
|
||||
* if (_a > 0) return _a;<br>
|
||||
* else return CLIP(-_a, MIN_RANGE, MAX_RANGE);<br>
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_abs(
|
||||
const tvector2w _a);
|
||||
|
||||
/* @brief saturated absolute difference
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return sat(abs(sat(a-b)));
|
||||
*
|
||||
* This function will calculate the saturated absolute value
|
||||
* of the saturated difference of both inputs.
|
||||
* result = sat(abs(sat(_a - _b)));
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_subabssat(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* Multiplicative */
|
||||
|
||||
/* @brief integer multiply
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return product of _a and _b
|
||||
*
|
||||
* This function will calculate the product
|
||||
* of the input arguments and returns the LSB
|
||||
* aligned double precision result.
|
||||
* In case of overflow it will wrap around.
|
||||
* result = _a * _b;
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_mul(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief fractional saturating multiply
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return saturated product of _a and _b
|
||||
*
|
||||
* This function will calculate the fixed point
|
||||
* product of the input arguments
|
||||
* and returns a double precision result.
|
||||
* In case of overflow it will saturate.
|
||||
* result =((_a * _b) << 1) >> (2*NUM_BITS);
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_qmul(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief fractional saturating multiply with rounding
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return product of _a and _b
|
||||
*
|
||||
* This function will calculate the fixed point
|
||||
* product of the input arguments
|
||||
* and returns a double precision result.
|
||||
* Depending on the rounding mode of the core
|
||||
* it will round to nearest or to nearest even.
|
||||
* In case of overflow it will saturate.
|
||||
* result = ((_a * _b) << 1) >> (2*NUM_BITS);
|
||||
*/
|
||||
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_qrmul(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* Comparative */
|
||||
|
||||
/* @brief equal
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a == _b
|
||||
*
|
||||
* This function will return true if both inputs
|
||||
* are equal, and false if not equal.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tflags OP_2w_eq(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief not equal
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a != _b
|
||||
*
|
||||
* This function will return false if both inputs
|
||||
* are equal, and true if not equal.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tflags OP_2w_ne(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief less or equal
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a <= _b
|
||||
*
|
||||
* This function will return true if _a is smaller
|
||||
* or equal than _b.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tflags OP_2w_le(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief less then
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a < _b
|
||||
*
|
||||
* This function will return true if _a is smaller
|
||||
* than _b.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tflags OP_2w_lt(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief greater or equal
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a >= _b
|
||||
*
|
||||
* This function will return true if _a is greater
|
||||
* or equal than _b.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tflags OP_2w_ge(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief greater than
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a > _b
|
||||
*
|
||||
* This function will return true if _a is greater
|
||||
* than _b.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tflags OP_2w_gt(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* Shift */
|
||||
|
||||
/* @brief aritmetic shift right
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a >> _b
|
||||
*
|
||||
* This function will shift _a with _b bits to the right,
|
||||
* preserving the sign bit.
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_2W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_asr(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief aritmetic shift right with rounding
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a >> _b
|
||||
*
|
||||
* If _b < 2*NUM_BITS, this function will shift _a with _b bits to the right,
|
||||
* preserving the sign bit, and depending on the rounding mode of the core
|
||||
* it will round to nearest or to nearest even.
|
||||
* If _b >= 2*NUM_BITS, this function will return 0.
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_2W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_asrrnd(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief saturating aritmetic shift left
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << _b
|
||||
*
|
||||
* If _b < MAX_BITDEPTH, this function will shift _a with _b bits to the left,
|
||||
* saturating at MIN_RANGE/MAX_RANGE in case of overflow.
|
||||
* If _b >= MAX_BITDEPTH, this function will return MIN_RANGE if _a < 0,
|
||||
* MAX_RANGE if _a > 0, 0 if _a == 0.
|
||||
* (with MAX_BITDEPTH=64)
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_2W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_asl(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief saturating aritmetic shift left
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << _b
|
||||
*
|
||||
* This function is identical to OP_2w_asl( )
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_aslsat(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief logical shift left
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a << _b
|
||||
*
|
||||
* This function will shift _a with _b bits to the left.
|
||||
* It will insert zeroes on the right.
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_2W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_lsl(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief logical shift right
|
||||
*
|
||||
* @param[in] _a input
|
||||
* @param[in] _b shift amount
|
||||
*
|
||||
* @return _a >> _b
|
||||
*
|
||||
* This function will shift _a with _b bits to the right.
|
||||
* It will insert zeroes on the left.
|
||||
* It asserts 0 <= _b <= MAX_SHIFT_2W.
|
||||
* The operation count for this function assumes that
|
||||
* the shift amount is a cloned scalar input.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_lsr(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* clipping */
|
||||
|
||||
/* @brief Clip asymmetrical
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a clipped between ~_b and b
|
||||
*
|
||||
* This function will clip the first argument between
|
||||
* (-_b - 1) and _b.
|
||||
* It asserts _b >= 0.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_clip_asym(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief Clip zero
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return _a clipped beteween 0 and _b
|
||||
*
|
||||
* This function will clip the first argument between
|
||||
* zero and _b.
|
||||
* It asserts _b >= 0.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_clipz(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* division */
|
||||
|
||||
/* @brief Truncated division
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return trunc( _a / _b )
|
||||
*
|
||||
* This function will divide the first argument by
|
||||
* the second argument, with rounding toward 0.
|
||||
* If _b == 0 and _a < 0, the function will return MIN_RANGE.
|
||||
* If _b == 0 and _a == 0, the function will return 0.
|
||||
* If _b == 0 and _a > 0, the function will return MAX_RANGE.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_div(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief Saturating truncated division
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return CLIP( trunc( _a / _b ), MIN_RANGE1w, MAX_RANGE1w )
|
||||
*
|
||||
* This function will divide the first argument by
|
||||
* the second argument, with rounding toward 0, and
|
||||
* saturate the result to the range of single precision.
|
||||
* If _b == 0 and _a < 0, the function will return MIN_RANGE.
|
||||
* If _b == 0 and _a == 0, the function will return 0.
|
||||
* If _b == 0 and _a > 0, the function will return MAX_RANGE.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector1w OP_2w_divh(
|
||||
const tvector2w _a,
|
||||
const tvector1w _b);
|
||||
|
||||
/* @brief Modulo
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return n/a
|
||||
*
|
||||
* This function has not yet been implemented.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_mod(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief Unsigned Integer Square root
|
||||
*
|
||||
* @param[in] _a input
|
||||
*
|
||||
* @return square root of _a
|
||||
*
|
||||
* This function will calculate the unsigned integer square root of _a
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector1w_unsigned OP_2w_sqrt_u(
|
||||
const tvector2w_unsigned _a);
|
||||
|
||||
/* Miscellaneous */
|
||||
|
||||
/* @brief Multiplexer
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
* @param[in] _c condition
|
||||
*
|
||||
* @return _c ? _a : _b
|
||||
*
|
||||
* This function will return _a if the condition _c
|
||||
* is true and _b otherwise.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_mux(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b,
|
||||
const tflags _c);
|
||||
|
||||
/* @brief Average without rounding
|
||||
*
|
||||
* @param[in] _a first operand
|
||||
* @param[in] _b second operand
|
||||
*
|
||||
* @return (_a + _b) >> 1
|
||||
*
|
||||
* This function will add _a and _b, and right shift
|
||||
* the result by one without rounding. No overflow
|
||||
* will occur because addition is performed in the
|
||||
* proper precision.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_avg(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief Average with rounding
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return (_a + _b) >> 1
|
||||
*
|
||||
* This function will add _a and _b at full precision,
|
||||
* and right shift with rounding the result with 1 bit.
|
||||
* Depending on the rounding mode of the core
|
||||
* it will round to nearest or to nearest even.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_avgrnd(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief Minimum
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return (_a < _b) ? _a : _b;
|
||||
*
|
||||
* This function will return the smallest of both
|
||||
* input arguments.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_min(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
/* @brief Maximum
|
||||
*
|
||||
* @param[in] _a first argument
|
||||
* @param[in] _b second argument
|
||||
*
|
||||
* @return (_a > _b) ? _a : _b;
|
||||
*
|
||||
* This function will return the largest of both
|
||||
* input arguments.
|
||||
*/
|
||||
STORAGE_CLASS_ISP_OP2W_FUNC_H tvector2w OP_2w_max(
|
||||
const tvector2w _a,
|
||||
const tvector2w _b);
|
||||
|
||||
#ifndef INLINE_ISP_OP2W
|
||||
#define STORAGE_CLASS_ISP_OP2W_FUNC_C
|
||||
#define STORAGE_CLASS_ISP_OP2W_DATA_C const
|
||||
#else /* INLINE_ISP_OP2W */
|
||||
#define STORAGE_CLASS_ISP_OP2W_FUNC_C STORAGE_CLASS_ISP_OP2W_FUNC_H
|
||||
#define STORAGE_CLASS_ISP_OP2W_DATA_C STORAGE_CLASS_ISP_OP2W_DATA_H
|
||||
#include "isp_op2w.c"
|
||||
#define ISP_OP2W_INLINED
|
||||
#endif /* INLINE_ISP_OP2W */
|
||||
|
||||
#endif /* __ISP_OP2W_H_INCLUDED__ */
|
@ -1,49 +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 __ISP_OP2W_TYPES_H_INCLUDED__
|
||||
#define __ISP_OP2W_TYPES_H_INCLUDED__
|
||||
|
||||
/*
|
||||
* This file is part of the Multi-precision vector operations exstension package.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Double-precision vector operations
|
||||
*/
|
||||
|
||||
/*
|
||||
* Prerequisites:
|
||||
*
|
||||
*/
|
||||
#include "mpmath.h"
|
||||
#include "isp_op1w_types.h"
|
||||
|
||||
/*
|
||||
* Single-precision data type specification
|
||||
*/
|
||||
|
||||
|
||||
typedef mpsdata_t tvector2w;
|
||||
typedef mpsdata_t tscalar2w;
|
||||
typedef mpsdata_t tvector2w_signed_positive;
|
||||
typedef mpudata_t tvector2w_unsigned;
|
||||
|
||||
|
||||
typedef struct {
|
||||
tvector2w d;
|
||||
tflags f;
|
||||
} tvector2w_tflags;
|
||||
|
||||
#endif /* __ISP_OP2W_TYPES_H_INCLUDED__ */
|
@ -1,226 +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 __ISP_OP_COUNT_H_INCLUDED__
|
||||
#define __ISP_OP_COUNT_H_INCLUDED__
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
typedef struct {
|
||||
long long bbb_cnt; /* number of bbb */
|
||||
int bbb_op; /* operations per bbb */
|
||||
long long total_cnt; /* bbb_cnt * bbb_op */
|
||||
} bbb_stat_t;
|
||||
|
||||
typedef enum {
|
||||
bbb_func_OP_1w_and,
|
||||
bbb_func_OP_1w_or,
|
||||
bbb_func_OP_1w_xor,
|
||||
bbb_func_OP_1w_inv,
|
||||
bbb_func_OP_1w_add,
|
||||
bbb_func_OP_1w_sub,
|
||||
bbb_func_OP_1w_addsat,
|
||||
bbb_func_OP_1w_subsat,
|
||||
bbb_func_OP_1w_subasr1,
|
||||
bbb_func_OP_1w_subhalf,
|
||||
bbb_func_OP_1w_subhalfrnd,
|
||||
bbb_func_OP_1w_abs,
|
||||
bbb_func_OP_1w_subabssat,
|
||||
#ifdef ISP2401
|
||||
bbb_func_OP_1w_subsat_u,
|
||||
#endif
|
||||
bbb_func_OP_1w_muld,
|
||||
bbb_func_OP_1w_mul,
|
||||
bbb_func_OP_1w_qmul,
|
||||
bbb_func_OP_1w_qrmul,
|
||||
bbb_func_OP_1w_eq,
|
||||
bbb_func_OP_1w_ne,
|
||||
bbb_func_OP_1w_le,
|
||||
bbb_func_OP_1w_lt,
|
||||
bbb_func_OP_1w_ge,
|
||||
bbb_func_OP_1w_gt,
|
||||
bbb_func_OP_1w_asr,
|
||||
bbb_func_OP_1w_asrrnd,
|
||||
bbb_func_OP_1w_asl,
|
||||
bbb_func_OP_1w_aslsat,
|
||||
bbb_func_OP_1w_lsl,
|
||||
bbb_func_OP_1w_lsr,
|
||||
#ifdef ISP2401
|
||||
bbb_func_OP_1w_ashift,
|
||||
bbb_func_OP_1w_lshift,
|
||||
#endif
|
||||
bbb_func_OP_int_cast_to_1w ,
|
||||
bbb_func_OP_1w_cast_to_int ,
|
||||
bbb_func_OP_1w_cast_to_2w ,
|
||||
bbb_func_OP_2w_cast_to_1w ,
|
||||
bbb_func_OP_2w_sat_cast_to_1w ,
|
||||
bbb_func_OP_1w_clip_asym,
|
||||
bbb_func_OP_1w_clipz,
|
||||
bbb_func_OP_1w_div,
|
||||
bbb_func_OP_1w_qdiv,
|
||||
bbb_func_OP_1w_mod,
|
||||
bbb_func_OP_1w_sqrt_u,
|
||||
bbb_func_OP_1w_mux,
|
||||
bbb_func_OP_1w_avg,
|
||||
bbb_func_OP_1w_avgrnd,
|
||||
bbb_func_OP_1w_min,
|
||||
bbb_func_OP_1w_max,
|
||||
bbb_func_OP_2w_and,
|
||||
bbb_func_OP_2w_or,
|
||||
bbb_func_OP_2w_xor,
|
||||
bbb_func_OP_2w_inv,
|
||||
bbb_func_OP_2w_add,
|
||||
bbb_func_OP_2w_sub,
|
||||
bbb_func_OP_2w_addsat,
|
||||
bbb_func_OP_2w_subsat,
|
||||
bbb_func_OP_2w_subasr1,
|
||||
bbb_func_OP_2w_subhalf,
|
||||
bbb_func_OP_2w_subhalfrnd,
|
||||
bbb_func_OP_2w_abs,
|
||||
bbb_func_OP_2w_subabssat,
|
||||
bbb_func_OP_2w_mul,
|
||||
bbb_func_OP_2w_qmul,
|
||||
bbb_func_OP_2w_qrmul,
|
||||
bbb_func_OP_2w_eq,
|
||||
bbb_func_OP_2w_ne,
|
||||
bbb_func_OP_2w_le,
|
||||
bbb_func_OP_2w_lt,
|
||||
bbb_func_OP_2w_ge,
|
||||
bbb_func_OP_2w_gt,
|
||||
bbb_func_OP_2w_asr,
|
||||
bbb_func_OP_2w_asrrnd,
|
||||
bbb_func_OP_2w_asl,
|
||||
bbb_func_OP_2w_aslsat,
|
||||
bbb_func_OP_2w_lsl,
|
||||
bbb_func_OP_2w_lsr,
|
||||
bbb_func_OP_2w_clip_asym,
|
||||
bbb_func_OP_2w_clipz,
|
||||
bbb_func_OP_2w_div,
|
||||
bbb_func_OP_2w_divh,
|
||||
bbb_func_OP_2w_mod,
|
||||
bbb_func_OP_2w_sqrt_u,
|
||||
bbb_func_OP_2w_mux,
|
||||
bbb_func_OP_2w_avg,
|
||||
bbb_func_OP_2w_avgrnd,
|
||||
bbb_func_OP_2w_min,
|
||||
bbb_func_OP_2w_max,
|
||||
bbb_func_OP_1w_mul_realigning,
|
||||
#ifdef ISP2401
|
||||
bbb_func_OP_1w_imax32,
|
||||
bbb_func_OP_1w_imaxidx32,
|
||||
bbb_func_OP_1w_cond_add,
|
||||
#endif
|
||||
|
||||
bbb_func_num_functions
|
||||
} bbb_functions_t;
|
||||
|
||||
typedef enum {
|
||||
core_func_OP_and,
|
||||
core_func_OP_or,
|
||||
core_func_OP_xor,
|
||||
core_func_OP_inv,
|
||||
core_func_OP_add,
|
||||
core_func_OP_sub,
|
||||
core_func_OP_addsat,
|
||||
core_func_OP_subsat,
|
||||
core_func_OP_subasr1,
|
||||
core_func_OP_abs,
|
||||
core_func_OP_subabssat,
|
||||
#ifdef ISP2401
|
||||
core_func_OP_subsat_u,
|
||||
#endif
|
||||
core_func_OP_muld,
|
||||
core_func_OP_mul,
|
||||
core_func_OP_qrmul,
|
||||
core_func_OP_eq,
|
||||
core_func_OP_ne,
|
||||
core_func_OP_le,
|
||||
core_func_OP_lt,
|
||||
core_func_OP_ge,
|
||||
core_func_OP_gt,
|
||||
core_func_OP_asr,
|
||||
core_func_OP_asl,
|
||||
core_func_OP_asrrnd,
|
||||
core_func_OP_lsl,
|
||||
core_func_OP_lslsat,
|
||||
core_func_OP_lsr,
|
||||
core_func_OP_lsrrnd,
|
||||
core_func_OP_clip_asym,
|
||||
core_func_OP_clipz,
|
||||
core_func_OP_div,
|
||||
core_func_OP_mod,
|
||||
core_func_OP_sqrt,
|
||||
core_func_OP_mux,
|
||||
core_func_OP_avgrnd,
|
||||
core_func_OP_min,
|
||||
core_func_OP_max,
|
||||
|
||||
core_func_num_functions
|
||||
|
||||
} core_functions_t;
|
||||
|
||||
/* inc_bbb_count() can be used for building blocks that are implemented with one operation
|
||||
inc_bbb_count_ext() will be used in case the operation count is not known or greater than one.
|
||||
|
||||
For some operations there is a difference in operation count for the cloned version and the
|
||||
not cloned version. this difference is not vissible on the reference code side.
|
||||
We could add a min and max operation count for those operations, and keep track of those counts
|
||||
separately. That way in the report the impact can be seen. */
|
||||
|
||||
#ifdef DISABLE_OPCNT
|
||||
#define inc_bbb_count(func)
|
||||
#define inc_bbb_count_ext(func, cnt)
|
||||
#define enable_bbb_count()
|
||||
#define disable_bbb_count()
|
||||
#else
|
||||
#define inc_bbb_count(func) _inc_bbb_count(func)
|
||||
#define inc_bbb_count_ext(func, cnt) _inc_bbb_count_ext(func, cnt)
|
||||
#define enable_bbb_count() _enable_bbb_count()
|
||||
#define disable_bbb_count() _disable_bbb_count()
|
||||
#endif
|
||||
|
||||
void
|
||||
inc_core_count_n(
|
||||
core_functions_t func,
|
||||
unsigned n);
|
||||
|
||||
void
|
||||
_enable_bbb_count(void);
|
||||
|
||||
void
|
||||
_disable_bbb_count(void);
|
||||
|
||||
void
|
||||
_inc_bbb_count(
|
||||
bbb_functions_t func);
|
||||
|
||||
void
|
||||
_inc_bbb_count_ext(
|
||||
bbb_functions_t func,
|
||||
int op_count);
|
||||
|
||||
void
|
||||
bbb_func_reset_count(void);
|
||||
|
||||
void
|
||||
bbb_func_print_totals(
|
||||
FILE * fp,
|
||||
unsigned non_zero_only);
|
||||
|
||||
void
|
||||
core_func_print_totals(
|
||||
FILE* fp,
|
||||
unsigned non_zero_only);
|
||||
|
||||
#endif
|
@ -1,20 +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 __OSYS_PUBLIC_H_INCLUDED__
|
||||
#define __OSYS_PUBLIC_H_INCLUDED__
|
||||
|
||||
#include "system_types.h"
|
||||
|
||||
#endif /* __OSYS_PUBLIC_H_INCLUDED__ */
|
@ -1,18 +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 __PIPELINE_PUBLIC_H_INCLUDED__
|
||||
#define __PIPELINE_PUBLIC_H_INCLUDED__
|
||||
|
||||
#endif /* __PIPELINE_PUBLIC_H_INCLUDED__ */
|
File diff suppressed because it is too large
Load Diff
@ -1,385 +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 __REF_VECTOR_FUNC_TYPES_H_INCLUDED__
|
||||
#define __REF_VECTOR_FUNC_TYPES_H_INCLUDED__
|
||||
|
||||
|
||||
/*
|
||||
* Prerequisites:
|
||||
*
|
||||
*/
|
||||
#include "mpmath.h"
|
||||
#include "bbb_config.h"
|
||||
#include "isp_op1w_types.h"
|
||||
#include "isp_op2w_types.h"
|
||||
|
||||
/* Defines for the Config Unit */
|
||||
#define MAX_CONFIG_POINTS 5
|
||||
#define INPUT_OFFSET_FACTOR 10
|
||||
#define INPUT_SCALE_FACTOR 10
|
||||
#define OUTPUT_SCALE_FACTOR 10
|
||||
#define SLOPE_A_RESOLUTION 10
|
||||
#define CONFIG_UNIT_LUT_SIZE_32 32 /*XCU works for ISP_NWAY = 32 */
|
||||
#define LXCU_LUT_SIZE 16
|
||||
#ifdef ISP2401
|
||||
#define IMAX32_ELEM_SIZE 32
|
||||
#endif
|
||||
|
||||
#define ONE_IN_Q14 (1<<(NUM_BITS-2))
|
||||
#define Q29_TO_Q15_SHIFT_VAL (NUM_BITS-2)
|
||||
#define Q28_TO_Q15_SHIFT_VAL (NUM_BITS-3)
|
||||
#define MAX_ELEM(width_in_bits) ((1<<(width_in_bits))-1)
|
||||
|
||||
/* Block matching algorithm related data */
|
||||
/* NUM_OF_SADS = ((SEARCH_AREA_HEIGHT - REF_BLOCK_HEIGHT)/PIXEL_SHIFT + 1)* \
|
||||
((SEARCH_AREA_WIDTH - REF_BLOCK_WIDTH)/PIXEL_SHIFT + 1) */
|
||||
|
||||
#define SADS(sw_h,sw_w, ref_h, ref_w, p_sh) (((sw_h - ref_h)/p_sh + 1)*((sw_w - ref_w)/p_sh + 1))
|
||||
#define SADS_16x16_1 SADS(16, 16, 8, 8, 1)
|
||||
#define SADS_16x16_2 SADS(16, 16, 8, 8, 2)
|
||||
#define SADS_14x14_1 SADS(14, 14, 8, 8, 1)
|
||||
#define SADS_14x14_2 SADS(14, 14, 8, 8, 2)
|
||||
|
||||
#define BMA_OUTPUT_MATRIX_DIM(sw_h, ref_h, p_sh) ((sw_h - ref_h)/p_sh + 1)
|
||||
#define BMA_OUT_16x16_2_32 BMA_OUTPUT_MATRIX_DIM(16, 8, 2)
|
||||
#define BMA_OUT_14x14_2_32 BMA_OUTPUT_MATRIX_DIM(14, 8, 2)
|
||||
#define BMA_OUT_16x16_1_32 BMA_OUTPUT_MATRIX_DIM(16, 8, 1)
|
||||
#define BMA_OUT_14x14_1_32 BMA_OUTPUT_MATRIX_DIM(14, 8, 1)
|
||||
#define BMA_SEARCH_BLOCK_SZ_16 16
|
||||
#define BMA_REF_BLOCK_SZ_8 8
|
||||
#define PIXEL_SHIFT_2 2
|
||||
#define PIXEL_SHIFT_1 1
|
||||
#define BMA_SEARCH_WIN_SZ_16 16
|
||||
#define BMA_SEARCH_WIN_SZ_14 14
|
||||
|
||||
|
||||
/*
|
||||
* Struct type specification
|
||||
*/
|
||||
|
||||
typedef unsigned short tscalar1w_3bit; /* tscalar1w in interval [0, 2^3) */
|
||||
typedef short tscalar1w_5bit_signed; /* tscalar1w in interval [-2^(5-1), 2^(5-1)) */
|
||||
typedef unsigned short tscalar1w_5bit; /* tscalar1w in interval [0, 2^5) */
|
||||
typedef short tscalar1w_range1wbit; /* tscalar1w in interval [-NUM_BITS, NUM_BITS] */
|
||||
typedef short tscalar1w_unsigned_range1wbit; /* tscalar1w in interval [0, NUM_BITS] */
|
||||
typedef unsigned short tvector_8bit; /* 8 bit positive number */
|
||||
typedef unsigned short tvector_5bit;
|
||||
typedef unsigned short tvector_4bit;
|
||||
typedef unsigned short tscalar1w_16bit;
|
||||
typedef unsigned short tscalar1w_4bit_bma_shift;
|
||||
|
||||
typedef struct {
|
||||
tvector1w v0 ;
|
||||
tvector1w v1 ;
|
||||
} s_1w_2x1_matrix;
|
||||
|
||||
#define S_1W_2X1_MATRIX_DEFAULT ((s_1w_2x1_matrix)\
|
||||
{ 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00;
|
||||
tvector1w v01;
|
||||
} s_1w_1x2_matrix;
|
||||
|
||||
#define S_1W_1X2_MATRIX_DEFAULT ((s_1w_1x2_matrix)\
|
||||
{ 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00 ;
|
||||
tvector1w v01 ;
|
||||
tvector1w v02 ;
|
||||
} s_1w_1x3_matrix;
|
||||
|
||||
#define S_1W_1X3_MATRIX_DEFAULT ((s_1w_1x3_matrix)\
|
||||
{ 0, 0, 0, })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00; tvector1w v01; tvector1w v02;
|
||||
tvector1w v10; tvector1w v11; tvector1w v12;
|
||||
} s_1w_2x3_matrix;
|
||||
|
||||
#define S_1W_2X3_MATRIX_DEFAULT ((s_1w_2x3_matrix)\
|
||||
{ 0, 0, 0, \
|
||||
0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00 ; tvector1w v01 ; tvector1w v02 ;
|
||||
tvector1w v10 ; tvector1w v11 ; tvector1w v12 ;
|
||||
tvector1w v20 ; tvector1w v21 ; tvector1w v22 ;
|
||||
} s_1w_3x3_matrix;
|
||||
|
||||
#define S_1W_3X3_MATRIX_DEFAULT ((s_1w_3x3_matrix)\
|
||||
{ 0, 0, 0, \
|
||||
0, 0, 0, \
|
||||
0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00 ; tvector1w v01 ; tvector1w v02 ;
|
||||
tvector1w v10 ; tvector1w v11 ; tvector1w v12 ;
|
||||
tvector1w v20 ; tvector1w v21 ; tvector1w v22 ;
|
||||
tvector1w v30 ; tvector1w v31 ; tvector1w v32 ;
|
||||
} s_1w_4x3_matrix;
|
||||
|
||||
#define S_1W_4X3_MATRIX_DEFAULT ((s_1w_4x3_matrix)\
|
||||
{ 0, 0, 0, \
|
||||
0, 0, 0, \
|
||||
0, 0, 0, \
|
||||
0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00 ;
|
||||
tvector1w v01 ;
|
||||
tvector1w v02 ;
|
||||
tvector1w v03 ;
|
||||
tvector1w v04 ;
|
||||
} s_1w_1x5_matrix;
|
||||
|
||||
#define S_1W_1X5_MATRIX_DEFAULT ((s_1w_1x5_matrix)\
|
||||
{ 0, 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00 ; tvector1w v01 ; tvector1w v02 ; tvector1w v03 ; tvector1w v04 ;
|
||||
tvector1w v10 ; tvector1w v11 ; tvector1w v12 ; tvector1w v13 ; tvector1w v14 ;
|
||||
tvector1w v20 ; tvector1w v21 ; tvector1w v22 ; tvector1w v23 ; tvector1w v24 ;
|
||||
tvector1w v30 ; tvector1w v31 ; tvector1w v32 ; tvector1w v33 ; tvector1w v34 ;
|
||||
tvector1w v40 ; tvector1w v41 ; tvector1w v42 ; tvector1w v43 ; tvector1w v44 ;
|
||||
} s_1w_5x5_matrix;
|
||||
|
||||
#define S_1W_5X5_MATRIX_DEFAULT ((s_1w_5x5_matrix)\
|
||||
{ 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0 })
|
||||
#ifndef ISP2401
|
||||
|
||||
#else
|
||||
|
||||
#endif
|
||||
typedef struct {
|
||||
tvector1w v00;
|
||||
tvector1w v01;
|
||||
tvector1w v02;
|
||||
tvector1w v03;
|
||||
tvector1w v04;
|
||||
tvector1w v05;
|
||||
tvector1w v06;
|
||||
} s_1w_1x7_matrix;
|
||||
|
||||
#define S_1W_1X7_MATRIX_DEFAULT ((s_1w_1x7_matrix)\
|
||||
{ 0, 0, 0, 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00;
|
||||
tvector1w v01;
|
||||
tvector1w v02;
|
||||
tvector1w v03;
|
||||
tvector1w v04;
|
||||
tvector1w v05;
|
||||
tvector1w v06;
|
||||
tvector1w v07;
|
||||
tvector1w v08;
|
||||
} s_1w_1x9_matrix;
|
||||
|
||||
#define S_1W_1X9_MATRIX_DEFAULT ((s_1w_1x9_matrix)\
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00;
|
||||
tvector1w v01;
|
||||
tvector1w v02;
|
||||
tvector1w v03;
|
||||
} s_1w_1x4_matrix;
|
||||
|
||||
#define S_1W_1X4_MATRIX ((s_1w_1x4_matrix)\
|
||||
{ 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00; tvector1w v01; tvector1w v02; tvector1w v03;
|
||||
tvector1w v10; tvector1w v11; tvector1w v12; tvector1w v13;
|
||||
tvector1w v20; tvector1w v21; tvector1w v22; tvector1w v23;
|
||||
tvector1w v30; tvector1w v31; tvector1w v32; tvector1w v33;
|
||||
} s_1w_4x4_matrix;
|
||||
|
||||
#define S_1W_4X4_MATRIX_DEFAULT ((s_1w_4x4_matrix)\
|
||||
{ 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, \
|
||||
0, 0, 0, 0, \
|
||||
0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00;
|
||||
tvector1w v01;
|
||||
tvector1w v02;
|
||||
tvector1w v03;
|
||||
tvector1w v04;
|
||||
tvector1w v05;
|
||||
} s_1w_1x6_matrix;
|
||||
|
||||
#define S_1W_1X6_MATRIX_DEFAULT ((s_1w_1x6_matrix)\
|
||||
{ 0, 0, 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00; tvector1w v01; tvector1w v02; tvector1w v03; tvector1w v04; tvector1w v05;
|
||||
tvector1w v10; tvector1w v11; tvector1w v12; tvector1w v13; tvector1w v14; tvector1w v15;
|
||||
tvector1w v20; tvector1w v21; tvector1w v22; tvector1w v23; tvector1w v24; tvector1w v25;
|
||||
tvector1w v30; tvector1w v31; tvector1w v32; tvector1w v33; tvector1w v34; tvector1w v35;
|
||||
tvector1w v40; tvector1w v41; tvector1w v42; tvector1w v43; tvector1w v44; tvector1w v45;
|
||||
tvector1w v50; tvector1w v51; tvector1w v52; tvector1w v53; tvector1w v54; tvector1w v55;
|
||||
} s_1w_6x6_matrix;
|
||||
|
||||
#define S_1W_6X6_MATRIX_DEFAULT ((s_1w_6x6_matrix)\
|
||||
{ 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00; tvector1w v01; tvector1w v02; tvector1w v03; tvector1w v04;
|
||||
tvector1w v05; tvector1w v06; tvector1w v07; tvector1w v08;
|
||||
tvector1w v10; tvector1w v11; tvector1w v12; tvector1w v13; tvector1w v14;
|
||||
tvector1w v15; tvector1w v16; tvector1w v17; tvector1w v18;
|
||||
tvector1w v20; tvector1w v21; tvector1w v22; tvector1w v23; tvector1w v24;
|
||||
tvector1w v25; tvector1w v26; tvector1w v27; tvector1w v28;
|
||||
tvector1w v30; tvector1w v31; tvector1w v32; tvector1w v33; tvector1w v34;
|
||||
tvector1w v35; tvector1w v36; tvector1w v37; tvector1w v38;
|
||||
tvector1w v40; tvector1w v41; tvector1w v42; tvector1w v43; tvector1w v44;
|
||||
tvector1w v45; tvector1w v46; tvector1w v47; tvector1w v48;
|
||||
tvector1w v50; tvector1w v51; tvector1w v52; tvector1w v53; tvector1w v54;
|
||||
tvector1w v55; tvector1w v56; tvector1w v57; tvector1w v58;
|
||||
tvector1w v60; tvector1w v61; tvector1w v62; tvector1w v63; tvector1w v64;
|
||||
tvector1w v65; tvector1w v66; tvector1w v67; tvector1w v68;
|
||||
tvector1w v70; tvector1w v71; tvector1w v72; tvector1w v73; tvector1w v74;
|
||||
tvector1w v75; tvector1w v76; tvector1w v77; tvector1w v78;
|
||||
tvector1w v80; tvector1w v81; tvector1w v82; tvector1w v83; tvector1w v84;
|
||||
tvector1w v85; tvector1w v86; tvector1w v87; tvector1w v88;
|
||||
} s_1w_9x9_matrix;
|
||||
|
||||
#define S_1W_9X9_MATRIX_DEFAULT ((s_1w_9x9_matrix)\
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v00; tvector1w v01; tvector1w v02; tvector1w v03; tvector1w v04;
|
||||
tvector1w v05; tvector1w v06;
|
||||
tvector1w v10; tvector1w v11; tvector1w v12; tvector1w v13; tvector1w v14;
|
||||
tvector1w v15; tvector1w v16;
|
||||
tvector1w v20; tvector1w v21; tvector1w v22; tvector1w v23; tvector1w v24;
|
||||
tvector1w v25; tvector1w v26;
|
||||
tvector1w v30; tvector1w v31; tvector1w v32; tvector1w v33; tvector1w v34;
|
||||
tvector1w v35; tvector1w v36;
|
||||
tvector1w v40; tvector1w v41; tvector1w v42; tvector1w v43; tvector1w v44;
|
||||
tvector1w v45; tvector1w v46;
|
||||
tvector1w v50; tvector1w v51; tvector1w v52; tvector1w v53; tvector1w v54;
|
||||
tvector1w v55; tvector1w v56;
|
||||
tvector1w v60; tvector1w v61; tvector1w v62; tvector1w v63; tvector1w v64;
|
||||
tvector1w v65; tvector1w v66;
|
||||
} s_1w_7x7_matrix;
|
||||
|
||||
#define S_1W_7X7_MATRIX_DEFAULT ((s_1w_7x7_matrix)\
|
||||
{ 0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0, \
|
||||
0, 0, 0, 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w v0_0;
|
||||
tvector1w v0_1;
|
||||
tvector1w v0_2;
|
||||
tvector1w v0_3;
|
||||
tvector1w v0_4;
|
||||
tvector1w v0_5;
|
||||
tvector1w v0_6;
|
||||
tvector1w v0_7;
|
||||
tvector1w v0_8;
|
||||
tvector1w v0_9;
|
||||
tvector1w v0_10;
|
||||
} s_1w_1x11_matrix;
|
||||
|
||||
#define S_1W_1X11_MATRIX_DEFAULT ((s_1w_1x11_matrix)\
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0 })
|
||||
|
||||
typedef struct {
|
||||
tvector1w x_cord[MAX_CONFIG_POINTS];
|
||||
tvector1w slope[MAX_CONFIG_POINTS-1];
|
||||
tvector1w y_offset[MAX_CONFIG_POINTS-1];
|
||||
} ref_config_points;
|
||||
|
||||
typedef struct {
|
||||
tscalar1w_range1wbit slope_vec[CONFIG_UNIT_LUT_SIZE_32];
|
||||
tscalar1w_range1wbit offset_vec[CONFIG_UNIT_LUT_SIZE_32];
|
||||
tscalar1w_16bit x_cord_vec[CONFIG_UNIT_LUT_SIZE_32];
|
||||
tscalar1w_16bit x_cord_max;
|
||||
tscalar1w_5bit exponent;
|
||||
tscalar1w_5bit slope_resolution;
|
||||
} xcu_ref_init_vectors;
|
||||
|
||||
typedef struct {
|
||||
#ifdef ISP2401
|
||||
tvector1w elem[IMAX32_ELEM_SIZE];
|
||||
} imax32_ref_in_vector;
|
||||
|
||||
typedef struct {
|
||||
#endif
|
||||
tscalar1w search[BMA_SEARCH_BLOCK_SZ_16][BMA_SEARCH_BLOCK_SZ_16];
|
||||
} bma_16x16_search_window;
|
||||
|
||||
typedef struct {
|
||||
tscalar1w ref[BMA_REF_BLOCK_SZ_8][BMA_REF_BLOCK_SZ_8];
|
||||
} ref_block_8x8;
|
||||
|
||||
typedef struct {
|
||||
tscalar1w sads[SADS_16x16_1];
|
||||
} bma_output_16_1;
|
||||
|
||||
typedef struct {
|
||||
tscalar1w sads[SADS_16x16_2];
|
||||
} bma_output_16_2;
|
||||
|
||||
typedef struct {
|
||||
tscalar1w sads[SADS_14x14_2];
|
||||
} bma_output_14_2;
|
||||
|
||||
typedef struct {
|
||||
tscalar1w sads[SADS_14x14_1];
|
||||
} bma_output_14_1;
|
||||
|
||||
typedef struct {
|
||||
tvector1w spatial_weight_lut[BFA_MAX_KWAY]; /* spatial weight LUT */
|
||||
/* range weight LUT, (BFA_RW_LUT_SIZE + 1) numbers of LUT values are compressed in BFA_RW_LUT_SIZE buffer.
|
||||
* range_weight_lut[k] = packed(drop[k], range_weight[k])
|
||||
* where, drop[k] = range_weight[k+1] - range_weight[k]
|
||||
* pack(msb, lsb): two 8bits numbers packed in one 16bits number */
|
||||
tvector1w range_weight_lut[BFA_RW_LUT_SIZE];
|
||||
} bfa_weights;
|
||||
|
||||
/* Return type for BFA BBBs */
|
||||
typedef struct {
|
||||
tvector2w sop; /* weighted sum of pixels */
|
||||
tvector1w sow; /* sum of weights */
|
||||
} bfa_7x7_output;
|
||||
#endif /* __REF_VECTOR_FUNC_TYPES_H_INCLUDED__ */
|
@ -1,329 +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 __MPMATH_H_INCLUDED__
|
||||
#define __MPMATH_H_INCLUDED__
|
||||
|
||||
|
||||
#ifdef INLINE_MPMATH
|
||||
#define STORAGE_CLASS_MPMATH_FUNC_H static inline
|
||||
#define STORAGE_CLASS_MPMATH_DATA_H static inline_DATA
|
||||
#else /* INLINE_MPMATH */
|
||||
#define STORAGE_CLASS_MPMATH_FUNC_H extern
|
||||
#define STORAGE_CLASS_MPMATH_DATA_H extern_DATA
|
||||
#endif /* INLINE_MPMATH */
|
||||
|
||||
#include <type_support.h>
|
||||
|
||||
/*
|
||||
* Implementation limits
|
||||
*/
|
||||
#define MIN_BITDEPTH 1
|
||||
#define MAX_BITDEPTH 64
|
||||
|
||||
#define ROUND_NEAREST_EVEN 0
|
||||
#define ROUND_NEAREST 1
|
||||
|
||||
/*
|
||||
* The MP types
|
||||
*
|
||||
* "vector lane data" is scalar. With "scalar data" for limited range shift and address values
|
||||
*/
|
||||
typedef unsigned long long mpudata_t; /* Type of reference MP scalar / vector lane data; unsigned */
|
||||
typedef long long mpsdata_t; /* Type of reference MP scalar / vector lane data; signed */
|
||||
typedef unsigned short spudata_t; /* Type of reference SP scalar / vector lane data; unsigned */
|
||||
typedef short spsdata_t; /* Type of reference SP scalar / vector lane data; signed */
|
||||
typedef unsigned short bitdepth_t;
|
||||
|
||||
typedef enum {
|
||||
mp_zero_ID,
|
||||
mp_one_ID,
|
||||
mp_mone_ID,
|
||||
mp_smin_ID,
|
||||
mp_smax_ID,
|
||||
mp_umin_ID,
|
||||
mp_umax_ID,
|
||||
N_mp_const_ID
|
||||
} mp_const_ID_t;
|
||||
|
||||
#ifdef ISP2401
|
||||
/* _isValidMpudata is for internal use by mpmath and bbb's.
|
||||
* isValidMpudata is for external use by functions on top.
|
||||
*/
|
||||
#ifndef ENABLE_VALID_MP_DATA_CHECK
|
||||
#define _isValidMpsdata(data,bitdepth) (1)
|
||||
#define _isValidMpudata(data,bitdepth) (1)
|
||||
#else
|
||||
#define _isValidMpsdata(data,bitdepth) isValidMpsdata(data,bitdepth)
|
||||
#define _isValidMpudata(data,bitdepth) isValidMpsdata(data,bitdepth)
|
||||
|
||||
#endif
|
||||
#endif
|
||||
STORAGE_CLASS_MPMATH_FUNC_H bool isValidMpsdata(
|
||||
const mpsdata_t data,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H bool isValidMpudata(
|
||||
const mpudata_t data,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_castd (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_casth (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_scasth (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_qcastd (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_qcasth (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_qrcasth (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_abs (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_limit (
|
||||
const mpsdata_t bnd_low,
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t bnd_high,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_max (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_min (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_mux (
|
||||
const spudata_t sel,
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_rmux (
|
||||
const spudata_t sel,
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_add (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_sadd (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_sub (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_ssub (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_addasr1 (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_subasr1 (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_lsr (
|
||||
const mpsdata_t in0,
|
||||
const spsdata_t shft,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_asr (
|
||||
const mpsdata_t in0,
|
||||
const spsdata_t shft,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_rasr (
|
||||
const mpsdata_t in0,
|
||||
const spsdata_t shft,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
/* "mp_rasr_u()" is implemented by "mp_rasr()" */
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpudata_t mp_rasr_u (
|
||||
const mpudata_t in0,
|
||||
const spsdata_t shft,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_lsl (
|
||||
const mpsdata_t in0,
|
||||
const spsdata_t shft,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_asl (
|
||||
const mpsdata_t in0,
|
||||
const spsdata_t shft,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_muld (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_mul (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_qmul (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_qrmul (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_qdiv (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_qdivh (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_div (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_divh (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_and (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_compl (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_or (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_xor (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isEQ (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isNE (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isGT (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isGE (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isLT (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isLE (
|
||||
const mpsdata_t in0,
|
||||
const mpsdata_t in1,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isEQZ (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isNEZ (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isGTZ (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isGEZ (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isLTZ (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H spudata_t mp_isLEZ (
|
||||
const mpsdata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpsdata_t mp_const (
|
||||
const mp_const_ID_t ID,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
STORAGE_CLASS_MPMATH_FUNC_H mpudata_t mp_sqrt_u(
|
||||
const mpudata_t in0,
|
||||
const bitdepth_t bitdepth);
|
||||
|
||||
#ifndef INLINE_MPMATH
|
||||
#define STORAGE_CLASS_MPMATH_FUNC_C
|
||||
#define STORAGE_CLASS_MPMATH_DATA_C const
|
||||
#else /* INLINE_MPMATH */
|
||||
#define STORAGE_CLASS_MPMATH_FUNC_C STORAGE_CLASS_MPMATH_FUNC_H
|
||||
#define STORAGE_CLASS_MPMATH_DATA_C STORAGE_CLASS_MPMATH_DATA_H
|
||||
#include "mpmath.c"
|
||||
#define MPMATH_INLINED
|
||||
#endif /* INLINE_MPMATH */
|
||||
|
||||
#endif /* __MPMATH_H_INCLUDED__ */
|
@ -1,47 +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 __OSYS_H_INCLUDED__
|
||||
#define __OSYS_H_INCLUDED__
|
||||
|
||||
/*
|
||||
* This file is included on every cell {SP,ISP,host} and on every system
|
||||
* that uses the OSYS device. It defines the API to DLI bridge
|
||||
*
|
||||
* System and cell specific interfaces and inline code are included
|
||||
* conditionally through Makefile path settings.
|
||||
*
|
||||
* - . system and cell agnostic interfaces, constants and identifiers
|
||||
* - public: system agnostic, cell specific interfaces
|
||||
* - private: system dependent, cell specific interfaces & inline implementations
|
||||
* - global: system specific constants and identifiers
|
||||
* - local: system and cell specific constants and identifiers
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "system_local.h"
|
||||
#include "osys_local.h"
|
||||
|
||||
#ifndef __INLINE_OSYS__
|
||||
#define STORAGE_CLASS_OSYS_H extern
|
||||
#define STORAGE_CLASS_OSYS_C
|
||||
#include "osys_public.h"
|
||||
#else /* __INLINE_OSYS__ */
|
||||
#define STORAGE_CLASS_OSYS_H static inline
|
||||
#define STORAGE_CLASS_OSYS_C static inline
|
||||
#include "osys_private.h"
|
||||
#endif /* __INLINE_OSYS__ */
|
||||
|
||||
#endif /* __OSYS_H_INCLUDED__ */
|
@ -1,47 +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 __STREAM_BUFFER_H_INCLUDED__
|
||||
#define __STREAM_BUFFER_H_INCLUDED__
|
||||
|
||||
/*
|
||||
* This file is included on every cell {SP,ISP,host} and on every system
|
||||
* that uses the DMA device. It defines the API to DLI bridge
|
||||
*
|
||||
* System and cell specific interfaces and inline code are included
|
||||
* conditionally through Makefile path settings.
|
||||
*
|
||||
* - . system and cell agnostic interfaces, constants and identifiers
|
||||
* - public: system agnostic, cell specific interfaces
|
||||
* - private: system dependent, cell specific interfaces & inline implementations
|
||||
* - global: system specific constants and identifiers
|
||||
* - local: system and cell specific constants and identifiers
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#include "system_local.h"
|
||||
#include "stream_buffer_local.h"
|
||||
|
||||
#ifndef __INLINE_STREAM_BUFFER__
|
||||
#define STORAGE_CLASS_STREAM_BUFFER_H extern
|
||||
#define STORAGE_CLASS_STREAM_BUFFER_C
|
||||
#include "stream_buffer_public.h"
|
||||
#else /* __INLINE_STREAM_BUFFER__ */
|
||||
#define STORAGE_CLASS_STREAM_BUFFER_H static inline
|
||||
#define STORAGE_CLASS_STREAM_BUFFER_C static inline
|
||||
#include "stream_buffer_private.h"
|
||||
#endif /* __INLINE_STREAM_BUFFER__ */
|
||||
|
||||
#endif /* __STREAM_BUFFER_H_INCLUDED__ */
|
@ -1,38 +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 __VECTOR_FUNC_H_INCLUDED__
|
||||
#define __VECTOR_FUNC_H_INCLUDED__
|
||||
|
||||
|
||||
/* TODO: Later filters will be moved to types directory,
|
||||
* and we should only include matrix_MxN types */
|
||||
#include "filters/filters_1.0/filter_2x2.h"
|
||||
#include "filters/filters_1.0/filter_3x3.h"
|
||||
#include "filters/filters_1.0/filter_4x4.h"
|
||||
#include "filters/filters_1.0/filter_5x5.h"
|
||||
|
||||
#include "vector_func_local.h"
|
||||
|
||||
#ifndef __INLINE_VECTOR_FUNC__
|
||||
#define STORAGE_CLASS_VECTOR_FUNC_H extern
|
||||
#define STORAGE_CLASS_VECTOR_FUNC_C
|
||||
#include "vector_func_public.h"
|
||||
#else /* __INLINE_VECTOR_FUNC__ */
|
||||
#define STORAGE_CLASS_VECTOR_FUNC_H static inline
|
||||
#define STORAGE_CLASS_VECTOR_FUNC_C static inline
|
||||
#include "vector_func_private.h"
|
||||
#endif /* __INLINE_VECTOR_FUNC__ */
|
||||
|
||||
#endif /* __VECTOR_FUNC_H_INCLUDED__ */
|
@ -1,31 +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 __VECTOR_OPS_H_INCLUDED__
|
||||
#define __VECTOR_OPS_H_INCLUDED__
|
||||
|
||||
|
||||
#include "vector_ops_local.h"
|
||||
|
||||
#ifndef __INLINE_VECTOR_OPS__
|
||||
#define STORAGE_CLASS_VECTOR_OPS_H extern
|
||||
#define STORAGE_CLASS_VECTOR_OPS_C
|
||||
#include "vector_ops_public.h"
|
||||
#else /* __INLINE_VECTOR_OPS__ */
|
||||
#define STORAGE_CLASS_VECTOR_OPS_H static inline
|
||||
#define STORAGE_CLASS_VECTOR_OPS_C static inline
|
||||
#include "vector_ops_private.h"
|
||||
#endif /* __INLINE_VECTOR_OPS__ */
|
||||
|
||||
#endif /* __VECTOR_OPS_H_INCLUDED__ */
|
@ -1,46 +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 __XMEM_H_INCLUDED__
|
||||
#define __XMEM_H_INCLUDED__
|
||||
|
||||
/*
|
||||
* This file is included on every cell {SP,ISP,host} and on every system
|
||||
* that uses the XMEM device. It defines the API to DLI bridge
|
||||
*
|
||||
* System and cell specific interfaces and inline code are included
|
||||
* conditionally through Makefile path settings.
|
||||
*
|
||||
* - . system and cell agnostic interfaces, constants and identifiers
|
||||
* - public: system agnostic, cell specific interfaces
|
||||
* - private: system dependent, cell specific interfaces & inline implementations
|
||||
* - global: system specific constants and identifiers
|
||||
* - local: system and cell specific constants and identifiers
|
||||
*/
|
||||
|
||||
|
||||
#include "system_local.h"
|
||||
#include "xmem_local.h"
|
||||
|
||||
#ifndef __INLINE_XMEM__
|
||||
#define STORAGE_CLASS_XMEM_H extern
|
||||
#define STORAGE_CLASS_XMEM_C
|
||||
#include "xmem_public.h"
|
||||
#else /* __INLINE_XMEM__ */
|
||||
#define STORAGE_CLASS_XMEM_H static inline
|
||||
#define STORAGE_CLASS_XMEM_C static inline
|
||||
#include "xmem_private.h"
|
||||
#endif /* __INLINE_XMEM__ */
|
||||
|
||||
#endif /* __XMEM_H_INCLUDED__ */
|
@ -1,53 +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 __SOCKET_GLOBAL_H_INCLUDED__
|
||||
#define __SOCKET_GLOBAL_H_INCLUDED__
|
||||
|
||||
#include "stream_buffer.h"
|
||||
|
||||
/* define the socket port direction */
|
||||
typedef enum {
|
||||
SOCKET_PORT_DIRECTION_NULL,
|
||||
SOCKET_PORT_DIRECTION_IN,
|
||||
SOCKET_PORT_DIRECTION_OUT
|
||||
} socket_port_direction_t;
|
||||
|
||||
/* pointer to the port's callout function */
|
||||
typedef void (*socket_port_callout_fp)(void);
|
||||
typedef struct socket_port_s socket_port_t;
|
||||
typedef struct socket_s socket_t;
|
||||
|
||||
/* data structure of the socket port */
|
||||
struct socket_port_s {
|
||||
unsigned channel; /* the port entity */
|
||||
socket_port_direction_t direction; /* the port direction */
|
||||
socket_port_callout_fp callout; /* the port callout function */
|
||||
|
||||
socket_t *socket; /* point to the socket */
|
||||
|
||||
struct {
|
||||
unsigned data;
|
||||
} buf; /* the buffer at the port */
|
||||
};
|
||||
|
||||
/* data structure of the socket */
|
||||
struct socket_s {
|
||||
socket_port_t *in; /* the in-direction port */
|
||||
socket_port_t *out; /* the out-direction port */
|
||||
stream_buffer_t buf; /* the buffer between in-ports and out-ports */
|
||||
};
|
||||
|
||||
#endif /* __SOCKET_GLOBAL_H_INCLUDED__ */
|
||||
|
@ -1,26 +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 __STREAM_BUFFER_GLOBAL_H_INCLUDED__
|
||||
#define __STREAM_BUFFER_GLOBAL_H_INCLUDED__
|
||||
|
||||
typedef struct stream_buffer_s stream_buffer_t;
|
||||
struct stream_buffer_s {
|
||||
unsigned base;
|
||||
unsigned limit;
|
||||
unsigned top;
|
||||
};
|
||||
|
||||
#endif /* __STREAM_BUFFER_GLOBAL_H_INCLUDED__ */
|
||||
|
@ -1,41 +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_AA2_STATE_H
|
||||
#define __IA_CSS_AA2_STATE_H
|
||||
|
||||
#include "type_support.h"
|
||||
#include "vmem.h" /* for VMEM_ARRAY*/
|
||||
|
||||
/* Denotes the maximum number of pixels per line that can be processed:
|
||||
* MAX_AA_VECTORS_PER_LINE = maximum_line_width / ISP_NWAY */
|
||||
#ifndef MAX_AA_VECTORS_PER_LINE
|
||||
#error Please define MAX_AA_VECTORS_PER_LINE.
|
||||
#endif
|
||||
|
||||
/* This uses 2 history lines for both y, u and v*/
|
||||
#define AA_STATE_Y_BUFFER_HEIGHT 2
|
||||
#define AA_STATE_UV_BUFFER_HEIGHT 2
|
||||
#define AA_STATE_Y_BUFFER_WIDTH MAX_AA_VECTORS_PER_LINE
|
||||
/* The number of u and v elements is half y due to yuv420 downsampling. */
|
||||
#define AA_STATE_UV_BUFFER_WIDTH (AA_STATE_Y_BUFFER_WIDTH/2)
|
||||
|
||||
|
||||
struct ia_css_isp_aa_vmem_state {
|
||||
VMEM_ARRAY(y[AA_STATE_Y_BUFFER_HEIGHT], AA_STATE_Y_BUFFER_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(u[AA_STATE_UV_BUFFER_HEIGHT], AA_STATE_UV_BUFFER_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(v[AA_STATE_UV_BUFFER_HEIGHT], AA_STATE_UV_BUFFER_WIDTH*ISP_NWAY);
|
||||
};
|
||||
|
||||
#endif /* __IA_CSS_AA2_STATE_H */
|
@ -1,20 +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_BAYER_LOAD_PARAM_H
|
||||
#define __IA_CSS_BAYER_LOAD_PARAM_H
|
||||
|
||||
#include "ia_css_bayer_ls_param.h"
|
||||
|
||||
#endif /* __IA_CSS_BAYER_LOAD_PARAM_H */
|
@ -1,42 +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_BAYER_LS_PARAM_H
|
||||
#define __IA_CSS_BAYER_LS_PARAM_H
|
||||
|
||||
#include "type_support.h"
|
||||
#ifndef ISP2401
|
||||
|
||||
#define NUM_BAYER_LS 2
|
||||
#define BAYER_IDX_GR 0
|
||||
#define BAYER_IDX_R 1
|
||||
#define BAYER_IDX_B 2
|
||||
#define BAYER_IDX_GB 3
|
||||
#define BAYER_QUAD_WIDTH 2
|
||||
#define BAYER_QUAD_HEIGHT 2
|
||||
#define NOF_BAYER_VECTORS 4
|
||||
|
||||
/* bayer load/store */
|
||||
struct sh_css_isp_bayer_ls_isp_config {
|
||||
uint32_t base_address[NUM_BAYER_LS];
|
||||
uint32_t width[NUM_BAYER_LS];
|
||||
uint32_t height[NUM_BAYER_LS];
|
||||
uint32_t stride[NUM_BAYER_LS];
|
||||
};
|
||||
|
||||
#else
|
||||
#include "../../io_ls/common/ia_css_common_io_types.h"
|
||||
#endif
|
||||
|
||||
#endif /* __IA_CSS_BAYER_LS_PARAM_H */
|
@ -1,21 +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_BAYER_STORE_PARAM_H
|
||||
#define __IA_CSS_BAYER_STORE_PARAM_H
|
||||
|
||||
#include "ia_css_bayer_ls_param.h"
|
||||
|
||||
|
||||
#endif /* __IA_CSS_BAYER_STORE_PARAM_H */
|
@ -1,31 +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_BNLM_STATE_H
|
||||
#define __IA_CSS_BNLM_STATE_H
|
||||
|
||||
|
||||
#include "type_support.h"
|
||||
#include "vmem.h" /* for VMEM_ARRAY*/
|
||||
#include "bnlm.isp.h"
|
||||
|
||||
struct bnlm_vmem_state {
|
||||
/* State buffers required for BNLM */
|
||||
VMEM_ARRAY(buf[BNLM_STATE_BUF_HEIGHT], BNLM_STATE_BUF_WIDTH*ISP_NWAY);
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* __IA_CSS_BNLM_STATE_H */
|
||||
|
@ -1,33 +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_CNR_STATE_H
|
||||
#define __IA_CSS_CNR_STATE_H
|
||||
|
||||
#include "type_support.h"
|
||||
|
||||
#include "vmem.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
VMEM_ARRAY(u, ISP_NWAY);
|
||||
VMEM_ARRAY(v, ISP_NWAY);
|
||||
} s_cnr_buf;
|
||||
|
||||
/* CNR (color noise reduction) */
|
||||
struct sh_css_isp_cnr_vmem_state {
|
||||
s_cnr_buf cnr_buf[2][MAX_VECTORS_PER_BUF_LINE/2];
|
||||
};
|
||||
|
||||
#endif /* __IA_CSS_CNR_STATE_H */
|
@ -1,33 +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_CNR2_STATE_H
|
||||
#define __IA_CSS_CNR2_STATE_H
|
||||
|
||||
#include "type_support.h"
|
||||
#include "vmem.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
VMEM_ARRAY(y, (MAX_VECTORS_PER_BUF_LINE/2)*ISP_NWAY);
|
||||
VMEM_ARRAY(u, (MAX_VECTORS_PER_BUF_LINE/2)*ISP_NWAY);
|
||||
VMEM_ARRAY(v, (MAX_VECTORS_PER_BUF_LINE/2)*ISP_NWAY);
|
||||
} s_cnr_buf;
|
||||
|
||||
/* CNR (color noise reduction) */
|
||||
struct sh_css_isp_cnr_vmem_state {
|
||||
s_cnr_buf cnr_buf;
|
||||
};
|
||||
|
||||
#endif /* __IA_CSS_CNR2_STATE_H */
|
@ -1,36 +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_DP_STATE_H
|
||||
#define __IA_CSS_DP_STATE_H
|
||||
|
||||
#include "type_support.h"
|
||||
|
||||
#include "vmem.h"
|
||||
#ifndef ISP2401
|
||||
#if NEED_BDS_OTHER_THAN_1_00
|
||||
#else
|
||||
#if ENABLE_FIXED_BAYER_DS
|
||||
#endif
|
||||
#define MAX_VECTORS_PER_DP_LINE MAX_VECTORS_PER_BUF_INPUT_LINE
|
||||
#else
|
||||
#define MAX_VECTORS_PER_DP_LINE MAX_VECTORS_PER_BUF_LINE
|
||||
#endif
|
||||
|
||||
/* DP (Defect Pixel Correction) */
|
||||
struct sh_css_isp_dp_vmem_state {
|
||||
VMEM_ARRAY(dp_buf[4], MAX_VECTORS_PER_DP_LINE*ISP_NWAY);
|
||||
};
|
||||
|
||||
#endif /* __IA_CSS_DP_STATE_H */
|
@ -1,30 +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_DPC2_STATE_H
|
||||
#define __IA_CSS_DPC2_STATE_H
|
||||
|
||||
#include "type_support.h"
|
||||
#include "vmem.h" /* for VMEM_ARRAY*/
|
||||
|
||||
#include "ia_css_dpc2_param.h"
|
||||
|
||||
struct sh_css_isp_dpc2_vmem_state {
|
||||
VMEM_ARRAY(dpc2_input_lines[DPC2_STATE_INPUT_BUFFER_HEIGHT], DPC2_STATE_INPUT_BUFFER_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(dpc2_local_deviations[DPC2_STATE_LOCAL_DEVIATION_BUFFER_HEIGHT], DPC2_STATE_LOCAL_DEVIATION_BUFFER_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(dpc2_second_min[DPC2_STATE_SECOND_MINMAX_BUFFER_HEIGHT], DPC2_STATE_SECOND_MINMAX_BUFFER_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(dpc2_second_max[DPC2_STATE_SECOND_MINMAX_BUFFER_HEIGHT], DPC2_STATE_SECOND_MINMAX_BUFFER_WIDTH*ISP_NWAY);
|
||||
};
|
||||
|
||||
#endif /* __IA_CSS_DPC2_STATE_H */
|
@ -1,40 +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_EED1_8_STATE_H
|
||||
#define __IA_CSS_EED1_8_STATE_H
|
||||
|
||||
#include "type_support.h"
|
||||
#include "vmem.h" /* for VMEM_ARRAY*/
|
||||
|
||||
#include "ia_css_eed1_8_param.h"
|
||||
|
||||
struct eed1_8_vmem_state {
|
||||
VMEM_ARRAY(eed1_8_input_lines[EED1_8_STATE_INPUT_BUFFER_HEIGHT], EED1_8_STATE_INPUT_BUFFER_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_LD_H[EED1_8_STATE_LD_H_HEIGHT], EED1_8_STATE_LD_H_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_LD_V[EED1_8_STATE_LD_V_HEIGHT], EED1_8_STATE_LD_V_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_D_Hr[EED1_8_STATE_D_HR_HEIGHT], EED1_8_STATE_D_HR_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_D_Hb[EED1_8_STATE_D_HB_HEIGHT], EED1_8_STATE_D_HB_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_D_Vr[EED1_8_STATE_D_VR_HEIGHT], EED1_8_STATE_D_VR_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_D_Vb[EED1_8_STATE_D_VB_HEIGHT], EED1_8_STATE_D_VB_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_rb_zipped[EED1_8_STATE_RB_ZIPPED_HEIGHT], EED1_8_STATE_RB_ZIPPED_WIDTH*ISP_NWAY);
|
||||
#if EED1_8_FC_ENABLE_MEDIAN
|
||||
VMEM_ARRAY(eed1_8_Yc[EED1_8_STATE_YC_HEIGHT], EED1_8_STATE_YC_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_Cg[EED1_8_STATE_CG_HEIGHT], EED1_8_STATE_CG_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_Co[EED1_8_STATE_CO_HEIGHT], EED1_8_STATE_CO_WIDTH*ISP_NWAY);
|
||||
VMEM_ARRAY(eed1_8_AbsK[EED1_8_STATE_ABSK_HEIGHT], EED1_8_STATE_ABSK_WIDTH*ISP_NWAY);
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* __IA_CSS_EED1_8_STATE_H */
|
@ -1,22 +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.
|
||||
*/
|
||||
|
||||
#ifndef __IA_CSS_PLANE_IO_PARAM_H
|
||||
#define __IA_CSS_PLANE_IO_PARAM_H
|
||||
|
||||
#include "../common/ia_css_common_io_param.h"
|
||||
|
||||
#endif /* __IA_CSS_PLANE_IO_PARAM_H */
|
||||
#endif
|
@ -1,30 +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.
|
||||
*/
|
||||
|
||||
#ifndef __IA_CSS_PLANE_IO_TYPES_H
|
||||
#define __IA_CSS_PLANE_IO_TYPES_H
|
||||
|
||||
#include "../common/ia_css_common_io_types.h"
|
||||
|
||||
#define PLANE_IO_LS_NUM_PLANES 3
|
||||
|
||||
struct ia_css_plane_io_config {
|
||||
struct ia_css_common_io_config get_plane_io_config[PLANE_IO_LS_NUM_PLANES];
|
||||
struct ia_css_common_io_config put_plane_io_config[PLANE_IO_LS_NUM_PLANES];
|
||||
};
|
||||
|
||||
#endif /* __IA_CSS_PLANE_IO_TYPES_H */
|
||||
|
||||
#endif
|
@ -1,22 +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.
|
||||
*/
|
||||
|
||||
#ifndef __IA_CSS_YUV420_IO_PARAM
|
||||
#define __IA_CSS_YUV420_IO_PARAM
|
||||
|
||||
#include "../common/ia_css_common_io_param.h"
|
||||
|
||||
#endif
|
||||
#endif
|
@ -1,22 +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.
|
||||
*/
|
||||
|
||||
#ifndef __IA_CSS_YUV420_IO_TYPES
|
||||
#define __IA_CSS_YUV420_IO_TYPES
|
||||
|
||||
#include "../common/ia_css_common_io_types.h"
|
||||
|
||||
#endif
|
||||
#endif
|
@ -1,22 +0,0 @@
|
||||
#ifdef ISP2401
|
||||
/**
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifndef __IA_CSS_PLANE_IO_PARAM_H
|
||||
#define __IA_CSS_PLANE_IO_PARAM_H
|
||||
|
||||
#include "../common/ia_css_common_io_param.h"
|
||||
|
||||
#endif /* __IA_CSS_PLANE_IO_PARAM_H */
|
||||
#endif
|
@ -1,30 +0,0 @@
|
||||
#ifdef ISP2401
|
||||
/**
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifndef __IA_CSS_PLANE_IO_TYPES_H
|
||||
#define __IA_CSS_PLANE_IO_TYPES_H
|
||||
|
||||
#include "../common/ia_css_common_io_types.h"
|
||||
|
||||
#define PLANE_IO_LS_NUM_PLANES 3
|
||||
|
||||
struct ia_css_plane_io_config {
|
||||
struct ia_css_common_io_config get_plane_io_config[PLANE_IO_LS_NUM_PLANES];
|
||||
struct ia_css_common_io_config put_plane_io_config[PLANE_IO_LS_NUM_PLANES];
|
||||
};
|
||||
|
||||
#endif /* __IA_CSS_PLANE_IO_TYPES_H */
|
||||
|
||||
#endif
|
@ -1,22 +0,0 @@
|
||||
#ifdef ISP2401
|
||||
/**
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifndef __IA_CSS_YUV420_IO_PARAM
|
||||
#define __IA_CSS_YUV420_IO_PARAM
|
||||
|
||||
#include "../common/ia_css_common_io_param.h"
|
||||
|
||||
#endif
|
||||
#endif
|
@ -1,22 +0,0 @@
|
||||
#ifdef ISP2401
|
||||
/**
|
||||
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.
|
||||
*/
|
||||
|
||||
#ifndef __IA_CSS_YUV420_IO_TYPES
|
||||
#define __IA_CSS_YUV420_IO_TYPES
|
||||
|
||||
#include "../common/ia_css_common_io_types.h"
|
||||
|
||||
#endif
|
||||
#endif
|
@ -1,21 +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_NORM_TYPES_H
|
||||
#define __IA_CSS_NORM_TYPES_H
|
||||
|
||||
|
||||
#endif /* __IA_CSS_NORM_TYPES_H */
|
||||
|
||||
|
@ -1,45 +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_S3A_STAT_LS_PARAM_H
|
||||
#define __IA_CSS_S3A_STAT_LS_PARAM_H
|
||||
|
||||
#include "type_support.h"
|
||||
#ifdef ISP2401
|
||||
#include "../../io_ls/common/ia_css_common_io_types.h"
|
||||
#endif
|
||||
|
||||
#define NUM_S3A_LS 1
|
||||
|
||||
/* s3a statistics store */
|
||||
#ifdef ISP2401
|
||||
struct ia_css_s3a_stat_ls_configuration {
|
||||
uint32_t s3a_grid_size_log2;
|
||||
};
|
||||
|
||||
#endif
|
||||
struct sh_css_isp_s3a_stat_ls_isp_config {
|
||||
#ifndef ISP2401
|
||||
uint32_t base_address[NUM_S3A_LS];
|
||||
uint32_t width[NUM_S3A_LS];
|
||||
uint32_t height[NUM_S3A_LS];
|
||||
uint32_t stride[NUM_S3A_LS];
|
||||
#endif
|
||||
uint32_t s3a_grid_size_log2[NUM_S3A_LS];
|
||||
};
|
||||
|
||||
#ifndef ISP2401
|
||||
|
||||
#endif
|
||||
#endif /* __IA_CSS_S3A_STAT_LS_PARAM_H */
|
@ -1,21 +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_S3A_STAT_STORE_PARAM_H
|
||||
#define __IA_CSS_S3A_STAT_STORE_PARAM_H
|
||||
|
||||
#include "ia_css_s3a_stat_ls_param.h"
|
||||
|
||||
|
||||
#endif /* __IA_CSS_S3A_STAT_STORE_PARAM_H */
|
@ -1,20 +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_SCALE_PARAM_H
|
||||
#define _IA_CSS_SCALE_PARAM_H
|
||||
|
||||
#include "uds/uds_1.0/ia_css_uds_param.h"
|
||||
|
||||
#endif /* _IA_CSS_SCALE_PARAM_H */
|
@ -1,22 +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_SDIS_PARAM_COMMON_H
|
||||
#define __IA_CSS_SDIS_PARAM_COMMON_H
|
||||
|
||||
|
||||
#include "sdis/common/ia_css_sdis_common.host.h"
|
||||
|
||||
#endif /* __IA_CSS_SDIS_PARAM_COMMON_H */
|
||||
|
@ -1,21 +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_SDIS_PARAM_H
|
||||
#define __IA_CSS_SDIS_PARAM_H
|
||||
|
||||
#include "sdis.isp.h"
|
||||
|
||||
#endif /* __IA_CSS_SDIS_PARAM_H */
|
||||
|
@ -1,21 +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_SDIS2_PARAM_H
|
||||
#define __IA_CSS_SDIS2_PARAM_H
|
||||
|
||||
#include "sdis.isp.h"
|
||||
|
||||
#endif /* __IA_CSS_SDIS2_PARAM_H */
|
||||
|
@ -1,20 +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_XNR3_WRAPPER_PARAM_H
|
||||
#define __IA_CSS_XNR3_WRAPPER_PARAM_H
|
||||
|
||||
#include "ia_css_xnr3_param.h"
|
||||
|
||||
#endif
|
@ -1,20 +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_YUV_LOAD_PARAM_H
|
||||
#define __IA_CSS_YUV_LOAD_PARAM_H
|
||||
|
||||
#include "ia_css_yuv_ls_param.h"
|
||||
|
||||
#endif /* __IA_CSS_YUV_LOAD_PARAM_H */
|
@ -1,39 +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_YUV_LS_PARAM_H
|
||||
#define __IA_CSS_YUV_LS_PARAM_H
|
||||
|
||||
#include "type_support.h"
|
||||
#ifndef ISP2401
|
||||
|
||||
/* The number of load/store kernels in a pipeline can be greater than one.
|
||||
* A kernel can consume more than one input or can produce more
|
||||
* than one output.
|
||||
*/
|
||||
#define NUM_YUV_LS 2
|
||||
|
||||
/* YUV load/store */
|
||||
struct sh_css_isp_yuv_ls_isp_config {
|
||||
unsigned base_address[NUM_YUV_LS];
|
||||
unsigned width[NUM_YUV_LS];
|
||||
unsigned height[NUM_YUV_LS];
|
||||
unsigned stride[NUM_YUV_LS];
|
||||
};
|
||||
|
||||
#else
|
||||
#include "../../io_ls/common/ia_css_common_io_types.h"
|
||||
#endif
|
||||
|
||||
#endif /* __IA_CSS_YUV_LS_PARAM_H */
|
@ -1,21 +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_YUV_STORE_PARAM_H
|
||||
#define __IA_CSS_YUV_STORE_PARAM_H
|
||||
|
||||
#include "ia_css_yuv_ls_param.h"
|
||||
|
||||
|
||||
#endif /* __IA_CSS_YUV_STORE_PARAM_H */
|
@ -1,286 +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 _COMMON_ISP_EXPRS_H_
|
||||
#define _COMMON_ISP_EXPRS_H_
|
||||
|
||||
/* Binary independent pre-processor expressions */
|
||||
|
||||
#include "sh_css_defs.h"
|
||||
#include "isp_const.h"
|
||||
|
||||
#ifdef __HOST
|
||||
#error "isp_exprs.h: Do not include on HOST, contains ISP specific defines"
|
||||
#endif
|
||||
|
||||
#ifndef __ISP
|
||||
#if defined(MODE)
|
||||
#define MODE aap
|
||||
#error "isp_exprs.h: is mode independent, but MODE is set"
|
||||
#endif
|
||||
#if defined(VARIABLE_RESOLUTION)
|
||||
#define VARIABLE_RESOLUTION noot
|
||||
#error "isp_exprs.h: is mode independent, but VARIABLE_RESOLUTION is set"
|
||||
#endif
|
||||
#if defined(DECI_FACTOR_LOG2)
|
||||
#define DECI_FACTOR_LOG2 mies
|
||||
#error "isp_exprs.h: is mode independent, but DECI_FACTOR_LOG2 is set"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define LOG_VECTOR_STEP _ISP_LOG_VECTOR_STEP(MODE)
|
||||
/* should be even and multiple of vf downscaling */
|
||||
#define ISP_OUTPUT_CHUNK_LOG_FACTOR (MAX_VF_LOG_DOWNSCALE<=1 ? LOG_VECTOR_STEP : \
|
||||
umax(VF_LOG_DOWNSCALE, LOG_VECTOR_STEP))
|
||||
|
||||
#define CEIL_DIV_CHUNKS(n,c) ((c) == 1 ? (n) \
|
||||
: CEIL_SHIFT(CEIL_DIV((n), (c)), ISP_OUTPUT_CHUNK_LOG_FACTOR)<<ISP_OUTPUT_CHUNK_LOG_FACTOR)
|
||||
|
||||
|
||||
#define ISP_VARIABLE_INPUT (ISP_INPUT == IA_CSS_BINARY_INPUT_VARIABLE)
|
||||
|
||||
/* Binary independent versions, see isp_defs.h for binary dependent ones */
|
||||
#ifndef __ISP
|
||||
#define IMAGEFORMAT_IS_RAW(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_RAW)
|
||||
|
||||
#define IMAGEFORMAT_IS_RAW_INTERLEAVED(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_RAW)
|
||||
|
||||
#define IMAGEFORMAT_IS_RGB(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_RGBA888 || (fmt) == IA_CSS_FRAME_FORMAT_PLANAR_RGB888 || \
|
||||
(fmt) == IA_CSS_FRAME_FORMAT_RGB565)
|
||||
|
||||
#define IMAGEFORMAT_IS_RGB_INTERLEAVED(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_RGBA888 || (fmt) == IA_CSS_FRAME_FORMAT_RGB565)
|
||||
|
||||
#define IMAGEFORMAT_UV_INTERLEAVED(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_NV11 || \
|
||||
(fmt) == IA_CSS_FRAME_FORMAT_NV12 || (fmt) == IA_CSS_FRAME_FORMAT_NV21 || \
|
||||
(fmt) == IA_CSS_FRAME_FORMAT_NV16 || (fmt) == IA_CSS_FRAME_FORMAT_NV61 || \
|
||||
(fmt) == IA_CSS_FRAME_FORMAT_UYVY || (fmt) == IA_CSS_FRAME_FORMAT_YUYV || \
|
||||
(fmt) == IA_CSS_FRAME_FORMAT_NV12_16 || (fmt) == IA_CSS_FRAME_FORMAT_NV12_TILEY)
|
||||
|
||||
#define IMAGEFORMAT_YUV_INTERLEAVED(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_UYVY || (fmt) == IA_CSS_FRAME_FORMAT_YUYV)
|
||||
|
||||
#define IMAGEFORMAT_INTERLEAVED(fmt) (IMAGEFORMAT_UV_INTERLEAVED(fmt) || IMAGEFORMAT_IS_RGB_INTERLEAVED(fmt))
|
||||
|
||||
#define IMAGEFORMAT_SUB_SAMPL_420(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_YUV420 || (fmt) == IA_CSS_FRAME_FORMAT_YV12 || \
|
||||
(fmt) == IA_CSS_FRAME_FORMAT_NV12 || (fmt) == IA_CSS_FRAME_FORMAT_NV21 || \
|
||||
(fmt) == IA_CSS_FRAME_FORMAT_NV12_16 || (fmt) == IA_CSS_FRAME_FORMAT_NV12TILEY)
|
||||
|
||||
#define IMAGEFORMAT_SUB_SAMPL_422(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_YUV422 || (fmt) == IA_CSS_FRAME_FORMAT_YV16 || \
|
||||
(fmt) == IA_CSS_FRAME_FORMAT_NV16 || (fmt) == IA_CSS_FRAME_FORMAT_NV61)
|
||||
|
||||
#define IMAGEFORMAT_SUB_SAMPL_444(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_YUV444)
|
||||
|
||||
#define IMAGEFORMAT_UV_SWAPPED(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_NV21 || (fmt) == IA_CSS_FRAME_FORMAT_NV61)
|
||||
|
||||
#define IMAGEFORMAT_IS_RGBA(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_RGBA888)
|
||||
|
||||
#define IMAGEFORMAT_IS_NV11(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_NV11)
|
||||
|
||||
#define IMAGEFORMAT_IS_16BIT(fmt) ((fmt) == IA_CSS_FRAME_FORMAT_YUV420_16 || (fmt) == IA_CSS_FRAME_FORMAT_NV12_16 || (fmt) == IA_CSS_FRAME_FORMAT_YUV422_16)
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/******** GDCAC settings *******/
|
||||
#define GDCAC_BPP ISP_VEC_ELEMBITS /* We use 14 bits per pixel component for the GDCAC mode */
|
||||
#define GDC_INPUT_BLOCK_WIDTH 2 /* Two vectors are needed */
|
||||
#define GDC_OUTPUT_BLOCK_WIDTH 1 /* One vector is produced */
|
||||
|
||||
#if ISP_VEC_NELEMS == 16
|
||||
/* For 16*16 output block, the distortion fits in 13.312 lines __ALWAYS__ */
|
||||
#define GDC_INPUT_BLOCK_HEIGHT 14
|
||||
#elif ISP_VEC_NELEMS == 64
|
||||
/* For 64*64 output block, the distortion fits in 47. lines __ALWAYS__ */
|
||||
#define GDC_INPUT_BLOCK_HEIGHT 48
|
||||
#endif
|
||||
/*******************************/
|
||||
|
||||
|
||||
#define ENABLE_HUP ((isp_input_width - isp_envelope_width) < isp_output_width)
|
||||
#define ENABLE_VUP ((isp_input_height - isp_envelope_height) < isp_output_height)
|
||||
|
||||
#define ISP_INPUT_WIDTH (ENABLE_DS | ENABLE_HUP ? isp_input_width : ISP_INTERNAL_WIDTH)
|
||||
#define ISP_INPUT_HEIGHT (ENABLE_DS | ENABLE_VUP ? isp_input_height : isp_internal_height)
|
||||
|
||||
#define DECI_FACTOR_LOG2 (ISP_FIXED_S3A_DECI_LOG ? ISP_FIXED_S3A_DECI_LOG : isp_deci_log_factor)
|
||||
|
||||
#define ISP_S3ATBL_WIDTH \
|
||||
_ISP_S3ATBL_ISP_WIDTH(_ISP_S3A_ELEMS_ISP_WIDTH((ENABLE_HUP ? ISP_INTERNAL_WIDTH : ISP_INPUT_WIDTH), ISP_LEFT_CROPPING), \
|
||||
DECI_FACTOR_LOG2)
|
||||
#define S3ATBL_WIDTH_BYTES (sizeof(struct ia_css_3a_output) * ISP_S3ATBL_WIDTH)
|
||||
#define S3ATBL_WIDTH_SHORTS (S3ATBL_WIDTH_BYTES / sizeof(short))
|
||||
|
||||
/* should be even?? */
|
||||
#define ISP_UV_OUTPUT_CHUNK_VECS CEIL_DIV(ISP_OUTPUT_CHUNK_VECS, 2)
|
||||
|
||||
|
||||
#if defined(__ISP) || defined(INIT_VARS)
|
||||
|
||||
#define ISP_USE_IF (ISP_INPUT == IA_CSS_BINARY_INPUT_MEMORY ? 0 : \
|
||||
ISP_INPUT == IA_CSS_BINARY_INPUT_SENSOR ? 1 : \
|
||||
isp_online)
|
||||
|
||||
#define ISP_DVS_ENVELOPE_WIDTH 0
|
||||
#define ISP_DVS_ENVELOPE_HEIGHT 0
|
||||
|
||||
#define _ISP_INPUT_WIDTH_VECS _ISP_VECS(ISP_INPUT_WIDTH)
|
||||
|
||||
#if !defined(__ISP) || (VARIABLE_RESOLUTION && !__HOST)
|
||||
#define ISP_INPUT_WIDTH_VECS isp_vectors_per_input_line
|
||||
#else
|
||||
#define ISP_INPUT_WIDTH_VECS _ISP_INPUT_WIDTH_VECS
|
||||
#endif
|
||||
|
||||
#if !defined(__ISP) || VARIABLE_RESOLUTION
|
||||
#define ISP_INTERNAL_WIDTH_VECS isp_vectors_per_line
|
||||
#else
|
||||
#define ISP_INTERNAL_WIDTH_VECS _ISP_INTERNAL_WIDTH_VECS
|
||||
#endif
|
||||
|
||||
#define _ISP_INTERNAL_HEIGHT __ISP_INTERNAL_HEIGHT(isp_output_height, ISP_TOP_CROPPING, ISP_DVS_ENVELOPE_HEIGHT)
|
||||
|
||||
#define ISP_INTERNAL_HEIGHT isp_internal_height
|
||||
|
||||
#define _ISP_INTERNAL_WIDTH __ISP_INTERNAL_WIDTH(ISP_OUTPUT_WIDTH, ISP_DVS_ENVELOPE_WIDTH, \
|
||||
ISP_LEFT_CROPPING, MODE, ISP_C_SUBSAMPLING, \
|
||||
OUTPUT_NUM_CHUNKS, ISP_PIPELINING)
|
||||
|
||||
#define ISP_UV_INTERNAL_WIDTH (ISP_INTERNAL_WIDTH / 2)
|
||||
#define ISP_UV_INTERNAL_HEIGHT (ISP_INTERNAL_HEIGHT / 2)
|
||||
|
||||
#define _ISP_INTERNAL_WIDTH_VECS (_ISP_INTERNAL_WIDTH / ISP_VEC_NELEMS)
|
||||
#define _ISP_UV_INTERNAL_WIDTH_VECS CEIL_DIV(ISP_UV_INTERNAL_WIDTH, ISP_VEC_NELEMS)
|
||||
|
||||
#define ISP_VF_OUTPUT_WIDTH _ISP_VF_OUTPUT_WIDTH(ISP_VF_OUTPUT_WIDTH_VECS)
|
||||
#define ISP_VF_OUTPUT_HEIGHT _ISP_VF_OUTPUT_HEIGHT(isp_output_height, VF_LOG_DOWNSCALE)
|
||||
|
||||
#if defined (__ISP) && !VARIABLE_RESOLUTION
|
||||
#define ISP_INTERNAL_WIDTH _ISP_INTERNAL_WIDTH
|
||||
#define ISP_VF_OUTPUT_WIDTH_VECS _ISP_VF_OUTPUT_WIDTH_VECS
|
||||
#else
|
||||
#define ISP_INTERNAL_WIDTH (VARIABLE_RESOLUTION ? isp_internal_width : _ISP_INTERNAL_WIDTH)
|
||||
#define ISP_VF_OUTPUT_WIDTH_VECS (VARIABLE_RESOLUTION ? isp_vf_output_width_vecs : _ISP_VF_OUTPUT_WIDTH_VECS)
|
||||
#endif
|
||||
|
||||
#if defined(__ISP) && !VARIABLE_RESOLUTION
|
||||
#define ISP_OUTPUT_WIDTH ISP_MAX_OUTPUT_WIDTH
|
||||
#define VF_LOG_DOWNSCALE MAX_VF_LOG_DOWNSCALE
|
||||
#else
|
||||
#define ISP_OUTPUT_WIDTH isp_output_width
|
||||
#define VF_LOG_DOWNSCALE isp_vf_downscale_bits
|
||||
#endif
|
||||
|
||||
#if !defined(__ISP) || VARIABLE_RESOLUTION
|
||||
#define _ISP_MAX_VF_OUTPUT_WIDTH __ISP_MAX_VF_OUTPUT_WIDTH(2*SH_CSS_MAX_VF_WIDTH, ISP_LEFT_CROPPING)
|
||||
#elif defined(MODE) && MODE == IA_CSS_BINARY_MODE_PRIMARY && ISP_OUTPUT_WIDTH > 3328
|
||||
/* Because of vmem issues, should be fixed later */
|
||||
#define _ISP_MAX_VF_OUTPUT_WIDTH (SH_CSS_MAX_VF_WIDTH - 2*ISP_VEC_NELEMS + (ISP_LEFT_CROPPING ? 2 * ISP_VEC_NELEMS : 0))
|
||||
#else
|
||||
#define _ISP_MAX_VF_OUTPUT_WIDTH (ISP_VF_OUTPUT_WIDTH + (ISP_LEFT_CROPPING ? (2 >> VF_LOG_DOWNSCALE) * ISP_VEC_NELEMS : 0))
|
||||
#endif
|
||||
|
||||
#define ISP_MAX_VF_OUTPUT_VECS CEIL_DIV(_ISP_MAX_VF_OUTPUT_WIDTH, ISP_VEC_NELEMS)
|
||||
|
||||
|
||||
|
||||
#define ISP_MIN_STRIPE_WIDTH (ISP_PIPELINING * (1<<_ISP_LOG_VECTOR_STEP(MODE)))
|
||||
|
||||
/******* STRIPING-RELATED MACROS *******/
|
||||
#define NO_STRIPING (ISP_NUM_STRIPES == 1)
|
||||
|
||||
#define ISP_OUTPUT_CHUNK_VECS \
|
||||
(NO_STRIPING ? CEIL_DIV_CHUNKS(ISP_OUTPUT_VECS_EXTRA_CROP, OUTPUT_NUM_CHUNKS) \
|
||||
: ISP_IO_STRIPE_WIDTH_VECS(ISP_OUTPUT_VECS_EXTRA_CROP, ISP_LEFT_PADDING_VECS, ISP_NUM_STRIPES, ISP_MIN_STRIPE_WIDTH) )
|
||||
|
||||
#define VECTORS_PER_LINE \
|
||||
(NO_STRIPING ? ISP_INTERNAL_WIDTH_VECS \
|
||||
: ISP_IO_STRIPE_WIDTH_VECS(ISP_INTERNAL_WIDTH_VECS, ISP_LEFT_PADDING_VECS, ISP_NUM_STRIPES, ISP_MIN_STRIPE_WIDTH) )
|
||||
|
||||
#define VECTORS_PER_INPUT_LINE \
|
||||
(NO_STRIPING ? ISP_INPUT_WIDTH_VECS \
|
||||
: ISP_IO_STRIPE_WIDTH_VECS(ISP_INPUT_WIDTH_VECS, ISP_LEFT_PADDING_VECS, ISP_NUM_STRIPES, ISP_MIN_STRIPE_WIDTH)+_ISP_EXTRA_PADDING_VECS)
|
||||
|
||||
|
||||
#define ISP_MAX_VF_OUTPUT_STRIPE_VECS \
|
||||
(NO_STRIPING ? ISP_MAX_VF_OUTPUT_VECS \
|
||||
: CEIL_MUL(CEIL_DIV(ISP_MAX_VF_OUTPUT_VECS, ISP_NUM_STRIPES), 2))
|
||||
#define _ISP_VF_OUTPUT_WIDTH_VECS \
|
||||
(NO_STRIPING ? __ISP_VF_OUTPUT_WIDTH_VECS(ISP_OUTPUT_WIDTH, VF_LOG_DOWNSCALE) \
|
||||
: __ISP_VF_OUTPUT_WIDTH_VECS(CEIL_DIV(ISP_OUTPUT_WIDTH, ISP_NUM_STRIPES), VF_LOG_DOWNSCALE))
|
||||
|
||||
#define ISP_IO_STRIPE_WIDTH_VECS(width, padding, num_stripes, min_stripe) \
|
||||
MAX(CEIL_MUL(padding + CEIL_DIV(width-padding, num_stripes) \
|
||||
, 2) \
|
||||
, min_stripe)
|
||||
////////// INPUT & INTERNAL
|
||||
/* should be even */
|
||||
#define INPUT_NUM_CHUNKS OUTPUT_NUM_CHUNKS
|
||||
|
||||
#define INPUT_VECTORS_PER_CHUNK CEIL_DIV_CHUNKS(VECTORS_PER_INPUT_LINE, INPUT_NUM_CHUNKS)
|
||||
|
||||
/* only for ISP code, will be removed: */
|
||||
#define VECTORS_PER_FULL_LINE ISP_INTERNAL_WIDTH_VECS
|
||||
#define VECTORS_PER_INPUT_FULL_LINE ISP_INPUT_WIDTH_VECS
|
||||
|
||||
////////// OUTPUT
|
||||
/* should at least even and also multiple of vf scaling */
|
||||
#define ISP_OUTPUT_VECS_EXTRA_CROP CEIL_DIV(ISP_OUTPUT_WIDTH_EXTRA_CROP, ISP_VEC_NELEMS)
|
||||
|
||||
/* Output is decoupled from input */
|
||||
#define ISP_OUTPUT_WIDTH_EXTRA_CROP CEIL_MUL(CEIL_MUL((ENABLE_DVS_ENVELOPE ? ISP_OUTPUT_WIDTH : ISP_INTERNAL_WIDTH), 2*ISP_VEC_NELEMS), \
|
||||
ISP_C_SUBSAMPLING * OUTPUT_NUM_CHUNKS * HIVE_ISP_DDR_WORD_BYTES)
|
||||
|
||||
#define ISP_MAX_VF_OUTPUT_CHUNK_VECS \
|
||||
(NO_CHUNKING ? ISP_MAX_VF_OUTPUT_STRIPE_VECS \
|
||||
: 2*CEIL_DIV(ISP_MAX_VF_OUTPUT_STRIPE_VECS, 2*OUTPUT_NUM_CHUNKS))
|
||||
|
||||
#define OUTPUT_VECTORS_PER_CHUNK CEIL_DIV_CHUNKS(VECTORS_PER_LINE,OUTPUT_NUM_CHUNKS)
|
||||
|
||||
/* should be even?? */
|
||||
#define OUTPUT_C_VECTORS_PER_CHUNK CEIL_DIV(OUTPUT_VECTORS_PER_CHUNK, 2)
|
||||
|
||||
#ifndef ISP2401
|
||||
/**** SCTBL defs *******/
|
||||
#define ISP_SCTBL_HEIGHT \
|
||||
_ISP_SCTBL_HEIGHT(ISP_INPUT_HEIGHT, DECI_FACTOR_LOG2)
|
||||
|
||||
#endif
|
||||
/**** UDS defs *********/
|
||||
#define UDS_DMACH_STRIDE_B_IN_Y (( ISP_INTERNAL_WIDTH /BITS8_ELEMENTS_PER_XMEM_ADDR)*HIVE_ISP_DDR_WORD_BYTES)
|
||||
#define UDS_DMACH_STRIDE_B_IN_C (((ISP_INTERNAL_WIDTH/2)/BITS8_ELEMENTS_PER_XMEM_ADDR)*HIVE_ISP_DDR_WORD_BYTES)
|
||||
|
||||
#else /* defined(__ISP) || defined(INIT_VARS) */
|
||||
|
||||
#define ISP_INTERNAL_WIDTH isp_internal_width
|
||||
#define ISP_INTERNAL_HEIGHT isp_internal_height
|
||||
|
||||
#endif /* defined(__ISP) || defined(INIT_VARS) */
|
||||
|
||||
#endif /* _COMMON_ISP_EXPRS_H_ */
|
||||
|
@ -1,126 +0,0 @@
|
||||
/*
|
||||
* Support for Medifield PNW Camera Imaging ISP subsystem.
|
||||
*
|
||||
* Copyright (c) 2010 Intel Corporation. All Rights Reserved.
|
||||
*
|
||||
* Copyright (c) 2010 Silicon Hive www.siliconhive.com.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License version
|
||||
* 2 as published by the Free Software Foundation.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __HMM_BO_DEV_H__
|
||||
#define __HMM_BO_DEV_H__
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/mutex.h>
|
||||
#include "mmu/isp_mmu.h"
|
||||
#include "hmm/hmm_common.h"
|
||||
#include "hmm/hmm_vm.h"
|
||||
#include "ia_css_types.h"
|
||||
|
||||
#define check_bodev_null_return(bdev, exp) \
|
||||
check_null_return(bdev, exp, \
|
||||
"NULL hmm_bo_device.\n")
|
||||
|
||||
#define check_bodev_null_return_void(bdev) \
|
||||
check_null_return_void(bdev, \
|
||||
"NULL hmm_bo_device.\n")
|
||||
|
||||
#define HMM_BO_DEVICE_INITED 0x1
|
||||
|
||||
#define HMM_BO_CACHE_SIZE 2
|
||||
|
||||
|
||||
struct hmm_buffer_object;
|
||||
|
||||
struct hmm_bo_device {
|
||||
/* isp_mmu provides lock itself */
|
||||
struct isp_mmu mmu;
|
||||
|
||||
/* hmm_vm provides lock itself */
|
||||
struct hmm_vm vaddr_space;
|
||||
|
||||
struct list_head free_bo_list;
|
||||
struct list_head active_bo_list;
|
||||
|
||||
/* list lock is used to protect both of the buffer object lists */
|
||||
spinlock_t list_lock;
|
||||
#ifdef CONFIG_ION
|
||||
struct ion_client *iclient;
|
||||
#endif
|
||||
int flag;
|
||||
};
|
||||
|
||||
int hmm_bo_device_init(struct hmm_bo_device *bdev,
|
||||
struct isp_mmu_client *mmu_driver,
|
||||
unsigned int vaddr_start, unsigned int size);
|
||||
|
||||
/*
|
||||
* clean up all hmm_bo_device related things.
|
||||
*/
|
||||
void hmm_bo_device_exit(struct hmm_bo_device *bdev);
|
||||
|
||||
/*
|
||||
* whether the bo device is inited or not.
|
||||
*/
|
||||
int hmm_bo_device_inited(struct hmm_bo_device *bdev);
|
||||
|
||||
/*
|
||||
* find the buffer object with virtual address vaddr.
|
||||
* return NULL if no such buffer object found.
|
||||
*/
|
||||
struct hmm_buffer_object *hmm_bo_device_search_start(
|
||||
struct hmm_bo_device *bdev, ia_css_ptr vaddr);
|
||||
|
||||
/*
|
||||
* find the buffer object with virtual address vaddr.
|
||||
* return NULL if no such buffer object found.
|
||||
*/
|
||||
struct hmm_buffer_object *hmm_bo_device_search_in_range(
|
||||
struct hmm_bo_device *bdev, ia_css_ptr vaddr);
|
||||
|
||||
/*
|
||||
* find the buffer object with kernel virtual address vaddr.
|
||||
* return NULL if no such buffer object found.
|
||||
*/
|
||||
struct hmm_buffer_object *hmm_bo_device_search_vmap_start(
|
||||
struct hmm_bo_device *bdev, const void *vaddr);
|
||||
|
||||
/*
|
||||
* find a buffer object with pgnr pages from free_bo_list and
|
||||
* activate it (remove from free_bo_list and add to
|
||||
* active_bo_list)
|
||||
*
|
||||
* return NULL if no such buffer object found.
|
||||
*/
|
||||
struct hmm_buffer_object *hmm_bo_device_get_bo(
|
||||
struct hmm_bo_device *bdev, unsigned int pgnr);
|
||||
|
||||
/*
|
||||
* destroy all buffer objects in the free_bo_list.
|
||||
*/
|
||||
void hmm_bo_device_destroy_free_bo_list(struct hmm_bo_device *bdev);
|
||||
/*
|
||||
* destroy buffer object with start virtual address vaddr.
|
||||
*/
|
||||
void hmm_bo_device_destroy_free_bo_addr(struct hmm_bo_device *bdev,
|
||||
ia_css_ptr vaddr);
|
||||
/*
|
||||
* destroy all buffer objects with pgnr pages.
|
||||
*/
|
||||
void hmm_bo_device_destroy_free_bo_size(struct hmm_bo_device *bdev,
|
||||
unsigned int pgnr);
|
||||
|
||||
#endif
|
@ -1,72 +0,0 @@
|
||||
/*
|
||||
* Support for Medifield PNW Camera Imaging ISP subsystem.
|
||||
*
|
||||
* Copyright (c) 2010 Intel Corporation. All Rights Reserved.
|
||||
*
|
||||
* Copyright (c) 2010 Silicon Hive www.siliconhive.com.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License version
|
||||
* 2 as published by the Free Software Foundation.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*
|
||||
*/
|
||||
#ifndef SH_MMU_H_
|
||||
#define SH_MMU_H_
|
||||
|
||||
|
||||
#include <sh_css.h>
|
||||
|
||||
#include "mmu/isp_mmu.h"
|
||||
|
||||
|
||||
/*
|
||||
* include SH header file here
|
||||
*/
|
||||
|
||||
/*
|
||||
* set page directory base address (physical address).
|
||||
*
|
||||
* must be provided.
|
||||
*/
|
||||
static int sh_set_pd_base(struct isp_mmu *mmu,
|
||||
unsigned int phys)
|
||||
{
|
||||
sh_css_mmu_set_page_table_base_address((void *)phys);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* callback to flush tlb.
|
||||
*
|
||||
* tlb_flush_range will at least flush TLBs containing
|
||||
* address mapping from addr to addr + size.
|
||||
*
|
||||
* tlb_flush_all will flush all TLBs.
|
||||
*
|
||||
* tlb_flush_all is must be provided. if tlb_flush_range is
|
||||
* not valid, it will set to tlb_flush_all by default.
|
||||
*/
|
||||
static void sh_tlb_flush(struct isp_mmu *mmu)
|
||||
{
|
||||
sh_css_mmu_invalidate_cache();
|
||||
}
|
||||
|
||||
static struct isp_mmu_driver sh_mmu_driver = {
|
||||
.name = "Silicon Hive ISP3000 MMU",
|
||||
.pte_valid_mask = 0x1,
|
||||
.set_pd_base = sh_set_pd_base,
|
||||
.tlb_flush_all = sh_tlb_flush,
|
||||
};
|
||||
|
||||
#define ISP_VM_START 0x0
|
||||
#define ISP_VM_SIZE (1 << 30) /* 1G address space */
|
||||
#define ISP_PTR_NULL NULL
|
||||
|
||||
#endif /* SH_MMU_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user