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
arch
powerpc
platforms
ps3
time.c
Go to the documentation of this file.
1
/*
2
* PS3 time and rtc routines.
3
*
4
* Copyright (C) 2006 Sony Computer Entertainment Inc.
5
* Copyright 2006 Sony Corp.
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; version 2 of the License.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
*/
20
21
#include <linux/kernel.h>
22
#include <
linux/platform_device.h
>
23
24
#include <
asm/firmware.h
>
25
#include <asm/rtc.h>
26
#include <
asm/lv1call.h
>
27
#include <
asm/ps3.h
>
28
29
#include "
platform.h
"
30
31
#define dump_tm(_a) _dump_tm(_a, __func__, __LINE__)
32
static
void
_dump_tm(
const
struct
rtc_time
*
tm
,
const
char
*
func
,
int
line
)
33
{
34
pr_debug
(
"%s:%d tm_sec %d\n"
, func, line, tm->
tm_sec
);
35
pr_debug
(
"%s:%d tm_min %d\n"
, func, line, tm->
tm_min
);
36
pr_debug
(
"%s:%d tm_hour %d\n"
, func, line, tm->
tm_hour
);
37
pr_debug
(
"%s:%d tm_mday %d\n"
, func, line, tm->
tm_mday
);
38
pr_debug
(
"%s:%d tm_mon %d\n"
, func, line, tm->
tm_mon
);
39
pr_debug
(
"%s:%d tm_year %d\n"
, func, line, tm->
tm_year
);
40
pr_debug
(
"%s:%d tm_wday %d\n"
, func, line, tm->
tm_wday
);
41
}
42
43
#define dump_time(_a) _dump_time(_a, __func__, __LINE__)
44
static
void
__maybe_unused
_dump_time(
int
time
,
const
char
*
func
,
45
int
line
)
46
{
47
struct
rtc_time
tm;
48
49
to_tm
(time, &tm);
50
51
pr_debug
(
"%s:%d time %d\n"
, func, line, time);
52
_dump_tm(&tm, func, line);
53
}
54
55
void
__init
ps3_calibrate_decr
(
void
)
56
{
57
int
result
;
58
u64
tmp
;
59
60
result =
ps3_repository_read_be_tb_freq
(0, &tmp);
61
BUG_ON
(result);
62
63
ppc_tb_freq
=
tmp
;
64
ppc_proc_freq
=
ppc_tb_freq
* 40;
65
}
66
67
static
u64
read_rtc(
void
)
68
{
69
int
result
;
70
u64
rtc_val;
71
u64
tb_val;
72
73
result = lv1_get_rtc(&rtc_val, &tb_val);
74
BUG_ON
(result);
75
76
return
rtc_val;
77
}
78
79
unsigned
long
__init
ps3_get_boot_time
(
void
)
80
{
81
return
read_rtc() +
ps3_os_area_get_rtc_diff
();
82
}
83
84
static
int
__init
ps3_rtc_init(
void
)
85
{
86
struct
platform_device
*
pdev
;
87
88
if
(!firmware_has_feature(FW_FEATURE_PS3_LV1))
89
return
-
ENODEV
;
90
91
pdev = platform_device_register_simple(
"rtc-ps3"
, -1,
NULL
, 0);
92
if
(IS_ERR(pdev))
93
return
PTR_ERR(pdev);
94
95
return
0;
96
}
97
98
module_init
(ps3_rtc_init);
Generated on Thu Jan 10 2013 12:53:36 for Linux Kernel by
1.8.2