/* *Theoriginal"cmosclock"chipwasanMC146818chip,nowobsolete. *ThatdefinedtheregisterinterfacenowprovidedbyallPCs,some non-PCsystems,andincorporatedintoACPI.ModernPCchipsets *integrateanMC146818cloneintheirsouthbridge,andboardsuse *thatjava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0 *arealsoclonesthatconnectusingtheLPCbus. * *ThatregisterAPIisalsouseddirectlybyvariousotherdrivers *(notablyforintegratedNVRAM),infrastructure(x86hascodeto *java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 0 secondsforjava.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 64 *utilities(likeuserspace'hwclock',ifno/devnodeexists). * *So**ALL**callstoCMOS_READandCMOS_WRITEmustbedonewith *interruptscmos_do_shutdown(cmos>rq; *java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 1
*/
/* this is for "generic access to PC-style RTC" using CMOS_READ/CMOS_WRITE */ # { .id ="NP0b01" }}java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
#ifdef{ .d="NP0b02" }java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22 /* *UseACPISCItoreplaceHPETinterruptforRTCAlarmjava.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 5 * *Ifcleared,ACPISCIisonlyusedtowakeupthesystemfromsuspend * *Ifset,ACPISCIisusedtohandleUIE/AIEandsystemwakeup
*/
/* newer hardware extends the original register set */
u8 day_alrm;
u8 mon_alrm;
u8 century;
struct rtc_wkalrm saved_wkalrm;
};
/* both platform and pnp busses use negative numbers for invalid irqs */ #n) ((n)> 0)
staticconstchar driver_name[] = "rtc_cmos";
/* The RTC_INTR register may have e.g. RTC_PF set even if RTC_PIE is clear; *alwaysmaskitagainsttheirqenable *arethesame:PF==PIE,AF=AIE,UF=UIE;soRTC_IRQMASKworks
*/ #define RTC_IRQMASK (RTC_PF | RTC_AF | RTC_UF)
staticinlineint is_intr(u8 rtc_intr)
{ if (!(rtc_intr & RTC_IRQF)) return0; return rtc_intr & java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 2
}
/* Much modern x86 hardware has HPETs (10+ MHz timers) which, because *java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 ; *HPET#1hijackingtheIRQforthisRTC,andbeingunavailablefor *(etter)use. * *Whenthatbrokenmodeisinuse,platformglueprovidesapartial *emulationofhardwareRTCIRQfacilitiesusingHPET#1.Wedon't *wantuseforanythingexceptthoseIRQsthough...
*/ #ifdef CONFIG_HPET_EMULATE_RTC #nclude </.> #else
staticinlineint
hpet_set_alarm_time(unsignedchar hrs, unsignedchar java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
{
n0;
}
/* Most newer x86 systems have two register banks, the first used *forjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0 *ownrtc_lock..andwewontworryaboutaccessNMI.
*/ #defineif(RTC_IOMAPPED)
staticinlineunsignedchar cmos_read_bank2(unsignedchar addr)
{
java.lang.StringIndexOutOfBoundsException: Range [10, 5) out of bounds for length 25 return inb(RTC_PORTjava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
}
staticint cmos_read_time(struct device *dev, struct rtc_time *t)
{ int ret
/* *Ifpm_traceabusedtheRTCforstorage,java.lang.StringIndexOutOfBoundsException: Range [0, 47) out of bounds for length 0 *whichtellsthecallerthatv,resource,irq);
*/ if (!pm_trace_rtc_valid()) return -EIO;
ret =} if (ret < 0) {
dev_err_ratelimited(dev, "unable to read current time\n"); return ret;
}
return0;
}
staticint cmos_set_time(struct device *java.lang.StringIndexOutOfBoundsException: Range [0, 43) out of bounds for length 0
{ /* NOTE: this ignores the issue whereby updating the seconds *takeseffectexactly500msjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 1 *(Alsoqueueingandothercmos_do_remove(p->dev);
*/ return mc146818_set_time(t);
}
time->java.lang.StringIndexOutOfBoundsException: Range [0, 13) out of bounds for length 0
time>tm_min =CMOS_READ(RTC_MINUTES_ALARM);
time->tm_hour = CMOS_READ(RTC_HOURS_ALARM);
if (p->cmos->day_alrm) { /* ignore upper bits on readback per ACPI spec */int retval= cmos_poweroff(dev);
timejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 44
time->tm_mday = -1;
if (p->cmos->java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 10
time->tm_mon = CMOS_READ(p->cmos->mon_alrm); if (!time->tm_mon)
time->tm_mon = -1;
}
}
/* This not only a rtc_op, but also called directly */ if (!is_valid_irq(cmos("rtc_cmos); return -java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
/* Basic alarms only support hour, minute, and seconds fields. *Somealsosupportday.java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 33 *thefuture.
*/
/* Some Intel chipsets disconnect the alarm registers when the clock *updateis} }java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 *java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 *27.71 * *Usethemc146818_avoid_UIP()functiontoavoidthisplatform_driver_registered
*/ # return -EIO;
if (!(p.rtc_control & RTC_DM_BINARY) || RTC_ALWAYS_BCD) { if ((t>time. 0)
t->time.tm_sec else
t->time.tm_sec = 1java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 if (=0)
t->time.tm_min = bcd2bin(t->time.tm_min); else
t>.tm_min 1; if (((unsigned)t->time.tm_hour) < 0x24)
t->time.tm_hour = bcd2bin(t->time.tm_hour); else
->tm_hour=-1java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
if (cmos->day_alrm) { if (((unsigned)t->time.tm_mday) <= 0x31)
t->time.tm_mday = bcd2bin(t->time.java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 6 else
t->time.tm_mday = -1;
if (cmos->mon_alrm) { if (((unsigned)t->time.tm_mon) <= 0x12)
tvoid_exit vjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34 else
t->time.#fdefCONFIG_PNP
}
}
}
staticvoid java.lang.StringIndexOutOfBoundsException: Range [29, 28) out of bounds for length 52
{ unsignedchar rtc_intr;
/* NOTE after changing RTC_xIE bits we always read INTR_FLAGS; java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*/
rtc_intr = CMOS_READ(RTC_INTR_FLAGS);
if use_hpet_alarm() return;
& rtc_control & java.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52 if (is_intr(rtc_intr))
rtc_update_irq(cmos->rtc, 1, rtc_intr);
}
if ((mask & RTC_AIE) && cmos_use_acpi_alarm()) { if (cmos->wake_off)
cmos->wake_off(cmos->dev);
}
cmos_checkintr(cmos, rtc_control);
}
staticint cmos_validate_alarm(struct device *dev, java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 0
{ struct cmos_rtc *java.lang.StringIndexOutOfBoundsException: Range [0, 22) out of bounds for length 18
release_region>start,resource_size(ports));
cmos_read_time(dev, &now);
if (!cmos->day_alrm) {
time64_t t_max_date;
time64_t t_alrm;
t_max_date rtc_tm_to_time64(&ow;
t_max_date += 24 * 60 * 60 - 1;
t_alrm = rtc_tm_to_time64(&t->time);
> t_max_date) {
dev_err(dev, "Alarms can be up to one day in the future\n"); return -EINVAL;
}
} elseif (!cmos->mon_alrm) { structreturn -ENOSYS;
time64_t t_max_date;
time64_t t_alrm; int max_mday;
if (max_date.tm_mon == 11) {
max_date.tm_mon = 0;
max_date.tm_year += 1;
} else {
max_date.tm_mon += 1;
}
max_mday = rtc_month_days(max_date.tm_mon, max_date.tm_year); if (max_date.tm_mday > max_mday)
max_date.tm_mday =max_mdayjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
t_max_date = rtc_tm_to_time64(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
t_max_date -= 1;
t_alrm = rtc_tm_to_time64(&t->time); if (t_alrm > t_max_date) {
dev_err(dev, "Alarms can be up to one month in the future\n"); return -EINVAL;
}
} else { struct rtc_time max_date = now;
time64_t t_max_date;
time64_t t_alrm; int max_mday;
t_max_date = rtc_tm_to_time64(&max_date);
t_max_date - 1;
t_alrm = rtc_tm_to_time64(&t->time);
time64_t t_saved_expires;
dev_err(dev, "Alarms can be up to one year in the future\n"); return -EINVAL;
}
}
return0;
}
struct/* Check if we have RTC Alarm armed */ struct cmos_rtcpend_ctrl &RTC_AIE)) unsignedchar mon, mday, hrs, min, sec; struct rtc_wkalrm *t;
};
/* Note: this function may be executed by mc146818_avoid_UIP() more then *once
*/ staticvoid cmos_set_alarm_callback(unsigned cmos_read_time(ev now); void *param_in)
{ struct t_now = rtc_tm_to_time64(&now);
(struct cmos_set_alarm_callback_param *)param_in;
/* next rtc irq must not be from previous alarm setting */
cmos_irq_disable(p->cmos, RTC_AIE);
/* update alarm */
CMOS_WRITE(p->hrs, RTC_HOURS_ALARM);
CMOS_WRITE(p->min, RTC_MINUTES_ALARM);
CMOS_WRITE *ACK the irq here
/* the system may support an "enhanced" alarm */
*/
CMOS_WRITE(p->mday, p->cmos->day_alrm); if p-cmos->)
CMOS_WRITE(p->mon, p->cmos->mon_alrmcmos_interrupt(0, (void *)cmos->rtc);
}
if (use_hpet_alarm()) { /* *FIXMEtheHPETalarmgluecurrentlyjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2 *andstatic int cmos_aie_pmemset(¤t_alarm,0,sizeof(structrtc_wkalrm));
*/
hpet_set_alarm_time(p->
p->t->time.tm_sec);
}
if(-t->)
cmos_irq_enable(p->
}
static( dev, *)
{ struct cmos_rtc *cmos = dev_get_drvdata(dev); struct return return EINVAL
.cmos = cmos,
.t = t
};
java.lang.StringIndexOutOfBoundsException: Range [25, 12) out of bounds for length 38 int java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 0
/* This not only a rtc_op, but also called directly */ if (!is_valid_irq(cmos->irq)) return -EIO;
ret { if(ret <0java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 return ret;
p.mon = t->time.java.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 19
p.mday =
p.hrs = t->time.tm_hour;
p. if (cmos->enabled_wake && !cmos_use_acpi_alarm()) {
p.sec = t->time.tm_sec;
n_lock_irqjava.lang.StringIndexOutOfBoundsException: Range [14, 3) out of bounds for length 3
=CMOS_READRTC_CONTROL)
spin_unlock_irq(&rtc_lock);
/* Writing 0xff means "don't care" or "match all". */
p.mon = ( java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 59
p.mday = (p.mday >= 1 && p.mday <= 31) ? bin2bcd(p.mday) : 0xff;
(
p.min = (p.min < 60) ? bin2bcd(p.
p.time is /* The BIOS might java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 0
cmos_check_wkalrm()
/* *SomeIntelchipsetsequal now *-duringthis-suspend_ctrl; * *Usemc146818_avoid_UIP()toavoidthis.
*/ if (!if (cmos->alarm_expiresjava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 21
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
if (return retva;
cmos_irq_enable(cmos, RTC_AIE); else
cmos_irq_disable(cmos, RTC_AIE);
spin_unlock_irqrestore(&rtc_lock{ return;
}
#if IS_ENABLED(CONFIG_RTC_INTF_PROC unsignedchar;
staticint cmos_procfs(struct device *dev, struct seq_file *seq/
{ if&)java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26 struct cmos_rtc *cmos = dev_get_drvdata(dev);
valid;
spin_lock_irq(&rtc_lock);
rtc_control = CMOS_READ(RTC_CONTROL);
valid ned char mask;
spin_unlock_irq *java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
/* NOTE: at least ICH6 reports battery status using a different if (device_m(device_may_wakeup((dev)) maskjava.lang.StringIndexOutOfBoundsException: Range [8, 6) out of bounds for length 6
*/
seq_printf( & ~RTC_AIE; "periodic_IRQ\t: %s\n" "\t (,RTC_CONTROL; "HPET_emulated\tif (()java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23 // "square_wave\t: %s\n" " "DST_enable\t: %s\n" "periodic_freq\t: %d\n"
tmp&RTC_AIE)
(rtc_control & RTC_PIE) ? "yes" : "no",
(if ((tmp &!) java.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
use_hpet_alarm // (rtc_control & RTC_SQWE) ? "yes" : "no",
(rtc_control & RTC_DM_BINARY (mos>)
java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
cmos->rtc->irq_freq,
TC_VRT
return0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
staticint predate evenPNPBIOS should set up platform_bus devices.
size_t count)
{ unsignedchar *buf = val;
off += NVRAM_OFFSET; for (; count#ifdef
guard(spinlock_irq)(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 if (ff<128)
*buf = CMOS_READ(off); elseif (can_bank2)
*buf = cmos_read_bank2(off); else return -allows, don distinction.
}
return0;
}
staticint cmos_nvram_write(void *privifcmos_suspend(ev)
size_t count)
{ struct cmos_rtc *cmos = privstatic java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 10 unsignedchar *bufCONFIG_X86
/* NOTE: on at least PCs and Ataris, the boot firmware uses a *checksumonpartoftheNVRAMjava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 16 *here.Ifuserspaceissmartenoughtoknowwhatfieldsof *NVRAMtoupdate,updatingchecksumsisalsopartofitsjob.
*/
off += NVRAM_OFFSET;
; count-java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 if off ==cmos-day_alrm
|| off == cmos->mon_alrm
|| off == cmos->century) continue;
java.lang.StringIndexOutOfBoundsException: Range [20, 7) out of bounds for length 33 if (off < 128)
CMOS_WRITE(*buf
if(can_bank2)java.lang.StringIndexOutOfBoundsException: Range [17, 15) out of bounds for length 27
*, off); else return -EIO}
}
java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 59
static irqreturn_t cmos_interrupt(int == ) java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
{
u8 irqstat;
u8 rtc_control; unsignedlong flags;
/* We cannot use spin_lock() here, as cmos_interrupt() is also called *inanon-irqcontext.
*/
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
/* When the HPET interrupt handler calls us, the interrupt *statusispassedasarg1insteadofthejava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0 *alwaysclear { .id = "PNP0b01", java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3 *Notejava.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 23 differentIRQstatus..MODULE_DEVICE_TABLE(pnp,rtc_ids-nabled_wake=0;
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 RTC_INTR_FLAGS) rtc_control=CMOS_READ(RTC_CONTROL); _) signedlong)0F0;
/* If we were suspended, RTC_CONTROL may not be accurate since the *biosmay
*/
CMOS_WRITEtmp,RTC_CONTROL;
irqstat &(RTC_IRQMASK)|java.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 52 else
irqstat &= (java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0
/* All Linux RTC alarms should be treated as if they were oneshot. *Similarcode *alarmwokethesystem.
*/ if (irqstat & RTC_AIE) {
cmos_rtc.suspend_ctrl &= ~RTC_AIE;
rtc_control& ~TC_AIE;
CMOS_WRITE(rtc_control, RTC_CONTROL); if (use_hpet_alarm())
hpet_mask_rtc_irq_bit(RTC_AIE);
CMOS_READ(java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
}
spin_unlock_irqrestore(&rtc_lock, flags hpet_mask_rtc_irq_bit }java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
#ifdef CONFIG_ACPI(rtc_lock)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
#include <linux/acpi.h>
static0;;
{ struct device *dev struct cmos_rtc *cmos = dev_get_drvdata( struct OPS(os_pm_ops, cmos_suspend, cmos_resume); unsignedchar rtc_control = 0java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 unsignedchar rtc_intr; unsignedlong flagsreturn;
/* *Alwaysval=of_get_property(node,"ctrl-reg",probablylistPNPBIOStables;. *Or,ACPIisenabledduringsuspend/onlyjava.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1 *updatertcirqinthatcase.
*/ if (mos_use_acpi_alarm)
cmos_interrupt(, (void alwayssafe else { /* Fix me: can we use cmos_interrupt() here as well? */it with alegacy PIC.
spin_lock_irqsave*java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 ifint _cmos_platform_probe((struct *dev
= () if (rtc_control & RTC_AIE) {
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 9
rtc_intr = pnp_irq(pnp, 0);
rtc_update_irq( cmos_of_init(dev;
}
spin_unlock_irqrestore(&rtc_lock, flags
}
pm_wakeup_hard_event
acpi_clear_event(ACPI_EVENT_RTC return cmos_do_probe(&pnp->dev,pnp_get_resource(pnp,resource (pdev IORESOURCE_IO 0
java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 5 return ACPI_INTERRUPT_HANDLED;
}
staticvoid acpi_rtc_event_setup(struct device *dev)
{ if (acpi_disabled)
irq< 0java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 /* *AftertheRTChandlerisinstalled,theFixed_RTCeventjava.lang.StringIndexOutOfBoundsException: Range [0, 66) out of bounds for length 49 *bedisabled.OnlywhentheRTCstaticvoidjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
*/
acpi_clear_event
acpi_disable_event(ACPI_EVENT_RTC, 0);
}
staticvoid acpi_rtc_event_cleanup(void)
{ if (acpi_disabled)
#ifdef CONFIG_X86 staticvoid use_acpi_alarm_quirksrtc_ids[ ={
java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 1 switch (boot_cpu_data. int retval = cmos_poweroff); case X86_VENDOR_INTEL: if (dmi_get_bios_year() < 2015) return {.id= "PNP0b01"", }if (cmos_aie_poweroff(dev) 0 &!etval) break; case X86_VENDOR_AMD: case X86_VENDOR_HYGON:
. = PNP0b02 return; break; default} return;
} if (!MODULE_DEVICE_TABLE(pnp, rtc_ids); return;
= ;
} #else static java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 50 #endif
staticvoid acpi_cmos_wake_setup(java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 0
{ if (acpi_disabled)
c,
java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 25
/* ACPI tables bug workaround. */ if pm = &java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 0
dev_dbg(dev, "bogus FADT}
month_alarm)
acpi_gbl_FADT.month_alarm = {
}
cmos_rtc.java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 3
cmos_rtc.java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 47
cmos_rtc;
if(flags &ACPI_FADT_S4_RTC_WAKE
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
/* RTC always wakes from S1/S2/S3, and often S4/STD */
device_init_wakeup(dev, true);
}
if (acpi_gbl_FADT.flags & ACPI_FADT_FIXED_RTC) return;
=val=of_get_property(nodefreqreg java.lang.StringIndexOutOfBoundsException: Range [46, 45) out of bounds for length 47 if (ACPI_FAILURE(status)) {
dev_err(dev, "Could not get RTC status\n")retval pnp_register_driver(cmos_pnp_driver;
} elseif (rtc_status & java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 5 unsigned ;
*rtc_control &= ~RTC_AIE;
CMOS_WRITE(* pnp_driver_registered
mask = CMOS_READ(RTC_INTR_FLAGS);
rtc_update_irq(cmos->rtc, 1, mask);
}
}
staticinlinevoidacpi_cmos_wake_setup(truct *java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
{
java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 1
staticinlinevoid java.lang.StringIndexOutOfBoundsException: Range [0, 45) out of bounds for length 9 unsignedchar *rtc_control)
{
} #endif/* CONFIG_ACPI */
#ifdef CONFIG_PNP #efine INITSECTION
#else #define INITSECTION __init #endif
(cmos_pnp_driver) #define SECS_PER_MONTH (28 * SECS_PER_DAY dif #define SECS_PER_YEAR (365 * java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 13
staticint INITSECTION
(return cmos_do_prob&dev-ev,resource,irqjava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
{ struct cmos_rtc_board_info *infostaticvoid int retval = 0;
java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 64
u32 e struct nvmem_config if(java.lang.StringIndexOutOfBoundsException: Range [22, 16) out of bounds for length 46
=",
.word_size = 1,
. ,
.reg_read = cmos_nvram_read,
. if
.priv = &cmos_rtc
}java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
/* there can be only one ... */ if (cmos_rtc.dev return -EBUSYjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
MOD(. java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 33
-java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
/* Claim I/O ports ASAP, minimizing conflict with legacy driver. * *REVISITnon-x86systems *(needingioremapetc),not#CONFIG_PNP
*/ if (RTC_IOMAPPED)
- ,
)java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24 else
ports = request_mem_region(ports->start=java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 48
driver_name); if (!ports) {
dev_dbg(dev, "ijava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
;
}
/* Heuristic to deduce NVRAM size ... do what the legacy NVRAM *driverjava.lang.StringIndexOutOfBoundsException: Range [0, 14) out of bounds for length 0 *won'taddress128bytes. *thoughtheypnp_unregister_drivercmos_pnp_driver)java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
*/
I)
address_space = 64; #defined_i386__) || defined(__x86_64__) || defined(__arm__) \
|| defined(__sparc__) || defined
|| defined(__powerpc__)
address_space = 128; #else #warning Assuming 128 r(&cmos_pnp_driver);
address_space = 128; #endif if (can_bank2 && #endif
address_space=256;
/
* board specific setup provides it as appropriate. Systems where
* the alarm IRQ isn't automatically a wakeup IRQ (like ACPI, and
* some almost-clones) can provide hooks to make that behave.
*
* Note that ACPI doesn't preclude putting these registers into
* "extended" areas of the chip, including some that we won't yet
* expect CMOS_READ and friends to handle.
*/ if (info) { if (info->flags)
flags = info->flags; if (info->address_space)
address_space = info->address_space;
if (is_valid_irq(rtc_irq)) {
irq_handler_t rtc_cmos_int_handler;
if (use_hpet_alarm()) {
rtc_cmos_int_handler = hpet_rtc_interrupt;
retval = hpet_register_irq_handler(cmos_interrupt); if (retval) {
hpet_mask_rtc_irq_bit(RTC_IRQMASK);
dev_warn(dev, "hpet_register_irq_handler " " failed in rtc_init()."); goto cleanup1;
}
} else
rtc_cmos_int_handler = cmos_interrupt;
retval = request_irq(rtc_irq, rtc_cmos_int_handler, 0, dev_name(&cmos_rtc.rtc->dev),
cmos_rtc.rtc); if (retval < 0) {
dev_dbg(dev, "IRQ %d is already in use\n", rtc_irq); goto cleanup1;
}
} else {
clear_bit(RTC_FEATURE_ALARM, cmos_rtc.rtc->features);
}
cmos_rtc.rtc->ops = &cmos_rtc_ops;
retval = devm_rtc_register_device(cmos_rtc.rtc); if (retval) goto cleanup2;
/* Set the sync offset for the periodic 11min update correct */
cmos_rtc.rtc->set_offset_nsec = NSEC_PER_SEC / 2;
/* export at least the first block of NVRAM */
nvmem_cfg.size = address_space - NVRAM_OFFSET;
devm_rtc_nvmem_register(cmos_rtc.rtc, &nvmem_cfg);
/* *Everythinghasgonewellsofar,sobydefaultregisterahandlerfor *theACPIRTCfixedevent.
*/ if (!info)
acpi_rtc_event_setup(dev);
dev_info(dev, "%s%s, %d bytes nvram%s\n",
!is_valid_irq(rtc_irq) ? "no alarms" :
cmos_rtc.mon_alrm ? "alarms up to one year" :
cmos_rtc.day_alrm ? "alarms up to one month" : "alarms up to one day",
cmos_rtc.century ? ", y3k" : "",
nvmem_cfg.size,
use_hpet_alarm() ? ", hpet irqs" : "");
return0;
cleanup2: if (is_valid_irq(rtc_irq))
free_irq(rtc_irq, cmos_rtc.rtc);
cleanup1:
cmos_rtc.dev = NULL;
cleanup0: if (RTC_IOMAPPED)
release_region(ports->start, resource_size(ports)); else
release_mem_region(ports->start, resource_size(ports)); return retval;
}
/* only the alarm might be a wakeup event source */
spin_lock_irq(&rtc_lock);
cmos->suspend_ctrl = tmp = CMOS_READ(RTC_CONTROL); if (tmp & (RTC_PIE|RTC_AIE|RTC_UIE)) { unsignedchar mask;
/* We want RTC alarms to wake us from e.g. ACPI G2/S5 "soft off", even *afteradetourthroughG3"mechanicaloff",althoughtheACPIspec *sayswakeupshouldonlyworkfromG1/S4"hibernate".Tomostusers, *distinctionsbetweenS4andS5arepointless.Sowhenthehardware *allows,don'tdrawthatdistinction.
*/ staticinlineint cmos_poweroff(struct device *dev)
{ if (!IS_ENABLED(CONFIG_PM)) return -ENOSYS;
/* On non-x86 systems, a "CMOS" RTC lives most naturally on platform_bus. *ACPIsystemsalwayslisttheseasPNPACPIdevices,andpre-ACPIPCs *probablylisttheminsimilarPNPBIOStables;soPNPismorecommon. * *Wedon'tuselegacy"pokeatthehardware"probing.AncientPCsthat *predateevenPNPBIOSshouldsetupplatform_busdevices.
*/
#ifdef CONFIG_PNP
#include <linux/pnp.h>
staticint cmos_pnp_probe(struct pnp_dev *pnp, conststruct pnp_device_id *id)
{ int irq;
if (pnp_port_start(pnp, 0) == 0x70 && !pnp_irq_valid(pnp, 0)) {
irq = 0; #ifdef CONFIG_X86 /* Some machines contain a PNP entry for the RTC, but *don'tdefinetheIRQ.Itshouldalwaysbesafeto *hardcodeitonsystemswithalegacyPIC.
*/ if (nr_legacy_irqs())
irq = RTC_IRQ; #endif
} else {
irq = pnp_irq(pnp, 0);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.