16236451d83a720072053855fa63d51934024a707Terje Bergstrom/* 26236451d83a720072053855fa63d51934024a707Terje Bergstrom * Tegra host1x Debug 36236451d83a720072053855fa63d51934024a707Terje Bergstrom * 46236451d83a720072053855fa63d51934024a707Terje Bergstrom * Copyright (c) 2011-2013 NVIDIA Corporation. 56236451d83a720072053855fa63d51934024a707Terje Bergstrom * 66236451d83a720072053855fa63d51934024a707Terje Bergstrom * This program is free software; you can redistribute it and/or modify it 76236451d83a720072053855fa63d51934024a707Terje Bergstrom * under the terms and conditions of the GNU General Public License, 86236451d83a720072053855fa63d51934024a707Terje Bergstrom * version 2, as published by the Free Software Foundation. 96236451d83a720072053855fa63d51934024a707Terje Bergstrom * 106236451d83a720072053855fa63d51934024a707Terje Bergstrom * This program is distributed in the hope it will be useful, but WITHOUT 116236451d83a720072053855fa63d51934024a707Terje Bergstrom * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 126236451d83a720072053855fa63d51934024a707Terje Bergstrom * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 136236451d83a720072053855fa63d51934024a707Terje Bergstrom * more details. 146236451d83a720072053855fa63d51934024a707Terje Bergstrom * 156236451d83a720072053855fa63d51934024a707Terje Bergstrom * You should have received a copy of the GNU General Public License 166236451d83a720072053855fa63d51934024a707Terje Bergstrom * along with this program. If not, see <http://www.gnu.org/licenses/>. 176236451d83a720072053855fa63d51934024a707Terje Bergstrom */ 186236451d83a720072053855fa63d51934024a707Terje Bergstrom#ifndef __HOST1X_DEBUG_H 196236451d83a720072053855fa63d51934024a707Terje Bergstrom#define __HOST1X_DEBUG_H 206236451d83a720072053855fa63d51934024a707Terje Bergstrom 216236451d83a720072053855fa63d51934024a707Terje Bergstrom#include <linux/debugfs.h> 226236451d83a720072053855fa63d51934024a707Terje Bergstrom#include <linux/seq_file.h> 236236451d83a720072053855fa63d51934024a707Terje Bergstrom 246236451d83a720072053855fa63d51934024a707Terje Bergstromstruct host1x; 256236451d83a720072053855fa63d51934024a707Terje Bergstrom 266236451d83a720072053855fa63d51934024a707Terje Bergstromstruct output { 276236451d83a720072053855fa63d51934024a707Terje Bergstrom void (*fn)(void *ctx, const char *str, size_t len); 286236451d83a720072053855fa63d51934024a707Terje Bergstrom void *ctx; 296236451d83a720072053855fa63d51934024a707Terje Bergstrom char buf[256]; 306236451d83a720072053855fa63d51934024a707Terje Bergstrom}; 316236451d83a720072053855fa63d51934024a707Terje Bergstrom 326236451d83a720072053855fa63d51934024a707Terje Bergstromstatic inline void write_to_seqfile(void *ctx, const char *str, size_t len) 336236451d83a720072053855fa63d51934024a707Terje Bergstrom{ 346236451d83a720072053855fa63d51934024a707Terje Bergstrom seq_write((struct seq_file *)ctx, str, len); 356236451d83a720072053855fa63d51934024a707Terje Bergstrom} 366236451d83a720072053855fa63d51934024a707Terje Bergstrom 376236451d83a720072053855fa63d51934024a707Terje Bergstromstatic inline void write_to_printk(void *ctx, const char *str, size_t len) 386236451d83a720072053855fa63d51934024a707Terje Bergstrom{ 396236451d83a720072053855fa63d51934024a707Terje Bergstrom pr_info("%s", str); 406236451d83a720072053855fa63d51934024a707Terje Bergstrom} 416236451d83a720072053855fa63d51934024a707Terje Bergstrom 426236451d83a720072053855fa63d51934024a707Terje Bergstromvoid __printf(2, 3) host1x_debug_output(struct output *o, const char *fmt, ...); 436236451d83a720072053855fa63d51934024a707Terje Bergstrom 446236451d83a720072053855fa63d51934024a707Terje Bergstromextern unsigned int host1x_debug_trace_cmdbuf; 456236451d83a720072053855fa63d51934024a707Terje Bergstrom 466236451d83a720072053855fa63d51934024a707Terje Bergstromvoid host1x_debug_init(struct host1x *host1x); 476236451d83a720072053855fa63d51934024a707Terje Bergstromvoid host1x_debug_deinit(struct host1x *host1x); 486236451d83a720072053855fa63d51934024a707Terje Bergstromvoid host1x_debug_dump(struct host1x *host1x); 496236451d83a720072053855fa63d51934024a707Terje Bergstromvoid host1x_debug_dump_syncpts(struct host1x *host1x); 506236451d83a720072053855fa63d51934024a707Terje Bergstrom 516236451d83a720072053855fa63d51934024a707Terje Bergstrom#endif 52