Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
linux
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Container Registry
Model registry
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Linaro
qcomlt
demos
linux
Commits
38f64c77
Commit
38f64c77
authored
16 years ago
by
Len Brown
Browse files
Options
Downloads
Plain Diff
Merge branch 'alarm' into release
parents
e2f7a777
2602a671
Loading
Loading
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
drivers/acpi/proc.c
+32
-21
32 additions, 21 deletions
drivers/acpi/proc.c
with
32 additions
and
21 deletions
drivers/acpi/proc.c
+
32
−
21
View file @
38f64c77
...
...
@@ -84,47 +84,44 @@ acpi_system_write_sleep(struct file *file,
#ifdef HAVE_ACPI_LEGACY_ALARM
static
u32
cmos_bcd_read
(
int
offset
,
int
rtc_control
);
static
int
acpi_system_alarm_seq_show
(
struct
seq_file
*
seq
,
void
*
offset
)
{
u32
sec
,
min
,
hr
;
u32
day
,
mo
,
yr
,
cent
=
0
;
u32
today
=
0
;
unsigned
char
rtc_control
=
0
;
unsigned
long
flags
;
spin_lock_irqsave
(
&
rtc_lock
,
flags
);
sec
=
CMOS_READ
(
RTC_SECONDS_ALARM
);
min
=
CMOS_READ
(
RTC_MINUTES_ALARM
);
hr
=
CMOS_READ
(
RTC_HOURS_ALARM
);
rtc_control
=
CMOS_READ
(
RTC_CONTROL
);
sec
=
cmos_bcd_read
(
RTC_SECONDS_ALARM
,
rtc_control
);
min
=
cmos_bcd_read
(
RTC_MINUTES_ALARM
,
rtc_control
);
hr
=
cmos_bcd_read
(
RTC_HOURS_ALARM
,
rtc_control
);
/* If we ever get an FACP with proper values... */
if
(
acpi_gbl_FADT
.
day_alarm
)
if
(
acpi_gbl_FADT
.
day_alarm
)
{
/* ACPI spec: only low 6 its should be cared */
day
=
CMOS_READ
(
acpi_gbl_FADT
.
day_alarm
)
&
0x3F
;
else
day
=
CMOS_READ
(
RTC_DAY_OF_MONTH
);
if
(
!
(
rtc_control
&
RTC_DM_BINARY
)
||
RTC_ALWAYS_BCD
)
day
=
bcd2bin
(
day
);
}
else
day
=
cmos_bcd_read
(
RTC_DAY_OF_MONTH
,
rtc_control
);
if
(
acpi_gbl_FADT
.
month_alarm
)
mo
=
CMOS_READ
(
acpi_gbl_FADT
.
month_alarm
);
else
mo
=
CMOS_READ
(
RTC_MONTH
);
mo
=
cmos_bcd_read
(
acpi_gbl_FADT
.
month_alarm
,
rtc_control
);
else
{
mo
=
cmos_bcd_read
(
RTC_MONTH
,
rtc_control
);
today
=
cmos_bcd_read
(
RTC_DAY_OF_MONTH
,
rtc_control
);
}
if
(
acpi_gbl_FADT
.
century
)
cent
=
CMOS_READ
(
acpi_gbl_FADT
.
century
);
cent
=
cmos_bcd_read
(
acpi_gbl_FADT
.
century
,
rtc_control
);
yr
=
CMOS_READ
(
RTC_YEAR
);
yr
=
cmos_bcd_read
(
RTC_YEAR
,
rtc_control
);
spin_unlock_irqrestore
(
&
rtc_lock
,
flags
);
if
(
!
(
rtc_control
&
RTC_DM_BINARY
)
||
RTC_ALWAYS_BCD
)
{
sec
=
bcd2bin
(
sec
);
min
=
bcd2bin
(
min
);
hr
=
bcd2bin
(
hr
);
day
=
bcd2bin
(
day
);
mo
=
bcd2bin
(
mo
);
yr
=
bcd2bin
(
yr
);
cent
=
bcd2bin
(
cent
);
}
/* we're trusting the FADT (see above) */
if
(
!
acpi_gbl_FADT
.
century
)
/* If we're not trusting the FADT, we should at least make it
...
...
@@ -149,6 +146,20 @@ static int acpi_system_alarm_seq_show(struct seq_file *seq, void *offset)
else
yr
+=
cent
*
100
;
/*
* Show correct dates for alarms up to a month into the future.
* This solves issues for nearly all situations with the common
* 30-day alarm clocks in PC hardware.
*/
if
(
day
<
today
)
{
if
(
mo
<
12
)
{
mo
+=
1
;
}
else
{
mo
=
1
;
yr
+=
1
;
}
}
seq_printf
(
seq
,
"%4.4u-"
,
yr
);
(
mo
>
12
)
?
seq_puts
(
seq
,
"**-"
)
:
seq_printf
(
seq
,
"%2.2u-"
,
mo
);
(
day
>
31
)
?
seq_puts
(
seq
,
"** "
)
:
seq_printf
(
seq
,
"%2.2u "
,
day
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment