Stefan Bosch | b4bb31d | 2020-07-10 19:07:37 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0+ |
| 2 | * |
| 3 | * Copyright (c) 2017 FriendlyARM (www.arm9.net) |
| 4 | * |
| 5 | * Copyright (c) 2010 Samsung Electronics Co., Ltd. |
| 6 | * http://www.samsung.com/ |
| 7 | * |
| 8 | * Header file for NXP Display Driver |
| 9 | */ |
| 10 | |
| 11 | #ifndef __MACH_NXP_FB_H__ |
| 12 | #define __MACH_NXP_FB_H__ |
| 13 | |
| 14 | /* |
| 15 | * struct nxp_lcd_polarity |
| 16 | * @rise_vclk: if 1, video data is fetched at rising edge |
| 17 | * @inv_hsync: if HSYNC polarity is inversed |
| 18 | * @inv_vsync: if VSYNC polarity is inversed |
| 19 | * @inv_vden: if VDEN polarity is inversed |
| 20 | */ |
| 21 | struct nxp_lcd_polarity { |
| 22 | int rise_vclk; |
| 23 | int inv_hsync; |
| 24 | int inv_vsync; |
| 25 | int inv_vden; |
| 26 | }; |
| 27 | |
| 28 | /* |
| 29 | * struct nxp_lcd_timing |
| 30 | * @h_fp: horizontal front porch |
| 31 | * @h_bp: horizontal back porch |
| 32 | * @h_sw: horizontal sync width |
| 33 | * @v_fp: vertical front porch |
| 34 | * @v_fpe: vertical front porch for even field |
| 35 | * @v_bp: vertical back porch |
| 36 | * @v_bpe: vertical back porch for even field |
| 37 | */ |
| 38 | struct nxp_lcd_timing { |
| 39 | int h_fp; |
| 40 | int h_bp; |
| 41 | int h_sw; |
| 42 | int v_fp; |
| 43 | int v_fpe; |
| 44 | int v_bp; |
| 45 | int v_bpe; |
| 46 | int v_sw; |
| 47 | }; |
| 48 | |
| 49 | /* |
| 50 | * struct nxp_lcd |
| 51 | * @width: horizontal resolution |
| 52 | * @height: vertical resolution |
| 53 | * @p_width: width of lcd in mm |
| 54 | * @p_height: height of lcd in mm |
| 55 | * @bpp: bits per pixel |
| 56 | * @freq: vframe frequency |
| 57 | * @timing: timing values |
| 58 | * @polarity: polarity settings |
| 59 | * @gpio_init: pointer to GPIO init function |
| 60 | * |
| 61 | */ |
| 62 | struct nxp_lcd { |
| 63 | int width; |
| 64 | int height; |
| 65 | int p_width; |
| 66 | int p_height; |
| 67 | int bpp; |
| 68 | int freq; |
| 69 | struct nxp_lcd_timing timing; |
| 70 | struct nxp_lcd_polarity polarity; |
| 71 | void (*gpio_init)(void); |
| 72 | }; |
| 73 | |
| 74 | /** |
| 75 | * Public interfaces |
| 76 | */ |
| 77 | enum lcd_format { |
| 78 | LCD_VESA = 0, |
| 79 | LCD_JEIDA = 1, |
| 80 | LCD_LOC = 2, |
| 81 | |
| 82 | LCD_RGB = 4, |
| 83 | LCD_HDMI = 5, |
| 84 | }; |
| 85 | |
| 86 | extern int bd_setup_lcd_by_id(int id); |
| 87 | extern int bd_setup_lcd_by_name(char *name); |
| 88 | extern struct nxp_lcd *bd_get_lcd(void); |
| 89 | extern const char *bd_get_lcd_name(void); |
| 90 | extern int bd_get_lcd_density(void); |
| 91 | extern enum lcd_format bd_get_lcd_format(void); |
| 92 | extern int bd_fixup_lcd_fdt(void *blob, struct nxp_lcd *cfg); |
| 93 | |
| 94 | #endif /* __MACH_NXP_FB_H__ */ |