13d0407baSopenharmony_ci/*
23d0407baSopenharmony_ci * Copyright (C) 2021 Rockchip Electronics Co., Ltd.
33d0407baSopenharmony_ci * Authors:
43d0407baSopenharmony_ci *  Cerf Yu <cerf.yu@rock-chips.com>
53d0407baSopenharmony_ci *
63d0407baSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
73d0407baSopenharmony_ci * you may not use this file except in compliance with the License.
83d0407baSopenharmony_ci * You may obtain a copy of the License at
93d0407baSopenharmony_ci *
103d0407baSopenharmony_ci *      http://www.apache.org/licenses/LICENSE-2.0
113d0407baSopenharmony_ci *
123d0407baSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
133d0407baSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
143d0407baSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
153d0407baSopenharmony_ci * See the License for the specific language governing permissions and
163d0407baSopenharmony_ci * limitations under the License.
173d0407baSopenharmony_ci */
183d0407baSopenharmony_ci
193d0407baSopenharmony_ci#ifndef _RGA_IM2D_HARDWARE_H_
203d0407baSopenharmony_ci#define _RGA_IM2D_HARDWARE_H_
213d0407baSopenharmony_ci
223d0407baSopenharmony_ci#include "rga.h"
233d0407baSopenharmony_ci
243d0407baSopenharmony_citypedef enum {
253d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_V_ERR_INDEX = 0x0,
263d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_1_INDEX,
273d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_1_PLUS_INDEX,
283d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_2_INDEX,
293d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_2_LITE0_INDEX,
303d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_2_LITE1_INDEX,
313d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_2_ENHANCE_INDEX,
323d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_3_INDEX,
333d0407baSopenharmony_ci    IM_RGA_HW_VERSION_MASK_INDEX,
343d0407baSopenharmony_ci} IM_RGA_HW_VERSION_INDEX;
353d0407baSopenharmony_ci
363d0407baSopenharmony_citypedef enum {
373d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_V_ERR     = 1 << IM_RGA_HW_VERSION_RGA_V_ERR_INDEX,
383d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_1         = 1 << IM_RGA_HW_VERSION_RGA_1_INDEX,
393d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_1_PLUS    = 1 << IM_RGA_HW_VERSION_RGA_1_PLUS_INDEX,
403d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_2         = 1 << IM_RGA_HW_VERSION_RGA_2_INDEX,
413d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_2_LITE0   = 1 << IM_RGA_HW_VERSION_RGA_2_LITE0_INDEX,
423d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_2_LITE1   = 1 << IM_RGA_HW_VERSION_RGA_2_LITE1_INDEX,
433d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_2_ENHANCE = 1 << IM_RGA_HW_VERSION_RGA_2_ENHANCE_INDEX,
443d0407baSopenharmony_ci    IM_RGA_HW_VERSION_RGA_3         = 1 << IM_RGA_HW_VERSION_RGA_3_INDEX,
453d0407baSopenharmony_ci    IM_RGA_HW_VERSION_MASK          = ~((~(unsigned int)0x0 << IM_RGA_HW_VERSION_MASK_INDEX) | 1),
463d0407baSopenharmony_ci}IM_RGA_HW_VERSION;
473d0407baSopenharmony_ci
483d0407baSopenharmony_citypedef enum {
493d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_ERROR_INDEX = 0,
503d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_RGB_INDEX,
513d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_RGB_OTHER_INDEX,
523d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_BPP_INDEX,
533d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT_INDEX,
543d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_10_BIT_INDEX,
553d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT_INDEX,
563d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_10_BIT_INDEX,
573d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT_INDEX,
583d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_10_BIT_INDEX,
593d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT_INDEX,
603d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_10_BIT_INDEX,
613d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUYV_420_INDEX,
623d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUYV_422_INDEX,
633d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_400_INDEX,
643d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_Y4_INDEX,
653d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_RGBA2BPP_INDEX,
663d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_MASK_INDEX,
673d0407baSopenharmony_ci} IM_RGA_SUPPORT_FORMAT_INDEX;
683d0407baSopenharmony_ci
693d0407baSopenharmony_citypedef enum {
703d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_ERROR                         = 1 << IM_RGA_SUPPORT_FORMAT_ERROR_INDEX,
713d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_RGB                           = 1 << IM_RGA_SUPPORT_FORMAT_RGB_INDEX,
723d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_RGB_OTHER                     = 1 << IM_RGA_SUPPORT_FORMAT_RGB_OTHER_INDEX,
733d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_BPP                           = 1 << IM_RGA_SUPPORT_FORMAT_BPP_INDEX,
743d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT    = 1 << IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT_INDEX,
753d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_10_BIT   = 1 << IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_10_BIT_INDEX,
763d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT         = 1 << IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT_INDEX,
773d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_10_BIT        = 1 << IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_10_BIT_INDEX,
783d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT    = 1 << IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT_INDEX,
793d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_10_BIT   = 1 << IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_10_BIT_INDEX,
803d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT         = 1 << IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT_INDEX,
813d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_10_BIT        = 1 << IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_10_BIT_INDEX,
823d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUYV_420                      = 1 << IM_RGA_SUPPORT_FORMAT_YUYV_420_INDEX,
833d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUYV_422                      = 1 << IM_RGA_SUPPORT_FORMAT_YUYV_422_INDEX,
843d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_YUV_400                       = 1 << IM_RGA_SUPPORT_FORMAT_YUV_400_INDEX,
853d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_Y4                            = 1 << IM_RGA_SUPPORT_FORMAT_Y4_INDEX,
863d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_RGBA2BPP                      = 1 << IM_RGA_SUPPORT_FORMAT_RGBA2BPP_INDEX,
873d0407baSopenharmony_ci    IM_RGA_SUPPORT_FORMAT_MASK                          = ~((~(unsigned int)0x0 << IM_RGA_SUPPORT_FORMAT_MASK_INDEX) | 1),
883d0407baSopenharmony_ci} IM_RGA_SUPPORT_FORMAT;
893d0407baSopenharmony_ci
903d0407baSopenharmony_citypedef enum {
913d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_ERROR_INDEX = 0,
923d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_COLOR_FILL_INDEX,
933d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE_INDEX,
943d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_ROP_INDEX,
953d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_QUANTIZE_INDEX,
963d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC_INDEX,
973d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC_INDEX,
983d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_FBC_INDEX,
993d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_BLEND_YUV_INDEX,
1003d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_BT2020_INDEX,
1013d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_MOSAIC_INDEX,
1023d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_OSD_INDEX,
1033d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_PRE_INTR_INDEX,
1043d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_MASK_INDEX,
1053d0407baSopenharmony_ci} IM_RGA_SUPPORT_FEATURE_INDEX;
1063d0407baSopenharmony_ci
1073d0407baSopenharmony_citypedef enum {
1083d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_ERROR          = 1 << IM_RGA_SUPPORT_FEATURE_ERROR_INDEX,
1093d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_COLOR_FILL     = 1 << IM_RGA_SUPPORT_FEATURE_COLOR_FILL_INDEX,
1103d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE  = 1 << IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE_INDEX,
1113d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_ROP            = 1 << IM_RGA_SUPPORT_FEATURE_ROP_INDEX,
1123d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_QUANTIZE       = 1 << IM_RGA_SUPPORT_FEATURE_QUANTIZE_INDEX,
1133d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC   = 1 << IM_RGA_SUPPORT_FEATURE_SRC1_R2Y_CSC_INDEX,
1143d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC   = 1 << IM_RGA_SUPPORT_FEATURE_DST_FULL_CSC_INDEX,
1153d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_FBC            = 1 << IM_RGA_SUPPORT_FEATURE_FBC_INDEX,
1163d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_BLEND_YUV      = 1 << IM_RGA_SUPPORT_FEATURE_BLEND_YUV_INDEX,
1173d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_BT2020         = 1 << IM_RGA_SUPPORT_FEATURE_BT2020_INDEX,
1183d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_MOSAIC         = 1 << IM_RGA_SUPPORT_FEATURE_MOSAIC_INDEX,
1193d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_OSD            = 1 << IM_RGA_SUPPORT_FEATURE_OSD_INDEX,
1203d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_PRE_INTR       = 1 << IM_RGA_SUPPORT_FEATURE_PRE_INTR_INDEX,
1213d0407baSopenharmony_ci    IM_RGA_SUPPORT_FEATURE_MASK           = ~((~(unsigned int)0x0 << IM_RGA_SUPPORT_FEATURE_MASK_INDEX) | 1),
1223d0407baSopenharmony_ci} IM_RGA_SUPPORT_FEATURE;
1233d0407baSopenharmony_ci
1243d0407baSopenharmony_citypedef struct {
1253d0407baSopenharmony_ci    unsigned int version;
1263d0407baSopenharmony_ci    unsigned int input_resolution;
1273d0407baSopenharmony_ci    unsigned int output_resolution;
1283d0407baSopenharmony_ci    unsigned int byte_stride;
1293d0407baSopenharmony_ci    unsigned int scale_limit;
1303d0407baSopenharmony_ci    unsigned int performance;
1313d0407baSopenharmony_ci    unsigned int input_format;
1323d0407baSopenharmony_ci    unsigned int output_format;
1333d0407baSopenharmony_ci    unsigned int feature;
1343d0407baSopenharmony_ci    char reserved[24];
1353d0407baSopenharmony_ci} rga_info_table_entry;
1363d0407baSopenharmony_ci
1373d0407baSopenharmony_citypedef struct {
1383d0407baSopenharmony_ci    struct rga_version_t user;
1393d0407baSopenharmony_ci    struct rga_version_t driver;
1403d0407baSopenharmony_ci} rga_dirver_bind_table_entry;
1413d0407baSopenharmony_ci
1423d0407baSopenharmony_ciconst rga_info_table_entry hw_info_table[] = {
1433d0407baSopenharmony_ci    { IM_RGA_HW_VERSION_RGA_V_ERR       ,    0,    0, 0, 0, 0,   0, 0, 0, {0} },
1443d0407baSopenharmony_ci    {   IM_RGA_HW_VERSION_RGA_1         , 8192, 2048, 4, 8, 1,
1453d0407baSopenharmony_ci                                        /* input format */
1463d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
1473d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
1483d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_BPP |
1493d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
1503d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
1513d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
1523d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
1533d0407baSopenharmony_ci                                        /* output format */
1543d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
1553d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
1563d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
1573d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
1583d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
1593d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
1603d0407baSopenharmony_ci                                        /* feature */
1613d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_FILL |
1623d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE |
1633d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_ROP,
1643d0407baSopenharmony_ci                                        /* reserved */
1653d0407baSopenharmony_ci                                        {0} },
1663d0407baSopenharmony_ci    { IM_RGA_HW_VERSION_RGA_1_PLUS      , 8192, 2048, 4, 8, 1,
1673d0407baSopenharmony_ci                                        /* input format */
1683d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
1693d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
1703d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_BPP |
1713d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
1723d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
1733d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
1743d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
1753d0407baSopenharmony_ci                                        /* output format */
1763d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
1773d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
1783d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
1793d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
1803d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
1813d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
1823d0407baSopenharmony_ci                                        /* feature */
1833d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_FILL |
1843d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE,
1853d0407baSopenharmony_ci                                        /* reserved */
1863d0407baSopenharmony_ci                                        {0} },
1873d0407baSopenharmony_ci    { IM_RGA_HW_VERSION_RGA_2           , 8192, 4096, 4, 16, 2,
1883d0407baSopenharmony_ci                                        /* input format */
1893d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
1903d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
1913d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
1923d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
1933d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
1943d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
1953d0407baSopenharmony_ci                                        /* output format */
1963d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
1973d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
1983d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
1993d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
2003d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2013d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
2023d0407baSopenharmony_ci                                        /* feature */
2033d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_FILL |
2043d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE |
2053d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_ROP,
2063d0407baSopenharmony_ci                                        /* reserved */
2073d0407baSopenharmony_ci                                        {0} },
2083d0407baSopenharmony_ci    { IM_RGA_HW_VERSION_RGA_2_LITE0     , 8192, 4096, 4, 8, 2,
2093d0407baSopenharmony_ci                                        /* input format */
2103d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
2113d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
2123d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
2133d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
2143d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2153d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
2163d0407baSopenharmony_ci                                        /* output format */
2173d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
2183d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
2193d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
2203d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
2213d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2223d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
2233d0407baSopenharmony_ci                                        /* feature */
2243d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_FILL |
2253d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE |
2263d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_ROP,
2273d0407baSopenharmony_ci                                        /* reserved */
2283d0407baSopenharmony_ci                                        {0} },
2293d0407baSopenharmony_ci    { IM_RGA_HW_VERSION_RGA_2_LITE1     , 8192, 4096, 4, 8, 2,
2303d0407baSopenharmony_ci                                        /* input format */
2313d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
2323d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
2333d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
2343d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
2353d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2363d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT |
2373d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_10_BIT |
2383d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_10_BIT |
2393d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_10_BIT |
2403d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_10_BIT,
2413d0407baSopenharmony_ci                                        /* output format */
2423d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
2433d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
2443d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
2453d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
2463d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2473d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT,
2483d0407baSopenharmony_ci                                        /* feature */
2493d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_FILL |
2503d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE,
2513d0407baSopenharmony_ci                                        /* reserved */
2523d0407baSopenharmony_ci                                        {0} },
2533d0407baSopenharmony_ci    { IM_RGA_HW_VERSION_RGA_2_ENHANCE   , 8192, 4096, 4, 16,  2,
2543d0407baSopenharmony_ci                                        /* input format */
2553d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
2563d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
2573d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
2583d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
2593d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2603d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT |
2613d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_10_BIT |
2623d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_10_BIT |
2633d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_10_BIT |
2643d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_10_BIT,
2653d0407baSopenharmony_ci                                        /* output format */
2663d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
2673d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB_OTHER |
2683d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
2693d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_PLANNER_8_BIT |
2703d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2713d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_PLANNER_8_BIT |
2723d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUYV_420 |
2733d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUYV_422,
2743d0407baSopenharmony_ci                                        /* feature */
2753d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_FILL |
2763d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_COLOR_PALETTE |
2773d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_ROP,
2783d0407baSopenharmony_ci                                        /* reserved */
2793d0407baSopenharmony_ci                                        {0} },
2803d0407baSopenharmony_ci    { IM_RGA_HW_VERSION_RGA_3           , 8176, 8128, 16, 8,  4,
2813d0407baSopenharmony_ci                                        /* input format */
2823d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
2833d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
2843d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2853d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_10_BIT |
2863d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_10_BIT |
2873d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUYV_422,
2883d0407baSopenharmony_ci                                        /* output format */
2893d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_RGB |
2903d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_8_BIT |
2913d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_8_BIT |
2923d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_420_SEMI_PLANNER_10_BIT |
2933d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUV_422_SEMI_PLANNER_10_BIT |
2943d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FORMAT_YUYV_422,
2953d0407baSopenharmony_ci                                        /* feature */
2963d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_FBC |
2973d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_BLEND_YUV |
2983d0407baSopenharmony_ci                                        IM_RGA_SUPPORT_FEATURE_BT2020,
2993d0407baSopenharmony_ci                                        /* reserved */
3003d0407baSopenharmony_ci                                        {0} },
3013d0407baSopenharmony_ci};
3023d0407baSopenharmony_ci
3033d0407baSopenharmony_ci/* The range of the version is [min, max), that is version >= min, version < max. */
3043d0407baSopenharmony_ciconst rga_dirver_bind_table_entry driver_bind_table[] = {
3053d0407baSopenharmony_ci    { { 0, 0, 0, "0.0.0" }, {0, 0, 0, "0.0.0" } },
3063d0407baSopenharmony_ci    { { 1, 0, 3, "1.0.3" }, {0, 0, 0, "0.0.0" } },
3073d0407baSopenharmony_ci    { { 1, 6, 0, "1.6.0" }, {1, 1, 5, "1.1.5" } },
3083d0407baSopenharmony_ci    { { 1, 7, 2, "1.7.2" }, {1, 2, 0, "1.2.0" } },
3093d0407baSopenharmony_ci    { { 1, 7, 3, "1.7.3" }, {1, 2, 4, "1.2.4" } },
3103d0407baSopenharmony_ci};
3113d0407baSopenharmony_ci
3123d0407baSopenharmony_ci#endif
313