throbber
Chapter 20: Card Services
`
`Note that the AcknowledgeInterrupt function is called by the status change in-
`terrupt service routine. Interrupts must not be re-enabled while processing a
`status change interrupt. This could cause nesting of status change interrupts
`while processing the socket service's Acknowledgelnterrupt, a situation that
`socket services is unprepared to manage (because the routine is non-
`reentrant).
`
`The Client Call-Back
`
`Numerous events can occur that require a call-back to client drivers. These
`events are listed in table 20-11. The events in the shaded boxes were added
`with the PC Card 95 release.
`
`Table 20-11. Call-Back Events Defined by Card Services
`
`
`
`
`
`
`
`
`
`
`Registered By
`Client(s}
`Source
`7r9-
`Hardware
`Hardware
`
`Socket
`
`:38’_.a
`
`Z
`
`'I'Ds
`DeregisterMTD
`_
`Requester
`RegisterClient
`WeleaseExclusive
`——
`
`——
`
`Code
`01 h
`02h
`40h
`
`40h
`gs.C) 3"
`
`4011
`
`
`
`
`
`RequestSock
`RequestSoc
`
`em
`
`ask
`ask
`
`A“
`
`R R
`
`-
`
`equestExcluswe
`RequestSocketMask
`RequestSocketMask
`RequestSocketMask
`RegisterChent
`
`Socket
`
`__
`
`
`
`
`
`
`
`RequestSockewask
`
`293
`
`Toshiba_Apricorn 1006-0303
`Toshiba_Apricorn 1006-0303
`IPR2018-01067
`|PR2018—01067
`
`40h
`
`05h
`
`0511
`
`06h
`
`07h
`
`Hardware
`
`81h
`
`Queued Erase
`
`91‘:
`
`Card Services
`
`
`' CardSemces
`
`
`
`Event
`BATTE RY_DEAD
`BATTERY_LOW
`CARDJNSERTION
`
`CARD_]NSERTION [A1
`CARD_INSERTION [Al
`CARDJNSER’I‘ION [A]
`cmmsmow w
`mewsmomm
`camm
`mama
`mmmm
`mamas 1m
`mama/aw
`meme
`cmmocx
`ammo
`EJECTIONWCOMPLETE
`EJECTIONJEQUEST
`ERASE_COMPLETE
`EXCLUSIVE_COMPLETE
`EXCLUSWE_REQUEST
`
`INSERTION_COMPLETE
`INSERTIONuREQUEST
`MTD_REQUEST
`
`
`
`RequestExclusive
`Q.t:E.
`
`D [TI 5"
`
`OAh
`
`8D r9 mm?HeEM:339
`
`
`

`

`PCMCIA System Architecture
`
`Table 20-11. Cali-Back Events Defined by Card Services
`
`RegisterClient
`
`Configuring PC Cards During POST
`
`The previous discussions of PC Card configuration have presumed that the
`cards will be installed when the operating system loads or when the PC Card
`is inserted sometime after the operating system has loaded and the system is
`running. If however, the need to load the operating system from the PC Card
`exists, the previously discussed approaches for configuring the cards don't
`work.
`
`To perform initial program load (IPL) from a PC Card, ROM-based PCMCIA
`initialization code must be included with the system. This code must be able
`to program the HBA and parse the CIS to determine if a given card should be
`configured during POST (Power-On Self Test). Once the HBA has been pro—
`grammed, memory cards containing a boot sector can be recognized as
`bootable since they will contain a BIOS Parameter Block (BPB) that permits the
`booting from the PC Card in the same fashion as a floppy drive.
`
`Similarly, ATA drives can be recognized by ROM code by reading the initiali—
`zation byte within the Function Identification tuple. The initialization byte
`specifies that the device should be configured during POST. Once the ATA
`drive is configured, IPL can occur from the PCMCIA ATA drive like any other
`ATA drive.
`
`Note that this initialization process occurs prior to card services being in-
`stalled. As a result, the a client driver will not have registered to receive status
`change events from the PC Card. When the operating system boots, a driver
`for the PC Card that is performing IPL can register with card services.
`
`294
`
`Toshiba_Apricorn 1006-0304
`Toshiba_Apricorn 1006-0304
`IPR2018-01067
`|PR2018—01067
`
`

`

`
`Chapter 21: Client Drivers
`
`Chapter 21
`
`The Previous Chapter
`
`The previous chapter focused on the role of card services in the PCMCIA en-
`vironment. It also reviewed each of the functions defined by the PC Card
`specification that apply to 16-bit PC Cards, and defined the related return
`codes. The call back mechanism was also described and the event and call
`back codes were defined.
`
`This Chapter
`
`This chapter discusses the three basic types of enablers: point enablers, device-
`specific enablers, and super enablers. The chapter also discusses the jobs per-
`formed by generic memory enablers (and MTDs) and [/0 device enablers.
`
`The Next Chapter
`
`The next chapter discusses the problems associated with loading the operating
`system from a PC Card.
`It also defines mechanisms used to determine
`whether a given PC Card is a bootable device, and the firmware support re-
`quired to support PC Card booting.
`
`Overview
`
`This chapter discusses PC Card enablers. The chapter focuses primarily on cli-
`ent driver enablers, but also includes a brief discussion of point enablers at the
`end of the chapter. Note that the terms PC Card enabler, client, client driver,
`and device driver are all used to describe the software that is responsible for
`configuring a PC Card. This chapter uses the terms enabler and client driver.
`
`
`
`295
`
`Toshiba_Apricorn 1006-0305
`Toshiba_Apricorn 1006-0305
`IPR2018-01067
`|PR2018—01067
`
`

`

`PCMCIA System Architecture
`
`Specific types of client drivers (enablers) discussed in this chapter include:
`
`I»
`
`SRAM client drivers
`
`Flash client drivers and Memory Technology Drivers (MTUs)
`I
`0 Generic I/ 0 client drivers
`
`In order to configure a PC Card, enablers must first register with card serv—
`ices. The primary tunction of an enabler is to detect and configure PC Cards
`that it supports. As such, the enabler must be prepared to configure its card
`no matter when it is installed. In order to configure cards installed after power
`up, the enabler registers with card services to receive a call back (i.e., a card
`insertion call-back) each time card services detects that a PC Cards has been
`
`installed. During registration, the enabler can also request that card services
`generate a call-back for each PC Card already installed, thereby calling the en»
`abler’s configuration routine.
`
`
`
`The Card Insertion Call-Back
`
`When card services makes a card insertion call-back it Specifies the type of
`call-back initiated, along with the logical socket that the card was inserted
`into. The call-back routine then attempts to configure the card. Figure 21-1 il-
`lustrates the typical process used by an enabler to configure a card. The CIS
`may have to be accessed several
`times to obtain a combination of card-
`required resources that can be successfully allocated to the card (i.e., resources
`that are not already assigned to other devices).
`
`The configuration process begins when card services makes the card insertion
`call—back to the enabler. The enabler detects which event caused the call-back
`
`and obtains information supplied by card services (e.g., which logical socket
`the card was inserted into).
`
`The method of configuring a card varies depending of the type of card to be
`configured. The next section discusses generic memory enablers, and the fol-
`lowing section describes the operation of a generic I/ O enabler.
`
`As discussed in the previous chapter, a variety of services are available for the
`PC Card enablers (i.e., card services client drivers) to configure a PC Card.
`
`296
`
`Toshiba_Apricorn 1006-0306
`Toshiba_Apricorn 1006-0306
`IPR2018-01067
`|PR2018—01067
`
`

`

`Chapter 21: Client Drivers
`
`Card configured
`or does not belong
`to enabler
`
` End
`(card not configured)
`
`Start Configuration
`
`
`
`Cali
`
`GetConfiglnfo
`
`
`
`Card not configured
`and beloan to
`enabler
`
`
` Process
`
`Not available.
`
`
`try next options
`
`
` Request
`
`
`allocation
`Not available.
`
`of resources
`End
`no more otions
`
`
`{card not configured)
`
`C IS
`
`
`
`
`Flesources
`granted to
`enabler
`
`
`Call
`
`
`RequestConfig
`
`
`End
`(card configured)
`
`Figure 21-1. A Sample Configuration Process Used By a Card Services Client
`
`
`
`Memory Drivers and Memory Technology Drivers
`
`Memory client drivers provide virual disk drive support. In short, these driv-
`ers are responsible for storing and retrieving files within the memory card.
`The method required to access the memory card varies depending 0n the type
`of memory devices (i.e., memory technology] implemented in the card. Since
`memory devices (such as flash) require various programming algorithms,
`each memory type must have an associated memory technology driver
`(MTD).
`
`E
`
`Toshiba_Apricorn 1006-0307
`Toshiba_Apricorn 1006-0307
`IPR2018-01067
`lPR2018—01067
`
`

`

`PCMCIA System Architecture
`
`Figure 21-2 illustrates the overall software architecture specified for accessing
`memory cards as virtual disk drives. Notice that memory client drivers re—
`ceive file access requests from the file system and must access the memory
`card to fullfill each request. The file system might be the standard file system
`used by the opertating system (e.g., the DOS FAT system) or an installable
`system required when accessing flash memory. Card services provides bulk
`memory services that simplifies the memory client driver’s job of accessing a
`specific block of memory within the memory card.
`
`SRAM memory client drivers typically interface directly to the operating sys
`tem’s file manager, since there are no restrictions related to writing and
`reading data to or from SRAM. These client drivers are designed to access
`memory via the bulk memory services provided by card services. Since ac-
`cessing SRAM is uniform and quite simple (byte read / write capability), the
`memory technology driver is incorporated into card services.
`
`Flash memory client drivers interface directly to a flash file system. A special
`file system is required for flash devices due to the special requirements asso-
`ciated with writing to flash memory. Two major factors are:
`
`O Write operations require first erasing a specified block of memory fol-
`lowed by the block write, and may take several seconds to complete.
`Flash memory also has a limited write~cycle life. That is, repetitive era-
`sures and writes to the same memory block destroys the chips ability to
`retain data within that block. The maximum number of erasures and
`
`I
`
`writes are specified by the manufacturer (e.g., a flash device may specify
`as life of as few as 10,000 writes).
`
`Knowing the restrictions associated with accessing flash memory, the flash file
`system is designed specifically to provide compatible access to flash memory.
`For example,
`the flash file system distributes writes to flash memory to
`minimize the effects of repetitive write ware and accomodates the slow erase
`time.
`
`Memory enablers (client drivers) have a formidable task to perform since a
`wide variety of memory card implementations exist. The enabler must also
`acquire a drive letter from the operating system to allocate to each card slots
`that a memory card might be inserted into. The following sections describe the
`jobs performed by SRAM and flash client drivers.
`
`298
`
`Toshiba_Apricorn 1006-0308
`Toshiba_Apricorn 1006-0308
`IPR2018-01067
`|PR2018—01067
`
`

