/* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef DPU_DBG_H_ #define DPU_DBG_H_ #include #include #include enum dpu_dbg_dump_flag { DPU_DBG_DUMP_IN_LOG = BIT(0), DPU_DBG_DUMP_IN_MEM = BIT(1), }; #if defined(CONFIG_DEBUG_FS) /** * dpu_dbg_init_dbg_buses - initialize debug bus dumping support for the chipset * @hwversion: Chipset revision */ void dpu_dbg_init_dbg_buses(u32 hwversion); /** * dpu_dbg_init - initialize global dpu debug facilities: regdump * @dev: device handle * Returns: 0 or -ERROR */ int dpu_dbg_init(struct device *dev); /** * dpu_dbg_debugfs_register - register entries at the given debugfs dir * @debugfs_root: debugfs root in which to create dpu debug entries * Returns: 0 or -ERROR */ int dpu_dbg_debugfs_register(struct dentry *debugfs_root); /** * dpu_dbg_destroy - destroy the global dpu debug facilities * Returns: none */ void dpu_dbg_destroy(void); /** * dpu_dbg_dump - trigger dumping of all dpu_dbg facilities * @queue_work: whether to queue the dumping work to the work_struct * @name: string indicating origin of dump * @dump_dbgbus: dump the dpu debug bus * @dump_vbif_rt: dump the vbif rt bus * Returns: none */ void dpu_dbg_dump(bool queue_work, const char *name, bool dump_dbgbus_dpu, bool dump_dbgbus_vbif_rt); /** * dpu_dbg_set_dpu_top_offset - set the target specific offset from mdss base * address of the top registers. Used for accessing debug bus controls. * @blk_off: offset from mdss base of the top block */ void dpu_dbg_set_dpu_top_offset(u32 blk_off); #else static inline void dpu_dbg_init_dbg_buses(u32 hwversion) { } static inline int dpu_dbg_init(struct device *dev) { return 0; } static inline int dpu_dbg_debugfs_register(struct dentry *debugfs_root) { return 0; } static inline void dpu_dbg_destroy(void) { } static inline void dpu_dbg_dump(bool queue_work, const char *name, bool dump_dbgbus_dpu, bool dump_dbgbus_vbif_rt) { } static inline void dpu_dbg_set_dpu_top_offset(u32 blk_off) { } #endif /* defined(CONFIG_DEBUG_FS) */ #endif /* DPU_DBG_H_ */