summaryrefslogtreecommitdiff
path: root/nuttx/configs/samv71-xult/src/atmxt-xpro.h
blob: 29dcaa4b671f28fd00cc75454014de4825925248 (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
346
347
348
349
350
351
352
353
354
355
356
357
358
359
/************************************************************************************
 * 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
#undef HAVE_ILI9488_MCU    /* Not yet suppported */

/* 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
/* maXTouch Explained Pro connect on EXT1 */

#  if defined(CONFIG_SAMV71XULT_MXTXPLND_EXT1)
#    ifndef CONFIG_SAMV7_GPIOD_IRQ
#      warning maXTouch on EXT1 requires CONFIG_SAMV7_GPIOD_IRQ
#      undef HAVE_MAXTOUCH
#    endif

/* maXTouch Explained Pro connect on EXT2 */

#  elif defined(CONFIG_SAMV71XULT_MXTXPLND_EXT2)
#    ifndef CONFIG_SAMV7_GPIOA_IRQ
#      warning maXTouch on EXT2 requires CONFIG_SAMV7_GPIOA_IRQ
#      undef HAVE_MAXTOUCH
#    endif

/* maXTouch Explained Pro connect on LCD (EXT4) */

#  elif defined(CONFIG_SAMV71XULT_MXTXPLND_LCD)
#    ifndef CONFIG_SAMV7_GPIOD_IRQ
#      warning maXTouch on EXT4 requires CONFIG_SAMV7_GPIOD_IRQ
#      undef HAVE_MAXTOUCH
#    endif

#  else
#    warning maXTouch requires CONFIG_SAMV71XULT_MXTXPLND_EXT1 or EXT2
#    undef HAVE_MAXTOUCH
#  endif
#endif

/* ILI9488 LCD */

#ifdef HAVE_ILI9488_RGB
/* ILI9488 RGB requires use of LCD connector and SMC and DMA support */

#  ifndef CONFIG_SAMV71XULT_MXTXPLND_LCD
#    warning The ILI8488 LCD must be connected on LCD EXT4 (CONFIG_SAMV71XULT_MXTXPLND_LCD)
#    undef HAVE_ILI9488_RGB
#  endif

/* ILI9488 RGB requires SMC/EBI and XDMAC support */

#  ifndef CONFIG_SAMV7_SMC
#    warning The ILI8488 LCD requires SMC support (CONFIG_SAMV7_SMC)
#    undef HAVE_ILI9488_RGB
#  endif

#  ifndef CONFIG_SAMV7_XDMAC
#    warning The ILI8488 LCD requires DMA support (CONFIG_SAMV7_XDMAC)
#    undef HAVE_ILI9488_RGB
#  endif
#endif

#ifdef HAVE_ILI9488_MCU
/* ILI9488 MCU requires use of EXT1 or EXT2 connector */

#  if !defined(CONFIG_SAMV71XULT_MXTXPLND_EXT1) && !defined(CONFIG_SAMV71XULT_MXTXPLND_EXT2)
#    warning ILI9488 MCU must be connected or EXT1 or EXT2 (CONFIG_SAMV71XULT_MXTXPLND_EXT1/2)
#    undef HAVE_ILI9488_MCU
#  endif

/* ILI9488 MCU requires SPI0 */

#  ifndef CONFIG_SAMV7_SPI0
#    warning ILI9488 MCU support requires SPI0
#    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_ILI9488_RST    (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)

/* maXTouch definitions when connected via EXT1 */

#    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 */

/* ILI9488 MCU mode definitions when connected via EXT1 */

#    ifdef HAVE_ILI9488_MCU
#      define GPIO_ILI9488_CDS  (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)
/* General definitions when connected via EXT2 */

#    define GPIO_ILI9488_RST    (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)

/* maXTouch definitions when connected via EXT2 */

#    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 */

/* ILI9488 MCU mode definitions when connected via EXT2 */

#    ifdef HAVE_ILI9488_MCU
#      define GPIO_ILI9488_CDS  (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 *********************************/
/*
 * Only the RGB is supported by this BSP (via SMC/EBI).  The switch mode
 * selector on the back of the maXtouch should be set in the OFF-ON-OFF
 * positions to select 16-bit color mode.
 *
 * ----------------- ------------- --------------------------------------------------
 *        LCD            SAMV71    Description
 * Pin  Function     Pin  Function
 * ---- ------------ ---- -------- --------------------------------------------------
 *  1   ID            -    -       Chip ID communication line
 *  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   D13          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_MXTXPLND_LCD)
/* General definitions when connected via LCD (EXT4) */

#    define GPIO_ILI9488_RST    (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)

/* maXTouch definitions when connected via LCD (EXT4) */

#    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 */

/* ILI9488 RGB mode definitions when connected via LCD (EXT4) */

#    define GPIO_ILI9488_CDS    (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_SET | \
                                 GPIO_PORT_PIOC | GPIO_PIN30)

#  if 1 /* Until PWM support is available */
#    define GPIO_ILI9488_BKL    (GPIO_OUTPUT | GPIO_CFG_DEFAULT | GPIO_OUTPUT_CLEAR | \
                                 GPIO_PORT_PIOC | GPIO_PIN9)
#  else
#    define GPIO_ILI9488_BKL    GPIO_TC7_TIOB
#  endif
#  endif /* CONFIG_SAMV71XULT_MXTXLND_xyz */

/* In all configurations, the touchscreen communicates on TWI0, I2C address 0x4a */

#  ifdef HAVE_MAXTOUCH

#    define MXT_TWI_BUS         0
#    define MXT_I2C_ADDRESS     0x4a

#  endif /* HAVE_MAXTOUCH */
#endif /* CONFIG_SAMV71XULT_MXTXPLND */

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

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

#ifndef __ASSEMBLY__

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

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