Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 47617
b: refs/heads/master
c: 2b1cd4c
h: refs/heads/master
i:
  47615: a8b5a4b
v: v3
  • Loading branch information
Mike Frysinger authored and Linus Torvalds committed Feb 11, 2007
1 parent 3fef107 commit d3e8f56
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1efc5da3cf567d2f6b795f9d2112ed97fec4ee7c
refs/heads/master: 2b1cd4c43b90059b54baa8d9113365984113c631
46 changes: 34 additions & 12 deletions trunk/Documentation/rtc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ RTC class framework, but can't be supported by the older driver.
is connected to an IRQ line, it can often issue an alarm IRQ up to
24 hours in the future.

* RTC_WKALM_SET, RTC_WKALM_READ ... RTCs that can issue alarms beyond
* RTC_WKALM_SET, RTC_WKALM_RD ... RTCs that can issue alarms beyond
the next 24 hours use a slightly more powerful API, which supports
setting the longer alarm time and enabling its IRQ using a single
request (using the same model as EFI firmware).
Expand All @@ -167,6 +167,28 @@ Linux out of a low power sleep state (or hibernation) back to a fully
operational state. For example, a system could enter a deep power saving
state until it's time to execute some scheduled tasks.

Note that many of these ioctls need not actually be implemented by your
driver. The common rtc-dev interface handles many of these nicely if your
driver returns ENOIOCTLCMD. Some common examples:

* RTC_RD_TIME, RTC_SET_TIME: the read_time/set_time functions will be
called with appropriate values.

* RTC_ALM_SET, RTC_ALM_READ, RTC_WKALM_SET, RTC_WKALM_RD: the
set_alarm/read_alarm functions will be called. To differentiate
between the ALM and WKALM, check the larger fields of the rtc_wkalrm
struct (like tm_year). These will be set to -1 when using ALM and
will be set to proper values when using WKALM.

* RTC_IRQP_SET, RTC_IRQP_READ: the irq_set_freq function will be called
to set the frequency while the framework will handle the read for you
since the frequency is stored in the irq_freq member of the rtc_device
structure. Also make sure you set the max_user_freq member in your
initialization routines so the framework can sanity check the user
input for you.

If all else fails, check out the rtc-test.c driver!


-------------------- 8< ---------------- 8< -----------------------------

Expand Down Expand Up @@ -237,7 +259,7 @@ int main(int argc, char **argv)
"\n...Update IRQs not supported.\n");
goto test_READ;
}
perror("ioctl");
perror("RTC_UIE_ON ioctl");
exit(errno);
}

Expand Down Expand Up @@ -284,15 +306,15 @@ int main(int argc, char **argv)
/* Turn off update interrupts */
retval = ioctl(fd, RTC_UIE_OFF, 0);
if (retval == -1) {
perror("ioctl");
perror("RTC_UIE_OFF ioctl");
exit(errno);
}

test_READ:
/* Read the RTC time/date */
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -1) {
perror("ioctl");
perror("RTC_RD_TIME ioctl");
exit(errno);
}

Expand Down Expand Up @@ -320,14 +342,14 @@ test_READ:
"\n...Alarm IRQs not supported.\n");
goto test_PIE;
}
perror("ioctl");
perror("RTC_ALM_SET ioctl");
exit(errno);
}

/* Read the current alarm settings */
retval = ioctl(fd, RTC_ALM_READ, &rtc_tm);
if (retval == -1) {
perror("ioctl");
perror("RTC_ALM_READ ioctl");
exit(errno);
}

Expand All @@ -337,7 +359,7 @@ test_READ:
/* Enable alarm interrupts */
retval = ioctl(fd, RTC_AIE_ON, 0);
if (retval == -1) {
perror("ioctl");
perror("RTC_AIE_ON ioctl");
exit(errno);
}

Expand All @@ -355,7 +377,7 @@ test_READ:
/* Disable alarm interrupts */
retval = ioctl(fd, RTC_AIE_OFF, 0);
if (retval == -1) {
perror("ioctl");
perror("RTC_AIE_OFF ioctl");
exit(errno);
}

Expand All @@ -368,7 +390,7 @@ test_PIE:
fprintf(stderr, "\nNo periodic IRQ support\n");
return 0;
}
perror("ioctl");
perror("RTC_IRQP_READ ioctl");
exit(errno);
}
fprintf(stderr, "\nPeriodic IRQ rate is %ldHz.\n", tmp);
Expand All @@ -387,7 +409,7 @@ test_PIE:
"\n...Periodic IRQ rate is fixed\n");
goto done;
}
perror("ioctl");
perror("RTC_IRQP_SET ioctl");
exit(errno);
}

Expand All @@ -397,7 +419,7 @@ test_PIE:
/* Enable periodic interrupts */
retval = ioctl(fd, RTC_PIE_ON, 0);
if (retval == -1) {
perror("ioctl");
perror("RTC_PIE_ON ioctl");
exit(errno);
}

Expand All @@ -416,7 +438,7 @@ test_PIE:
/* Disable periodic interrupts */
retval = ioctl(fd, RTC_PIE_OFF, 0);
if (retval == -1) {
perror("ioctl");
perror("RTC_PIE_OFF ioctl");
exit(errno);
}
}
Expand Down

0 comments on commit d3e8f56

Please sign in to comment.