Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
38f64c77
Commit
38f64c77
authored
Jan 09, 2009
by
Len Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'alarm' into release
parents
e2f7a777
2602a671
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
32 additions
and
21 deletions
+32
-21
drivers/acpi/proc.c
drivers/acpi/proc.c
+32
-21
No files found.
drivers/acpi/proc.c
View file @
38f64c77
...
@@ -84,47 +84,44 @@ acpi_system_write_sleep(struct file *file,
...
@@ -84,47 +84,44 @@ acpi_system_write_sleep(struct file *file,
#ifdef HAVE_ACPI_LEGACY_ALARM
#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
)
static
int
acpi_system_alarm_seq_show
(
struct
seq_file
*
seq
,
void
*
offset
)
{
{
u32
sec
,
min
,
hr
;
u32
sec
,
min
,
hr
;
u32
day
,
mo
,
yr
,
cent
=
0
;
u32
day
,
mo
,
yr
,
cent
=
0
;
u32
today
=
0
;
unsigned
char
rtc_control
=
0
;
unsigned
char
rtc_control
=
0
;
unsigned
long
flags
;
unsigned
long
flags
;
spin_lock_irqsave
(
&
rtc_lock
,
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
);
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 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 */
/* ACPI spec: only low 6 its should be cared */
day
=
CMOS_READ
(
acpi_gbl_FADT
.
day_alarm
)
&
0x3F
;
day
=
CMOS_READ
(
acpi_gbl_FADT
.
day_alarm
)
&
0x3F
;
else
if
(
!
(
rtc_control
&
RTC_DM_BINARY
)
||
RTC_ALWAYS_BCD
)
day
=
CMOS_READ
(
RTC_DAY_OF_MONTH
);
day
=
bcd2bin
(
day
);
}
else
day
=
cmos_bcd_read
(
RTC_DAY_OF_MONTH
,
rtc_control
);
if
(
acpi_gbl_FADT
.
month_alarm
)
if
(
acpi_gbl_FADT
.
month_alarm
)
mo
=
CMOS_READ
(
acpi_gbl_FADT
.
month_alarm
);
mo
=
cmos_bcd_read
(
acpi_gbl_FADT
.
month_alarm
,
rtc_control
);
else
else
{
mo
=
CMOS_READ
(
RTC_MONTH
);
mo
=
cmos_bcd_read
(
RTC_MONTH
,
rtc_control
);
today
=
cmos_bcd_read
(
RTC_DAY_OF_MONTH
,
rtc_control
);
}
if
(
acpi_gbl_FADT
.
century
)
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
);
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) */
/* we're trusting the FADT (see above) */
if
(
!
acpi_gbl_FADT
.
century
)
if
(
!
acpi_gbl_FADT
.
century
)
/* If we're not trusting the FADT, we should at least make it
/* 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)
...
@@ -149,6 +146,20 @@ static int acpi_system_alarm_seq_show(struct seq_file *seq, void *offset)
else
else
yr
+=
cent
*
100
;
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
);
seq_printf
(
seq
,
"%4.4u-"
,
yr
);
(
mo
>
12
)
?
seq_puts
(
seq
,
"**-"
)
:
seq_printf
(
seq
,
"%2.2u-"
,
mo
);
(
mo
>
12
)
?
seq_puts
(
seq
,
"**-"
)
:
seq_printf
(
seq
,
"%2.2u-"
,
mo
);
(
day
>
31
)
?
seq_puts
(
seq
,
"** "
)
:
seq_printf
(
seq
,
"%2.2u "
,
day
);
(
day
>
31
)
?
seq_puts
(
seq
,
"** "
)
:
seq_printf
(
seq
,
"%2.2u "
,
day
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment