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