Commit bd2442bc authored by Lucas Stach's avatar Lucas Stach

drm/etnaviv: iommuv1: fold pgtable_write into callers

A function doing a single assignment is not really helping the
code flow.
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Reviewed-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Reviewed-By: default avatarWladimir J. van der Laan <laanwj@gmail.com>
parent 1a540490
...@@ -50,15 +50,6 @@ static struct etnaviv_iommu_domain *to_etnaviv_domain(struct iommu_domain *domai ...@@ -50,15 +50,6 @@ static struct etnaviv_iommu_domain *to_etnaviv_domain(struct iommu_domain *domai
return container_of(domain, struct etnaviv_iommu_domain, domain); return container_of(domain, struct etnaviv_iommu_domain, domain);
} }
static void pgtable_write(struct etnaviv_iommu_domain_pgtable *pgtable,
unsigned long iova, phys_addr_t paddr)
{
/* calcuate index into page table */
unsigned int index = (iova - GPU_MEM_START) / SZ_4K;
pgtable->pgtable[index] = paddr;
}
static int __etnaviv_iommu_init(struct etnaviv_iommu_domain *etnaviv_domain) static int __etnaviv_iommu_init(struct etnaviv_iommu_domain *etnaviv_domain)
{ {
u32 *p; u32 *p;
...@@ -114,12 +105,13 @@ static int etnaviv_iommuv1_map(struct iommu_domain *domain, unsigned long iova, ...@@ -114,12 +105,13 @@ static int etnaviv_iommuv1_map(struct iommu_domain *domain, unsigned long iova,
phys_addr_t paddr, size_t size, int prot) phys_addr_t paddr, size_t size, int prot)
{ {
struct etnaviv_iommu_domain *etnaviv_domain = to_etnaviv_domain(domain); struct etnaviv_iommu_domain *etnaviv_domain = to_etnaviv_domain(domain);
unsigned int index = (iova - GPU_MEM_START) / SZ_4K;
if (size != SZ_4K) if (size != SZ_4K)
return -EINVAL; return -EINVAL;
spin_lock(&etnaviv_domain->map_lock); spin_lock(&etnaviv_domain->map_lock);
pgtable_write(&etnaviv_domain->pgtable, iova, paddr); etnaviv_domain->pgtable.pgtable[index] = paddr;
spin_unlock(&etnaviv_domain->map_lock); spin_unlock(&etnaviv_domain->map_lock);
return 0; return 0;
...@@ -129,13 +121,13 @@ static size_t etnaviv_iommuv1_unmap(struct iommu_domain *domain, ...@@ -129,13 +121,13 @@ static size_t etnaviv_iommuv1_unmap(struct iommu_domain *domain,
unsigned long iova, size_t size) unsigned long iova, size_t size)
{ {
struct etnaviv_iommu_domain *etnaviv_domain = to_etnaviv_domain(domain); struct etnaviv_iommu_domain *etnaviv_domain = to_etnaviv_domain(domain);
unsigned int index = (iova - GPU_MEM_START) / SZ_4K;
if (size != SZ_4K) if (size != SZ_4K)
return -EINVAL; return -EINVAL;
spin_lock(&etnaviv_domain->map_lock); spin_lock(&etnaviv_domain->map_lock);
pgtable_write(&etnaviv_domain->pgtable, iova, etnaviv_domain->pgtable.pgtable[index] = etnaviv_domain->bad_page_dma;
etnaviv_domain->bad_page_dma);
spin_unlock(&etnaviv_domain->map_lock); spin_unlock(&etnaviv_domain->map_lock);
return SZ_4K; return SZ_4K;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment