Add support for Electronut Labs Papyr
Signed-off-by: Tavish Naruka <tavishnaruka@gmail.com>
This commit is contained in:
		| @@ -10,6 +10,7 @@ This is a CDC/DFU/UF2 bootloader for nRF52 boards. | ||||
| - Particle Boron | ||||
| - Particle Xenon | ||||
| - MakerDiary MDK nRF52840 USB Dongle | ||||
| - [Electronut Labs Papyr](https://docs.electronut.in/papyr/) | ||||
|  | ||||
| UF2 is an easy-to-use bootloader that appears as a flash drive. You can just copy `.uf2`-format | ||||
| application images to the flash drive to load new firmware. | ||||
|   | ||||
							
								
								
									
										99
									
								
								src/boards/electronut_labs_papyr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								src/boards/electronut_labs_papyr.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,99 @@ | ||||
| /**************************************************************************/ | ||||
| /*! | ||||
|     @file     elelctronutlabs_papyr.h | ||||
|     @author   Tavish Naruka <tavish@electronut.in> | ||||
|  | ||||
|     @section LICENSE | ||||
|  | ||||
|     Software License Agreement (BSD License) | ||||
|  | ||||
|     Copyright (c) 2017, Adafruit Industries (adafruit.com) | ||||
|     All rights reserved. | ||||
|  | ||||
|     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 of the copyright holders 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 ''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 HOLDER 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 PAPYR_H | ||||
| #define PAPYR_H | ||||
|  | ||||
| /*------------------------------------------------------------------*/ | ||||
| /* LED | ||||
|  *------------------------------------------------------------------*/ | ||||
| #define LEDS_NUMBER         2 | ||||
| #define LED_PRIMARY_PIN     13 | ||||
| #define LED_SECONDARY_PIN   14 | ||||
| #define LED_STATE_ON        0 | ||||
|  | ||||
| /*------------------------------------------------------------------*/ | ||||
| /* BUTTON | ||||
|  *------------------------------------------------------------------*/ | ||||
| // NOTE: USB UF2 bootloader can be triggered by double pressing RESET | ||||
| // App can trigger OTA bootloader by writing DFU_MAGIC_OTA_APPJUM to | ||||
| // GPREGRET register if softdevice is not initialized; or by | ||||
| // writing DFU_MAGIC_OTA_RESET in case softdevice is initialized. | ||||
| #define BUTTONS_NUMBER      2 | ||||
| #define BUTTON_1            18 // RESET also by default | ||||
| #define BUTTON_2            1  // P0.1 not exposed anywhere, FRST n/a | ||||
| #define BUTTON_PULL         NRF_GPIO_PIN_PULLUP | ||||
|  | ||||
| /*------------------------------------------------------------------*/ | ||||
| /* UART | ||||
|  *------------------------------------------------------------------*/ | ||||
| #define RX_PIN_NUMBER       7 | ||||
| #define TX_PIN_NUMBER       8 | ||||
| #define CTS_PIN_NUMBER      0 | ||||
| #define RTS_PIN_NUMBER      0 | ||||
| #define HWFC                false | ||||
|  | ||||
| // Used as model string in OTA mode | ||||
| #define DIS_MANUFACTURER    "Electronut Labs" | ||||
| #define DIS_MODEL           "Papyr" | ||||
|  | ||||
| #define BOARD_ID            "Electronut Labs Papyr" | ||||
| #define INDEX_URL           "https://docs.electronut.in/papyr" | ||||
|  | ||||
| #define USB_DESC_VID        0x239A | ||||
| #define USB_DESC_UF2_PID    0x003B | ||||
|  | ||||
| #define USB_STRING_DESCRIPTORS {                                                                                    \ | ||||
|     /* 0: is supported language = English */                                                                        \ | ||||
|     TUD_DESC_STRCONV(0x0409),                                                                                       \ | ||||
|                                                                                                                     \ | ||||
|     /* 1: Manufacturer */                                                                                           \ | ||||
|     TUD_DESC_STRCONV('E','l','e','c','t','r','o','n','u','t',' ','L','a','b','s'),                                  \ | ||||
|                                                                                                                     \ | ||||
|     /* 2: Product */                                                                                                \ | ||||
|     TUD_DESC_STRCONV('P','a','p','y','r', ' ', 'D','F','U'),                                                        \ | ||||
|                                                                                                                     \ | ||||
|     /* 3: Serials TODO use chip ID */                                                                               \ | ||||
|     usb_desc_str_serial,                                                                                            \ | ||||
|                                                                                                                     \ | ||||
|     /* 4: CDC Interface */                                                                                          \ | ||||
|     TUD_DESC_STRCONV('P','a','p','y','r',' ','S','e','r','i','a','l'),                                              \ | ||||
|                                                                                                                     \ | ||||
|     /* 5: MSC Interface */                                                                                          \ | ||||
|     TUD_DESC_STRCONV('P','a','p','y','r',' ','U','F','2'),                                                          \ | ||||
| } | ||||
|  | ||||
| #endif // PPAPYR_H | ||||
| @@ -79,30 +79,33 @@ enum { | ||||
| // STRING DESCRIPTORS | ||||
| //--------------------------------------------------------------------+ | ||||
|  | ||||
| #ifndef USB_STRING_DESCRIPTORS | ||||
| #define USB_STRING_DESCRIPTORS {                                                                                 \ | ||||
|     /* 0: is supported language = English */                                                                        \ | ||||
|     TUD_DESC_STRCONV(0x0409),                                                                                       \ | ||||
|                                                                                                                     \ | ||||
|     /* 1: Manufacturer */                                                                                           \ | ||||
|     TUD_DESC_STRCONV('A','d','a','f','r','u','i','t',' ','I','n','d','u','s','t','r','i','e','s'),                  \ | ||||
|                                                                                                                     \ | ||||
|     /* 2: Product */                                                                                                \ | ||||
|     TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','n','R','F','5','2','8','4','0', ' ', 'D','F','U'),    \ | ||||
|                                                                                                                     \ | ||||
|     /* 3: Serials TODO use chip ID */                                                                               \ | ||||
|     usb_desc_str_serial,                                                                                            \ | ||||
|                                                                                                                     \ | ||||
|     /* 4: CDC Interface */                                                                                          \ | ||||
|     TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','S','e','r','i','a','l'),                              \ | ||||
|                                                                                                                     \ | ||||
|     /* 5: MSC Interface */                                                                                          \ | ||||
|     TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','U','F','2'),                                          \ | ||||
| } | ||||
| #endif | ||||
|  | ||||
| // Serial is 64-bit DeviceID -> 16 chars len | ||||
| uint16_t usb_desc_str_serial[1+16] = { TUD_DESC_STR_HEADER(16) }; | ||||
|  | ||||
| // array of pointer to string descriptors | ||||
| uint16_t const * const string_desc_arr [] = | ||||
| { | ||||
|     // 0: is supported language = English | ||||
|     TUD_DESC_STRCONV(0x0409), | ||||
|  | ||||
|     // 1: Manufacturer | ||||
|     TUD_DESC_STRCONV('A','d','a','f','r','u','i','t',' ','I','n','d','u','s','t','r','i','e','s'), | ||||
|  | ||||
|     // 2: Product | ||||
|     TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','n','R','F','5','2','8','4','0', ' ', 'D','F','U'), | ||||
|  | ||||
|     // 3: Serials TODO use chip ID | ||||
|     usb_desc_str_serial, | ||||
|  | ||||
|     // 4: CDC Interface | ||||
|     TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','S','e','r','i','a','l'), | ||||
|  | ||||
|     // 5: MSC Interface | ||||
|     TUD_DESC_STRCONV('B','l','u','e','f','r','u','i','t',' ','U','F','2'), | ||||
| }; | ||||
| uint16_t const * const string_desc_arr [] = USB_STRING_DESCRIPTORS; | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
| // Device Descriptor | ||||
|   | ||||
| @@ -40,15 +40,23 @@ | ||||
| #define USB_DESC_H_ | ||||
|  | ||||
| #include "tusb.h" | ||||
| #include "boards.h" | ||||
|  | ||||
| #ifdef __cplusplus | ||||
|  extern "C" { | ||||
| #endif | ||||
|  | ||||
| #ifndef USB_DESC_VID | ||||
| #define USB_DESC_VID                0x239A | ||||
| #endif | ||||
|  | ||||
| #ifndef USB_DESC_UF2_PID | ||||
| #define USB_DESC_UF2_PID            0x0029 | ||||
| #endif | ||||
|  | ||||
| #ifndef USB_DESC_SERIAL_ONLY_PID | ||||
| #define USB_DESC_SERIAL_ONLY_PID    0x002A | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /*------------- Configuration Descriptor -------------*/ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user