1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * (C) COPYRIGHT 2018 ARM Limited. All rights reserved. 4 * Author: James.Qian.Wang <james.qian.wang@arm.com> 5 * 6 */ 7 #ifndef _D71_DEV_H_ 8 #define _D71_DEV_H_ 9 10 #include "komeda_dev.h" 11 #include "komeda_pipeline.h" 12 #include "d71_regs.h" 13 14 struct d71_pipeline { 15 struct komeda_pipeline base; 16 17 /* d71 private pipeline blocks */ 18 u32 __iomem *lpu_addr; 19 u32 __iomem *cu_addr; 20 u32 __iomem *dou_addr; 21 u32 __iomem *dou_ft_coeff_addr; /* forward transform coeffs table */ 22 }; 23 24 struct d71_dev { 25 struct komeda_dev *mdev; 26 27 int num_blocks; 28 int num_pipelines; 29 int num_rich_layers; 30 u32 max_line_size; 31 u32 max_vsize; 32 u32 supports_dual_link : 1; 33 u32 integrates_tbu : 1; 34 35 /* global register blocks */ 36 u32 __iomem *gcu_addr; 37 /* scaling coeffs table */ 38 u32 __iomem *glb_scl_coeff_addr[D71_MAX_GLB_SCL_COEFF]; 39 u32 __iomem *periph_addr; 40 41 struct d71_pipeline *pipes[D71_MAX_PIPELINE]; 42 }; 43 44 #define to_d71_pipeline(x) container_of(x, struct d71_pipeline, base) 45 46 extern const struct komeda_pipeline_funcs d71_pipeline_funcs; 47 48 int d71_probe_block(struct d71_dev *d71, 49 struct block_header *blk, u32 __iomem *reg); 50 void d71_read_block_header(u32 __iomem *reg, struct block_header *blk); 51 52 #endif /* !_D71_DEV_H_ */ 53