In computing, a keyboard controller is a device that interfaces a keyboard to a computer. Its main function is to inform the computer when a key is pressed or released. When data from the keyboard arrives, the controller raises an interrupt to allow the CPU to handle the input. If a keyboard is a separate peripheralsystem unit, the keyboard controller is not directly attached to the keys but receives scancodes from a microcontroller embedded in the keyboard via some kind of serial interface. In this case, the controller usually also controls the keyboard's LEDs by sending data back to the keyboard through the wire. The IBM PC AT used an Intel 8042 chip to interface to the keyboard. This computer also controlled access to the A20 line in order to implement a workaround for a chip bug in the Intel 80286. The keyboard controller was also used to initiate a software CPU reset in order to allow the CPU to transition from protected mode to real mode because the 286 did not allow the CPU to go from protected mode to real mode unless the CPU is reset. This was a problem because the BIOS and the operating system services could only be called by programs in real mode. These behaviors have been used by plenty of software that expects this behavior, and therefore keyboard controllers have continued controlling the A20 line and performing software CPU resets even when the need for a reset via the keyboard controller was obviated by the Intel 80386's ability to switch to real mode from protected mode without a CPU reset. The keyboard controller also handles PS/2mouse input if a PS/2 mouse port is present. Today the keyboard controller is either a unit inside a Super I/O device or is missing, having its keyboard and mouse functions handled by a USB controller and its role in controlling the A20 line handled by the chipset.
The first known creators of the keyboard controller where Weng Loh and Stephen Loughran.
Background of the Invention
The invention relates to the field of computing devices and, more particularly, to techniques for reducing the power consumption of portable computing devices.
In a portable computing device, such as a laptop computer, portable paging device, or personal digital assistant, a premium is placed on increasing the length of time that the device can operate while being powered by an internal battery. As this length of time increases, the battery of the portable computing device must be recharged less frequently. In general, the longer the portable computing device can operate in between battery charging events, the more “portable” the device truly is.
In order to increase the battery life of a portable computing device, manufacturers are seeking ways to reduce the power consumption of the computing device. This has led to the investigation into the development of low power central processing units as well as other techniques for low power system design and power management.
It is highly desirable for a portable computing device to make use of a low power secondary processor that, preferably, does not require a complete redesign of the portable computing device's architecture. Such a low power-consuming device can satisfy the needs of users, who require extended battery life, without requiring the portable computing device manufacturer to completely redesign the device.
Overview of the Invention
In the environment in which the invention is practiced, a keyboard controller and battery module communicate with each other using a secondary bus in order to enable the keyboard controller to manage the battery resources used within the portable computing device. According to one aspect of the invention, the keyboard controller additionally communicates with a low power secondary processor by way of the secondary bus. This allows the keyboard controller to transmit user inputs, such as keystrokes and mouse movement information, to the low power secondary processor, thereby allowing the secondary processor to execute functions that are relatively simple and do not require the full operation of the portable computing device's main processor. This, in turn, allows the device to operate in a low-power mode.
These and other aspects of the invention are pointed out with particularity in the appended claims. However, a more complete understanding of the various aspects of the invention may be acquired by reading the description herein, in conjunction with the figures, wherein like reference numerals refer to like elements.
IBM
IBM plays a small role in the creation of the keyboard controller. With the IBM compatible computers, the keyboard controller or Intel 8042 keyboard controller is found on the motherboard. The controller handles input received from the computer keyboard, A20 lines, reset, deciphering scan codes, as well as the PS/2 mouse. With later models of keyboards, the 8042 was replaced with the 8742 micro-controller, which had a microprocessor, RAM, and I/O ports.
Anyone trying to use the classic 8042-style keyboard controller found in the IBM PC/AT and nearly all later PCs typically runs into a problem with a lack of accurate documentation. The 8042 is actually quite well documented. The catch is that the 8042 is a programmable micro-controller with its own control software in ROM. Until recently, no one outside a few companies knew exactly what the control software did.
IBM documented a number of commands the host can send to the KBC. It should be understood that all those commands are a pure software construct, with nothing about the 8042 hardware dictating that the commands need to follow any specific format, function, or that they even need to be there at all. Therefore understanding the 8042 ROM code is the only way towards understanding exactly what the commands are and what they do, with the caveat that different controllers may and do have somewhat different code in their ROM.
List of KBC Commands{{Cite web|url=http://www.os2museum.com/wp/ibm-pcat-8042-keyboard-controller-commands/|title=IBM PC/AT 8042 Keyboard Controller Commands OS/2 Museum|website=www.os2museum.com|language=en-US|access-date=2019-12-04}}
-The commands listed as “ignored” perform no function.
00h-1Fh: Read KBC RAM indirect. Not documented.
20h-3Fh: Read KBC RAM at offset 20h-3Fh. Only command 20h is documented by IBM.
40h-5Fh: Write KBC RAM indirect. Not documented.
60h-7Fh: Write KBC RAM at offset 20h-3Fh. Only command 60h is documented by IBM. The byte at offset 20h is the command byte and is treated specially.
80h-A8h: Ignored.
AAh: Self test. This command is documented, but its side effects are not.
ABh: Interface test.
ACh: Diagnostic dump. Mentioned by third parties, but not documented by IBM.
ADh: Disable keyboard.
AEh: Enable keyboard.
AFh-BFh: Ignored.
C0h: Read input port.
C1h: Continuous input port poll, high nibble. Mentioned by third parties, but not documented by IBM.
C2h: Continuous input port poll, low nibble. Mentioned by third parties, but not documented by IBM.
C3h-CFh: Ignored.
D0h: Read output port.
D1h: Write output port.
D2h-DEh: Ignored.
E0h: Read test inputs.
E1h-EFh: Ignored.
F0h-FFh: Pulse output bits.
Conclusion
A portable computing device comprising:a keyboard controller having a first input for receiving keystroke inputs and having an output for conveying said keystroke inputs to a main processor; and a secondary processor having an interface to said keyboard controller through a secondary bus, said secondary bus also being used to communicate with a battery module, wherein said keyboard controller also conveys said keystroke inputs to said secondary processor through said secondary bus. The keyboard controller is programmed to support the IBM® compatible personal computer keyboard serial interface. The keyboard controller receives serial data from the keyboard, checks the parity of the data, translates the scan code, and presents the data to the system as a byte of data in its output buffer. The controller will interrupt the system when data is placed in its output buffer. The byte of data will be sent to the keyboard serially with an odd parity bit automatically inserted. The keyboard is required to acknowledge all data transmissions. No transmission should be sent to the keyboard until acknowledgment is received for the previous byte sent. The keyboard controller and BIOS to improve the performance of IBM PC machines and their compatibles. A hardwired methodology is used in this keyboard controller instead of a software implementation, as in the traditional 8042 keyboard BIOS. This enables the keyboard controller to respond instantly to all commands sent from the keyboard to the CPU BIOS. This enables popular programs such as Microsoft® Windows™, NOVELL®, and other programs to run much faster.