xref: /rk3399_rockchip-uboot/include/display.h (revision 2d221489df021393654805536be7effcb9d39702)
12dcf1433SSimon Glass /*
22dcf1433SSimon Glass  * Copyright 2014 Google Inc.
32dcf1433SSimon Glass  *
42dcf1433SSimon Glass  * SPDX-License-Identifier:     GPL-2.0+
52dcf1433SSimon Glass  */
62dcf1433SSimon Glass 
72dcf1433SSimon Glass #ifndef _DISPLAY_H
82dcf1433SSimon Glass #define _DISPLAY_H
92dcf1433SSimon Glass 
102dcf1433SSimon Glass struct udevice;
112dcf1433SSimon Glass struct display_timing;
122dcf1433SSimon Glass 
132dcf1433SSimon Glass /**
142dcf1433SSimon Glass  * Display uclass platform data for each device
152dcf1433SSimon Glass  *
162dcf1433SSimon Glass  * @source_id:	ID for the source of the display data, typically a video
172dcf1433SSimon Glass  * controller
182dcf1433SSimon Glass  * @src_dev:	Source device providing the video
19*1b68283bSSimon Glass  * @in_use:	Display is being used
202dcf1433SSimon Glass  */
212dcf1433SSimon Glass struct display_plat {
222dcf1433SSimon Glass 	int source_id;
232dcf1433SSimon Glass 	struct udevice *src_dev;
24*1b68283bSSimon Glass 	bool in_use;
252dcf1433SSimon Glass };
262dcf1433SSimon Glass 
272dcf1433SSimon Glass /**
28eab314f5SJacob Chen  * display_read_timing() - Read timing information
292dcf1433SSimon Glass  *
302dcf1433SSimon Glass  * @dev:	Device to read from
312dcf1433SSimon Glass  * @return 0 if OK, -ve on error
322dcf1433SSimon Glass  */
332dcf1433SSimon Glass int display_read_timing(struct udevice *dev, struct display_timing *timing);
342dcf1433SSimon Glass 
352dcf1433SSimon Glass /**
362dcf1433SSimon Glass  * display_port_enable() - Enable a display port device
372dcf1433SSimon Glass  *
382dcf1433SSimon Glass  * @dev:	Device to enable
392dcf1433SSimon Glass  * @panel_bpp:	Number of bits per pixel for panel
402dcf1433SSimon Glass  * @timing:	Display timings
412dcf1433SSimon Glass  * @return 0 if OK, -ve on error
422dcf1433SSimon Glass  */
432dcf1433SSimon Glass int display_enable(struct udevice *dev, int panel_bpp,
442dcf1433SSimon Glass 		   const struct display_timing *timing);
452dcf1433SSimon Glass 
46*1b68283bSSimon Glass /**
47*1b68283bSSimon Glass  * display_in_use() - Check if a display is in use by any device
48*1b68283bSSimon Glass  *
49*1b68283bSSimon Glass  * @return true if the device is in use (display_enable() has been called
50*1b68283bSSimon Glass  * successfully), else false
51*1b68283bSSimon Glass  */
52*1b68283bSSimon Glass bool display_in_use(struct udevice *dev);
53*1b68283bSSimon Glass 
542dcf1433SSimon Glass struct dm_display_ops {
552dcf1433SSimon Glass 	/**
56eab314f5SJacob Chen 	 * read_timing() - Read information directly
57eab314f5SJacob Chen 	 *
58eab314f5SJacob Chen 	 * @dev:	Device to read from
59eab314f5SJacob Chen 	 * @timing:	Display timings
60eab314f5SJacob Chen 	 * @return 0 if OK, -ve on error
61eab314f5SJacob Chen 	 */
62eab314f5SJacob Chen 	int (*read_timing)(struct udevice *dev, struct display_timing *timing);
63eab314f5SJacob Chen 
64eab314f5SJacob Chen 	/**
652dcf1433SSimon Glass 	 * read_edid() - Read information from EDID
662dcf1433SSimon Glass 	 *
672dcf1433SSimon Glass 	 * @dev:	Device to read from
682dcf1433SSimon Glass 	 * @buf:	Buffer to read into (should be EDID_SIZE bytes)
692dcf1433SSimon Glass 	 * @buf_size:	Buffer size (should be EDID_SIZE)
702dcf1433SSimon Glass 	 * @return number of bytes read, <=0 for error
712dcf1433SSimon Glass 	 */
722dcf1433SSimon Glass 	int (*read_edid)(struct udevice *dev, u8 *buf, int buf_size);
732dcf1433SSimon Glass 
742dcf1433SSimon Glass 	/**
752dcf1433SSimon Glass 	 * enable() - Enable the display port device
762dcf1433SSimon Glass 	 *
772dcf1433SSimon Glass 	 * @dev:	Device to enable
782dcf1433SSimon Glass 	 * @panel_bpp:	Number of bits per pixel for panel
792dcf1433SSimon Glass 	 * @timing:	Display timings
802dcf1433SSimon Glass 	 * @return 0 if OK, -ve on error
812dcf1433SSimon Glass 	 */
822dcf1433SSimon Glass 	int (*enable)(struct udevice *dev, int panel_bpp,
832dcf1433SSimon Glass 		      const struct display_timing *timing);
842dcf1433SSimon Glass };
852dcf1433SSimon Glass 
862dcf1433SSimon Glass #define display_get_ops(dev)	((struct dm_display_ops *)(dev)->driver->ops)
872dcf1433SSimon Glass 
882dcf1433SSimon Glass #endif
89