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