`

`Chapter 21: Client Drivers
`
`Applications
`
`Client Dr'rve
`
`
`_
`
`Bulk Memory Services—"
`
`MTD
`
`SHAM
`
`Flash
`Flle System
`
`Installabls
`
`File System
`
`Flash
`Client Driver
`
`Operating
`System
`
`Card Services
`
`Socket Services
`
`
`
`Figure 21-2. Memory Client Driver Software Environment
`
`SRAM Client Drivers
`
`SRAM client drivers typically load as installable device drivers via the con-
`figsys file or equivalent mechanism. One of the tasks performed by the device
`driver is to detect the presence of card services by calling the GetCSlnfo serv-
`ice. If the call returns the ASCII string ”CS,” then SRAM client driver
`recognizes that card services are installed. Note that if card services is not in-
`stalled, the SRAM driver typically reports the error condition and terminates
`
`299
`
`Toshiba_Apricorn 1006-0309
`Toshiba_Apricorn 1006-0309
`IPR2018-01067
`|PR2018—01067
`
`

`

`PCMCIA System Architecture
`
`without remaining resident in memory. When card services is detected, the
`driver then registers with card services.
`
`The driver must also obtain logical drive letters needed to perform the disk
`emulation. Note that the drive letter is acquired when the device driver in-
`stalls even though a memory card may not be installed in the system. In this
`case, an attempt to access files associated with the drive letter assigned to the
`socket will result in a drive not ready error.
`
`SRAM Client Driver Registers with Card Services
`
`The client driver performs the registration process by calling the RegisterCli-
`ent service. The SRAM client identifies itself as a memory client, registers to
`receive relevant call-back events, and passes a pointer to its call-back routine.
`The client may also request that card services generate a card insertion call-
`back for each PC Card already installed in the system. The memory client re-
`ceives a handle value from card services when it returns from the call. Once
`
`registered, the memory client awaits call—backs from card servcies, notifying it
`when a PC card is inserted or removed.
`
`The SRAM Client Driver Call-Back
`
`When card services generates the card insertion call-back, it also passes the
`logical socket number that the PC Card was inserted into. The memory client
`then attempts to configure the PC Card.
`
`The memory client must first determine if it should attempt to configure the
`PC Card by determining the card type. Memory clients can use the bulk
`memory services to access a specific region within the PC card. To access
`memory, the client first calls the OpenMemory service by specifying an offset
`Within the card’s attribute or common memory address space. Card services
`then returns a memory handle to the client that it can use when accessing
`memory relative to the offset specified in the OpenMemory service. Note that
`if card services does not support bulk memory services, the memory client
`must use the RequestWindow service to specify the host system address space
`that it wishes to use to access PC Card memory.
`
`Reading from or writing to PC Card memory is accomplished by calling the
`ReadMemory or WriteMemory services. The memory client passes the mem-
`ory handle it received from the OpenMemory service and specifies the
`memory offset and range of addresses it wishes to access. The call will likely
`
`
`
`300
`
`Toshiba_Apricorn 1006-0310
`Toshiba_Apricorn 1006-0310
`IPR2018-01067
`|PR2018—01067
`
`

