android13/kernel-5.10/drivers/video/rockchip/rga3/include/rga_hw_config.h

80 lines
1.7 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) Rockchip Electronics Co., Ltd.
*
* Author: Huang Lee <Putin.li@rock-chips.com>
*/
#ifndef __LINUX_RGA_HW_CONFIG_H_
#define __LINUX_RGA_HW_CONFIG_H_
#include "rga_drv.h"
enum rga_mmu {
RGA_NONE_MMU = 0,
RGA_MMU = 1,
RGA_IOMMU = 2,
};
struct rga_win_data {
const char *name;
const uint32_t *raster_formats;
const uint32_t *fbc_formats;
const uint32_t *tile_formats;
uint32_t num_of_raster_formats;
uint32_t num_of_fbc_formats;
uint32_t num_of_tile_formats;
const unsigned int supported_rotations;
const unsigned int scale_up_mode;
const unsigned int scale_down_mode;
const unsigned int rd_mode;
};
struct rga_rect {
int width;
int height;
};
struct rga_rect_range {
struct rga_rect min;
struct rga_rect max;
};
struct rga_hw_data {
uint32_t version;
uint32_t feature;
uint32_t csc_r2y_mode;
uint32_t csc_y2r_mode;
struct rga_rect_range input_range;
struct rga_rect_range output_range;
unsigned int max_upscale_factor;
unsigned int max_downscale_factor;
uint32_t byte_stride_align;
uint32_t max_byte_stride;
const struct rga_win_data *win;
unsigned int win_size;
enum rga_mmu mmu;
};
extern const struct rga_hw_data rga3_data;
extern const struct rga_hw_data rga2e_data;
extern const struct rga_hw_data rga2e_1106_data;
extern const struct rga_hw_data rga2e_iommu_data;
/* Returns false if in range, true otherwise */
static inline bool rga_hw_out_of_range(const struct rga_rect_range *range, int width, int height)
{
return (width > range->max.width || height > range->max.height ||
width < range->min.width || height < range->min.height);
}
#endif /* __LINUX_RGA_HW_CONFIG_H_ */