1 /***************************************************************************
\r
2 * Copyright (C) 2005 by Dominic Rath *
\r
3 * Dominic.Rath@gmx.de *
\r
5 * Copyright (C) 2008 by Spencer Oliver *
\r
6 * spen@spen-soft.co.uk *
\r
8 * Copyright (C) 2008 by John McCarthy *
\r
11 * This program is free software; you can redistribute it and/or modify *
\r
12 * it under the terms of the GNU General Public License as published by *
\r
13 * the Free Software Foundation; either version 2 of the License, or *
\r
14 * (at your option) any later version. *
\r
16 * This program is distributed in the hope that it will be useful, *
\r
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
\r
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
\r
19 * GNU General Public License for more details. *
\r
21 * You should have received a copy of the GNU General Public License *
\r
22 * along with this program; if not, write to the *
\r
23 * Free Software Foundation, Inc., *
\r
24 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
\r
25 ***************************************************************************/
\r
32 typedef struct pic32mx_flash_bank_s
\r
34 working_area_t *write_algorithm;
\r
38 } pic32mx_flash_bank_t;
\r
40 #define PIC32MX_MANUF_ID 0x029
\r
42 /* pic32mx memory locations */
\r
44 #define PIC32MX_KUSEG_PGM_FLASH 0x7D000000
\r
45 #define PIC32MX_KUSEG_RAM 0x7F000000
\r
47 #define PIC32MX_KSEG0_RAM 0x80000000
\r
48 #define PIC32MX_KSEG0_PGM_FLASH 0x9D000000
\r
49 #define PIC32MX_KSEG0_BOOT_FLASH 0x9FC00000
\r
51 #define PIC32MX_KSEG1_RAM 0xA0000000
\r
52 #define PIC32MX_KSEG1_PGM_FLASH 0xBD000000
\r
53 #define PIC32MX_KSEG1_PERIPHERAL 0xBF800000
\r
54 #define PIC32MX_KSEG1_BOOT_FLASH 0xBFC00000
\r
56 #define PIC32MX_PHYS_RAM 0x00000000
\r
57 #define PIC32MX_PHYS_PGM_FLASH 0x1D000000
\r
58 #define PIC32MX_PHYS_PERIPHERALS 0x1F800000
\r
59 #define PIC32MX_PHYS_BOOT_FLASH 0x1FC00000
\r
61 /* pic32mx configuration register locations */
\r
63 #define PIC32MX_DEVCFG0 0xBFC02FFC
\r
64 #define PIC32MX_DEVCFG1 0xBFC02FF8
\r
65 #define PIC32MX_DEVCFG2 0xBFC02FF4
\r
66 #define PIC32MX_DEVCFG3 0XBFC02FF0
\r
67 #define PIC32MX_DEVID 0xBF80F220
\r
69 /* pic32mx flash controller register locations */
\r
71 #define PIC32MX_NVMCON 0xBF80F400
\r
72 #define PIC32MX_NVMCONCLR 0xBF80F404
\r
73 #define PIC32MX_NVMCONSET 0xBF80F408
\r
74 #define PIC32MX_NVMCONINV 0xBF80F40C
\r
75 #define NVMCON_NVMWR (1<<15)
\r
76 #define NVMCON_NVMWREN (1<<14)
\r
77 #define NVMCON_NVMERR (1<<13)
\r
78 #define NVMCON_LVDERR (1<<12)
\r
79 #define NVMCON_LVDSTAT (1<<11)
\r
80 #define NVMCON_OP_PFM_ERASE 0x5
\r
81 #define NVMCON_OP_PAGE_ERASE 0x4
\r
82 #define NVMCON_OP_ROW_PROG 0x3
\r
83 #define NVMCON_OP_WORD_PROG 0x1
\r
84 #define NVMCON_OP_NOP 0x0
\r
86 #define PIC32MX_NVMKEY 0xBF80F410
\r
87 #define PIC32MX_NVMADDR 0xBF80F420
\r
88 #define PIC32MX_NVMADDRCLR 0xBF80F424
\r
89 #define PIC32MX_NVMADDRSET 0xBF80F428
\r
90 #define PIC32MX_NVMADDRINV 0xBF80F42C
\r
91 #define PIC32MX_NVMDATA 0xBF80F430
\r
92 #define PIC32MX_NVMSRCADDR 0xBF80F440
\r
94 /* flash unlock keys */
\r
96 #define NVMKEY1 0xAA996655
\r
97 #define NVMKEY2 0x556699AA
\r
99 typedef struct pic32mx_mem_layout_s {
\r
102 } pic32mx_mem_layout_t;
\r
104 #endif /* PIC32MX_H */
\r