xref: /rk3399_rockchip-uboot/include/display.h (revision eab314f5909dba208d4cb7dc5aac6ee707d5d171)
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
192dcf1433SSimon Glass  */
202dcf1433SSimon Glass struct display_plat {
212dcf1433SSimon Glass 	int source_id;
222dcf1433SSimon Glass 	struct udevice *src_dev;
232dcf1433SSimon Glass };
242dcf1433SSimon Glass 
252dcf1433SSimon Glass /**
26*eab314f5SJacob Chen  * display_read_timing() - Read timing information
272dcf1433SSimon Glass  *
282dcf1433SSimon Glass  * @dev:	Device to read from
292dcf1433SSimon Glass  * @return 0 if OK, -ve on error
302dcf1433SSimon Glass  */
312dcf1433SSimon Glass int display_read_timing(struct udevice *dev, struct display_timing *timing);
322dcf1433SSimon Glass 
332dcf1433SSimon Glass /**
342dcf1433SSimon Glass  * display_port_enable() - Enable a display port device
352dcf1433SSimon Glass  *
362dcf1433SSimon Glass  * @dev:	Device to enable
372dcf1433SSimon Glass  * @panel_bpp:	Number of bits per pixel for panel
382dcf1433SSimon Glass  * @timing:	Display timings
392dcf1433SSimon Glass  * @return 0 if OK, -ve on error
402dcf1433SSimon Glass  */
412dcf1433SSimon Glass int display_enable(struct udevice *dev, int panel_bpp,
422dcf1433SSimon Glass 		   const struct display_timing *timing);
432dcf1433SSimon Glass 
442dcf1433SSimon Glass struct dm_display_ops {
452dcf1433SSimon Glass 	/**
46*eab314f5SJacob Chen 	 * read_timing() - Read information directly
47*eab314f5SJacob Chen 	 *
48*eab314f5SJacob Chen 	 * @dev:	Device to read from
49*eab314f5SJacob Chen 	 * @timing:	Display timings
50*eab314f5SJacob Chen 	 * @return 0 if OK, -ve on error
51*eab314f5SJacob Chen 	 */
52*eab314f5SJacob Chen 	int (*read_timing)(struct udevice *dev, struct display_timing *timing);
53*eab314f5SJacob Chen 
54*eab314f5SJacob Chen 	/**
552dcf1433SSimon Glass 	 * read_edid() - Read information from EDID
562dcf1433SSimon Glass 	 *
572dcf1433SSimon Glass 	 * @dev:	Device to read from
582dcf1433SSimon Glass 	 * @buf:	Buffer to read into (should be EDID_SIZE bytes)
592dcf1433SSimon Glass 	 * @buf_size:	Buffer size (should be EDID_SIZE)
602dcf1433SSimon Glass 	 * @return number of bytes read, <=0 for error
612dcf1433SSimon Glass 	 */
622dcf1433SSimon Glass 	int (*read_edid)(struct udevice *dev, u8 *buf, int buf_size);
632dcf1433SSimon Glass 
642dcf1433SSimon Glass 	/**
652dcf1433SSimon Glass 	 * enable() - Enable the display port device
662dcf1433SSimon Glass 	 *
672dcf1433SSimon Glass 	 * @dev:	Device to enable
682dcf1433SSimon Glass 	 * @panel_bpp:	Number of bits per pixel for panel
692dcf1433SSimon Glass 	 * @timing:	Display timings
702dcf1433SSimon Glass 	 * @return 0 if OK, -ve on error
712dcf1433SSimon Glass 	 */
722dcf1433SSimon Glass 	int (*enable)(struct udevice *dev, int panel_bpp,
732dcf1433SSimon Glass 		      const struct display_timing *timing);
742dcf1433SSimon Glass };
752dcf1433SSimon Glass 
762dcf1433SSimon Glass #define display_get_ops(dev)	((struct dm_display_ops *)(dev)->driver->ops)
772dcf1433SSimon Glass 
782dcf1433SSimon Glass #endif
79