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