- 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:
Aleksey Bragin
2007-05-23 21:26:24 +00:00
parent 83d5ae8eb4
commit ae018d780e
2 changed files with 30 additions and 16 deletions
+24 -10
View File
@@ -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
View File
@@ -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;
}