summaryrefslogtreecommitdiff
path: root/nuttx/configs/samv71-xult/src/atmxt-xpro.h
blob: 9eb018b426b3c6fc5c2159be87bb6d9c7f95dd69 (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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
/************************************************************************************
 * configs/samv71-xult/src/atmxt-xpro.h
 *
 *   Copyright (C) 2015 Gregory Nutt. All rights reserved.
 *   Author: Gregory Nutt <gnutt@nuttx.org>
 *
 * 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 __CONFIGS_ATMXT_XPRO_SRC_ATMXT_XPRO_H
#define __CONFIGS_ATMXT_XPRO_SRC_ATMXT_XPRO_H

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

#include <nuttx/config.h>

/************************************************************************************
 * Pre-processor Definitions
 ************************************************************************************/
/* Configuration ********************************************************************/

#define HAVE_MAXTOUCH    1
#define HAVE_ILI9488_RGB 1
#define HAVE_ILI9488_MCU 1

/* maXTouch and LCD only available if the maXTouch Xplained Pro is connected */

#ifndef CONFIG_SAMV71XULT_MXTXPLND
#  undef HAVE_MAXTOUCH
#  undef HAVE_ILI9488_RGB
#  undef HAVE_ILI9488_MCU
#endif

/* maXTouch is only available if the maXTouch driver is enabled */

#if defined(HAVE_MAXTOUCH) && !defined(CONFIG_INPUT_MXT)
#  warning maXTouch support not enabled (CONFIG_INPUT_MXT)
#  undef HAVE_MAXTOUCH
#endif

/* The maXTouch interface requires TWIHS0 */

#if defined(HAVE_MAXTOUCH) && !defined(CONFIG_SAMV7_TWIHS0)
#  warning maXTouch support requires TWIHS0
#  undef HAVE_MAXTOUCH
#endif

/* Verify the maXTouch connector configuration */

#ifdef HAVE_MAXTOUCH
#  if defined(CONFIG_SAMV71XULT_MXTXPLND_EXT1)
#    ifndef CONFIG_SAMV7_GPIOD_IRQ
#      warning maXTouch on EXT1 requires CONFIG_SAMV7_GPIOD_IRQ
#      undef HAVE_MAXTOUCH
#    endif
#  elif defined(CONFIG_SAMV71XULT_MXTXPLND_EXT2)
#    ifndef CONFIG_SAMV7_GPIOA_IRQ
#      warning maXTouch on EXT1 requires CONFIG_SAMV7_GPIOA_IRQ
#      undef HAVE_MAXTOUCH
#    endif
#  else
#    warning maXTouch requires CONFIG_SAMV71XULT_MXTXPLND_EXT1 or EXT2
#    undef HAVE_MAXTOUCH
#  endif
#endif

/* LCD supports requires the ILI9488 driver */

#if (defined(HAVE_ILI9488_RGB) || defined(HAVE_ILI9488_MCU)) && !defined(CONFIG_LCD_ILI9488)
#  undef HAVE_ILI9488_RGB
#  undef HAVE_ILI9488_MCU
#endif

/* ILI9488 RGB support requires the SMC/EBI interface */

#if defined(HAVE_ILI9488_RGB) && !defined(CONFIG_SAMV7_SMC)
#  warning ILI9488 RGB support requires SMC
#  undef HAVE_ILI9488_RGB
#endif

/* ILI9488 MCU support requires SPI0 */

#if defined(HAVE_ILI9488_MCU) && !defined(CONFIG_SAMV7_SPI0)
#  warning ILI9488 MCU support requires SPI0
#  undef HAVE_ILI9488_MCU
#endif

/* Verify the ILI9488 MCU/SPI connector configuration */

#ifdef HAVE_ILI9488_MCU
#  if !defined(CONFIG_SAMV71XULT_MXTXPLND_EXT1) && !defined(CONFIG_SAMV71XULT_MXTXPLND_EXT2)
#    warning ILI9488 MCU requires CONFIG_SAMV71XULT_MXTXPLND_EXT1 or EXT2
#    undef HAVE_ILI9488_MCU
#  endif
#  ifdef CONFIG_SAMV71XULT_MXTXPLND_LCD
#    warning ILI9488 MCU not available at the LCD connector
#    undef HAVE_ILI9488_MCU
#  endif
#endif

/* Verify the ILI9488 RGB/SMC connector configuration */

#ifdef HAVE_ILI9488_RGB
#  ifndef CONFIG_SAMV71XULT_MXTXPLND_LCD
#    warning ILI9488 RGB requires CONFIG_SAMV71XULT_MXTXPLND_LCD
#    undef HAVE_ILI9488_MCU
#  endif
#  if defined(CONFIG_SAMV71XULT_MXTXPLND_EXT1) ||defined(CONFIG_SAMV71XULT_MXTXPLND_EXT2)
#    warning ILI9488 MCU not available at the EXT1 or EXT2 connectors
#    undef HAVE_ILI9488_MCU
#  endif
#endif

/* SAMV71-XULT GPIO Pin Definitions *************************************************/

/* maXTouch Xplained Pro LCD
 *
 * maXTouch Xplained Pro Standard Extension Header
 * -----------------------------------------------
 * This LCD could be connected either via EXT1 or EXT2 using the 2x10
 * 20-pin cable and the maXTouch Xplained Pro standard extension
 * header.  Access is then performed in SPI mode.
 *
 * ---- -------- ---- ----------- ---- ----------- ------------------------------------------
 *                       SAMV71-XULT               maxTouch Xplained Pro
 * PIN  FUNCTION EXT1 FUNC        EXT2 FUNC        Description
 * ---- -------- ---- ----------- ---- ----------- ------------------------------------------
 *  1   ID        -    -           -    -          Communication line to ID chip
 *  2   GND       -    -           -    -          Ground
 *  3   N/C      PC31  -          PD30  -
 *  4   N/C      PA19  -          PC13  -
 *  5   GPIO     PB3  GPIO        PA6  GPIO        Command/Data Select
 *  6   N/C      PB2   -          PD11  -
 *  7   PWM      PA0  PWMC0_PWMH0 PC19 PWMC0_PMWH2 Backlight control
 *  8   N/C      PC30  -          PD26  -
 *  9   GPIO/IRQ PD28 GPIO        PA2  GPIO        IRQ from maXTouch controller
 *  10  GPIO     PA5  GPIO        PA24 GPIO        RESET signal for maXTouch and LCD controller
 *  11  I2C SDA  PA3  TWID0       PA3  TWID0       I2C Data line for maXTouch controller
 *  12  I2C SCL  PA4  TWICK0      PA4  TWICK0      I2C Clock line for maXTouch controller
 *  13  N/C      PB0   -          PA21  -
 *  14  N/C      PB1   -          PB4   -
 *  15  CS       PD25 GPIO        PD27 GPIO        CS line for LCD controller
 *  16  SPI MOSI PD21 SPI0_MOSI   PD21 SPI0_MOSI   SPI Data to LCD controller
 *  17  SPI MISO PD20 SPI0_MISO   PD20 SPI0_MISO   SPI Data from LCD controller
 *  18  SPI SCK  PD22 SPI0_SPCK   PD22 SPI0_SPCK   SPI Clock line
 *  19  GND       -    -           -      -        Ground
 *  20  VCC       -    -           -      -        Target supply voltage
 * ---- -------- ---- ----------- ---- ----------- ------------------------------------------
 */

#ifdef CONFIG_SAMV71XULT_MXTXPLND
#  if defined(CONFIG_SAMV71XULT_MXTXPLND_EXT1)
#    define GPIO_MXTXPLND_RESET \
       (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_SET | \
        GPIO_PORT_PIOA | GPIO_PIN5)
#    define GPIO_ILI9488_BLOFF \
       (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
        GPIO_PORT_PIOA | GPIO_PIN0)

#    ifdef HAVE_MAXTOUCH
#      define GPIO_MXT_CHG \
         (GPIO_INPUT | GPIO_CFG_PULLUP | GPIO_CFG_DEGLITCH | GPIO_INT_FALLING | \
          GPIO_PORT_PIOD | GPIO_PIN28)
#      define IRQ_MXT_CHG \
         SAM_IRQ_PD28
#    endif /* HAVE_MAXTOUCH */

#    ifdef HAVE_ILI9488_MCU
#      define GPIO_ILI9488_CMDDAT \
         (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
          GPIO_PORT_PIOB | GPIO_PIN3)

#      define GPIO_ILI9488_CS \
         (PIO_OUTPUT | GPIO_CFG_PULLUP | GPIO_OUTPUT_SET | \
          GPIO_PORT_PIOD | GPIO_PIN25)
#      define ILI9488_PORT \
         SPI0_CS1
#    endif /* HAVE_ILI9488_MCU */

#  elif defined(CONFIG_SAMV71XULT_MXTXPLND_EXT2)
#    define GPIO_MXTXPLND_RESET \
       (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_SET | \
        GPIO_PORT_PIOA | GPIO_PIN24)

#    define GPIO_ILI9488_BLOFF \
       (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
        GPIO_PORT_PIOC | GPIO_PIN19)

#    ifdef HAVE_MAXTOUCH
#      define GPIO_MXT_CHG \
         (GPIO_INPUT | GPIO_CFG_PULLUP | GPIO_CFG_DEGLITCH | GPIO_INT_FALLING | \
          GPIO_PORT_PIOA | GPIO_PIN2)
#      define IRQ_MXT_CHG \
         SAM_IRQ_PA2
#    endif /* HAVE_MAXTOUCH */

#    ifdef HAVE_ILI9488_MCU
#      define GPIO_ILI9488_CMDDAT \
         (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
          GPIO_PORT_PIOA | GPIO_PIN6)

#      define GPIO_ILI9488_CS \
         (PIO_OUTPUT | GPIO_CFG_PULLUP | GPIO_OUTPUT_SET | \
          GPIO_PORT_PIOD | GPIO_PIN27)
#      define MXTXLPND_PORT \
         SPI0_CS3
#    endif /* HAVE_ILI9488_MCU */

/* maXTouch Xplained Pro Xplained Pro LCD Connector
 * ------------------------------------------------
 * It is also possible to connect the LCD via the flat cable to the EXT4 LCD
 * connector.  In this case, you would use the SMC/EBI to communicate with the
 * LCD.
 * 
 *   ---- ------------ ---- -------- -----------------------------------------------------------
 *          LCD              SAMV71  Description
 *   Pin  Function     Pin  Function
 *   ---- ------------ ---- -------- -----------------------------------------------------------
 *    1   ID            -    -       Communication line to ID chip on extension board
 *    2   GND           -   GND      Ground
 *    3   D0           PC0  D0       Data line
 *    4   D1           PC1  D1       Data line
 *    5   D2           PC2  D2       Data line
 *    6   D3           PC3  D3       Data line
 *    7   GND           -   GND      Ground
 *    8   D4           PC4  D4       Data line
 *    9   D5           PC5  D5       Data line
 *   10   D6           PC6  D6       Data line
 *   11   D7           PC7  D7       Data line
 *   12   GND           -   GND      Ground
 *   13   D8           PE0  D8       Data line
 *   14   D9           PE1  D9       Data line
 *   15   D10          PE2  D10      Data line
 *   16   D11          PE3  D11      Data line
 *   17   GND           -   GND      Ground
 *   18   D12          PE4  D12      Data line
 *   19   D12          PE5  D13      Data line
 *   20   D14          PA15 D14      Data line
 *   21   D15          PA16 D15      Data line
 *   22   GND           -   GND      Ground
 *   23   D16           -    -       Data line
 *   24   D17           -    -       Data line
 *   25   N/C           -    -
 *   26   N/C           -    -
 *   27   GND           -   GND      Ground
 *   28   N/C           -    -
 *   29   N/C           -    -
 *   30   N/C           -    -
 *   31   N/C           -    -
 *   32   GND           -   GND      Ground
 *   33   PCLK/        PC30 GPIO     RGB: Pixel clock Display RAM select.
 *        CMD_DATA_SEL               MCU: One address line of the MCU for displays where it
 *                                        is possible to select either the register or the
 *                                        data interface
 *   34   VSYNC/CS     PD19 NCS3     RGB: Vertical synchronization
 *                                   MCU: Chip select
 *   35   HSYNC/WE     PC8  NWE      RGB: Horizontal synchronization
 *                                   MCU: Write enable signal
 *   36   DATA ENABLE/ PC11 NRD      RGB: Data enable signal
 *        RE                         MCU: Read enable signal
 *   37   SPI SCK       -    -       MCU: Clock for SPI
 *   38   SPI MOSI      -    -       MCU: Master out slave in line of SPI
 *   39   SPI MISO      -    -       MCU: Master in slave out line of SPI
 *   40   SPI SS        -    -       MCU: Slave select for SPI
 *   41   N/C           -    -
 *   42   TWI SDA      PA3  TWD0     I2C data line (maXTouch®)
 *   43   TWI SCL      PA4  TWCK0    I2C clock line (maXTouch)
 *   44   IRQ1         PD28 WKUP5    maXTouch interrupt line
 *   45   N/C          PA2  WKUP2
 *   46   PWM          PC9  TIOB7    Backlight control
 *   47   RESET        PC13 GPIO     Reset for both display and maxTouch
 *   48   VCC           -    -       3.3V power supply for extension board
 *   49   VCC           -    -       3.3V power supply for extension board
 *   50   GND           -    -       Ground
 *   ---- ------------ ---- -------- -----------------------------------------------------------
 */

#  elif defined(CONFIG_SAMV71XULT_MXTXLND_LCD)
#    define GPIO_MXTXPLND_RESET \
       (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_SET | \
        GPIO_PORT_PIOC | GPIO_PIN13)
#    define GPIO_ILI9488_BLOFF \
       (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
        GPIO_PORT_PIOC | GPIO_PIN9)

#    ifdef HAVE_MAXTOUCH
#      define GPIO_MXT_CHG \
         (GPIO_INPUT | GPIO_CFG_PULLUP | GPIO_CFG_DEGLITCH | GPIO_INT_FALLING | \
          GPIO_PORT_PIOD | GPIO_PIN28)
#      define IRQ_MXT_CHG \
         SAM_IRQ_PD28
#    endif /* HAVE_MAXTOUCH */
#  endif /* CONFIG_SAMV71XULT_MXTXLND_xyz */

/* In any event, touchscreen communicates on TWI0, I2C address 0x4a */

#  define MXT_TWI_BUS      0
#  define MXT_I2C_ADDRESS  0x4a

#endif /* CONFIG_SAMV71XULT_MXTXPLND */

/************************************************************************************
 * Public Types
 ************************************************************************************/

/************************************************************************************
 * Public data
 ************************************************************************************/

#ifndef __ASSEMBLY__

/************************************************************************************
 * Public Functions
 ************************************************************************************/

#endif /* __ASSEMBLY__ */
#endif /* __CONFIGS_ATMXT_XPRO_SRC_ATMXT_XPRO_H */