blob: c5653f10e5c69213f1b4a072a979844bb42aaefd [file] [log] [blame]
/*
* Samsung Exynos SoC series VIPx driver
*
* Copyright (c) 2018 Samsung Electronics Co., Ltd
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __VIPX_DEBUG_H__
#define __VIPX_DEBUG_H__
#include <linux/timer.h>
#include "vipx-config.h"
#include "vipx-system.h"
struct vipx_device;
enum vipx_debug_state {
VIPX_DEBUG_STATE_START,
};
struct vipx_debug_log_area {
int front;
int rear;
int line_size;
int queue_size;
int reserved[4];
char queue[0];
};
struct vipx_debug_log {
struct timer_list timer;
struct vipx_debug_log_area *area;
};
struct vipx_debug {
unsigned long state;
struct vipx_system *system;
struct vipx_debug_log target_log;
int log_bin_enable;
struct dentry *root;
struct dentry *mem;
struct dentry *log;
struct dentry *log_bin;
struct dentry *devfreq;
struct dentry *clk;
struct dentry *wait_time;
struct dentry *power;
};
extern int vipx_debug_log_enable;
int vipx_debug_write_log_binary(void);
int vipx_debug_dump_debug_regs(void);
void vipx_debug_log_flush(struct vipx_debug *debug);
int vipx_debug_start(struct vipx_debug *debug);
int vipx_debug_stop(struct vipx_debug *debug);
int vipx_debug_open(struct vipx_debug *debug);
int vipx_debug_close(struct vipx_debug *debug);
int vipx_debug_probe(struct vipx_device *device);
void vipx_debug_remove(struct vipx_debug *debug);
#endif