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

ptp_qoriq_debugfs.c (2372B)


      1// SPDX-License-Identifier: GPL-2.0+
      2/* Copyright 2019 NXP
      3 */
      4#include <linux/device.h>
      5#include <linux/debugfs.h>
      6#include <linux/fsl/ptp_qoriq.h>
      7
      8static int ptp_qoriq_fiper1_lpbk_get(void *data, u64 *val)
      9{
     10	struct ptp_qoriq *ptp_qoriq = data;
     11	struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
     12	u32 ctrl;
     13
     14	ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
     15	*val = ctrl & PP1L ? 1 : 0;
     16
     17	return 0;
     18}
     19
     20static int ptp_qoriq_fiper1_lpbk_set(void *data, u64 val)
     21{
     22	struct ptp_qoriq *ptp_qoriq = data;
     23	struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
     24	u32 ctrl;
     25
     26	ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
     27	if (val == 0)
     28		ctrl &= ~PP1L;
     29	else
     30		ctrl |= PP1L;
     31
     32	ptp_qoriq->write(&regs->ctrl_regs->tmr_ctrl, ctrl);
     33	return 0;
     34}
     35
     36DEFINE_DEBUGFS_ATTRIBUTE(ptp_qoriq_fiper1_fops, ptp_qoriq_fiper1_lpbk_get,
     37			 ptp_qoriq_fiper1_lpbk_set, "%llu\n");
     38
     39static int ptp_qoriq_fiper2_lpbk_get(void *data, u64 *val)
     40{
     41	struct ptp_qoriq *ptp_qoriq = data;
     42	struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
     43	u32 ctrl;
     44
     45	ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
     46	*val = ctrl & PP2L ? 1 : 0;
     47
     48	return 0;
     49}
     50
     51static int ptp_qoriq_fiper2_lpbk_set(void *data, u64 val)
     52{
     53	struct ptp_qoriq *ptp_qoriq = data;
     54	struct ptp_qoriq_registers *regs = &ptp_qoriq->regs;
     55	u32 ctrl;
     56
     57	ctrl = ptp_qoriq->read(&regs->ctrl_regs->tmr_ctrl);
     58	if (val == 0)
     59		ctrl &= ~PP2L;
     60	else
     61		ctrl |= PP2L;
     62
     63	ptp_qoriq->write(&regs->ctrl_regs->tmr_ctrl, ctrl);
     64	return 0;
     65}
     66
     67DEFINE_DEBUGFS_ATTRIBUTE(ptp_qoriq_fiper2_fops, ptp_qoriq_fiper2_lpbk_get,
     68			 ptp_qoriq_fiper2_lpbk_set, "%llu\n");
     69
     70void ptp_qoriq_create_debugfs(struct ptp_qoriq *ptp_qoriq)
     71{
     72	struct dentry *root;
     73
     74	root = debugfs_create_dir(dev_name(ptp_qoriq->dev), NULL);
     75	if (IS_ERR(root))
     76		return;
     77	if (!root)
     78		goto err_root;
     79
     80	ptp_qoriq->debugfs_root = root;
     81
     82	if (!debugfs_create_file_unsafe("fiper1-loopback", 0600, root,
     83					ptp_qoriq, &ptp_qoriq_fiper1_fops))
     84		goto err_node;
     85	if (!debugfs_create_file_unsafe("fiper2-loopback", 0600, root,
     86					ptp_qoriq, &ptp_qoriq_fiper2_fops))
     87		goto err_node;
     88	return;
     89
     90err_node:
     91	debugfs_remove_recursive(root);
     92	ptp_qoriq->debugfs_root = NULL;
     93err_root:
     94	dev_err(ptp_qoriq->dev, "failed to initialize debugfs\n");
     95}
     96
     97void ptp_qoriq_remove_debugfs(struct ptp_qoriq *ptp_qoriq)
     98{
     99	debugfs_remove_recursive(ptp_qoriq->debugfs_root);
    100	ptp_qoriq->debugfs_root = NULL;
    101}