diff options
Diffstat (limited to 'drivers/iommu/sandbox_iommu.c')
| -rw-r--r-- | drivers/iommu/sandbox_iommu.c | 35 | 
1 files changed, 6 insertions, 29 deletions
| diff --git a/drivers/iommu/sandbox_iommu.c b/drivers/iommu/sandbox_iommu.c index e37976f86f0..c5eefec2185 100644 --- a/drivers/iommu/sandbox_iommu.c +++ b/drivers/iommu/sandbox_iommu.c @@ -5,28 +5,20 @@  #include <dm.h>  #include <iommu.h> -#include <lmb.h>  #include <asm/io.h> +#include <asm/test.h>  #include <linux/sizes.h> -#define IOMMU_PAGE_SIZE		SZ_4K - -struct sandbox_iommu_priv { -	struct lmb lmb; -}; -  static dma_addr_t sandbox_iommu_map(struct udevice *dev, void *addr,  				    size_t size)  { -	struct sandbox_iommu_priv *priv = dev_get_priv(dev);  	phys_addr_t paddr, dva;  	phys_size_t psize, off; -	paddr = ALIGN_DOWN(virt_to_phys(addr), IOMMU_PAGE_SIZE); +	paddr = ALIGN_DOWN(virt_to_phys(addr), SANDBOX_IOMMU_PAGE_SIZE);  	off = virt_to_phys(addr) - paddr; -	psize = ALIGN(size + off, IOMMU_PAGE_SIZE); - -	dva = lmb_alloc(&priv->lmb, psize, IOMMU_PAGE_SIZE); +	psize = ALIGN(size + off, SANDBOX_IOMMU_PAGE_SIZE); +	dva = (phys_addr_t)SANDBOX_IOMMU_DVA_ADDR;  	return dva + off;  } @@ -34,15 +26,12 @@ static dma_addr_t sandbox_iommu_map(struct udevice *dev, void *addr,  static void sandbox_iommu_unmap(struct udevice *dev, dma_addr_t addr,  				size_t size)  { -	struct sandbox_iommu_priv *priv = dev_get_priv(dev);  	phys_addr_t dva;  	phys_size_t psize; -	dva = ALIGN_DOWN(addr, IOMMU_PAGE_SIZE); +	dva = ALIGN_DOWN(addr, SANDBOX_IOMMU_PAGE_SIZE);  	psize = size + (addr - dva); -	psize = ALIGN(psize, IOMMU_PAGE_SIZE); - -	lmb_free(&priv->lmb, dva, psize); +	psize = ALIGN(psize, SANDBOX_IOMMU_PAGE_SIZE);  }  static struct iommu_ops sandbox_iommu_ops = { @@ -50,16 +39,6 @@ static struct iommu_ops sandbox_iommu_ops = {  	.unmap = sandbox_iommu_unmap,  }; -static int sandbox_iommu_probe(struct udevice *dev) -{ -	struct sandbox_iommu_priv *priv = dev_get_priv(dev); - -	lmb_init(&priv->lmb); -	lmb_add(&priv->lmb, 0x89abc000, SZ_16K); - -	return 0; -} -  static const struct udevice_id sandbox_iommu_ids[] = {  	{ .compatible = "sandbox,iommu" },  	{ /* sentinel */ } @@ -69,7 +48,5 @@ U_BOOT_DRIVER(sandbox_iommu) = {  	.name = "sandbox_iommu",  	.id = UCLASS_IOMMU,  	.of_match = sandbox_iommu_ids, -	.priv_auto = sizeof(struct sandbox_iommu_priv),  	.ops = &sandbox_iommu_ops, -	.probe = sandbox_iommu_probe,  }; | 
