linux/drivers/media/radio/radio-miropcm20.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Miro PCM20 radio driver for Linux radio support
 * (c) 1998 Ruurd Reitsma <[email protected]>
 * Thanks to Norberto Pellici for the ACI device interface specification
 * The API part is based on the radiotrack driver by M. Kirkwood
 * This driver relies on the aci mixer provided by the snd-miro
 * ALSA driver.
 * Look there for further info...
 *
 * From the original miro RDS sources:
 *
 *  (c) 2001 Robert Siemer <[email protected]>
 *
 *  Many thanks to Fred Seidel <[email protected]>, the
 *  designer of the RDS decoder hardware. With his help
 *  I was able to code this driver.
 *  Thanks also to Norberto Pellicci, Dominic Mounteney
 *  <[email protected]> and www.teleauskunft.de
 *  for good hints on finding Fred. It was somewhat hard
 *  to locate him here in Germany... [:
 *
 * This code has been reintroduced and converted to use
 * the new V4L2 RDS API by:
 *
 * Hans Verkuil <[email protected]>
 */

#include <linux/module.h>
#include <linux/init.h>
#include <linux/io.h>
#include <linux/delay.h>
#include <linux/videodev2.h>
#include <linux/kthread.h>
#include <media/v4l2-device.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-fh.h>
#include <media/v4l2-event.h>
#include <sound/aci.h>

#define RDS_DATASHIFT
#define RDS_DATAMASK
#define RDS_BUSYMASK
#define RDS_CLOCKMASK
#define RDS_DATA(x)

#define RDS_STATUS
#define RDS_STATIONNAME
#define RDS_TEXT
#define RDS_ALTFREQ
#define RDS_TIMEDATE
#define RDS_PI_CODE
#define RDS_PTYTATP
#define RDS_RESET
#define RDS_RXVALUE

static int radio_nr =;
module_param(radio_nr, int, 0);
MODULE_PARM_DESC();

struct pcm20 {};

static struct pcm20 pcm20_card =;


static int rds_waitread(struct snd_miro_aci *aci)
{}

static int rds_rawwrite(struct snd_miro_aci *aci, u8 byte)
{}

static int rds_write(struct snd_miro_aci *aci, u8 byte)
{}

static int rds_readcycle_nowait(struct snd_miro_aci *aci)
{}

static int rds_readcycle(struct snd_miro_aci *aci)
{}

static int rds_ack(struct snd_miro_aci *aci)
{}

static int rds_cmd(struct snd_miro_aci *aci, u8 cmd, u8 databuffer[], u8 datasize)
{}

static int pcm20_setfreq(struct pcm20 *dev, unsigned long freq)
{}

static int vidioc_querycap(struct file *file, void *priv,
				struct v4l2_capability *v)
{}

static bool sanitize(char *p, int size)
{}

static int vidioc_g_tuner(struct file *file, void *priv,
				struct v4l2_tuner *v)
{}

static int vidioc_s_tuner(struct file *file, void *priv,
				const struct v4l2_tuner *v)
{}

static int vidioc_g_frequency(struct file *file, void *priv,
				struct v4l2_frequency *f)
{}


static int vidioc_s_frequency(struct file *file, void *priv,
				const struct v4l2_frequency *f)
{}

static int pcm20_s_ctrl(struct v4l2_ctrl *ctrl)
{}

static int pcm20_thread(void *data)
{}

static int pcm20_open(struct file *file)
{}

static int pcm20_release(struct file *file)
{}

static const struct v4l2_file_operations pcm20_fops =;

static const struct v4l2_ioctl_ops pcm20_ioctl_ops =;

static const struct v4l2_ctrl_ops pcm20_ctrl_ops =;

static int __init pcm20_init(void)
{}

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();

static void __exit pcm20_cleanup(void)
{}

module_init();
module_exit(pcm20_cleanup);