xref: /openbmc/linux/arch/arm/mach-bcm/bcm_kona_smc.h (revision b8eb35fd)
1b8eb35fdSChristian Daudt /*
2b8eb35fdSChristian Daudt  * Copyright (C) 2013 Broadcom Corporation
3b8eb35fdSChristian Daudt  *
4b8eb35fdSChristian Daudt  * This program is free software; you can redistribute it and/or
5b8eb35fdSChristian Daudt  * modify it under the terms of the GNU General Public License as
6b8eb35fdSChristian Daudt  * published by the Free Software Foundation version 2.
7b8eb35fdSChristian Daudt  *
8b8eb35fdSChristian Daudt  * This program is distributed "as is" WITHOUT ANY WARRANTY of any
9b8eb35fdSChristian Daudt  * kind, whether express or implied; without even the implied warranty
10b8eb35fdSChristian Daudt  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11b8eb35fdSChristian Daudt  * GNU General Public License for more details.
12b8eb35fdSChristian Daudt  */
13b8eb35fdSChristian Daudt 
14b8eb35fdSChristian Daudt #ifndef BCM_KONA_SMC_H
15b8eb35fdSChristian Daudt #define BCM_KONA_SMC_H
16b8eb35fdSChristian Daudt 
17b8eb35fdSChristian Daudt #include <linux/types.h>
18b8eb35fdSChristian Daudt #define FLAGS	(SEC_ROM_ICACHE_ENABLE_MASK | SEC_ROM_DCACHE_ENABLE_MASK | \
19b8eb35fdSChristian Daudt 			SEC_ROM_IRQ_ENABLE_MASK | SEC_ROM_FIQ_ENABLE_MASK)
20b8eb35fdSChristian Daudt 
21b8eb35fdSChristian Daudt /*!
22b8eb35fdSChristian Daudt  * Definitions for IRQ & FIQ Mask for ARM
23b8eb35fdSChristian Daudt  */
24b8eb35fdSChristian Daudt 
25b8eb35fdSChristian Daudt #define FIQ_IRQ_MASK						0xC0
26b8eb35fdSChristian Daudt #define FIQ_MASK						0x40
27b8eb35fdSChristian Daudt #define IRQ_MASK						0x80
28b8eb35fdSChristian Daudt 
29b8eb35fdSChristian Daudt /*!
30b8eb35fdSChristian Daudt  * Secure Mode FLAGs
31b8eb35fdSChristian Daudt  */
32b8eb35fdSChristian Daudt 
33b8eb35fdSChristian Daudt /* When set, enables ICache within the secure mode */
34b8eb35fdSChristian Daudt #define SEC_ROM_ICACHE_ENABLE_MASK                        0x00000001
35b8eb35fdSChristian Daudt 
36b8eb35fdSChristian Daudt /* When set, enables DCache within the secure mode */
37b8eb35fdSChristian Daudt #define SEC_ROM_DCACHE_ENABLE_MASK                        0x00000002
38b8eb35fdSChristian Daudt 
39b8eb35fdSChristian Daudt /* When set, enables IRQ within the secure mode */
40b8eb35fdSChristian Daudt #define SEC_ROM_IRQ_ENABLE_MASK                           0x00000004
41b8eb35fdSChristian Daudt 
42b8eb35fdSChristian Daudt /* When set, enables FIQ within the secure mode */
43b8eb35fdSChristian Daudt #define SEC_ROM_FIQ_ENABLE_MASK                           0x00000008
44b8eb35fdSChristian Daudt 
45b8eb35fdSChristian Daudt /* When set, enables Unified L2 cache within the secure mode */
46b8eb35fdSChristian Daudt #define SEC_ROM_UL2_CACHE_ENABLE_MASK                     0x00000010
47b8eb35fdSChristian Daudt 
48b8eb35fdSChristian Daudt /* Broadcom Secure Service API Service IDs */
49b8eb35fdSChristian Daudt #define SSAPI_DORMANT_ENTRY_SERV                          0x01000000
50b8eb35fdSChristian Daudt #define SSAPI_PUBLIC_OTP_SERV                             0x01000001
51b8eb35fdSChristian Daudt #define SSAPI_ENABLE_L2_CACHE                             0x01000002
52b8eb35fdSChristian Daudt #define SSAPI_DISABLE_L2_CACHE                            0x01000003
53b8eb35fdSChristian Daudt #define SSAPI_WRITE_SCU_STATUS                            0x01000004
54b8eb35fdSChristian Daudt #define SSAPI_WRITE_PWR_GATE                              0x01000005
55b8eb35fdSChristian Daudt 
56b8eb35fdSChristian Daudt /* Broadcom Secure Service API Return Codes */
57b8eb35fdSChristian Daudt #define SEC_ROM_RET_OK			0x00000001
58b8eb35fdSChristian Daudt #define SEC_ROM_RET_FAIL		0x00000009
59b8eb35fdSChristian Daudt 
60b8eb35fdSChristian Daudt #define SSAPI_RET_FROM_INT_SERV		0x4
61b8eb35fdSChristian Daudt #define SEC_EXIT_NORMAL			0x1
62b8eb35fdSChristian Daudt 
63b8eb35fdSChristian Daudt #define SSAPI_ROW_AES			0x0E000006
64b8eb35fdSChristian Daudt #define SSAPI_BRCM_START_VC_CORE	0x0E000008
65b8eb35fdSChristian Daudt 
66b8eb35fdSChristian Daudt #ifndef	__ASSEMBLY__
67b8eb35fdSChristian Daudt extern void bcm_kona_smc_init(void);
68b8eb35fdSChristian Daudt 
69b8eb35fdSChristian Daudt extern unsigned bcm_kona_smc(unsigned service_id,
70b8eb35fdSChristian Daudt 			     unsigned arg0,
71b8eb35fdSChristian Daudt 			     unsigned arg1,
72b8eb35fdSChristian Daudt 			     unsigned arg2,
73b8eb35fdSChristian Daudt 			     unsigned arg3);
74b8eb35fdSChristian Daudt 
75b8eb35fdSChristian Daudt extern int bcm_kona_smc_asm(u32 service_id,
76b8eb35fdSChristian Daudt 			    u32 buffer_addr);
77b8eb35fdSChristian Daudt 
78b8eb35fdSChristian Daudt #endif	/* __ASSEMBLY__ */
79b8eb35fdSChristian Daudt 
80b8eb35fdSChristian Daudt #endif /* BCM_KONA_SMC_H */
81