forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.2 KiB
76 lines
2.2 KiB
/* SPDX-License-Identifier: GPL-2.0-or-later */ |
|
#ifndef __RADIO_TEA5777_H |
|
#define __RADIO_TEA5777_H |
|
|
|
/* |
|
* v4l2 driver for TEA5777 Philips AM/FM radio tuner chips |
|
* |
|
* Copyright (c) 2012 Hans de Goede <[email protected]> |
|
* |
|
* Based on the ALSA driver for TEA5757/5759 Philips AM/FM radio tuner chips: |
|
* |
|
* Copyright (c) 2004 Jaroslav Kysela <[email protected]> |
|
* Copyright (c) 2012 Hans de Goede <[email protected]> |
|
*/ |
|
|
|
#include <linux/videodev2.h> |
|
#include <media/v4l2-ctrls.h> |
|
#include <media/v4l2-dev.h> |
|
#include <media/v4l2-device.h> |
|
|
|
#define TEA575X_FMIF 10700 |
|
#define TEA575X_AMIF 450 |
|
|
|
struct radio_tea5777; |
|
|
|
struct radio_tea5777_ops { |
|
/* |
|
* Write the 6 bytes large write register of the tea5777 |
|
* |
|
* val represents the 6 write registers, with byte 1 from the |
|
* datasheet being the most significant byte (so byte 5 of the u64), |
|
* and byte 6 from the datasheet being the least significant byte. |
|
* |
|
* returns 0 on success. |
|
*/ |
|
int (*write_reg)(struct radio_tea5777 *tea, u64 val); |
|
/* |
|
* Read the 3 bytes large read register of the tea5777 |
|
* |
|
* The read value gets returned in val, akin to write_reg, byte 1 from |
|
* the datasheet is stored as the most significant byte (so byte 2 of |
|
* the u32), and byte 3 from the datasheet gets stored as the least |
|
* significant byte (iow byte 0 of the u32). |
|
* |
|
* returns 0 on success. |
|
*/ |
|
int (*read_reg)(struct radio_tea5777 *tea, u32 *val); |
|
}; |
|
|
|
struct radio_tea5777 { |
|
struct v4l2_device *v4l2_dev; |
|
struct v4l2_file_operations fops; |
|
struct video_device vd; /* video device */ |
|
bool has_am; /* Device can tune to AM freqs */ |
|
bool write_before_read; /* must write before read quirk */ |
|
bool needs_write; /* for write before read quirk */ |
|
u32 band; /* current band */ |
|
u32 freq; /* current frequency */ |
|
u32 audmode; /* last set audmode */ |
|
u32 seek_rangelow; /* current hwseek limits */ |
|
u32 seek_rangehigh; |
|
u32 read_reg; |
|
u64 write_reg; |
|
struct mutex mutex; |
|
const struct radio_tea5777_ops *ops; |
|
void *private_data; |
|
u8 card[32]; |
|
u8 bus_info[32]; |
|
struct v4l2_ctrl_handler ctrl_handler; |
|
}; |
|
|
|
int radio_tea5777_init(struct radio_tea5777 *tea, struct module *owner); |
|
void radio_tea5777_exit(struct radio_tea5777 *tea); |
|
int radio_tea5777_set_freq(struct radio_tea5777 *tea); |
|
|
|
#endif /* __RADIO_TEA5777_H */
|
|
|