linux/drivers/dio/dio-sysfs.c
<<
>>
Prefs
   1/*
   2 *  File Attributes for DIO Devices
   3 *
   4 *  Copyright (C) 2004 Jochen Friedrich
   5 *
   6 *  Loosely based on drivers/pci/pci-sysfs.c and drivers/zorro/zorro-sysfs.c
   7 *
   8 *  This file is subject to the terms and conditions of the GNU General Public
   9 *  License.  See the file COPYING in the main directory of this archive
  10 *  for more details.
  11 */
  12
  13
  14#include <linux/kernel.h>
  15#include <linux/dio.h>
  16#include <linux/stat.h>
  17
  18/* show configuration fields */
  19
  20static ssize_t dio_show_id(struct device *dev, struct device_attribute *attr, char *buf)
  21{
  22        struct dio_dev *d;
  23
  24        d = to_dio_dev(dev);
  25        return sprintf(buf, "0x%02x\n", (d->id & 0xff));
  26}
  27static DEVICE_ATTR(id, S_IRUGO, dio_show_id, NULL);
  28
  29static ssize_t dio_show_ipl(struct device *dev, struct device_attribute *attr, char *buf)
  30{
  31        struct dio_dev *d;
  32
  33        d = to_dio_dev(dev);
  34        return sprintf(buf, "0x%02x\n", d->ipl);
  35}
  36static DEVICE_ATTR(ipl, S_IRUGO, dio_show_ipl, NULL);
  37
  38static ssize_t dio_show_secid(struct device *dev, struct device_attribute *attr, char *buf)
  39{
  40        struct dio_dev *d;
  41
  42        d = to_dio_dev(dev);
  43        return sprintf(buf, "0x%02x\n", ((d->id >> 8)& 0xff));
  44}
  45static DEVICE_ATTR(secid, S_IRUGO, dio_show_secid, NULL);
  46
  47static ssize_t dio_show_name(struct device *dev, struct device_attribute *attr, char *buf)
  48{
  49        struct dio_dev *d;
  50
  51        d = to_dio_dev(dev);
  52        return sprintf(buf, "%s\n", d->name);
  53}
  54static DEVICE_ATTR(name, S_IRUGO, dio_show_name, NULL);
  55
  56static ssize_t dio_show_resource(struct device *dev, struct device_attribute *attr, char *buf)
  57{
  58        struct dio_dev *d = to_dio_dev(dev);
  59
  60        return sprintf(buf, "0x%08lx 0x%08lx 0x%08lx\n",
  61                       (unsigned long)dio_resource_start(d),
  62                       (unsigned long)dio_resource_end(d),
  63                       dio_resource_flags(d));
  64}
  65static DEVICE_ATTR(resource, S_IRUGO, dio_show_resource, NULL);
  66
  67int dio_create_sysfs_dev_files(struct dio_dev *d)
  68{
  69        struct device *dev = &d->dev;
  70        int error;
  71
  72        /* current configuration's attributes */
  73        if ((error = device_create_file(dev, &dev_attr_id)) ||
  74            (error = device_create_file(dev, &dev_attr_ipl)) ||
  75            (error = device_create_file(dev, &dev_attr_secid)) ||
  76            (error = device_create_file(dev, &dev_attr_name)) ||
  77            (error = device_create_file(dev, &dev_attr_resource)))
  78                return error;
  79
  80        return 0;
  81}
  82
  83