]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - include/linux/host1x.h
Merge tag 'for-linus-20191129' of git://git.kernel.dk/linux-block
[linux.git] / include / linux / host1x.h
index df6e613ba715e03230ecf1eeddb8cba42406e9cf..6f8d772591ba798c7e53117fa48f2a724325f134 100644 (file)
@@ -67,8 +67,9 @@ struct sg_table;
 struct host1x_bo_ops {
        struct host1x_bo *(*get)(struct host1x_bo *bo);
        void (*put)(struct host1x_bo *bo);
-       dma_addr_t (*pin)(struct host1x_bo *bo, struct sg_table **sgt);
-       void (*unpin)(struct host1x_bo *bo, struct sg_table *sgt);
+       struct sg_table *(*pin)(struct device *dev, struct host1x_bo *bo,
+                               dma_addr_t *phys);
+       void (*unpin)(struct device *dev, struct sg_table *sgt);
        void *(*mmap)(struct host1x_bo *bo);
        void (*munmap)(struct host1x_bo *bo, void *addr);
        void *(*kmap)(struct host1x_bo *bo, unsigned int pagenum);
@@ -95,15 +96,17 @@ static inline void host1x_bo_put(struct host1x_bo *bo)
        bo->ops->put(bo);
 }
 
-static inline dma_addr_t host1x_bo_pin(struct host1x_bo *bo,
-                                      struct sg_table **sgt)
+static inline struct sg_table *host1x_bo_pin(struct device *dev,
+                                            struct host1x_bo *bo,
+                                            dma_addr_t *phys)
 {
-       return bo->ops->pin(bo, sgt);
+       return bo->ops->pin(dev, bo, phys);
 }
 
-static inline void host1x_bo_unpin(struct host1x_bo *bo, struct sg_table *sgt)
+static inline void host1x_bo_unpin(struct device *dev, struct host1x_bo *bo,
+                                  struct sg_table *sgt)
 {
-       bo->ops->unpin(bo, sgt);
+       bo->ops->unpin(dev, sgt);
 }
 
 static inline void *host1x_bo_mmap(struct host1x_bo *bo)
@@ -170,6 +173,9 @@ int host1x_job_submit(struct host1x_job *job);
  * host1x job
  */
 
+#define HOST1X_RELOC_READ      (1 << 0)
+#define HOST1X_RELOC_WRITE     (1 << 1)
+
 struct host1x_reloc {
        struct {
                struct host1x_bo *bo;
@@ -180,6 +186,7 @@ struct host1x_reloc {
                unsigned long offset;
        } target;
        unsigned long shift;
+       unsigned long flags;
 };
 
 struct host1x_job {