ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

hwinfo.c
Go to the documentation of this file.
00001 /*
00002  * PROJECT:         ReactOS Boot Loader
00003  * LICENSE:         BSD - See COPYING.ARM in the top level directory
00004  * FILE:            boot/armllb/hw/versatile/hwinfo.c
00005  * PURPOSE:         LLB Hardware Info Routines
00006  * PROGRAMMERS:     ReactOS Portable Systems Group
00007  */
00008 
00009 #include "precomp.h"
00010 
00011 #define PL031_RTC_DR                (LlbHwVersaRtcBase + 0x00)
00012 static const ULONG LlbHwVersaRtcBase = 0x101E8000;
00013 
00014 ULONG
00015 NTAPI
00016 LlbHwGetBoardType(VOID)
00017 {
00018     return MACH_TYPE_VERSATILE_PB;
00019 }
00020 
00021 ULONG
00022 NTAPI
00023 LlbHwGetPClk(VOID)
00024 {
00025     return 24000000;
00026 }
00027 
00028 ULONG
00029 NTAPI
00030 LlbHwGetTmr0Base(VOID)
00031 {
00032     return 0x101E2000;
00033 }
00034 
00035 ULONG
00036 NTAPI
00037 LlbHwGetSerialUart(VOID)
00038 {
00039     return 0;
00040 }
00041 
00042 //
00043 // Versatile Memory Map
00044 //
00045 // 0x00000000 - 0x000000FF ARM Vectors                              [  1 KB]
00046 // 0x00000100 - 0x000001FF ATAG Structures                          [  1 KB]
00047 // 0x00000200 - 0x0000FFFF ARM STACK                                [ 62 KB]
00048 // 0x00010000 - 0x0001FFFF ARM LLB                                  [ 64 KB]
00049 // 0x00020000 - 0x0009FFFF ARM OS LOADER                            [512 KB]
00050 // 0x000A0000 - 0x0013FFFF ARM FRAMEBUFFER                          [640 KB]
00051 // 0x00140000 - 0x007FFFFF OS LOADER FREE/UNUSED                    [  6 MB]
00052 // 0x00800000 - 0x017FFFFF KERNEL, HAL, INITIAL DRIVER LOAD ADDR    [ 16 MB]
00053 // 0x01800000 - 0x037FFFFF RAM DISK                                 [ 32 MB]
00054 // 0x03800000 - 0x07FFFFFF FREE RAM                                 [ 72 MB]
00055 // 0x08000000 - 0x0FFFFFFF FREE RAM IF 256MB DEVICE                 [128 MB]
00056 // 0x10000000 - 0x1FFFFFFF MMIO DEVICES                             [256 MB]
00057 BIOS_MEMORY_MAP LlbHwVersaMemoryMap[] =
00058 {
00059     {0x00000000, 0x00000100, BiosMemoryReserved,   0},
00060     {0x00000100, 0x00000100, BiosMemoryBootStrap,  0},
00061     {0x00000200, 0x0000FE00, BiosMemoryBootStrap,  0},
00062     {0x00010000, 0x00010000, BiosMemoryBootStrap,  0},
00063     {0x00020000, 0x00080000, BiosMemoryBootLoader, 0},
00064     {0x000A0000, 0x000A0000, BiosMemoryBootLoader, 0},
00065     {0x00140000, 0x016C0000, BiosMemoryUsable,     0},
00066     {0x01800000, 0x02000000, BiosMemoryReserved,   0},
00067     {0x10000000, 0x10000000, BiosMemoryReserved,   0},
00068     {0, 0, 0, 0}
00069 };
00070 
00071 VOID
00072 NTAPI
00073 LlbHwBuildMemoryMap(IN PBIOS_MEMORY_MAP MemoryMap)
00074 {
00075     PBIOS_MEMORY_MAP MapEntry;
00076     ULONG Base, Size, FsBase, FsSize;
00077     
00078     /* Parse hardware memory map */
00079     MapEntry = LlbHwVersaMemoryMap;
00080     while (MapEntry->Length)
00081     {
00082         /* Add this entry */
00083         LlbAllocateMemoryEntry(MapEntry->Type, MapEntry->BaseAddress, MapEntry->Length);
00084         
00085         /* Move to the next one */
00086         MapEntry++;
00087     }
00088     
00089     /* Query memory and RAMDISK information */
00090     LlbEnvGetMemoryInformation(&Base, &Size);
00091     LlbEnvGetRamDiskInformation(&FsBase, &FsSize);
00092     
00093     /* Add-in the size of the ramdisk */
00094     Base = FsBase + FsSize;
00095     
00096     /* Subtract size of ramdisk and anything else before it */
00097     Size -= Base;
00098     
00099     /* Allocate an entry for it */
00100     LlbAllocateMemoryEntry(BiosMemoryUsable, Base, Size);
00101 }
00102 
00103 ULONG
00104 LlbHwRtcRead(VOID)
00105 {
00106     /* Read RTC value */
00107     return READ_REGISTER_ULONG(PL031_RTC_DR);
00108 }
00109 /* EOF */

Generated on Mon May 28 2012 04:18:37 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.