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 connect on 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 requires CONFIG_SAMV71XULT_MXTXPLND_EXT1 or EXT2
# 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 */
|