return err;
 }
 
-static inline int copy_gathers(struct host1x_job *job, struct device *dev)
+static inline int copy_gathers(struct device *host, struct host1x_job *job,
+                              struct device *dev)
 {
        struct host1x_firewall fw;
        size_t size = 0;
         * Try a non-blocking allocation from a higher priority pools first,
         * as awaiting for the allocation here is a major performance hit.
         */
-       job->gather_copy_mapped = dma_alloc_wc(dev, size, &job->gather_copy,
+       job->gather_copy_mapped = dma_alloc_wc(host, size, &job->gather_copy,
                                               GFP_NOWAIT);
 
        /* the higher priority allocation failed, try the generic-blocking */
        if (!job->gather_copy_mapped)
-               job->gather_copy_mapped = dma_alloc_wc(dev, size,
+               job->gather_copy_mapped = dma_alloc_wc(host, size,
                                                       &job->gather_copy,
                                                       GFP_KERNEL);
        if (!job->gather_copy_mapped)
                goto out;
 
        if (IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL)) {
-               err = copy_gathers(job, dev);
+               err = copy_gathers(host->dev, job, dev);
                if (err)
                        goto out;
        }
        job->num_unpins = 0;
 
        if (job->gather_copy_size)
-               dma_free_wc(job->channel->dev, job->gather_copy_size,
+               dma_free_wc(host->dev, job->gather_copy_size,
                            job->gather_copy_mapped, job->gather_copy);
 }
 EXPORT_SYMBOL(host1x_job_unpin);