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>
124c27ac45SMikko Perttunen #include <linux/irqreturn.h>
137e7d432cSThierry Reding #include <linux/platform_device.h>
14b386c6b7SThierry Reding #include <linux/reset.h>
1575471687STerje Bergstrom
166579324aSTerje Bergstrom #include "cdma.h"
177e7d432cSThierry Reding #include "channel.h"
188aa5bcb6SMikko Perttunen #include "context.h"
197e7d432cSThierry Reding #include "intr.h"
206579324aSTerje Bergstrom #include "job.h"
217e7d432cSThierry Reding #include "syncpt.h"
2275471687STerje Bergstrom
2375471687STerje Bergstrom struct host1x_syncpt;
24f5a954feSArto Merilainen struct host1x_syncpt_base;
256579324aSTerje Bergstrom struct host1x_channel;
266579324aSTerje Bergstrom struct host1x_cdma;
276579324aSTerje Bergstrom struct host1x_job;
286579324aSTerje Bergstrom struct push_buffer;
296236451dSTerje Bergstrom struct output;
306236451dSTerje Bergstrom struct dentry;
316579324aSTerje Bergstrom
326579324aSTerje Bergstrom struct host1x_channel_ops {
336579324aSTerje Bergstrom int (*init)(struct host1x_channel *channel, struct host1x *host,
346579324aSTerje Bergstrom unsigned int id);
356579324aSTerje Bergstrom int (*submit)(struct host1x_job *job);
366579324aSTerje Bergstrom };
376579324aSTerje Bergstrom
386579324aSTerje Bergstrom struct host1x_cdma_ops {
396579324aSTerje Bergstrom void (*start)(struct host1x_cdma *cdma);
406579324aSTerje Bergstrom void (*stop)(struct host1x_cdma *cdma);
416579324aSTerje Bergstrom void (*flush)(struct host1x_cdma *cdma);
422aed4f5aSMikko Perttunen int (*timeout_init)(struct host1x_cdma *cdma);
436579324aSTerje Bergstrom void (*timeout_destroy)(struct host1x_cdma *cdma);
446579324aSTerje Bergstrom void (*freeze)(struct host1x_cdma *cdma);
456579324aSTerje Bergstrom void (*resume)(struct host1x_cdma *cdma, u32 getptr);
466579324aSTerje Bergstrom void (*timeout_cpu_incr)(struct host1x_cdma *cdma, u32 getptr,
476579324aSTerje Bergstrom u32 syncpt_incrs, u32 syncval, u32 nr_slots);
486579324aSTerje Bergstrom };
496579324aSTerje Bergstrom
506579324aSTerje Bergstrom struct host1x_pushbuffer_ops {
516579324aSTerje Bergstrom void (*init)(struct push_buffer *pb);
526579324aSTerje Bergstrom };
5375471687STerje Bergstrom
546236451dSTerje Bergstrom struct host1x_debug_ops {
556236451dSTerje Bergstrom void (*debug_init)(struct dentry *de);
566236451dSTerje Bergstrom void (*show_channel_cdma)(struct host1x *host,
576236451dSTerje Bergstrom struct host1x_channel *ch,
586236451dSTerje Bergstrom struct output *o);
596236451dSTerje Bergstrom void (*show_channel_fifo)(struct host1x *host,
606236451dSTerje Bergstrom struct host1x_channel *ch,
616236451dSTerje Bergstrom struct output *o);
626236451dSTerje Bergstrom void (*show_mlocks)(struct host1x *host, struct output *output);
636236451dSTerje Bergstrom
646236451dSTerje Bergstrom };
656236451dSTerje Bergstrom
6675471687STerje Bergstrom struct host1x_syncpt_ops {
6775471687STerje Bergstrom void (*restore)(struct host1x_syncpt *syncpt);
6875471687STerje Bergstrom void (*restore_wait_base)(struct host1x_syncpt *syncpt);
6975471687STerje Bergstrom void (*load_wait_base)(struct host1x_syncpt *syncpt);
7075471687STerje Bergstrom u32 (*load)(struct host1x_syncpt *syncpt);
71ebae30b1SArto Merilainen int (*cpu_incr)(struct host1x_syncpt *syncpt);
72c3f52220SMikko Perttunen void (*assign_to_channel)(struct host1x_syncpt *syncpt,
73c3f52220SMikko Perttunen struct host1x_channel *channel);
74c3f52220SMikko Perttunen void (*enable_protection)(struct host1x *host);
7575471687STerje Bergstrom };
7675471687STerje Bergstrom
777ede0b0bSTerje Bergstrom struct host1x_intr_ops {
78625d4ffbSMikko Perttunen int (*init_host_sync)(struct host1x *host, u32 cpm);
797ede0b0bSTerje Bergstrom void (*set_syncpt_threshold)(
805c0d8d38SThierry Reding struct host1x *host, unsigned int id, u32 thresh);
815c0d8d38SThierry Reding void (*enable_syncpt_intr)(struct host1x *host, unsigned int id);
825c0d8d38SThierry Reding void (*disable_syncpt_intr)(struct host1x *host, unsigned int id);
837ede0b0bSTerje Bergstrom void (*disable_all_syncpt_intrs)(struct host1x *host);
847ede0b0bSTerje Bergstrom int (*free_syncpt_irq)(struct host1x *host);
854c27ac45SMikko Perttunen irqreturn_t (*isr)(int irq, void *dev_id);
867ede0b0bSTerje Bergstrom };
877ede0b0bSTerje Bergstrom
886841482bSThierry Reding struct host1x_sid_entry {
896841482bSThierry Reding unsigned int base;
906841482bSThierry Reding unsigned int offset;
916841482bSThierry Reding unsigned int limit;
926841482bSThierry Reding };
936841482bSThierry Reding
94939179faSMikko Perttunen struct host1x_table_desc {
95939179faSMikko Perttunen unsigned int base;
96939179faSMikko Perttunen unsigned int count;
97939179faSMikko Perttunen };
98939179faSMikko Perttunen
9975471687STerje Bergstrom struct host1x_info {
10014c95fc8SThierry Reding unsigned int nb_channels; /* host1x: number of channels supported */
10114c95fc8SThierry Reding unsigned int nb_pts; /* host1x: number of syncpoints supported */
10214c95fc8SThierry Reding unsigned int nb_bases; /* host1x: number of syncpoint bases supported */
10314c95fc8SThierry Reding unsigned int nb_mlocks; /* host1x: number of mlocks supported */
10414c95fc8SThierry Reding int (*init)(struct host1x *host1x); /* initialize per SoC ops */
10514c95fc8SThierry Reding unsigned int sync_offset; /* offset of syncpoint registers */
106097452e6SAlexandre Courbot u64 dma_mask; /* mask of addressable memory */
10706867a36SThierry Reding bool has_wide_gather; /* supports GATHER_W opcode */
108f1b53c4eSMikko Perttunen bool has_hypervisor; /* has hypervisor registers */
10997dea367SMikko Perttunen bool has_common; /* has common registers separate from hypervisor */
1106841482bSThierry Reding unsigned int num_sid_entries;
1116841482bSThierry Reding const struct host1x_sid_entry *sid_table;
112939179faSMikko Perttunen struct host1x_table_desc streamid_vm_table;
113939179faSMikko Perttunen struct host1x_table_desc classid_vm_table;
114939179faSMikko Perttunen struct host1x_table_desc mmio_vm_table;
115f5ba33fbSMikko Perttunen /*
116f5ba33fbSMikko Perttunen * On T20-T148, the boot chain may setup DC to increment syncpoints
117f5ba33fbSMikko Perttunen * 26/27 on VBLANK. As such we cannot use these syncpoints until
118f5ba33fbSMikko Perttunen * the display driver disables VBLANK increments.
119f5ba33fbSMikko Perttunen */
120f5ba33fbSMikko Perttunen bool reserve_vblank_syncpts;
1211fa8d07aSMikko Perttunen /*
1221fa8d07aSMikko Perttunen * On Tegra186, secure world applications may require access to
1231fa8d07aSMikko Perttunen * host1x during suspend/resume. To allow this, we need to leave
1241fa8d07aSMikko Perttunen * host1x not in reset.
1251fa8d07aSMikko Perttunen */
1261fa8d07aSMikko Perttunen bool skip_reset_assert;
12775471687STerje Bergstrom };
12875471687STerje Bergstrom
12975471687STerje Bergstrom struct host1x {
13075471687STerje Bergstrom const struct host1x_info *info;
13175471687STerje Bergstrom
13275471687STerje Bergstrom void __iomem *regs;
133f1b53c4eSMikko Perttunen void __iomem *hv_regs; /* hypervisor region */
13497dea367SMikko Perttunen void __iomem *common_regs;
135f017f1e9SMikko Perttunen int syncpt_irqs[8];
136f017f1e9SMikko Perttunen int num_syncpt_irqs;
13775471687STerje Bergstrom struct host1x_syncpt *syncpt;
138f5a954feSArto Merilainen struct host1x_syncpt_base *bases;
13975471687STerje Bergstrom struct device *dev;
14075471687STerje Bergstrom struct clk *clk;
1416b6776e2SDmitry Osipenko struct reset_control_bulk_data resets[2];
1426b6776e2SDmitry Osipenko unsigned int nresets;
14375471687STerje Bergstrom
14441c3068cSThierry Reding struct iommu_group *group;
145404bfb78SMikko Perttunen struct iommu_domain *domain;
146404bfb78SMikko Perttunen struct iova_domain iova;
147404bfb78SMikko Perttunen dma_addr_t iova_end;
148404bfb78SMikko Perttunen
1497ede0b0bSTerje Bergstrom struct mutex intr_mutex;
1507ede0b0bSTerje Bergstrom
15175471687STerje Bergstrom const struct host1x_syncpt_ops *syncpt_op;
1527ede0b0bSTerje Bergstrom const struct host1x_intr_ops *intr_op;
1536579324aSTerje Bergstrom const struct host1x_channel_ops *channel_op;
1546579324aSTerje Bergstrom const struct host1x_cdma_ops *cdma_op;
1556579324aSTerje Bergstrom const struct host1x_pushbuffer_ops *cdma_pb_op;
1566236451dSTerje Bergstrom const struct host1x_debug_ops *debug_op;
1577ede0b0bSTerje Bergstrom
1586579324aSTerje Bergstrom struct host1x_syncpt *nop_sp;
1596579324aSTerje Bergstrom
160d4b57818SArto Merilainen struct mutex syncpt_mutex;
1618474b025SMikko Perttunen
1628474b025SMikko Perttunen struct host1x_channel_list channel_list;
1638aa5bcb6SMikko Perttunen struct host1x_memory_context_list context_list;
1646236451dSTerje Bergstrom
1656236451dSTerje Bergstrom struct dentry *debugfs;
166692e6d7bSTerje Bergstrom
167776dc384SThierry Reding struct mutex devices_lock;
168776dc384SThierry Reding struct list_head devices;
169776dc384SThierry Reding
170776dc384SThierry Reding struct list_head list;
171d98914ebSThierry Reding
172d98914ebSThierry Reding struct device_dma_parameters dma_parms;
1731f39b1dfSThierry Reding
1741f39b1dfSThierry Reding struct host1x_bo_cache cache;
17575471687STerje Bergstrom };
17675471687STerje Bergstrom
17797dea367SMikko Perttunen void host1x_common_writel(struct host1x *host1x, u32 v, u32 r);
178*955df44bSMikko Perttunen void host1x_hypervisor_writel(struct host1x *host1x, u32 v, u32 r);
179f1b53c4eSMikko Perttunen u32 host1x_hypervisor_readl(struct host1x *host1x, u32 r);
180*955df44bSMikko Perttunen void host1x_sync_writel(struct host1x *host1x, u32 v, u32 r);
18175471687STerje Bergstrom u32 host1x_sync_readl(struct host1x *host1x, u32 r);
182*955df44bSMikko Perttunen void host1x_ch_writel(struct host1x_channel *ch, u32 v, u32 r);
1836579324aSTerje Bergstrom u32 host1x_ch_readl(struct host1x_channel *ch, u32 r);
18475471687STerje Bergstrom
host1x_hw_syncpt_restore(struct host1x * host,struct host1x_syncpt * sp)18575471687STerje Bergstrom static inline void host1x_hw_syncpt_restore(struct host1x *host,
18675471687STerje Bergstrom struct host1x_syncpt *sp)
18775471687STerje Bergstrom {
18875471687STerje Bergstrom host->syncpt_op->restore(sp);
18975471687STerje Bergstrom }
19075471687STerje Bergstrom
host1x_hw_syncpt_restore_wait_base(struct host1x * host,struct host1x_syncpt * sp)19175471687STerje Bergstrom static inline void host1x_hw_syncpt_restore_wait_base(struct host1x *host,
19275471687STerje Bergstrom struct host1x_syncpt *sp)
19375471687STerje Bergstrom {
19475471687STerje Bergstrom host->syncpt_op->restore_wait_base(sp);
19575471687STerje Bergstrom }
19675471687STerje Bergstrom
host1x_hw_syncpt_load_wait_base(struct host1x * host,struct host1x_syncpt * sp)19775471687STerje Bergstrom static inline void host1x_hw_syncpt_load_wait_base(struct host1x *host,
19875471687STerje Bergstrom struct host1x_syncpt *sp)
19975471687STerje Bergstrom {
20075471687STerje Bergstrom host->syncpt_op->load_wait_base(sp);
20175471687STerje Bergstrom }
20275471687STerje Bergstrom
host1x_hw_syncpt_load(struct host1x * host,struct host1x_syncpt * sp)20375471687STerje Bergstrom static inline u32 host1x_hw_syncpt_load(struct host1x *host,
20475471687STerje Bergstrom struct host1x_syncpt *sp)
20575471687STerje Bergstrom {
20675471687STerje Bergstrom return host->syncpt_op->load(sp);
20775471687STerje Bergstrom }
20875471687STerje Bergstrom
host1x_hw_syncpt_cpu_incr(struct host1x * host,struct host1x_syncpt * sp)209ebae30b1SArto Merilainen static inline int host1x_hw_syncpt_cpu_incr(struct host1x *host,
21075471687STerje Bergstrom struct host1x_syncpt *sp)
21175471687STerje Bergstrom {
212ebae30b1SArto Merilainen return host->syncpt_op->cpu_incr(sp);
21375471687STerje Bergstrom }
21475471687STerje Bergstrom
host1x_hw_syncpt_assign_to_channel(struct host1x * host,struct host1x_syncpt * sp,struct host1x_channel * ch)215c3f52220SMikko Perttunen static inline void host1x_hw_syncpt_assign_to_channel(
216c3f52220SMikko Perttunen struct host1x *host, struct host1x_syncpt *sp,
217c3f52220SMikko Perttunen struct host1x_channel *ch)
218c3f52220SMikko Perttunen {
219c3f52220SMikko Perttunen return host->syncpt_op->assign_to_channel(sp, ch);
220c3f52220SMikko Perttunen }
221c3f52220SMikko Perttunen
host1x_hw_syncpt_enable_protection(struct host1x * host)222c3f52220SMikko Perttunen static inline void host1x_hw_syncpt_enable_protection(struct host1x *host)
223c3f52220SMikko Perttunen {
224c3f52220SMikko Perttunen return host->syncpt_op->enable_protection(host);
225c3f52220SMikko Perttunen }
226c3f52220SMikko Perttunen
host1x_hw_intr_init_host_sync(struct host1x * host,u32 cpm)227625d4ffbSMikko Perttunen static inline int host1x_hw_intr_init_host_sync(struct host1x *host, u32 cpm)
2287ede0b0bSTerje Bergstrom {
229625d4ffbSMikko Perttunen return host->intr_op->init_host_sync(host, cpm);
2307ede0b0bSTerje Bergstrom }
2317ede0b0bSTerje Bergstrom
host1x_hw_intr_set_syncpt_threshold(struct host1x * host,unsigned int id,u32 thresh)2327ede0b0bSTerje Bergstrom static inline void host1x_hw_intr_set_syncpt_threshold(struct host1x *host,
2335c0d8d38SThierry Reding unsigned int id,
2345c0d8d38SThierry Reding u32 thresh)
2357ede0b0bSTerje Bergstrom {
2367ede0b0bSTerje Bergstrom host->intr_op->set_syncpt_threshold(host, id, thresh);
2377ede0b0bSTerje Bergstrom }
2387ede0b0bSTerje Bergstrom
host1x_hw_intr_enable_syncpt_intr(struct host1x * host,unsigned int id)2397ede0b0bSTerje Bergstrom static inline void host1x_hw_intr_enable_syncpt_intr(struct host1x *host,
2405c0d8d38SThierry Reding unsigned int id)
2417ede0b0bSTerje Bergstrom {
2427ede0b0bSTerje Bergstrom host->intr_op->enable_syncpt_intr(host, id);
2437ede0b0bSTerje Bergstrom }
2447ede0b0bSTerje Bergstrom
host1x_hw_intr_disable_syncpt_intr(struct host1x * host,unsigned int id)2457ede0b0bSTerje Bergstrom static inline void host1x_hw_intr_disable_syncpt_intr(struct host1x *host,
2465c0d8d38SThierry Reding unsigned int id)
2477ede0b0bSTerje Bergstrom {
2487ede0b0bSTerje Bergstrom host->intr_op->disable_syncpt_intr(host, id);
2497ede0b0bSTerje Bergstrom }
2507ede0b0bSTerje Bergstrom
host1x_hw_intr_disable_all_syncpt_intrs(struct host1x * host)2517ede0b0bSTerje Bergstrom static inline void host1x_hw_intr_disable_all_syncpt_intrs(struct host1x *host)
2527ede0b0bSTerje Bergstrom {
2537ede0b0bSTerje Bergstrom host->intr_op->disable_all_syncpt_intrs(host);
2547ede0b0bSTerje Bergstrom }
2557ede0b0bSTerje Bergstrom
host1x_hw_intr_free_syncpt_irq(struct host1x * host)2567ede0b0bSTerje Bergstrom static inline int host1x_hw_intr_free_syncpt_irq(struct host1x *host)
2577ede0b0bSTerje Bergstrom {
2587ede0b0bSTerje Bergstrom return host->intr_op->free_syncpt_irq(host);
2597ede0b0bSTerje Bergstrom }
2606579324aSTerje Bergstrom
host1x_hw_channel_init(struct host1x * host,struct host1x_channel * channel,unsigned int id)2616579324aSTerje Bergstrom static inline int host1x_hw_channel_init(struct host1x *host,
2626579324aSTerje Bergstrom struct host1x_channel *channel,
2635c0d8d38SThierry Reding unsigned int id)
2646579324aSTerje Bergstrom {
2655c0d8d38SThierry Reding return host->channel_op->init(channel, host, id);
2666579324aSTerje Bergstrom }
2676579324aSTerje Bergstrom
host1x_hw_channel_submit(struct host1x * host,struct host1x_job * job)2686579324aSTerje Bergstrom static inline int host1x_hw_channel_submit(struct host1x *host,
2696579324aSTerje Bergstrom struct host1x_job *job)
2706579324aSTerje Bergstrom {
2716579324aSTerje Bergstrom return host->channel_op->submit(job);
2726579324aSTerje Bergstrom }
2736579324aSTerje Bergstrom
host1x_hw_cdma_start(struct host1x * host,struct host1x_cdma * cdma)2746579324aSTerje Bergstrom static inline void host1x_hw_cdma_start(struct host1x *host,
2756579324aSTerje Bergstrom struct host1x_cdma *cdma)
2766579324aSTerje Bergstrom {
2776579324aSTerje Bergstrom host->cdma_op->start(cdma);
2786579324aSTerje Bergstrom }
2796579324aSTerje Bergstrom
host1x_hw_cdma_stop(struct host1x * host,struct host1x_cdma * cdma)2806579324aSTerje Bergstrom static inline void host1x_hw_cdma_stop(struct host1x *host,
2816579324aSTerje Bergstrom struct host1x_cdma *cdma)
2826579324aSTerje Bergstrom {
2836579324aSTerje Bergstrom host->cdma_op->stop(cdma);
2846579324aSTerje Bergstrom }
2856579324aSTerje Bergstrom
host1x_hw_cdma_flush(struct host1x * host,struct host1x_cdma * cdma)2866579324aSTerje Bergstrom static inline void host1x_hw_cdma_flush(struct host1x *host,
2876579324aSTerje Bergstrom struct host1x_cdma *cdma)
2886579324aSTerje Bergstrom {
2896579324aSTerje Bergstrom host->cdma_op->flush(cdma);
2906579324aSTerje Bergstrom }
2916579324aSTerje Bergstrom
host1x_hw_cdma_timeout_init(struct host1x * host,struct host1x_cdma * cdma)2926579324aSTerje Bergstrom static inline int host1x_hw_cdma_timeout_init(struct host1x *host,
2932aed4f5aSMikko Perttunen struct host1x_cdma *cdma)
2946579324aSTerje Bergstrom {
2952aed4f5aSMikko Perttunen return host->cdma_op->timeout_init(cdma);
2966579324aSTerje Bergstrom }
2976579324aSTerje Bergstrom
host1x_hw_cdma_timeout_destroy(struct host1x * host,struct host1x_cdma * cdma)2986579324aSTerje Bergstrom static inline void host1x_hw_cdma_timeout_destroy(struct host1x *host,
2996579324aSTerje Bergstrom struct host1x_cdma *cdma)
3006579324aSTerje Bergstrom {
3016579324aSTerje Bergstrom host->cdma_op->timeout_destroy(cdma);
3026579324aSTerje Bergstrom }
3036579324aSTerje Bergstrom
host1x_hw_cdma_freeze(struct host1x * host,struct host1x_cdma * cdma)3046579324aSTerje Bergstrom static inline void host1x_hw_cdma_freeze(struct host1x *host,
3056579324aSTerje Bergstrom struct host1x_cdma *cdma)
3066579324aSTerje Bergstrom {
3076579324aSTerje Bergstrom host->cdma_op->freeze(cdma);
3086579324aSTerje Bergstrom }
3096579324aSTerje Bergstrom
host1x_hw_cdma_resume(struct host1x * host,struct host1x_cdma * cdma,u32 getptr)3106579324aSTerje Bergstrom static inline void host1x_hw_cdma_resume(struct host1x *host,
3116579324aSTerje Bergstrom struct host1x_cdma *cdma, u32 getptr)
3126579324aSTerje Bergstrom {
3136579324aSTerje Bergstrom host->cdma_op->resume(cdma, getptr);
3146579324aSTerje Bergstrom }
3156579324aSTerje Bergstrom
host1x_hw_cdma_timeout_cpu_incr(struct host1x * host,struct host1x_cdma * cdma,u32 getptr,u32 syncpt_incrs,u32 syncval,u32 nr_slots)3166579324aSTerje Bergstrom static inline void host1x_hw_cdma_timeout_cpu_incr(struct host1x *host,
3176579324aSTerje Bergstrom struct host1x_cdma *cdma,
3186579324aSTerje Bergstrom u32 getptr,
3196579324aSTerje Bergstrom u32 syncpt_incrs,
3206579324aSTerje Bergstrom u32 syncval, u32 nr_slots)
3216579324aSTerje Bergstrom {
3226579324aSTerje Bergstrom host->cdma_op->timeout_cpu_incr(cdma, getptr, syncpt_incrs, syncval,
3236579324aSTerje Bergstrom nr_slots);
3246579324aSTerje Bergstrom }
3256579324aSTerje Bergstrom
host1x_hw_pushbuffer_init(struct host1x * host,struct push_buffer * pb)3266579324aSTerje Bergstrom static inline void host1x_hw_pushbuffer_init(struct host1x *host,
3276579324aSTerje Bergstrom struct push_buffer *pb)
3286579324aSTerje Bergstrom {
3296579324aSTerje Bergstrom host->cdma_pb_op->init(pb);
3306579324aSTerje Bergstrom }
3316579324aSTerje Bergstrom
host1x_hw_debug_init(struct host1x * host,struct dentry * de)3326236451dSTerje Bergstrom static inline void host1x_hw_debug_init(struct host1x *host, struct dentry *de)
3336236451dSTerje Bergstrom {
3346236451dSTerje Bergstrom if (host->debug_op && host->debug_op->debug_init)
3356236451dSTerje Bergstrom host->debug_op->debug_init(de);
3366236451dSTerje Bergstrom }
3376236451dSTerje Bergstrom
host1x_hw_show_channel_cdma(struct host1x * host,struct host1x_channel * channel,struct output * o)3386236451dSTerje Bergstrom static inline void host1x_hw_show_channel_cdma(struct host1x *host,
3396236451dSTerje Bergstrom struct host1x_channel *channel,
3406236451dSTerje Bergstrom struct output *o)
3416236451dSTerje Bergstrom {
3426236451dSTerje Bergstrom host->debug_op->show_channel_cdma(host, channel, o);
3436236451dSTerje Bergstrom }
3446236451dSTerje Bergstrom
host1x_hw_show_channel_fifo(struct host1x * host,struct host1x_channel * channel,struct output * o)3456236451dSTerje Bergstrom static inline void host1x_hw_show_channel_fifo(struct host1x *host,
3466236451dSTerje Bergstrom struct host1x_channel *channel,
3476236451dSTerje Bergstrom struct output *o)
3486236451dSTerje Bergstrom {
3496236451dSTerje Bergstrom host->debug_op->show_channel_fifo(host, channel, o);
3506236451dSTerje Bergstrom }
3516236451dSTerje Bergstrom
host1x_hw_show_mlocks(struct host1x * host,struct output * o)3526236451dSTerje Bergstrom static inline void host1x_hw_show_mlocks(struct host1x *host, struct output *o)
3536236451dSTerje Bergstrom {
3546236451dSTerje Bergstrom host->debug_op->show_mlocks(host, o);
3556236451dSTerje Bergstrom }
3566236451dSTerje Bergstrom
3574de6a2d6SThierry Reding extern struct platform_driver tegra_mipi_driver;
3584de6a2d6SThierry Reding
35975471687STerje Bergstrom #endif
360