- Fix memory corruption that happened pretty much everytime you pressed a key or moved the mouse -- reponsible for countless crashes, including the famous ASSERT during 1-stage setup.
- Remove anti-memory-corruption-workaround from VFAT
- Note: If you're going to do use device queues in your driver, please learn how. Kthxbye.
Patch by Alex Ionescu <[email protected]>
_____
Alex,
Marry me,
KJK::Hyperion
XOXOXO
See issue #3116 for more details.
svn path=/trunk/; revision=33633
If we do it the other way round, some systems throw away settings like the keyboard translation, when detecting the mouse.
All known keyboard and mouse detection problems should be fixed now! :-)
See issue #2790 for more details.
svn path=/trunk/; revision=32795
Do a much simpler initialization instead:
* The "Get ID" command was used for detecting whether a mouse is present.
But it just handled normal mice, IntelliMice and IntelliMice Explorer, although there can be many more possible values for other mice. (see for example http://www.win.tue.nl/~aeb/linux/kbd/scancodes-13.html#mcf2).
Also this command isn't available on all systems.
Furthermore we already do a MOUSE_LINE_TEST in i8042BasicDetect, which is the more reliable method to test whether a mouse is plugged in. Therefore this "Get ID" command can be simply removed.
* The whole mouse initialization process now boils down to enabling the mouse itself and in the controller
* All in all, some more mice should be detected now.
- Give i8042IsrWritePort a boolean return value and pass the results of the i8042Write calls
- Replace two i8042Write calls for writing to the mouse by one i8042IsrWritePort call where possible
- Remove the unused KBD_LINE_TEST define
This change was tested under QEMU, VMware and on one real system.
svn path=/trunk/; revision=32790
While most return an ACK or NACK as the first byte to indicate, whether a mouse is plugged in or not, some systems (like ECS K7S5A Pro, SiS735 chipset) always return an ACK and 0xAA.
Only the last byte indicates the status of the actual mouse. It is either sent as 0x00 or not.
Therefore only get the first two bytes in a loop and issue just one i8042ReadDataWait command for the last byte.
This reduced the "black screen time" in 1st stage setup (after loading the drivers and before showing the language selection screen) from 45 seconds to 3 seconds on my K7S5A Pro system.
I also tested this change with three other systems, with and without mouse, and they are still detected properly.
- Wait 50 microseconds, when we got no data after the Mouse Reset and before trying it again.
This way, the implementation doesn't depend on the system speed.
- Break the loop, when the CTRL_SELF_TEST command completed successfully.
- Remove the return values from i8042DetectKeyboard and i8042DetectMouse.
We just used them for outputting debug info if no keyboard or mouse was detected. But this info is already printed by the procedures themselves.
This way, I could also drop one variable in i8042DetectMouse :-)
svn path=/trunk/; revision=32725
Don't use three code pathes (keyboard; mouse; keyboard & mouse) anymore and don't check again in EnableInterrupts(), which devices are present.
Instead prepare the flags for i8042ChangeMode() already in StartProcedure() and pass them later.
- Constify the result of CTRL_SELF_TEST (0x55) as KBD_SELF_TEST_OK.
- Add a bug number as a reference for the system flag setting.
svn path=/trunk/; revision=32718
The returns were replaced by INFO's for debug output. Fireball or hpoussin, please review if this fix is ok or if we need to add some more handling for these cases.
See issue #2790 for more details.
svn path=/trunk/; revision=32483
- Make i8042Flush apply only KBD_OBF flag (applying MOU_OBF leads to an infinite loop trying to flush the buffer).
- Fix a bug in i8042Write, where instead of waiting by polling a PollingIterations times (~10000), it was using ResendIterations (=3), thus giving 8042 very small chance of processing the data.
- Make i8042BasicDetect resend CTRL_SELF_TEST sequence, if controller asks so. Maximum resend iterations are limited by ResendIterations variable.
- Reinsert debug-messages hack, since this is an early-loading driver, and it's not possible to break in to KDBG to change debug filter values.
- As a result, keyboard and mouse work on real hardware again.
See issue #3036 for more details.
svn path=/trunk/; revision=32153
Support power keys
Support ctrl+scroll+scroll on debug builds
Add support for driver filters
Take care of more registry settings
A lot of other changes
svn path=/trunk/; revision=30000
scsiport.c: Do not try to open Device subkey if we don't have a service key
cmhardwr.c: Write BIOS information only if we succeeded to open the key
svn path=/trunk/; revision=28217