Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
media
media-devnode.h
Go to the documentation of this file.
1
/*
2
* Media device node
3
*
4
* Copyright (C) 2010 Nokia Corporation
5
*
6
* Contacts: Laurent Pinchart <
[email protected]
>
7
* Sakari Ailus <
[email protected]
>
8
*
9
* This program is free software; you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License version 2 as
11
* published by the Free Software Foundation.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
*
22
* --
23
*
24
* Common functions for media-related drivers to register and unregister media
25
* device nodes.
26
*/
27
28
#ifndef _MEDIA_DEVNODE_H
29
#define _MEDIA_DEVNODE_H
30
31
#include <linux/poll.h>
32
#include <linux/fs.h>
33
#include <linux/device.h>
34
#include <
linux/cdev.h
>
35
36
/*
37
* Flag to mark the media_devnode struct as registered. Drivers must not touch
38
* this flag directly, it will be set and cleared by media_devnode_register and
39
* media_devnode_unregister.
40
*/
41
#define MEDIA_FLAG_REGISTERED 0
42
43
struct
media_file_operations
{
44
struct
module
*
owner
;
45
ssize_t
(*
read
) (
struct
file
*,
char
__user
*,
size_t
, loff_t *);
46
ssize_t
(*
write
) (
struct
file
*,
const
char
__user
*,
size_t
, loff_t *);
47
unsigned
int
(*
poll
) (
struct
file
*,
struct
poll_table_struct
*);
48
long
(*
ioctl
) (
struct
file
*,
unsigned
int
,
unsigned
long
);
49
int
(*
open
) (
struct
file
*);
50
int
(*
release
) (
struct
file
*);
51
};
52
64
struct
media_devnode
{
65
/* device ops */
66
const
struct
media_file_operations
*
fops
;
67
68
/* sysfs */
69
struct
device
dev
;
/* media device */
70
struct
cdev
cdev
;
/* character device */
71
struct
device
*
parent
;
/* device parent */
72
73
/* device info */
74
int
minor
;
75
unsigned
long
flags
;
/* Use bitops to access flags */
76
77
/* callbacks */
78
void
(*
release
)(
struct
media_devnode
*mdev);
79
};
80
81
/* dev to media_devnode */
82
#define to_media_devnode(cd) container_of(cd, struct media_devnode, dev)
83
84
int
__must_check
media_devnode_register
(
struct
media_devnode
*mdev);
85
void
media_devnode_unregister
(
struct
media_devnode
*mdev);
86
87
static
inline
struct
media_devnode
*media_devnode_data(
struct
file
*filp)
88
{
89
return
filp->
private_data
;
90
}
91
92
static
inline
int
media_devnode_is_registered(
struct
media_devnode
*mdev)
93
{
94
return
test_bit
(
MEDIA_FLAG_REGISTERED
, &mdev->
flags
);
95
}
96
97
#endif
/* _MEDIA_DEVNODE_H */
Generated on Thu Jan 10 2013 14:52:54 for Linux Kernel by
1.8.2