Commit d361e46c authored by Alexander Viro's avatar Alexander Viro Committed by Linus Torvalds

[PATCH] sparse: rme96xx annotation

rme96xx annotated
parent c55cab84
......@@ -661,13 +661,13 @@ inline int rme96xx_getispace(struct dmabuf * dma, unsigned int hwp)
}
inline int rme96xx_copyfromuser(struct dmabuf* dma,const char* buffer,int count,int hop)
inline int rme96xx_copyfromuser(struct dmabuf* dma,const char __user * buffer,int count,int hop)
{
int swptr = dma->writeptr;
switch (dma->format) {
case AFMT_S32_BLOCKED:
{
char* buf = (char*)buffer;
char __user * buf = (char __user *)buffer;
int cnt = count/dma->outchannels;
int i;
for (i=0;i < dma->outchannels;i++) {
......@@ -686,7 +686,7 @@ inline int rme96xx_copyfromuser(struct dmabuf* dma,const char* buffer,int count,
int i,j;
int cnt = count/dma->outchannels;
for (i=0;i < dma->outchannels + dma->mono;i++) {
short* sbuf = (short*)buffer + i*(!dma->mono);
short __user * sbuf = (short __user *)buffer + i*(!dma->mono);
short* hwbuf =(short*) &dma->s->playbuf[(dma->outoffset + i)*RME96xx_DMA_MAX_SAMPLES];
hwbuf+=(swptr>>1);
for (j=0;j<(cnt>>1);j++) {
......@@ -710,13 +710,13 @@ inline int rme96xx_copyfromuser(struct dmabuf* dma,const char* buffer,int count,
}
/* The count argument is the number of bytes */
inline int rme96xx_copytouser(struct dmabuf* dma,const char* buffer,int count,int hop)
inline int rme96xx_copytouser(struct dmabuf* dma,const char __user* buffer,int count,int hop)
{
int swptr = dma->readptr;
switch (dma->format) {
case AFMT_S32_BLOCKED:
{
char* buf = (char*)buffer;
char __user * buf = (char __user *)buffer;
int cnt = count/dma->inchannels;
int i;
......@@ -736,7 +736,7 @@ inline int rme96xx_copytouser(struct dmabuf* dma,const char* buffer,int count,in
int i,j;
int cnt = count/dma->inchannels;
for (i=0;i < dma->inchannels;i++) {
short* sbuf = (short*)buffer + i;
short __user * sbuf = (short __user *)buffer + i;
short* hwbuf =(short*) &dma->s->recbuf[(dma->inoffset + i)*RME96xx_DMA_MAX_SAMPLES];
hwbuf+=(swptr>>1);
for (j=0;j<(cnt>>1);j++) {
......@@ -1121,7 +1121,6 @@ module_exit(cleanup_rme96xx);
static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd, unsigned long arg)
{
struct dmabuf * dma = (struct dmabuf *)file->private_data;
rme96xx_info *s = dma->s;
unsigned long flags;
......@@ -1129,6 +1128,8 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
count_info cinfo;
int count;
int val = 0;
void __user *argp = (void __user *)arg;
int __user *p = argp;
VALIDATE_STATE(s);
......@@ -1136,7 +1137,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
switch (cmd) {
case OSS_GETVERSION:
return put_user(SOUND_VERSION, (int *)arg);
return put_user(SOUND_VERSION, p);
case SNDCTL_DSP_SYNC:
#if 0
......@@ -1149,14 +1150,14 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
return 0;
case SNDCTL_DSP_GETCAPS:
return put_user(DSP_CAP_DUPLEX | DSP_CAP_REALTIME | DSP_CAP_TRIGGER | DSP_CAP_MMAP, (int *)arg);
return put_user(DSP_CAP_DUPLEX | DSP_CAP_REALTIME | DSP_CAP_TRIGGER | DSP_CAP_MMAP, p);
case SNDCTL_DSP_RESET:
// rme96xx_clearbufs(dma);
return 0;
case SNDCTL_DSP_SPEED:
if (get_user(val, (int *)arg))
if (get_user(val, p))
return -EFAULT;
if (val >= 0) {
/* generally it's not a problem if we change the speed
......@@ -1195,10 +1196,10 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
spin_unlock_irqrestore(&s->lock, flags);
}
DBG(printk("speed set to %d\n",val));
return put_user(val, (int *)arg);
return put_user(val, p);
case SNDCTL_DSP_STEREO: /* this plays a mono file on two channels */
if (get_user(val, (int *)arg))
if (get_user(val, p))
return -EFAULT;
if (!val) {
......@@ -1216,7 +1217,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
return 0;
case SNDCTL_DSP_CHANNELS:
/* remember to check for resonable offset/channel pairs here */
if (get_user(val, (int *)arg))
if (get_user(val, p))
return -EFAULT;
if (file->f_mode & FMODE_WRITE) {
......@@ -1236,14 +1237,14 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
dma->mono=0;
return put_user(val, (int *)arg);
return put_user(val, p);
case SNDCTL_DSP_GETFMTS: /* Returns a mask */
return put_user(RME96xx_FMT, (int *)arg);
return put_user(RME96xx_FMT, p);
case SNDCTL_DSP_SETFMT: /* Selects ONE fmt*/
DBG(printk("setting to format %x\n",val));
if (get_user(val, (int *)arg))
if (get_user(val, p))
return -EFAULT;
if (val != AFMT_QUERY) {
if (val & RME96xx_FMT)
......@@ -1257,7 +1258,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
break;
}
}
return put_user(dma->format, (int *)arg);
return put_user(dma->format, p);
case SNDCTL_DSP_POST:
return 0;
......@@ -1270,10 +1271,10 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
if (file->f_mode & FMODE_WRITE && s->ctrl & CTRL_DAC2_EN)
val |= PCM_ENABLE_OUTPUT;
#endif
return put_user(val, (int *)arg);
return put_user(val, p);
case SNDCTL_DSP_SETTRIGGER:
if (get_user(val, (int *)arg))
if (get_user(val, p))
return -EFAULT;
#if 0
if (file->f_mode & FMODE_READ) {
......@@ -1309,7 +1310,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
abinfo.fragstotal = 2;
abinfo.fragments = (count > s->fragsize);
return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? -EFAULT : 0;
return copy_to_user(argp, &abinfo, sizeof(abinfo)) ? -EFAULT : 0;
case SNDCTL_DSP_GETISPACE:
if (!(file->f_mode & FMODE_READ))
......@@ -1323,7 +1324,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
abinfo.bytes = (count*dma->inchannels)>>dma->formatshift;
abinfo.fragstotal = 2;
abinfo.fragments = count > s->fragsize;
return copy_to_user((void *)arg, &abinfo, sizeof(abinfo)) ? -EFAULT : 0;
return copy_to_user(argp, &abinfo, sizeof(abinfo)) ? -EFAULT : 0;
case SNDCTL_DSP_NONBLOCK:
file->f_flags |= O_NONBLOCK;
......@@ -1339,7 +1340,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
if (count < 0)
count += s->fragsize<<1;
return put_user(count, (int *)arg);
return put_user(count, p);
/* check out how to use mmaped mode (can only be blocked !!!) */
......@@ -1359,7 +1360,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
dma->readptr &= s->fragsize<<1;
spin_unlock_irqrestore(&s->lock,flags);
if (copy_to_user((void *)arg, &cinfo, sizeof(cinfo)))
if (copy_to_user(argp, &cinfo, sizeof(cinfo)))
return -EFAULT;
return 0;
......@@ -1378,14 +1379,14 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
if (dma->mmapped)
dma->writeptr &= s->fragsize<<1;
spin_unlock_irqrestore(&s->lock,flags);
if (copy_to_user((void *)arg, &cinfo, sizeof(cinfo)))
if (copy_to_user(argp, &cinfo, sizeof(cinfo)))
return -EFAULT;
return 0;
case SNDCTL_DSP_GETBLKSIZE:
return put_user(s->fragsize, (int *)arg);
return put_user(s->fragsize, p);
case SNDCTL_DSP_SETFRAGMENT:
if (get_user(val, (int *)arg))
if (get_user(val, p))
return -EFAULT;
val&=0xffff;
val -= 7;
......@@ -1399,7 +1400,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
if ((file->f_mode & FMODE_READ && s->dma_adc.subdivision) ||
(file->f_mode & FMODE_WRITE && s->dma_dac2.subdivision))
return -EINVAL;
if (get_user(val, (int *)arg))
if (get_user(val, p))
return -EFAULT;
if (val != 1 && val != 2 && val != 4)
return -EINVAL;
......@@ -1413,10 +1414,10 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
case SOUND_PCM_READ_RATE:
/* HP20020201 */
s->rate = rme96xx_get_sample_rate_status(s);
return put_user(s->rate, (int *)arg);
return put_user(s->rate, p);
case SOUND_PCM_READ_CHANNELS:
return put_user(dma->outchannels, (int *)arg);
return put_user(dma->outchannels, p);
case SOUND_PCM_READ_BITS:
switch (dma->format) {
......@@ -1427,7 +1428,7 @@ static int rme96xx_ioctl(struct inode *in, struct file *file, unsigned int cmd,
val = 16;
break;
}
return put_user(val, (int *)arg);
return put_user(val, p);
case SOUND_PCM_WRITE_FILTER:
case SNDCTL_DSP_SETSYNCRO:
......@@ -1529,7 +1530,7 @@ static int rme96xx_release(struct inode *in, struct file *file)
}
static ssize_t rme96xx_write(struct file *file, const char *buffer, size_t count, loff_t *ppos)
static ssize_t rme96xx_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos)
{
struct dmabuf *dma = (struct dmabuf *)file->private_data;
ssize_t ret = 0;
......@@ -1597,7 +1598,7 @@ static ssize_t rme96xx_write(struct file *file, const char *buffer, size_t count
return ret;
}
static ssize_t rme96xx_read(struct file *file, char *buffer, size_t count, loff_t *ppos)
static ssize_t rme96xx_read(struct file *file, char __user *buffer, size_t count, loff_t *ppos)
{
struct dmabuf *dma = (struct dmabuf *)file->private_data;
ssize_t ret = 0;
......@@ -1793,6 +1794,8 @@ static int rme96xx_mixer_ioctl(struct inode *inode, struct file *file, unsigned
rme96xx_info *s = (rme96xx_info *)file->private_data;
u32 status;
int spdifrate;
void __user *argp = (void __user *)arg;
int __user *p = argp;
status = readl(s->iobase + RME96xx_status_register);
/* hack to convert rev 1.5 SPDIF rate to "crystalrate" format HP 20020201 */
......@@ -1802,7 +1805,7 @@ static int rme96xx_mixer_ioctl(struct inode *inode, struct file *file, unsigned
VALIDATE_STATE(s);
if (cmd == SOUND_MIXER_PRIVATE1) {
rme_mixer mixer;
if (copy_from_user(&mixer,(void*)arg,sizeof(mixer)))
if (copy_from_user(&mixer,argp,sizeof(mixer)))
return -EFAULT;
mixer.devnr &= RME96xx_MASK_DEVS;
......@@ -1825,14 +1828,14 @@ static int rme96xx_mixer_ioctl(struct inode *inode, struct file *file, unsigned
mixer.o_offset = s->dma[mixer.devnr].outoffset;
mixer.i_offset = s->dma[mixer.devnr].inoffset;
return copy_to_user((void *)arg, &mixer, sizeof(mixer)) ? -EFAULT : 0;
return copy_to_user(argp, &mixer, sizeof(mixer)) ? -EFAULT : 0;
}
if (cmd == SOUND_MIXER_PRIVATE2) {
return put_user(status, (int *)arg);
return put_user(status, p);
}
if (cmd == SOUND_MIXER_PRIVATE3) {
u32 control;
if (copy_from_user(&control,(void*)arg,sizeof(control)))
if (copy_from_user(&control,argp,sizeof(control)))
return -EFAULT;
if (file->f_mode & FMODE_WRITE) {
s->control_register &= ~RME96xx_mixer_allowed;
......@@ -1840,7 +1843,7 @@ static int rme96xx_mixer_ioctl(struct inode *inode, struct file *file, unsigned
writel(control,s->iobase + RME96xx_control_register);
}
return put_user(s->control_register, (int *)arg);
return put_user(s->control_register, p);
}
return -1;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment