Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 80f97f0f authored by Varun Sethi's avatar Varun Sethi Committed by Joerg Roedel
Browse files

iommu/fsl: Add the window permission flag as a parameter to iommu_window_enable API.



Each iommu window can have access permissions associated with it. Extended the
window_enable API to incorporate window access permissions.

In case of PAMU each window can have its specific set of permissions.

Signed-off-by: default avatarVarun Sethi <Varun.Sethi@freescale.com>
Signed-off-by: default avatarJoerg Roedel <joro@8bytes.org>
parent bb5547ac
Loading
Loading
Loading
Loading
+3 −2
Original line number Original line Diff line number Diff line
@@ -853,12 +853,13 @@ EXPORT_SYMBOL_GPL(iommu_unmap);




int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
			       phys_addr_t paddr, u64 size)
			       phys_addr_t paddr, u64 size, int prot)
{
{
	if (unlikely(domain->ops->domain_window_enable == NULL))
	if (unlikely(domain->ops->domain_window_enable == NULL))
		return -ENODEV;
		return -ENODEV;


	return domain->ops->domain_window_enable(domain, wnd_nr, paddr, size);
	return domain->ops->domain_window_enable(domain, wnd_nr, paddr, size,
						 prot);
}
}
EXPORT_SYMBOL_GPL(iommu_domain_window_enable);
EXPORT_SYMBOL_GPL(iommu_domain_window_enable);


+4 −3
Original line number Original line Diff line number Diff line
@@ -104,7 +104,7 @@ struct iommu_ops {


	/* Window handling functions */
	/* Window handling functions */
	int (*domain_window_enable)(struct iommu_domain *domain, u32 wnd_nr,
	int (*domain_window_enable)(struct iommu_domain *domain, u32 wnd_nr,
				    phys_addr_t paddr, u64 size);
				    phys_addr_t paddr, u64 size, int prot);
	void (*domain_window_disable)(struct iommu_domain *domain, u32 wnd_nr);
	void (*domain_window_disable)(struct iommu_domain *domain, u32 wnd_nr);
	/* Set the numer of window per domain */
	/* Set the numer of window per domain */
	int (*domain_set_windows)(struct iommu_domain *domain, u32 w_count);
	int (*domain_set_windows)(struct iommu_domain *domain, u32 w_count);
@@ -169,7 +169,8 @@ extern int iommu_domain_set_attr(struct iommu_domain *domain, enum iommu_attr,


/* Window handling function prototypes */
/* Window handling function prototypes */
extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
extern int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr,
				      phys_addr_t offset, u64 size);
				      phys_addr_t offset, u64 size,
				      int prot);
extern void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr);
extern void iommu_domain_window_disable(struct iommu_domain *domain, u32 wnd_nr);
/**
/**
 * report_iommu_fault() - report about an IOMMU fault to the IOMMU framework
 * report_iommu_fault() - report about an IOMMU fault to the IOMMU framework
@@ -255,7 +256,7 @@ static inline int iommu_unmap(struct iommu_domain *domain, unsigned long iova,


static inline int iommu_domain_window_enable(struct iommu_domain *domain,
static inline int iommu_domain_window_enable(struct iommu_domain *domain,
					     u32 wnd_nr, phys_addr_t paddr,
					     u32 wnd_nr, phys_addr_t paddr,
					     u64 size)
					     u64 size, int prot)
{
{
	return -ENODEV;
	return -ENODEV;
}
}