brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · 134bc33 Raw
100 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/*3 * PPS sysfs support4 *5 * Copyright (C) 2007-2009   Rodolfo Giometti <giometti@linux.it>6 */7 8 9#include <linux/device.h>10#include <linux/module.h>11#include <linux/string.h>12#include <linux/pps_kernel.h>13 14/*15 * Attribute functions16 */17 18static ssize_t assert_show(struct device *dev, struct device_attribute *attr,19			   char *buf)20{21	struct pps_device *pps = dev_get_drvdata(dev);22 23	if (!(pps->info.mode & PPS_CAPTUREASSERT))24		return 0;25 26	return sprintf(buf, "%lld.%09d#%d\n",27			(long long) pps->assert_tu.sec, pps->assert_tu.nsec,28			pps->assert_sequence);29}30static DEVICE_ATTR_RO(assert);31 32static ssize_t clear_show(struct device *dev, struct device_attribute *attr,33			  char *buf)34{35	struct pps_device *pps = dev_get_drvdata(dev);36 37	if (!(pps->info.mode & PPS_CAPTURECLEAR))38		return 0;39 40	return sprintf(buf, "%lld.%09d#%d\n",41			(long long) pps->clear_tu.sec, pps->clear_tu.nsec,42			pps->clear_sequence);43}44static DEVICE_ATTR_RO(clear);45 46static ssize_t mode_show(struct device *dev, struct device_attribute *attr,47			 char *buf)48{49	struct pps_device *pps = dev_get_drvdata(dev);50 51	return sprintf(buf, "%4x\n", pps->info.mode);52}53static DEVICE_ATTR_RO(mode);54 55static ssize_t echo_show(struct device *dev, struct device_attribute *attr,56			 char *buf)57{58	struct pps_device *pps = dev_get_drvdata(dev);59 60	return sprintf(buf, "%d\n", !!pps->info.echo);61}62static DEVICE_ATTR_RO(echo);63 64static ssize_t name_show(struct device *dev, struct device_attribute *attr,65			 char *buf)66{67	struct pps_device *pps = dev_get_drvdata(dev);68 69	return sprintf(buf, "%s\n", pps->info.name);70}71static DEVICE_ATTR_RO(name);72 73static ssize_t path_show(struct device *dev, struct device_attribute *attr,74			 char *buf)75{76	struct pps_device *pps = dev_get_drvdata(dev);77 78	return sprintf(buf, "%s\n", pps->info.path);79}80static DEVICE_ATTR_RO(path);81 82static struct attribute *pps_attrs[] = {83	&dev_attr_assert.attr,84	&dev_attr_clear.attr,85	&dev_attr_mode.attr,86	&dev_attr_echo.attr,87	&dev_attr_name.attr,88	&dev_attr_path.attr,89	NULL,90};91 92static const struct attribute_group pps_group = {93	.attrs = pps_attrs,94};95 96const struct attribute_group *pps_groups[] = {97	&pps_group,98	NULL,99};100