diff options
Diffstat (limited to 'src/flash')
-rw-r--r-- | src/flash/nor/Makefile.am | 1 | ||||
-rw-r--r-- | src/flash/nor/pic32mx.c | 66 | ||||
-rw-r--r-- | src/flash/nor/pic32mx.h | 94 |
3 files changed, 65 insertions, 96 deletions
diff --git a/src/flash/nor/Makefile.am b/src/flash/nor/Makefile.am index 80428865..ee8d993c 100644 --- a/src/flash/nor/Makefile.am +++ b/src/flash/nor/Makefile.am @@ -39,7 +39,6 @@ noinst_HEADERS = \ imp.h \ non_cfi.h \ ocl.h \ - pic32mx.h \ stellaris.h \ stm32x.h \ str7x.h \ diff --git a/src/flash/nor/pic32mx.c b/src/flash/nor/pic32mx.c index 6e51f1aa..4b8d0272 100644 --- a/src/flash/nor/pic32mx.c +++ b/src/flash/nor/pic32mx.c @@ -28,11 +28,75 @@ #endif #include "imp.h" -#include "pic32mx.h" #include <target/algorithm.h> #include <target/mips32.h> #include <target/mips_m4k.h> + +#define PIC32MX_MANUF_ID 0x029 + +/* pic32mx memory locations */ + +#define PIC32MX_PHYS_RAM 0x00000000 +#define PIC32MX_PHYS_PGM_FLASH 0x1D000000 +#define PIC32MX_PHYS_PERIPHERALS 0x1F800000 +#define PIC32MX_PHYS_BOOT_FLASH 0x1FC00000 + +/* + * Translate Virtual and Physical addresses. + * Note: These macros only work for KSEG0/KSEG1 addresses. + */ + +#define Virt2Phys(v) ((v) & 0x1FFFFFFF) + +/* pic32mx configuration register locations */ + +#define PIC32MX_DEVCFG0 0xBFC02FFC +#define PIC32MX_DEVCFG1 0xBFC02FF8 +#define PIC32MX_DEVCFG2 0xBFC02FF4 +#define PIC32MX_DEVCFG3 0xBFC02FF0 +#define PIC32MX_DEVID 0xBF80F220 + +#define PIC32MX_BMXPFMSZ 0xBF882060 +#define PIC32MX_BMXBOOTSZ 0xBF882070 +#define PIC32MX_BMXDRMSZ 0xBF882040 + +/* pic32mx flash controller register locations */ + +#define PIC32MX_NVMCON 0xBF80F400 +#define PIC32MX_NVMCONCLR 0xBF80F404 +#define PIC32MX_NVMCONSET 0xBF80F408 +#define PIC32MX_NVMCONINV 0xBF80F40C +#define NVMCON_NVMWR (1 << 15) +#define NVMCON_NVMWREN (1 << 14) +#define NVMCON_NVMERR (1 << 13) +#define NVMCON_LVDERR (1 << 12) +#define NVMCON_LVDSTAT (1 << 11) +#define NVMCON_OP_PFM_ERASE 0x5 +#define NVMCON_OP_PAGE_ERASE 0x4 +#define NVMCON_OP_ROW_PROG 0x3 +#define NVMCON_OP_WORD_PROG 0x1 +#define NVMCON_OP_NOP 0x0 + +#define PIC32MX_NVMKEY 0xBF80F410 +#define PIC32MX_NVMADDR 0xBF80F420 +#define PIC32MX_NVMADDRCLR 0xBF80F424 +#define PIC32MX_NVMADDRSET 0xBF80F428 +#define PIC32MX_NVMADDRINV 0xBF80F42C +#define PIC32MX_NVMDATA 0xBF80F430 +#define PIC32MX_NVMSRCADDR 0xBF80F440 + +/* flash unlock keys */ + +#define NVMKEY1 0xAA996655 +#define NVMKEY2 0x556699AA + +struct pic32mx_flash_bank +{ + struct working_area *write_algorithm; + int probed; +}; + static const struct pic32mx_devs_s { uint8_t devid; char *name; diff --git a/src/flash/nor/pic32mx.h b/src/flash/nor/pic32mx.h deleted file mode 100644 index 79fa40ef..00000000 --- a/src/flash/nor/pic32mx.h +++ /dev/null @@ -1,94 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005 by Dominic Rath * - * Dominic.Rath@gmx.de * - * * - * Copyright (C) 2008 by Spencer Oliver * - * spen@spen-soft.co.uk * - * * - * Copyright (C) 2008 by John McCarthy * - * jgmcc@magma.ca * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef PIC32MX_H -#define PIC32MX_H - -struct pic32mx_flash_bank -{ - struct working_area *write_algorithm; - int probed; -}; - -#define PIC32MX_MANUF_ID 0x029 - -/* pic32mx memory locations */ - -#define PIC32MX_PHYS_RAM 0x00000000 -#define PIC32MX_PHYS_PGM_FLASH 0x1D000000 -#define PIC32MX_PHYS_PERIPHERALS 0x1F800000 -#define PIC32MX_PHYS_BOOT_FLASH 0x1FC00000 - -/* - * Translate Virtual and Physical addresses. - * Note: These macros only work for KSEG0/KSEG1 addresses. - */ - -#define Virt2Phys(v) ((v) & 0x1FFFFFFF) - -/* pic32mx configuration register locations */ - -#define PIC32MX_DEVCFG0 0xBFC02FFC -#define PIC32MX_DEVCFG1 0xBFC02FF8 -#define PIC32MX_DEVCFG2 0xBFC02FF4 -#define PIC32MX_DEVCFG3 0xBFC02FF0 -#define PIC32MX_DEVID 0xBF80F220 - -#define PIC32MX_BMXPFMSZ 0xBF882060 -#define PIC32MX_BMXBOOTSZ 0xBF882070 -#define PIC32MX_BMXDRMSZ 0xBF882040 - -/* pic32mx flash controller register locations */ - -#define PIC32MX_NVMCON 0xBF80F400 -#define PIC32MX_NVMCONCLR 0xBF80F404 -#define PIC32MX_NVMCONSET 0xBF80F408 -#define PIC32MX_NVMCONINV 0xBF80F40C -#define NVMCON_NVMWR (1 << 15) -#define NVMCON_NVMWREN (1 << 14) -#define NVMCON_NVMERR (1 << 13) -#define NVMCON_LVDERR (1 << 12) -#define NVMCON_LVDSTAT (1 << 11) -#define NVMCON_OP_PFM_ERASE 0x5 -#define NVMCON_OP_PAGE_ERASE 0x4 -#define NVMCON_OP_ROW_PROG 0x3 -#define NVMCON_OP_WORD_PROG 0x1 -#define NVMCON_OP_NOP 0x0 - -#define PIC32MX_NVMKEY 0xBF80F410 -#define PIC32MX_NVMADDR 0xBF80F420 -#define PIC32MX_NVMADDRCLR 0xBF80F424 -#define PIC32MX_NVMADDRSET 0xBF80F428 -#define PIC32MX_NVMADDRINV 0xBF80F42C -#define PIC32MX_NVMDATA 0xBF80F430 -#define PIC32MX_NVMSRCADDR 0xBF80F440 - -/* flash unlock keys */ - -#define NVMKEY1 0xAA996655 -#define NVMKEY2 0x556699AA - -#endif /* PIC32MX_H */ - |