#include <linux/init.h>
#include <linux/spinlock.h>
+#include <asm/timex.h>
#include "sound_config.h"
#include "pas2.h"
if (pcm_channels & 2)
{
- foo = (596590 + (arg / 2)) / arg;
- arg = (596590 + (foo / 2)) / foo;
+ foo = ((CLOCK_TICK_RATE / 2) + (arg / 2)) / arg;
+ arg = ((CLOCK_TICK_RATE / 2) + (foo / 2)) / foo;
}
else
{
- foo = (1193180 + (arg / 2)) / arg;
- arg = (1193180 + (foo / 2)) / foo;
+ foo = (CLOCK_TICK_RATE + (arg / 2)) / arg;
+ arg = (CLOCK_TICK_RATE + (foo / 2)) / foo;
}
pcm_speed = arg;
return pcm_bits;
}
-static int pas_audio_ioctl(int dev, unsigned int cmd, caddr_t arg)
+static int pas_audio_ioctl(int dev, unsigned int cmd, void __user *arg)
{
int val, ret;
+ int __user *p = arg;
DEB(printk("pas2_pcm.c: static int pas_audio_ioctl(unsigned int cmd = %X, unsigned int arg = %X)\n", cmd, arg));
switch (cmd)
{
case SOUND_PCM_WRITE_RATE:
- if (get_user(val, (int *)arg))
+ if (get_user(val, p))
return -EFAULT;
ret = pcm_set_speed(val);
break;
break;
case SNDCTL_DSP_STEREO:
- if (get_user(val, (int *)arg))
+ if (get_user(val, p))
return -EFAULT;
ret = pcm_set_channels(val + 1) - 1;
break;
case SOUND_PCM_WRITE_CHANNELS:
- if (get_user(val, (int *)arg))
+ if (get_user(val, p))
return -EFAULT;
ret = pcm_set_channels(val);
break;
break;
case SNDCTL_DSP_SETFMT:
- if (get_user(val, (int *)arg))
+ if (get_user(val, p))
return -EFAULT;
ret = pcm_set_bits(val);
break;
default:
return -EINVAL;
}
- return put_user(ret, (int *)arg);
+ return put_user(ret, p);
}
static void pas_audio_reset(int dev)