Writing PCMCIA Device Drivers
  Search only this book
Download this book in PDF

............................Contents


Preface
xi

1. PC Cards and Drivers
1
...What Is PCMCIA? 1
......Terminology: PCMCIA or PC Card 1
......PCMCIA Background 2
...PCMCIA in the Solaris Environment 3
......Card Services Interface 3
......Card Services Binding 3
...PC Card Device Drivers 4
...Loading a PC Card Driver 5
...Sample PC Card Drivers in Solaris 5

2. PCMCIA System Architecture
7
...Solaris PCMCIA System Architecture 7
......PC Card Driver 7
......Card Services 9
......PCMCIA Bus Nexus Adapter Drivers and Socket Services 9
......PCMCIA Event Management (User) Daemon 12

3. Solaris Card Services
13
...Solaris Card Services Interface Overview 13
...Card Services Functionality 15
......Driver Registration 15
......PC Card Identification and Configuration 15
......Event Notification 16
......Resource Allocation 16
...Solaris Modifications to the Card Services Interface 17
...Solaris Card Services Interfaces 18
......PC Card Registration and Information Interfaces 19
......PC Card Configuration Interfaces 19
......System Resource Interfaces 20
......Additional Card Services Functions Provided in the Solaris
........System 21

4. Card Information Structure (CIS)
23
...Card Information Structure Overview 23
......Self-Identifying PC Cards 24
......PC Card Attribute and Common Memory 24
......Metaformat 25
...Tuple Parsing 26
......Solaris Card Services CIS Parser 26
......Tuple Parsing Functions 27
......Example Driver Alias Construction 29
......General Rules for PC Card-Driver Bindings 32
......Tuple Utility Functions 34

5. PC Card Driver Autoconfiguration
37
...PC Card Driver Autoconfiguration Overview 37
...Autoconfiguration Entry Points 38
......attach(9E) 38
......getinfo(9E) 44
......detach(9E) 45
...PC Card Power Management Suspend and Resume 47

6. PC Card Event Management
49
...PC Card Event Management Overview 49
......Event Types 50
......Event Priorities 51
...Event Handler Entry Point 52
......csx_event_handler(9E) 52
...Event Handling Examples 54
......Card Insertion 54
......Card Ready 55
......Card-Ready Timeout 56
......Card Removal 57

7. PC Card Configuration
63
...PC Card Configuration Overview 63
...Selecting a Configuration Option 64
......Processing the CIS Tuples 65
...Card Configuration for I/O Cards 66
......Requesting I/O Resources 67
......Installing an Interrupt Handler 68
......Configuring the PC Card and Socket 73
......Releasing I/O and IRQ Resources 74
......I/O Card Configuration Example 74
...Card Configuration for Memory Cards 77
......Requesting System Address Space 77
......Mapping PC Card Memory to System Address Space 79
......Modifying a Memory Address Window 80
......Releasing Memory Resources 80
......Memory Card Configuration Example 80

8. Portable PC Card Drivers
83
...Portability Issues 83
......Byte Ordering 84
......Memory Alignment 84
......Accessing Memory Windows 84
......Accessing I/O Space 85
......Constraints on Use of I/O and Memory Windows 86
......Interrupts 86

9. PCMCIA Parallel Port Driver
87
...Include Files and Header Files for Solaris Parallel Port Driver 88
...Local Driver Data and System Routines and Variables 89
...STREAMS Structures 90
...Autoconfiguration and Modlinkage Structures 91
...Module Initialization Functions 93
......_init() 93
......_info() 94
......_fini() 94
...Autoconfiguration Routines 95
......pcepp_getinfo() 95
......pcepp_attach() 96
......pcepp_detach 101
...Card Services Routines 104
......pcepp_event() 104
......pcepp_card_ready 108
......pcepp_card_insertion 110
......pcepp_card_configuration 111
......pcepp_card_ready_timeout() 119
......pcepp_card_removal() 119
...CIS Configuration Information Routines 125
......pcepp_parse_cis() 125
......pcepp_display_cftable_list() 137
......pcepp_display_card_config() 138
......pcepp_destroy_cftable_list() 139
......pcepp_set_cftable_desireability() 139
......pcepp_sort_cftable_list() 140
......pcepp_swap_cft() 140
...Device Interrupt Handler Routines 141
......pcepp_intr() 141
......pcepp_softintr() 142
...STREAMS Routines 143
......pcepp_rput() 143
......pcepp_wput() 144
......pcepp_open() 146
......pcepp_close() 149
......pcepp_ioctl() 150
......pcepp_srvioc() 152
......pcepp_xmit() 155
......pcepp_strobe_pulse() 156
......pcepp_start() 157
......pcepp_prtstatus() 159