mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
media: usb: pvrusb2: Store v4l2_fh pointer in file->private_data
Most V4L2 drivers store the v4l2_fh pointer in file->private_data. The pvrusb2 driver instead stores the pointer to the driver-specific structure that embeds the v4l2_fh. Switch to storing the v4l2_fh pointer itself to standardize behaviour across drivers. This also prepares for future refactoring that depends on v4l2_fh being stored in private_data. While at it, drop unneeded structure forward declarations. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
b22ac2e4a9
commit
4a538a1c5f
|
|
@ -21,8 +21,6 @@
|
|||
#include <media/v4l2-common.h>
|
||||
#include <media/v4l2-ioctl.h>
|
||||
|
||||
struct pvr2_v4l2_dev;
|
||||
struct pvr2_v4l2_fh;
|
||||
struct pvr2_v4l2;
|
||||
|
||||
struct pvr2_v4l2_dev {
|
||||
|
|
@ -48,6 +46,11 @@ struct pvr2_v4l2_fh {
|
|||
unsigned int input_cnt;
|
||||
};
|
||||
|
||||
static inline struct pvr2_v4l2_fh *to_pvr2_v4l2_fh(struct file *filp)
|
||||
{
|
||||
return container_of(filp->private_data, struct pvr2_v4l2_fh, fh);
|
||||
}
|
||||
|
||||
struct pvr2_v4l2 {
|
||||
struct pvr2_channel channel;
|
||||
|
||||
|
|
@ -108,7 +111,7 @@ static struct v4l2_format pvr_format [] = {
|
|||
*/
|
||||
static int pvr2_querycap(struct file *file, void *priv, struct v4l2_capability *cap)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
|
||||
strscpy(cap->driver, "pvrusb2", sizeof(cap->driver));
|
||||
|
|
@ -123,7 +126,7 @@ static int pvr2_querycap(struct file *file, void *priv, struct v4l2_capability *
|
|||
|
||||
static int pvr2_g_std(struct file *file, void *priv, v4l2_std_id *std)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int val = 0;
|
||||
int ret;
|
||||
|
|
@ -136,7 +139,7 @@ static int pvr2_g_std(struct file *file, void *priv, v4l2_std_id *std)
|
|||
|
||||
static int pvr2_s_std(struct file *file, void *priv, v4l2_std_id std)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int ret;
|
||||
|
||||
|
|
@ -148,7 +151,7 @@ static int pvr2_s_std(struct file *file, void *priv, v4l2_std_id std)
|
|||
|
||||
static int pvr2_querystd(struct file *file, void *priv, v4l2_std_id *std)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int val = 0;
|
||||
int ret;
|
||||
|
|
@ -161,7 +164,7 @@ static int pvr2_querystd(struct file *file, void *priv, v4l2_std_id *std)
|
|||
|
||||
static int pvr2_enum_input(struct file *file, void *priv, struct v4l2_input *vi)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct pvr2_ctrl *cptr;
|
||||
struct v4l2_input tmp;
|
||||
|
|
@ -209,7 +212,7 @@ static int pvr2_enum_input(struct file *file, void *priv, struct v4l2_input *vi)
|
|||
|
||||
static int pvr2_g_input(struct file *file, void *priv, unsigned int *i)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
unsigned int idx;
|
||||
struct pvr2_ctrl *cptr;
|
||||
|
|
@ -231,7 +234,7 @@ static int pvr2_g_input(struct file *file, void *priv, unsigned int *i)
|
|||
|
||||
static int pvr2_s_input(struct file *file, void *priv, unsigned int inp)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int ret;
|
||||
|
||||
|
|
@ -286,7 +289,7 @@ static int pvr2_s_audio(struct file *file, void *priv, const struct v4l2_audio *
|
|||
|
||||
static int pvr2_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
|
||||
if (vt->index != 0)
|
||||
|
|
@ -298,7 +301,7 @@ static int pvr2_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)
|
|||
|
||||
static int pvr2_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int ret;
|
||||
|
||||
|
|
@ -314,7 +317,7 @@ static int pvr2_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *
|
|||
|
||||
static int pvr2_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *vf)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
unsigned long fv;
|
||||
struct v4l2_tuner vt;
|
||||
|
|
@ -349,7 +352,7 @@ static int pvr2_s_frequency(struct file *file, void *priv, const struct v4l2_fre
|
|||
|
||||
static int pvr2_g_frequency(struct file *file, void *priv, struct v4l2_frequency *vf)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int val = 0;
|
||||
int cur_input;
|
||||
|
|
@ -391,7 +394,7 @@ static int pvr2_enum_fmt_vid_cap(struct file *file, void *priv, struct v4l2_fmtd
|
|||
|
||||
static int pvr2_g_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int val;
|
||||
|
||||
|
|
@ -411,7 +414,7 @@ static int pvr2_g_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format
|
|||
|
||||
static int pvr2_try_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int lmin, lmax, ldef;
|
||||
struct pvr2_ctrl *hcp, *vcp;
|
||||
|
|
@ -449,7 +452,7 @@ static int pvr2_try_fmt_vid_cap(struct file *file, void *priv, struct v4l2_forma
|
|||
|
||||
static int pvr2_s_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct pvr2_ctrl *hcp, *vcp;
|
||||
int ret = pvr2_try_fmt_vid_cap(file, fh, vf);
|
||||
|
|
@ -466,7 +469,7 @@ static int pvr2_s_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format
|
|||
|
||||
static int pvr2_streamon(struct file *file, void *priv, enum v4l2_buf_type i)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct pvr2_v4l2_dev *pdi = fh->pdi;
|
||||
int ret;
|
||||
|
|
@ -485,7 +488,7 @@ static int pvr2_streamon(struct file *file, void *priv, enum v4l2_buf_type i)
|
|||
|
||||
static int pvr2_streamoff(struct file *file, void *priv, enum v4l2_buf_type i)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
|
||||
if (!fh->pdi->stream) {
|
||||
|
|
@ -500,7 +503,7 @@ static int pvr2_streamoff(struct file *file, void *priv, enum v4l2_buf_type i)
|
|||
static int pvr2_query_ext_ctrl(struct file *file, void *priv,
|
||||
struct v4l2_query_ext_ctrl *vc)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct pvr2_ctrl *cptr;
|
||||
int val;
|
||||
|
|
@ -561,7 +564,7 @@ static int pvr2_query_ext_ctrl(struct file *file, void *priv,
|
|||
|
||||
static int pvr2_querymenu(struct file *file, void *priv, struct v4l2_querymenu *vm)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
unsigned int cnt = 0;
|
||||
int ret;
|
||||
|
|
@ -577,7 +580,7 @@ static int pvr2_querymenu(struct file *file, void *priv, struct v4l2_querymenu *
|
|||
static int pvr2_g_ext_ctrls(struct file *file, void *priv,
|
||||
struct v4l2_ext_controls *ctls)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct v4l2_ext_control *ctrl;
|
||||
struct pvr2_ctrl *cptr;
|
||||
|
|
@ -612,7 +615,7 @@ static int pvr2_g_ext_ctrls(struct file *file, void *priv,
|
|||
static int pvr2_s_ext_ctrls(struct file *file, void *priv,
|
||||
struct v4l2_ext_controls *ctls)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct v4l2_ext_control *ctrl;
|
||||
unsigned int idx;
|
||||
|
|
@ -637,7 +640,7 @@ static int pvr2_s_ext_ctrls(struct file *file, void *priv,
|
|||
static int pvr2_try_ext_ctrls(struct file *file, void *priv,
|
||||
struct v4l2_ext_controls *ctls)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct v4l2_ext_control *ctrl;
|
||||
struct pvr2_ctrl *pctl;
|
||||
|
|
@ -659,7 +662,7 @@ static int pvr2_try_ext_ctrls(struct file *file, void *priv,
|
|||
static int pvr2_g_pixelaspect(struct file *file, void *priv,
|
||||
int type, struct v4l2_fract *f)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct v4l2_cropcap cap = { .type = type };
|
||||
int ret;
|
||||
|
|
@ -675,7 +678,7 @@ static int pvr2_g_pixelaspect(struct file *file, void *priv,
|
|||
static int pvr2_g_selection(struct file *file, void *priv,
|
||||
struct v4l2_selection *sel)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
struct v4l2_cropcap cap;
|
||||
int val = 0;
|
||||
|
|
@ -726,7 +729,7 @@ static int pvr2_g_selection(struct file *file, void *priv,
|
|||
static int pvr2_s_selection(struct file *file, void *priv,
|
||||
struct v4l2_selection *sel)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
int ret;
|
||||
|
||||
|
|
@ -758,7 +761,7 @@ static int pvr2_s_selection(struct file *file, void *priv,
|
|||
|
||||
static int pvr2_log_status(struct file *file, void *priv)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_hdw *hdw = fh->channel.mc_head->hdw;
|
||||
|
||||
pvr2_hdw_trigger_module_log(hdw);
|
||||
|
|
@ -882,7 +885,7 @@ static void pvr2_v4l2_internal_check(struct pvr2_channel *chp)
|
|||
|
||||
static int pvr2_v4l2_release(struct file *file)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fhp = file->private_data;
|
||||
struct pvr2_v4l2_fh *fhp = to_pvr2_v4l2_fh(file);
|
||||
struct pvr2_v4l2 *vp = fhp->pdi->v4lp;
|
||||
struct pvr2_hdw *hdw = fhp->channel.mc_head->hdw;
|
||||
|
||||
|
|
@ -1000,7 +1003,7 @@ static int pvr2_v4l2_open(struct file *file)
|
|||
}
|
||||
|
||||
fhp->file = file;
|
||||
file->private_data = fhp;
|
||||
file->private_data = &fhp->fh;
|
||||
|
||||
fhp->fw_mode_flag = pvr2_hdw_cpufw_get_enabled(hdw);
|
||||
v4l2_fh_add(&fhp->fh);
|
||||
|
|
@ -1055,7 +1058,7 @@ static int pvr2_v4l2_iosetup(struct pvr2_v4l2_fh *fh)
|
|||
static ssize_t pvr2_v4l2_read(struct file *file,
|
||||
char __user *buff, size_t count, loff_t *ppos)
|
||||
{
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
int ret;
|
||||
|
||||
if (fh->fw_mode_flag) {
|
||||
|
|
@ -1117,7 +1120,7 @@ static ssize_t pvr2_v4l2_read(struct file *file,
|
|||
static __poll_t pvr2_v4l2_poll(struct file *file, poll_table *wait)
|
||||
{
|
||||
__poll_t mask = 0;
|
||||
struct pvr2_v4l2_fh *fh = file->private_data;
|
||||
struct pvr2_v4l2_fh *fh = to_pvr2_v4l2_fh(file);
|
||||
int ret;
|
||||
|
||||
if (fh->fw_mode_flag) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user