linux/drivers/staging/media/atomisp/pci/atomisp_compat_css20.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Support for Clovertrail PNW Camera Imaging ISP subsystem.
   4 *
   5 * Copyright (c) 2013 Intel Corporation. All Rights Reserved.
   6 *
   7 * This program is free software; you can redistribute it and/or
   8 * modify it under the terms of the GNU General Public License version
   9 * 2 as published by the Free Software Foundation.
  10 *
  11 * This program is distributed in the hope that it will be useful,
  12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 * GNU General Public License for more details.
  15 *
  16 *
  17 */
  18
  19#ifndef __ATOMISP_COMPAT_CSS20_H__
  20#define __ATOMISP_COMPAT_CSS20_H__
  21
  22#include <media/v4l2-mediabus.h>
  23
  24#include "ia_css.h"
  25#include "ia_css_types.h"
  26#include "ia_css_acc_types.h"
  27#include "sh_css_legacy.h"
  28
  29#define ATOMISP_CSS2_PIPE_MAX   2
  30#define ATOMISP_CSS2_NUM_OFFLINE_INIT_CONTINUOUS_FRAMES     3
  31#define ATOMISP_CSS2_NUM_OFFLINE_INIT_CONTINUOUS_FRAMES_LOCK_EN     4
  32#define ATOMISP_CSS2_NUM_DVS_FRAME_DELAY     2
  33
  34#define CSS_MIPI_FRAME_BUFFER_SIZE_1    0x60000
  35#define CSS_MIPI_FRAME_BUFFER_SIZE_2    0x80000
  36
  37struct atomisp_device;
  38struct atomisp_sub_device;
  39
  40#define MAX_STREAMS_PER_CHANNEL 2
  41
  42/*
  43 * These are used to indicate the css stream state, corresponding
  44 * stream handling can be done via judging the different state.
  45 */
  46enum atomisp_css_stream_state {
  47        CSS_STREAM_UNINIT,
  48        CSS_STREAM_CREATED,
  49        CSS_STREAM_STARTED,
  50        CSS_STREAM_STOPPED,
  51};
  52
  53/*
  54 *  Sensor of external ISP can send multiple steams with different mipi data
  55 * type in the same virtual channel. This information needs to come from the
  56 * sensor or external ISP
  57 */
  58struct atomisp_css_isys_config_info {
  59        unsigned int input_format;
  60        unsigned int width;
  61        unsigned int height;
  62};
  63
  64struct atomisp_stream_env {
  65        struct ia_css_stream *stream;
  66        struct ia_css_stream_config stream_config;
  67        struct ia_css_stream_info stream_info;
  68        struct ia_css_pipe *pipes[IA_CSS_PIPE_ID_NUM];
  69        struct ia_css_pipe *multi_pipes[IA_CSS_PIPE_ID_NUM];
  70        struct ia_css_pipe_config pipe_configs[IA_CSS_PIPE_ID_NUM];
  71        struct ia_css_pipe_extra_config pipe_extra_configs[IA_CSS_PIPE_ID_NUM];
  72        bool update_pipe[IA_CSS_PIPE_ID_NUM];
  73        enum atomisp_css_stream_state stream_state;
  74        struct ia_css_stream *acc_stream;
  75        enum atomisp_css_stream_state acc_stream_state;
  76        struct ia_css_stream_config acc_stream_config;
  77        unsigned int ch_id; /* virtual channel ID */
  78        unsigned int isys_configs;
  79        struct atomisp_css_isys_config_info isys_info[MAX_STREAMS_PER_CHANNEL];
  80};
  81
  82struct atomisp_css_env {
  83        struct ia_css_env isp_css_env;
  84        struct ia_css_fw isp_css_fw;
  85};
  86
  87struct atomisp_s3a_buf {
  88        struct ia_css_isp_3a_statistics *s3a_data;
  89        struct ia_css_isp_3a_statistics_map *s3a_map;
  90        struct list_head list;
  91};
  92
  93struct atomisp_dis_buf {
  94        struct ia_css_isp_dvs_statistics *dis_data;
  95        struct ia_css_isp_dvs_statistics_map *dvs_map;
  96        struct list_head list;
  97};
  98
  99struct atomisp_css_buffer {
 100        struct ia_css_buffer css_buffer;
 101};
 102
 103struct atomisp_css_event {
 104        enum ia_css_pipe_id pipe;
 105        struct ia_css_event event;
 106};
 107
 108void atomisp_css_set_macc_config(struct atomisp_sub_device *asd,
 109                                 struct ia_css_macc_config *macc_config);
 110
 111void atomisp_css_set_ecd_config(struct atomisp_sub_device *asd,
 112                                struct ia_css_ecd_config *ecd_config);
 113
 114void atomisp_css_set_ynr_config(struct atomisp_sub_device *asd,
 115                                struct ia_css_ynr_config *ynr_config);
 116
 117void atomisp_css_set_fc_config(struct atomisp_sub_device *asd,
 118                               struct ia_css_fc_config *fc_config);
 119
 120void atomisp_css_set_aa_config(struct atomisp_sub_device *asd,
 121                               struct ia_css_aa_config *aa_config);
 122
 123void atomisp_css_set_baa_config(struct atomisp_sub_device *asd,
 124                                struct ia_css_aa_config *baa_config);
 125
 126void atomisp_css_set_anr_config(struct atomisp_sub_device *asd,
 127                                struct ia_css_anr_config *anr_config);
 128
 129void atomisp_css_set_xnr_config(struct atomisp_sub_device *asd,
 130                                struct ia_css_xnr_config *xnr_config);
 131
 132void atomisp_css_set_cnr_config(struct atomisp_sub_device *asd,
 133                                struct ia_css_cnr_config *cnr_config);
 134
 135void atomisp_css_set_ctc_config(struct atomisp_sub_device *asd,
 136                                struct ia_css_ctc_config *ctc_config);
 137
 138void atomisp_css_set_yuv2rgb_cc_config(struct atomisp_sub_device *asd,
 139                                       struct ia_css_cc_config *yuv2rgb_cc_config);
 140
 141void atomisp_css_set_rgb2yuv_cc_config(struct atomisp_sub_device *asd,
 142                                       struct ia_css_cc_config *rgb2yuv_cc_config);
 143
 144void atomisp_css_set_anr_thres(struct atomisp_sub_device *asd,
 145                               struct ia_css_anr_thres *anr_thres);
 146
 147int atomisp_css_load_firmware(struct atomisp_device *isp);
 148
 149void atomisp_css_set_dvs_6axis(struct atomisp_sub_device *asd,
 150                               struct ia_css_dvs_6axis_config *dvs_6axis);
 151
 152int atomisp_css_debug_dump_isp_binary(void);
 153
 154int atomisp_css_dump_sp_raw_copy_linecount(bool reduced);
 155
 156int atomisp_css_dump_blob_infor(struct atomisp_device *isp);
 157
 158void atomisp_css_set_isp_config_id(struct atomisp_sub_device *asd,
 159                                   uint32_t isp_config_id);
 160
 161void atomisp_css_set_isp_config_applied_frame(struct atomisp_sub_device *asd,
 162        struct ia_css_frame *output_frame);
 163
 164int atomisp_get_css_dbgfunc(void);
 165
 166int atomisp_set_css_dbgfunc(struct atomisp_device *isp, int opt);
 167struct ia_css_dvs_grid_info *atomisp_css_get_dvs_grid_info(
 168    struct ia_css_grid_info *grid_info);
 169#endif
 170