Content-type: text/html Man page of pci_save_config_regs

pci_save_config_regs

Section: Kernel Functions for Drivers (9F)
Updated: 02 June 2000
Index Return to Main Contents
 

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

Solaris DDI-specific (Solaris 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(5) for descriptions of the following attributes:

ATTRIBUTE TYPEATTRIBUTE VALUE
Interface StabilityEvolving

 

SEE ALSO

attributes(5), power(9E)

Writing Device Drivers

PCI Bus Power Management Interface Specification Version 1.1

PCI Bus Specification Revision 2.1


 

Index

NAME
SYNOPSIS
INTERFACE LEVEL
ARGUMENTS
DESCRIPTION
RETURN VALUES
CONTEXT
EXAMPLES
ATTRIBUTES
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 02:39:36 GMT, October 02, 2010