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
gpio
gpio-max7300.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2009 Wolfram Sang, Pengutronix
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 as
6
* published by the Free Software Foundation.
7
*
8
* Check max730x.c for further details.
9
*/
10
11
#include <linux/module.h>
12
#include <
linux/init.h
>
13
#include <
linux/platform_device.h
>
14
#include <
linux/mutex.h
>
15
#include <linux/i2c.h>
16
#include <
linux/spi/max7301.h
>
17
#include <linux/slab.h>
18
19
static
int
max7300_i2c_write(
struct
device
*
dev
,
unsigned
int
reg
,
20
unsigned
int
val
)
21
{
22
struct
i2c_client
*
client
=
to_i2c_client
(dev);
23
24
return
i2c_smbus_write_byte_data
(client, reg, val);
25
}
26
27
static
int
max7300_i2c_read(
struct
device
*
dev
,
unsigned
int
reg
)
28
{
29
struct
i2c_client
*
client
=
to_i2c_client
(dev);
30
31
return
i2c_smbus_read_byte_data
(client, reg);
32
}
33
34
static
int
__devinit
max7300_probe(
struct
i2c_client
*
client
,
35
const
struct
i2c_device_id
*
id
)
36
{
37
struct
max7301
*
ts
;
38
int
ret
;
39
40
if
(!i2c_check_functionality(client->
adapter
,
41
I2C_FUNC_SMBUS_BYTE_DATA
))
42
return
-
EIO
;
43
44
ts = kzalloc(
sizeof
(
struct
max7301
),
GFP_KERNEL
);
45
if
(!ts)
46
return
-
ENOMEM
;
47
48
ts->
read
= max7300_i2c_read;
49
ts->
write
= max7300_i2c_write;
50
ts->
dev
= &client->
dev
;
51
52
ret =
__max730x_probe
(ts);
53
if
(ret)
54
kfree
(ts);
55
return
ret
;
56
}
57
58
static
int
__devexit
max7300_remove(
struct
i2c_client
*client)
59
{
60
return
__max730x_remove
(&client->
dev
);
61
}
62
63
static
const
struct
i2c_device_id
max7300_id[] = {
64
{
"max7300"
, 0 },
65
{ }
66
};
67
MODULE_DEVICE_TABLE
(i2c, max7300_id);
68
69
static
struct
i2c_driver
max7300_driver = {
70
.driver = {
71
.name =
"max7300"
,
72
.owner =
THIS_MODULE
,
73
},
74
.probe = max7300_probe,
75
.remove =
__devexit_p
(max7300_remove),
76
.id_table = max7300_id,
77
};
78
79
static
int
__init
max7300_init(
void
)
80
{
81
return
i2c_add_driver(&max7300_driver);
82
}
83
subsys_initcall
(max7300_init);
84
85
static
void
__exit
max7300_exit(
void
)
86
{
87
i2c_del_driver
(&max7300_driver);
88
}
89
module_exit
(max7300_exit);
90
91
MODULE_AUTHOR
(
"Wolfram Sang"
);
92
MODULE_LICENSE
(
"GPL v2"
);
93
MODULE_DESCRIPTION
(
"MAX7300 GPIO-Expander"
);
Generated on Thu Jan 10 2013 13:30:41 for Linux Kernel by
1.8.2