xref: /openbmc/linux/drivers/gpu/host1x/dev.h (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
19952f691SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
275471687STerje Bergstrom /*
3d4b57818SArto Merilainen  * Copyright (c) 2012-2015, NVIDIA Corporation.
475471687STerje Bergstrom  */
575471687STerje Bergstrom 
675471687STerje Bergstrom #ifndef HOST1X_DEV_H
775471687STerje Bergstrom #define HOST1X_DEV_H
875471687STerje Bergstrom 
975471687STerje Bergstrom #include <linux/device.h>
10404bfb78SMikko Perttunen #include <linux/iommu.h>
11404bfb78SMikko Perttunen #include <linux/iova.h>
127e7d432cSThierry Reding #include <linux/platform_device.h>
13b386c6b7SThierry Reding #include <linux/reset.h>
1475471687STerje Bergstrom 
156579324aSTerje Bergstrom #include "cdma.h"
167e7d432cSThierry Reding #include "channel.h"
178aa5bcb6SMikko Perttunen #include "context.h"
187e7d432cSThierry Reding #include "intr.h"
196579324aSTerje Bergstrom #include "job.h"
207e7d432cSThierry Reding #include "syncpt.h"
2175471687STerje Bergstrom 
2275471687STerje Bergstrom struct host1x_syncpt;
23f5a954feSArto Merilainen struct host1x_syncpt_base;
246579324aSTerje Bergstrom struct host1x_channel;
256579324aSTerje Bergstrom struct host1x_cdma;
266579324aSTerje Bergstrom struct host1x_job;
276579324aSTerje Bergstrom struct push_buffer;
286236451dSTerje Bergstrom struct output;
296236451dSTerje Bergstrom struct dentry;
306579324aSTerje Bergstrom 
316579324aSTerje Bergstrom struct host1x_channel_ops {
326579324aSTerje Bergstrom 	int (*init)(struct host1x_channel *channel, struct host1x *host,
336579324aSTerje Bergstrom 		    unsigned int id);
346579324aSTerje Bergstrom 	int (*submit)(struct host1x_job *job);
356579324aSTerje Bergstrom };
366579324aSTerje Bergstrom 
376579324aSTerje Bergstrom struct host1x_cdma_ops {
386579324aSTerje Bergstrom 	void (*start)(struct host1x_cdma *cdma);
396579324aSTerje Bergstrom 	void (*stop)(struct host1x_cdma *cdma);
406579324aSTerje Bergstrom 	void (*flush)(struct  host1x_cdma *cdma);
412aed4f5aSMikko Perttunen 	int (*timeout_init)(struct host1x_cdma *cdma);
426579324aSTerje Bergstrom 	void (*timeout_destroy)(struct host1x_cdma *cdma);
436579324aSTerje Bergstrom 	void (*freeze)(struct host1x_cdma *cdma);
446579324aSTerje Bergstrom 	void (*resume)(struct host1x_cdma *cdma, u32 getptr);
456579324aSTerje Bergstrom 	void (*timeout_cpu_incr)(struct host1x_cdma *cdma, u32 getptr,
466579324aSTerje Bergstrom 				 u32 syncpt_incrs, u32 syncval, u32 nr_slots);
476579324aSTerje Bergstrom };
486579324aSTerje Bergstrom 
496579324aSTerje Bergstrom struct host1x_pushbuffer_ops {
506579324aSTerje Bergstrom 	void (*init)(struct push_buffer *pb);
516579324aSTerje Bergstrom };
5275471687STerje Bergstrom 
536236451dSTerje Bergstrom struct host1x_debug_ops {
546236451dSTerje Bergstrom 	void (*debug_init)(struct dentry *de);
556236451dSTerje Bergstrom 	void (*show_channel_cdma)(struct host1x *host,
566236451dSTerje Bergstrom 				  struct host1x_channel *ch,
576236451dSTerje Bergstrom 				  struct output *o);
586236451dSTerje Bergstrom 	void (*show_channel_fifo)(struct host1x *host,
596236451dSTerje Bergstrom 				  struct host1x_channel *ch,
606236451dSTerje Bergstrom 				  struct output *o);
616236451dSTerje Bergstrom 	void (*show_mlocks)(struct host1x *host, struct output *output);
626236451dSTerje Bergstrom 
636236451dSTerje Bergstrom };
646236451dSTerje Bergstrom 
6575471687STerje Bergstrom struct host1x_syncpt_ops {
6675471687STerje Bergstrom 	void (*restore)(struct host1x_syncpt *syncpt);
6775471687STerje Bergstrom 	void (*restore_wait_base)(struct host1x_syncpt *syncpt);
6875471687STerje Bergstrom 	void (*load_wait_base)(struct host1x_syncpt *syncpt);
6975471687STerje Bergstrom 	u32 (*load)(struct host1x_syncpt *syncpt);
70ebae30b1SArto Merilainen 	int (*cpu_incr)(struct host1x_syncpt *syncpt);
71c3f52220SMikko Perttunen 	void (*assign_to_channel)(struct host1x_syncpt *syncpt,
72c3f52220SMikko Perttunen 	                          struct host1x_channel *channel);
73c3f52220SMikko Perttunen 	void (*enable_protection)(struct host1x *host);
7475471687STerje Bergstrom };
7575471687STerje Bergstrom 
767ede0b0bSTerje Bergstrom struct host1x_intr_ops {
77*625d4ffbSMikko Perttunen 	int (*init_host_sync)(struct host1x *host, u32 cpm);
787ede0b0bSTerje Bergstrom 	void (*set_syncpt_threshold)(
795c0d8d38SThierry Reding 		struct host1x *host, unsigned int id, u32 thresh);
805c0d8d38SThierry Reding 	void (*enable_syncpt_intr)(struct host1x *host, unsigned int id);
815c0d8d38SThierry Reding 	void (*disable_syncpt_intr)(struct host1x *host, unsigned int id);
827ede0b0bSTerje Bergstrom 	void (*disable_all_syncpt_intrs)(struct host1x *host);
837ede0b0bSTerje Bergstrom 	int (*free_syncpt_irq)(struct host1x *host);
847ede0b0bSTerje Bergstrom };
857ede0b0bSTerje Bergstrom 
866841482bSThierry Reding struct host1x_sid_entry {
876841482bSThierry Reding 	unsigned int base;
886841482bSThierry Reding 	unsigned int offset;
896841482bSThierry Reding 	unsigned int limit;
906841482bSThierry Reding };
916841482bSThierry Reding 
92939179faSMikko Perttunen struct host1x_table_desc {
93939179faSMikko Perttunen 	unsigned int base;
94939179faSMikko Perttunen 	unsigned int count;
95939179faSMikko Perttunen };
96939179faSMikko Perttunen 
9775471687STerje Bergstrom struct host1x_info {
9814c95fc8SThierry Reding 	unsigned int nb_channels; /* host1x: number of channels supported */
9914c95fc8SThierry Reding 	unsigned int nb_pts; /* host1x: number of syncpoints supported */
10014c95fc8SThierry Reding 	unsigned int nb_bases; /* host1x: number of syncpoint bases supported */
10114c95fc8SThierry Reding 	unsigned int nb_mlocks; /* host1x: number of mlocks supported */
10214c95fc8SThierry Reding 	int (*init)(struct host1x *host1x); /* initialize per SoC ops */
10314c95fc8SThierry Reding 	unsigned int sync_offset; /* offset of syncpoint registers */
104097452e6SAlexandre Courbot 	u64 dma_mask; /* mask of addressable memory */
10506867a36SThierry Reding 	bool has_wide_gather; /* supports GATHER_W opcode */
106f1b53c4eSMikko Perttunen 	bool has_hypervisor; /* has hypervisor registers */
10797dea367SMikko Perttunen 	bool has_common; /* has common registers separate from hypervisor */
1086841482bSThierry Reding 	unsigned int num_sid_entries;
1096841482bSThierry Reding 	const struct host1x_sid_entry *sid_table;
110939179faSMikko Perttunen 	struct host1x_table_desc streamid_vm_table;
111939179faSMikko Perttunen 	struct host1x_table_desc classid_vm_table;
112939179faSMikko Perttunen 	struct host1x_table_desc mmio_vm_table;
113f5ba33fbSMikko Perttunen 	/*
114f5ba33fbSMikko Perttunen 	 * On T20-T148, the boot chain may setup DC to increment syncpoints
115f5ba33fbSMikko Perttunen 	 * 26/27 on VBLANK. As such we cannot use these syncpoints until
116f5ba33fbSMikko Perttunen 	 * the display driver disables VBLANK increments.
117f5ba33fbSMikko Perttunen 	 */
118f5ba33fbSMikko Perttunen 	bool reserve_vblank_syncpts;
11975471687STerje Bergstrom };
12075471687STerje Bergstrom 
12175471687STerje Bergstrom struct host1x {
12275471687STerje Bergstrom 	const struct host1x_info *info;
12375471687STerje Bergstrom 
12475471687STerje Bergstrom 	void __iomem *regs;
125f1b53c4eSMikko Perttunen 	void __iomem *hv_regs; /* hypervisor region */
12697dea367SMikko Perttunen 	void __iomem *common_regs;
127*625d4ffbSMikko Perttunen 	int syncpt_irq;
12875471687STerje Bergstrom 	struct host1x_syncpt *syncpt;
129f5a954feSArto Merilainen 	struct host1x_syncpt_base *bases;
13075471687STerje Bergstrom 	struct device *dev;
13175471687STerje Bergstrom 	struct clk *clk;
1326b6776e2SDmitry Osipenko 	struct reset_control_bulk_data resets[2];
1336b6776e2SDmitry Osipenko 	unsigned int nresets;
13475471687STerje Bergstrom 
13541c3068cSThierry Reding 	struct iommu_group *group;
136404bfb78SMikko Perttunen 	struct iommu_domain *domain;
137404bfb78SMikko Perttunen 	struct iova_domain iova;
138404bfb78SMikko Perttunen 	dma_addr_t iova_end;
139404bfb78SMikko Perttunen 
1407ede0b0bSTerje Bergstrom 	struct mutex intr_mutex;
1417ede0b0bSTerje Bergstrom 
14275471687STerje Bergstrom 	const struct host1x_syncpt_ops *syncpt_op;
1437ede0b0bSTerje Bergstrom 	const struct host1x_intr_ops *intr_op;
1446579324aSTerje Bergstrom 	const struct host1x_channel_ops *channel_op;
1456579324aSTerje Bergstrom 	const struct host1x_cdma_ops *cdma_op;
1466579324aSTerje Bergstrom 	const struct host1x_pushbuffer_ops *cdma_pb_op;
1476236451dSTerje Bergstrom 	const struct host1x_debug_ops *debug_op;
1487ede0b0bSTerje Bergstrom 
1496579324aSTerje Bergstrom 	struct host1x_syncpt *nop_sp;
1506579324aSTerje Bergstrom 
151d4b57818SArto Merilainen 	struct mutex syncpt_mutex;
1528474b025SMikko Perttunen 
1538474b025SMikko Perttunen 	struct host1x_channel_list channel_list;
1548aa5bcb6SMikko Perttunen 	struct host1x_memory_context_list context_list;
1556236451dSTerje Bergstrom 
1566236451dSTerje Bergstrom 	struct dentry *debugfs;
157692e6d7bSTerje Bergstrom 
158776dc384SThierry Reding 	struct mutex devices_lock;
159776dc384SThierry Reding 	struct list_head devices;
160776dc384SThierry Reding 
161776dc384SThierry Reding 	struct list_head list;
162d98914ebSThierry Reding 
163d98914ebSThierry Reding 	struct device_dma_parameters dma_parms;
1641f39b1dfSThierry Reding 
1651f39b1dfSThierry Reding 	struct host1x_bo_cache cache;
16675471687STerje Bergstrom };
16775471687STerje Bergstrom 
16897dea367SMikko Perttunen void host1x_common_writel(struct host1x *host1x, u32 v, u32 r);
169f1b53c4eSMikko Perttunen void host1x_hypervisor_writel(struct host1x *host1x, u32 r, u32 v);
170f1b53c4eSMikko Perttunen u32 host1x_hypervisor_readl(struct host1x *host1x, u32 r);
17175471687STerje Bergstrom void host1x_sync_writel(struct host1x *host1x, u32 r, u32 v);
17275471687STerje Bergstrom u32 host1x_sync_readl(struct host1x *host1x, u32 r);
1736579324aSTerje Bergstrom void host1x_ch_writel(struct host1x_channel *ch, u32 r, u32 v);
1746579324aSTerje Bergstrom u32 host1x_ch_readl(struct host1x_channel *ch, u32 r);
17575471687STerje Bergstrom 
host1x_hw_syncpt_restore(struct host1x * host,struct host1x_syncpt * sp)17675471687STerje Bergstrom static inline void host1x_hw_syncpt_restore(struct host1x *host,
17775471687STerje Bergstrom 					    struct host1x_syncpt *sp)
17875471687STerje Bergstrom {
17975471687STerje Bergstrom 	host->syncpt_op->restore(sp);
18075471687STerje Bergstrom }
18175471687STerje Bergstrom 
host1x_hw_syncpt_restore_wait_base(struct host1x * host,struct host1x_syncpt * sp)18275471687STerje Bergstrom static inline void host1x_hw_syncpt_restore_wait_base(struct host1x *host,
18375471687STerje Bergstrom 						      struct host1x_syncpt *sp)
18475471687STerje Bergstrom {
18575471687STerje Bergstrom 	host->syncpt_op->restore_wait_base(sp);
18675471687STerje Bergstrom }
18775471687STerje Bergstrom 
host1x_hw_syncpt_load_wait_base(struct host1x * host,struct host1x_syncpt * sp)18875471687STerje Bergstrom static inline void host1x_hw_syncpt_load_wait_base(struct host1x *host,
18975471687STerje Bergstrom 						   struct host1x_syncpt *sp)
19075471687STerje Bergstrom {
19175471687STerje Bergstrom 	host->syncpt_op->load_wait_base(sp);
19275471687STerje Bergstrom }
19375471687STerje Bergstrom 
host1x_hw_syncpt_load(struct host1x * host,struct host1x_syncpt * sp)19475471687STerje Bergstrom static inline u32 host1x_hw_syncpt_load(struct host1x *host,
19575471687STerje Bergstrom 					struct host1x_syncpt *sp)
19675471687STerje Bergstrom {
19775471687STerje Bergstrom 	return host->syncpt_op->load(sp);
19875471687STerje Bergstrom }
19975471687STerje Bergstrom 
host1x_hw_syncpt_cpu_incr(struct host1x * host,struct host1x_syncpt * sp)200ebae30b1SArto Merilainen static inline int host1x_hw_syncpt_cpu_incr(struct host1x *host,
20175471687STerje Bergstrom 					    struct host1x_syncpt *sp)
20275471687STerje Bergstrom {
203ebae30b1SArto Merilainen 	return host->syncpt_op->cpu_incr(sp);
20475471687STerje Bergstrom }
20575471687STerje Bergstrom 
host1x_hw_syncpt_assign_to_channel(struct host1x * host,struct host1x_syncpt * sp,struct host1x_channel * ch)206c3f52220SMikko Perttunen static inline void host1x_hw_syncpt_assign_to_channel(
207c3f52220SMikko Perttunen 	struct host1x *host, struct host1x_syncpt *sp,
208c3f52220SMikko Perttunen 	struct host1x_channel *ch)
209c3f52220SMikko Perttunen {
210c3f52220SMikko Perttunen 	return host->syncpt_op->assign_to_channel(sp, ch);
211c3f52220SMikko Perttunen }
212c3f52220SMikko Perttunen 
host1x_hw_syncpt_enable_protection(struct host1x * host)213c3f52220SMikko Perttunen static inline void host1x_hw_syncpt_enable_protection(struct host1x *host)
214c3f52220SMikko Perttunen {
215c3f52220SMikko Perttunen 	return host->syncpt_op->enable_protection(host);
216c3f52220SMikko Perttunen }
217c3f52220SMikko Perttunen 
host1x_hw_intr_init_host_sync(struct host1x * host,u32 cpm)218*625d4ffbSMikko Perttunen static inline int host1x_hw_intr_init_host_sync(struct host1x *host, u32 cpm)
2197ede0b0bSTerje Bergstrom {
220*625d4ffbSMikko Perttunen 	return host->intr_op->init_host_sync(host, cpm);
2217ede0b0bSTerje Bergstrom }
2227ede0b0bSTerje Bergstrom 
host1x_hw_intr_set_syncpt_threshold(struct host1x * host,unsigned int id,u32 thresh)2237ede0b0bSTerje Bergstrom static inline void host1x_hw_intr_set_syncpt_threshold(struct host1x *host,
2245c0d8d38SThierry Reding 						       unsigned int id,
2255c0d8d38SThierry Reding 						       u32 thresh)
2267ede0b0bSTerje Bergstrom {
2277ede0b0bSTerje Bergstrom 	host->intr_op->set_syncpt_threshold(host, id, thresh);
2287ede0b0bSTerje Bergstrom }
2297ede0b0bSTerje Bergstrom 
host1x_hw_intr_enable_syncpt_intr(struct host1x * host,unsigned int id)2307ede0b0bSTerje Bergstrom static inline void host1x_hw_intr_enable_syncpt_intr(struct host1x *host,
2315c0d8d38SThierry Reding 						     unsigned int id)
2327ede0b0bSTerje Bergstrom {
2337ede0b0bSTerje Bergstrom 	host->intr_op->enable_syncpt_intr(host, id);
2347ede0b0bSTerje Bergstrom }
2357ede0b0bSTerje Bergstrom 
host1x_hw_intr_disable_syncpt_intr(struct host1x * host,unsigned int id)2367ede0b0bSTerje Bergstrom static inline void host1x_hw_intr_disable_syncpt_intr(struct host1x *host,
2375c0d8d38SThierry Reding 						      unsigned int id)
2387ede0b0bSTerje Bergstrom {
2397ede0b0bSTerje Bergstrom 	host->intr_op->disable_syncpt_intr(host, id);
2407ede0b0bSTerje Bergstrom }
2417ede0b0bSTerje Bergstrom 
host1x_hw_intr_disable_all_syncpt_intrs(struct host1x * host)2427ede0b0bSTerje Bergstrom static inline void host1x_hw_intr_disable_all_syncpt_intrs(struct host1x *host)
2437ede0b0bSTerje Bergstrom {
2447ede0b0bSTerje Bergstrom 	host->intr_op->disable_all_syncpt_intrs(host);
2457ede0b0bSTerje Bergstrom }
2467ede0b0bSTerje Bergstrom 
host1x_hw_intr_free_syncpt_irq(struct host1x * host)2477ede0b0bSTerje Bergstrom static inline int host1x_hw_intr_free_syncpt_irq(struct host1x *host)
2487ede0b0bSTerje Bergstrom {
2497ede0b0bSTerje Bergstrom 	return host->intr_op->free_syncpt_irq(host);
2507ede0b0bSTerje Bergstrom }
2516579324aSTerje Bergstrom 
host1x_hw_channel_init(struct host1x * host,struct host1x_channel * channel,unsigned int id)2526579324aSTerje Bergstrom static inline int host1x_hw_channel_init(struct host1x *host,
2536579324aSTerje Bergstrom 					 struct host1x_channel *channel,
2545c0d8d38SThierry Reding 					 unsigned int id)
2556579324aSTerje Bergstrom {
2565c0d8d38SThierry Reding 	return host->channel_op->init(channel, host, id);
2576579324aSTerje Bergstrom }
2586579324aSTerje Bergstrom 
host1x_hw_channel_submit(struct host1x * host,struct host1x_job * job)2596579324aSTerje Bergstrom static inline int host1x_hw_channel_submit(struct host1x *host,
2606579324aSTerje Bergstrom 					   struct host1x_job *job)
2616579324aSTerje Bergstrom {
2626579324aSTerje Bergstrom 	return host->channel_op->submit(job);
2636579324aSTerje Bergstrom }
2646579324aSTerje Bergstrom 
host1x_hw_cdma_start(struct host1x * host,struct host1x_cdma * cdma)2656579324aSTerje Bergstrom static inline void host1x_hw_cdma_start(struct host1x *host,
2666579324aSTerje Bergstrom 					struct host1x_cdma *cdma)
2676579324aSTerje Bergstrom {
2686579324aSTerje Bergstrom 	host->cdma_op->start(cdma);
2696579324aSTerje Bergstrom }
2706579324aSTerje Bergstrom 
host1x_hw_cdma_stop(struct host1x * host,struct host1x_cdma * cdma)2716579324aSTerje Bergstrom static inline void host1x_hw_cdma_stop(struct host1x *host,
2726579324aSTerje Bergstrom 				       struct host1x_cdma *cdma)
2736579324aSTerje Bergstrom {
2746579324aSTerje Bergstrom 	host->cdma_op->stop(cdma);
2756579324aSTerje Bergstrom }
2766579324aSTerje Bergstrom 
host1x_hw_cdma_flush(struct host1x * host,struct host1x_cdma * cdma)2776579324aSTerje Bergstrom static inline void host1x_hw_cdma_flush(struct host1x *host,
2786579324aSTerje Bergstrom 					struct host1x_cdma *cdma)
2796579324aSTerje Bergstrom {
2806579324aSTerje Bergstrom 	host->cdma_op->flush(cdma);
2816579324aSTerje Bergstrom }
2826579324aSTerje Bergstrom 
host1x_hw_cdma_timeout_init(struct host1x * host,struct host1x_cdma * cdma)2836579324aSTerje Bergstrom static inline int host1x_hw_cdma_timeout_init(struct host1x *host,
2842aed4f5aSMikko Perttunen 					      struct host1x_cdma *cdma)
2856579324aSTerje Bergstrom {
2862aed4f5aSMikko Perttunen 	return host->cdma_op->timeout_init(cdma);
2876579324aSTerje Bergstrom }
2886579324aSTerje Bergstrom 
host1x_hw_cdma_timeout_destroy(struct host1x * host,struct host1x_cdma * cdma)2896579324aSTerje Bergstrom static inline void host1x_hw_cdma_timeout_destroy(struct host1x *host,
2906579324aSTerje Bergstrom 						  struct host1x_cdma *cdma)
2916579324aSTerje Bergstrom {
2926579324aSTerje Bergstrom 	host->cdma_op->timeout_destroy(cdma);
2936579324aSTerje Bergstrom }
2946579324aSTerje Bergstrom 
host1x_hw_cdma_freeze(struct host1x * host,struct host1x_cdma * cdma)2956579324aSTerje Bergstrom static inline void host1x_hw_cdma_freeze(struct host1x *host,
2966579324aSTerje Bergstrom 					 struct host1x_cdma *cdma)
2976579324aSTerje Bergstrom {
2986579324aSTerje Bergstrom 	host->cdma_op->freeze(cdma);
2996579324aSTerje Bergstrom }
3006579324aSTerje Bergstrom 
host1x_hw_cdma_resume(struct host1x * host,struct host1x_cdma * cdma,u32 getptr)3016579324aSTerje Bergstrom static inline void host1x_hw_cdma_resume(struct host1x *host,
3026579324aSTerje Bergstrom 					 struct host1x_cdma *cdma, u32 getptr)
3036579324aSTerje Bergstrom {
3046579324aSTerje Bergstrom 	host->cdma_op->resume(cdma, getptr);
3056579324aSTerje Bergstrom }
3066579324aSTerje Bergstrom 
host1x_hw_cdma_timeout_cpu_incr(struct host1x * host,struct host1x_cdma * cdma,u32 getptr,u32 syncpt_incrs,u32 syncval,u32 nr_slots)3076579324aSTerje Bergstrom static inline void host1x_hw_cdma_timeout_cpu_incr(struct host1x *host,
3086579324aSTerje Bergstrom 						   struct host1x_cdma *cdma,
3096579324aSTerje Bergstrom 						   u32 getptr,
3106579324aSTerje Bergstrom 						   u32 syncpt_incrs,
3116579324aSTerje Bergstrom 						   u32 syncval, u32 nr_slots)
3126579324aSTerje Bergstrom {
3136579324aSTerje Bergstrom 	host->cdma_op->timeout_cpu_incr(cdma, getptr, syncpt_incrs, syncval,
3146579324aSTerje Bergstrom 					nr_slots);
3156579324aSTerje Bergstrom }
3166579324aSTerje Bergstrom 
host1x_hw_pushbuffer_init(struct host1x * host,struct push_buffer * pb)3176579324aSTerje Bergstrom static inline void host1x_hw_pushbuffer_init(struct host1x *host,
3186579324aSTerje Bergstrom 					     struct push_buffer *pb)
3196579324aSTerje Bergstrom {
3206579324aSTerje Bergstrom 	host->cdma_pb_op->init(pb);
3216579324aSTerje Bergstrom }
3226579324aSTerje Bergstrom 
host1x_hw_debug_init(struct host1x * host,struct dentry * de)3236236451dSTerje Bergstrom static inline void host1x_hw_debug_init(struct host1x *host, struct dentry *de)
3246236451dSTerje Bergstrom {
3256236451dSTerje Bergstrom 	if (host->debug_op && host->debug_op->debug_init)
3266236451dSTerje Bergstrom 		host->debug_op->debug_init(de);
3276236451dSTerje Bergstrom }
3286236451dSTerje Bergstrom 
host1x_hw_show_channel_cdma(struct host1x * host,struct host1x_channel * channel,struct output * o)3296236451dSTerje Bergstrom static inline void host1x_hw_show_channel_cdma(struct host1x *host,
3306236451dSTerje Bergstrom 					       struct host1x_channel *channel,
3316236451dSTerje Bergstrom 					       struct output *o)
3326236451dSTerje Bergstrom {
3336236451dSTerje Bergstrom 	host->debug_op->show_channel_cdma(host, channel, o);
3346236451dSTerje Bergstrom }
3356236451dSTerje Bergstrom 
host1x_hw_show_channel_fifo(struct host1x * host,struct host1x_channel * channel,struct output * o)3366236451dSTerje Bergstrom static inline void host1x_hw_show_channel_fifo(struct host1x *host,
3376236451dSTerje Bergstrom 					       struct host1x_channel *channel,
3386236451dSTerje Bergstrom 					       struct output *o)
3396236451dSTerje Bergstrom {
3406236451dSTerje Bergstrom 	host->debug_op->show_channel_fifo(host, channel, o);
3416236451dSTerje Bergstrom }
3426236451dSTerje Bergstrom 
host1x_hw_show_mlocks(struct host1x * host,struct output * o)3436236451dSTerje Bergstrom static inline void host1x_hw_show_mlocks(struct host1x *host, struct output *o)
3446236451dSTerje Bergstrom {
3456236451dSTerje Bergstrom 	host->debug_op->show_mlocks(host, o);
3466236451dSTerje Bergstrom }
3476236451dSTerje Bergstrom 
3484de6a2d6SThierry Reding extern struct platform_driver tegra_mipi_driver;
3494de6a2d6SThierry Reding 
35075471687STerje Bergstrom #endif
351