summaryrefslogtreecommitdiff
path: root/nuttx/drivers/lcd/pcf8833.h
blob: 36dc65ac3f5d4735ac2d7ca0e092b525c29f7e27 (plain) (blame)
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
/**************************************************************************************
 * drivers/lcd/pcf8833.h
 * Definitions for the Phillips PCF8833 LCD controller
 *
 *   Copyright (C) 2010 Gregory Nutt. All rights reserved.
 *   Author: Gregory Nutt <gnutt@nuttx.org>
 *
 * References: "Data Sheet, PCF8833 STN RGB 132x132x3 driver," Phillips, 2003 Feb 14.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 * 3. Neither the name NuttX nor the names of its contributors may be
 *    used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 **************************************************************************************/

#ifndef __DRIVERS_LCD_PCF8833_H
#define __DRIVERS_LCD_PCF8833_H

/**************************************************************************************
 * Included Files
 **************************************************************************************/

/**************************************************************************************
 * Pre-processor Definitions
 **************************************************************************************/
/* Pixel format codes */

#define PCF8833_FMT_8BPS  (2)
#define PCF8833_FMT_12BPS (3)
#define PCF8833_FMT_16BPS (5)

/* LCD Commands */

#define PCF8833_NOP       0x00 /* No operation; Data: none */
#define PCF8833_SWRESET   0x01 /* Software reset ; Data: none */
#define PCF8833_BSTROFF   0x02 /* Booster voltage off; Data: none */
#define PCF8833_BSTRON    0x03 /* Booster voltage on; Data: none */
#define PCF8833_RDDIDIF   0x04 /* Read display identification; Data: none */
#define PCF8833_RDDST     0x09 /* Read display status; Data: none */
#define PCF8833_SLEEPIN   0x10 /* Sleep_IN; Data: none */
#define PCF8833_SLEEPOUT  0x11 /* Sleep_OUT; Data: none */
#define PCF8833_PTLON     0x12 /* Partial mode on; Data: none */
#define PCF8833_NORON     0x13 /* Normal Display mode on; Data: none */
#define PCF8833_INVOFF    0x20 /* Display inversion off; Data: none */
#define PCF8833_INVON     0x21 /* Display inversion on; Data: none */
#define PCF8833_DALO      0x22 /* All pixel off; Data: none */
#define PCF8833_DAL       0x23 /* All pixel on; Data: none */
#define PCF8833_SETCON    0x25 /* Set contrast; Data: (1) contrast */
#define PCF8833_DISPOFF   0x28 /* Display off; Data: none */
#define PCF8833_DISPON    0x29 /* Display on; Data: none */
#define PCF8833_CASET     0x2a /* Column address set; Data: (1) X start (2) X end  */
#define PCF8833_PASET     0x2b /* Page address set Data: (1) Y start (2) Y end */
#define PCF8833_RAMWR     0x2c /* Memory write; Data: (1) write data */
#define PCF8833_RGBSET    0x2d /* Colour set; Data: (1-8) red tones, (9-16) green tones, (17-20) blue tones */
#define PCF8833_PTLAR     0x30 /* Partial area; Data: (1) start address (2) end address */
#define PCF8833_VSCRDEF   0x33 /* Vertical scroll definition; Data: (1) top fixed, (2) scrol area, (3) bottom fixed */
#define PCF8833_TEOFF     0x34 /* Tearing line off; Data: none */
#define PCF8833_TEON      0x35 /* Tearing line on;  Data: (1) don't care */
#define PCF8833_MADCTL    0x36 /* Memory data access control; Data: (1) access control settings */
#define PCF8833_SEP       0x37 /* Set Scroll Entry Point; Data: (1) scroll entry point */
#define PCF8833_IDMOFF    0x38 /* Idle mode off; Data: none */
#define PCF8833_IDMON     0x39 /* Idle mode on; Data: none */
#define PCF8833_COLMOD    0x3a /* Interface pixel format; Data: (1) color interface format */
#define PCF8833_SETVOP    0xb0 /* Set VOP; Data: (1) VOP5-8 (2) VOP0-4 */
#define PCF8833_BRS       0xb4 /* Bottom Row Swap; Data: none */
#define PCF8833_TRS       0xb6 /* Top Row Swap; Data: none */
#define PCF8833_FINV      0xb9 /* Super Frame INVersion; Data: none */
#define PCF8833_DOR       0xba /* Data ORder; Data: none */
#define PCF8833_TCDFE     0xbd /* Enable/disable DF temp comp; Data: none */
#define PCF8833_TCVOPE    0xbf /* Enable or disable VOP temp comp; Data: none */
#define PCF8833_EC        0xc0 /* Internal or external oscillator; Data: none */
#define PCF8833_SETMUL    0xc2 /* Set multiplication factor; Data: (1) Multiplication factor */
#define PCF8833_TCVOPAB   0xc3 /* Set TCVOP slopes A and B; Data: (1) SLB and SLA */
#define PCF8833_TCVOPCD   0xc4 /* Set TCVOP slopes C and D; Data: (1) SLD and SLC */
#define PCF8833_TCDF      0xc5 /* Set divider frequency; Data: Divider factor in region (1) A (2) B (3) C (4) D */
#define PCF8833_DF8COLOR  0xc6 /* Set divider frequency 8-colour mode; Data: (1) DF80-6 */
#define PCF8833_SETBS     0xc7 /* Set bias system; Data: (1) Bias systems */
#define PCF8833_RDTEMP    0xc8 /* Temperature read back; Data: none */
#define PCF8833_NLI       0xc9 /* N-Line Inversion; Data: (1) NLI time slots invervsion */
#define PCF8833_RDID1     0xda /* Read ID1; Data: none */
#define PCF8833_RDID2     0xdb /* Read ID2; Data: none */
#define PCF8833_RDID3     0xdc /* Read ID3; Data: none */
#define PCF8833_SFD       0xef /* Select factory defaults; Data: none */
#define PCF8833_ECM       0xf0 /* Enter Calibration mode; Data: (1) Calibration control settings */
#define PCF8833_OTPSHTIN  0xf1 /* Shift data in OTP shift registers; Data: Any number of bytes */

