Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
cvmx-sysinfo.c
Go to the documentation of this file.
1 /***********************license start***************
2  * Author: Cavium Networks
3  *
4  * Contact: [email protected]
5  * This file is part of the OCTEON SDK
6  *
7  * Copyright (c) 2003-2008 Cavium Networks
8  *
9  * This file is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License, Version 2, as
11  * published by the Free Software Foundation.
12  *
13  * This file is distributed in the hope that it will be useful, but
14  * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16  * NONINFRINGEMENT. See the GNU General Public License for more
17  * details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this file; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22  * or visit http://www.gnu.org/licenses/.
23  *
24  * This file may also be available under a different license from Cavium.
25  * Contact Cavium Networks for more information
26  ***********************license end**************************************/
27 
28 /*
29  * This module provides system/board/application information obtained
30  * by the bootloader.
31  */
32 #include <linux/module.h>
33 
34 #include <asm/octeon/cvmx.h>
37 
42 static struct {
43  struct cvmx_sysinfo sysinfo; /* system information */
44  cvmx_spinlock_t lock; /* mutex spinlock */
45 
46 } state = {
48 };
49 
50 
51 /*
52  * Global variables that define the min/max of the memory region set
53  * up for 32 bit userspace access.
54  */
59 
70 {
71  return &(state.sysinfo);
72 }
74 
103 {
104 
105  /* The sysinfo structure was already initialized */
106  if (state.sysinfo.board_type)
107  return 0;
108 
109  memset(&(state.sysinfo), 0x0, sizeof(state.sysinfo));
110  state.sysinfo.phy_mem_desc_ptr = phy_mem_desc_ptr;
111  state.sysinfo.board_type = board_type;
112  state.sysinfo.board_rev_major = board_rev_major;
113  state.sysinfo.board_rev_minor = board_rev_minor;
114  state.sysinfo.cpu_clock_hz = cpu_clock_hz;
115 
116  return 1;
117 }