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

[PATCH] sparse: ali5455 annotation

ali5455 annotated
parent 2e2cb285
...@@ -1579,7 +1579,7 @@ static irqreturn_t ali_interrupt(int irq, void *dev_id, struct pt_regs *regs) ...@@ -1579,7 +1579,7 @@ static irqreturn_t ali_interrupt(int irq, void *dev_id, struct pt_regs *regs)
waiting to be copied to the user's buffer. It is filled by the dma waiting to be copied to the user's buffer. It is filled by the dma
machine and drained by this loop. */ machine and drained by this loop. */
static ssize_t ali_read(struct file *file, char *buffer, static ssize_t ali_read(struct file *file, char __user *buffer,
size_t count, loff_t * ppos) size_t count, loff_t * ppos)
{ {
struct ali_state *state = (struct ali_state *) file->private_data; struct ali_state *state = (struct ali_state *) file->private_data;
...@@ -1721,7 +1721,7 @@ static ssize_t ali_read(struct file *file, char *buffer, ...@@ -1721,7 +1721,7 @@ static ssize_t ali_read(struct file *file, char *buffer,
/* in this loop, dmabuf.count signifies the amount of data that is waiting to be dma to /* in this loop, dmabuf.count signifies the amount of data that is waiting to be dma to
the soundcard. it is drained by the dma machine and filled by this loop. */ the soundcard. it is drained by the dma machine and filled by this loop. */
static ssize_t ali_write(struct file *file, static ssize_t ali_write(struct file *file,
const char *buffer, size_t count, loff_t * ppos) const char __user *buffer, size_t count, loff_t * ppos)
{ {
struct ali_state *state = (struct ali_state *) file->private_data; struct ali_state *state = (struct ali_state *) file->private_data;
struct ali_card *card = state ? state->card : 0; struct ali_card *card = state ? state->card : 0;
...@@ -1981,16 +1981,19 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -1981,16 +1981,19 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
unsigned int i_scr; unsigned int i_scr;
int val = 0, ret; int val = 0, ret;
struct ac97_codec *codec = state->card->ac97_codec[0]; struct ac97_codec *codec = state->card->ac97_codec[0];
void __user *argp = (void __user *)arg;
int __user *p = argp;
#ifdef DEBUG #ifdef DEBUG
printk("ali_audio: ali_ioctl, arg=0x%x, cmd=", printk("ali_audio: ali_ioctl, arg=0x%x, cmd=",
arg ? *(int *) arg : 0); arg ? *p : 0);
#endif #endif
switch (cmd) { switch (cmd) {
case OSS_GETVERSION: case OSS_GETVERSION:
#ifdef DEBUG #ifdef DEBUG
printk("OSS_GETVERSION\n"); printk("OSS_GETVERSION\n");
#endif #endif
return put_user(SOUND_VERSION, (int *) arg); return put_user(SOUND_VERSION, p);
case SNDCTL_DSP_RESET: case SNDCTL_DSP_RESET:
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_RESET\n"); printk("SNDCTL_DSP_RESET\n");
...@@ -2058,7 +2061,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2058,7 +2061,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_SPEED\n"); printk("SNDCTL_DSP_SPEED\n");
#endif #endif
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
if (val >= 0) { if (val >= 0) {
if (file->f_mode & FMODE_WRITE) { if (file->f_mode & FMODE_WRITE) {
...@@ -2136,7 +2139,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2136,7 +2139,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
spin_unlock_irqrestore(&state->card->lock, flags); spin_unlock_irqrestore(&state->card->lock, flags);
} }
} }
return put_user(dmabuf->rate, (int *) arg); return put_user(dmabuf->rate, p);
case SNDCTL_DSP_STEREO: /* set stereo or mono channel */ case SNDCTL_DSP_STEREO: /* set stereo or mono channel */
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_STEREO\n"); printk("SNDCTL_DSP_STEREO\n");
...@@ -2153,7 +2156,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2153,7 +2156,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
if (dmabuf->enable & CONTROLLER_SPDIFOUT_RUNNING) { if (dmabuf->enable & CONTROLLER_SPDIFOUT_RUNNING) {
stop_spdifout(state); stop_spdifout(state);
} }
return put_user(1, (int *) arg); return put_user(1, p);
case SNDCTL_DSP_GETBLKSIZE: case SNDCTL_DSP_GETBLKSIZE:
if (file->f_mode & FMODE_WRITE) { if (file->f_mode & FMODE_WRITE) {
if (codec_independent_spdif_locked > 0) { if (codec_independent_spdif_locked > 0) {
...@@ -2177,22 +2180,22 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2177,22 +2180,22 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_GETBLKSIZE %d\n", dmabuf->userfragsize); printk("SNDCTL_DSP_GETBLKSIZE %d\n", dmabuf->userfragsize);
#endif #endif
return put_user(dmabuf->userfragsize, (int *) arg); return put_user(dmabuf->userfragsize, p);
case SNDCTL_DSP_GETFMTS: /* Returns a mask of supported sample format */ case SNDCTL_DSP_GETFMTS: /* Returns a mask of supported sample format */
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_GETFMTS\n"); printk("SNDCTL_DSP_GETFMTS\n");
#endif #endif
return put_user(AFMT_S16_LE, (int *) arg); return put_user(AFMT_S16_LE, p);
case SNDCTL_DSP_SETFMT: /* Select sample format */ case SNDCTL_DSP_SETFMT: /* Select sample format */
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_SETFMT\n"); printk("SNDCTL_DSP_SETFMT\n");
#endif #endif
return put_user(AFMT_S16_LE, (int *) arg); return put_user(AFMT_S16_LE, p);
case SNDCTL_DSP_CHANNELS: // add support 4,6 channel case SNDCTL_DSP_CHANNELS: // add support 4,6 channel
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_CHANNELS\n"); printk("SNDCTL_DSP_CHANNELS\n");
#endif #endif
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
if (val > 0) { if (val > 0) {
if (dmabuf->enable & DAC_RUNNING) { if (dmabuf->enable & DAC_RUNNING) {
...@@ -2208,7 +2211,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2208,7 +2211,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
stop_adc(state); stop_adc(state);
} }
} else { } else {
return put_user(state->card->channels, (int *) arg); return put_user(state->card->channels, p);
} }
i_scr = inl(state->card->iobase + ALI_SCR); i_scr = inl(state->card->iobase + ALI_SCR);
...@@ -2243,7 +2246,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2243,7 +2246,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
val = ret; val = ret;
break; break;
} }
return put_user(val, (int *) arg); return put_user(val, p);
case SNDCTL_DSP_POST: /* the user has sent all data and is notifying us */ case SNDCTL_DSP_POST: /* the user has sent all data and is notifying us */
/* we update the swptr to the end of the last sg segment then return */ /* we update the swptr to the end of the last sg segment then return */
#ifdef DEBUG #ifdef DEBUG
...@@ -2270,7 +2273,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2270,7 +2273,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
case SNDCTL_DSP_SUBDIVIDE: case SNDCTL_DSP_SUBDIVIDE:
if (dmabuf->subdivision) if (dmabuf->subdivision)
return -EINVAL; return -EINVAL;
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
if (val != 1 && val != 2 && val != 4) if (val != 1 && val != 2 && val != 4)
return -EINVAL; return -EINVAL;
...@@ -2281,7 +2284,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2281,7 +2284,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
dmabuf->ready = 0; dmabuf->ready = 0;
return 0; return 0;
case SNDCTL_DSP_SETFRAGMENT: case SNDCTL_DSP_SETFRAGMENT:
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
dmabuf->ossfragsize = 1 << (val & 0xffff); dmabuf->ossfragsize = 1 << (val & 0xffff);
dmabuf->ossmaxfrags = (val >> 16) & 0xffff; dmabuf->ossmaxfrags = (val >> 16) & 0xffff;
...@@ -2360,7 +2363,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2360,7 +2363,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
abinfo.bytes, abinfo.fragsize, abinfo.fragments, abinfo.bytes, abinfo.fragsize, abinfo.fragments,
abinfo.fragstotal); abinfo.fragstotal);
#endif #endif
return copy_to_user((void *) arg, &abinfo, return copy_to_user(argp, &abinfo,
sizeof(abinfo)) ? -EFAULT : 0; sizeof(abinfo)) ? -EFAULT : 0;
case SNDCTL_DSP_GETOPTR: case SNDCTL_DSP_GETOPTR:
if (!(file->f_mode & FMODE_WRITE)) if (!(file->f_mode & FMODE_WRITE))
...@@ -2408,7 +2411,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2408,7 +2411,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
printk("SNDCTL_DSP_GETOPTR %d, %d, %d, %d\n", cinfo.bytes, printk("SNDCTL_DSP_GETOPTR %d, %d, %d, %d\n", cinfo.bytes,
cinfo.blocks, cinfo.ptr, dmabuf->count); cinfo.blocks, cinfo.ptr, dmabuf->count);
#endif #endif
return copy_to_user((void *) arg, &cinfo, sizeof(cinfo))? -EFAULT : 0; return copy_to_user(argp, &cinfo, sizeof(cinfo))? -EFAULT : 0;
case SNDCTL_DSP_GETISPACE: case SNDCTL_DSP_GETISPACE:
if (!(file->f_mode & FMODE_READ)) if (!(file->f_mode & FMODE_READ))
return -EINVAL; return -EINVAL;
...@@ -2425,7 +2428,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2425,7 +2428,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
abinfo.bytes, abinfo.fragsize, abinfo.fragments, abinfo.bytes, abinfo.fragsize, abinfo.fragments,
abinfo.fragstotal); abinfo.fragstotal);
#endif #endif
return copy_to_user((void *) arg, &abinfo, return copy_to_user(argp, &abinfo,
sizeof(abinfo)) ? -EFAULT : 0; sizeof(abinfo)) ? -EFAULT : 0;
case SNDCTL_DSP_GETIPTR: case SNDCTL_DSP_GETIPTR:
if (!(file->f_mode & FMODE_READ)) if (!(file->f_mode & FMODE_READ))
...@@ -2447,7 +2450,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2447,7 +2450,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
printk("SNDCTL_DSP_GETIPTR %d, %d, %d, %d\n", cinfo.bytes, printk("SNDCTL_DSP_GETIPTR %d, %d, %d, %d\n", cinfo.bytes,
cinfo.blocks, cinfo.ptr, dmabuf->count); cinfo.blocks, cinfo.ptr, dmabuf->count);
#endif #endif
return copy_to_user((void *) arg, &cinfo, sizeof(cinfo))? -EFAULT: 0; return copy_to_user(argp, &cinfo, sizeof(cinfo))? -EFAULT: 0;
case SNDCTL_DSP_NONBLOCK: case SNDCTL_DSP_NONBLOCK:
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_NONBLOCK\n"); printk("SNDCTL_DSP_NONBLOCK\n");
...@@ -2459,15 +2462,15 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2459,15 +2462,15 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
printk("SNDCTL_DSP_GETCAPS\n"); printk("SNDCTL_DSP_GETCAPS\n");
#endif #endif
return put_user(DSP_CAP_REALTIME | DSP_CAP_TRIGGER | return put_user(DSP_CAP_REALTIME | DSP_CAP_TRIGGER |
DSP_CAP_MMAP | DSP_CAP_BIND, (int *) arg); DSP_CAP_MMAP | DSP_CAP_BIND, p);
case SNDCTL_DSP_GETTRIGGER: case SNDCTL_DSP_GETTRIGGER:
val = 0; val = 0;
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_GETTRIGGER 0x%x\n", dmabuf->trigger); printk("SNDCTL_DSP_GETTRIGGER 0x%x\n", dmabuf->trigger);
#endif #endif
return put_user(dmabuf->trigger, (int *) arg); return put_user(dmabuf->trigger, p);
case SNDCTL_DSP_SETTRIGGER: case SNDCTL_DSP_SETTRIGGER:
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
#if defined(DEBUG) || defined(DEBUG_MMAP) #if defined(DEBUG) || defined(DEBUG_MMAP)
printk("SNDCTL_DSP_SETTRIGGER 0x%x\n", val); printk("SNDCTL_DSP_SETTRIGGER 0x%x\n", val);
...@@ -2586,27 +2589,27 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2586,27 +2589,27 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_GETODELAY %d\n", dmabuf->count); printk("SNDCTL_DSP_GETODELAY %d\n", dmabuf->count);
#endif #endif
return put_user(val, (int *) arg); return put_user(val, p);
case SOUND_PCM_READ_RATE: case SOUND_PCM_READ_RATE:
#ifdef DEBUG #ifdef DEBUG
printk("SOUND_PCM_READ_RATE %d\n", dmabuf->rate); printk("SOUND_PCM_READ_RATE %d\n", dmabuf->rate);
#endif #endif
return put_user(dmabuf->rate, (int *) arg); return put_user(dmabuf->rate, p);
case SOUND_PCM_READ_CHANNELS: case SOUND_PCM_READ_CHANNELS:
#ifdef DEBUG #ifdef DEBUG
printk("SOUND_PCM_READ_CHANNELS\n"); printk("SOUND_PCM_READ_CHANNELS\n");
#endif #endif
return put_user(2, (int *) arg); return put_user(2, p);
case SOUND_PCM_READ_BITS: case SOUND_PCM_READ_BITS:
#ifdef DEBUG #ifdef DEBUG
printk("SOUND_PCM_READ_BITS\n"); printk("SOUND_PCM_READ_BITS\n");
#endif #endif
return put_user(AFMT_S16_LE, (int *) arg); return put_user(AFMT_S16_LE, p);
case SNDCTL_DSP_SETSPDIF: /* Set S/PDIF Control register */ case SNDCTL_DSP_SETSPDIF: /* Set S/PDIF Control register */
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_SETSPDIF\n"); printk("SNDCTL_DSP_SETSPDIF\n");
#endif #endif
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
/* Check to make sure the codec supports S/PDIF transmitter */ /* Check to make sure the codec supports S/PDIF transmitter */
if ((state->card->ac97_features & 4)) { if ((state->card->ac97_features & 4)) {
...@@ -2625,12 +2628,12 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2625,12 +2628,12 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
else else
printk(KERN_WARNING "ali_audio: S/PDIF transmitter not avalible.\n"); printk(KERN_WARNING "ali_audio: S/PDIF transmitter not avalible.\n");
#endif #endif
return put_user(val, (int *) arg); return put_user(val, p);
case SNDCTL_DSP_GETSPDIF: /* Get S/PDIF Control register */ case SNDCTL_DSP_GETSPDIF: /* Get S/PDIF Control register */
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_GETSPDIF\n"); printk("SNDCTL_DSP_GETSPDIF\n");
#endif #endif
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
/* Check to make sure the codec supports S/PDIF transmitter */ /* Check to make sure the codec supports S/PDIF transmitter */
if (!(state->card->ac97_features & 4)) { if (!(state->card->ac97_features & 4)) {
...@@ -2642,14 +2645,14 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2642,14 +2645,14 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
val = ali_ac97_get(codec, AC97_SPDIF_CONTROL); val = ali_ac97_get(codec, AC97_SPDIF_CONTROL);
} }
return put_user(val, (int *) arg); return put_user(val, p);
//end add support spdif out //end add support spdif out
//add support 4,6 channel //add support 4,6 channel
case SNDCTL_DSP_GETCHANNELMASK: case SNDCTL_DSP_GETCHANNELMASK:
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_GETCHANNELMASK\n"); printk("SNDCTL_DSP_GETCHANNELMASK\n");
#endif #endif
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
/* Based on AC'97 DAC support, not ICH hardware */ /* Based on AC'97 DAC support, not ICH hardware */
val = DSP_BIND_FRONT; val = DSP_BIND_FRONT;
...@@ -2659,12 +2662,12 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2659,12 +2662,12 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
val |= DSP_BIND_SURR; val |= DSP_BIND_SURR;
if (state->card->ac97_features & 0x0140) if (state->card->ac97_features & 0x0140)
val |= DSP_BIND_CENTER_LFE; val |= DSP_BIND_CENTER_LFE;
return put_user(val, (int *) arg); return put_user(val, p);
case SNDCTL_DSP_BIND_CHANNEL: case SNDCTL_DSP_BIND_CHANNEL:
#ifdef DEBUG #ifdef DEBUG
printk("SNDCTL_DSP_BIND_CHANNEL\n"); printk("SNDCTL_DSP_BIND_CHANNEL\n");
#endif #endif
if (get_user(val, (int *) arg)) if (get_user(val, p))
return -EFAULT; return -EFAULT;
if (val == DSP_BIND_QUERY) { if (val == DSP_BIND_QUERY) {
val = DSP_BIND_FRONT; /* Always report this as being enabled */ val = DSP_BIND_FRONT; /* Always report this as being enabled */
...@@ -2749,7 +2752,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u ...@@ -2749,7 +2752,7 @@ static int ali_ioctl(struct inode *inode, struct file *file, unsigned int cmd, u
val &= ~DSP_BIND_CENTER_LFE; val &= ~DSP_BIND_CENTER_LFE;
} }
} }
return put_user(val, (int *) arg); return put_user(val, p);
case SNDCTL_DSP_MAPINBUF: case SNDCTL_DSP_MAPINBUF:
case SNDCTL_DSP_MAPOUTBUF: case SNDCTL_DSP_MAPOUTBUF:
case SNDCTL_DSP_SETSYNCRO: case SNDCTL_DSP_SETSYNCRO:
......
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