diff options
author | Scott Williams <scwilliams@nvidia.com> | 2010-12-07 11:19:20 -0800 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:42:02 -0800 |
commit | 816ab05de4f2171e20171db01fa916634ed7bee6 (patch) | |
tree | 963ce2c1724c63598deb279d9f6ed54cfc93d1e3 /arch/arm/mach-tegra/include/mach/iovmm.h | |
parent | 7d8324d8f3dfc27407d7514fcbd605649c9bd210 (diff) |
[ARM/tegra] Add Tegra3 support
Bug 764354
Original-Change-Id: I8a390eb4dae87dceacb97461f23d13554868b046
Reviewed-on: http://git-master/r/12228
Reviewed-by: Scott Williams <scwilliams@nvidia.com>
Tested-by: Scott Williams <scwilliams@nvidia.com>
Original-Change-Id: I8e6b8303898796419fb5a759cd16edff9aeac081
Rebase-Id: R2866240384c6c24f46bd7ef54bc3dc9140d9e96b
Diffstat (limited to 'arch/arm/mach-tegra/include/mach/iovmm.h')
-rw-r--r-- | arch/arm/mach-tegra/include/mach/iovmm.h | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/arch/arm/mach-tegra/include/mach/iovmm.h b/arch/arm/mach-tegra/include/mach/iovmm.h index 98c9888163fd..77ec3875f9b5 100644 --- a/arch/arm/mach-tegra/include/mach/iovmm.h +++ b/arch/arm/mach-tegra/include/mach/iovmm.h @@ -20,6 +20,7 @@ #include <linux/list.h> #include <linux/platform_device.h> +#include <linux/miscdevice.h> #include <linux/rbtree.h> #include <linux/rwsem.h> #include <linux/spinlock.h> @@ -28,7 +29,7 @@ #ifndef _MACH_TEGRA_IOVMM_H_ #define _MACH_TEGRA_IOVMM_H_ -#if defined(CONFIG_ARCH_TEGRA_2x_SOC) +#if defined(CONFIG_ARCH_TEGRA_2x_SOC) || defined(CONFIG_ARCH_TEGRA_3x_SOC) typedef u32 tegra_iovmm_addr_t; #else #error "Unsupported tegra architecture family" @@ -73,6 +74,7 @@ struct tegra_iovmm_client { unsigned long flags; struct iovmm_share_group *group; struct tegra_iovmm_domain *domain; + struct miscdevice *misc_dev; struct list_head list; }; @@ -90,28 +92,28 @@ struct tegra_iovmm_area { struct tegra_iovmm_device_ops { /* maps a VMA using the page residency functions provided by the VMA */ - int (*map)(struct tegra_iovmm_device *dev, + int (*map)(struct tegra_iovmm_domain *domain, struct tegra_iovmm_area *io_vma); /* marks all PTEs in a VMA as invalid; decommits the virtual addres * space (potentially freeing PDEs when decommit is true.) */ - void (*unmap)(struct tegra_iovmm_device *dev, + void (*unmap)(struct tegra_iovmm_domain *domain, struct tegra_iovmm_area *io_vma, bool decommit); - void (*map_pfn)(struct tegra_iovmm_device *dev, + void (*map_pfn)(struct tegra_iovmm_domain *domain, struct tegra_iovmm_area *io_vma, tegra_iovmm_addr_t offs, unsigned long pfn); /* ensures that a domain is resident in the hardware's mapping region * so that it may be used by a client */ - int (*lock_domain)(struct tegra_iovmm_device *dev, - struct tegra_iovmm_domain *domain); - void (*unlock_domain)(struct tegra_iovmm_device *dev, - struct tegra_iovmm_domain *domain); + int (*lock_domain)(struct tegra_iovmm_domain *domain, + struct tegra_iovmm_client *client); + void (*unlock_domain)(struct tegra_iovmm_domain *domain, + struct tegra_iovmm_client *client); /* allocates a vmm_domain for the specified client; may return the same * domain for multiple clients */ struct tegra_iovmm_domain* (*alloc_domain)( struct tegra_iovmm_device *dev, struct tegra_iovmm_client *client); - void (*free_domain)(struct tegra_iovmm_device *dev, - struct tegra_iovmm_domain *domain); + void (*free_domain)(struct tegra_iovmm_domain *domain, + struct tegra_iovmm_client *client); int (*suspend)(struct tegra_iovmm_device *dev); void (*resume)(struct tegra_iovmm_device *dev); }; @@ -131,7 +133,7 @@ struct tegra_iovmm_area_ops { /* called by clients to allocate an I/O VMM client mapping context which * will be shared by all clients in the same share_group */ struct tegra_iovmm_client *tegra_iovmm_alloc_client(const char *name, - const char *share_group); + const char *share_group, struct miscdevice *misc_dev); size_t tegra_iovmm_get_vm_size(struct tegra_iovmm_client *client); @@ -195,7 +197,7 @@ int tegra_iovmm_unregister(struct tegra_iovmm_device *dev); #else /* CONFIG_TEGRA_IOVMM */ static inline struct tegra_iovmm_client *tegra_iovmm_alloc_client( - const char *name, const char *share_group) + const char *name, const char *share_group, struct miscdevice *misc_dev) { return NULL; } |