/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2020 MediaTek Inc. */ #ifndef _IRQ_MON_INT_H #define _IRQ_MON_INT_H /* common and private utility for mtprof */ long long msec_high(unsigned long long nsec); unsigned long msec_low(unsigned long long nsec); long long usec_high(unsigned long long nsec); long long sec_high(unsigned long long nsec); unsigned long sec_low(unsigned long long nsec); void mt_irq_monitor_test_init(struct proc_dir_entry *dir); // irq count tracer int irq_count_tracer_init(void); void irq_count_tracer_exit(void); const char *irq_to_name(int irq); const void *irq_to_handler(int irq); const int irq_to_ipi_type(int irq); void show_irq_count_info(unsigned int output); void irq_count_tracer_set(bool val); void irq_count_tracer_proc_init(struct proc_dir_entry *parent); #define TO_FTRACE BIT(0) #define TO_KERNEL_LOG BIT(1) #define TO_AEE BIT(2) #define TO_SRAM BIT(3) #define TO_BOTH (TO_FTRACE | TO_KERNEL_LOG) #define MAX_MSG_LEN 160 void irq_mon_msg(unsigned int out, char *buf, ...); // proc int irq_mon_bool_open(struct inode *inode, struct file *file); ssize_t irq_mon_count_set(struct file *filp, const char *ubuf, size_t count, loff_t *data); bool irq_mon_aee_debounce_check(bool update); extern const struct proc_ops irq_mon_uint_pops; #define IRQ_MON_TRACER_PROC_ENTRY(name, mode, type, dir, ptr) \ proc_create_data(#name, mode, dir, &irq_mon_##type##_pops, (void *)ptr) #endif