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
misc
ti_dac7512.c
Go to the documentation of this file.
1
/*
2
* dac7512.c - Linux kernel module for
3
* Texas Instruments DAC7512
4
*
5
* Copyright (c) 2009 Daniel Mack <
[email protected]
>
6
*
7
* This program is free software; you can redistribute it and/or modify
8
* it under the terms of the GNU General Public License as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
*/
21
22
#include <linux/module.h>
23
#include <
linux/init.h
>
24
#include <
linux/spi/spi.h
>
25
26
#define DAC7512_DRV_NAME "dac7512"
27
#define DRIVER_VERSION "1.0"
28
29
static
ssize_t
dac7512_store_val(
struct
device
*
dev
,
30
struct
device_attribute
*
attr
,
31
const
char
*
buf
,
size_t
count
)
32
{
33
struct
spi_device
*
spi
= to_spi_device(dev);
34
unsigned
char
tmp
[2];
35
unsigned
long
val
;
36
37
if
(
strict_strtoul
(buf, 10, &val) < 0)
38
return
-
EINVAL
;
39
40
tmp[0] = val >> 8;
41
tmp[1] = val & 0xff;
42
spi_write(spi, tmp,
sizeof
(tmp));
43
return
count
;
44
}
45
46
static
DEVICE_ATTR
(
value
,
S_IWUSR
,
NULL
, dac7512_store_val);
47
48
static
struct
attribute
*dac7512_attributes[] = {
49
&dev_attr_value.attr,
50
NULL
51
};
52
53
static
const
struct
attribute_group
dac7512_attr_group = {
54
.attrs = dac7512_attributes,
55
};
56
57
static
int
__devinit
dac7512_probe(
struct
spi_device
*
spi
)
58
{
59
int
ret
;
60
61
spi->
bits_per_word
= 8;
62
spi->
mode
=
SPI_MODE_0
;
63
ret =
spi_setup
(spi);
64
if
(ret < 0)
65
return
ret
;
66
67
return
sysfs_create_group
(&spi->
dev
.kobj, &dac7512_attr_group);
68
}
69
70
static
int
__devexit
dac7512_remove(
struct
spi_device
*spi)
71
{
72
sysfs_remove_group
(&spi->
dev
.kobj, &dac7512_attr_group);
73
return
0;
74
}
75
76
static
struct
spi_driver
dac7512_driver = {
77
.driver = {
78
.name =
DAC7512_DRV_NAME
,
79
.owner =
THIS_MODULE
,
80
},
81
.probe = dac7512_probe,
82
.remove =
__devexit_p
(dac7512_remove),
83
};
84
85
module_spi_driver
(dac7512_driver);
86
87
MODULE_AUTHOR
(
"Daniel Mack <
[email protected]
>"
);
88
MODULE_DESCRIPTION
(
"DAC7512 16-bit DAC"
);
89
MODULE_LICENSE
(
"GPL v2"
);
90
MODULE_VERSION
(
DRIVER_VERSION
);
Generated on Thu Jan 10 2013 13:55:11 for Linux Kernel by
1.8.2