home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / powerpc / include / asm / nvram.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.8 KB  |  140 lines

  1. /*
  2.  * NVRAM definitions and access functions.
  3.  *
  4.  * This program is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU General Public License
  6.  * as published by the Free Software Foundation; either version
  7.  * 2 of the License, or (at your option) any later version.
  8.  */
  9.  
  10. #ifndef _ASM_POWERPC_NVRAM_H
  11. #define _ASM_POWERPC_NVRAM_H
  12.  
  13. #include <linux/errno.h>
  14.  
  15. #define NVRW_CNT 0x20
  16. #define NVRAM_HEADER_LEN 16 /* sizeof(struct nvram_header) */
  17. #define NVRAM_BLOCK_LEN 16
  18. #define NVRAM_MAX_REQ (2080/NVRAM_BLOCK_LEN)
  19. #define NVRAM_MIN_REQ (1056/NVRAM_BLOCK_LEN)
  20.  
  21. #define NVRAM_AS0  0x74
  22. #define NVRAM_AS1  0x75
  23. #define NVRAM_DATA 0x77
  24.  
  25.  
  26. /* RTC Offsets */
  27.  
  28. #define MOTO_RTC_SECONDS    0x1FF9
  29. #define MOTO_RTC_MINUTES    0x1FFA
  30. #define MOTO_RTC_HOURS        0x1FFB
  31. #define MOTO_RTC_DAY_OF_WEEK    0x1FFC
  32. #define MOTO_RTC_DAY_OF_MONTH    0x1FFD
  33. #define MOTO_RTC_MONTH        0x1FFE
  34. #define MOTO_RTC_YEAR        0x1FFF
  35. #define MOTO_RTC_CONTROLA       0x1FF8
  36. #define MOTO_RTC_CONTROLB       0x1FF9
  37.  
  38. #define NVRAM_SIG_SP    0x02    /* support processor */
  39. #define NVRAM_SIG_OF    0x50    /* open firmware config */
  40. #define NVRAM_SIG_FW    0x51    /* general firmware */
  41. #define NVRAM_SIG_HW    0x52    /* hardware (VPD) */
  42. #define NVRAM_SIG_FLIP    0x5a    /* Apple flip/flop header */
  43. #define NVRAM_SIG_APPL    0x5f    /* Apple "system" (???) */
  44. #define NVRAM_SIG_SYS    0x70    /* system env vars */
  45. #define NVRAM_SIG_CFG    0x71    /* config data */
  46. #define NVRAM_SIG_ELOG    0x72    /* error log */
  47. #define NVRAM_SIG_VEND    0x7e    /* vendor defined */
  48. #define NVRAM_SIG_FREE    0x7f    /* Free space */
  49. #define NVRAM_SIG_OS    0xa0    /* OS defined */
  50. #define NVRAM_SIG_PANIC    0xa1    /* Apple OSX "panic" */
  51.  
  52. /* If change this size, then change the size of NVNAME_LEN */
  53. struct nvram_header {
  54.     unsigned char signature;
  55.     unsigned char checksum;
  56.     unsigned short length;
  57.     char name[12];
  58. };
  59.  
  60. #ifdef __KERNEL__
  61.  
  62. #include <linux/list.h>
  63.  
  64. struct nvram_partition {
  65.     struct list_head partition;
  66.     struct nvram_header header;
  67.     unsigned int index;
  68. };
  69.  
  70.  
  71. extern int nvram_write_error_log(char * buff, int length,
  72.                      unsigned int err_type, unsigned int err_seq);
  73. extern int nvram_read_error_log(char * buff, int length,
  74.                      unsigned int * err_type, unsigned int *err_seq);
  75. extern int nvram_clear_error_log(void);
  76. extern struct nvram_partition *nvram_find_partition(int sig, const char *name);
  77.  
  78. extern int pSeries_nvram_init(void);
  79.  
  80. #ifdef CONFIG_MMIO_NVRAM
  81. extern int mmio_nvram_init(void);
  82. #else
  83. static inline int mmio_nvram_init(void)
  84. {
  85.     return -ENODEV;
  86. }
  87. #endif
  88.  
  89. #endif /* __KERNEL__ */
  90.  
  91. /* PowerMac specific nvram stuffs */
  92.  
  93. enum {
  94.     pmac_nvram_OF,        /* Open Firmware partition */
  95.     pmac_nvram_XPRAM,    /* MacOS XPRAM partition */
  96.     pmac_nvram_NR        /* MacOS Name Registry partition */
  97. };
  98.  
  99. #ifdef __KERNEL__
  100. /* Return partition offset in nvram */
  101. extern int    pmac_get_partition(int partition);
  102.  
  103. /* Direct access to XPRAM on PowerMacs */
  104. extern u8    pmac_xpram_read(int xpaddr);
  105. extern void    pmac_xpram_write(int xpaddr, u8 data);
  106.  
  107. /* Synchronize NVRAM */
  108. extern void    nvram_sync(void);
  109.  
  110. /* Normal access to NVRAM */
  111. extern unsigned char nvram_read_byte(int i);
  112. extern void nvram_write_byte(unsigned char c, int i);
  113. #endif
  114.  
  115. /* Some offsets in XPRAM */
  116. #define PMAC_XPRAM_MACHINE_LOC    0xe4
  117. #define PMAC_XPRAM_SOUND_VOLUME    0x08
  118.  
  119. /* Machine location structure in PowerMac XPRAM */
  120. struct pmac_machine_location {
  121.     unsigned int    latitude;    /* 2+30 bit Fractional number */
  122.     unsigned int    longitude;    /* 2+30 bit Fractional number */
  123.     unsigned int    delta;        /* mix of GMT delta and DLS */
  124. };
  125.  
  126. /*
  127.  * /dev/nvram ioctls
  128.  *
  129.  * Note that PMAC_NVRAM_GET_OFFSET is still supported, but is
  130.  * definitely obsolete. Do not use it if you can avoid it
  131.  */
  132.  
  133. #define OBSOLETE_PMAC_NVRAM_GET_OFFSET \
  134.                 _IOWR('p', 0x40, int)
  135.  
  136. #define IOC_NVRAM_GET_OFFSET    _IOWR('p', 0x42, int)    /* Get NVRAM partition offset */
  137. #define IOC_NVRAM_SYNC        _IO('p', 0x43)        /* Sync NVRAM image */
  138.  
  139. #endif /* _ASM_POWERPC_NVRAM_H */
  140.