}
/* same as sound_timer.c:timer_ioctl!? */
-static int def_tmr_ioctl(int dev, unsigned int cmd, caddr_t arg)
+static int def_tmr_ioctl(int dev, unsigned int cmd, void __user *arg)
{
+ int __user *p = arg;
int val;
switch (cmd) {
case SNDCTL_TMR_SOURCE:
- return __put_user(TMR_INTERNAL, (int *)arg);
+ return __put_user(TMR_INTERNAL, p);
case SNDCTL_TMR_START:
tmr_reset();
return 0;
case SNDCTL_TMR_TIMEBASE:
- if (__get_user(val, (int *)arg))
+ if (__get_user(val, p))
return -EFAULT;
if (val) {
if (val < 1)
val = 1000;
curr_timebase = val;
}
- return __put_user(curr_timebase, (int *)arg);
+ return __put_user(curr_timebase, p);
case SNDCTL_TMR_TEMPO:
- if (__get_user(val, (int *)arg))
+ if (__get_user(val, p))
return -EFAULT;
if (val) {
if (val < 8)
curr_tempo = val;
reprogram_timer();
}
- return __put_user(curr_tempo, (int *)arg);
+ return __put_user(curr_tempo, p);
case SNDCTL_SEQ_CTRLRATE:
- if (__get_user(val, (int *)arg))
+ if (__get_user(val, p))
return -EFAULT;
if (val != 0) /* Can't change */
return -EINVAL;
val = ((curr_tempo * curr_timebase) + 30) / 60;
- return __put_user(val, (int *)arg);
+ return __put_user(val, p);
case SNDCTL_SEQ_GETTIME:
- return __put_user(curr_ticks, (int *)arg);
+ return __put_user(curr_ticks, p);
case SNDCTL_TMR_METRONOME:
/* NOP */