xref: /rk3399_rockchip-uboot/include/display.h (revision 2dcf143398ad89ac960e02c7149521ae420db43b)
1*2dcf1433SSimon Glass /*
2*2dcf1433SSimon Glass  * Copyright 2014 Google Inc.
3*2dcf1433SSimon Glass  *
4*2dcf1433SSimon Glass  * SPDX-License-Identifier:     GPL-2.0+
5*2dcf1433SSimon Glass  */
6*2dcf1433SSimon Glass 
7*2dcf1433SSimon Glass #ifndef _DISPLAY_H
8*2dcf1433SSimon Glass #define _DISPLAY_H
9*2dcf1433SSimon Glass 
10*2dcf1433SSimon Glass struct udevice;
11*2dcf1433SSimon Glass struct display_timing;
12*2dcf1433SSimon Glass 
13*2dcf1433SSimon Glass /**
14*2dcf1433SSimon Glass  * Display uclass platform data for each device
15*2dcf1433SSimon Glass  *
16*2dcf1433SSimon Glass  * @source_id:	ID for the source of the display data, typically a video
17*2dcf1433SSimon Glass  * controller
18*2dcf1433SSimon Glass  * @src_dev:	Source device providing the video
19*2dcf1433SSimon Glass  */
20*2dcf1433SSimon Glass struct display_plat {
21*2dcf1433SSimon Glass 	int source_id;
22*2dcf1433SSimon Glass 	struct udevice *src_dev;
23*2dcf1433SSimon Glass };
24*2dcf1433SSimon Glass 
25*2dcf1433SSimon Glass /**
26*2dcf1433SSimon Glass  * display_read_timing() - Read timing information from EDID
27*2dcf1433SSimon Glass  *
28*2dcf1433SSimon Glass  * @dev:	Device to read from
29*2dcf1433SSimon Glass  * @return 0 if OK, -ve on error
30*2dcf1433SSimon Glass  */
31*2dcf1433SSimon Glass int display_read_timing(struct udevice *dev, struct display_timing *timing);
32*2dcf1433SSimon Glass 
33*2dcf1433SSimon Glass /**
34*2dcf1433SSimon Glass  * display_port_enable() - Enable a display port device
35*2dcf1433SSimon Glass  *
36*2dcf1433SSimon Glass  * @dev:	Device to enable
37*2dcf1433SSimon Glass  * @panel_bpp:	Number of bits per pixel for panel
38*2dcf1433SSimon Glass  * @timing:	Display timings
39*2dcf1433SSimon Glass  * @return 0 if OK, -ve on error
40*2dcf1433SSimon Glass  */
41*2dcf1433SSimon Glass int display_enable(struct udevice *dev, int panel_bpp,
42*2dcf1433SSimon Glass 		   const struct display_timing *timing);
43*2dcf1433SSimon Glass 
44*2dcf1433SSimon Glass struct dm_display_ops {
45*2dcf1433SSimon Glass 	/**
46*2dcf1433SSimon Glass 	 * read_edid() - Read information from EDID
47*2dcf1433SSimon Glass 	 *
48*2dcf1433SSimon Glass 	 * @dev:	Device to read from
49*2dcf1433SSimon Glass 	 * @buf:	Buffer to read into (should be EDID_SIZE bytes)
50*2dcf1433SSimon Glass 	 * @buf_size:	Buffer size (should be EDID_SIZE)
51*2dcf1433SSimon Glass 	 * @return number of bytes read, <=0 for error
52*2dcf1433SSimon Glass 	 */
53*2dcf1433SSimon Glass 	int (*read_edid)(struct udevice *dev, u8 *buf, int buf_size);
54*2dcf1433SSimon Glass 
55*2dcf1433SSimon Glass 	/**
56*2dcf1433SSimon Glass 	 * enable() - Enable the display port device
57*2dcf1433SSimon Glass 	 *
58*2dcf1433SSimon Glass 	 * @dev:	Device to enable
59*2dcf1433SSimon Glass 	 * @panel_bpp:	Number of bits per pixel for panel
60*2dcf1433SSimon Glass 	 * @timing:	Display timings
61*2dcf1433SSimon Glass 	 * @return 0 if OK, -ve on error
62*2dcf1433SSimon Glass 	 */
63*2dcf1433SSimon Glass 	int (*enable)(struct udevice *dev, int panel_bpp,
64*2dcf1433SSimon Glass 		      const struct display_timing *timing);
65*2dcf1433SSimon Glass };
66*2dcf1433SSimon Glass 
67*2dcf1433SSimon Glass #define display_get_ops(dev)	((struct dm_display_ops *)(dev)->driver->ops)
68*2dcf1433SSimon Glass 
69*2dcf1433SSimon Glass #endif
70