Subversion Repositories shark

Rev

Blame | Last modification | View Log | RSS feed

/*
 * drivers/base/interface.c - common driverfs interface that's exported to
 *      the world for all devices.
 *
 * Copyright (c) 2002-3 Patrick Mochel
 * Copyright (c) 2002-3 Open Source Development Labs
 *
 * This file is released under the GPLv2
 *
 */


#include <linuxcomp.h>

#include <linux/device.h>
#include <linux/err.h>
#include <linux/stat.h>
#include <linux/string.h>

/**
 *      detach_state - control the default power state for the device.
 *     
 *      This is the state the device enters when it's driver module is
 *      unloaded. The value is an unsigned integer, in the range of 0-4.
 *      '0' indicates 'On', so no action will be taken when the driver is
 *      unloaded. This is the default behavior.
 *      '4' indicates 'Off', meaning the driver core will call the driver's
 *      shutdown method to quiesce the device.
 *      1-3 indicate a low-power state for the device to enter via the
 *      driver's suspend method.
 */


static ssize_t detach_show(struct device * dev, char * buf)
{
        return sprintf26(buf,"%u\n",dev->detach_state);
}

static ssize_t detach_store(struct device * dev, const char * buf, size_t n)
{
        u32 state;
        state = simple_strtoul(buf,NULL,10);
        if (state > 4)
                return -EINVAL;
        dev->detach_state = state;
        return n;
}

static DEVICE_ATTR(detach_state,0644,detach_show,detach_store);


struct attribute * dev_default_attrs[] = {
        &dev_attr_detach_state.attr,
        NULL,
};