cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

macio_sysfs.c (1844B)


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