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

c8sectpfe-debugfs.c (7995B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * c8sectpfe-debugfs.c - C8SECTPFE STi DVB driver
      4 *
      5 * Copyright (c) STMicroelectronics 2015
      6 *
      7 * Author: Peter Griffin <peter.griffin@linaro.org>
      8 *
      9 */
     10#include <linux/debugfs.h>
     11#include <linux/device.h>
     12#include <linux/interrupt.h>
     13#include <linux/io.h>
     14#include <linux/kernel.h>
     15#include <linux/seq_file.h>
     16#include <linux/slab.h>
     17#include <linux/types.h>
     18
     19#include "c8sectpfe-debugfs.h"
     20
     21#define dump_register(nm ...)			\
     22{						\
     23	.name	= #nm,				\
     24	.offset	= nm,				\
     25}
     26
     27static const struct debugfs_reg32 fei_sys_regs[] = {
     28	dump_register(SYS_INPUT_ERR_STATUS),
     29	dump_register(SYS_OTHER_ERR_STATUS),
     30	dump_register(SYS_INPUT_ERR_MASK),
     31	dump_register(SYS_DMA_ROUTE),
     32	dump_register(SYS_INPUT_CLKEN),
     33	dump_register(IBENABLE_MASK),
     34	dump_register(SYS_OTHER_CLKEN),
     35	dump_register(SYS_CFG_NUM_IB),
     36	dump_register(SYS_CFG_NUM_MIB),
     37	dump_register(SYS_CFG_NUM_SWTS),
     38	dump_register(SYS_CFG_NUM_TSOUT),
     39	dump_register(SYS_CFG_NUM_CCSC),
     40	dump_register(SYS_CFG_NUM_RAM),
     41	dump_register(SYS_CFG_NUM_TP),
     42
     43	dump_register(C8SECTPFE_IB_IP_FMT_CFG(0)),
     44	dump_register(C8SECTPFE_IB_TAGBYTES_CFG(0)),
     45	dump_register(C8SECTPFE_IB_PID_SET(0)),
     46	dump_register(C8SECTPFE_IB_PKT_LEN(0)),
     47	dump_register(C8SECTPFE_IB_BUFF_STRT(0)),
     48	dump_register(C8SECTPFE_IB_BUFF_END(0)),
     49	dump_register(C8SECTPFE_IB_READ_PNT(0)),
     50	dump_register(C8SECTPFE_IB_WRT_PNT(0)),
     51	dump_register(C8SECTPFE_IB_PRI_THRLD(0)),
     52	dump_register(C8SECTPFE_IB_STAT(0)),
     53	dump_register(C8SECTPFE_IB_MASK(0)),
     54	dump_register(C8SECTPFE_IB_SYS(0)),
     55
     56	dump_register(C8SECTPFE_IB_IP_FMT_CFG(1)),
     57	dump_register(C8SECTPFE_IB_TAGBYTES_CFG(1)),
     58	dump_register(C8SECTPFE_IB_PID_SET(1)),
     59	dump_register(C8SECTPFE_IB_PKT_LEN(1)),
     60	dump_register(C8SECTPFE_IB_BUFF_STRT(1)),
     61	dump_register(C8SECTPFE_IB_BUFF_END(1)),
     62	dump_register(C8SECTPFE_IB_READ_PNT(1)),
     63	dump_register(C8SECTPFE_IB_WRT_PNT(1)),
     64	dump_register(C8SECTPFE_IB_PRI_THRLD(1)),
     65	dump_register(C8SECTPFE_IB_STAT(1)),
     66	dump_register(C8SECTPFE_IB_MASK(1)),
     67	dump_register(C8SECTPFE_IB_SYS(1)),
     68
     69	dump_register(C8SECTPFE_IB_IP_FMT_CFG(2)),
     70	dump_register(C8SECTPFE_IB_TAGBYTES_CFG(2)),
     71	dump_register(C8SECTPFE_IB_PID_SET(2)),
     72	dump_register(C8SECTPFE_IB_PKT_LEN(2)),
     73	dump_register(C8SECTPFE_IB_BUFF_STRT(2)),
     74	dump_register(C8SECTPFE_IB_BUFF_END(2)),
     75	dump_register(C8SECTPFE_IB_READ_PNT(2)),
     76	dump_register(C8SECTPFE_IB_WRT_PNT(2)),
     77	dump_register(C8SECTPFE_IB_PRI_THRLD(2)),
     78	dump_register(C8SECTPFE_IB_STAT(2)),
     79	dump_register(C8SECTPFE_IB_MASK(2)),
     80	dump_register(C8SECTPFE_IB_SYS(2)),
     81
     82	dump_register(C8SECTPFE_IB_IP_FMT_CFG(3)),
     83	dump_register(C8SECTPFE_IB_TAGBYTES_CFG(3)),
     84	dump_register(C8SECTPFE_IB_PID_SET(3)),
     85	dump_register(C8SECTPFE_IB_PKT_LEN(3)),
     86	dump_register(C8SECTPFE_IB_BUFF_STRT(3)),
     87	dump_register(C8SECTPFE_IB_BUFF_END(3)),
     88	dump_register(C8SECTPFE_IB_READ_PNT(3)),
     89	dump_register(C8SECTPFE_IB_WRT_PNT(3)),
     90	dump_register(C8SECTPFE_IB_PRI_THRLD(3)),
     91	dump_register(C8SECTPFE_IB_STAT(3)),
     92	dump_register(C8SECTPFE_IB_MASK(3)),
     93	dump_register(C8SECTPFE_IB_SYS(3)),
     94
     95	dump_register(C8SECTPFE_IB_IP_FMT_CFG(4)),
     96	dump_register(C8SECTPFE_IB_TAGBYTES_CFG(4)),
     97	dump_register(C8SECTPFE_IB_PID_SET(4)),
     98	dump_register(C8SECTPFE_IB_PKT_LEN(4)),
     99	dump_register(C8SECTPFE_IB_BUFF_STRT(4)),
    100	dump_register(C8SECTPFE_IB_BUFF_END(4)),
    101	dump_register(C8SECTPFE_IB_READ_PNT(4)),
    102	dump_register(C8SECTPFE_IB_WRT_PNT(4)),
    103	dump_register(C8SECTPFE_IB_PRI_THRLD(4)),
    104	dump_register(C8SECTPFE_IB_STAT(4)),
    105	dump_register(C8SECTPFE_IB_MASK(4)),
    106	dump_register(C8SECTPFE_IB_SYS(4)),
    107
    108	dump_register(C8SECTPFE_IB_IP_FMT_CFG(5)),
    109	dump_register(C8SECTPFE_IB_TAGBYTES_CFG(5)),
    110	dump_register(C8SECTPFE_IB_PID_SET(5)),
    111	dump_register(C8SECTPFE_IB_PKT_LEN(5)),
    112	dump_register(C8SECTPFE_IB_BUFF_STRT(5)),
    113	dump_register(C8SECTPFE_IB_BUFF_END(5)),
    114	dump_register(C8SECTPFE_IB_READ_PNT(5)),
    115	dump_register(C8SECTPFE_IB_WRT_PNT(5)),
    116	dump_register(C8SECTPFE_IB_PRI_THRLD(5)),
    117	dump_register(C8SECTPFE_IB_STAT(5)),
    118	dump_register(C8SECTPFE_IB_MASK(5)),
    119	dump_register(C8SECTPFE_IB_SYS(5)),
    120
    121	dump_register(C8SECTPFE_IB_IP_FMT_CFG(6)),
    122	dump_register(C8SECTPFE_IB_TAGBYTES_CFG(6)),
    123	dump_register(C8SECTPFE_IB_PID_SET(6)),
    124	dump_register(C8SECTPFE_IB_PKT_LEN(6)),
    125	dump_register(C8SECTPFE_IB_BUFF_STRT(6)),
    126	dump_register(C8SECTPFE_IB_BUFF_END(6)),
    127	dump_register(C8SECTPFE_IB_READ_PNT(6)),
    128	dump_register(C8SECTPFE_IB_WRT_PNT(6)),
    129	dump_register(C8SECTPFE_IB_PRI_THRLD(6)),
    130	dump_register(C8SECTPFE_IB_STAT(6)),
    131	dump_register(C8SECTPFE_IB_MASK(6)),
    132	dump_register(C8SECTPFE_IB_SYS(6)),
    133
    134	dump_register(DMA_CPU_ID),
    135	dump_register(DMA_CPU_VCR),
    136	dump_register(DMA_CPU_RUN),
    137	dump_register(DMA_CPU_PC),
    138
    139	dump_register(DMA_PER_TPn_DREQ_MASK),
    140	dump_register(DMA_PER_TPn_DACK_SET),
    141	dump_register(DMA_PER_TPn_DREQ),
    142	dump_register(DMA_PER_TPn_DACK),
    143	dump_register(DMA_PER_DREQ_MODE),
    144	dump_register(DMA_PER_STBUS_SYNC),
    145	dump_register(DMA_PER_STBUS_ACCESS),
    146	dump_register(DMA_PER_STBUS_ADDRESS),
    147	dump_register(DMA_PER_IDLE_INT),
    148	dump_register(DMA_PER_PRIORITY),
    149	dump_register(DMA_PER_MAX_OPCODE),
    150	dump_register(DMA_PER_MAX_CHUNK),
    151	dump_register(DMA_PER_PAGE_SIZE),
    152	dump_register(DMA_PER_MBOX_STATUS),
    153	dump_register(DMA_PER_MBOX_SET),
    154	dump_register(DMA_PER_MBOX_CLEAR),
    155	dump_register(DMA_PER_MBOX_MASK),
    156	dump_register(DMA_PER_INJECT_PKT_SRC),
    157	dump_register(DMA_PER_INJECT_PKT_DEST),
    158	dump_register(DMA_PER_INJECT_PKT_ADDR),
    159	dump_register(DMA_PER_INJECT_PKT),
    160	dump_register(DMA_PER_PAT_PTR_INIT),
    161	dump_register(DMA_PER_PAT_PTR),
    162	dump_register(DMA_PER_SLEEP_MASK),
    163	dump_register(DMA_PER_SLEEP_COUNTER),
    164
    165	dump_register(DMA_FIRMWARE_VERSION),
    166	dump_register(DMA_PTRREC_BASE),
    167	dump_register(DMA_PTRREC_INPUT_OFFSET),
    168	dump_register(DMA_ERRREC_BASE),
    169
    170	dump_register(DMA_ERROR_RECORD(0)),
    171	dump_register(DMA_ERROR_RECORD(1)),
    172	dump_register(DMA_ERROR_RECORD(2)),
    173	dump_register(DMA_ERROR_RECORD(3)),
    174	dump_register(DMA_ERROR_RECORD(4)),
    175	dump_register(DMA_ERROR_RECORD(5)),
    176	dump_register(DMA_ERROR_RECORD(6)),
    177	dump_register(DMA_ERROR_RECORD(7)),
    178	dump_register(DMA_ERROR_RECORD(8)),
    179	dump_register(DMA_ERROR_RECORD(9)),
    180	dump_register(DMA_ERROR_RECORD(10)),
    181	dump_register(DMA_ERROR_RECORD(11)),
    182	dump_register(DMA_ERROR_RECORD(12)),
    183	dump_register(DMA_ERROR_RECORD(13)),
    184	dump_register(DMA_ERROR_RECORD(14)),
    185	dump_register(DMA_ERROR_RECORD(15)),
    186	dump_register(DMA_ERROR_RECORD(16)),
    187	dump_register(DMA_ERROR_RECORD(17)),
    188	dump_register(DMA_ERROR_RECORD(18)),
    189	dump_register(DMA_ERROR_RECORD(19)),
    190	dump_register(DMA_ERROR_RECORD(20)),
    191	dump_register(DMA_ERROR_RECORD(21)),
    192	dump_register(DMA_ERROR_RECORD(22)),
    193
    194	dump_register(DMA_IDLE_REQ),
    195	dump_register(DMA_FIRMWARE_CONFIG),
    196
    197	dump_register(PIDF_BASE(0)),
    198	dump_register(PIDF_BASE(1)),
    199	dump_register(PIDF_BASE(2)),
    200	dump_register(PIDF_BASE(3)),
    201	dump_register(PIDF_BASE(4)),
    202	dump_register(PIDF_BASE(5)),
    203	dump_register(PIDF_BASE(6)),
    204	dump_register(PIDF_BASE(7)),
    205	dump_register(PIDF_BASE(8)),
    206	dump_register(PIDF_BASE(9)),
    207	dump_register(PIDF_BASE(10)),
    208	dump_register(PIDF_BASE(11)),
    209	dump_register(PIDF_BASE(12)),
    210	dump_register(PIDF_BASE(13)),
    211	dump_register(PIDF_BASE(14)),
    212	dump_register(PIDF_BASE(15)),
    213	dump_register(PIDF_BASE(16)),
    214	dump_register(PIDF_BASE(17)),
    215	dump_register(PIDF_BASE(18)),
    216	dump_register(PIDF_BASE(19)),
    217	dump_register(PIDF_BASE(20)),
    218	dump_register(PIDF_BASE(21)),
    219	dump_register(PIDF_BASE(22)),
    220	dump_register(PIDF_LEAK_ENABLE),
    221	dump_register(PIDF_LEAK_STATUS),
    222	dump_register(PIDF_LEAK_COUNT_RESET),
    223	dump_register(PIDF_LEAK_COUNTER),
    224};
    225
    226void c8sectpfe_debugfs_init(struct c8sectpfei *fei)
    227{
    228	fei->regset =  devm_kzalloc(fei->dev, sizeof(*fei->regset), GFP_KERNEL);
    229	if (!fei->regset)
    230		return;
    231
    232	fei->regset->regs = fei_sys_regs;
    233	fei->regset->nregs = ARRAY_SIZE(fei_sys_regs);
    234	fei->regset->base = fei->io;
    235
    236	fei->root = debugfs_create_dir("c8sectpfe", NULL);
    237	debugfs_create_regset32("registers", S_IRUGO, fei->root, fei->regset);
    238}
    239
    240void c8sectpfe_debugfs_exit(struct c8sectpfei *fei)
    241{
    242	debugfs_remove_recursive(fei->root);
    243	fei->root = NULL;
    244}