0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef _RADIO_ISA_H_
0011 #define _RADIO_ISA_H_
0012
0013 #include <linux/isa.h>
0014 #include <linux/pnp.h>
0015 #include <linux/videodev2.h>
0016 #include <media/v4l2-device.h>
0017 #include <media/v4l2-ctrls.h>
0018
0019 struct radio_isa_driver;
0020 struct radio_isa_ops;
0021
0022
0023 struct radio_isa_card {
0024 const struct radio_isa_driver *drv;
0025 struct v4l2_device v4l2_dev;
0026 struct v4l2_ctrl_handler hdl;
0027 struct video_device vdev;
0028 struct mutex lock;
0029 const struct radio_isa_ops *ops;
0030 struct {
0031 struct v4l2_ctrl *mute;
0032 struct v4l2_ctrl *volume;
0033 };
0034
0035 int io;
0036
0037
0038 bool stereo;
0039
0040 u32 freq;
0041 };
0042
0043 struct radio_isa_ops {
0044
0045 struct radio_isa_card *(*alloc)(void);
0046
0047 bool (*probe)(struct radio_isa_card *isa, int io);
0048
0049
0050
0051 int (*init)(struct radio_isa_card *isa);
0052
0053 int (*s_mute_volume)(struct radio_isa_card *isa, bool mute, int volume);
0054
0055 int (*s_frequency)(struct radio_isa_card *isa, u32 freq);
0056
0057 int (*s_stereo)(struct radio_isa_card *isa, bool stereo);
0058
0059 u32 (*g_rxsubchans)(struct radio_isa_card *isa);
0060
0061 u32 (*g_signal)(struct radio_isa_card *isa);
0062 };
0063
0064
0065 struct radio_isa_driver {
0066 struct isa_driver driver;
0067 #ifdef CONFIG_PNP
0068 struct pnp_driver pnp_driver;
0069 #endif
0070 const struct radio_isa_ops *ops;
0071
0072 int *io_params;
0073
0074 int *radio_nr_params;
0075
0076 bool probe;
0077
0078 const int *io_ports;
0079
0080 int num_of_io_ports;
0081
0082 unsigned region_size;
0083
0084 const char *card;
0085
0086 bool has_stereo;
0087
0088
0089 int max_volume;
0090 };
0091
0092 int radio_isa_match(struct device *pdev, unsigned int dev);
0093 int radio_isa_probe(struct device *pdev, unsigned int dev);
0094 void radio_isa_remove(struct device *pdev, unsigned int dev);
0095 #ifdef CONFIG_PNP
0096 int radio_isa_pnp_probe(struct pnp_dev *dev,
0097 const struct pnp_device_id *dev_id);
0098 void radio_isa_pnp_remove(struct pnp_dev *dev);
0099 #endif
0100
0101 #endif