drivers/staging/media/atomisp/pci/gdc_v2_defs.h

Source file repositories/reference/linux-study-clean/drivers/staging/media/atomisp/pci/gdc_v2_defs.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/media/atomisp/pci/gdc_v2_defs.h
Extension
.h
Size
6356 bytes
Lines
156
Domain
Driver Families
Bucket
drivers/staging
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef HRT_GDC_v2_defs_h_
#define HRT_GDC_v2_defs_h_

#define HRT_GDC_IS_V2

#define HRT_GDC_N                     1024 /* Top-level design constant, equal to the number of entries in the LUT      */
#define HRT_GDC_FRAC_BITS               10 /* Number of fractional bits in the GDC block, driven by the size of the LUT */

#define HRT_GDC_BLI_FRAC_BITS            4 /* Number of fractional bits for the bi-linear interpolation type            */
#define HRT_GDC_BLI_COEF_ONE             BIT(HRT_GDC_BLI_FRAC_BITS)

#define HRT_GDC_BCI_COEF_BITS           14 /* 14 bits per coefficient                                                   */
#define HRT_GDC_BCI_COEF_ONE             (1 << (HRT_GDC_BCI_COEF_BITS - 2))  /* We represent signed 10 bit coefficients.  */
/* The supported range is [-256, .., +256]      */
/* in 14-bit signed notation,                   */
/* We need all ten bits (MSB must be zero).     */
/* -s is inserted to solve this issue, and      */
/* therefore "1" is equal to +256.              */
#define HRT_GDC_BCI_COEF_MASK            ((1 << HRT_GDC_BCI_COEF_BITS) - 1)

#define HRT_GDC_LUT_BYTES                (HRT_GDC_N * 4 * 2)                /* 1024 addresses, 4 coefficients per address,  */
/* 2 bytes per coefficient                      */

#define _HRT_GDC_REG_ALIGN               4

//     31  30  29    25 24                     0
//  |-----|---|--------|------------------------|
//  | CMD | C | Reg_ID |        Value           |

// There are just two commands possible for the GDC block:
// 1 - Configure reg
// 0 - Data token

// C      - Reserved bit
//          Used in protocol to indicate whether it is C-run or other type of runs
//          In case of C-run, this bit has a value of 1, for all the other runs, it is 0.

// Reg_ID - Address of the register to be configured

// Value  - Value to store to the addressed register, maximum of 24 bits

// Configure reg command is not followed by any other token.
// The address of the register and the data to be filled in is contained in the same token

// When the first data token is received, it must be:
//   1. FRX and FRY (device configured in one of the  scaling modes) ***DEFAULT MODE***, or,
//   2. P0'X        (device configured in one of the tetragon modes)
// After the first data token is received, pre-defined number of tokens with the following meaning follow:
//   1. two  tokens: SRC address ; DST address
//   2. nine tokens: P0'Y, .., P3'Y ; SRC address ; DST address

#define HRT_GDC_CONFIG_CMD             1
#define HRT_GDC_DATA_CMD               0

#define HRT_GDC_CMD_POS               31
#define HRT_GDC_CMD_BITS               1
#define HRT_GDC_CRUN_POS              30
#define HRT_GDC_REG_ID_POS            25
#define HRT_GDC_REG_ID_BITS            5
#define HRT_GDC_DATA_POS               0
#define HRT_GDC_DATA_BITS             25

#define HRT_GDC_FRYIPXFRX_BITS        26
#define HRT_GDC_P0X_BITS              23

#define HRT_GDC_MAX_OXDIM           (8192 - 64)
#define HRT_GDC_MAX_OYDIM           4095
#define HRT_GDC_MAX_IXDIM           (8192 - 64)
#define HRT_GDC_MAX_IYDIM           4095
#define HRT_GDC_MAX_DS_FAC            16
#define HRT_GDC_MAX_DX                 (HRT_GDC_MAX_DS_FAC * HRT_GDC_N - 1)
#define HRT_GDC_MAX_DY                 HRT_GDC_MAX_DX

/* GDC lookup tables entries are 10 bits values, but they're
   stored 2 by 2 as 32 bit values, yielding 16 bits per entry.
   A GDC lookup table contains 64 * 4 elements */

#define HRT_GDC_PERF_1_1_pix          0
#define HRT_GDC_PERF_2_1_pix          1
#define HRT_GDC_PERF_1_2_pix          2
#define HRT_GDC_PERF_2_2_pix          3

#define HRT_GDC_NND_MODE              0
#define HRT_GDC_BLI_MODE              1
#define HRT_GDC_BCI_MODE              2
#define HRT_GDC_LUT_MODE              3

#define HRT_GDC_SCAN_STB              0
#define HRT_GDC_SCAN_STR              1

Annotation

Implementation Notes