/* To protect channel manipulation */
        spinlock_t lock;
 
-       /* Token of a hardware channel thread of PL330 DMAC
-        * NULL if the channel is available to be acquired.
+       /*
+        * Hardware channel thread of PL330 DMAC. NULL if the channel is
+        * available.
         */
-       void *pl330_chid;
+       struct pl330_thread *thread;
 
        /* For D-to-M and M-to-D channels */
        int burst_sz; /* the peripheral fifo width */
  * Client is not notified after each xfer unit, just once after all
  * xfer units are done or some error occurs.
  */
-static int pl330_submit_req(void *ch_id, struct pl330_req *r)
+static int pl330_submit_req(struct pl330_thread *thrd, struct pl330_req *r)
 {
-       struct pl330_thread *thrd = ch_id;
        struct pl330_dmac *pl330;
        struct pl330_info *pi;
        struct _xfer_spec xs;
        return ret;
 }
 
-static int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op)
+static int pl330_chan_ctrl(struct pl330_thread *thrd, enum pl330_chan_op op)
 {
-       struct pl330_thread *thrd = ch_id;
        struct pl330_dmac *pl330;
        unsigned long flags;
        int ret = 0, active;
 /* Upon success, returns IdentityToken for the
  * allocated channel, NULL otherwise.
  */
-static void *pl330_request_channel(const struct pl330_info *pi)
+static struct pl330_thread *pl330_request_channel(const struct pl330_info *pi)
 {
        struct pl330_thread *thrd = NULL;
        struct pl330_dmac *pl330;
                pl330->events[ev] = -1;
 }
 
-static void pl330_release_channel(void *ch_id)
+static void pl330_release_channel(struct pl330_thread *thrd)
 {
-       struct pl330_thread *thrd = ch_id;
        struct pl330_dmac *pl330;
        unsigned long flags;
 
        /* Release Channel threads */
        for (i = 0; i < chans; i++) {
                thrd = &pl330->channels[i];
-               pl330_release_channel((void *)thrd);
+               pl330_release_channel(thrd);
        }
 
        /* Free memory */
                if (desc->status == BUSY)
                        continue;
 
-               ret = pl330_submit_req(pch->pl330_chid,
-                                               &desc->req);
+               ret = pl330_submit_req(pch->thread, &desc->req);
                if (!ret) {
                        desc->status = BUSY;
                } else if (ret == -EAGAIN) {
        fill_queue(pch);
 
        /* Make sure the PL330 Channel thread is active */
-       pl330_chan_ctrl(pch->pl330_chid, PL330_OP_START);
+       pl330_chan_ctrl(pch->thread, PL330_OP_START);
 
        while (!list_empty(&pch->completed_list)) {
                dma_async_tx_callback callback;
        dma_cookie_init(chan);
        pch->cyclic = false;
 
-       pch->pl330_chid = pl330_request_channel(&pdmac->pif);
-       if (!pch->pl330_chid) {
+       pch->thread = pl330_request_channel(&pdmac->pif);
+       if (!pch->thread) {
                spin_unlock_irqrestore(&pch->lock, flags);
                return -ENOMEM;
        }
                spin_lock_irqsave(&pch->lock, flags);
 
                /* FLUSH the PL330 Channel thread */
-               pl330_chan_ctrl(pch->pl330_chid, PL330_OP_FLUSH);
+               pl330_chan_ctrl(pch->thread, PL330_OP_FLUSH);
 
                /* Mark all desc done */
                list_for_each_entry(desc, &pch->submitted_list, node) {
 
        spin_lock_irqsave(&pch->lock, flags);
 
-       pl330_release_channel(pch->pl330_chid);
-       pch->pl330_chid = NULL;
+       pl330_release_channel(pch->thread);
+       pch->thread = NULL;
 
        if (pch->cyclic)
                list_splice_tail_init(&pch->work_list, &pch->dmac->desc_pool);
                INIT_LIST_HEAD(&pch->work_list);
                INIT_LIST_HEAD(&pch->completed_list);
                spin_lock_init(&pch->lock);
-               pch->pl330_chid = NULL;
+               pch->thread = NULL;
                pch->chan.device = pd;
                pch->dmac = pdmac;