`

`Chapter 21: Client Drivers
`
`Specify location zero within the attribute memory address space. When the
`data is returned to the memory client it evaluates the DEVICE tuple to de-
`termine if the card contains SRAM.
`
`Note that determining the card type can be a complicated process for memory
`clients. Some memory cards implement the CIS in attribute memory (required
`by the PC Card standard), some implement the C18 in common memory,
`while others do not implement a C15 at all. To complicate matters, some CIS
`implementations are invalid, requiring the enabler to attempt interpretation of
`the faulty CIS. If the card does not contain a C18, the enabler attempts to de-
`tect
`the presence of
`the BPB (BIOS parameter block), which contains
`information that specifies the logical size of the disk. The BPB if present
`should reside at either location 0 or 512 in common memory.
`
`If an SRAM card is detected, the call-back routine return to card services, in-
`dicating that the card was successfully configured. If the PC Card was not an
`SRAM card, the client returns to card services, indicating the card was not
`configured by the SRAM enabler.
`
`Flash Client Drivers
`
`Figure 21-3 illustrates the flash client driver software environment. Three
`types of flash client drivers are illustrated in figure 21-3. Two of the client
`drivers are shown interfacing to a flash file system and the other via a file
`translation layer. (Each file system is discussed later in this chapter.)
`
`The flash client drivers typically load as installable device drivers via the con-
`figsys file or equivalent mechanism. The first task performed by the device
`driver is to detect the presence of card services. If card services are not in-
`stalled, the flash driver typically reports the error condition and terminates
`without remaining resident in memory. When card services is detected, the
`driver then registers with card services.
`
`Flash client drivers differ from SRAM drivers in two important ways:
`
`Flash client drivers interface to the flash file system
`0
`0 MTD client drivers must be installed to handle calls made to bulk memory
`services
`
`The MTD must register prior to the flash client driver. This is necessary be-
`cause the flash client driver uses the MTD to access the flash card.
`
`301
`
`Toshiba_Apricorn 1006-0311
`Toshiba_Apricorn 1006-031 1
`IPR2018-01067
`|PR2018—01067
`
`

