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
drivers
video
via
via_aux.h
Go to the documentation of this file.
1
/*
2
* Copyright 2011 Florian Tobias Schandinat <
[email protected]
>
3
*
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public
6
* License as published by the Free Software Foundation;
7
* either version 2, or (at your option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
11
* the implied warranty of MERCHANTABILITY or FITNESS FOR
12
* A PARTICULAR PURPOSE.See the GNU General Public License
13
* for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc.,
18
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19
*/
20
/*
21
* infrastructure for devices connected via I2C
22
*/
23
24
#ifndef __VIA_AUX_H__
25
#define __VIA_AUX_H__
26
27
28
#include <linux/list.h>
29
#include <linux/i2c.h>
30
#include <linux/fb.h>
31
32
33
struct
via_aux_bus
{
34
struct
i2c_adapter
*
adap
;
/* the I2C device to access the bus */
35
struct
list_head
drivers
;
/* drivers for devices on this bus */
36
};
37
38
struct
via_aux_drv
{
39
struct
list_head
chain
;
/* chain to support multiple drivers */
40
41
struct
via_aux_bus
*
bus
;
/* the I2C bus used */
42
u8
addr
;
/* the I2C slave address */
43
44
const
char
*
name
;
/* human readable name of the driver */
45
void
*
data
;
/* private data of this driver */
46
47
void
(*
cleanup
)(
struct
via_aux_drv
*drv);
48
const
struct
fb_videomode
* (*get_preferred_mode)
49
(
struct
via_aux_drv
*drv);
50
};
51
52
53
struct
via_aux_bus
*
via_aux_probe
(
struct
i2c_adapter
*
adap
);
54
void
via_aux_free
(
struct
via_aux_bus
*
bus
);
55
const
struct
fb_videomode
*
via_aux_get_preferred_mode
(
struct
via_aux_bus
*
bus
);
56
57
58
static
inline
bool
via_aux_add(
struct
via_aux_drv
*drv)
59
{
60
struct
via_aux_drv
*
data
=
kmalloc
(
sizeof
(*data),
GFP_KERNEL
);
61
62
if
(!data)
63
return
false
;
64
65
*data = *drv;
66
list_add_tail
(&data->
chain
, &data->
bus
->drivers);
67
return
true
;
68
}
69
70
static
inline
bool
via_aux_read(
struct
via_aux_drv
*drv,
u8
start
,
u8
*
buf
,
71
u8
len)
72
{
73
struct
i2c_msg
msg
[2] = {
74
{.addr = drv->
addr
, .flags = 0, .len = 1, .buf = &start},
75
{.addr = drv->
addr
, .flags =
I2C_M_RD
, .len =
len
, .buf = buf} };
76
77
return
i2c_transfer
(drv->
bus
->adap, msg, 2) == 2;
78
}
79
80
81
/* probe functions of existing drivers - should only be called in via_aux.c */
82
void
via_aux_ch7301_probe
(
struct
via_aux_bus
*
bus
);
83
void
via_aux_edid_probe
(
struct
via_aux_bus
*
bus
);
84
void
via_aux_sii164_probe
(
struct
via_aux_bus
*
bus
);
85
void
via_aux_vt1636_probe
(
struct
via_aux_bus
*
bus
);
86
void
via_aux_vt1632_probe
(
struct
via_aux_bus
*
bus
);
87
void
via_aux_vt1631_probe
(
struct
via_aux_bus
*
bus
);
88
void
via_aux_vt1625_probe
(
struct
via_aux_bus
*
bus
);
89
void
via_aux_vt1622_probe
(
struct
via_aux_bus
*
bus
);
90
void
via_aux_vt1621_probe
(
struct
via_aux_bus
*
bus
);
91
92
93
#endif
/* __VIA_AUX_H__ */
Generated on Thu Jan 10 2013 14:42:23 for Linux Kernel by
1.8.2