]>
Commit | Line | Data |
---|---|---|
83d290c5 | 1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
51f2c99e SG |
2 | /* |
3 | * Copyright 2014 Google Inc. | |
51f2c99e SG |
4 | */ |
5 | ||
2dcf1433 SG |
6 | #ifndef _DISPLAY_H |
7 | #define _DISPLAY_H | |
51f2c99e SG |
8 | |
9 | struct udevice; | |
10 | struct display_timing; | |
11 | ||
12 | /** | |
2dcf1433 SG |
13 | * Display uclass platform data for each device |
14 | * | |
15 | * @source_id: ID for the source of the display data, typically a video | |
16 | * controller | |
17 | * @src_dev: Source device providing the video | |
1b68283b | 18 | * @in_use: Display is being used |
2dcf1433 SG |
19 | */ |
20 | struct display_plat { | |
21 | int source_id; | |
22 | struct udevice *src_dev; | |
1b68283b | 23 | bool in_use; |
2dcf1433 SG |
24 | }; |
25 | ||
26 | /** | |
eab314f5 | 27 | * display_read_timing() - Read timing information |
51f2c99e SG |
28 | * |
29 | * @dev: Device to read from | |
185f812c | 30 | * Return: 0 if OK, -ve on error |
51f2c99e | 31 | */ |
2dcf1433 | 32 | int display_read_timing(struct udevice *dev, struct display_timing *timing); |
51f2c99e SG |
33 | |
34 | /** | |
35 | * display_port_enable() - Enable a display port device | |
36 | * | |
37 | * @dev: Device to enable | |
38 | * @panel_bpp: Number of bits per pixel for panel | |
39 | * @timing: Display timings | |
185f812c | 40 | * Return: 0 if OK, -ve on error |
51f2c99e | 41 | */ |
2dcf1433 SG |
42 | int display_enable(struct udevice *dev, int panel_bpp, |
43 | const struct display_timing *timing); | |
51f2c99e | 44 | |
1b68283b SG |
45 | /** |
46 | * display_in_use() - Check if a display is in use by any device | |
47 | * | |
185f812c | 48 | * Return: true if the device is in use (display_enable() has been called |
1b68283b SG |
49 | * successfully), else false |
50 | */ | |
51 | bool display_in_use(struct udevice *dev); | |
52 | ||
2dcf1433 | 53 | struct dm_display_ops { |
eab314f5 JC |
54 | /** |
55 | * read_timing() - Read information directly | |
56 | * | |
57 | * @dev: Device to read from | |
58 | * @timing: Display timings | |
59 | * @return 0 if OK, -ve on error | |
60 | */ | |
61 | int (*read_timing)(struct udevice *dev, struct display_timing *timing); | |
62 | ||
51f2c99e SG |
63 | /** |
64 | * read_edid() - Read information from EDID | |
65 | * | |
66 | * @dev: Device to read from | |
67 | * @buf: Buffer to read into (should be EDID_SIZE bytes) | |
68 | * @buf_size: Buffer size (should be EDID_SIZE) | |
69 | * @return number of bytes read, <=0 for error | |
70 | */ | |
71 | int (*read_edid)(struct udevice *dev, u8 *buf, int buf_size); | |
72 | ||
73 | /** | |
74 | * enable() - Enable the display port device | |
75 | * | |
76 | * @dev: Device to enable | |
77 | * @panel_bpp: Number of bits per pixel for panel | |
78 | * @timing: Display timings | |
79 | * @return 0 if OK, -ve on error | |
80 | */ | |
81 | int (*enable)(struct udevice *dev, int panel_bpp, | |
82 | const struct display_timing *timing); | |
eb4ee4e4 NA |
83 | |
84 | /** | |
85 | * mode_valid() - Check if mode is supported | |
86 | * | |
87 | * @dev: Device to enable | |
88 | * @timing: Display timings | |
89 | * @return true if supported, false if not | |
90 | */ | |
91 | bool (*mode_valid)(struct udevice *dev, | |
92 | const struct display_timing *timing); | |
51f2c99e SG |
93 | }; |
94 | ||
2dcf1433 | 95 | #define display_get_ops(dev) ((struct dm_display_ops *)(dev)->driver->ops) |
51f2c99e SG |
96 | |
97 | #endif |