A Case Study On Designing and Implementing IR and Remote

A Case Study On Designing
And Implementing IR And Remote
Solutions For Windows Vista Media
Center Systems
Todd Rutherford
Program Manager
Windows eHome Division
Microsoft Corporation
Session Overview
Building an IR receiver/transceiver? Need to write a port
driver for your hardware? Then this session is for you!
Feature overview
Hardware requirements
Interface requirements
Integrating chips into motherboards
Writing a port driver – what your developer needs to know
Certifying your hardware via Windows Hardware Quality
Labs (WHQL) – overview of the tests and how to ensure
you pass
Components Of The IR Transceiver
Remote control input – 10 feet
Receives commands from remote control
Enables “Parse and Match” – ability to identify remote control
based on IR data sample
Learning – 2-3 inches
Captures IR from set-top box remote controls to retransmit
IR output (emitting) – 1 inch
Sends IR commands from PC to set top box
for changing channels
Allows media center to control TV and satellite set top boxes
System
Resume from standby
IR Receiver Hardware Requirements
Option to build either an input only IR receiver
or full function IR transceiver
Input only IR receivers can ship with tuner-less
media center systems
Full function IR transceivers required when
TV tuner card is present
IR receiver/transceiver hardware requirements
documentation available on Microsoft Connect
WLP includes requirements
Testing will be in the WDK for RC1
Port Driver Interface Requirements
Port driver provide seven services
(implemented as IOCTLs)
What are the hardware’s capabilities?
What emitters are connected?
Flash an LED that the user can see
Emit this IR
Listen for IR
Wake from lower power state
Did you wake the system?
Case Study
Integrating IR functionality
on motherboard
Glen Rockford
Director of Applications Engineering
SMSC
SIO1049 Functional Overview
Consumer IR Port
ICH / SB
LPC Bus
SIO1049
CIR Receive
CIR Emitter
IrDA
Serial Port
Parallel Port
Support for Microsoft® Windows® MCE
Consumer IR codes
Learn Mode Support including Carrier
Freq. Measurement.
4-Channel IR Emitter capability
Programmable Wakeup Event Interface
(IO_PME# Pin)
IrDA, HPSIR, ASKIR, Consumer IR
Support
Serial Ports, Multi-Mode Parallel Port,
GPIO Pins – 14
Intelligent Auto Power Management
64-pin VTQFP Package
System Block Diagram
ICH / SB
LPC Bus
Rear Panel
Emitter Jacks
SIO1049
Front Panel
CIR, Learn CIR
IN &Input
LED
1
2
3
4
5
1
2
3
4
5
6
8
2x4
Header
1
2
3
4
5
2x3
Header
LPC Bus
The SIO1049 is a 3.3V device
The LPC interface pins are 3.3V only
All other SIO1049 pins are 5V tolerant,
(+5.5V max input voltage may be applied)
Compliant to LPC Spec V1.1
SIO1049 Clocks And Power
Clocks
CLOCKI (14.318 MHz)
CLKI32 (32 KHz) required for CIR wake-up
Power
VCC (+3.3V nominal, V-run)
VTR (+3.3V nominal, V-standby or Vtrkl)
VSS (common digital ground)
SIO1049 Configuration
SYSOPT function is a multiplexed function
on two General Purpose IO (GPIO) pins
SYSOPT[1:0] – Four Base Address Options
Strapping option on each individual pin
latched on the trailing edge of PCI_RESET#
IR Detectors/Receivers
CIR Receiver
(Long Range,
De-Modulator)
Learn Mode
Receiver
(Wide Band)
IR Emitters
Signals
ETX[0:3] – 4 emitter transmit outputs
ED[0:3] – 4 emitter Detect inputs
ETX and ED signals are multiplexed with GPIO
pins and are configured by bios
Driver can dynamically detect
and enable/disable individual
ED
emitter channels
Emitter jacks
SJ-3524-SMT (3.5mm stereo jack)
Series current limiting
resistor recommended
on ETX (pin2)
Pull-up resistor on ED (pin3)
IR emitters
ETX
Front Panel Header
CIR Module & IR Wideband Learn Receiver
built into the front panel of the case.
2x4 (keyed) Header, 0.1” on center
Front-Panel
Header
LEARN IN
1
2
Target LED
GND
3
4
Reserved
+3.3V or +5V
Standby
5
6
+5V (extra power in S0)
optional
8
CIR Input
KEY
Rear Panel Header
In-Case or back slot I/O, 2 or 4 (opt.) Emitters
2x3 (keyed) Header, 0.1” on center
Rear-Panel
Header
Emitter Out #1, #3
1
2
Emitter Out #2, #4
Jack Detect #1, #3
3
4
Jack Detect #2, #4
GND
5
KEY
Wake Up Support
Full hardware support
Specific Key (unique key)
Key Class (supports more than one key)
PME Wake-Up from sleep states S3, S4,
and S5
Connect IO_PME# pin to the south bridge
Standby voltage always on
32Khz free running clock to CLKI32
BIOS configuration required
BIOS Porting Considerations
GPIO pin configuration
CIR block (block of 8 I/O registers), 1 IRQ
Emitter block (block of 8 I/O registers), shares
IRQ with CIR block
Configure run-time registers for wake-up
(block of 16 I/O registers)
BIOS and/or driver can configure wake key
Configure legacy blocks (Serial, Parallel, SIR/FIR)
– not required for CIR
SIO1049 BIOS porting guide available
now under NDA
Writing A Port Driver
Peter Viscarola
Consulting Partner
OSR Open Systems
Resources, Inc.
Media Center CIR Environment
User-Mode
Media Center Components
User Mode
Kernel Mode
KBDHID
HIDIR
CIRClass
USBCIR
3rd Party
CIR Port
USB stack
Supporting
Driver Stack
(as required)
Existing
Microsoft
USB-Based Remotes
3rd Party
CIR Hardware
Device Object Relationships
CIR Class is root enumerated
Port drivers are independent
function drivers
CIRCLASS
ROOT
SMSC
Port
Enumeration is H/W specific
Power policy owner
Binding with CIRCLASS at runtime
All information exchanges initiated
by IOCTLs from port driver
FDO
ACPI
PDO
Port/Class Binding Process
Port driver
Invokes CirCoInst co-installer during installation to
ensure CIRCLASS is running
Registers GUID_DEVINTERFACE_IRPORT
device interface
Enables device interface when ready to start
processing requests
CIRClass
Receives device interface notification
Sends IOCTL_IR_HANDSHAKE to port driver
Port driver
Receives IOCTL_IR_HANDSHAKE from CIRClass
Synchronously completes IOCTL with success
Example Data Exchange
IR Data Receive Process
3 Port driver
completes request when:
(a) Buffer Full
(b) End of key press
sequence (timeout)
CIRCLASS
1 Class driver sends
IOCTL_IR_RECEIVE
IR_RECEIVE_PARAMS
DataEnd
ByteCount
2 Port driver fills in
IR_RECEIVE_PARAMS
structure (in input buffer)
with RLC-coded
received data
Data
[ByteCount]
SMSC
Port
Data Format
RLC Coding
Standard format for Class/Port data exchange
Sequence of LONG (signed) values returned
in buffer indicating pulse state
Negative value: Time signal low
Positive value: Signal high
500 usec
200 usec
150 usec
IR_RECEIVE_PARAMS
DataEnd
0x0001
ByteCount
0x0010
Data
0x01F4
0xFF38
0x0096
0xFF38
200 usec
Other Class/Port Functions
IOCTL_IR_RECEIVE
IOCTL_IR_TRANSMIT
IOCTL_IR_PRIORITY_RECEIVE
IOCTL_IR_HANDSHAKE
IOCTL_IR_FLASH_RECEIVER
IOCTL_IR_GET_DEV_CAPS
IOCTL_IR_GET_EMITTERS
IOCTL_IR_GET_WAKE_SOURCE
IOCTL_IR_RESET_DEVICE
IOCTL_IR_ENTER_PRIORITY_RECEIVE
IOCTL_IR_EXIT_PRIORITY_RECEIVE
IOCTL_IR_USER_CLOSE
IOCTL_IR_USER_OPEN
Finally
What Did We Learn?
The new CIR Class/Port structure works
and is easy to implement
KMDF works amazingly
well – no power management code required
The driver’s at the bottom of the hill,
and everything flows down on it:
Hardware design issues, BIOS
integration, software integration
Certifying IR Receivers
Validate Hardware passes the documented
hardware requirements
Sample IR database sent to and from
hardware to validate input, learning and IR
emitting paths
All IOCTL’s are verified for valid responses
Call To Action
Begin designing and building IR receiver
hardware for Windows Vista featuring
Media Center
Determine the best place to integrate the
functionality into your hardware platform
Review the documentation for writing a port
driver for Windows Vista featuring Media Center
available on Microsoft Connect
Review the hardware requirements for IR
transceivers and receivers
Test your hardware and port driver during
the development process
Additional Resources
Web Resources
Windows Vista Logo Program Suite
www.microsoft.com/whdc/winlogo/hwrequirements.mspx
Windows Hardware and Driver Central (WHDC)
www.microsoft.com/whdc/default.mspx
Technical Communities
www.microsoft.com/communities/products/default.mspx
Non-Microsoft Community Sites
www.microsoft.com/communities/related/default.mspx
Front Panel I/O Connectivity Design Guide
www.formfactors.org
Technical Chats and Webcasts
www.microsoft.com/communities/chats/default.mspx
www.microsoft.com/events/default.mspx
Related Microsoft Web sites
www.microsoft.com/whdc/system/platform/mediacenter/default.mspx
www.microsoft.com/whdc/driver/wdf/default.mspx
E-mail Resources
smsc.mce06 @ smsc.com – SIO1049 Data Sheet, BIOS Porting Guide &
Development/Evaluation Platform Information
irrecvr @ microsoft.com – General IR transceiver/receiver questions
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.