- dcu and imx7 DM_VIDEO conversion
- lb070wv8 compatible in simple_panel driver
- bmp_logo improvements for DM_VIDEO
- EDID updates to filter supported modes
- meson_dw_hdmi: support EDID mode filtering
- dw_hdmi: support ddc-i2c-bus phandle for external I2C masters
- fix rpi crash when firmware doesn't report connected display
This commit is contained in:
Tom Rini
2019-07-29 09:02:46 -04:00
32 changed files with 453 additions and 130 deletions

View File

@@ -170,7 +170,7 @@
#define CONFIG_SYS_DFU_DATA_BUF_SIZE SZ_16M
#define DFU_DEFAULT_POLL_TIMEOUT 300
#ifdef CONFIG_VIDEO
#if defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO)
#define CONFIG_VIDEO_MXS
#define MXS_LCDIF_BASE MX6UL_LCDIF1_BASE_ADDR
#define CONFIG_VIDEO_LOGO

View File

@@ -80,6 +80,16 @@ struct dm_display_ops {
*/
int (*enable)(struct udevice *dev, int panel_bpp,
const struct display_timing *timing);
/**
* mode_valid() - Check if mode is supported
*
* @dev: Device to enable
* @timing: Display timings
* @return true if supported, false if not
*/
bool (*mode_valid)(struct udevice *dev,
const struct display_timing *timing);
};
#define display_get_ops(dev) ((struct dm_display_ops *)(dev)->driver->ops)

View File

@@ -542,6 +542,7 @@ struct dw_hdmi {
u8 i2c_clk_low;
u8 reg_io_width;
struct hdmi_data_info hdmi_data;
struct udevice *ddc_bus;
int (*phy_set)(struct dw_hdmi *hdmi, uint mpixelclock);
void (*write_reg)(struct dw_hdmi *hdmi, u8 val, int offset);

View File

@@ -306,6 +306,28 @@ int edid_get_ranges(struct edid1_info *edid, unsigned int *hmin,
struct display_timing;
/**
* edid_get_timing_validate() - Get basic digital display parameters with
* mode selection callback
*
* @param buf Buffer containing EDID data
* @param buf_size Size of buffer in bytes
* @param timing Place to put preferring timing information
* @param panel_bits_per_colourp Place to put the number of bits per
* colour supported by the panel. This will be set to
* -1 if not available
* @param mode_valid Callback validating mode, returning true is mode is
* supported, false otherwise.
* @parem valid_priv Pointer to private data for mode_valid callback
* @return 0 if timings are OK, -ve on error
*/
int edid_get_timing_validate(u8 *buf, int buf_size,
struct display_timing *timing,
int *panel_bits_per_colourp,
bool (*mode_valid)(void *priv,
const struct display_timing *timing),
void *mode_valid_priv);
/**
* edid_get_timing() - Get basic digital display parameters
*

View File

@@ -6,11 +6,17 @@
*/
#include <linux/fb.h>
int fsl_dcu_init(unsigned int xres, unsigned int yres,
int fsl_dcu_init(struct fb_info *fbinfo,
unsigned int xres,
unsigned int yres,
unsigned int pixel_format);
int fsl_dcu_fixedfb_setup(void *blob);
/* Prototypes for external board-specific functions */
int platform_dcu_init(unsigned int xres, unsigned int yres,
const char *port, struct fb_videomode *dcu_fb_videomode);
int platform_dcu_init(struct fb_info *fbinfo,
unsigned int xres,
unsigned int yres,
const char *port,
struct fb_videomode *dcu_fb_videomode);
unsigned int dcu_set_pixel_clock(unsigned int pixclock);