10 May, 2007

2 commits

  • Disable some more menus in the configuration files that are of no
    interest to a s390 machine.

    Signed-off-by: Martin Schwidefsky

    Martin Schwidefsky
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6:
    sh: Fix stacktrace simplification fallout.
    sh: SH7760 DMABRG support.
    sh: clockevent/clocksource/hrtimers/nohz TMU support.
    sh: Truncate MAX_ACTIVE_REGIONS for the common case.
    rtc: rtc-sh: Fix rtc_dev pointer for rtc_update_irq().
    sh: Convert to common die chain.
    sh: Wire up utimensat syscall.
    sh: landisk mv_nr_irqs definition.
    sh: Fixup ndelay() xloops calculation for alternate HZ.
    sh: Add 32-bit opcode feature CPU flag.
    sh: Fix PC adjustments for varying opcode length.
    sh: Support for SH-2A 32-bit opcodes.
    sh: Kill off redundant __div64_32 symbol export.
    sh: Share exception vector table for SH-3/4.
    sh: Always define TRAPA_BUG_OPCODE.
    sh: __GFP_REPEAT for pte allocations, too.
    rtc: rtc-sh: Fix up dev_dbg() warnings.
    sh: generic quicklist support.

    Linus Torvalds
     

09 May, 2007

19 commits

  • Fix several typos in help text in Kconfig* files.

    Signed-off-by: David Sterba
    Signed-off-by: Adrian Bunk

    David Sterba
     
  • When the rtc_update_irq() callsites stopped passing in the
    class_dev, the rtc_dev references weren't fixed. Fix it up,
    so we pass in the proper pointer.

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • Signed-off-by: Paul Mundt

    Paul Mundt
     
  • Replace CONFIG_PNPACPI with CONFIG_PNP, so it loads on ACPI-less PNPBIOS
    systems.

    Signed-off-by: Marko Vrh
    Acked-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Marko Vrh
     
  • This fixes a common glitch in how RTC drivers handle two "set alarm" modes,
    by getting rid of the surprising/hidden one that was rarely implemented
    correctly (and which could expose nonportable hardware-specific behavior).

    The glitch comes from the /dev/rtcX logic implementing the legacy
    RTC_ALM_SET (limited to 24 hours, needing RTC_AIE_ON) ioctl on top of the
    RTC driver call providing access to the newer RTC_WKALM_SET (without those
    limitations) by initializing the day/month/year fields to be invalid ...
    that second mode.

    Now, since few RTC drivers check those fields, and most hardware misbehaves
    when faced with invalid date fields, many RTC drivers will set bogus alarm
    times on those RTC_ALM_SET code paths. (Several in-tree drivers have that
    issue, and I also noticed it with code reviews on several new RTC drivers.)

    This patch ensures that RTC drivers never see such invalid alarm fields, by
    moving some logic out of rtc-omap into the RTC_ALM_SET code and adding an
    explicit check (which will prevent the issue on other code paths).

    Signed-off-by: David Brownell
    Cc: Scott Wood
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • David says "884b4aaaa242a2db8c8252796f0118164a680ab5 should be reverted. It
    added an rtc_merge_alarm() call to the 2.6.20 kernel, which hasn't yet been
    used by any in-tree driver; this patch obviates the need for that call, and
    uses a more robust approach."

    Cc: Scott Wood
    Cc: Alessandro Zummo
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • I finally got around to testing the updated wakeup event hooks for rtc-cmos,
    and they follow in two patches:

    - Interface update ... when a simple enable_irq_wake() doesn't suffice,
    the platform data can hold suspend/resume callback hooks.

    - ACPI implementation ... provides callback hooks to do ACPI magic, and
    eliminate the legacy /proc/acpi/alarm file.

    The interface update could go into 2.6.21, but that's not essential; they
    will be NOPs on most PCs, without the ACPI stuff.

    I suspect the ACPI folk may have opinions about how to merge that second
    patch, and how to obsolete that legacy procfs file. I'd like to see that
    merge into 2.6.22 if possible...

    As for how to kick it in ... two ways:

    - The appended "rtcwake" program; updated since the last time it was
    posted, it deals much better with timezones and DST.

    - Write the /sys/class/rtc/.../wakealarm file, then go to sleep.

    For some reason RTC wake from "swsusp" stopped working on a system where
    it previously worked; the alarm setting appears to get clobbered. But
    on the bright side, RTC wake from "standby" worked on a system that had
    never been able to resume from that state before ... IDEACPI is my guess
    as to why it finally started to work. It's the old "two steps forward,
    one step back" dance, I guess.

    - Dave

    /* gcc -Wall -Os -o rtcwake rtcwake.c */

    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    #include
    #include
    #include

    #include

    /* constants from legacy PC/AT hardware */
    #define RTC_PF 0x40
    #define RTC_AF 0x20
    #define RTC_UF 0x10

    /*
    * rtcwake -- enter a system sleep state until specified wakeup time.
    *
    * This uses cross-platform Linux interfaces to enter a system sleep state,
    * and leave it no later than a specified time. It uses any RTC framework
    * driver that supports standard driver model wakeup flags.
    *
    * This is normally used like the old "apmsleep" utility, to wake from a
    * suspend state like ACPI S1 (standby) or S3 (suspend-to-RAM). Most
    * platforms can implement those without analogues of BIOS, APM, or ACPI.
    *
    * On some systems, this can also be used like "nvram-wakeup", waking
    * from states like ACPI S4 (suspend to disk). Not all systems have
    * persistent media that are appropriate for such suspend modes.
    *
    * The best way to set the system's RTC is so that it holds the current
    * time in UTC. Use the "-l" flag to tell this program that the system
    * RTC uses a local timezone instead (maybe you dual-boot MS-Windows).
    */

    static char *progname;

    #ifdef DEBUG
    #define VERSION "1.0 dev (" __DATE__ " " __TIME__ ")"
    #else
    #define VERSION "0.9"
    #endif

    static unsigned verbose;
    static int rtc_is_utc = -1;

    static int may_wakeup(const char *devname)
    {
    char buf[128], *s;
    FILE *f;

    snprintf(buf, sizeof buf, "/sys/class/rtc/%s/device/power/wakeup",
    devname);
    f = fopen(buf, "r");
    if (!f) {
    perror(buf);
    return 0;
    }
    fgets(buf, sizeof buf, f);
    fclose(f);

    s = strchr(buf, '\n');
    if (!s)
    return 0;
    *s = 0;

    /* wakeup events could be disabled or not supported */
    return strcmp(buf, "enabled") == 0;
    }

    /* all times should be in UTC */
    static time_t sys_time;
    static time_t rtc_time;

    static int get_basetimes(int fd)
    {
    struct tm tm;
    struct rtc_time rtc;

    /* this process works in RTC time, except when working
    * with the system clock (which always uses UTC).
    */
    if (rtc_is_utc)
    setenv("TZ", "UTC", 1);
    tzset();

    /* read rtc and system clocks "at the same time", or as
    * precisely (+/- a second) as we can read them.
    */
    if (ioctl(fd, RTC_RD_TIME, &rtc) < 0) {
    perror("read rtc time");
    return 0;
    }
    sys_time = time(0);
    if (sys_time == (time_t)-1) {
    perror("read system time");
    return 0;
    }

    /* convert rtc_time to normal arithmetic-friendly form,
    * updating tm.tm_wday as used by asctime().
    */
    memset(&tm, 0, sizeof tm);
    tm.tm_sec = rtc.tm_sec;
    tm.tm_min = rtc.tm_min;
    tm.tm_hour = rtc.tm_hour;
    tm.tm_mday = rtc.tm_mday;
    tm.tm_mon = rtc.tm_mon;
    tm.tm_year = rtc.tm_year;
    tm.tm_isdst = rtc.tm_isdst; /* stays unspecified? */
    rtc_time = mktime(&tm);

    if (rtc_time == (time_t)-1) {
    perror("convert rtc time");
    return 0;
    }

    if (verbose) {
    if (!rtc_is_utc) {
    printf("\ttzone = %ld\n", timezone);
    printf("\ttzname = %s\n", tzname[daylight]);
    gmtime_r(&rtc_time, &tm);
    }
    printf("\tsystime = %ld, (UTC) %s",
    (long) sys_time, asctime(gmtime(&sys_time)));
    printf("\trtctime = %ld, (UTC) %s",
    (long) rtc_time, asctime(&tm));
    }

    return 1;
    }

    static int setup_alarm(int fd, time_t *wakeup)
    {
    struct tm *tm;
    struct rtc_wkalrm wake;

    tm = gmtime(wakeup);

    wake.time.tm_sec = tm->tm_sec;
    wake.time.tm_min = tm->tm_min;
    wake.time.tm_hour = tm->tm_hour;
    wake.time.tm_mday = tm->tm_mday;
    wake.time.tm_mon = tm->tm_mon;
    wake.time.tm_year = tm->tm_year;
    wake.time.tm_wday = tm->tm_wday;
    wake.time.tm_yday = tm->tm_yday;
    wake.time.tm_isdst = tm->tm_isdst;

    /* many rtc alarms only support up to 24 hours from 'now' ... */
    if ((rtc_time + (24 * 60 * 60)) > *wakeup) {
    if (ioctl(fd, RTC_ALM_SET, &wake.time) < 0) {
    perror("set rtc alarm");
    return 0;
    }
    if (ioctl(fd, RTC_AIE_ON, 0) < 0) {
    perror("enable rtc alarm");
    return 0;
    }

    /* ... so use the "more than 24 hours" request only if we must */
    } else {
    /* avoid an extra AIE_ON call */
    wake.enabled = 1;

    if (ioctl(fd, RTC_WKALM_SET, &wake) < 0) {
    perror("set rtc wake alarm");
    return 0;
    }
    }

    return 1;
    }

    static void suspend_system(const char *suspend)
    {
    FILE *f = fopen("/sys/power/state", "w");

    if (!f) {
    perror("/sys/power/state");
    return;
    }

    fprintf(f, "%s\n", suspend);
    fflush(f);

    /* this executes after wake from suspend */
    fclose(f);
    }

    int main(int argc, char **argv)
    {
    static char *devname = "rtc0";
    static unsigned seconds = 0;
    static char *suspend = "standby";

    int t;
    int fd;
    time_t alarm = 0;

    progname = strrchr(argv[0], '/');
    if (progname)
    progname++;
    else
    progname = argv[0];
    if (chdir("/dev/") < 0) {
    perror("chdir /dev");
    return 1;
    }

    while ((t = getopt(argc, argv, "d:lm:s:t:uVv")) != EOF) {
    switch (t) {

    case 'd':
    devname = optarg;
    break;

    case 'l':
    rtc_is_utc = 0;
    break;

    /* what system power mode to use? for now handle only
    * standardized mode names; eventually when systems define
    * their own state names, parse /sys/power/state.
    *
    * "on" is used just to test the RTC alarm mechanism,
    * bypassing all the wakeup-from-sleep infrastructure.
    */
    case 'm':
    if (strcmp(optarg, "standby") == 0
    || strcmp(optarg, "mem") == 0
    || strcmp(optarg, "disk") == 0
    || strcmp(optarg, "on") == 0
    ) {
    suspend = optarg;
    break;
    }
    printf("%s: unrecognized suspend state '%s'\n",
    progname, optarg);
    goto usage;

    /* alarm time, seconds-to-sleep (relative) */
    case 's':
    t = atoi(optarg);
    if (t < 0) {
    printf("%s: illegal interval %s seconds\n",
    progname, optarg);
    goto usage;
    }
    seconds = t;
    break;

    /* alarm time, time_t (absolute, seconds since 1/1 1970 UTC) */
    case 't':
    t = atoi(optarg);
    if (t < 0) {
    printf("%s: illegal time_t value %s\n",
    progname, optarg);
    goto usage;
    }
    alarm = t;
    break;

    case 'u':
    rtc_is_utc = 1;
    break;

    case 'v':
    verbose++;
    break;

    case 'V':
    printf("%s: version %s\n", progname, VERSION);
    break;

    default:
    usage:
    printf("usage: %s [options]"
    "\n\t"
    "-d rtc0|rtc1|...\t(select rtc)"
    "\n\t"
    "-l\t\t\t(RTC uses local timezone)"
    "\n\t"
    "-m standby|mem|...\t(sleep mode)"
    "\n\t"
    "-s seconds\t\t(seconds to sleep)"
    "\n\t"
    "-t time_t\t\t(time to wake)"
    "\n\t"
    "-u\t\t\t(RTC uses UTC)"
    "\n\t"
    "-v\t\t\t(verbose messages)"
    "\n\t"
    "-V\t\t\t(show version)"
    "\n",
    progname);
    return 1;
    }
    }

    if (!alarm && !seconds) {
    printf("%s: must provide wake time\n", progname);
    goto usage;
    }

    /* REVISIT: if /etc/adjtime exists, read it to see what
    * the util-linux version of hwclock assumes.
    */
    if (rtc_is_utc == -1) {
    printf("%s: assuming RTC uses UTC ...\n", progname);
    rtc_is_utc = 1;
    }

    /* this RTC must exist and (if we'll sleep) be wakeup-enabled */
    fd = open(devname, O_RDONLY);
    if (fd < 0) {
    perror(devname);
    return 1;
    }
    if (strcmp(suspend, "on") != 0 && !may_wakeup(devname)) {
    printf("%s: %s not enabled for wakeup events\n",
    progname, devname);
    return 1;
    }

    /* relative or absolute alarm time, normalized to time_t */
    if (!get_basetimes(fd))
    return 1;
    if (verbose)
    printf("alarm %ld, sys_time %ld, rtc_time %ld, seconds %u\n",
    alarm, sys_time, rtc_time, seconds);
    if (alarm) {
    if (alarm < sys_time) {
    printf("%s: time doesn't go backward to %s",
    progname, ctime(&alarm));
    return 1;
    }
    alarm += sys_time - rtc_time;
    } else
    alarm = rtc_time + seconds + 1;
    if (setup_alarm(fd, &alarm) < 0)
    return 1;

    sync();
    printf("%s: wakeup from \"%s\" using %s at %s",
    progname, suspend, devname,
    ctime(&alarm));
    fflush(stdout);
    usleep(10 * 1000);

    if (strcmp(suspend, "on") != 0)
    suspend_system(suspend);
    else {
    unsigned long data;

    do {
    t = read(fd, &data, sizeof data);
    if (t < 0) {
    perror("rtc read");
    break;
    }
    if (verbose)
    printf("... %s: %03lx\n", devname, data);
    } while (!(data & RTC_AF));
    }

    if (ioctl(fd, RTC_AIE_OFF, 0) < 0)
    perror("disable rtc alarm interrupt");

    close(fd);
    return 0;
    }

    This patch:

    Make rtc-cmos do the relevant magic so this RTC can wake the system from a
    sleep state. That magic comes in two basic flavors:

    - Straightforward: enable_irq_wake(), the way it'd work on most SOC chips;
    or generally with system sleep states which don't disable core IRQ logic.

    - Roundabout, using non-IRQ platform hooks. This is needed with ACPI and
    one almost-clone chip which uses a special wakeup-only alarm. (That's
    the RTC used on Footbridge boards, FWIW, which don't do PM in Linux.)

    A separate patch implements those hooks for ACPI platforms, so that rtc_cmos
    can issue system wakeup events (and its sysfs "wakealarm" attribute works on
    at least some systems).

    Signed-off-by: David Brownell
    Cc: Alessandro Zummo
    Cc: Len Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • - vr41xx_rtc_read_alarm() reports alarm enabled.
    - vr41xx_rtc_set_alarm() sets alarm disable/enable by rtc_wkalrm.enabled.

    Signed-off-by: Yoichi Yuasa
    Acked-by: Alessandro Zummo
    Acked-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yoichi Yuasa
     
  • Signed-off-by: Alessandro Zummo
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alessandro Zummo
     
  • Fix a goof in the revised classdev support for RTCs: make sure the /dev
    node info is ready before the device is registered, not after. Otherwise
    the /sys/class/rtc/rtcN/dev attribute won't be created and then udev won't
    have the information it needs to create the /dev/rtcN node.

    Signed-off-by: David Brownell
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • RTC class suspend/resume support, re-initializing the system clock on resume
    from the clock used to initialize it at boot time.

    - The reinit-on-resume is hooked to the existing RTC_HCTOSYS config
    option, on the grounds that a clock good enough for init must also
    be good enough for re-init.

    - Inlining a version of the code used by ARM, to save and restore the
    delta between a selected RTC and the current system wall-clock time.

    - Removes calls to that ARM code from AT91, OMAP1, and S3C RTCs. This
    means that systems using those RTCs across suspend/resume will likely
    want to change their kernel configs to enable RTC_HCTOSYS.

    If HCTOSYS isn't using a second RTC (with battery?), this changes the
    system's initial date from Jan 1970 to the epoch this hardware uses:
    1998 for AT91, 2000 for OMAP1 (assuming no split power mode), etc.

    This goes on top of the patch series removing "struct class_device" usage
    from the RTC framework. That's all needed for class suspend()/resume().

    Signed-off-by: David Brownell
    Acked-by: Greg Kroah-Hartman
    Acked-By: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Finish converting the RTC framework so it no longer uses class_device.

    Signed-off-by: David Brownell
    Acked-by: Greg Kroah-Hartman
    Acked-By: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • This simplifies the RTC procfs support by removing the class_interface that
    hooks it into the rtc core. If it's configured, then sysfs support is now
    part of the RTC core, and is never a separate module.

    It also removes the class_interface hook, now that its last remaining user is
    gone. (That API is usable only with a "struct class_device".)

    It's another step towards being able to remove "struct class_device".

    Signed-off-by: David Brownell
    Acked-by: Greg Kroah-Hartman
    Acked-By: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • This simplifies the RTC sysfs support by removing the class_interface that
    hooks it into the rtc core. If it's configured, then sysfs support is now
    part of the RTC core, and is never a separate module.

    It's another step towards being able to remove "struct class_device".

    Signed-off-by: David Brownell
    Acked-by: Greg Kroah-Hartman
    Acked-By: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • This patch removes class_device from the programming interface that the RTC
    framework exposes to the rest of the kernel. Now an rtc_device is passed,
    which is more type-safe and streamlines all the relevant code.

    Signed-off-by: David Brownell
    Acked-by: Greg Kroah-Hartman
    Acked-By: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • This simplifies the /dev support by removing a superfluous class_device (the
    /sys/class/rtc-dev stuff) and the class_interface that hooks it into the rtc
    core. Accordingly, if it's configured then /dev support is now part of the
    RTC core, and is never a separate module.

    It's another step towards being able to remove "struct class_device".

    [bunk@stusta.de: drivers/rtc/rtc-dev.c should #include "rtc-core.h"]
    Signed-off-by: David Brownell
    Acked-by: Greg Kroah-Hartman
    Acked-By: Alessandro Zummo
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Signed-off-by: Dale Farnsworth.org
    Cc: Alessandro Zummo
    Cc: David Brownell
    Cc: Jean Delvare
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dale Farnsworth
     
  • Add an RTC driver for Ricoh RS5C313 RTC chip.

    [akpm@linux-foundation.org: Zillions of coding-style fixes]
    [akpm@linux-foundation.org: build fixes]
    Signed-off-by: Nobuhiro Iwamatsu
    Cc: Alessandro Zummo
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nobuhiro Iwamatsu
     

08 May, 2007

1 commit

  • This patch implements the driver necessary use the Analog Devices Blackfin
    processor's on-chip RTC controller.

    Signed-off-by: Bryan Wu
    Cc: Alessandro Zummo
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wu, Bryan
     

03 Apr, 2007

1 commit

  • Lockdep reported cmos_suspend() and cmos_resume() calling rtc_update_irq()
    with IRQs enabled; not allowed.

    Also fix problems seen on some hardware, whereby false alarm IRQs could be
    reported (primarily to userspace); and update two comments to match changes
    in ACPI. Those make up most of this patch, by volume.

    Signed-off-by: David Brownell
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     

05 Mar, 2007

3 commits


02 Mar, 2007

1 commit

  • Fix an oops on the rtc_device_unregister() path by waiting until the last
    moment before nulling the rtc->ops vector. Fix some potential oopses by
    having the rtc_class_open()/rtc_class_close() interface increase the RTC's
    reference count while an RTC handle is available outside the RTC framework.

    Signed-off-by: David Brownell
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     

21 Feb, 2007

3 commits

  • Various bug fixes to the at91rm9200 RTC:

    - alarm: setalarm() should pay attention to the "enabled" flag

    - init: cleaner handling of the wakeup flags, which cpu init should
    really have set up. Doing it here is just a workaround.

    - linkage: since the at91_rtc driver probe() routine is in the init
    section, it should use platform_driver_probe() instead of leaving
    that pointer around in the driver struct after init section removal.

    - linkage: likewise, remove() belongs in the exit section.

    Among other things, the init and alarm changes ensure that this driver
    handles the new sysfs "wakealarm" attribute properly.

    Signed-off-by: David Brownell
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Some rtc-sa1100 bugfixes:

    - The read_alarm() method reports the rtc_wkalrm.enabled field properly.
    This patch is already in the handhelds.org tree.

    - And the set_alarm() method now handles that flag correctly, rather than
    making mismatched {en,dis}able_irq_wake() calls, which trigger runtime
    warning messages. (Those calls are best made in suspend/resume methods.)

    Note that while this SA1100/PXA RTC is fully capable of waking those ARM
    processors from sleep states, that mechanism isn't properly supported on
    either processor family, or in this driver. Some boards have board-specific
    PM glue providing partial workarounds for the weak generic PM support.

    Signed-off-by: David Brownell
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • This option is useful for all of the X86 subarchs afaik (and especially
    X86_GENERICARCH).

    Signed-off-by: Dave Jones
    Acked-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Jones
     

15 Feb, 2007

1 commit

  • The obsolete SA_xxx interrupt flags have been used despite the scheduled
    removal. Fixup the remaining users.

    Signed-off-by: Thomas Gleixner
    Acked-by: Ingo Molnar
    Cc: "Luck, Tony"
    Cc: Roman Zippel
    Cc: Geert Uytterhoeven
    Cc: Jeff Garzik
    Cc: Wim Van Sebroeck
    Cc: Roland Dreier
    Cc: Alessandro Zummo
    Cc: James Bottomley
    Cc: Greg KH
    Cc: Dave Airlie
    Cc: James Simmons
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     

14 Feb, 2007

1 commit


13 Feb, 2007

3 commits

  • Many struct file_operations in the kernel can be "const". Marking them const
    moves these to the .rodata section, which avoids false sharing with potential
    dirty data. In addition it'll catch accidental writes at compile time to
    these shared resources.

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     
  • This adds a new "wakealarm" sysfs attribute to RTC class devices which support
    alarm operations and are wakeup-capable:

    - It reads as either empty, or the scheduled alarm time as seconds
    since the POSIX epoch. (That time may already have passed, since
    nothing currently enforces one-shot alarm semantics.)

    - It can be written with an alarm time in the future, again seconds
    since the POSIX epoch, which enables the alarm.

    - It can be written with an alarm time not in the future (such as 0,
    the start of the POSIX epoch) to disable the alarm.

    Usage examples (some need GNU date) after "cd /sys/class/rtc/rtcN":

    alarm after 10 minutes:
    # echo $(( $(cat since_epoch) + 10 * 60 )) > wakealarm
    alarm tuesday evening 10pm:
    # date -d '10pm tuesday' "+%s" > wakealarm
    disable alarm:
    # echo 0 > wakealarm

    This resembles the /proc/acpi/alarm file in that nothing happens when the
    alarm triggers ... except possibly waking the system from sleep. It's also
    like that in a nasty way: not much can be done to prevent one task from
    clobbering another task's alarm settings.

    It differs from that file in that there's no in-kernel date parser.

    Note that a few RTCs ignore rtc_wkalrm.enabled when setting alarms, or aren't
    set up correctly, so they won't yet behave with this attribute.

    Signed-off-by: David Brownell
    Acked-by: Pavel Machek
    Cc: Alessandro Zummo
    Cc: Greg KH
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Change __init to __devinit in rtc drivers' probe functions.

    Resolves MODPOST warnings:

    WARNING: drivers/rtc/rtc-ds1553.o - Section mismatch: reference to
    .init.text:ds1553_rtc_probe from .data.rel between 'ds1553_rtc_driver' (at
    offset 0x0) and 'ds1553_nvram_attr'
    WARNING: drivers/rtc/rtc-ds1742.o - Section mismatch: reference to
    .init.text:ds1742_rtc_probe from .data.rel between 'ds1742_rtc_driver' (at
    offset 0x0) and 'ds1742_nvram_attr'

    Signed-off-by: Prarit Bhargava
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Prarit Bhargava
     

12 Feb, 2007

1 commit

  • This is an "RTC framework" driver for the "CMOS" RTCs which are standard on
    PCs and some other platforms. That's MC146818 compatible silicon.
    Advantages of this vs. drivers/char/rtc.c (use one _or_ the other, only
    one will be able to claim the RTC irq) include:

    - This leverages both the new RTC framework and the driver model; both
    PNPACPI and platform device modes are supported. (A separate patch
    creates a platform device on PCs where PNPACPI isn't configured.)

    - It supports common extensions like longer alarms. (A separate patch
    exports that information from ACPI through platform_data.)

    - Likewise, system wakeup events use "real driver model support", with
    policy control via sysfs "wakeup" attributes and and using normal rtc
    ioctls to manage wakeup. (Patch in the works. The ACPI hooks are
    known; /proc/acpi/alarm can vanish. Making it work with EFI will
    be a minor challenge to someone with e.g. a MiniMac.)

    It's not yet been tested on non-x86 systems, without ACPI, or with HPET.
    And the RTC framework will surely have teething pains on "mainstream"
    PC-based systems (though must embedded Linux systems use it heavily), not
    limited to sorting out the "/dev/rtc0" issue (udev easily tweaked). Also,
    the ALSA rtctimer code doesn't use the new RTC API.

    Otherwise, this should be a no-known-regressions replacement for the old
    drivers/char/rtc.c driver, and should help the non-embedded distros (and
    the new timekeeping code) start to switch to the framework.

    Note also that any systems using "rtc-m48t86" are candidates to switch over
    to this more functional driver; the platform data is different, and the way
    bytes are read is different, but otherwise those chips should be compatible.

    [akpm@osdl.org: sparc32 fix]
    [akpm@osdl.org: sparc64 fix]
    Signed-off-by: David Brownell
    Cc: Woody Suwalski
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     

10 Feb, 2007

2 commits

  • The usage of the century bit was inverted on 2.6.19 following to PCF8563's
    description, but it was not match to usage suggested by RTC8564's
    datasheet. Anyway what MO_C=1 means can vary on each platform. This patch
    is to detect its polarity in get_datetime routine. The default value of
    c_polarity is 0 (MO_C=1 means 19xx) so that this patch does not change
    current behavior even if get_datetime was not called before set_datetime.

    Signed-off-by: Atsushi Nemoto
    Cc: Jean-Baptiste Maneyrol
    Cc:
    Cc: David Brownell
    Cc: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Atsushi Nemoto
     
  • Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     

27 Jan, 2007

1 commit


23 Jan, 2007

1 commit