blob: d31a03d7ce4e21f1fb59392a68a03fd893a8c2c6 [file] [log] [blame]
Stefan Boschb4bb31d2020-07-10 19:07:37 +02001/* 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 */
21struct 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 */
38struct 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 */
62struct 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 */
77enum 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
86extern int bd_setup_lcd_by_id(int id);
87extern int bd_setup_lcd_by_name(char *name);
88extern struct nxp_lcd *bd_get_lcd(void);
89extern const char *bd_get_lcd_name(void);
90extern int bd_get_lcd_density(void);
91extern enum lcd_format bd_get_lcd_format(void);
92extern int bd_fixup_lcd_fdt(void *blob, struct nxp_lcd *cfg);
93
94#endif /* __MACH_NXP_FB_H__ */