Date: Mon, 22 Apr 1996 23:58:17 -0700 From: jordan@pongo.West.Sun.COM (Jordan Brown) Subject: Item #344: PC keyboard/mouse controller binding P1275 Openboot Working Group Proposal -- Proposal #:344 Ver 0.2 Title: PC Keyboard/Mouse Controller Device Binding Author: Jordan Brown Date: 22 April 1996 Ed/Tech: Mostly editorial Synopsis: Recast proposal 301 into "device binding" template. Doc & Version: 8042 device binding (renamed) v1.0 Problem: Recast proposal 301 into a form more appropriate for publication. Proposal: [[ I'm not sure exactly what the right procedure is here. 301 was approved with modifications, and this document is essentially a restatement of the requirements from that proposal. I think it could probably go straight into a "draft" directory on playground, but would feel a little better if the WG would rubber-stamp it as a draft. It definitely still needs some work. ]] PC Keyboard/Mouse Controller Device Binding to IEEE 1275-1994 Standard for Boot (Initialization, Configuration) Firmware Revision 0.2 DRAFT 04 April 1996 Brian Horn, SunSoft Jordan Brown, SunSoft 1. Purpose of this Device Binding This document specifies the application of Open Firmware to the industry standard PC keyboard/mouse controller, including device-specific requirements and practices for initialization, properties, and methods. 2. Revision History Revision 0.1, 12 December 1995 Initial revision, proposal #301. Brian Horn, SunSoft. Revision 0.2, 22 April 1996 Fit to device binding template. Remove initialization commentary. Add "slot-names". Jordan Brown, SunSoft. 3. References [1] IEEE Std 1275-1994 Standard for Boot (Initialization, Configuration) Firmware, Core Practices and Requirements [2] Technical Reference, Personal Computer AT IBM part number 6280070 [3] Personal System/2 Model 80 Technical Reference IBM part number 68X2256 4. Definition of Terms 5. Device Characteristics (Informative) The PC keyboard/mouse controller implements one or two half-duplex clocked serial interfaces to external devices. This is the sole interface used by PC keyboards, and a common interface for mice. The controller is usually implemented as an Intel 8042 microcontroller with appropriate on-chip firmware, and so is often referred to as an "8042", even though the 8042 is a general-purpose microcontroller. Optionally, the keyboard controller will translate incoming data from an AT keyboard into the equivalent data as from an XT keyboard, for backwards compatibility. 5.1 AT Keyboard Controller The AT keyboard controller implements a single interface, universally used to attach a keyboard. 5.2 PS/2 Keyboard Controller The PS/2 keyboard controller implements two interfaces using two interrupts and a shared register strategy. Conventionally, one interface is the "keyboard" interface and the other the "mouse" interface. The two interfaces are electrically equivalent, but the translation mechanism mentioned above is available only on the "keyboard" interface. 6. Device-specific Configuration Variables None. 7. Device Nodes 7.1. Properties 7.1.1. Open Firmware-defined Properties for Device Nodes "name" Standard Open Firmware property. The value shall be "8042". [[ I'm not entirely happy with this, because the 8042 is general-purpose. ]] "compatible" Standard Open Firmware property. The value shall be "8042". [[ I'm not entirely happy with this, because the 8042 is general-purpose. ]] "device_type" Standard Open Firmware property. The value shall be "8042". "#address-cells" Standard Open Firmware property. The value shall be 1. "#size-cells" Standard Open Firmware property. The value shall be 0. 7.1.2. Device-specific Properties for Device Nodes "slot-names" Specifies the labels on the physical connectors. prop-encoded-array: The concatenation, with encode+, of one or two text strings, each encoded with encode-string. The first entry gives the label on the main connector. If an auxiliary interface is supported, the second entry gives the label on the auxiliary connector. These values are intended to allow the computer to describe the connectors to the user in a way that will allow the user to identify which connector is which. 7.2. Methods 7.2.1. Open Firmware-defined Methods for Device Nodes "encode-unit" "decode-unit" As defined in [1]. Numeric representation of unit addresses: Prop encoded int whose value is either 0 (for the main port) or 1 (for the aux port). Text representation of unit addresses: "main" for the main port. "aux" for the aux port. 7.2.1.1. Device Arguments for "Open" Method None. 7.2.2. Device-specific Methods for Device Nodes None. 8. User Interface Commands 8.1. Open Firmware-defined User Interface Commands None. 8.2. Device-specific User Interface Commands None. 9. Device State 9.1. Device State When Client is Started Undefined. 9.2. Device State Required When Client Calls Open Firmware Undefined. 9.3. Device State When Open Firmware Returns Control to Client Undefined. 10. Other Commentary As the two connectors are often mechanically and electrically identical, it would not be surprising for the user to plug the keyboard into the "mouse" port and vice versa. Obviously, ease of use is improved if this situation is handled gracefully. [ P1275 Item #344 -- Received: Mon Apr 22 23:56:33 PDT 1996 ]