cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

isa-rtc.c (1265B)


      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}