linux/arch/arm/mach-footbridge/isa-rtc.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 *  arch/arm/mach-footbridge/isa-rtc.c
   4 *
   5 *  Copyright (C) 1998 Russell King.
   6 *  Copyright (C) 1998 Phil Blundell
   7 *
   8 * CATS has a real-time clock, though the evaluation board doesn't.
   9 *
  10 * Changelog:
  11 *  21-Mar-1998 RMK     Created
  12 *  27-Aug-1998 PJB     CATS support
  13 *  28-Dec-1998 APH     Made leds optional
  14 *  20-Jan-1999 RMK     Started merge of EBSA285, CATS and NetWinder
  15 *  16-Mar-1999 RMK     More support for EBSA285-like machines with RTCs in
  16 */
  17
  18#define RTC_PORT(x)             (0x70+(x))
  19#define RTC_ALWAYS_BCD          0
  20
  21#include <linux/init.h>
  22#include <linux/mc146818rtc.h>
  23#include <linux/bcd.h>
  24#include <linux/io.h>
  25
  26#include "common.h"
  27
  28void __init isa_rtc_init(void)
  29{
  30        int reg_d, reg_b;
  31
  32        /*
  33         * Probe for the RTC.
  34         */
  35        reg_d = CMOS_READ(RTC_REG_D);
  36
  37        /*
  38         * make sure the divider is set
  39         */
  40        CMOS_WRITE(RTC_REF_CLCK_32KHZ, RTC_REG_A);
  41
  42        /*
  43         * Set control reg B
  44         *   (24 hour mode, update enabled)
  45         */
  46        reg_b = CMOS_READ(RTC_REG_B) & 0x7f;
  47        reg_b |= 2;
  48        CMOS_WRITE(reg_b, RTC_REG_B);
  49
  50        if ((CMOS_READ(RTC_REG_A) & 0x7f) == RTC_REF_CLCK_32KHZ &&
  51            CMOS_READ(RTC_REG_B) == reg_b) {
  52                /*
  53                 * We have a RTC.  Check the battery
  54                 */
  55                if ((reg_d & 0x80) == 0)
  56                        printk(KERN_WARNING "RTC: *** warning: CMOS battery bad\n");
  57        }
  58}
  59