We implemented console support (through serial port), for the current board types...
[reactos.git] / reactos / boot / freeldr / freeldr / include / arch / arm / hardware.h
1 /*
2 * PROJECT: ReactOS Boot Loader
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: boot/freeldr/include/arch/arm/hardware.h
5 * PURPOSE: Header for ARC definitions (to be cleaned up)
6 * PROGRAMMERS: ReactOS Portable Systems Group
7 */
8
9 #ifndef _ARM_HARDWARE_
10 #define __ARM_HARDWARE_
11
12 #ifndef __REGISTRY_H
13 #include "../../reactos/registry.h"
14 #endif
15
16 //
17 // The only things we support
18 //
19 typedef enum _ARM_BOARD_TYPE
20 {
21 //
22 // Marvell Feroceon-based SoC:
23 // Buffalo Linkstation, KuroBox Pro, D-Link DS323 and others
24 //
25 ARM_FEROCEON = 1,
26 } ARM_BOARD_TYPE;
27
28 //
29 // Compatible boot-loaders should return us this information
30 //
31 #define ARM_BOARD_CONFIGURATION_MAJOR_VERSION 1
32 #define ARM_BOARD_CONFIGURATION_MINOR_VERSION 1
33 typedef struct _ARM_BOARD_CONFIGURATION_BLOCK
34 {
35 ULONG MajorVersion;
36 ULONG MinorVersion;
37 ARM_BOARD_TYPE BoardType;
38 ULONG ClockRate;
39 ULONG TimerRegisterBase;
40 ULONG UartRegisterBase;
41 PBIOS_MEMORY_MAP MemoryMap;
42 CHAR CommandLine[256];
43 } ARM_BOARD_CONFIGURATION_BLOCK, *PARM_BOARD_CONFIGURATION_BLOCK;
44
45 //
46 // Static heap for ARC Hardware Component Tree
47 // 16KB oughta be enough for anyone.
48 //
49 #define HW_MAX_ARC_HEAP_SIZE 16 * 1024
50
51 //
52 // ARC Component Configuration Routines
53 //
54 VOID
55 NTAPI
56 FldrSetComponentInformation(
57 IN PCONFIGURATION_COMPONENT_DATA ComponentKey,
58 IN IDENTIFIER_FLAG Flags,
59 IN ULONG Key,
60 IN ULONG Affinity
61 );
62
63 VOID
64 NTAPI
65 FldrSetIdentifier(
66 IN PCONFIGURATION_COMPONENT_DATA ComponentKey,
67 IN PCHAR Identifier
68 );
69
70 VOID
71 NTAPI
72 FldrCreateSystemKey(
73 OUT PCONFIGURATION_COMPONENT_DATA *SystemKey
74 );
75
76 VOID
77 NTAPI
78 FldrCreateComponentKey(
79 IN PCONFIGURATION_COMPONENT_DATA SystemKey,
80 IN PWCHAR BusName,
81 IN ULONG BusNumber,
82 IN CONFIGURATION_CLASS Class,
83 IN CONFIGURATION_TYPE Type,
84 OUT PCONFIGURATION_COMPONENT_DATA *ComponentKey
85 );
86
87 VOID
88 NTAPI
89 FldrSetConfigurationData(
90 IN PCONFIGURATION_COMPONENT_DATA ComponentKey,
91 IN PCM_PARTIAL_RESOURCE_LIST ResourceList,
92 IN ULONG Size
93 );
94
95 VOID
96 ArmFeroSerialInit(IN ULONG Baudrate);
97
98 VOID
99 ArmFeroPutChar(IN INT Char);
100
101 INT
102 ArmFeroGetCh(VOID);
103
104 BOOLEAN
105 ArmFeroKbHit(VOID);
106
107 extern PARM_BOARD_CONFIGURATION_BLOCK ArmBoardBlock;
108
109 #endif