File Index
Files and directories
Sign in
FILE

dc-pe.h

File preview with syntax highlighting.

linux-6.19.14/drivers/gpu/drm/imx/dc/dc-pe.h C
  1/* SPDX-License-Identifier: GPL-2.0+ */
  2/*
  3 * Copyright 2024 NXP
  4 */
  5
  6#ifndef __DC_PIXEL_ENGINE_H__
  7#define __DC_PIXEL_ENGINE_H__
  8
  9#include <linux/clk.h>
 10#include <linux/device.h>
 11#include <linux/regmap.h>
 12
 13#include "dc-de.h"
 14
 15#define SHDEN			BIT(0)
 16
 17#define CLKEN_MASK_SHIFT	24
 18#define CLKEN_MASK		(0x3 << CLKEN_MASK_SHIFT)
 19#define CLKEN(n)		((n) << CLKEN_MASK_SHIFT)
 20
 21#define DC_DISP_FU_CNT		2
 22#define DC_LB_CNT		4
 23
 24enum dc_link_id {
 25	LINK_ID_NONE		= 0x00,
 26	LINK_ID_CONSTFRAME0	= 0x0c,
 27	LINK_ID_CONSTFRAME4	= 0x0e,
 28	LINK_ID_CONSTFRAME1	= 0x10,
 29	LINK_ID_CONSTFRAME5	= 0x12,
 30	LINK_ID_FETCHWARP2	= 0x14,
 31	LINK_ID_FETCHLAYER0	= 0x1a,
 32	LINK_ID_LAYERBLEND0	= 0x21,
 33	LINK_ID_LAYERBLEND1	= 0x22,
 34	LINK_ID_LAYERBLEND2	= 0x23,
 35	LINK_ID_LAYERBLEND3	= 0x24,
 36};
 37
 38enum dc_lb_mode {
 39	LB_NEUTRAL,	/* Output is same as primary input. */
 40	LB_BLEND,
 41};
 42
 43enum dc_pec_clken {
 44	CLKEN_DISABLE,
 45	CLKEN_AUTOMATIC,
 46};
 47
 48struct dc_cf {
 49	struct regmap *reg_cfg;
 50	enum dc_link_id link;
 51};
 52
 53struct dc_ed {
 54	struct device *dev;
 55	struct regmap *reg_pec;
 56	struct regmap *reg_cfg;
 57	int irq_shdload;
 58};
 59
 60struct dc_lb {
 61	struct device *dev;
 62	struct regmap *reg_pec;
 63	struct regmap *reg_cfg;
 64	int id;
 65	enum dc_link_id link;
 66};
 67
 68struct dc_pe {
 69	struct device *dev;
 70	struct clk *clk_axi;
 71	struct dc_cf *cf_safe[DC_DISPLAYS];
 72	struct dc_cf *cf_cont[DC_DISPLAYS];
 73	struct dc_ed *ed_safe[DC_DISPLAYS];
 74	struct dc_ed *ed_cont[DC_DISPLAYS];
 75	struct dc_fu *fu_disp[DC_DISP_FU_CNT];
 76	struct dc_lb *lb[DC_LB_CNT];
 77};
 78
 79/* Constant Frame Unit */
 80enum dc_link_id dc_cf_get_link_id(struct dc_cf *cf);
 81void dc_cf_framedimensions(struct dc_cf *cf, unsigned int w, unsigned int h);
 82void dc_cf_constantcolor_black(struct dc_cf *cf);
 83void dc_cf_constantcolor_blue(struct dc_cf *cf);
 84void dc_cf_init(struct dc_cf *cf);
 85
 86/* External Destination Unit */
 87void dc_ed_pec_src_sel(struct dc_ed *ed, enum dc_link_id src);
 88void dc_ed_pec_sync_trigger(struct dc_ed *ed);
 89void dc_ed_init(struct dc_ed *ed);
 90
 91/* Layer Blend Unit */
 92enum dc_link_id dc_lb_get_link_id(struct dc_lb *lb);
 93void dc_lb_pec_dynamic_prim_sel(struct dc_lb *lb, enum dc_link_id prim);
 94void dc_lb_pec_dynamic_sec_sel(struct dc_lb *lb, enum dc_link_id sec);
 95void dc_lb_pec_clken(struct dc_lb *lb, enum dc_pec_clken clken);
 96void dc_lb_mode(struct dc_lb *lb, enum dc_lb_mode mode);
 97void dc_lb_position(struct dc_lb *lb, int x, int y);
 98int dc_lb_get_id(struct dc_lb *lb);
 99void dc_lb_init(struct dc_lb *lb);
100
101#endif /* __DC_PIXEL_ENGINE_H__ */
~/ Read-only file preview.