mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
iommu/tegra-smmu: Add iova_pd_index() and iova_pt_index() helpers
Add a pair of helpers to get the page directory and page table indexes. Signed-off-by: Russell King <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
This commit is contained in:
parent
8482ee5ea1
commit
34d35f8cbe
1 changed files with 13 additions and 3 deletions
|
|
@ -134,6 +134,16 @@ static inline u32 smmu_readl(struct tegra_smmu *smmu, unsigned long offset)
|
|||
#define SMMU_PTE_ATTR (SMMU_PTE_READABLE | SMMU_PTE_WRITABLE | \
|
||||
SMMU_PTE_NONSECURE)
|
||||
|
||||
static unsigned int iova_pd_index(unsigned long iova)
|
||||
{
|
||||
return (iova >> SMMU_PDE_SHIFT) & (SMMU_NUM_PDE - 1);
|
||||
}
|
||||
|
||||
static unsigned int iova_pt_index(unsigned long iova)
|
||||
{
|
||||
return (iova >> SMMU_PTE_SHIFT) & (SMMU_NUM_PTE - 1);
|
||||
}
|
||||
|
||||
static inline void smmu_flush_ptc(struct tegra_smmu *smmu, struct page *page,
|
||||
unsigned long offset)
|
||||
{
|
||||
|
|
@ -469,8 +479,8 @@ static u32 *as_get_pte(struct tegra_smmu_as *as, dma_addr_t iova,
|
|||
struct page **pagep)
|
||||
{
|
||||
u32 *pd = page_address(as->pd), *pt, *count;
|
||||
u32 pde = (iova >> SMMU_PDE_SHIFT) & 0x3ff;
|
||||
u32 pte = (iova >> SMMU_PTE_SHIFT) & 0x3ff;
|
||||
unsigned int pde = iova_pd_index(iova);
|
||||
unsigned int pte = iova_pt_index(iova);
|
||||
struct tegra_smmu *smmu = as->smmu;
|
||||
struct page *page;
|
||||
unsigned int i;
|
||||
|
|
@ -512,7 +522,7 @@ static u32 *as_get_pte(struct tegra_smmu_as *as, dma_addr_t iova,
|
|||
static void tegra_smmu_pte_put_use(struct tegra_smmu_as *as, unsigned long iova)
|
||||
{
|
||||
struct tegra_smmu *smmu = as->smmu;
|
||||
u32 pde = (iova >> SMMU_PDE_SHIFT) & 0x3ff;
|
||||
unsigned int pde = iova_pd_index(iova);
|
||||
u32 *count = page_address(as->count);
|
||||
u32 *pd = page_address(as->pd);
|
||||
struct page *page;
|
||||
|
|
|
|||
Loading…
Reference in a new issue