/* Memory data access control (MADCTL) bit definitions */

#define MADCTL_RGB        (1 << 3) /* Bit 3: BGR */
#define MADCTL_LAO        (1 << 4) /* Bit 4: Line address order bottom to top */
#define MADCTL_V          (1 << 5) /* Bit 5: Vertical RAM write; in Y direction */
#define MADCTL_MX         (1 << 6) /* Bit 6: Mirror X */
#define MADCTL_MY         (1 << 7) /* Bit 7: Mirror Y */

/* PCF8833 status register bit definitions */
/* CMD format: RDDST command followed by four status bytes: */
/* Byte 1: D31 d30 D29 D28 D27 D26 --- --- */

#define PCF8833_ST_RGB              (1 <<  2) /* Bit 2: D26 - RGB/BGR order */
#define PCF8833_ST_LINEADDR         (1 <<  3) /* Bit 3: D27 - Line address order */
#define PCF8833_ST_ADDRMODE         (1 <<  4) /* Bit 4: D28 - Vertical/horizontal addressing mode */
#define PCF8833_ST_XADDR            (1 <<  5) /* Bit 5: D29 - X address order */
#define PCF8833_ST_YADDR            (1 <<  6) /* Bit 6: D30 - Y address order */
#define PCF8833_ST_BOOSTER          (1 <<  7) /* Bit 7: D31 - Booster voltage status */

/* Byte 2: --- D22 D21 D20 D19 D18 D17 D16 */

#define PCF8833_ST_NORMAL           (1 <<  0) /* Bit 0: D16 - Normal display mode */
#define PCF8833_ST_SLEEPIN          (1 <<  1) /* Bit 1: D17 - Sleep in selected */
#define PCF8833_ST_PARTIAL          (1 <<  2) /* Bit 2: D18 - Partial mode on */
#define PCF8833_ST_IDLE             (1 <<  3) /* Bit 3: D19 - Idle mode selected */
#define PCF8833_ST_PIXELFMT_SHIFT   (4)       /* Bits 4-6: D20-D22 - Interface pixel format */
#define PCF8833_ST_PIXELFMT_MASK    (7 << PCF8833_ST_PIXELFMT_SHIFT)
#  define PCF8833_ST_PIXELFMT_8BPS  (PCF8833_FMT_8BPS << PCF8833_ST_PIXELFMT_SHIFT)
#  define PCF8833_ST_PIXELFMT_12BPS (PCF8833_FMT_12BPS << PCF8833_ST_PIXELFMT_SHIFT)
#  define PCF8833_ST_PIXELFMT_16BPS (PCF8833_FMT_16BPS << PCF8833_ST_PIXELFMT_SHIFT)

/* Byte 3: D15 -- D13 D12 D11 D10 D9  --- */

#define PCF8833_ST_TEARING          (1 << 1) /* Bit 1: D9 - Tearing effect on */
#define PCF8833_ST_DISPLAYON        (1 << 2) /* Bit 2: D10 - Display on */
#define PCF8833_ST_PIXELSOFF        (1 << 3) /* Bit 3: D11 - All pixels off */
#define PCF8833_ST_PIXELSON         (1 << 4) /* Bit 4: D12 - All pixels on */
#define PCF8833_ST_INV              (1 << 5) /* Bit 5: D13 - Display inversion */
#define PCF8833_ST_VSCROLL          (1 << 7) /* Bit 6: D15 - Vertical scroll mode */

/* Byte 4: All zero */

#endif /* __DRIVERS_LCD_PCF8833_H */