`

`PCMCIA System Architecture
`
`Operating
`System
`
`lnstallable
`File System
`
`Standard
`File System
`
`
`
`Flash
`File System
`
`Flash
`Translation
`
`La er
`
`Flash
`Client Driver
`
`Flash
`Client Driver
`
`Flash
`Client Driver
`
`Applications
`
`
`
`
`
`
`
`
`
`
`
` Memory
`Technolog
`
`Driver
`
`Card Services
`
`_
`Bulk Memory Services
`
`Socket Services
`
`Figure 21-3. Software Environment Required for Flash Card Support
`
`302
`
`Toshiba_Apricorn 1006-0312
`Toshiba_Apricorn 1006-0312
`IPR2018-01067
`|PR2018—01067
`
`

`

`Chapter 21: Client Drivers
`
`Like SRAM client drivers, flash client drivers must also obtain logical drive
`letters needed to perform the disk emulation. The drive letter is acquired
`when the device driver installs even thOugh a memory card may not be in-
`stalled in the system. In this case, an attempt to access files associated with the
`drive letter assigned to the socket will result in a drive not ready error.
`
`The Flash File System
`
`Two primary types of flash file system solution are provided by software
`vendors today. These systems are generally referred to as the flash file system
`(FPS) and flash translation layer (FTL) as illustrated in figure 21-3. The FPS
`provides file management based on variable size data blocks, while the FTL
`interfaces directly to the DOS file system which allocates data based on stan-
`dard block sizes. The FTL system is compatible with disk utility programs
`such as Norton and PC Tools, whereas, the FFS—based systems are not.
`
`MTD Registers with Card Services
`
`The MTD registers with card services by calling the Register-Client service.
`When registering the MTD specifies that it is a MTD client during , specifies
`relevant call-back events it want to be notified of, and passes a pointer to its
`call-back routine. The MTD client may also request that card services generate
`a card insertion call-back for each PC Card already installed in the system.
`The MTD client receives a handle value from card services when it returns
`
`from the call. Once registered, the MTD awaits call-backs from card servcies,
`notifying it when a PC card is inserted or removed.
`
`The MTD Call-Back
`
`When card services generates the card insertion call-back, it also passes the
`logical socket number that the PC Card was inserted into. The MTD client
`then determines if the PC Card contains any flash memory that it is designed
`to access. This can be accomplished by calling the GetFirstRegion and Get-
`NextRegion services. These services return information (obtained from the
`CIS) about the card type, size, location, access time, and block erase details of
`the regions. If the MTD recognizes a regions of memory that it knows how to
`access, it then registers with card services to control access to that specific re-
`gion of memory.
`
`303
`
`Toshiba_Apricorn 1006-0313
`Toshiba_Apricorn 1006-0313
`IPR2018-01067
`|PR2018—01067
`
`

