#define IT_PKT_HEADER_SIZE_CIP         8 // For 2 CIP header.
 #define IT_PKT_HEADER_SIZE_NO_CIP      0 // Nothing.
 
-static void pcm_period_tasklet(unsigned long data);
+static void pcm_period_tasklet(struct tasklet_struct *t);
 
 /**
  * amdtp_stream_init - initialize an AMDTP stream structure
        s->flags = flags;
        s->context = ERR_PTR(-1);
        mutex_init(&s->mutex);
-       tasklet_init(&s->period_tasklet, pcm_period_tasklet, (unsigned long)s);
+       tasklet_setup(&s->period_tasklet, pcm_period_tasklet);
        s->packet_index = 0;
 
        init_waitqueue_head(&s->callback_wait);
        }
 }
 
-static void pcm_period_tasklet(unsigned long data)
+static void pcm_period_tasklet(struct tasklet_struct *t)
 {
-       struct amdtp_stream *s = (void *)data;
+       struct amdtp_stream *s = from_tasklet(s, t, period_tasklet);
        struct snd_pcm_substream *pcm = READ_ONCE(s->pcm);
 
        if (pcm)