diff options
Diffstat (limited to 'drivers/gpu/host1x/hw')
| -rw-r--r-- | drivers/gpu/host1x/hw/Makefile | 6 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/cdma_hw.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/channel_hw.c | 32 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/debug_hw.c | 20 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/host1x01.c | 16 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/host1x02.c | 42 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/host1x02.h | 26 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/host1x02_hardware.h | 142 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/host1x04.c | 42 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/host1x04.h | 26 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/host1x04_hardware.h | 142 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/hw_host1x01_uclass.h | 6 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/hw_host1x02_channel.h | 121 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/hw_host1x02_sync.h | 243 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/hw_host1x02_uclass.h | 181 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/hw_host1x04_channel.h | 121 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/hw_host1x04_sync.h | 243 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/hw_host1x04_uclass.h | 181 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/intr_hw.c | 9 | ||||
| -rw-r--r-- | drivers/gpu/host1x/hw/syncpt_hw.c | 4 | 
20 files changed, 1568 insertions, 47 deletions
diff --git a/drivers/gpu/host1x/hw/Makefile b/drivers/gpu/host1x/hw/Makefile deleted file mode 100644 index 9b50863a223..00000000000 --- a/drivers/gpu/host1x/hw/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -ccflags-y = -Idrivers/gpu/host1x - -host1x-hw-objs  = \ -	host1x01.o - -obj-$(CONFIG_TEGRA_HOST1X) += host1x-hw.o diff --git a/drivers/gpu/host1x/hw/cdma_hw.c b/drivers/gpu/host1x/hw/cdma_hw.c index 2ee4ad55c4d..6b09b71940c 100644 --- a/drivers/gpu/host1x/hw/cdma_hw.c +++ b/drivers/gpu/host1x/hw/cdma_hw.c @@ -20,10 +20,10 @@  #include <linux/scatterlist.h>  #include <linux/dma-mapping.h> -#include "cdma.h" -#include "channel.h" -#include "dev.h" -#include "debug.h" +#include "../cdma.h" +#include "../channel.h" +#include "../dev.h" +#include "../debug.h"  /*   * Put the restart at the end of pushbuffer memor @@ -54,8 +54,8 @@ static void cdma_timeout_cpu_incr(struct host1x_cdma *cdma, u32 getptr,  		u32 *p = (u32 *)((u32)pb->mapped + getptr);  		*(p++) = HOST1X_OPCODE_NOP;  		*(p++) = HOST1X_OPCODE_NOP; -		dev_dbg(host1x->dev, "%s: NOP at 0x%x\n", __func__, -			pb->phys + getptr); +		dev_dbg(host1x->dev, "%s: NOP at %#llx\n", __func__, +			(u64)pb->phys + getptr);  		getptr = (getptr + 8) & (pb->size_bytes - 1);  	}  	wmb(); diff --git a/drivers/gpu/host1x/hw/channel_hw.c b/drivers/gpu/host1x/hw/channel_hw.c index ee199623e36..4608257ab65 100644 --- a/drivers/gpu/host1x/hw/channel_hw.c +++ b/drivers/gpu/host1x/hw/channel_hw.c @@ -16,15 +16,15 @@   * along with this program.  If not, see <http://www.gnu.org/licenses/>.   */ +#include <linux/host1x.h>  #include <linux/slab.h> +  #include <trace/events/host1x.h> -#include "host1x.h" -#include "host1x_bo.h" -#include "channel.h" -#include "dev.h" -#include "intr.h" -#include "job.h" +#include "../channel.h" +#include "../dev.h" +#include "../intr.h" +#include "../job.h"  #define HOST1X_CHANNEL_SIZE 16384  #define TRACE_MAX_LENGTH 128U @@ -67,6 +67,22 @@ static void submit_gathers(struct host1x_job *job)  	}  } +static inline void synchronize_syncpt_base(struct host1x_job *job) +{ +	struct host1x *host = dev_get_drvdata(job->channel->dev->parent); +	struct host1x_syncpt *sp = host->syncpt + job->syncpt_id; +	u32 id, value; + +	value = host1x_syncpt_read_max(sp); +	id = sp->base->id; + +	host1x_cdma_push(&job->channel->cdma, +			 host1x_opcode_setclass(HOST1X_CLASS_HOST1X, +				HOST1X_UCLASS_LOAD_SYNCPT_BASE, 1), +			 HOST1X_UCLASS_LOAD_SYNCPT_BASE_BASE_INDX_F(id) | +			 HOST1X_UCLASS_LOAD_SYNCPT_BASE_VALUE_F(value)); +} +  static int channel_submit(struct host1x_job *job)  {  	struct host1x_channel *ch = job->channel; @@ -118,6 +134,10 @@ static int channel_submit(struct host1x_job *job)  					host1x_syncpt_read_max(sp)));  	} +	/* Synchronize base register to allow using it for relative waiting */ +	if (sp->base) +		synchronize_syncpt_base(job); +  	syncval = host1x_syncpt_incr_max(sp, user_syncpt_incrs);  	job->syncpt_end = syncval; diff --git a/drivers/gpu/host1x/hw/debug_hw.c b/drivers/gpu/host1x/hw/debug_hw.c index 334c038052f..f72c873eff8 100644 --- a/drivers/gpu/host1x/hw/debug_hw.c +++ b/drivers/gpu/host1x/hw/debug_hw.c @@ -15,18 +15,10 @@   *   */ -#include <linux/debugfs.h> -#include <linux/seq_file.h> -#include <linux/mm.h> -#include <linux/scatterlist.h> - -#include <linux/io.h> - -#include "dev.h" -#include "debug.h" -#include "cdma.h" -#include "channel.h" -#include "host1x_bo.h" +#include "../dev.h" +#include "../debug.h" +#include "../cdma.h" +#include "../channel.h"  #define HOST1X_DEBUG_MAX_PAGE_OFFSET 102400 @@ -171,8 +163,8 @@ static void show_channel_gathers(struct output *o, struct host1x_cdma *cdma)  				continue;  			} -			host1x_debug_output(o, "    GATHER at %08x+%04x, %d words\n", -					    g->base, g->offset, g->words); +			host1x_debug_output(o, "    GATHER at %#llx+%04x, %d words\n", +					    (u64)g->base, g->offset, g->words);  			show_gather(o, g->base + g->offset, g->words, cdma,  				    g->base, mapped); diff --git a/drivers/gpu/host1x/hw/host1x01.c b/drivers/gpu/host1x/hw/host1x01.c index a14e91cd1e5..859b73beb4d 100644 --- a/drivers/gpu/host1x/hw/host1x01.c +++ b/drivers/gpu/host1x/hw/host1x01.c @@ -17,17 +17,17 @@   */  /* include hw specification */ -#include "hw/host1x01.h" -#include "hw/host1x01_hardware.h" +#include "host1x01.h" +#include "host1x01_hardware.h"  /* include code */ -#include "hw/cdma_hw.c" -#include "hw/channel_hw.c" -#include "hw/debug_hw.c" -#include "hw/intr_hw.c" -#include "hw/syncpt_hw.c" +#include "cdma_hw.c" +#include "channel_hw.c" +#include "debug_hw.c" +#include "intr_hw.c" +#include "syncpt_hw.c" -#include "dev.h" +#include "../dev.h"  int host1x01_init(struct host1x *host)  { diff --git a/drivers/gpu/host1x/hw/host1x02.c b/drivers/gpu/host1x/hw/host1x02.c new file mode 100644 index 00000000000..928946c2144 --- /dev/null +++ b/drivers/gpu/host1x/hw/host1x02.c @@ -0,0 +1,42 @@ +/* + * Host1x init for Tegra114 SoCs + * + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +/* include hw specification */ +#include "host1x02.h" +#include "host1x02_hardware.h" + +/* include code */ +#include "cdma_hw.c" +#include "channel_hw.c" +#include "debug_hw.c" +#include "intr_hw.c" +#include "syncpt_hw.c" + +#include "../dev.h" + +int host1x02_init(struct host1x *host) +{ +	host->channel_op = &host1x_channel_ops; +	host->cdma_op = &host1x_cdma_ops; +	host->cdma_pb_op = &host1x_pushbuffer_ops; +	host->syncpt_op = &host1x_syncpt_ops; +	host->intr_op = &host1x_intr_ops; +	host->debug_op = &host1x_debug_ops; + +	return 0; +} diff --git a/drivers/gpu/host1x/hw/host1x02.h b/drivers/gpu/host1x/hw/host1x02.h new file mode 100644 index 00000000000..f7486609a90 --- /dev/null +++ b/drivers/gpu/host1x/hw/host1x02.h @@ -0,0 +1,26 @@ +/* + * Host1x init for Tegra114 SoCs + * + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef HOST1X_HOST1X02_H +#define HOST1X_HOST1X02_H + +struct host1x; + +int host1x02_init(struct host1x *host); + +#endif diff --git a/drivers/gpu/host1x/hw/host1x02_hardware.h b/drivers/gpu/host1x/hw/host1x02_hardware.h new file mode 100644 index 00000000000..154901860bc --- /dev/null +++ b/drivers/gpu/host1x/hw/host1x02_hardware.h @@ -0,0 +1,142 @@ +/* + * Tegra host1x Register Offsets for Tegra114 + * + * Copyright (c) 2010-2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __HOST1X_HOST1X02_HARDWARE_H +#define __HOST1X_HOST1X02_HARDWARE_H + +#include <linux/types.h> +#include <linux/bitops.h> + +#include "hw_host1x02_channel.h" +#include "hw_host1x02_sync.h" +#include "hw_host1x02_uclass.h" + +static inline u32 host1x_class_host_wait_syncpt( +	unsigned indx, unsigned threshold) +{ +	return host1x_uclass_wait_syncpt_indx_f(indx) +		| host1x_uclass_wait_syncpt_thresh_f(threshold); +} + +static inline u32 host1x_class_host_load_syncpt_base( +	unsigned indx, unsigned threshold) +{ +	return host1x_uclass_load_syncpt_base_base_indx_f(indx) +		| host1x_uclass_load_syncpt_base_value_f(threshold); +} + +static inline u32 host1x_class_host_wait_syncpt_base( +	unsigned indx, unsigned base_indx, unsigned offset) +{ +	return host1x_uclass_wait_syncpt_base_indx_f(indx) +		| host1x_uclass_wait_syncpt_base_base_indx_f(base_indx) +		| host1x_uclass_wait_syncpt_base_offset_f(offset); +} + +static inline u32 host1x_class_host_incr_syncpt_base( +	unsigned base_indx, unsigned offset) +{ +	return host1x_uclass_incr_syncpt_base_base_indx_f(base_indx) +		| host1x_uclass_incr_syncpt_base_offset_f(offset); +} + +static inline u32 host1x_class_host_incr_syncpt( +	unsigned cond, unsigned indx) +{ +	return host1x_uclass_incr_syncpt_cond_f(cond) +		| host1x_uclass_incr_syncpt_indx_f(indx); +} + +static inline u32 host1x_class_host_indoff_reg_write( +	unsigned mod_id, unsigned offset, bool auto_inc) +{ +	u32 v = host1x_uclass_indoff_indbe_f(0xf) +		| host1x_uclass_indoff_indmodid_f(mod_id) +		| host1x_uclass_indoff_indroffset_f(offset); +	if (auto_inc) +		v |= host1x_uclass_indoff_autoinc_f(1); +	return v; +} + +static inline u32 host1x_class_host_indoff_reg_read( +	unsigned mod_id, unsigned offset, bool auto_inc) +{ +	u32 v = host1x_uclass_indoff_indmodid_f(mod_id) +		| host1x_uclass_indoff_indroffset_f(offset) +		| host1x_uclass_indoff_rwn_read_v(); +	if (auto_inc) +		v |= host1x_uclass_indoff_autoinc_f(1); +	return v; +} + +/* cdma opcodes */ +static inline u32 host1x_opcode_setclass( +	unsigned class_id, unsigned offset, unsigned mask) +{ +	return (0 << 28) | (offset << 16) | (class_id << 6) | mask; +} + +static inline u32 host1x_opcode_incr(unsigned offset, unsigned count) +{ +	return (1 << 28) | (offset << 16) | count; +} + +static inline u32 host1x_opcode_nonincr(unsigned offset, unsigned count) +{ +	return (2 << 28) | (offset << 16) | count; +} + +static inline u32 host1x_opcode_mask(unsigned offset, unsigned mask) +{ +	return (3 << 28) | (offset << 16) | mask; +} + +static inline u32 host1x_opcode_imm(unsigned offset, unsigned value) +{ +	return (4 << 28) | (offset << 16) | value; +} + +static inline u32 host1x_opcode_imm_incr_syncpt(unsigned cond, unsigned indx) +{ +	return host1x_opcode_imm(host1x_uclass_incr_syncpt_r(), +		host1x_class_host_incr_syncpt(cond, indx)); +} + +static inline u32 host1x_opcode_restart(unsigned address) +{ +	return (5 << 28) | (address >> 4); +} + +static inline u32 host1x_opcode_gather(unsigned count) +{ +	return (6 << 28) | count; +} + +static inline u32 host1x_opcode_gather_nonincr(unsigned offset,	unsigned count) +{ +	return (6 << 28) | (offset << 16) | BIT(15) | count; +} + +static inline u32 host1x_opcode_gather_incr(unsigned offset, unsigned count) +{ +	return (6 << 28) | (offset << 16) | BIT(15) | BIT(14) | count; +} + +#define HOST1X_OPCODE_NOP host1x_opcode_nonincr(0, 0) + +#endif diff --git a/drivers/gpu/host1x/hw/host1x04.c b/drivers/gpu/host1x/hw/host1x04.c new file mode 100644 index 00000000000..8007c70fa9c --- /dev/null +++ b/drivers/gpu/host1x/hw/host1x04.c @@ -0,0 +1,42 @@ +/* + * Host1x init for Tegra124 SoCs + * + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +/* include hw specification */ +#include "host1x04.h" +#include "host1x04_hardware.h" + +/* include code */ +#include "cdma_hw.c" +#include "channel_hw.c" +#include "debug_hw.c" +#include "intr_hw.c" +#include "syncpt_hw.c" + +#include "../dev.h" + +int host1x04_init(struct host1x *host) +{ +	host->channel_op = &host1x_channel_ops; +	host->cdma_op = &host1x_cdma_ops; +	host->cdma_pb_op = &host1x_pushbuffer_ops; +	host->syncpt_op = &host1x_syncpt_ops; +	host->intr_op = &host1x_intr_ops; +	host->debug_op = &host1x_debug_ops; + +	return 0; +} diff --git a/drivers/gpu/host1x/hw/host1x04.h b/drivers/gpu/host1x/hw/host1x04.h new file mode 100644 index 00000000000..a9ab7496c06 --- /dev/null +++ b/drivers/gpu/host1x/hw/host1x04.h @@ -0,0 +1,26 @@ +/* + * Host1x init for Tegra124 SoCs + * + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef HOST1X_HOST1X04_H +#define HOST1X_HOST1X04_H + +struct host1x; + +int host1x04_init(struct host1x *host); + +#endif diff --git a/drivers/gpu/host1x/hw/host1x04_hardware.h b/drivers/gpu/host1x/hw/host1x04_hardware.h new file mode 100644 index 00000000000..de1a3817532 --- /dev/null +++ b/drivers/gpu/host1x/hw/host1x04_hardware.h @@ -0,0 +1,142 @@ +/* + * Tegra host1x Register Offsets for Tegra124 + * + * Copyright (c) 2010-2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef __HOST1X_HOST1X04_HARDWARE_H +#define __HOST1X_HOST1X04_HARDWARE_H + +#include <linux/types.h> +#include <linux/bitops.h> + +#include "hw_host1x04_channel.h" +#include "hw_host1x04_sync.h" +#include "hw_host1x04_uclass.h" + +static inline u32 host1x_class_host_wait_syncpt( +	unsigned indx, unsigned threshold) +{ +	return host1x_uclass_wait_syncpt_indx_f(indx) +		| host1x_uclass_wait_syncpt_thresh_f(threshold); +} + +static inline u32 host1x_class_host_load_syncpt_base( +	unsigned indx, unsigned threshold) +{ +	return host1x_uclass_load_syncpt_base_base_indx_f(indx) +		| host1x_uclass_load_syncpt_base_value_f(threshold); +} + +static inline u32 host1x_class_host_wait_syncpt_base( +	unsigned indx, unsigned base_indx, unsigned offset) +{ +	return host1x_uclass_wait_syncpt_base_indx_f(indx) +		| host1x_uclass_wait_syncpt_base_base_indx_f(base_indx) +		| host1x_uclass_wait_syncpt_base_offset_f(offset); +} + +static inline u32 host1x_class_host_incr_syncpt_base( +	unsigned base_indx, unsigned offset) +{ +	return host1x_uclass_incr_syncpt_base_base_indx_f(base_indx) +		| host1x_uclass_incr_syncpt_base_offset_f(offset); +} + +static inline u32 host1x_class_host_incr_syncpt( +	unsigned cond, unsigned indx) +{ +	return host1x_uclass_incr_syncpt_cond_f(cond) +		| host1x_uclass_incr_syncpt_indx_f(indx); +} + +static inline u32 host1x_class_host_indoff_reg_write( +	unsigned mod_id, unsigned offset, bool auto_inc) +{ +	u32 v = host1x_uclass_indoff_indbe_f(0xf) +		| host1x_uclass_indoff_indmodid_f(mod_id) +		| host1x_uclass_indoff_indroffset_f(offset); +	if (auto_inc) +		v |= host1x_uclass_indoff_autoinc_f(1); +	return v; +} + +static inline u32 host1x_class_host_indoff_reg_read( +	unsigned mod_id, unsigned offset, bool auto_inc) +{ +	u32 v = host1x_uclass_indoff_indmodid_f(mod_id) +		| host1x_uclass_indoff_indroffset_f(offset) +		| host1x_uclass_indoff_rwn_read_v(); +	if (auto_inc) +		v |= host1x_uclass_indoff_autoinc_f(1); +	return v; +} + +/* cdma opcodes */ +static inline u32 host1x_opcode_setclass( +	unsigned class_id, unsigned offset, unsigned mask) +{ +	return (0 << 28) | (offset << 16) | (class_id << 6) | mask; +} + +static inline u32 host1x_opcode_incr(unsigned offset, unsigned count) +{ +	return (1 << 28) | (offset << 16) | count; +} + +static inline u32 host1x_opcode_nonincr(unsigned offset, unsigned count) +{ +	return (2 << 28) | (offset << 16) | count; +} + +static inline u32 host1x_opcode_mask(unsigned offset, unsigned mask) +{ +	return (3 << 28) | (offset << 16) | mask; +} + +static inline u32 host1x_opcode_imm(unsigned offset, unsigned value) +{ +	return (4 << 28) | (offset << 16) | value; +} + +static inline u32 host1x_opcode_imm_incr_syncpt(unsigned cond, unsigned indx) +{ +	return host1x_opcode_imm(host1x_uclass_incr_syncpt_r(), +		host1x_class_host_incr_syncpt(cond, indx)); +} + +static inline u32 host1x_opcode_restart(unsigned address) +{ +	return (5 << 28) | (address >> 4); +} + +static inline u32 host1x_opcode_gather(unsigned count) +{ +	return (6 << 28) | count; +} + +static inline u32 host1x_opcode_gather_nonincr(unsigned offset,	unsigned count) +{ +	return (6 << 28) | (offset << 16) | BIT(15) | count; +} + +static inline u32 host1x_opcode_gather_incr(unsigned offset, unsigned count) +{ +	return (6 << 28) | (offset << 16) | BIT(15) | BIT(14) | count; +} + +#define HOST1X_OPCODE_NOP host1x_opcode_nonincr(0, 0) + +#endif diff --git a/drivers/gpu/host1x/hw/hw_host1x01_uclass.h b/drivers/gpu/host1x/hw/hw_host1x01_uclass.h index 42f3ce19ca3..f7553599ee2 100644 --- a/drivers/gpu/host1x/hw/hw_host1x01_uclass.h +++ b/drivers/gpu/host1x/hw/hw_host1x01_uclass.h @@ -111,6 +111,12 @@ static inline u32 host1x_uclass_wait_syncpt_base_offset_f(u32 v)  }  #define HOST1X_UCLASS_WAIT_SYNCPT_BASE_OFFSET_F(v) \  	host1x_uclass_wait_syncpt_base_offset_f(v) +static inline u32 host1x_uclass_load_syncpt_base_r(void) +{ +	return 0xb; +} +#define HOST1X_UCLASS_LOAD_SYNCPT_BASE \ +	host1x_uclass_load_syncpt_base_r()  static inline u32 host1x_uclass_load_syncpt_base_base_indx_f(u32 v)  {  	return (v & 0xff) << 24; diff --git a/drivers/gpu/host1x/hw/hw_host1x02_channel.h b/drivers/gpu/host1x/hw/hw_host1x02_channel.h new file mode 100644 index 00000000000..e490bcde33f --- /dev/null +++ b/drivers/gpu/host1x/hw/hw_host1x02_channel.h @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + * + */ + + /* +  * Function naming determines intended use: +  * +  *     <x>_r(void) : Returns the offset for register <x>. +  * +  *     <x>_w(void) : Returns the word offset for word (4 byte) element <x>. +  * +  *     <x>_<y>_s(void) : Returns size of field <y> of register <x> in bits. +  * +  *     <x>_<y>_f(u32 v) : Returns a value based on 'v' which has been shifted +  *         and masked to place it at field <y> of register <x>.  This value +  *         can be |'d with others to produce a full register value for +  *         register <x>. +  * +  *     <x>_<y>_m(void) : Returns a mask for field <y> of register <x>.  This +  *         value can be ~'d and then &'d to clear the value of field <y> for +  *         register <x>. +  * +  *     <x>_<y>_<z>_f(void) : Returns the constant value <z> after being shifted +  *         to place it at field <y> of register <x>.  This value can be |'d +  *         with others to produce a full register value for <x>. +  * +  *     <x>_<y>_v(u32 r) : Returns the value of field <y> from a full register +  *         <x> value 'r' after being shifted to place its LSB at bit 0. +  *         This value is suitable for direct comparison with other unshifted +  *         values appropriate for use in field <y> of register <x>. +  * +  *     <x>_<y>_<z>_v(void) : Returns the constant value for <z> defined for +  *         field <y> of register <x>.  This value is suitable for direct +  *         comparison with unshifted values appropriate for use in field <y> +  *         of register <x>. +  */ + +#ifndef HOST1X_HW_HOST1X02_CHANNEL_H +#define HOST1X_HW_HOST1X02_CHANNEL_H + +static inline u32 host1x_channel_fifostat_r(void) +{ +	return 0x0; +} +#define HOST1X_CHANNEL_FIFOSTAT \ +	host1x_channel_fifostat_r() +static inline u32 host1x_channel_fifostat_cfempty_v(u32 r) +{ +	return (r >> 11) & 0x1; +} +#define HOST1X_CHANNEL_FIFOSTAT_CFEMPTY_V(r) \ +	host1x_channel_fifostat_cfempty_v(r) +static inline u32 host1x_channel_dmastart_r(void) +{ +	return 0x14; +} +#define HOST1X_CHANNEL_DMASTART \ +	host1x_channel_dmastart_r() +static inline u32 host1x_channel_dmaput_r(void) +{ +	return 0x18; +} +#define HOST1X_CHANNEL_DMAPUT \ +	host1x_channel_dmaput_r() +static inline u32 host1x_channel_dmaget_r(void) +{ +	return 0x1c; +} +#define HOST1X_CHANNEL_DMAGET \ +	host1x_channel_dmaget_r() +static inline u32 host1x_channel_dmaend_r(void) +{ +	return 0x20; +} +#define HOST1X_CHANNEL_DMAEND \ +	host1x_channel_dmaend_r() +static inline u32 host1x_channel_dmactrl_r(void) +{ +	return 0x24; +} +#define HOST1X_CHANNEL_DMACTRL \ +	host1x_channel_dmactrl_r() +static inline u32 host1x_channel_dmactrl_dmastop(void) +{ +	return 1 << 0; +} +#define HOST1X_CHANNEL_DMACTRL_DMASTOP \ +	host1x_channel_dmactrl_dmastop() +static inline u32 host1x_channel_dmactrl_dmastop_v(u32 r) +{ +	return (r >> 0) & 0x1; +} +#define HOST1X_CHANNEL_DMACTRL_DMASTOP_V(r) \ +	host1x_channel_dmactrl_dmastop_v(r) +static inline u32 host1x_channel_dmactrl_dmagetrst(void) +{ +	return 1 << 1; +} +#define HOST1X_CHANNEL_DMACTRL_DMAGETRST \ +	host1x_channel_dmactrl_dmagetrst() +static inline u32 host1x_channel_dmactrl_dmainitget(void) +{ +	return 1 << 2; +} +#define HOST1X_CHANNEL_DMACTRL_DMAINITGET \ +	host1x_channel_dmactrl_dmainitget() + +#endif diff --git a/drivers/gpu/host1x/hw/hw_host1x02_sync.h b/drivers/gpu/host1x/hw/hw_host1x02_sync.h new file mode 100644 index 00000000000..4495401525e --- /dev/null +++ b/drivers/gpu/host1x/hw/hw_host1x02_sync.h @@ -0,0 +1,243 @@ +/* + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + * + */ + + /* +  * Function naming determines intended use: +  * +  *     <x>_r(void) : Returns the offset for register <x>. +  * +  *     <x>_w(void) : Returns the word offset for word (4 byte) element <x>. +  * +  *     <x>_<y>_s(void) : Returns size of field <y> of register <x> in bits. +  * +  *     <x>_<y>_f(u32 v) : Returns a value based on 'v' which has been shifted +  *         and masked to place it at field <y> of register <x>.  This value +  *         can be |'d with others to produce a full register value for +  *         register <x>. +  * +  *     <x>_<y>_m(void) : Returns a mask for field <y> of register <x>.  This +  *         value can be ~'d and then &'d to clear the value of field <y> for +  *         register <x>. +  * +  *     <x>_<y>_<z>_f(void) : Returns the constant value <z> after being shifted +  *         to place it at field <y> of register <x>.  This value can be |'d +  *         with others to produce a full register value for <x>. +  * +  *     <x>_<y>_v(u32 r) : Returns the value of field <y> from a full register +  *         <x> value 'r' after being shifted to place its LSB at bit 0. +  *         This value is suitable for direct comparison with other unshifted +  *         values appropriate for use in field <y> of register <x>. +  * +  *     <x>_<y>_<z>_v(void) : Returns the constant value for <z> defined for +  *         field <y> of register <x>.  This value is suitable for direct +  *         comparison with unshifted values appropriate for use in field <y> +  *         of register <x>. +  */ + +#ifndef HOST1X_HW_HOST1X02_SYNC_H +#define HOST1X_HW_HOST1X02_SYNC_H + +#define REGISTER_STRIDE	4 + +static inline u32 host1x_sync_syncpt_r(unsigned int id) +{ +	return 0x400 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT(id) \ +	host1x_sync_syncpt_r(id) +static inline u32 host1x_sync_syncpt_thresh_cpu0_int_status_r(unsigned int id) +{ +	return 0x40 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_THRESH_CPU0_INT_STATUS(id) \ +	host1x_sync_syncpt_thresh_cpu0_int_status_r(id) +static inline u32 host1x_sync_syncpt_thresh_int_disable_r(unsigned int id) +{ +	return 0x60 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_THRESH_INT_DISABLE(id) \ +	host1x_sync_syncpt_thresh_int_disable_r(id) +static inline u32 host1x_sync_syncpt_thresh_int_enable_cpu0_r(unsigned int id) +{ +	return 0x68 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_THRESH_INT_ENABLE_CPU0(id) \ +	host1x_sync_syncpt_thresh_int_enable_cpu0_r(id) +static inline u32 host1x_sync_cf_setup_r(unsigned int channel) +{ +	return 0x80 + channel * REGISTER_STRIDE; +} +#define HOST1X_SYNC_CF_SETUP(channel) \ +	host1x_sync_cf_setup_r(channel) +static inline u32 host1x_sync_cf_setup_base_v(u32 r) +{ +	return (r >> 0) & 0x3ff; +} +#define HOST1X_SYNC_CF_SETUP_BASE_V(r) \ +	host1x_sync_cf_setup_base_v(r) +static inline u32 host1x_sync_cf_setup_limit_v(u32 r) +{ +	return (r >> 16) & 0x3ff; +} +#define HOST1X_SYNC_CF_SETUP_LIMIT_V(r) \ +	host1x_sync_cf_setup_limit_v(r) +static inline u32 host1x_sync_cmdproc_stop_r(void) +{ +	return 0xac; +} +#define HOST1X_SYNC_CMDPROC_STOP \ +	host1x_sync_cmdproc_stop_r() +static inline u32 host1x_sync_ch_teardown_r(void) +{ +	return 0xb0; +} +#define HOST1X_SYNC_CH_TEARDOWN \ +	host1x_sync_ch_teardown_r() +static inline u32 host1x_sync_usec_clk_r(void) +{ +	return 0x1a4; +} +#define HOST1X_SYNC_USEC_CLK \ +	host1x_sync_usec_clk_r() +static inline u32 host1x_sync_ctxsw_timeout_cfg_r(void) +{ +	return 0x1a8; +} +#define HOST1X_SYNC_CTXSW_TIMEOUT_CFG \ +	host1x_sync_ctxsw_timeout_cfg_r() +static inline u32 host1x_sync_ip_busy_timeout_r(void) +{ +	return 0x1bc; +} +#define HOST1X_SYNC_IP_BUSY_TIMEOUT \ +	host1x_sync_ip_busy_timeout_r() +static inline u32 host1x_sync_mlock_owner_r(unsigned int id) +{ +	return 0x340 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_MLOCK_OWNER(id) \ +	host1x_sync_mlock_owner_r(id) +static inline u32 host1x_sync_mlock_owner_chid_f(u32 v) +{ +	return (v & 0xf) << 8; +} +#define HOST1X_SYNC_MLOCK_OWNER_CHID_F(v) \ +	host1x_sync_mlock_owner_chid_f(v) +static inline u32 host1x_sync_mlock_owner_cpu_owns_v(u32 r) +{ +	return (r >> 1) & 0x1; +} +#define HOST1X_SYNC_MLOCK_OWNER_CPU_OWNS_V(r) \ +	host1x_sync_mlock_owner_cpu_owns_v(r) +static inline u32 host1x_sync_mlock_owner_ch_owns_v(u32 r) +{ +	return (r >> 0) & 0x1; +} +#define HOST1X_SYNC_MLOCK_OWNER_CH_OWNS_V(r) \ +	host1x_sync_mlock_owner_ch_owns_v(r) +static inline u32 host1x_sync_syncpt_int_thresh_r(unsigned int id) +{ +	return 0x500 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_INT_THRESH(id) \ +	host1x_sync_syncpt_int_thresh_r(id) +static inline u32 host1x_sync_syncpt_base_r(unsigned int id) +{ +	return 0x600 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_BASE(id) \ +	host1x_sync_syncpt_base_r(id) +static inline u32 host1x_sync_syncpt_cpu_incr_r(unsigned int id) +{ +	return 0x700 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_CPU_INCR(id) \ +	host1x_sync_syncpt_cpu_incr_r(id) +static inline u32 host1x_sync_cbread_r(unsigned int channel) +{ +	return 0x720 + channel * REGISTER_STRIDE; +} +#define HOST1X_SYNC_CBREAD(channel) \ +	host1x_sync_cbread_r(channel) +static inline u32 host1x_sync_cfpeek_ctrl_r(void) +{ +	return 0x74c; +} +#define HOST1X_SYNC_CFPEEK_CTRL \ +	host1x_sync_cfpeek_ctrl_r() +static inline u32 host1x_sync_cfpeek_ctrl_addr_f(u32 v) +{ +	return (v & 0x3ff) << 0; +} +#define HOST1X_SYNC_CFPEEK_CTRL_ADDR_F(v) \ +	host1x_sync_cfpeek_ctrl_addr_f(v) +static inline u32 host1x_sync_cfpeek_ctrl_channr_f(u32 v) +{ +	return (v & 0xf) << 16; +} +#define HOST1X_SYNC_CFPEEK_CTRL_CHANNR_F(v) \ +	host1x_sync_cfpeek_ctrl_channr_f(v) +static inline u32 host1x_sync_cfpeek_ctrl_ena_f(u32 v) +{ +	return (v & 0x1) << 31; +} +#define HOST1X_SYNC_CFPEEK_CTRL_ENA_F(v) \ +	host1x_sync_cfpeek_ctrl_ena_f(v) +static inline u32 host1x_sync_cfpeek_read_r(void) +{ +	return 0x750; +} +#define HOST1X_SYNC_CFPEEK_READ \ +	host1x_sync_cfpeek_read_r() +static inline u32 host1x_sync_cfpeek_ptrs_r(void) +{ +	return 0x754; +} +#define HOST1X_SYNC_CFPEEK_PTRS \ +	host1x_sync_cfpeek_ptrs_r() +static inline u32 host1x_sync_cfpeek_ptrs_cf_rd_ptr_v(u32 r) +{ +	return (r >> 0) & 0x3ff; +} +#define HOST1X_SYNC_CFPEEK_PTRS_CF_RD_PTR_V(r) \ +	host1x_sync_cfpeek_ptrs_cf_rd_ptr_v(r) +static inline u32 host1x_sync_cfpeek_ptrs_cf_wr_ptr_v(u32 r) +{ +	return (r >> 16) & 0x3ff; +} +#define HOST1X_SYNC_CFPEEK_PTRS_CF_WR_PTR_V(r) \ +	host1x_sync_cfpeek_ptrs_cf_wr_ptr_v(r) +static inline u32 host1x_sync_cbstat_r(unsigned int channel) +{ +	return 0x758 + channel * REGISTER_STRIDE; +} +#define HOST1X_SYNC_CBSTAT(channel) \ +	host1x_sync_cbstat_r(channel) +static inline u32 host1x_sync_cbstat_cboffset_v(u32 r) +{ +	return (r >> 0) & 0xffff; +} +#define HOST1X_SYNC_CBSTAT_CBOFFSET_V(r) \ +	host1x_sync_cbstat_cboffset_v(r) +static inline u32 host1x_sync_cbstat_cbclass_v(u32 r) +{ +	return (r >> 16) & 0x3ff; +} +#define HOST1X_SYNC_CBSTAT_CBCLASS_V(r) \ +	host1x_sync_cbstat_cbclass_v(r) + +#endif diff --git a/drivers/gpu/host1x/hw/hw_host1x02_uclass.h b/drivers/gpu/host1x/hw/hw_host1x02_uclass.h new file mode 100644 index 00000000000..028e49d9bac --- /dev/null +++ b/drivers/gpu/host1x/hw/hw_host1x02_uclass.h @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + * + */ + + /* +  * Function naming determines intended use: +  * +  *     <x>_r(void) : Returns the offset for register <x>. +  * +  *     <x>_w(void) : Returns the word offset for word (4 byte) element <x>. +  * +  *     <x>_<y>_s(void) : Returns size of field <y> of register <x> in bits. +  * +  *     <x>_<y>_f(u32 v) : Returns a value based on 'v' which has been shifted +  *         and masked to place it at field <y> of register <x>.  This value +  *         can be |'d with others to produce a full register value for +  *         register <x>. +  * +  *     <x>_<y>_m(void) : Returns a mask for field <y> of register <x>.  This +  *         value can be ~'d and then &'d to clear the value of field <y> for +  *         register <x>. +  * +  *     <x>_<y>_<z>_f(void) : Returns the constant value <z> after being shifted +  *         to place it at field <y> of register <x>.  This value can be |'d +  *         with others to produce a full register value for <x>. +  * +  *     <x>_<y>_v(u32 r) : Returns the value of field <y> from a full register +  *         <x> value 'r' after being shifted to place its LSB at bit 0. +  *         This value is suitable for direct comparison with other unshifted +  *         values appropriate for use in field <y> of register <x>. +  * +  *     <x>_<y>_<z>_v(void) : Returns the constant value for <z> defined for +  *         field <y> of register <x>.  This value is suitable for direct +  *         comparison with unshifted values appropriate for use in field <y> +  *         of register <x>. +  */ + +#ifndef HOST1X_HW_HOST1X02_UCLASS_H +#define HOST1X_HW_HOST1X02_UCLASS_H + +static inline u32 host1x_uclass_incr_syncpt_r(void) +{ +	return 0x0; +} +#define HOST1X_UCLASS_INCR_SYNCPT \ +	host1x_uclass_incr_syncpt_r() +static inline u32 host1x_uclass_incr_syncpt_cond_f(u32 v) +{ +	return (v & 0xff) << 8; +} +#define HOST1X_UCLASS_INCR_SYNCPT_COND_F(v) \ +	host1x_uclass_incr_syncpt_cond_f(v) +static inline u32 host1x_uclass_incr_syncpt_indx_f(u32 v) +{ +	return (v & 0xff) << 0; +} +#define HOST1X_UCLASS_INCR_SYNCPT_INDX_F(v) \ +	host1x_uclass_incr_syncpt_indx_f(v) +static inline u32 host1x_uclass_wait_syncpt_r(void) +{ +	return 0x8; +} +#define HOST1X_UCLASS_WAIT_SYNCPT \ +	host1x_uclass_wait_syncpt_r() +static inline u32 host1x_uclass_wait_syncpt_indx_f(u32 v) +{ +	return (v & 0xff) << 24; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_INDX_F(v) \ +	host1x_uclass_wait_syncpt_indx_f(v) +static inline u32 host1x_uclass_wait_syncpt_thresh_f(u32 v) +{ +	return (v & 0xffffff) << 0; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_THRESH_F(v) \ +	host1x_uclass_wait_syncpt_thresh_f(v) +static inline u32 host1x_uclass_wait_syncpt_base_r(void) +{ +	return 0x9; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_BASE \ +	host1x_uclass_wait_syncpt_base_r() +static inline u32 host1x_uclass_wait_syncpt_base_indx_f(u32 v) +{ +	return (v & 0xff) << 24; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_BASE_INDX_F(v) \ +	host1x_uclass_wait_syncpt_base_indx_f(v) +static inline u32 host1x_uclass_wait_syncpt_base_base_indx_f(u32 v) +{ +	return (v & 0xff) << 16; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_BASE_BASE_INDX_F(v) \ +	host1x_uclass_wait_syncpt_base_base_indx_f(v) +static inline u32 host1x_uclass_wait_syncpt_base_offset_f(u32 v) +{ +	return (v & 0xffff) << 0; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_BASE_OFFSET_F(v) \ +	host1x_uclass_wait_syncpt_base_offset_f(v) +static inline u32 host1x_uclass_load_syncpt_base_r(void) +{ +	return 0xb; +} +#define HOST1X_UCLASS_LOAD_SYNCPT_BASE \ +	host1x_uclass_load_syncpt_base_r() +static inline u32 host1x_uclass_load_syncpt_base_base_indx_f(u32 v) +{ +	return (v & 0xff) << 24; +} +#define HOST1X_UCLASS_LOAD_SYNCPT_BASE_BASE_INDX_F(v) \ +	host1x_uclass_load_syncpt_base_base_indx_f(v) +static inline u32 host1x_uclass_load_syncpt_base_value_f(u32 v) +{ +	return (v & 0xffffff) << 0; +} +#define HOST1X_UCLASS_LOAD_SYNCPT_BASE_VALUE_F(v) \ +	host1x_uclass_load_syncpt_base_value_f(v) +static inline u32 host1x_uclass_incr_syncpt_base_base_indx_f(u32 v) +{ +	return (v & 0xff) << 24; +} +#define HOST1X_UCLASS_INCR_SYNCPT_BASE_BASE_INDX_F(v) \ +	host1x_uclass_incr_syncpt_base_base_indx_f(v) +static inline u32 host1x_uclass_incr_syncpt_base_offset_f(u32 v) +{ +	return (v & 0xffffff) << 0; +} +#define HOST1X_UCLASS_INCR_SYNCPT_BASE_OFFSET_F(v) \ +	host1x_uclass_incr_syncpt_base_offset_f(v) +static inline u32 host1x_uclass_indoff_r(void) +{ +	return 0x2d; +} +#define HOST1X_UCLASS_INDOFF \ +	host1x_uclass_indoff_r() +static inline u32 host1x_uclass_indoff_indbe_f(u32 v) +{ +	return (v & 0xf) << 28; +} +#define HOST1X_UCLASS_INDOFF_INDBE_F(v) \ +	host1x_uclass_indoff_indbe_f(v) +static inline u32 host1x_uclass_indoff_autoinc_f(u32 v) +{ +	return (v & 0x1) << 27; +} +#define HOST1X_UCLASS_INDOFF_AUTOINC_F(v) \ +	host1x_uclass_indoff_autoinc_f(v) +static inline u32 host1x_uclass_indoff_indmodid_f(u32 v) +{ +	return (v & 0xff) << 18; +} +#define HOST1X_UCLASS_INDOFF_INDMODID_F(v) \ +	host1x_uclass_indoff_indmodid_f(v) +static inline u32 host1x_uclass_indoff_indroffset_f(u32 v) +{ +	return (v & 0xffff) << 2; +} +#define HOST1X_UCLASS_INDOFF_INDROFFSET_F(v) \ +	host1x_uclass_indoff_indroffset_f(v) +static inline u32 host1x_uclass_indoff_rwn_read_v(void) +{ +	return 1; +} +#define HOST1X_UCLASS_INDOFF_INDROFFSET_F(v) \ +	host1x_uclass_indoff_indroffset_f(v) + +#endif diff --git a/drivers/gpu/host1x/hw/hw_host1x04_channel.h b/drivers/gpu/host1x/hw/hw_host1x04_channel.h new file mode 100644 index 00000000000..95e6f96142b --- /dev/null +++ b/drivers/gpu/host1x/hw/hw_host1x04_channel.h @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + * + */ + + /* +  * Function naming determines intended use: +  * +  *     <x>_r(void) : Returns the offset for register <x>. +  * +  *     <x>_w(void) : Returns the word offset for word (4 byte) element <x>. +  * +  *     <x>_<y>_s(void) : Returns size of field <y> of register <x> in bits. +  * +  *     <x>_<y>_f(u32 v) : Returns a value based on 'v' which has been shifted +  *         and masked to place it at field <y> of register <x>.  This value +  *         can be |'d with others to produce a full register value for +  *         register <x>. +  * +  *     <x>_<y>_m(void) : Returns a mask for field <y> of register <x>.  This +  *         value can be ~'d and then &'d to clear the value of field <y> for +  *         register <x>. +  * +  *     <x>_<y>_<z>_f(void) : Returns the constant value <z> after being shifted +  *         to place it at field <y> of register <x>.  This value can be |'d +  *         with others to produce a full register value for <x>. +  * +  *     <x>_<y>_v(u32 r) : Returns the value of field <y> from a full register +  *         <x> value 'r' after being shifted to place its LSB at bit 0. +  *         This value is suitable for direct comparison with other unshifted +  *         values appropriate for use in field <y> of register <x>. +  * +  *     <x>_<y>_<z>_v(void) : Returns the constant value for <z> defined for +  *         field <y> of register <x>.  This value is suitable for direct +  *         comparison with unshifted values appropriate for use in field <y> +  *         of register <x>. +  */ + +#ifndef HOST1X_HW_HOST1X04_CHANNEL_H +#define HOST1X_HW_HOST1X04_CHANNEL_H + +static inline u32 host1x_channel_fifostat_r(void) +{ +	return 0x0; +} +#define HOST1X_CHANNEL_FIFOSTAT \ +	host1x_channel_fifostat_r() +static inline u32 host1x_channel_fifostat_cfempty_v(u32 r) +{ +	return (r >> 11) & 0x1; +} +#define HOST1X_CHANNEL_FIFOSTAT_CFEMPTY_V(r) \ +	host1x_channel_fifostat_cfempty_v(r) +static inline u32 host1x_channel_dmastart_r(void) +{ +	return 0x14; +} +#define HOST1X_CHANNEL_DMASTART \ +	host1x_channel_dmastart_r() +static inline u32 host1x_channel_dmaput_r(void) +{ +	return 0x18; +} +#define HOST1X_CHANNEL_DMAPUT \ +	host1x_channel_dmaput_r() +static inline u32 host1x_channel_dmaget_r(void) +{ +	return 0x1c; +} +#define HOST1X_CHANNEL_DMAGET \ +	host1x_channel_dmaget_r() +static inline u32 host1x_channel_dmaend_r(void) +{ +	return 0x20; +} +#define HOST1X_CHANNEL_DMAEND \ +	host1x_channel_dmaend_r() +static inline u32 host1x_channel_dmactrl_r(void) +{ +	return 0x24; +} +#define HOST1X_CHANNEL_DMACTRL \ +	host1x_channel_dmactrl_r() +static inline u32 host1x_channel_dmactrl_dmastop(void) +{ +	return 1 << 0; +} +#define HOST1X_CHANNEL_DMACTRL_DMASTOP \ +	host1x_channel_dmactrl_dmastop() +static inline u32 host1x_channel_dmactrl_dmastop_v(u32 r) +{ +	return (r >> 0) & 0x1; +} +#define HOST1X_CHANNEL_DMACTRL_DMASTOP_V(r) \ +	host1x_channel_dmactrl_dmastop_v(r) +static inline u32 host1x_channel_dmactrl_dmagetrst(void) +{ +	return 1 << 1; +} +#define HOST1X_CHANNEL_DMACTRL_DMAGETRST \ +	host1x_channel_dmactrl_dmagetrst() +static inline u32 host1x_channel_dmactrl_dmainitget(void) +{ +	return 1 << 2; +} +#define HOST1X_CHANNEL_DMACTRL_DMAINITGET \ +	host1x_channel_dmactrl_dmainitget() + +#endif diff --git a/drivers/gpu/host1x/hw/hw_host1x04_sync.h b/drivers/gpu/host1x/hw/hw_host1x04_sync.h new file mode 100644 index 00000000000..ef2275b5407 --- /dev/null +++ b/drivers/gpu/host1x/hw/hw_host1x04_sync.h @@ -0,0 +1,243 @@ +/* + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + * + */ + + /* +  * Function naming determines intended use: +  * +  *     <x>_r(void) : Returns the offset for register <x>. +  * +  *     <x>_w(void) : Returns the word offset for word (4 byte) element <x>. +  * +  *     <x>_<y>_s(void) : Returns size of field <y> of register <x> in bits. +  * +  *     <x>_<y>_f(u32 v) : Returns a value based on 'v' which has been shifted +  *         and masked to place it at field <y> of register <x>.  This value +  *         can be |'d with others to produce a full register value for +  *         register <x>. +  * +  *     <x>_<y>_m(void) : Returns a mask for field <y> of register <x>.  This +  *         value can be ~'d and then &'d to clear the value of field <y> for +  *         register <x>. +  * +  *     <x>_<y>_<z>_f(void) : Returns the constant value <z> after being shifted +  *         to place it at field <y> of register <x>.  This value can be |'d +  *         with others to produce a full register value for <x>. +  * +  *     <x>_<y>_v(u32 r) : Returns the value of field <y> from a full register +  *         <x> value 'r' after being shifted to place its LSB at bit 0. +  *         This value is suitable for direct comparison with other unshifted +  *         values appropriate for use in field <y> of register <x>. +  * +  *     <x>_<y>_<z>_v(void) : Returns the constant value for <z> defined for +  *         field <y> of register <x>.  This value is suitable for direct +  *         comparison with unshifted values appropriate for use in field <y> +  *         of register <x>. +  */ + +#ifndef HOST1X_HW_HOST1X04_SYNC_H +#define HOST1X_HW_HOST1X04_SYNC_H + +#define REGISTER_STRIDE	4 + +static inline u32 host1x_sync_syncpt_r(unsigned int id) +{ +	return 0xf80 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT(id) \ +	host1x_sync_syncpt_r(id) +static inline u32 host1x_sync_syncpt_thresh_cpu0_int_status_r(unsigned int id) +{ +	return 0xe80 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_THRESH_CPU0_INT_STATUS(id) \ +	host1x_sync_syncpt_thresh_cpu0_int_status_r(id) +static inline u32 host1x_sync_syncpt_thresh_int_disable_r(unsigned int id) +{ +	return 0xf00 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_THRESH_INT_DISABLE(id) \ +	host1x_sync_syncpt_thresh_int_disable_r(id) +static inline u32 host1x_sync_syncpt_thresh_int_enable_cpu0_r(unsigned int id) +{ +	return 0xf20 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_THRESH_INT_ENABLE_CPU0(id) \ +	host1x_sync_syncpt_thresh_int_enable_cpu0_r(id) +static inline u32 host1x_sync_cf_setup_r(unsigned int channel) +{ +	return 0xc00 + channel * REGISTER_STRIDE; +} +#define HOST1X_SYNC_CF_SETUP(channel) \ +	host1x_sync_cf_setup_r(channel) +static inline u32 host1x_sync_cf_setup_base_v(u32 r) +{ +	return (r >> 0) & 0x3ff; +} +#define HOST1X_SYNC_CF_SETUP_BASE_V(r) \ +	host1x_sync_cf_setup_base_v(r) +static inline u32 host1x_sync_cf_setup_limit_v(u32 r) +{ +	return (r >> 16) & 0x3ff; +} +#define HOST1X_SYNC_CF_SETUP_LIMIT_V(r) \ +	host1x_sync_cf_setup_limit_v(r) +static inline u32 host1x_sync_cmdproc_stop_r(void) +{ +	return 0xac; +} +#define HOST1X_SYNC_CMDPROC_STOP \ +	host1x_sync_cmdproc_stop_r() +static inline u32 host1x_sync_ch_teardown_r(void) +{ +	return 0xb0; +} +#define HOST1X_SYNC_CH_TEARDOWN \ +	host1x_sync_ch_teardown_r() +static inline u32 host1x_sync_usec_clk_r(void) +{ +	return 0x1a4; +} +#define HOST1X_SYNC_USEC_CLK \ +	host1x_sync_usec_clk_r() +static inline u32 host1x_sync_ctxsw_timeout_cfg_r(void) +{ +	return 0x1a8; +} +#define HOST1X_SYNC_CTXSW_TIMEOUT_CFG \ +	host1x_sync_ctxsw_timeout_cfg_r() +static inline u32 host1x_sync_ip_busy_timeout_r(void) +{ +	return 0x1bc; +} +#define HOST1X_SYNC_IP_BUSY_TIMEOUT \ +	host1x_sync_ip_busy_timeout_r() +static inline u32 host1x_sync_mlock_owner_r(unsigned int id) +{ +	return 0x340 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_MLOCK_OWNER(id) \ +	host1x_sync_mlock_owner_r(id) +static inline u32 host1x_sync_mlock_owner_chid_f(u32 v) +{ +	return (v & 0xf) << 8; +} +#define HOST1X_SYNC_MLOCK_OWNER_CHID_F(v) \ +	host1x_sync_mlock_owner_chid_f(v) +static inline u32 host1x_sync_mlock_owner_cpu_owns_v(u32 r) +{ +	return (r >> 1) & 0x1; +} +#define HOST1X_SYNC_MLOCK_OWNER_CPU_OWNS_V(r) \ +	host1x_sync_mlock_owner_cpu_owns_v(r) +static inline u32 host1x_sync_mlock_owner_ch_owns_v(u32 r) +{ +	return (r >> 0) & 0x1; +} +#define HOST1X_SYNC_MLOCK_OWNER_CH_OWNS_V(r) \ +	host1x_sync_mlock_owner_ch_owns_v(r) +static inline u32 host1x_sync_syncpt_int_thresh_r(unsigned int id) +{ +	return 0x1380 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_INT_THRESH(id) \ +	host1x_sync_syncpt_int_thresh_r(id) +static inline u32 host1x_sync_syncpt_base_r(unsigned int id) +{ +	return 0x600 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_BASE(id) \ +	host1x_sync_syncpt_base_r(id) +static inline u32 host1x_sync_syncpt_cpu_incr_r(unsigned int id) +{ +	return 0xf60 + id * REGISTER_STRIDE; +} +#define HOST1X_SYNC_SYNCPT_CPU_INCR(id) \ +	host1x_sync_syncpt_cpu_incr_r(id) +static inline u32 host1x_sync_cbread_r(unsigned int channel) +{ +	return 0xc80 + channel * REGISTER_STRIDE; +} +#define HOST1X_SYNC_CBREAD(channel) \ +	host1x_sync_cbread_r(channel) +static inline u32 host1x_sync_cfpeek_ctrl_r(void) +{ +	return 0x74c; +} +#define HOST1X_SYNC_CFPEEK_CTRL \ +	host1x_sync_cfpeek_ctrl_r() +static inline u32 host1x_sync_cfpeek_ctrl_addr_f(u32 v) +{ +	return (v & 0x3ff) << 0; +} +#define HOST1X_SYNC_CFPEEK_CTRL_ADDR_F(v) \ +	host1x_sync_cfpeek_ctrl_addr_f(v) +static inline u32 host1x_sync_cfpeek_ctrl_channr_f(u32 v) +{ +	return (v & 0xf) << 16; +} +#define HOST1X_SYNC_CFPEEK_CTRL_CHANNR_F(v) \ +	host1x_sync_cfpeek_ctrl_channr_f(v) +static inline u32 host1x_sync_cfpeek_ctrl_ena_f(u32 v) +{ +	return (v & 0x1) << 31; +} +#define HOST1X_SYNC_CFPEEK_CTRL_ENA_F(v) \ +	host1x_sync_cfpeek_ctrl_ena_f(v) +static inline u32 host1x_sync_cfpeek_read_r(void) +{ +	return 0x750; +} +#define HOST1X_SYNC_CFPEEK_READ \ +	host1x_sync_cfpeek_read_r() +static inline u32 host1x_sync_cfpeek_ptrs_r(void) +{ +	return 0x754; +} +#define HOST1X_SYNC_CFPEEK_PTRS \ +	host1x_sync_cfpeek_ptrs_r() +static inline u32 host1x_sync_cfpeek_ptrs_cf_rd_ptr_v(u32 r) +{ +	return (r >> 0) & 0x3ff; +} +#define HOST1X_SYNC_CFPEEK_PTRS_CF_RD_PTR_V(r) \ +	host1x_sync_cfpeek_ptrs_cf_rd_ptr_v(r) +static inline u32 host1x_sync_cfpeek_ptrs_cf_wr_ptr_v(u32 r) +{ +	return (r >> 16) & 0x3ff; +} +#define HOST1X_SYNC_CFPEEK_PTRS_CF_WR_PTR_V(r) \ +	host1x_sync_cfpeek_ptrs_cf_wr_ptr_v(r) +static inline u32 host1x_sync_cbstat_r(unsigned int channel) +{ +	return 0xcc0 + channel * REGISTER_STRIDE; +} +#define HOST1X_SYNC_CBSTAT(channel) \ +	host1x_sync_cbstat_r(channel) +static inline u32 host1x_sync_cbstat_cboffset_v(u32 r) +{ +	return (r >> 0) & 0xffff; +} +#define HOST1X_SYNC_CBSTAT_CBOFFSET_V(r) \ +	host1x_sync_cbstat_cboffset_v(r) +static inline u32 host1x_sync_cbstat_cbclass_v(u32 r) +{ +	return (r >> 16) & 0x3ff; +} +#define HOST1X_SYNC_CBSTAT_CBCLASS_V(r) \ +	host1x_sync_cbstat_cbclass_v(r) + +#endif diff --git a/drivers/gpu/host1x/hw/hw_host1x04_uclass.h b/drivers/gpu/host1x/hw/hw_host1x04_uclass.h new file mode 100644 index 00000000000..d1460e97149 --- /dev/null +++ b/drivers/gpu/host1x/hw/hw_host1x04_uclass.h @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2013 NVIDIA Corporation. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope 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. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + * + */ + + /* +  * Function naming determines intended use: +  * +  *     <x>_r(void) : Returns the offset for register <x>. +  * +  *     <x>_w(void) : Returns the word offset for word (4 byte) element <x>. +  * +  *     <x>_<y>_s(void) : Returns size of field <y> of register <x> in bits. +  * +  *     <x>_<y>_f(u32 v) : Returns a value based on 'v' which has been shifted +  *         and masked to place it at field <y> of register <x>.  This value +  *         can be |'d with others to produce a full register value for +  *         register <x>. +  * +  *     <x>_<y>_m(void) : Returns a mask for field <y> of register <x>.  This +  *         value can be ~'d and then &'d to clear the value of field <y> for +  *         register <x>. +  * +  *     <x>_<y>_<z>_f(void) : Returns the constant value <z> after being shifted +  *         to place it at field <y> of register <x>.  This value can be |'d +  *         with others to produce a full register value for <x>. +  * +  *     <x>_<y>_v(u32 r) : Returns the value of field <y> from a full register +  *         <x> value 'r' after being shifted to place its LSB at bit 0. +  *         This value is suitable for direct comparison with other unshifted +  *         values appropriate for use in field <y> of register <x>. +  * +  *     <x>_<y>_<z>_v(void) : Returns the constant value for <z> defined for +  *         field <y> of register <x>.  This value is suitable for direct +  *         comparison with unshifted values appropriate for use in field <y> +  *         of register <x>. +  */ + +#ifndef HOST1X_HW_HOST1X04_UCLASS_H +#define HOST1X_HW_HOST1X04_UCLASS_H + +static inline u32 host1x_uclass_incr_syncpt_r(void) +{ +	return 0x0; +} +#define HOST1X_UCLASS_INCR_SYNCPT \ +	host1x_uclass_incr_syncpt_r() +static inline u32 host1x_uclass_incr_syncpt_cond_f(u32 v) +{ +	return (v & 0xff) << 8; +} +#define HOST1X_UCLASS_INCR_SYNCPT_COND_F(v) \ +	host1x_uclass_incr_syncpt_cond_f(v) +static inline u32 host1x_uclass_incr_syncpt_indx_f(u32 v) +{ +	return (v & 0xff) << 0; +} +#define HOST1X_UCLASS_INCR_SYNCPT_INDX_F(v) \ +	host1x_uclass_incr_syncpt_indx_f(v) +static inline u32 host1x_uclass_wait_syncpt_r(void) +{ +	return 0x8; +} +#define HOST1X_UCLASS_WAIT_SYNCPT \ +	host1x_uclass_wait_syncpt_r() +static inline u32 host1x_uclass_wait_syncpt_indx_f(u32 v) +{ +	return (v & 0xff) << 24; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_INDX_F(v) \ +	host1x_uclass_wait_syncpt_indx_f(v) +static inline u32 host1x_uclass_wait_syncpt_thresh_f(u32 v) +{ +	return (v & 0xffffff) << 0; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_THRESH_F(v) \ +	host1x_uclass_wait_syncpt_thresh_f(v) +static inline u32 host1x_uclass_wait_syncpt_base_r(void) +{ +	return 0x9; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_BASE \ +	host1x_uclass_wait_syncpt_base_r() +static inline u32 host1x_uclass_wait_syncpt_base_indx_f(u32 v) +{ +	return (v & 0xff) << 24; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_BASE_INDX_F(v) \ +	host1x_uclass_wait_syncpt_base_indx_f(v) +static inline u32 host1x_uclass_wait_syncpt_base_base_indx_f(u32 v) +{ +	return (v & 0xff) << 16; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_BASE_BASE_INDX_F(v) \ +	host1x_uclass_wait_syncpt_base_base_indx_f(v) +static inline u32 host1x_uclass_wait_syncpt_base_offset_f(u32 v) +{ +	return (v & 0xffff) << 0; +} +#define HOST1X_UCLASS_WAIT_SYNCPT_BASE_OFFSET_F(v) \ +	host1x_uclass_wait_syncpt_base_offset_f(v) +static inline u32 host1x_uclass_load_syncpt_base_r(void) +{ +	return 0xb; +} +#define HOST1X_UCLASS_LOAD_SYNCPT_BASE \ +	host1x_uclass_load_syncpt_base_r() +static inline u32 host1x_uclass_load_syncpt_base_base_indx_f(u32 v) +{ +	return (v & 0xff) << 24; +} +#define HOST1X_UCLASS_LOAD_SYNCPT_BASE_BASE_INDX_F(v) \ +	host1x_uclass_load_syncpt_base_base_indx_f(v) +static inline u32 host1x_uclass_load_syncpt_base_value_f(u32 v) +{ +	return (v & 0xffffff) << 0; +} +#define HOST1X_UCLASS_LOAD_SYNCPT_BASE_VALUE_F(v) \ +	host1x_uclass_load_syncpt_base_value_f(v) +static inline u32 host1x_uclass_incr_syncpt_base_base_indx_f(u32 v) +{ +	return (v & 0xff) << 24; +} +#define HOST1X_UCLASS_INCR_SYNCPT_BASE_BASE_INDX_F(v) \ +	host1x_uclass_incr_syncpt_base_base_indx_f(v) +static inline u32 host1x_uclass_incr_syncpt_base_offset_f(u32 v) +{ +	return (v & 0xffffff) << 0; +} +#define HOST1X_UCLASS_INCR_SYNCPT_BASE_OFFSET_F(v) \ +	host1x_uclass_incr_syncpt_base_offset_f(v) +static inline u32 host1x_uclass_indoff_r(void) +{ +	return 0x2d; +} +#define HOST1X_UCLASS_INDOFF \ +	host1x_uclass_indoff_r() +static inline u32 host1x_uclass_indoff_indbe_f(u32 v) +{ +	return (v & 0xf) << 28; +} +#define HOST1X_UCLASS_INDOFF_INDBE_F(v) \ +	host1x_uclass_indoff_indbe_f(v) +static inline u32 host1x_uclass_indoff_autoinc_f(u32 v) +{ +	return (v & 0x1) << 27; +} +#define HOST1X_UCLASS_INDOFF_AUTOINC_F(v) \ +	host1x_uclass_indoff_autoinc_f(v) +static inline u32 host1x_uclass_indoff_indmodid_f(u32 v) +{ +	return (v & 0xff) << 18; +} +#define HOST1X_UCLASS_INDOFF_INDMODID_F(v) \ +	host1x_uclass_indoff_indmodid_f(v) +static inline u32 host1x_uclass_indoff_indroffset_f(u32 v) +{ +	return (v & 0xffff) << 2; +} +#define HOST1X_UCLASS_INDOFF_INDROFFSET_F(v) \ +	host1x_uclass_indoff_indroffset_f(v) +static inline u32 host1x_uclass_indoff_rwn_read_v(void) +{ +	return 1; +} +#define HOST1X_UCLASS_INDOFF_INDROFFSET_F(v) \ +	host1x_uclass_indoff_indroffset_f(v) + +#endif diff --git a/drivers/gpu/host1x/hw/intr_hw.c b/drivers/gpu/host1x/hw/intr_hw.c index b592eef1efc..498b37e3905 100644 --- a/drivers/gpu/host1x/hw/intr_hw.c +++ b/drivers/gpu/host1x/hw/intr_hw.c @@ -20,10 +20,9 @@  #include <linux/interrupt.h>  #include <linux/irq.h>  #include <linux/io.h> -#include <asm/mach/irq.h> -#include "intr.h" -#include "dev.h" +#include "../intr.h" +#include "../dev.h"  /*   * Sync point threshold interrupt service function @@ -48,7 +47,7 @@ static irqreturn_t syncpt_thresh_isr(int irq, void *dev_id)  	unsigned long reg;  	int i, id; -	for (i = 0; i <= BIT_WORD(host->info->nb_pts); i++) { +	for (i = 0; i < DIV_ROUND_UP(host->info->nb_pts, 32); i++) {  		reg = host1x_sync_readl(host,  			HOST1X_SYNC_SYNCPT_THRESH_CPU0_INT_STATUS(i));  		for_each_set_bit(id, ®, BITS_PER_LONG) { @@ -65,7 +64,7 @@ static void _host1x_intr_disable_all_syncpt_intrs(struct host1x *host)  {  	u32 i; -	for (i = 0; i <= BIT_WORD(host->info->nb_pts); ++i) { +	for (i = 0; i < DIV_ROUND_UP(host->info->nb_pts, 32); ++i) {  		host1x_sync_writel(host, 0xffffffffu,  			HOST1X_SYNC_SYNCPT_THRESH_INT_DISABLE(i));  		host1x_sync_writel(host, 0xffffffffu, diff --git a/drivers/gpu/host1x/hw/syncpt_hw.c b/drivers/gpu/host1x/hw/syncpt_hw.c index 0cf6095d336..56e85395ac2 100644 --- a/drivers/gpu/host1x/hw/syncpt_hw.c +++ b/drivers/gpu/host1x/hw/syncpt_hw.c @@ -18,8 +18,8 @@  #include <linux/io.h> -#include "dev.h" -#include "syncpt.h" +#include "../dev.h" +#include "../syncpt.h"  /*   * Write the current syncpoint value back to hw.  | 