`

`PCMCIA System Architecture
`
`MTD Registers Memory Regions
`
`To register a memory region with card services the MTD calls the Regis-
`terMTD service. This notifies card services that the MTD has agreed to handle
`access to the memory regions specified. When a flash client driver requests
`access to this region via bulk memory services, card services will make an
`MTDRequest call-back to the MTD. The information specified in the call-back
`packet specifies the operation be requested.
`
`Flash Client Driver Registers with Card Services
`
`The client driver performs the registration process by calling the RegisterCli—
`ent service. The flash client identifies itself as a memory client, during
`registration and specifies which callback events it wishes to be notified of,
`and passes a pointer to its cali-back routine. The client may also request that
`card services generate a card insertion call-back for each PC Card already in-
`stalled in the system. The memory client receives a handle value from card
`services when it returns from the call. Once registered, the memory client
`awaits call—backs from card services, notifying it when a PC card is inserted or
`removed.
`
`The Flash Client Driver Call-Back
`
`When card services generates the card insertion call-back, it also passes the
`logical socket number that the PC Card was inserted into. The memory client
`then attempts to configure the PC Card.
`
`The memory client must first determine if the card is the type that it is de-
`signed to enable. Memory clients can use the bulk memory services to access a
`specific region within the PC card. To access memory, the client first calls the
`OpenMemory service by specifying an offset within the card’s attribute or
`common memory address space. Card services then returns a memory handle
`to the client for use when accessing memory starting at the offset specified in
`the OpenMemory service. Also when the OpenMernory service is called, card
`services recognized the region being opened is registered by the MTD. Note
`that if card services does not support bulk memory services, the memory cli-
`ent must use the RequestWindow service to specify the host system address
`space that it wishes to use to access PC Card memory.
`
`
`
`304
`
`Toshiba_Apricorn 1006-0314
`Toshiba_Apricorn 1006-0314
`IPR2018-01067
`|PR2018—01067
`
`

