Commit | Line | Data |
---|---|---|
d2839953 RC |
1 | /* |
2 | * Utility routines for configuring different memories in Broadcom chips. | |
3 | * | |
965f77c4 | 4 | * Copyright (C) 1999-2019, Broadcom. |
d2839953 RC |
5 | * |
6 | * Unless you and Broadcom execute a separate written software license | |
7 | * agreement governing use of this software, this software is licensed to you | |
8 | * under the terms of the GNU General Public License version 2 (the "GPL"), | |
9 | * available at http://www.broadcom.com/licenses/GPLv2.php, with the | |
10 | * following added to such license: | |
11 | * | |
12 | * As a special exception, the copyright holders of this software give you | |
13 | * permission to link this software with independent modules, and to copy and | |
14 | * distribute the resulting executable under terms of your choice, provided that | |
15 | * you also meet, for each linked independent module, the terms and conditions of | |
16 | * the license of that module. An independent module is a module which is not | |
17 | * derived from this software. The special exception does not apply to any | |
18 | * modifications of the software. | |
19 | * | |
20 | * Notwithstanding the above, under no circumstances may you combine this | |
21 | * software in any way with any other Broadcom software provided under a license | |
22 | * other than the GPL, without Broadcom's express prior written consent. | |
23 | * | |
24 | * | |
25 | * <<Broadcom-WL-IPTag/Open:>> | |
26 | * | |
27 | * $Id: $ | |
28 | */ | |
29 | ||
30 | #ifndef _HNDMEM_H_ | |
31 | #define _HNDMEM_H_ | |
32 | ||
33 | typedef enum { | |
34 | MEM_SOCRAM = 0, | |
35 | MEM_BM = 1, | |
36 | MEM_UCM = 2, | |
37 | MEM_SHM = 3, | |
38 | MEM_MAX = 4 | |
39 | } hndmem_type_t; | |
40 | ||
41 | /* PDA (Power Down Array) configuration */ | |
42 | typedef enum { | |
43 | PDA_CONFIG_CLEAR = 0, /* Clear PDA, i.e. Turns on the memory bank */ | |
44 | PDA_CONFIG_SET_FULL = 1, /* Set PDA, i.e. Truns off the memory bank */ | |
45 | PDA_CONFIG_SET_PARTIAL = 2, /* Set PDA, i.e. Truns off the memory bank */ | |
46 | PDA_CONFIG_MAX = 3 | |
47 | } hndmem_config_t; | |
48 | ||
49 | /* Returns the number of banks in a given memory */ | |
50 | extern int hndmem_num_banks(si_t *sih, int mem); | |
51 | ||
52 | /* Returns the size of a give bank in a given memory */ | |
53 | extern int hndmem_bank_size(si_t *sih, hndmem_type_t mem, int bank_num); | |
54 | ||
55 | /* Returns the start address of given memory */ | |
56 | extern uint32 hndmem_mem_base(si_t *sih, hndmem_type_t mem); | |
57 | ||
58 | #ifdef BCMDEBUG | |
59 | /* Dumps the complete memory information */ | |
60 | extern void hndmem_dump_meminfo_all(si_t *sih); | |
61 | #endif /* BCMDEBUG */ | |
62 | ||
63 | /* Configures the Sleep PDA for a particular bank for a given memory type */ | |
64 | extern int hndmem_sleeppda_bank_config(si_t *sih, hndmem_type_t mem, | |
65 | int bank_num, hndmem_config_t config, uint32 pda); | |
66 | /* Configures the Active PDA for a particular bank for a given memory type */ | |
67 | extern int hndmem_activepda_bank_config(si_t *sih, hndmem_type_t mem, | |
68 | int bank_num, hndmem_config_t config, uint32 pda); | |
69 | ||
70 | /* Configures the Sleep PDA for all the banks for a given memory type */ | |
71 | extern int hndmem_sleeppda_config(si_t *sih, hndmem_type_t mem, | |
72 | hndmem_config_t config); | |
73 | /* Configures the Active PDA for all the banks for a given memory type */ | |
74 | extern int hndmem_activepda_config(si_t *sih, hndmem_type_t mem, | |
75 | hndmem_config_t config); | |
76 | ||
77 | /* Turn off/on all the possible banks in a given memory range */ | |
78 | extern int hndmem_activepda_mem_config(si_t *sih, hndmem_type_t mem, | |
79 | uint32 mem_start, uint32 size, hndmem_config_t config); | |
80 | #endif /* _HNDMEM_H_ */ |