hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/*
 * Porting to u-boot:
 *
 * (C) Copyright 2011
 * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
 *
 * Copyright (C) 2008-2009 MontaVista Software Inc.
 * Copyright (C) 2008-2009 Texas Instruments Inc
 *
 * Based on the LCD driver for TI Avalanche processors written by
 * Ajay Singh and Shalom Hai.
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
 
#ifndef DA8XX_FB_H
#define DA8XX_FB_H
 
enum panel_type {
   QVGA = 0,
   WVGA
};
 
enum panel_shade {
   MONOCHROME = 0,
   COLOR_ACTIVE,
   COLOR_PASSIVE,
};
 
enum raster_load_mode {
   LOAD_DATA = 1,
   LOAD_PALETTE,
};
 
struct display_panel {
   enum panel_type panel_type; /* QVGA */
   int max_bpp;
   int min_bpp;
   enum panel_shade panel_shade;
};
 
struct da8xx_panel {
   const char    name[25];    /* Full name <vendor>_<model> */
   unsigned short    width;
   unsigned short    height;
   int        hfp;        /* Horizontal front porch */
   int        hbp;        /* Horizontal back porch */
   int        hsw;        /* Horizontal Sync Pulse Width */
   int        vfp;        /* Vertical front porch */
   int        vbp;        /* Vertical back porch */
   int        vsw;        /* Vertical Sync Pulse Width */
   unsigned int    pxl_clk;    /* Pixel clock */
   unsigned char    invert_pxl_clk;    /* Invert Pixel clock */
};
 
struct da8xx_lcdc_platform_data {
   const char manu_name[10];
   void *controller_data;
   const char type[25];
   void (*panel_power_ctrl)(int);
};
 
struct lcd_ctrl_config {
   const struct display_panel *p_disp_panel;
 
   /* AC Bias Pin Frequency */
   int ac_bias;
 
   /* AC Bias Pin Transitions per Interrupt */
   int ac_bias_intrpt;
 
   /* DMA burst size */
   int dma_burst_sz;
 
   /* Bits per pixel */
   int bpp;
 
   /* FIFO DMA Request Delay */
   int fdd;
 
   /* TFT Alternative Signal Mapping (Only for active) */
   unsigned char tft_alt_mode;
 
   /* 12 Bit Per Pixel (5-6-5) Mode (Only for passive) */
   unsigned char stn_565_mode;
 
   /* Mono 8-bit Mode: 1=D0-D7 or 0=D0-D3 */
   unsigned char mono_8bit_mode;
 
   /* Invert line clock */
   unsigned char invert_line_clock;
 
   /* Invert frame clock  */
   unsigned char invert_frm_clock;
 
   /* Horizontal and Vertical Sync Edge: 0=rising 1=falling */
   unsigned char sync_edge;
 
   /* Horizontal and Vertical Sync: Control: 0=ignore */
   unsigned char sync_ctrl;
 
   /* Raster Data Order Select: 1=Most-to-least 0=Least-to-most */
   unsigned char raster_order;
};
 
struct lcd_sync_arg {
   int back_porch;
   int front_porch;
   int pulse_width;
};
 
void da8xx_video_init(const struct da8xx_panel *panel,
             const struct lcd_ctrl_config *lcd_cfg,
             int bits_pixel);
 
#endif  /* ifndef DA8XX_FB_H */