linux/drivers/macintosh/macio_sysfs.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2#include <linux/kernel.h>
   3#include <linux/stat.h>
   4#include <asm/macio.h>
   5
   6static ssize_t
   7compatible_show (struct device *dev, struct device_attribute *attr, char *buf)
   8{
   9        struct platform_device *of;
  10        const char *compat;
  11        int cplen;
  12        int length = 0;
  13
  14        of = &to_macio_device (dev)->ofdev;
  15        compat = of_get_property(of->dev.of_node, "compatible", &cplen);
  16        if (!compat) {
  17                *buf = '\0';
  18                return 0;
  19        }
  20        while (cplen > 0) {
  21                int l;
  22                length += sprintf (buf, "%s\n", compat);
  23                buf += length;
  24                l = strlen (compat) + 1;
  25                compat += l;
  26                cplen -= l;
  27        }
  28
  29        return length;
  30}
  31static DEVICE_ATTR_RO(compatible);
  32
  33static ssize_t modalias_show (struct device *dev, struct device_attribute *attr,
  34                              char *buf)
  35{
  36        return of_device_modalias(dev, buf, PAGE_SIZE);
  37}
  38
  39static ssize_t devspec_show(struct device *dev,
  40                                struct device_attribute *attr, char *buf)
  41{
  42        struct platform_device *ofdev;
  43
  44        ofdev = to_platform_device(dev);
  45        return sprintf(buf, "%pOF\n", ofdev->dev.of_node);
  46}
  47static DEVICE_ATTR_RO(modalias);
  48static DEVICE_ATTR_RO(devspec);
  49
  50static ssize_t name_show(struct device *dev,
  51                         struct device_attribute *attr, char *buf)
  52{
  53        return sprintf(buf, "%pOFn\n", dev->of_node);
  54}
  55static DEVICE_ATTR_RO(name);
  56
  57static ssize_t type_show(struct device *dev,
  58                         struct device_attribute *attr, char *buf)
  59{
  60        return sprintf(buf, "%s\n", of_node_get_device_type(dev->of_node));
  61}
  62static DEVICE_ATTR_RO(type);
  63
  64static struct attribute *macio_dev_attrs[] = {
  65        &dev_attr_name.attr,
  66        &dev_attr_type.attr,
  67        &dev_attr_compatible.attr,
  68        &dev_attr_modalias.attr,
  69        &dev_attr_devspec.attr,
  70        NULL,
  71};
  72
  73static const struct attribute_group macio_dev_group = {
  74        .attrs = macio_dev_attrs,
  75};
  76
  77const struct attribute_group *macio_dev_groups[] = {
  78        &macio_dev_group,
  79        NULL,
  80};
  81