blob: bd226f1b2541eaced1a1531f5bb5d293f0fc9019 [file] [log] [blame]
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2015 - 2016 DisplayLink (UK) Ltd.
*
* This file is subject to the terms and conditions of the GNU General Public
* License v2. See the file COPYING in the main directory of this archive for
* more details.
*/
#include "evdi_drv.h"
static ssize_t frame_count_show(struct device *dev,
__always_unused struct device_attribute *attr,
char *buf)
{
struct drm_minor *drm_minor = dev_get_drvdata(dev);
struct drm_device *drm_dev = drm_minor->dev;
struct evdi_device *evdi = drm_dev->dev_private;
return snprintf(buf, PAGE_SIZE, "%d\n",
atomic_read(&evdi->frame_count));
}
static struct device_attribute evdi_device_attributes[] = {
__ATTR_RO(frame_count),
};
void evdi_stats_init(struct evdi_device *evdi)
{
int i, retval;
DRM_INFO("evdi: %s\n", __func__);
atomic_set(&evdi->frame_count, 0);
for (i = 0; i < ARRAY_SIZE(evdi_device_attributes); i++) {
retval =
device_create_file(evdi->ddev->primary->kdev,
&evdi_device_attributes[i]);
if (retval)
DRM_ERROR("evdi: device_create_file failed %d\n",
retval);
}
}
void evdi_stats_cleanup(struct evdi_device *evdi)
{
int i;
DRM_INFO("evdi: %s\n", __func__);
for (i = 0; i < ARRAY_SIZE(evdi_device_attributes); i++)
device_remove_file(evdi->ddev->primary->kdev,
&evdi_device_attributes[i]);
}