hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
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
/*
 * Copyright (C) 2013,2014 ARM Limited
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file COPYING in the main directory of this archive
 * for more details.
 *
 *  ARM HDLCD Controller register definition
 */
 
#ifndef __HDLCD_REGS_H__
#define __HDLCD_REGS_H__
 
/* register offsets */
#define HDLCD_REG_VERSION        0x0000    /* ro */
#define HDLCD_REG_INT_RAWSTAT        0x0010    /* rw */
#define HDLCD_REG_INT_CLEAR        0x0014    /* wo */
#define HDLCD_REG_INT_MASK        0x0018    /* rw */
#define HDLCD_REG_INT_STATUS        0x001c    /* ro */
#define HDLCD_REG_FB_BASE        0x0100    /* rw */
#define HDLCD_REG_FB_LINE_LENGTH    0x0104    /* rw */
#define HDLCD_REG_FB_LINE_COUNT        0x0108    /* rw */
#define HDLCD_REG_FB_LINE_PITCH        0x010c    /* rw */
#define HDLCD_REG_BUS_OPTIONS        0x0110    /* rw */
#define HDLCD_REG_V_SYNC        0x0200    /* rw */
#define HDLCD_REG_V_BACK_PORCH        0x0204    /* rw */
#define HDLCD_REG_V_DATA        0x0208    /* rw */
#define HDLCD_REG_V_FRONT_PORCH        0x020c    /* rw */
#define HDLCD_REG_H_SYNC        0x0210    /* rw */
#define HDLCD_REG_H_BACK_PORCH        0x0214    /* rw */
#define HDLCD_REG_H_DATA        0x0218    /* rw */
#define HDLCD_REG_H_FRONT_PORCH        0x021c    /* rw */
#define HDLCD_REG_POLARITIES        0x0220    /* rw */
#define HDLCD_REG_COMMAND        0x0230    /* rw */
#define HDLCD_REG_PIXEL_FORMAT        0x0240    /* rw */
#define HDLCD_REG_RED_SELECT        0x0244    /* rw */
#define HDLCD_REG_GREEN_SELECT        0x0248    /* rw */
#define HDLCD_REG_BLUE_SELECT        0x024c    /* rw */
 
/* version */
#define HDLCD_PRODUCT_ID        0x1CDC0000
#define HDLCD_PRODUCT_MASK        0xFFFF0000
#define HDLCD_VERSION_MAJOR_MASK    0x0000FF00
#define HDLCD_VERSION_MINOR_MASK    0x000000FF
 
/* interrupts */
#define HDLCD_INTERRUPT_DMA_END        (1 << 0)
#define HDLCD_INTERRUPT_BUS_ERROR    (1 << 1)
#define HDLCD_INTERRUPT_VSYNC        (1 << 2)
#define HDLCD_INTERRUPT_UNDERRUN    (1 << 3)
#define HDLCD_DEBUG_INT_MASK        (HDLCD_INTERRUPT_DMA_END |  \
                   HDLCD_INTERRUPT_BUS_ERROR | \
                   HDLCD_INTERRUPT_UNDERRUN)
 
/* polarities */
#define HDLCD_POLARITY_VSYNC        (1 << 0)
#define HDLCD_POLARITY_HSYNC        (1 << 1)
#define HDLCD_POLARITY_DATAEN        (1 << 2)
#define HDLCD_POLARITY_DATA        (1 << 3)
#define HDLCD_POLARITY_PIXELCLK        (1 << 4)
 
/* commands */
#define HDLCD_COMMAND_DISABLE        (0 << 0)
#define HDLCD_COMMAND_ENABLE        (1 << 0)
 
/* pixel format */
#define HDLCD_PIXEL_FMT_LITTLE_ENDIAN    (0 << 31)
#define HDLCD_PIXEL_FMT_BIG_ENDIAN    (1 << 31)
#define HDLCD_BYTES_PER_PIXEL_MASK    (3 << 3)
 
/* bus options */
#define HDLCD_BUS_BURST_MASK        0x01f
#define HDLCD_BUS_MAX_OUTSTAND        0xf00
#define HDLCD_BUS_BURST_NONE        (0 << 0)
#define HDLCD_BUS_BURST_1        (1 << 0)
#define HDLCD_BUS_BURST_2        (1 << 1)
#define HDLCD_BUS_BURST_4        (1 << 2)
#define HDLCD_BUS_BURST_8        (1 << 3)
#define HDLCD_BUS_BURST_16        (1 << 4)
 
/* Max resolution supported is 4096x4096, 32bpp */
#define HDLCD_MAX_XRES            4096
#define HDLCD_MAX_YRES            4096
 
#define NR_PALETTE            256
 
#endif /* __HDLCD_REGS_H__ */