1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Joshua Henderson <joshua.henderson@microchip.com>
4  * Copyright (C) 2015 Microchip Technology Inc.  All rights reserved.
5  */
6 #ifndef _ASM_MACH_PIC32_H
7 #define _ASM_MACH_PIC32_H
8 
9 #include <linux/io.h>
10 
11 /*
12  * PIC32 register offsets for SET/CLR/INV where supported.
13  */
14 #define PIC32_CLR(_reg)		((_reg) + 0x04)
15 #define PIC32_SET(_reg)		((_reg) + 0x08)
16 #define PIC32_INV(_reg)		((_reg) + 0x0C)
17 
18 /*
19  * PIC32 Base Register Offsets
20  */
21 #define PIC32_BASE_CONFIG	0x1f800000
22 #define PIC32_BASE_OSC		0x1f801200
23 #define PIC32_BASE_RESET	0x1f801240
24 #define PIC32_BASE_PPS		0x1f801400
25 #define PIC32_BASE_UART		0x1f822000
26 #define PIC32_BASE_PORT		0x1f860000
27 #define PIC32_BASE_DEVCFG2	0x1fc4ff44
28 
29 /*
30  * Register unlock sequence required for some register access.
31  */
32 void pic32_syskey_unlock_debug(const char *fn, const ulong ln);
33 #define pic32_syskey_unlock()	\
34 	pic32_syskey_unlock_debug(__func__, __LINE__)
35 
36 #endif /* _ASM_MACH_PIC32_H */
37