return 0;
}
+static int
+xsdfec_clear_stats(struct xsdfec_dev *xsdfec)
+{
+ atomic_set(&xsdfec->isr_err_count, 0);
+ atomic_set(&xsdfec->uecc_count, 0);
+ atomic_set(&xsdfec->cecc_count, 0);
+
+ return 0;
+}
+
static long
xsdfec_dev_ioctl(struct file *fptr, unsigned int cmd, unsigned long data)
{
case XSDFEC_RESET_REQ:
rval = xsdfec_reset_req(xsdfec);
break;
+ case XSDFEC_CLEAR_STATS:
+ rval = xsdfec_clear_stats(xsdfec);
+ break;
case XSDFEC_GET_STATUS:
rval = xsdfec_get_status(xsdfec, arg);
break;
#define XSDFEC_SET_BYPASS _IOW(XSDFEC_MAGIC, 11, unsigned long *)
/* ioctl that determines if sdfec is processing data */
#define XSDFEC_IS_ACTIVE _IOR(XSDFEC_MAGIC, 12, bool *)
+/* ioctl that clears error stats collected during interrupts */
+#define XSDFEC_CLEAR_STATS _IO(XSDFEC_MAGIC, 13)
#endif /* __XILINX_SDFEC_H__ */