linux/drivers/staging/media/atomisp/pci/atomisp_compat_ioctl32.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Support for Intel 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#ifndef __ATOMISP_COMPAT_IOCTL32_H__
  19#define __ATOMISP_COMPAT_IOCTL32_H__
  20
  21#include <linux/compat.h>
  22#include <linux/videodev2.h>
  23
  24#include "atomisp_compat.h"
  25
  26struct atomisp_histogram32 {
  27        unsigned int num_elements;
  28        compat_uptr_t data;
  29};
  30
  31struct atomisp_dvs2_stat_types32 {
  32        compat_uptr_t odd_real; /** real part of the odd statistics*/
  33        compat_uptr_t odd_imag; /** imaginary part of the odd statistics*/
  34        compat_uptr_t even_real;/** real part of the even statistics*/
  35        compat_uptr_t even_imag;/** imaginary part of the even statistics*/
  36};
  37
  38struct atomisp_dvs2_coef_types32 {
  39        compat_uptr_t odd_real; /** real part of the odd coefficients*/
  40        compat_uptr_t odd_imag; /** imaginary part of the odd coefficients*/
  41        compat_uptr_t even_real;/** real part of the even coefficients*/
  42        compat_uptr_t even_imag;/** imaginary part of the even coefficients*/
  43};
  44
  45struct atomisp_dvs2_statistics32 {
  46        struct atomisp_dvs_grid_info grid_info;
  47        struct atomisp_dvs2_stat_types32 hor_prod;
  48        struct atomisp_dvs2_stat_types32 ver_prod;
  49};
  50
  51struct atomisp_dis_statistics32 {
  52        struct atomisp_dvs2_statistics32 dvs2_stat;
  53        u32 exp_id;
  54};
  55
  56struct atomisp_dis_coefficients32 {
  57        struct atomisp_dvs_grid_info grid_info;
  58        struct atomisp_dvs2_coef_types32 hor_coefs;
  59        struct atomisp_dvs2_coef_types32 ver_coefs;
  60};
  61
  62struct atomisp_3a_statistics32 {
  63        struct atomisp_grid_info  grid_info;
  64        compat_uptr_t data;
  65        compat_uptr_t rgby_data;
  66        u32 exp_id;
  67        u32 isp_config_id;
  68};
  69
  70struct atomisp_metadata_with_type32 {
  71        /* to specify which type of metadata to get */
  72        enum atomisp_metadata_type type;
  73        compat_uptr_t data;
  74        u32 width;
  75        u32 height;
  76        u32 stride; /* in bytes */
  77        u32 exp_id; /* exposure ID */
  78        compat_uptr_t effective_width;
  79};
  80
  81struct atomisp_metadata32 {
  82        compat_uptr_t data;
  83        u32 width;
  84        u32 height;
  85        u32 stride;
  86        u32 exp_id;
  87        compat_uptr_t effective_width;
  88};
  89
  90struct atomisp_morph_table32 {
  91        unsigned int enabled;
  92        unsigned int height;
  93        unsigned int width;     /* number of valid elements per line */
  94        compat_uptr_t coordinates_x[ATOMISP_MORPH_TABLE_NUM_PLANES];
  95        compat_uptr_t coordinates_y[ATOMISP_MORPH_TABLE_NUM_PLANES];
  96};
  97
  98struct v4l2_framebuffer32 {
  99        __u32                   capability;
 100        __u32                   flags;
 101        compat_uptr_t           base;
 102        struct v4l2_pix_format  fmt;
 103};
 104
 105struct atomisp_overlay32 {
 106        /* the frame containing the overlay data The overlay frame width should
 107         * be the multiples of 2*ISP_VEC_NELEMS. The overlay frame height
 108         * should be the multiples of 2.
 109         */
 110        compat_uptr_t frame;
 111        /* Y value of overlay background */
 112        unsigned char bg_y;
 113        /* U value of overlay background */
 114        char bg_u;
 115        /* V value of overlay background */
 116        char bg_v;
 117        /* the blending percent of input data for Y subpixels */
 118        unsigned char blend_input_perc_y;
 119        /* the blending percent of input data for U subpixels */
 120        unsigned char blend_input_perc_u;
 121        /* the blending percent of input data for V subpixels */
 122        unsigned char blend_input_perc_v;
 123        /* the blending percent of overlay data for Y subpixels */
 124        unsigned char blend_overlay_perc_y;
 125        /* the blending percent of overlay data for U subpixels */
 126        unsigned char blend_overlay_perc_u;
 127        /* the blending percent of overlay data for V subpixels */
 128        unsigned char blend_overlay_perc_v;
 129        /* the overlay start x pixel position on output frame It should be the
 130           multiples of 2*ISP_VEC_NELEMS. */
 131        unsigned int overlay_start_x;
 132        /* the overlay start y pixel position on output frame It should be the
 133           multiples of 2. */
 134        unsigned int overlay_start_y;
 135};
 136
 137struct atomisp_calibration_group32 {
 138        unsigned int size;
 139        unsigned int type;
 140        compat_uptr_t calb_grp_values;
 141};
 142
 143struct atomisp_acc_fw_load32 {
 144        unsigned int size;
 145        unsigned int fw_handle;
 146        compat_uptr_t data;
 147};
 148
 149struct atomisp_acc_fw_arg32 {
 150        unsigned int fw_handle;
 151        unsigned int index;
 152        compat_uptr_t value;
 153        compat_size_t size;
 154};
 155
 156struct v4l2_private_int_data32 {
 157        __u32 size;
 158        compat_uptr_t data;
 159        __u32 reserved[2];
 160};
 161
 162struct atomisp_shading_table32 {
 163        __u32 enable;
 164        __u32 sensor_width;
 165        __u32 sensor_height;
 166        __u32 width;
 167        __u32 height;
 168        __u32 fraction_bits;
 169
 170        compat_uptr_t data[ATOMISP_NUM_SC_COLORS];
 171};
 172
 173struct atomisp_acc_map32 {
 174        __u32 flags;                    /* Flags, see list below */
 175        __u32 length;                   /* Length of data in bytes */
 176        compat_uptr_t user_ptr;         /* Pointer into user space */
 177        compat_ulong_t css_ptr;         /* Pointer into CSS address space */
 178        __u32 reserved[4];              /* Set to zero */
 179};
 180
 181struct atomisp_acc_s_mapped_arg32 {
 182        unsigned int fw_handle;
 183        __u32 memory;                   /* one of enum atomisp_acc_memory */
 184        compat_size_t length;
 185        compat_ulong_t css_ptr;
 186};
 187
 188struct atomisp_parameters32 {
 189        compat_uptr_t wb_config;  /* White Balance config */
 190        compat_uptr_t cc_config;  /* Color Correction config */
 191        compat_uptr_t tnr_config; /* Temporal Noise Reduction */
 192        compat_uptr_t ecd_config; /* Eigen Color Demosaicing */
 193        compat_uptr_t ynr_config; /* Y(Luma) Noise Reduction */
 194        compat_uptr_t fc_config;  /* Fringe Control */
 195        compat_uptr_t formats_config;  /* Formats Control */
 196        compat_uptr_t cnr_config; /* Chroma Noise Reduction */
 197        compat_uptr_t macc_config;  /* MACC */
 198        compat_uptr_t ctc_config; /* Chroma Tone Control */
 199        compat_uptr_t aa_config;  /* Anti-Aliasing */
 200        compat_uptr_t baa_config;  /* Anti-Aliasing */
 201        compat_uptr_t ce_config;
 202        compat_uptr_t dvs_6axis_config;
 203        compat_uptr_t ob_config;  /* Objective Black config */
 204        compat_uptr_t dp_config;  /* Dead Pixel config */
 205        compat_uptr_t nr_config;  /* Noise Reduction config */
 206        compat_uptr_t ee_config;  /* Edge Enhancement config */
 207        compat_uptr_t de_config;  /* Demosaic config */
 208        compat_uptr_t gc_config;  /* Gamma Correction config */
 209        compat_uptr_t anr_config; /* Advanced Noise Reduction */
 210        compat_uptr_t a3a_config; /* 3A Statistics config */
 211        compat_uptr_t xnr_config; /* eXtra Noise Reduction */
 212        compat_uptr_t dz_config;  /* Digital Zoom */
 213        compat_uptr_t yuv2rgb_cc_config; /* Color
 214                                                        Correction config */
 215        compat_uptr_t rgb2yuv_cc_config; /* Color
 216                                                        Correction config */
 217        compat_uptr_t macc_table;
 218        compat_uptr_t gamma_table;
 219        compat_uptr_t ctc_table;
 220        compat_uptr_t xnr_table;
 221        compat_uptr_t r_gamma_table;
 222        compat_uptr_t g_gamma_table;
 223        compat_uptr_t b_gamma_table;
 224        compat_uptr_t motion_vector; /* For 2-axis DVS */
 225        compat_uptr_t shading_table;
 226        compat_uptr_t morph_table;
 227        compat_uptr_t dvs_coefs; /* DVS 1.0 coefficients */
 228        compat_uptr_t dvs2_coefs; /* DVS 2.0 coefficients */
 229        compat_uptr_t capture_config;
 230        compat_uptr_t anr_thres;
 231
 232        compat_uptr_t   lin_2500_config;       /* Skylake: Linearization config */
 233        compat_uptr_t   obgrid_2500_config;    /* Skylake: OBGRID config */
 234        compat_uptr_t   bnr_2500_config;       /* Skylake: bayer denoise config */
 235        compat_uptr_t   shd_2500_config;       /* Skylake: shading config */
 236        compat_uptr_t   dm_2500_config;        /* Skylake: demosaic config */
 237        compat_uptr_t   rgbpp_2500_config;     /* Skylake: RGBPP config */
 238        compat_uptr_t   dvs_stat_2500_config;  /* Skylake: DVS STAT config */
 239        compat_uptr_t   lace_stat_2500_config; /* Skylake: LACE STAT config */
 240        compat_uptr_t   yuvp1_2500_config;     /* Skylake: yuvp1 config */
 241        compat_uptr_t   yuvp2_2500_config;     /* Skylake: yuvp2 config */
 242        compat_uptr_t   tnr_2500_config;       /* Skylake: TNR config */
 243        compat_uptr_t   dpc_2500_config;       /* Skylake: DPC config */
 244        compat_uptr_t   awb_2500_config;       /* Skylake: auto white balance config */
 245        compat_uptr_t
 246        awb_fr_2500_config;    /* Skylake: auto white balance filter response config */
 247        compat_uptr_t   anr_2500_config;       /* Skylake: ANR config */
 248        compat_uptr_t   af_2500_config;        /* Skylake: auto focus config */
 249        compat_uptr_t   ae_2500_config;        /* Skylake: auto exposure config */
 250        compat_uptr_t   bds_2500_config;       /* Skylake: bayer downscaler config */
 251        compat_uptr_t
 252        dvs_2500_config;       /* Skylake: digital video stabilization config */
 253        compat_uptr_t   res_mgr_2500_config;
 254
 255        /*
 256         * Output frame pointer the config is to be applied to (optional),
 257         * set to NULL to make this config is applied as global.
 258         */
 259        compat_uptr_t   output_frame;
 260        /*
 261         * Unique ID to track which config was actually applied to a particular
 262         * frame, driver will send this id back with output frame together.
 263         */
 264        u32     isp_config_id;
 265        u32     per_frame_setting;
 266};
 267
 268struct atomisp_acc_fw_load_to_pipe32 {
 269        __u32 flags;                    /* Flags, see below for valid values */
 270        unsigned int fw_handle;         /* Handle, filled by kernel. */
 271        __u32 size;                     /* Firmware binary size */
 272        compat_uptr_t data;             /* Pointer to firmware */
 273        __u32 type;                     /* Binary type */
 274        __u32 reserved[3];              /* Set to zero */
 275};
 276
 277struct atomisp_dvs_6axis_config32 {
 278        u32 exp_id;
 279        u32 width_y;
 280        u32 height_y;
 281        u32 width_uv;
 282        u32 height_uv;
 283        compat_uptr_t xcoords_y;
 284        compat_uptr_t ycoords_y;
 285        compat_uptr_t xcoords_uv;
 286        compat_uptr_t ycoords_uv;
 287};
 288
 289struct atomisp_sensor_ae_bracketing_lut32 {
 290        compat_uptr_t lut;
 291        unsigned int lut_size;
 292};
 293
 294#define ATOMISP_IOC_G_HISTOGRAM32 \
 295        _IOWR('v', BASE_VIDIOC_PRIVATE + 3, struct atomisp_histogram32)
 296#define ATOMISP_IOC_S_HISTOGRAM32 \
 297        _IOW('v', BASE_VIDIOC_PRIVATE + 3, struct atomisp_histogram32)
 298
 299#define ATOMISP_IOC_G_DIS_STAT32 \
 300        _IOWR('v', BASE_VIDIOC_PRIVATE + 6, struct atomisp_dis_statistics32)
 301#define ATOMISP_IOC_S_DIS_COEFS32 \
 302        _IOW('v', BASE_VIDIOC_PRIVATE + 6, struct atomisp_dis_coefficients32)
 303
 304#define ATOMISP_IOC_S_DIS_VECTOR32 \
 305        _IOW('v', BASE_VIDIOC_PRIVATE + 6, struct atomisp_dvs_6axis_config32)
 306
 307#define ATOMISP_IOC_G_3A_STAT32 \
 308        _IOWR('v', BASE_VIDIOC_PRIVATE + 7, struct atomisp_3a_statistics32)
 309
 310#define ATOMISP_IOC_G_ISP_GDC_TAB32 \
 311        _IOR('v', BASE_VIDIOC_PRIVATE + 10, struct atomisp_morph_table32)
 312#define ATOMISP_IOC_S_ISP_GDC_TAB32 \
 313        _IOW('v', BASE_VIDIOC_PRIVATE + 10, struct atomisp_morph_table32)
 314
 315#define ATOMISP_IOC_S_ISP_FPN_TABLE32 \
 316        _IOW('v', BASE_VIDIOC_PRIVATE + 17, struct v4l2_framebuffer32)
 317
 318#define ATOMISP_IOC_G_ISP_OVERLAY32 \
 319        _IOWR('v', BASE_VIDIOC_PRIVATE + 18, struct atomisp_overlay32)
 320#define ATOMISP_IOC_S_ISP_OVERLAY32 \
 321        _IOW('v', BASE_VIDIOC_PRIVATE + 18, struct atomisp_overlay32)
 322
 323#define ATOMISP_IOC_G_SENSOR_CALIBRATION_GROUP32 \
 324        _IOWR('v', BASE_VIDIOC_PRIVATE + 22, struct atomisp_calibration_group32)
 325
 326#define ATOMISP_IOC_ACC_LOAD32 \
 327        _IOWR('v', BASE_VIDIOC_PRIVATE + 24, struct atomisp_acc_fw_load32)
 328
 329#define ATOMISP_IOC_ACC_S_ARG32 \
 330        _IOW('v', BASE_VIDIOC_PRIVATE + 24, struct atomisp_acc_fw_arg32)
 331
 332#define ATOMISP_IOC_ACC_DESTAB32 \
 333        _IOW('v', BASE_VIDIOC_PRIVATE + 25, struct atomisp_acc_fw_arg32)
 334
 335#define ATOMISP_IOC_G_SENSOR_PRIV_INT_DATA32 \
 336        _IOWR('v', BASE_VIDIOC_PRIVATE + 26, struct v4l2_private_int_data32)
 337
 338#define ATOMISP_IOC_S_ISP_SHD_TAB32 \
 339        _IOWR('v', BASE_VIDIOC_PRIVATE + 27, struct atomisp_shading_table32)
 340
 341#define ATOMISP_IOC_G_MOTOR_PRIV_INT_DATA32 \
 342        _IOWR('v', BASE_VIDIOC_PRIVATE + 29, struct v4l2_private_int_data32)
 343
 344#define ATOMISP_IOC_ACC_MAP32 \
 345        _IOWR('v', BASE_VIDIOC_PRIVATE + 30, struct atomisp_acc_map32)
 346
 347#define ATOMISP_IOC_ACC_UNMAP32 \
 348        _IOW('v', BASE_VIDIOC_PRIVATE + 30, struct atomisp_acc_map32)
 349
 350#define ATOMISP_IOC_ACC_S_MAPPED_ARG32 \
 351        _IOW('v', BASE_VIDIOC_PRIVATE + 30, struct atomisp_acc_s_mapped_arg32)
 352
 353#define ATOMISP_IOC_ACC_LOAD_TO_PIPE32 \
 354        _IOWR('v', BASE_VIDIOC_PRIVATE + 31, struct atomisp_acc_fw_load_to_pipe32)
 355
 356#define ATOMISP_IOC_S_PARAMETERS32 \
 357        _IOW('v', BASE_VIDIOC_PRIVATE + 32, struct atomisp_parameters32)
 358
 359#define ATOMISP_IOC_G_METADATA32 \
 360        _IOWR('v', BASE_VIDIOC_PRIVATE + 34, struct atomisp_metadata32)
 361
 362#define ATOMISP_IOC_G_METADATA_BY_TYPE32 \
 363        _IOWR('v', BASE_VIDIOC_PRIVATE + 34, struct atomisp_metadata_with_type32)
 364
 365#define ATOMISP_IOC_S_SENSOR_AE_BRACKETING_LUT32 \
 366        _IOW('v', BASE_VIDIOC_PRIVATE + 43, struct atomisp_sensor_ae_bracketing_lut32)
 367
 368#endif /* __ATOMISP_COMPAT_IOCTL32_H__ */
 369