VxWorks Reference Manual : Libraries
smcFdc37b78x - a superIO (fdc37b78x) initialization source module
smcFdc37b78xDevCreate( ) - set correct IO port addresses for Super I/O chip
smcFdc37b78xInit( ) - initializes Super I/O chip Library
smcFdc37b78xKbdInit( ) - initializes the keyboard controller
The FDC37B78x with advanced Consumer IR and IrDA v1.0 support incorporates a keyboard interface, real-time clock, SMSC's true CMOS 765B floppy disk controller, advanced digital data separator, 16 byte data FIFO, two 16C550 compatible UARTs, one Multi-Mode parallel port which includes ChiProtect circuitry plus EPP and ECP support, on-chip 12 mA AT bus drivers, and two floppy direct drive support, soft power management and SMI support and Intelligent Power Management including PME and SCI/ACPI support. The true CMOS 765B core provides 100% compatibility with IBM PC/XT and PC/AT architectures in addition to providing data overflow and underflow protection. The SMSC advanced digital data separator incorporates SMSC's patented data separator technology, allowing for ease of testing and use. Both on-chip UARTs are compatible with the NS16C550. The parallel port, the IDE interface, and the game port select logic are compatible with IBM PC/AT architecture, as well as EPP and ECP.
The FDC37B78x incorporates sophisticated power control circuitry (PCC) which includes support for keyboard, mouse, modem ring, power button support and consumer infrared wake-up events. The PCC supports multiple low power down modes.
The FDC37B78x provides features for compliance with the "Advanced Configuration and Power Interface Specification" (ACPI). These features include support of both legacy and ACPI power management models through the selection of SMI or SCI. It implements a power button override event (4 second button hold to turn off the system) and either edge triggered interrupts.
The FDC37B78x provides support for the ISA Plug-and-Play Standard (Version 1.0a) and provides for the recommended functionality to support Windows95, PC97 and PC98. Through internal configuration registers, each of the FDC37B78x's logical device's I/O address, DMA channel and IRQ channel may be programmed. There are 480 I/O address location options, 12 IRQ options or Serial IRQ option, and four DMA channel options for each logical device.
USAGE This library provides routines to intialize various logical devices on superIO chip (fdc37b78x).
The functions addressed here include:
\i -
Creating a logical device and initializing internal database accordingly.
\i -
Enabling as many device as permitted by this facility by single call. The user of thie facility can selectively intialize a set of devices on superIO chip.
\i -
Intializing keyboard by sending commands to its controller embedded in superIO chip.
INTERNAL DATABASES This library provides it's user to changes superIO's config, index, and data I/O port addresses. The default I/O port addresses are defined in target/h/drv/smcFdc37b78x.h file. These mnemonics can be overridden by defining in architecture related BSP header file. These default setting can also be changed on-the-fly by passing in a pointer of type SMCFDC37B78X_IOPORTS with different I/O port addresses. If not redefined, they take their default values as defined in smcFdc37b78x.h file.
- SMCFDC37B78X_CONFIG_PORT
- Defines the config I/O port for SMC-FDC37B78X superIO chip.
- SMCFDC37B78X_INDEX_PORT
- Defines the index I/O port for SMC-FDC37B78X superIO chip.
- SMCFDC37B78X_DATA_PORT
- Defines the data I/O port for SMC-FDC37B78X superIO chip.
USER INTERFACE
VOID smcFdc37b78xDevCreate ( SMCFDC37B78X_IOPORTS *smcFdc37b78x_iop )This is a very first routine that should be called by the user of this library. This routine sets up IO port address that will subsequentally be used later on. The IO PORT setting could either be overridden by redefining SMCFDC37B78X_CONFIG_PORT, SMCFDC37B78X_INDEX_PORT and SMCFDC37B78X_DATA_PORT or on-the-fly by passing in a pointer of type SMCFDC37B78X_IOPORTS.
VOID smcFdc37b78xInit ( int devInitMask )This is routine intakes device intialization mask and intializes only those devices that are requested by user. Device initialization mask holds bitwise ORed values of all devices that are requested by user to enable on superIO device.The mnemonics that are supported in current version of this facility are:
- SMCFDC37B78X_COM1_EN
- Use this mnemonic to enable COM1 only.
- SMCFDC37B78X_COM2_EN
- Use this mnemonic to enable COM2 only.
- SMCFDC37B78X_LPT1_EN
- Use this mnemonic to enable LPT1 only.
- SMCFDC37B78X_KBD_EN
- Use this mnemonic to enable KBD only.
- SMCFDC37B78X_FDD_EN
- Use this mnemonic to enable FDD only.
The above mentioned can be bitwise ORed to enable more than one device at a time. e.g. if you want COM1 and COM2 to be enable on superIO chip call:
smcFdc37b78xInit (SMCFDC37B78X_COM1_EN | SMCFDC37B78X_COM2_EN);The prerequisites for above mentioned call, superIO chip library should be intialized using smcFdc37b78xDevCreate( ) with parameter as per user's need.
STATUS smcFdc37b78xKbdInit ( VOID )This routine sends some keyboard commands to keyboard controller embedded in superIO chip. Call to this function is required for proper functioning of keyboard driver.
smcFdc37b78x.h
smcFdc37b78xDevCreate( ) - set correct IO port addresses for Super I/O chip
VOID smcFdc37b78xDevCreate ( SMCFDC37B78X_IOPORTS * smcFdc37b78x_iop )
This routine will initialize smcFdc37b78xIoPorts data structure. These ioports can either be changed on-the-fly or overriding SMCFDC37B78X_CONFIG_PORT, SMCFDC37B78X_INDEX_PORT and SMCFDC37B78X_DATA_PORT. This is a necassary step in intialization of superIO chip and logical devices embedded in it.
NONE
smcFdc37b78xInit( ) - initializes Super I/O chip Library
VOID smcFdc37b78xInit ( int devInitMask )
This routine will initialize serial, keyboard, floppy disk, parallel port and gpio pins as a part super i/o intialization
NONE
smcFdc37b78xKbdInit( ) - initializes the keyboard controller
STATUS smcFdc37b78xKbdInit ( )
This routine will initialize keyboard controller
OK/ERROR