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
acpi
bgrt.c
Go to the documentation of this file.
1
/*
2
* Copyright 2012 Red Hat, Inc <
[email protected]
>
3
* Copyright 2012 Intel Corporation
4
*
5
* This program is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 2 as
7
* published by the Free Software Foundation.
8
*/
9
10
#include <linux/kernel.h>
11
#include <linux/module.h>
12
#include <
linux/init.h
>
13
#include <linux/device.h>
14
#include <
linux/sysfs.h
>
15
#include <
linux/efi-bgrt.h
>
16
17
static
struct
kobject
*bgrt_kobj;
18
19
static
ssize_t
show_version(
struct
device
*
dev
,
20
struct
device_attribute
*
attr
,
char
*
buf
)
21
{
22
return
snprintf
(buf,
PAGE_SIZE
,
"%d\n"
,
bgrt_tab
->version);
23
}
24
static
DEVICE_ATTR
(
version
,
S_IRUGO
, show_version,
NULL
);
25
26
static
ssize_t
show_status(
struct
device
*
dev
,
27
struct
device_attribute
*
attr
,
char
*
buf
)
28
{
29
return
snprintf
(buf,
PAGE_SIZE
,
"%d\n"
,
bgrt_tab
->status);
30
}
31
static
DEVICE_ATTR
(
status
,
S_IRUGO
, show_status,
NULL
);
32
33
static
ssize_t
show_type(
struct
device
*
dev
,
34
struct
device_attribute
*
attr
,
char
*
buf
)
35
{
36
return
snprintf
(buf,
PAGE_SIZE
,
"%d\n"
,
bgrt_tab
->image_type);
37
}
38
static
DEVICE_ATTR
(
type
,
S_IRUGO
, show_type,
NULL
);
39
40
static
ssize_t
show_xoffset(
struct
device
*
dev
,
41
struct
device_attribute
*
attr
,
char
*
buf
)
42
{
43
return
snprintf
(buf,
PAGE_SIZE
,
"%d\n"
,
bgrt_tab
->image_offset_x);
44
}
45
static
DEVICE_ATTR
(xoffset,
S_IRUGO
, show_xoffset,
NULL
);
46
47
static
ssize_t
show_yoffset(
struct
device
*
dev
,
48
struct
device_attribute
*
attr
,
char
*
buf
)
49
{
50
return
snprintf
(buf,
PAGE_SIZE
,
"%d\n"
,
bgrt_tab
->image_offset_y);
51
}
52
static
DEVICE_ATTR
(yoffset,
S_IRUGO
, show_yoffset,
NULL
);
53
54
static
ssize_t
show_image(
struct
file
*
file
,
struct
kobject
*kobj,
55
struct
bin_attribute
*
attr
,
char
*
buf
, loff_t off,
size_t
count
)
56
{
57
memcpy
(buf, attr->
private
+ off, count);
58
return
count
;
59
}
60
61
static
struct
bin_attribute
image_attr = {
62
.attr = {
63
.name =
"image"
,
64
.mode =
S_IRUGO
,
65
},
66
.read = show_image,
67
};
68
69
static
struct
attribute
*bgrt_attributes[] = {
70
&dev_attr_version.attr,
71
&dev_attr_status.attr,
72
&dev_attr_type.attr,
73
&dev_attr_xoffset.attr,
74
&dev_attr_yoffset.attr,
75
NULL
,
76
};
77
78
static
struct
attribute_group
bgrt_attribute_group = {
79
.attrs = bgrt_attributes,
80
};
81
82
static
int
__init
bgrt_init(
void
)
83
{
84
int
ret
;
85
86
if
(!
bgrt_image
)
87
return
-
ENODEV
;
88
89
sysfs_bin_attr_init
(&image_attr);
90
image_attr.
private
=
bgrt_image
;
91
image_attr.
size
=
bgrt_image_size
;
92
93
bgrt_kobj =
kobject_create_and_add
(
"bgrt"
,
acpi_kobj
);
94
if
(!bgrt_kobj)
95
return
-
EINVAL
;
96
97
ret =
sysfs_create_group
(bgrt_kobj, &bgrt_attribute_group);
98
if
(ret)
99
goto
out_kobject;
100
101
ret =
sysfs_create_bin_file
(bgrt_kobj, &image_attr);
102
if
(ret)
103
goto
out_group;
104
105
return
0;
106
107
out_group:
108
sysfs_remove_group
(bgrt_kobj, &bgrt_attribute_group);
109
out_kobject:
110
kobject_put
(bgrt_kobj);
111
return
ret
;
112
}
113
114
module_init
(bgrt_init);
115
116
MODULE_AUTHOR
(
"Matthew Garrett, Josh Triplett <
[email protected]
>"
);
117
MODULE_DESCRIPTION
(
"BGRT boot graphic support"
);
118
MODULE_LICENSE
(
"GPL"
);
Generated on Thu Jan 10 2013 13:23:45 for Linux Kernel by
1.8.2