Those are needed by the ION-specific downstream code.

Such code would require changes at the core iommu header
file. As we won't be using the ION-specific binding, we can
just get rid of those.

Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>
---
 drivers/staging/hikey9xx/hisi_smmu_lpae.c | 201 ----------------------
 1 file changed, 201 deletions(-)

diff --git a/drivers/staging/hikey9xx/hisi_smmu_lpae.c 
b/drivers/staging/hikey9xx/hisi_smmu_lpae.c
index 9dae0a3067b6..a55b5a35b339 100644
--- a/drivers/staging/hikey9xx/hisi_smmu_lpae.c
+++ b/drivers/staging/hikey9xx/hisi_smmu_lpae.c
@@ -518,205 +518,6 @@ static void hisi_detach_dev_lpae(struct iommu_domain 
*domain,
        }
 }
 
-static dma_addr_t get_phys_addr_lpae(struct scatterlist *sg)
-{
-       dma_addr_t dma_addr = sg_dma_address(sg);
-
-       if (!dma_addr)
-               dma_addr = sg_phys(sg);
-       return dma_addr;
-}
-
-int iommu_map_tile(struct iommu_domain *domain, unsigned long iova,
-                  struct scatterlist *sg, size_t size, int prot,
-                  struct tile_format *format)
-{
-       if (unlikely(!(domain->ops->map_tile)))
-               return -ENODEV;
-
-       if (WARN_ON(iova & (~PAGE_MASK)))
-               return -EINVAL;
-
-       return domain->ops->map_tile(domain, iova, sg, size, prot, format);
-}
-
-int iommu_unmap_tile(struct iommu_domain *domain, unsigned long iova,
-                    size_t size)
-{
-       if (unlikely(!(domain->ops->unmap_tile)))
-               return -ENODEV;
-
-       if (WARN_ON(iova & (~PAGE_MASK)))
-               return -EINVAL;
-
-       return domain->ops->unmap_tile(domain, iova, size);
-}
-
-/*
- * iova: the start address for tile mapping
- * size: the physical memory size
- * sg: the node of scatter list where are the start node of physical memory
- * sg_offset: the physical memory offset in the sg node ,where is the start
- *            position of physical memory
- * prot: the pape property of virtual memory
- *
- * this function complete one row mapping.
- */
-static size_t
-hisi_map_tile_row_lpae(struct iommu_domain *domain,
-                      unsigned long iova, size_t size, struct scatterlist *sg,
-                      size_t sg_offset,
-                      struct hisi_map_tile_position_lpae *map_position,
-                      unsigned int prot)
-{
-       unsigned long map_size; /*the memory size that will be mapped*/
-       unsigned long phys_addr;
-       unsigned long mapped_size = 0; /*memory size that has been mapped*/
-       int ret;
-
-       while (1) {
-               /*
-                *get the remain memory,if current sg node is not enough memory,
-                *we map the remain memory firstly.
-                */
-               map_size = size - mapped_size;
-               if (map_size > (sg->length - sg_offset))
-                       map_size = (sg->length - sg_offset);
-
-               /* get the start physical address */
-               phys_addr = (unsigned long)get_phys_addr_lpae(sg) + sg_offset;
-               ret = hisi_smmu_map_lpae(domain,
-                                        iova + mapped_size, phys_addr,
-                                        map_size, prot, GFP_KERNEL);
-               if (ret) {
-                       dbg("[%s] hisi_smmu_map failed!\n", __func__);
-                       break;
-               }
-               /* update mapped memory size */
-               mapped_size += map_size;
-               /*
-                * if finished mapping,
-                * we update the memory offset of current node and
-                * save the memory position. otherwise we clean the sg_offset
-                * to zero and get next sg node.
-                */
-               if (mapped_size < size) {
-                       sg_offset = 0;
-                       sg = sg_next(sg);
-                       if (!sg) {
-                               dbg("[%s] phy memory not enough\n", __func__);
-                               break;
-                       }
-               } else {
-                       sg_offset += map_size;
-                       /* if physcial memory of this node is exhausted,
-                        * we choose next node
-                        */
-                       if (sg_offset == sg->length) {
-                               sg_offset = 0;
-                               sg = sg_next(sg);
-                       }
-                       break;
-               }
-       }
-       /* save current position */
-       map_position->sg = sg;
-       map_position->offset = sg_offset;
-
-       return mapped_size;
-}
-
-/*
- * domain:the iommu domain for mapping
- * iova:the start virtual address
- * sg: the scatter list of physical memory
- * size:the total size of all virtual memory
- * port:the property of page table of virtual memory
- * format:the parameter of tile mapping
- * this function map physical memory in tile mode
- */
-static int hisi_smmu_map_tile_lpae(struct iommu_domain *domain,
-                                  unsigned long iova,
-                                  struct scatterlist *sg,
-                                  size_t size, int prot,
-                                  struct tile_format *format)
-{
-       unsigned int phys_length;
-       struct scatterlist *sg_node;
-       unsigned int row_number, row;
-       unsigned int size_virt, size_phys;
-       unsigned int sg_offset;
-       int ret = size;
-       unsigned int mapped_size, header_size;
-       struct hisi_map_tile_position_lpae map_position;
-
-       /* calculate the whole length of phys mem */
-       for (phys_length = 0, sg_node = sg; sg_node; sg_node = sg_next(sg_node))
-               phys_length += ALIGN(sg_node->length, PAGE_SIZE);
-
-       header_size = format->header_size;
-
-       /* calculate the number of raws */
-       row_number = ((phys_length - header_size) >> PAGE_SHIFT)
-               / format->phys_page_line;
-       dbg("phys_length: 0x%x, rows: 0x%x, header_size: 0x%x\n",
-           phys_length, row_number, header_size);
-
-       /* calculate the need physical memory and virtual memory for one row */
-       size_phys = (format->phys_page_line * PAGE_SIZE);
-       size_virt = (format->virt_page_line * PAGE_SIZE);
-
-       sg_offset = 0;
-       sg_node = sg;
-
-       /* set start position */
-       map_position.sg = sg;
-       map_position.offset = 0;
-
-       /* map header */
-       if (header_size) {
-               mapped_size = hisi_map_tile_row_lpae(domain, iova,
-                                                    header_size, sg_node,
-                                                    sg_offset, &map_position,
-                                                    prot);
-               if (mapped_size != header_size) {
-                       WARN(1, "map head fail\n");
-                       ret = -EINVAL;
-                       goto error;
-               }
-               iova += ALIGN(header_size, size_virt);
-       }
-       /* map row by row */
-       for (row = 0; row < row_number; row++) {
-               /* get physical memory position */
-               if (map_position.sg) {
-                       sg_node = map_position.sg;
-                       sg_offset = map_position.offset;
-               } else {
-                       dbg("[%s]:physical memory is not enough\n", __func__);
-                       break;
-               }
-               /* map one row*/
-               mapped_size = hisi_map_tile_row_lpae(domain,
-                                                    iova + (size_virt * row),
-                                                    size_phys, sg_node, 
sg_offset,
-                                                    &map_position, prot);
-               if (mapped_size != size_phys) {
-                       WARN(1, "hisi_map_tile_row failed!\n");
-                       ret = -EINVAL;
-                       break;
-               }
-       };
-error:
-       return ret;
-}
-
-static size_t hisi_smmu_unmap_tile_lpae(struct iommu_domain *domain,
-                                       unsigned long iova, size_t size)
-{
-       return hisi_smmu_unmap_lpae(domain, iova, size, NULL);
-}
-
 static bool hisi_smmu_capable(enum iommu_cap cap)
 {
        return false;
@@ -764,8 +565,6 @@ static struct iommu_ops hisi_smmu_ops = {
        .remove_device  = hisi_smmu_remove_device,
        .device_group   = generic_device_group,
        .pgsize_bitmap  = SMMU_PAGE_SIZE,
-       .map_tile       = hisi_smmu_map_tile_lpae,
-       .unmap_tile     = hisi_smmu_unmap_tile_lpae,
 };
 
 static int hisi_smmu_probe_lpae(struct platform_device *pdev)
-- 
2.26.2

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to