162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Tegra host1x Job
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (c) 2011-2013, NVIDIA Corporation.
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef __HOST1X_JOB_H
962306a36Sopenharmony_ci#define __HOST1X_JOB_H
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <linux/dma-direction.h>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cistruct host1x_job_gather {
1462306a36Sopenharmony_ci	unsigned int words;
1562306a36Sopenharmony_ci	dma_addr_t base;
1662306a36Sopenharmony_ci	struct host1x_bo *bo;
1762306a36Sopenharmony_ci	unsigned int offset;
1862306a36Sopenharmony_ci	bool handled;
1962306a36Sopenharmony_ci};
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistruct host1x_job_wait {
2262306a36Sopenharmony_ci	u32 id;
2362306a36Sopenharmony_ci	u32 threshold;
2462306a36Sopenharmony_ci	u32 next_class;
2562306a36Sopenharmony_ci	bool relative;
2662306a36Sopenharmony_ci};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cistruct host1x_job_cmd {
2962306a36Sopenharmony_ci	bool is_wait;
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	union {
3262306a36Sopenharmony_ci		struct host1x_job_gather gather;
3362306a36Sopenharmony_ci		struct host1x_job_wait wait;
3462306a36Sopenharmony_ci	};
3562306a36Sopenharmony_ci};
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cistruct host1x_job_unpin_data {
3862306a36Sopenharmony_ci	struct host1x_bo_mapping *map;
3962306a36Sopenharmony_ci};
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci/*
4262306a36Sopenharmony_ci * Dump contents of job to debug output.
4362306a36Sopenharmony_ci */
4462306a36Sopenharmony_civoid host1x_job_dump(struct device *dev, struct host1x_job *job);
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#endif
47