PCI_SAVE_CONFIG_REGS(9F) Kernel Functions for Drivers

NAME


pci_save_config_regs, pci_restore_config_regs - save and restore the
PCI configuration registers

SYNOPSIS


#include <sys/ddi.h>
#include <sys/sunddi.h>


int pci_save_config_regs(dev_info_t *dip);


int pci_restore_config_regs(dev_info_t *dip);


INTERFACE LEVEL


illumos DDI-specific (illumos DDI).

ARGUMENTS


dip
Pointer to the device's dev_info structure.


DESCRIPTION


pci_save_config_regs() saves the current configuration registers on
persistent system memory. pci_restore_config_regs() restores
configuration registers previously saved by pci_save_config_regs().


pci_save_config_regs() should be called by the driver's power() entry
point before powering a device off (to PCI state D3). Likewise,
pci_restore_config_regs() should be called after powering a device on
(from PCI state D3), but before accessing the device. See power(9E).

RETURN VALUES


pci_save_config_regs() and pci_restore_config_regs() return:

DDI_SUCCESS
Operation completed successfully.


DDI_FAILURE
Operation failed to complete successfully.


CONTEXT


Both these functions can be called from user or kernel context.

EXAMPLES


Example 1: Invoking the save and restore functions



static int
xx_power(dev_info_t *dip, int component, int level) {
struct xx *xx;
int rval = DDI_SUCCESS;

xx = ddi_get_soft_state(xx_softstate, ddi_get_instance(dip));
if (xx == NULL) {
return (DDI_FAILURE);
}

mutex_enter(&xx->x_mutex);

switch (level) {
case PM_LEVEL_D0:
XX_POWER_ON(xx);
if (pci_restore_config_regs(dip) == DDI_FAILURE) {
/*
* appropriate error path handling here
*/
...
rval = DDI_FAILURE;
}
break;

case PM_LEVEL_D3:
if (pci_save_config_regs(dip) == DDI_FAILURE) {
/*
* appropriate error path handling here
*/
...
rval = DDI_FAILURE;
}
else {
XX_POWER_OFF(xx);
}
break;

default:
rval = DDI_FAILURE;
break;
}

mutex_exit(&xx->x_mutex);
return (rval);
}


ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+

SEE ALSO


attributes(7), power(9E)


Writing Device Drivers


PCI Bus Power Management Interface Specification Version 1.1


PCI Bus Specification Revision 2.1

June 2, 2000 PCI_SAVE_CONFIG_REGS(9F)

tribblix@gmail.com :: GitHub :: Privacy