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