/* SPDX-License-Identifier: GPL-2.0+ * * Copyright (c) 2017 FriendlyARM (www.arm9.net) * * Copyright (c) 2010 Samsung Electronics Co., Ltd. * http://www.samsung.com/ * * Header file for NXP Display Driver */ #ifndef __MACH_NXP_FB_H__ #define __MACH_NXP_FB_H__ /* * struct nxp_lcd_polarity * @rise_vclk: if 1, video data is fetched at rising edge * @inv_hsync: if HSYNC polarity is inversed * @inv_vsync: if VSYNC polarity is inversed * @inv_vden: if VDEN polarity is inversed */ struct nxp_lcd_polarity { int rise_vclk; int inv_hsync; int inv_vsync; int inv_vden; }; /* * struct nxp_lcd_timing * @h_fp: horizontal front porch * @h_bp: horizontal back porch * @h_sw: horizontal sync width * @v_fp: vertical front porch * @v_fpe: vertical front porch for even field * @v_bp: vertical back porch * @v_bpe: vertical back porch for even field */ struct nxp_lcd_timing { int h_fp; int h_bp; int h_sw; int v_fp; int v_fpe; int v_bp; int v_bpe; int v_sw; }; /* * struct nxp_lcd * @width: horizontal resolution * @height: vertical resolution * @p_width: width of lcd in mm * @p_height: height of lcd in mm * @bpp: bits per pixel * @freq: vframe frequency * @timing: timing values * @polarity: polarity settings * @gpio_init: pointer to GPIO init function * */ struct nxp_lcd { int width; int height; int p_width; int p_height; int bpp; int freq; struct nxp_lcd_timing timing; struct nxp_lcd_polarity polarity; void (*gpio_init)(void); }; /** * Public interfaces */ enum lcd_format { LCD_VESA = 0, LCD_JEIDA = 1, LCD_LOC = 2, LCD_RGB = 4, LCD_HDMI = 5, }; extern int bd_setup_lcd_by_id(int id); extern int bd_setup_lcd_by_name(char *name); extern struct nxp_lcd *bd_get_lcd(void); extern const char *bd_get_lcd_name(void); extern int bd_get_lcd_density(void); extern enum lcd_format bd_get_lcd_format(void); extern int bd_fixup_lcd_fdt(void *blob, struct nxp_lcd *cfg); #endif /* __MACH_NXP_FB_H__ */