xref: /kernel/linux/linux-6.6/drivers/dio/dio-sysfs.c (revision 62306a36)
162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci *  File Attributes for DIO Devices
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci *  Copyright (C) 2004 Jochen Friedrich
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci *  Loosely based on drivers/pci/pci-sysfs.c and drivers/zorro/zorro-sysfs.c
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci *  This file is subject to the terms and conditions of the GNU General Public
962306a36Sopenharmony_ci *  License.  See the file COPYING in the main directory of this archive
1062306a36Sopenharmony_ci *  for more details.
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#include <linux/kernel.h>
1562306a36Sopenharmony_ci#include <linux/dio.h>
1662306a36Sopenharmony_ci#include <linux/stat.h>
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/* show configuration fields */
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cistatic ssize_t dio_show_id(struct device *dev, struct device_attribute *attr, char *buf)
2162306a36Sopenharmony_ci{
2262306a36Sopenharmony_ci	struct dio_dev *d;
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	d = to_dio_dev(dev);
2562306a36Sopenharmony_ci	return sprintf(buf, "0x%02x\n", (d->id & 0xff));
2662306a36Sopenharmony_ci}
2762306a36Sopenharmony_cistatic DEVICE_ATTR(id, S_IRUGO, dio_show_id, NULL);
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_cistatic ssize_t dio_show_ipl(struct device *dev, struct device_attribute *attr, char *buf)
3062306a36Sopenharmony_ci{
3162306a36Sopenharmony_ci	struct dio_dev *d;
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	d = to_dio_dev(dev);
3462306a36Sopenharmony_ci	return sprintf(buf, "0x%02x\n", d->ipl);
3562306a36Sopenharmony_ci}
3662306a36Sopenharmony_cistatic DEVICE_ATTR(ipl, S_IRUGO, dio_show_ipl, NULL);
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_cistatic ssize_t dio_show_secid(struct device *dev, struct device_attribute *attr, char *buf)
3962306a36Sopenharmony_ci{
4062306a36Sopenharmony_ci	struct dio_dev *d;
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci	d = to_dio_dev(dev);
4362306a36Sopenharmony_ci	return sprintf(buf, "0x%02x\n", ((d->id >> 8)& 0xff));
4462306a36Sopenharmony_ci}
4562306a36Sopenharmony_cistatic DEVICE_ATTR(secid, S_IRUGO, dio_show_secid, NULL);
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_cistatic ssize_t dio_show_name(struct device *dev, struct device_attribute *attr, char *buf)
4862306a36Sopenharmony_ci{
4962306a36Sopenharmony_ci	struct dio_dev *d;
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	d = to_dio_dev(dev);
5262306a36Sopenharmony_ci	return sprintf(buf, "%s\n", d->name);
5362306a36Sopenharmony_ci}
5462306a36Sopenharmony_cistatic DEVICE_ATTR(name, S_IRUGO, dio_show_name, NULL);
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_cistatic ssize_t dio_show_resource(struct device *dev, struct device_attribute *attr, char *buf)
5762306a36Sopenharmony_ci{
5862306a36Sopenharmony_ci	struct dio_dev *d = to_dio_dev(dev);
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	return sprintf(buf, "0x%08lx 0x%08lx 0x%08lx\n",
6162306a36Sopenharmony_ci		       (unsigned long)dio_resource_start(d),
6262306a36Sopenharmony_ci		       (unsigned long)dio_resource_end(d),
6362306a36Sopenharmony_ci		       dio_resource_flags(d));
6462306a36Sopenharmony_ci}
6562306a36Sopenharmony_cistatic DEVICE_ATTR(resource, S_IRUGO, dio_show_resource, NULL);
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ciint dio_create_sysfs_dev_files(struct dio_dev *d)
6862306a36Sopenharmony_ci{
6962306a36Sopenharmony_ci	struct device *dev = &d->dev;
7062306a36Sopenharmony_ci	int error;
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	/* current configuration's attributes */
7362306a36Sopenharmony_ci	if ((error = device_create_file(dev, &dev_attr_id)) ||
7462306a36Sopenharmony_ci	    (error = device_create_file(dev, &dev_attr_ipl)) ||
7562306a36Sopenharmony_ci	    (error = device_create_file(dev, &dev_attr_secid)) ||
7662306a36Sopenharmony_ci	    (error = device_create_file(dev, &dev_attr_name)) ||
7762306a36Sopenharmony_ci	    (error = device_create_file(dev, &dev_attr_resource)))
7862306a36Sopenharmony_ci		return error;
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci	return 0;
8162306a36Sopenharmony_ci}
8262306a36Sopenharmony_ci
83