245 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * c8sectpfe-debugfs.c - C8SECTPFE STi DVB driver4 *5 * Copyright (c) STMicroelectronics 20156 *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}245