From: Gerd Knorr <kraxel@bytesex.org>
To: Linus Torvalds <torvalds@transmeta.com>,
Kernel List <linux-kernel@vger.kernel.org>
Subject: [patch] v4l zoltrix radio driver fix
Date: Wed, 10 Apr 2002 12:58:21 +0200 [thread overview]
Message-ID: <20020410125821.A26389@bytesex.org> (raw)
Hi,
This patch updates the zotrix radio driver to the videodev redesign
(2.5.7-preN), that one somehow didn't made it in (maybe I forgot to mail
it ...).
Gerd
==============================[ cut here ]==============================
# ChangeSet
# 1.586 02/04/08 10:02:38 kraxel@bytesex.org +1 -0
# adapt zotrix radio driver to pre 2.4.7 videodev redesign
#
# drivers/media/radio/radio-zoltrix.c
# 1.5 02/03/19 18:23:29 kraxel@bytesex.org +53 -72
# adapt zotrix radio driver to pre 2.4.7 videodev redesign
#
======================================================================
diff -Nru a/drivers/media/radio/radio-zoltrix.c b/drivers/media/radio/radio-zoltrix.c
--- a/drivers/media/radio/radio-zoltrix.c Mon Apr 8 10:17:54 2002
+++ b/drivers/media/radio/radio-zoltrix.c Mon Apr 8 10:17:54 2002
@@ -40,7 +40,6 @@
static int io = CONFIG_RADIO_ZOLTRIX_PORT;
static int radio_nr = -1;
-static int users = 0;
struct zol_device {
int port;
@@ -216,106 +215,93 @@
return 0;
}
-static int zol_ioctl(struct video_device *dev, unsigned int cmd, void *arg)
+static int zol_ioctl(struct inode *inode, struct file *file,
+ unsigned int cmd, void *arg)
{
+ struct video_device *dev = video_devdata(file);
struct zol_device *zol = dev->priv;
switch (cmd) {
case VIDIOCGCAP:
{
- struct video_capability v;
- v.type = VID_TYPE_TUNER;
- v.channels = 1 + zol->stereo;
- v.audios = 1;
- /* No we don't do pictures */
- v.maxwidth = 0;
- v.maxheight = 0;
- v.minwidth = 0;
- v.minheight = 0;
- strcpy(v.name, "Zoltrix Radio");
- if (copy_to_user(arg, &v, sizeof(v)))
- return -EFAULT;
+ struct video_capability *v = arg;
+
+ memset(v,0,sizeof(*v));
+ v->type = VID_TYPE_TUNER;
+ v->channels = 1 + zol->stereo;
+ v->audios = 1;
+ strcpy(v->name, "Zoltrix Radio");
return 0;
}
case VIDIOCGTUNER:
{
- struct video_tuner v;
- if (copy_from_user(&v, arg, sizeof(v)))
- return -EFAULT;
- if (v.tuner)
+ struct video_tuner *v = arg;
+ if (v->tuner)
return -EINVAL;
- strcpy(v.name, "FM");
- v.rangelow = (int) (88.0 * 16000);
- v.rangehigh = (int) (108.0 * 16000);
- v.flags = zol_is_stereo(zol)
+ strcpy(v->name, "FM");
+ v->rangelow = (int) (88.0 * 16000);
+ v->rangehigh = (int) (108.0 * 16000);
+ v->flags = zol_is_stereo(zol)
? VIDEO_TUNER_STEREO_ON : 0;
- v.flags |= VIDEO_TUNER_LOW;
- v.mode = VIDEO_MODE_AUTO;
- v.signal = 0xFFFF * zol_getsigstr(zol);
- if (copy_to_user(arg, &v, sizeof(v)))
- return -EFAULT;
+ v->flags |= VIDEO_TUNER_LOW;
+ v->mode = VIDEO_MODE_AUTO;
+ v->signal = 0xFFFF * zol_getsigstr(zol);
return 0;
}
case VIDIOCSTUNER:
{
- struct video_tuner v;
- if (copy_from_user(&v, arg, sizeof(v)))
- return -EFAULT;
- if (v.tuner != 0)
+ struct video_tuner *v = arg;
+ if (v->tuner != 0)
return -EINVAL;
/* Only 1 tuner so no setting needed ! */
return 0;
}
case VIDIOCGFREQ:
- if (copy_to_user(arg, &zol->curfreq, sizeof(zol->curfreq)))
- return -EFAULT;
+ {
+ unsigned long *freq = arg;
+ *freq = zol->curfreq;
return 0;
+ }
case VIDIOCSFREQ:
- if (copy_from_user(&zol->curfreq, arg, sizeof(zol->curfreq)))
- return -EFAULT;
+ {
+ unsigned long *freq = arg;
+ zol->curfreq = *freq;
zol_setfreq(zol, zol->curfreq);
return 0;
+ }
case VIDIOCGAUDIO:
{
- struct video_audio v;
- memset(&v, 0, sizeof(v));
- v.flags |= VIDEO_AUDIO_MUTABLE | VIDEO_AUDIO_VOLUME;
- v.mode != zol_is_stereo(zol)
+ struct video_audio *v = arg;
+ memset(&v, 0, sizeof(*v));
+ v->flags |= VIDEO_AUDIO_MUTABLE | VIDEO_AUDIO_VOLUME;
+ v->mode != zol_is_stereo(zol)
? VIDEO_SOUND_STEREO : VIDEO_SOUND_MONO;
- v.volume = zol->curvol * 4096;
- v.step = 4096;
- strcpy(v.name, "Zoltrix Radio");
- if (copy_to_user(arg, &v, sizeof(v)))
- return -EFAULT;
+ v->volume = zol->curvol * 4096;
+ v->step = 4096;
+ strcpy(v->name, "Zoltrix Radio");
return 0;
}
case VIDIOCSAUDIO:
{
- struct video_audio v;
- if (copy_from_user(&v, arg, sizeof(v)))
- return -EFAULT;
- if (v.audio)
+ struct video_audio *v = arg;
+ if (v->audio)
return -EINVAL;
- if (v.flags & VIDEO_AUDIO_MUTE)
+ if (v->flags & VIDEO_AUDIO_MUTE)
zol_mute(zol);
- else
- {
+ else {
zol_unmute(zol);
- zol_setvol(zol, v.volume / 4096);
+ zol_setvol(zol, v->volume / 4096);
}
- if (v.mode & VIDEO_SOUND_STEREO)
- {
+ if (v->mode & VIDEO_SOUND_STEREO) {
zol->stereo = 1;
zol_setfreq(zol, zol->curfreq);
}
- if (v.mode & VIDEO_SOUND_MONO)
- {
+ if (v->mode & VIDEO_SOUND_MONO) {
zol->stereo = 0;
zol_setfreq(zol, zol->curfreq);
}
-
return 0;
}
default:
@@ -323,20 +309,16 @@
}
}
-static int zol_open(struct video_device *dev, int flags)
-{
- if (users)
- return -EBUSY;
- users++;
- return 0;
-}
+static struct zol_device zoltrix_unit;
-static void zol_close(struct video_device *dev)
+static struct file_operations zoltrix_fops =
{
- users--;
-}
-
-static struct zol_device zoltrix_unit;
+ owner: THIS_MODULE,
+ open: video_exclusive_open,
+ release: video_exclusive_release,
+ ioctl: video_generic_ioctl,
+ llseek: no_llseek,
+};
static struct video_device zoltrix_radio =
{
@@ -344,9 +326,8 @@
name: "Zoltrix Radio Plus",
type: VID_TYPE_TUNER,
hardware: VID_HARDWARE_ZOLTRIX,
- open: zol_open,
- close: zol_close,
- ioctl: zol_ioctl,
+ fops: &zoltrix_fops,
+ kernel_ioctl: zol_ioctl,
};
static int __init zoltrix_init(void)
======================================================================
This BitKeeper patch contains the following changesets:
1.586
## Wrapped with gzip_uu ##
begin 664 bkpatch4782
M'XL(`#)2L3P``\U6ZV_:2!#_C/^*:2M5D/#8]:X?$*5J6N@UNJ1$2>CI3B>A
MC;T0"V-SMB&/TO_]9M8\0BY5T[M^.(-L,>_YS<^SO()!KK-.99*I6QU;K^!C
MFA>=RM5=H7-]VTRS,<K.TQ1EK9LTF[2N)BV[Z;1&T6TC4V&46J@_4T5P#0N=
MY9T*;XJ-I+B;Z4[EO/?+X.3HW+(.#^']M4K&^D(7<'AH%6FV4'&8OU7%=9PF
MS2)323[5A6H&Z72Y,5W:C-GX<;@GF.,NN<NDMPQXR+F27(?,EKXK+3693=_>
M1S-R;JKY8W_)7":D:[M+V9:^;76!-QW?!6:WF&PQ'SCK,+LC_'V\,P8E(&\?
M``'['!K,>@<_M^[W5@`J5+,"[M,BBV[!P`IA%B&@F`MFF0:[*9L>+*)0IZ%>
M0*9#G4?CQ/H5I.]):9UMD;4:/WA9%E/,>O.=MLIZ\M94AY%JF1K+>^,^C:GN
M9O"@8<EX>\E\Q^?+@'G,';F2>^IJ9`?B"62?'UPR'S\V\Y=">+YG./4,Y^^S
M[:>U9\V(^O\]"=TX6[I<>*PDJZ&J:/$V<+]CBX[=WF?\6U1U!#0\^_]%U@_`
MW;84O(VT+<?7AT9V8[Y(P[/G3/)?L+LK!7"K:Q-PUC$];"LO5!$%$"742#R,
MTJ"(JWF1S8,"A5@V[)E''5;"412CC.YUJU(!NN8)=:5#$R68AG58I%$(>RH;
MUS"/S3!=9>5NP!@B&E&`80B5PZTL5(6J4NC:`99IN\!M]!<>>)AJ-T*@9NHJ
MBJ/B#O8H!N8ZL/XDLZF>YKJH+NJLGD?W.AU5]Q8U#(BJ1>,-;6(T_WS<'5[^
M?M8;7@X^]<[7R@!)D.@X1P,.^P1(XTU>Z$RG:PLUQR$8_<&JI&!V5T5%HJ:(
MT<L_RO'`.0WKI6E#VB"Q"^D@VH^[*.8)LF7;`.JC$5`\HZE5R-\S_@[#QU,I
M/YR^W'27$8GC]`;C57$8-:CZ?I/!'O*-,;9K=AV-K[=VG#UE.(K5F+HUU,B'
M)195_%7#PAP;'"K,!;%COC3P]OHEML.3_F_K<%/BTUI[VN_VAD>#R_Y:2R12
M,>K9[0>\L!A*.]8%*K!KDY8`=;D!Q)4_#BB\P.A4N\>`J.5QJOT+FFTXC*MA
MC/S.]%_;&.N?AA#!/*.?!^1N$[._4CQ9QG.>%>]A')3N;>)YZW@^,SWZ8C/T
M;8^&@[L]KCC_>E$'AF_J/VG_:#)'@^XQ3F!P>?3NI`?+'>GG_LG@M+<SLA??
M8(#O&`;X[0T#%FD\G^H'4*$`!RE9V]V,N=`S--B(GO,.M:6!H^T],?(GX%B-
MW&BP3L%H`QV7CZVZQ.3U8TAZQL.F>0HF2@_<"1J^D-PI(SFEG"8Y1.2Q2\($
M%]\&@I;ID*H7^)_*!&OOI#?(KK-?]`>?NL.+R]YYKU\SF;@P3EQ^S^FT_VGM
MXM-Z%[@W/?041,[5>E\!1M6N5N_J'!G.DZB@&H4TC9G'KA/MXV$ZTQD*TR3?
M>([2&:X&<G5I.$*TP;4JZ4U"_Z(KEQ^/+^@5'YST\)Q`]Z0#VZN<G+X-XGF.
M)QV%3]`LT[%6N>Y\RVRE1TMS3F&:TF*L,6D4E*<7:F,<EYYL$R;IL!35K:_4
M+*Y4@15+.@`KU,?#VEX_;!"#372&9T(9&^TJFV.ROOW''USK8)+/IX>V(Z7G
,!*[U-X>E`_I/#```
`
end
reply other threads:[~2002-04-10 12:35 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020410125821.A26389@bytesex.org \
--to=kraxel@bytesex.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.