Blame view

RIOT/cpu/x86/include/x86_cmos.h 1.85 KB
a752c7ab   elopes   add first test an...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
  /*
   * Copyright (C) 2014  René Kijewski  <rene.kijewski@fu-berlin.de>
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
   * This library 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
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this library; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
   */
  
  /**
   * Functions to interact with the CMOS memory of the BIOS.
   *
   * @ingroup x86
   * @{
   * @file
   * @author  René Kijewski <rene.kijewski@fu-berlin.de>
   */
  
  #ifndef X86_CMOS_H
  #define X86_CMOS_H
  
  #include "x86_ports.h"
  
  #include <stdint.h>
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  #define CMOS_ADDRESS (0x70)
  #define CMOS_DATA    (0x71)
  
  #define CMOS_SERIAL_OFFS (0x41)
  #define CMOS_SERIAL_LEN  (6)
  
  /**
   * @brief   Read a CMOS register.
   * @returns The value of the CMOS register.
   */
  uint8_t x86_cmos_read(int reg);
  
  /**
   * @brief   Write a CMOS register.
   */
  void x86_cmos_write(int reg, uint8_t value);
  
  /**
   * @brief   Read serial number of the BIOS.
   *
   * Most -- if not all current -- BIOSes do not seem to store any serial number here.
   * This function won't cause an error, but the read serial might be some more or less random data.
   * The implementor of the board specific code should know whether the BIOS contains a serial number.
   */
  void x86_cmos_serial(uint8_t (*serial)[CMOS_SERIAL_LEN]);
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* X86_CMOS_H */
  
  /** @} */