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