Lines Matching refs:isa

23 #include "radio-isa.h"
35 struct radio_isa_card *isa = video_drvdata(file);
37 strscpy(v->driver, isa->drv->driver.driver.name, sizeof(v->driver));
38 strscpy(v->card, isa->drv->card, sizeof(v->card));
39 snprintf(v->bus_info, sizeof(v->bus_info), "ISA:%s", dev_name(isa->v4l2_dev.dev));
46 struct radio_isa_card *isa = video_drvdata(file);
47 const struct radio_isa_ops *ops = isa->drv->ops;
57 if (isa->drv->has_stereo)
61 v->rxsubchans = ops->g_rxsubchans(isa);
64 v->audmode = isa->stereo ? V4L2_TUNER_MODE_STEREO : V4L2_TUNER_MODE_MONO;
66 v->signal = ops->g_signal(isa);
76 struct radio_isa_card *isa = video_drvdata(file);
77 const struct radio_isa_ops *ops = isa->drv->ops;
82 isa->stereo = (v->audmode == V4L2_TUNER_MODE_STEREO);
83 return ops->s_stereo(isa, isa->stereo);
91 struct radio_isa_card *isa = video_drvdata(file);
98 res = isa->drv->ops->s_frequency(isa, freq);
100 isa->freq = freq;
107 struct radio_isa_card *isa = video_drvdata(file);
112 f->frequency = isa->freq;
118 struct radio_isa_card *isa =
123 return isa->drv->ops->s_mute_volume(isa, ctrl->val,
124 isa->volume ? isa->volume->val : 0);
131 struct radio_isa_card *isa = video_drvdata(file);
133 v4l2_info(&isa->v4l2_dev, "I/O Port = 0x%03x\n", isa->io);
134 v4l2_ctrl_handler_log_status(&isa->hdl, isa->v4l2_dev.name);
183 struct radio_isa_card *isa = drv->ops->alloc();
184 if (!isa)
187 dev_set_drvdata(pdev, isa);
188 isa->drv = drv;
189 v4l2_dev = &isa->v4l2_dev;
192 return isa;
195 static int radio_isa_common_probe(struct radio_isa_card *isa,
199 const struct radio_isa_driver *drv = isa->drv;
201 struct v4l2_device *v4l2_dev = &isa->v4l2_dev;
204 if (!request_region(isa->io, region_size, v4l2_dev->name)) {
205 v4l2_err(v4l2_dev, "port 0x%x already in use\n", isa->io);
206 kfree(isa);
216 v4l2_ctrl_handler_init(&isa->hdl, 1);
217 isa->mute = v4l2_ctrl_new_std(&isa->hdl, &radio_isa_ctrl_ops,
220 isa->volume = v4l2_ctrl_new_std(&isa->hdl, &radio_isa_ctrl_ops,
223 v4l2_dev->ctrl_handler = &isa->hdl;
224 if (isa->hdl.error) {
225 res = isa->hdl.error;
230 v4l2_ctrl_cluster(2, &isa->mute);
231 v4l2_dev->ctrl_handler = &isa->hdl;
233 mutex_init(&isa->lock);
234 isa->vdev.lock = &isa->lock;
235 strscpy(isa->vdev.name, v4l2_dev->name, sizeof(isa->vdev.name));
236 isa->vdev.v4l2_dev = v4l2_dev;
237 isa->vdev.fops = &radio_isa_fops;
238 isa->vdev.ioctl_ops = &radio_isa_ioctl_ops;
239 isa->vdev.release = video_device_release_empty;
240 isa->vdev.device_caps = V4L2_CAP_TUNER | V4L2_CAP_RADIO;
241 video_set_drvdata(&isa->vdev, isa);
242 isa->freq = FREQ_LOW;
243 isa->stereo = drv->has_stereo;
246 res = ops->init(isa);
248 res = v4l2_ctrl_handler_setup(&isa->hdl);
250 res = ops->s_frequency(isa, isa->freq);
252 res = ops->s_stereo(isa, isa->stereo);
257 res = video_register_device(&isa->vdev, VFL_TYPE_RADIO, radio_nr);
265 drv->card, isa->io);
269 v4l2_ctrl_handler_free(&isa->hdl);
271 release_region(isa->io, region_size);
272 kfree(isa);
276 static void radio_isa_common_remove(struct radio_isa_card *isa,
279 const struct radio_isa_ops *ops = isa->drv->ops;
281 ops->s_mute_volume(isa, true, isa->volume ? isa->volume->cur.val : 0);
282 video_unregister_device(&isa->vdev);
283 v4l2_ctrl_handler_free(&isa->hdl);
284 v4l2_device_unregister(&isa->v4l2_dev);
285 release_region(isa->io, region_size);
286 v4l2_info(&isa->v4l2_dev, "Removed radio card %s\n", isa->drv->card);
287 kfree(isa);
295 struct radio_isa_card *isa;
297 isa = radio_isa_alloc(drv, pdev);
298 if (!isa)
300 isa->io = drv->io_params[dev];
301 v4l2_dev = &isa->v4l2_dev;
310 bool found = ops->probe(isa, io);
314 isa->io = io;
321 if (!radio_isa_valid_io(drv, isa->io)) {
324 if (isa->io < 0)
331 kfree(isa);
335 return radio_isa_common_probe(isa, pdev, drv->radio_nr_params[dev],
342 struct radio_isa_card *isa = dev_get_drvdata(pdev);
344 radio_isa_common_remove(isa, isa->drv->region_size);
354 struct radio_isa_card *isa;
359 isa = radio_isa_alloc(drv, &dev->dev);
360 if (!isa)
363 isa->io = pnp_port_start(dev, 0);
365 return radio_isa_common_probe(isa, &dev->dev, drv->radio_nr_params[0],
372 struct radio_isa_card *isa = dev_get_drvdata(&dev->dev);
374 radio_isa_common_remove(isa, pnp_port_len(dev, 0));