1f5fbb83fSMauro Carvalho Chehab /* SPDX-License-Identifier: GPL-2.0 */ 29d4fa1a1SMauro Carvalho Chehab /* 39d4fa1a1SMauro Carvalho Chehab * Support for Intel Camera Imaging ISP subsystem. 49d4fa1a1SMauro Carvalho Chehab * Copyright (c) 2015, Intel Corporation. 59d4fa1a1SMauro Carvalho Chehab * 69d4fa1a1SMauro Carvalho Chehab * This program is free software; you can redistribute it and/or modify it 79d4fa1a1SMauro Carvalho Chehab * under the terms and conditions of the GNU General Public License, 89d4fa1a1SMauro Carvalho Chehab * version 2, as published by the Free Software Foundation. 99d4fa1a1SMauro Carvalho Chehab * 109d4fa1a1SMauro Carvalho Chehab * This program is distributed in the hope it will be useful, but WITHOUT 119d4fa1a1SMauro Carvalho Chehab * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 129d4fa1a1SMauro Carvalho Chehab * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 139d4fa1a1SMauro Carvalho Chehab * more details. 149d4fa1a1SMauro Carvalho Chehab */ 159d4fa1a1SMauro Carvalho Chehab 169d4fa1a1SMauro Carvalho Chehab #ifndef __GDC_GLOBAL_H_INCLUDED__ 179d4fa1a1SMauro Carvalho Chehab #define __GDC_GLOBAL_H_INCLUDED__ 189d4fa1a1SMauro Carvalho Chehab 199d4fa1a1SMauro Carvalho Chehab #define IS_GDC_VERSION_2 209d4fa1a1SMauro Carvalho Chehab 219d4fa1a1SMauro Carvalho Chehab #include <type_support.h> 229d4fa1a1SMauro Carvalho Chehab #include "gdc_v2_defs.h" 239d4fa1a1SMauro Carvalho Chehab 249d4fa1a1SMauro Carvalho Chehab /* 259d4fa1a1SMauro Carvalho Chehab * Storage addresses for packed data transfer 269d4fa1a1SMauro Carvalho Chehab */ 279d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_ICX_LEFT_ROUNDED_IDX 0 289d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_OXDIM_FLOORED_IDX 1 299d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_OXDIM_LAST_IDX 2 309d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_WOIX_LAST_IDX 3 319d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_IY_TOPLEFT_IDX 4 329d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_CHUNK_CNT_IDX 5 339d4fa1a1SMauro Carvalho Chehab /*#define GDC_PARAM_ELEMENTS_PER_XMEM_ADDR_IDX 6 */ /* Derived from bpp */ 349d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_BPP_IDX 6 359d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_BLOCK_HEIGHT_IDX 7 369d4fa1a1SMauro Carvalho Chehab /*#define GDC_PARAM_DMA_CHANNEL_STRIDE_A_IDX 8*/ /* The DMA stride == the GDC buffer stride */ 379d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_WOIX_IDX 8 389d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_DMA_CHANNEL_STRIDE_B_IDX 9 399d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_DMA_CHANNEL_WIDTH_A_IDX 10 409d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_DMA_CHANNEL_WIDTH_B_IDX 11 419d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_VECTORS_PER_LINE_IN_IDX 12 429d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_VECTORS_PER_LINE_OUT_IDX 13 439d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_VMEM_IN_DIMY_IDX 14 449d4fa1a1SMauro Carvalho Chehab #define GDC_PARAM_COMMAND_IDX 15 459d4fa1a1SMauro Carvalho Chehab #define N_GDC_PARAM 16 469d4fa1a1SMauro Carvalho Chehab 479d4fa1a1SMauro Carvalho Chehab /* Because of the packed parameter transfer max(params) == max(fragments) */ 489d4fa1a1SMauro Carvalho Chehab #define N_GDC_FRAGMENTS N_GDC_PARAM 499d4fa1a1SMauro Carvalho Chehab 509d4fa1a1SMauro Carvalho Chehab /* The GDC is capable of higher internal precision than the parameter data structures */ 519d4fa1a1SMauro Carvalho Chehab #define HRT_GDC_COORD_SCALE_BITS 6 529d4fa1a1SMauro Carvalho Chehab #define HRT_GDC_COORD_SCALE BIT(HRT_GDC_COORD_SCALE_BITS) 539d4fa1a1SMauro Carvalho Chehab 549d4fa1a1SMauro Carvalho Chehab typedef enum { 559d4fa1a1SMauro Carvalho Chehab GDC_CH0_ID = 0, 569d4fa1a1SMauro Carvalho Chehab N_GDC_CHANNEL_ID 579d4fa1a1SMauro Carvalho Chehab } gdc_channel_ID_t; 589d4fa1a1SMauro Carvalho Chehab 599d4fa1a1SMauro Carvalho Chehab typedef enum { 609d4fa1a1SMauro Carvalho Chehab gdc_8_bpp = 8, 619d4fa1a1SMauro Carvalho Chehab gdc_10_bpp = 10, 629d4fa1a1SMauro Carvalho Chehab gdc_12_bpp = 12, 639d4fa1a1SMauro Carvalho Chehab gdc_14_bpp = 14 649d4fa1a1SMauro Carvalho Chehab } gdc_bits_per_pixel_t; 659d4fa1a1SMauro Carvalho Chehab 669d4fa1a1SMauro Carvalho Chehab typedef struct gdc_scale_param_mem_s { 679d4fa1a1SMauro Carvalho Chehab u16 params[N_GDC_PARAM]; 689d4fa1a1SMauro Carvalho Chehab u16 ipx_start_array[N_GDC_PARAM]; 699d4fa1a1SMauro Carvalho Chehab u16 ibuf_offset[N_GDC_PARAM]; 709d4fa1a1SMauro Carvalho Chehab u16 obuf_offset[N_GDC_PARAM]; 719d4fa1a1SMauro Carvalho Chehab } gdc_scale_param_mem_t; 729d4fa1a1SMauro Carvalho Chehab 739d4fa1a1SMauro Carvalho Chehab typedef struct gdc_warp_param_mem_s { 749d4fa1a1SMauro Carvalho Chehab u32 origin_x; 759d4fa1a1SMauro Carvalho Chehab u32 origin_y; 769d4fa1a1SMauro Carvalho Chehab u32 in_addr_offset; 779d4fa1a1SMauro Carvalho Chehab u32 in_block_width; 789d4fa1a1SMauro Carvalho Chehab u32 in_block_height; 799d4fa1a1SMauro Carvalho Chehab u32 p0_x; 809d4fa1a1SMauro Carvalho Chehab u32 p0_y; 819d4fa1a1SMauro Carvalho Chehab u32 p1_x; 829d4fa1a1SMauro Carvalho Chehab u32 p1_y; 839d4fa1a1SMauro Carvalho Chehab u32 p2_x; 849d4fa1a1SMauro Carvalho Chehab u32 p2_y; 859d4fa1a1SMauro Carvalho Chehab u32 p3_x; 869d4fa1a1SMauro Carvalho Chehab u32 p3_y; 879d4fa1a1SMauro Carvalho Chehab u32 padding[3]; 889d4fa1a1SMauro Carvalho Chehab } gdc_warp_param_mem_t; 899d4fa1a1SMauro Carvalho Chehab 909d4fa1a1SMauro Carvalho Chehab #endif /* __GDC_GLOBAL_H_INCLUDED__ */ 91