mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-01 04:13:35 +00:00
- Merge Revision: 25668
Author: dgorbachev Date: 11:04:23, 1 February 2007. Message: Commit attachment #1151 ---- Modified : /trunk/reactos/boot/freeldr/freeldr/inifile/inifile.c - Merge Revision: 25745 Author: dgorbachev Date: 3:29:50, 7 February 2007. Message: Fix "keyboard does not respond" bug. Thanks to Peter Krawies (breakoutbox /AT/ web /DOT/ de) ---- Modified : /trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c svn path=/branches/winldr/; revision=26875
This commit is contained in:
+24
-10
@@ -1955,6 +1955,8 @@ DetectPS2AuxDevice(VOID)
|
||||
{
|
||||
UCHAR Scancode;
|
||||
UCHAR Status;
|
||||
ULONG Loops;
|
||||
BOOLEAN Result = TRUE;
|
||||
|
||||
PS2ControllerWait();
|
||||
WRITE_PORT_UCHAR((PUCHAR)CONTROLLER_REGISTER_CONTROL,
|
||||
@@ -1965,31 +1967,43 @@ DetectPS2AuxDevice(VOID)
|
||||
WRITE_PORT_UCHAR((PUCHAR)CONTROLLER_REGISTER_DATA,
|
||||
0xF2);
|
||||
|
||||
StallExecutionProcessor(10000);
|
||||
/* Wait for reply */
|
||||
for (Loops = 0; Loops < 10; Loops++)
|
||||
{
|
||||
StallExecutionProcessor(10000);
|
||||
Status = READ_PORT_UCHAR((PUCHAR)CONTROLLER_REGISTER_STATUS);
|
||||
if ((Status & CONTROLLER_STATUS_OUTPUT_BUFFER_FULL) != 0)
|
||||
break;
|
||||
}
|
||||
|
||||
Status = READ_PORT_UCHAR((PUCHAR)CONTROLLER_REGISTER_STATUS);
|
||||
if ((Status & CONTROLLER_STATUS_MOUSE_OUTPUT_BUFFER_FULL) == 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
Result = FALSE;
|
||||
|
||||
Scancode = READ_PORT_UCHAR((PUCHAR)CONTROLLER_REGISTER_DATA);
|
||||
if (Scancode != 0xFA)
|
||||
return FALSE;
|
||||
Result = FALSE;
|
||||
|
||||
StallExecutionProcessor(10000);
|
||||
|
||||
Status = READ_PORT_UCHAR((PUCHAR)CONTROLLER_REGISTER_STATUS);
|
||||
if ((Status & CONTROLLER_STATUS_MOUSE_OUTPUT_BUFFER_FULL) == 0)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
Result = FALSE;
|
||||
|
||||
Scancode = READ_PORT_UCHAR((PUCHAR)CONTROLLER_REGISTER_DATA);
|
||||
if (Scancode != 0x00)
|
||||
return FALSE;
|
||||
Result = FALSE;
|
||||
|
||||
return TRUE;
|
||||
/* Flush output buffer */
|
||||
for (Loops = 0; Loops < 10; Loops++)
|
||||
{
|
||||
Status = READ_PORT_UCHAR((PUCHAR)CONTROLLER_REGISTER_STATUS);
|
||||
if ((Status & CONTROLLER_STATUS_OUTPUT_BUFFER_FULL) == 0)
|
||||
break;
|
||||
StallExecutionProcessor(10000);
|
||||
}
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
static VOID
|
||||
|
||||
+6
-6
@@ -104,12 +104,12 @@ BOOLEAN IniReadSettingByNumber(ULONG SectionId, ULONG SettingNumber, PCHAR Setti
|
||||
DbgPrint((DPRINT_INIFILE, "IniReadSettingByNumber() Setting value = %s\n", SectionItem->ItemValue));
|
||||
|
||||
DbgPrint((DPRINT_INIFILE, "1 NameSize = %d ValueSize = %d\n", NameSize, ValueSize));
|
||||
RtlZeroMemory(SettingName, NameSize);
|
||||
RtlZeroMemory(SettingValue, ValueSize);
|
||||
DbgPrint((DPRINT_INIFILE, "2 NameSize = %d ValueSize = %d\n", NameSize, ValueSize));
|
||||
strncpy(SettingName, SectionItem->ItemName, NameSize);
|
||||
strncpy(SettingName, SectionItem->ItemName, NameSize - 1);
|
||||
SettingName[NameSize - 1] = '\0';
|
||||
DbgPrint((DPRINT_INIFILE, "3 NameSize = %d ValueSize = %d\n", NameSize, ValueSize));
|
||||
strncpy(SettingValue, SectionItem->ItemValue, ValueSize);
|
||||
strncpy(SettingValue, SectionItem->ItemValue, ValueSize - 1);
|
||||
SettingValue[ValueSize - 1] = '\0';
|
||||
DbgPrint((DPRINT_INIFILE, "4 NameSize = %d ValueSize = %d\n", NameSize, ValueSize));
|
||||
DbgDumpBuffer(DPRINT_INIFILE, SettingName, NameSize);
|
||||
DbgDumpBuffer(DPRINT_INIFILE, SettingValue, ValueSize);
|
||||
@@ -146,8 +146,8 @@ BOOLEAN IniReadSettingByName(ULONG SectionId, PCSTR SettingName, PCHAR Buffer, U
|
||||
DbgPrint((DPRINT_INIFILE, "IniReadSettingByName() Setting \'%s\' found.\n", SettingName));
|
||||
DbgPrint((DPRINT_INIFILE, "IniReadSettingByName() Setting value = %s\n", SectionItem->ItemValue));
|
||||
|
||||
RtlZeroMemory(Buffer, BufferSize);
|
||||
strncpy(Buffer, SectionItem->ItemValue, BufferSize);
|
||||
strncpy(Buffer, SectionItem->ItemValue, BufferSize - 1);
|
||||
Buffer[BufferSize - 1] = '\0';
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user