`

`Chapter 21: Client Drivers
`
`Reading from or writing to PC Card memory is accomplished by calling the
`ReadMemory or WriteMemory services. In this instance, the memory client
`passes the memory handle it received from the OpenMemory service and
`specifies the memory offset and range of addresses it wishes to access. The
`call will likely specify location zero within the attribute memory address
`space. When the data is returned to the memory client it evaluates the DE-
`VICE tuple to determine if the card contains flash memory.
`
`If a flash card is detected the call-back routine returns to card services, indicat-
`ing that the card was successfully configured. If the PC Card was not a flash
`card, the client returns to card services, indicating the card was not enabled
`by the flash Client driver.
`
`Accessing Flash Memory
`
`Once the flash card has been enabled, access made to the flash card virtual
`
`drive will be fulfilled. The flash client driver receives the request from the
`flash file system and calls the appropriate bulk memory service. Card services
`recognizes that the call is to a region controlled by an MTD that previously
`register to access the specified memory region. Card services responds by
`making MTD call~bacl<s to specify the operation being requested.
`
`I/O Card Client Drivers
`
`Two basic types of [/0 client drivers are popular.
`
`0 Device-specific client drivers — drivers designed to detect and configure
`a specific PC Card. The client drivers are typically shipped by the manu»
`facturer of a PC Card and are designed to configure this specific PC Card.
`0 Generic (Super) client drivers — drivers designed to detect and configure
`a wide range of I/O cards based on generic types, regardless of manufac-
`turer.
`
`Each type of [/0 client driver instail as device drivers when the configsys file
`is executed during the system boot process. Figure 21-4 illustrates the primary
`actions taken by an generic I /0 client driver when it initializes, registers with
`card services and attempts to configure PC Cards.
`
`305
`
`Toshiba_Apricorn 1006-0315
`Toshiba_Apricorn 1006-0315
`IPR2018-01067
`|PR2018—01067
`
`

`

`PCMCIA System Architecture
`
`Start
`
`Call
`
`Cal] GeICSInIo
`FiequasllOi'
`
`
`RequestiHOi'
`Flequelen
`risque - IDMA
`
`
`
`
`
`Release
`
`Flesouoes
`Terminate
`
`For lncnmplale
`Initialization
`
` YES
`Re mercilenl
`
`
`
`
`Hesouces
`Duplicale
`
`Flesouces
`For Incomplete
`
`Enabter Waits
`EntlyI
`(if any]
`
`for Call-bad: from
`
`
`
`Card Services
` GetFilstTupla
`
`{Conllg Table Enty}
`
`
`
`
`
`
`- Cine-s
`
`I Call-back
`' ggmzliaatgm
`
`
`
`‘
`S [E On
`
`Call
`
`am ale
`GetNexlTupie
`Call-
`ok
`
`
`(nex‘l ouan
`
`entry]
`
`
`a"
`Fiequ estconilg
`
`
`
`Figure 21—4. 1/0 Enabler Registration and PC Card Configuration Process
`
`IIO Client Driver Registers with Card Services
`
`The registration process begins after the client driver detects that card services
`has initialized. This is accomplished with the GetCardServicesInfo cal]. Card
`services returns information about card services and verifies its presence by
`also returning the ASCII string ”CS.” If card services is not initialized, the I/O
`client driver reports the error condition and terminates without remaining
`resident in memory. If card services are present the client driver calls the
`RegisterClient service. When the I / 0 client driver makes the call it:
`
`0
`
`0
`0
`
`0
`
`identifies itself as an I/O client,
`
`specifies which events it wants to be notified of,
`requests a card insertion cali~back for each PC Card currently installed in
`sockets, and
`
`passes the entry point of it call-back routine when making the call.
`
`306
`
`Toshiba_Apricorn 1006-0316
`Toshiba_Apricorn 1006-0316
`IPR2018-01067
`|PR2018—01067
`
`

`

`Chapter 21: Client Drivers
`
`Card services returns a client handle to the [/0 client driver upon return from
`the RegisterClient service. The client driver then awaits card insertion cali-
`backs. Card services generates a CardInsertion call-back for each PC Card al-
`ready installed in a card socket (as requested by the client driver during
`registration). If all sockets are empty, card services generates a Configura-
`tionComplete call-back to signal the end of the configuration process. This
`example presumes that an 1/0 PC Card was installed when the system was
`powered on.
`
`The IIO Client Driver Call-Back
`
`Card services generates a Cardlnsertion call-back to the I/O client driver. The
`driver detects the call-back and evaluates the call-back packet to determine
`the socket into which the PC Card was inserted.
`
`Identifying the PC Card
`
`Next the GetConfigurationlnfo service is called to determine if the PC Card
`has already been configured by another enabler. If already configured, the cli-
`ent driver returns to card services without configuring the PC Card. If the PC
`Card has not been configured, the client driver evaluates other data returned
`by the GetConfigurationInfo service to determine the type of function that is
`associated with the PC Card. If the function is one that the generic I /O enabler
`is designed to handle, the configuration process continues.
`
`Determining Resources Requirements
`
`Next, the client driver checks the first entry within the configuration table to
`determine the resources required by the card. This can be accomplished by
`and calling the GetFirstTuple service and specifying a tuple code of 1311 (the
`configuration table entry tuple code). Card services scans the CIS until if finds
`the first instance of tuple lBh and returns to the client driver. The [/0 driver
`checks the completion status and detects that card services has located the
`first configuration table entry. Next, the client driver calls GetTupleData and
`card services returns the contents of the first configuration table entry. The
`tuple data is evaluated to determine the resources required by the PC Card.
`
`307
`
`Toshiba_Apricorn 1006-0317
`Toshiba_Apricorn 1006-0317
`IPR2018-01067
`|PR2018—01067
`
`

`

`PCMCIA System Architecture
`
`Requesting the Resources
`
`As the client driver detects a configurable resource within the configuration
`table entry (e.g., a range of I / 0 address locations), it checks with card services
`to determine if the resource is available for the I/O card to use. The client re-
`
`quests a resource by calling the respective resource request service (e.g.,
`RequestIO). When RequestIO is called Card services receives the base I/O
`address and range of address locations requested. It uses these values to per-
`forms a look-up within the resource management table to determine if the
`resource is available. Card services indicates whether or not the resource was
`available in the return code.
`
`The client driver rnakes requests for all resources listed within the configura-
`tion table entry and determines their availability. The configurable resources
`that can be acquired from the system include:
`
`I...
`
`Memory address locations — via the RequestWindow service
`I / 0 address locations — via the RequestIO service
`Interrupt request lines — via the RequestIRQ service
`DMA channels - via the RequestDMA service
`
`The specific actions taken when a resource is not available depends of whether
`the entry is a default entry of not, as discussed in the following paragraph.
`
`If the client driver detects that the entry is tagged as'a default entry, it knoWs
`that it should attempt to acquire all resources that are specified within this en-
`try. It should retain all resource acquired from card services even if one or
`more of the resources requested are not available. If the entry is not a default
`entry, the client driver knows that the entire set of resources specified within
`entry must be obtained to satisfy the configuration. If any one resource is not
`available, then the client driver should release any individual resources that
`were acquired from card services by calling the respective release resource
`service {e.g., ReleaseIO).
`
`If a given entry fails to satisfy the PC Card’s configuration, the client driver
`then proceeds to the next entry by calling the GetNextTuple service. Card
`services finds the next configuration table entry (tuple 13) and the client
`driver calls GetTupleData and starts the resource acquisition process again.
`
`308
`
`Toshiba_Apricorn 1006-0318
`Toshiba_Apricorn 1006-0318
`IPR2018-01067
`|PR2018—01067
`
`

`

`Chapter 21: Client Drivers
`
`Configuring the PC Card
`
`When all resources needed for the PC Cards configuration have been ac-
`quired from the system, the client driver configures the HBA and PC Card by
`calling the RequestConfiguration service. In response, card services configures
`the I-IBA and PC Card. The HBA is configured by loading the appropriate
`HBA registers (via socket services) that satisfy the configuration being re-
`quested. This includes reconfiguring the socket interface to memory or 1/0,
`programming the 1/0 window registers, and programming the IREQ# steer—
`ing logic to direct the IRQ to the appropriate system IRQ line. The PC Card is
`configured by writing the index number of the configuration table entry (the
`entry that satisfied the configuration) into the configuration option register
`(COR) within the card’s attribute memory address space.
`
`Point Enablers
`
`Point enablers are dedicated enablers that bypass card and socket services.
`These enablers are popular in environments such as DOS where limited mem-
`ory address space is available for application programs. Card and socket
`services take a considerable amount of memory when they install. Added to
`this is the space required by the enabler(s) and any TSR (terminate and stay
`resident programs) that might be used. As a result, too little memory is left for
`many application programs to run.
`
`One solution used to relieve this memory shortage, is to remove card and
`socket services from the system, thereby freeing up memory that is needed to
`run the application program. Eliminating the card and socket services pre-
`vents PC Card client drivers from performing their functions, thus ._PC Card
`are never enabled and cannot be used. In order to use PC Cards point enablers
`are needed to configure the PC Cards.
`
`In the absence of card and socket services, point enablers must communicate
`directly with the HBA to load the appropriate registers necessary to gain ac-
`cess to the PC Card. The card’s CIS must be read and interpreted to identify
`the PC Card. If the point enabler recognizes the PC Card, it attempts to con-
`figure the card by loading the appropriate registers within the HBA to satisfy
`the configuration, and by writing to the configuration registers to configure
`the PC Card. Note that the resources used to configure the PC Card must be
`specified manually by the user (typically via software switches).
`
`309
`
`Toshiba_Apricorn 1006-0319
`Toshiba_Apricorn 1006-0319
`IPR2018-01067
`|PR2018—01067
`
`

`

`Chapter 22: Booting from PC Cards
`
`Chapter 22
`
`The Previous Chapter
`
`The previous chapter discussed the three basic types of enablers: point en—
`ablers, device-specific enablers, and generic (super) enablers. The chapter also
`discussed the jobs performed by generic memory enablers (and MTDs) and
`[/0 device enablers.
`
`This Chapter
`
`This chapter discusses the problems associated with loading the operating
`system from a PC Card. It also defines mechanisms used to determine
`whether a given PC Card is a bootable device, and the fi

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket