Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp5161460imm; Tue, 19 Jun 2018 06:09:06 -0700 (PDT) X-Google-Smtp-Source: ADUXVKI8CObLsnmCxZvasDNqX0hTOWC2n8auihYRwgOXUBvRbWLcuxv2d91FDx1G8ug6EqRIVC92 X-Received: by 2002:a17:902:be0d:: with SMTP id r13-v6mr18801751pls.299.1529413746864; Tue, 19 Jun 2018 06:09:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529413746; cv=none; d=google.com; s=arc-20160816; b=HPfqb6BJnTgdVqdmhFxRKCl//0EEyd42IKiNsnuLlBbAtogW+ctfkseVzOOOJtxVK3 v5vmfXcE1Y1nvSTIcl08H9M6oxA1vx5CSDjVZ/66TQqsdo8y5OZxni/hFZ5VZAafAlLy btXyJsTmu2CFnCXpC10DZ0ZlDkWs15bhjWxAuAJapjSn7NcuzWfml5ZD/o2ozt5eP/Xw dv13u4FlHJ9FKqBvV4mjbEacch8mpo/zL6cECedIh6+iagu0MJSO77gSKq63JIBDpWk1 8XL22OrW/EHtGWceg5J3VwLHyZiva/zjdco/Lr13iSWNlmY75Ns8aYB+ijiClYecndd6 xgHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=F11LDVCRzupfnMPnpyQebnjTSDMT3Xl1Tbdp9HWabug=; b=M7uXHsPmZNwNeBwoNDIGb+1NygiAxCjqD/M0GL0z2skk2imF0kzMRWTeUMYtzO9cuE GBCFYlJlSve3tQs0W4Ogi2U1/R0gnhEKbtdLiyxQyLXYhbxy0a0k1JB574Qj+F2lMtKY hgBke5N0Z2B1oeXhJVBj5i/BLhlT2xE7t1bkcoPEt9U2sl0o+6USNY2Al2uQPuGI0jwK f5y4ziiKioD1pWRMihGx7raiPVoiuii9izjyKrRZNJLIonVsrL9Mj7bYfFx3M6sG7glM v1y/awK3OwKewaI5LJkos7XelyZZNWqB5vGzr073ZXP9uVI2BhvxuSbT9xFmoIjJ36dY Smug== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a7-v6si14231193pgc.125.2018.06.19.06.08.52; Tue, 19 Jun 2018 06:09:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966426AbeFSNH6 (ORCPT + 99 others); Tue, 19 Jun 2018 09:07:58 -0400 Received: from icp-osb-irony-out4.external.iinet.net.au ([203.59.1.220]:25274 "EHLO icp-osb-irony-out4.external.iinet.net.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966111AbeFSNHz (ORCPT ); Tue, 19 Jun 2018 09:07:55 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A2DpAAAZ/yhb/0CaqnwNTxsBAQEBAwEBA?= =?us-ascii?q?QkBAQGFUoN5lR0BAQEGgQYplHsUgWSEdwKDCjUXAQIBAQEBAQEChj4BAQEDIwQ?= =?us-ascii?q?RQRALDQsCAiYCAlcGAQwGAgEBgyGBc6oebYFpMxqDYQFfg2uBaIELiFWBB4EPJ?= =?us-ascii?q?IJohC4vAYMYglUCh1ORTAgBjwmIHoUlK5JrA4IFMxoIKAiCfoIhF41hAUddkT8?= =?us-ascii?q?BAQ?= X-IPAS-Result: =?us-ascii?q?A2DpAAAZ/yhb/0CaqnwNTxsBAQEBAwEBAQkBAQGFUoN5lR0?= =?us-ascii?q?BAQEGgQYplHsUgWSEdwKDCjUXAQIBAQEBAQEChj4BAQEDIwQRQRALDQsCAiYCA?= =?us-ascii?q?lcGAQwGAgEBgyGBc6oebYFpMxqDYQFfg2uBaIELiFWBB4EPJIJohC4vAYMYglU?= =?us-ascii?q?Ch1ORTAgBjwmIHoUlK5JrA4IFMxoIKAiCfoIhF41hAUddkT8BAQ?= X-IronPort-AV: E=Sophos;i="5.51,243,1526313600"; d="scan'208";a="82220914" Received: from unknown (HELO [192.168.0.106]) ([124.170.154.64]) by icp-osb-irony-out4.iinet.net.au with ESMTP; 19 Jun 2018 21:07:51 +0800 Subject: Re: [PATCH 3/3] m68k: remove unused set_clock_mmss() helpers To: Arnd Bergmann , Paul Mackerras , Michael Ellerman , Geert Uytterhoeven , Joshua Thompson Cc: Mathieu Malaterre , Benjamin Herrenschmidt , linux-m68k@lists.linux-m68k.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, y2038@lists.linaro.org, Meelis Roos References: <20180618140518.2920804-1-arnd@arndb.de> <20180618140518.2920804-3-arnd@arndb.de> From: Greg Ungerer Message-ID: <38e7b63a-6eda-6f07-128a-eec16026f9b2@linux-m68k.org> Date: Tue, 19 Jun 2018 23:07:51 +1000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180618140518.2920804-3-arnd@arndb.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Arnd, On 19/06/18 00:05, Arnd Bergmann wrote: > Commit 397ac99c6cef ("m68k: remove dead timer code") removed set_rtc_mmss() > because it was unused in 2012. However, this was itself the only user of the > mach_set_clock_mmss() callback and the many implementations of that callback, > which are equally unused. > > This removes all of those as well. > > Signed-off-by: Arnd Bergmann This looks good to me: Acked-by: Greg Ungerer Regards Greg > --- > arch/m68k/apollo/config.c | 8 ------ > arch/m68k/atari/config.c | 5 ---- > arch/m68k/atari/time.c | 63 ----------------------------------------- > arch/m68k/bvme6000/config.c | 45 ----------------------------- > arch/m68k/include/asm/machdep.h | 1 - > arch/m68k/kernel/setup_mm.c | 1 - > arch/m68k/kernel/setup_no.c | 1 - > arch/m68k/mac/config.c | 2 -- > arch/m68k/mac/misc.c | 16 ----------- > arch/m68k/mvme147/config.c | 7 ----- > arch/m68k/mvme16x/config.c | 8 ------ > arch/m68k/q40/config.c | 30 -------------------- > 12 files changed, 187 deletions(-) > > diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c > index b2a6bc63f8cd..aef8d42e078d 100644 > --- a/arch/m68k/apollo/config.c > +++ b/arch/m68k/apollo/config.c > @@ -31,7 +31,6 @@ extern void dn_sched_init(irq_handler_t handler); > extern void dn_init_IRQ(void); > extern u32 dn_gettimeoffset(void); > extern int dn_dummy_hwclk(int, struct rtc_time *); > -extern int dn_dummy_set_clock_mmss(unsigned long); > extern void dn_dummy_reset(void); > #ifdef CONFIG_HEARTBEAT > static void dn_heartbeat(int on); > @@ -156,7 +155,6 @@ void __init config_apollo(void) > arch_gettimeoffset = dn_gettimeoffset; > mach_max_dma_address = 0xffffffff; > mach_hwclk = dn_dummy_hwclk; /* */ > - mach_set_clock_mmss = dn_dummy_set_clock_mmss; /* */ > mach_reset = dn_dummy_reset; /* */ > #ifdef CONFIG_HEARTBEAT > mach_heartbeat = dn_heartbeat; > @@ -240,12 +238,6 @@ int dn_dummy_hwclk(int op, struct rtc_time *t) { > > } > > -int dn_dummy_set_clock_mmss(unsigned long nowtime) > -{ > - pr_info("set_clock_mmss\n"); > - return 0; > -} > - > void dn_dummy_reset(void) { > > dn_serial_print("The end !\n"); > diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c > index 565c6f06ab0b..bd96702a1ad0 100644 > --- a/arch/m68k/atari/config.c > +++ b/arch/m68k/atari/config.c > @@ -81,9 +81,6 @@ extern void atari_sched_init(irq_handler_t); > extern u32 atari_gettimeoffset(void); > extern int atari_mste_hwclk (int, struct rtc_time *); > extern int atari_tt_hwclk (int, struct rtc_time *); > -extern int atari_mste_set_clock_mmss (unsigned long); > -extern int atari_tt_set_clock_mmss (unsigned long); > - > > /* ++roman: This is a more elaborate test for an SCC chip, since the plain > * Medusa board generates DTACK at the SCC's standard addresses, but a SCC > @@ -362,13 +359,11 @@ void __init config_atari(void) > ATARIHW_SET(TT_CLK); > pr_cont(" TT_CLK"); > mach_hwclk = atari_tt_hwclk; > - mach_set_clock_mmss = atari_tt_set_clock_mmss; > } > if (hwreg_present(&mste_rtc.sec_ones)) { > ATARIHW_SET(MSTE_CLK); > pr_cont(" MSTE_CLK"); > mach_hwclk = atari_mste_hwclk; > - mach_set_clock_mmss = atari_mste_set_clock_mmss; > } > if (!MACH_IS_MEDUSA && hwreg_present(&dma_wd.fdc_speed) && > hwreg_write(&dma_wd.fdc_speed, 0)) { > diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c > index c549b48174ec..9cca64286464 100644 > --- a/arch/m68k/atari/time.c > +++ b/arch/m68k/atari/time.c > @@ -285,69 +285,6 @@ int atari_tt_hwclk( int op, struct rtc_time *t ) > return( 0 ); > } > > - > -int atari_mste_set_clock_mmss (unsigned long nowtime) > -{ > - short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; > - struct MSTE_RTC val; > - unsigned char rtc_minutes; > - > - mste_read(&val); > - rtc_minutes= val.min_ones + val.min_tens * 10; > - if ((rtc_minutes < real_minutes > - ? real_minutes - rtc_minutes > - : rtc_minutes - real_minutes) < 30) > - { > - val.sec_ones = real_seconds % 10; > - val.sec_tens = real_seconds / 10; > - val.min_ones = real_minutes % 10; > - val.min_tens = real_minutes / 10; > - mste_write(&val); > - } > - else > - return -1; > - return 0; > -} > - > -int atari_tt_set_clock_mmss (unsigned long nowtime) > -{ > - int retval = 0; > - short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; > - unsigned char save_control, save_freq_select, rtc_minutes; > - > - save_control = RTC_READ (RTC_CONTROL); /* tell the clock it's being set */ > - RTC_WRITE (RTC_CONTROL, save_control | RTC_SET); > - > - save_freq_select = RTC_READ (RTC_FREQ_SELECT); /* stop and reset prescaler */ > - RTC_WRITE (RTC_FREQ_SELECT, save_freq_select | RTC_DIV_RESET2); > - > - rtc_minutes = RTC_READ (RTC_MINUTES); > - if (!(save_control & RTC_DM_BINARY)) > - rtc_minutes = bcd2bin(rtc_minutes); > - > - /* Since we're only adjusting minutes and seconds, don't interfere > - with hour overflow. This avoids messing with unknown time zones > - but requires your RTC not to be off by more than 30 minutes. */ > - if ((rtc_minutes < real_minutes > - ? real_minutes - rtc_minutes > - : rtc_minutes - real_minutes) < 30) > - { > - if (!(save_control & RTC_DM_BINARY)) > - { > - real_seconds = bin2bcd(real_seconds); > - real_minutes = bin2bcd(real_minutes); > - } > - RTC_WRITE (RTC_SECONDS, real_seconds); > - RTC_WRITE (RTC_MINUTES, real_minutes); > - } > - else > - retval = -1; > - > - RTC_WRITE (RTC_FREQ_SELECT, save_freq_select); > - RTC_WRITE (RTC_CONTROL, save_control); > - return retval; > -} > - > /* > * Local variables: > * c-indent-level: 4 > diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c > index 2cfff4765040..143ee9fa3893 100644 > --- a/arch/m68k/bvme6000/config.c > +++ b/arch/m68k/bvme6000/config.c > @@ -41,7 +41,6 @@ static void bvme6000_get_model(char *model); > extern void bvme6000_sched_init(irq_handler_t handler); > extern u32 bvme6000_gettimeoffset(void); > extern int bvme6000_hwclk (int, struct rtc_time *); > -extern int bvme6000_set_clock_mmss (unsigned long); > extern void bvme6000_reset (void); > void bvme6000_set_vectors (void); > > @@ -113,7 +112,6 @@ void __init config_bvme6000(void) > mach_init_IRQ = bvme6000_init_IRQ; > arch_gettimeoffset = bvme6000_gettimeoffset; > mach_hwclk = bvme6000_hwclk; > - mach_set_clock_mmss = bvme6000_set_clock_mmss; > mach_reset = bvme6000_reset; > mach_get_model = bvme6000_get_model; > > @@ -305,46 +303,3 @@ int bvme6000_hwclk(int op, struct rtc_time *t) > > return 0; > } > - > -/* > - * Set the minutes and seconds from seconds value 'nowtime'. Fail if > - * clock is out by > 30 minutes. Logic lifted from atari code. > - * Algorithm is to wait for the 10ms register to change, and then to > - * wait a short while, and then set it. > - */ > - > -int bvme6000_set_clock_mmss (unsigned long nowtime) > -{ > - int retval = 0; > - short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; > - unsigned char rtc_minutes, rtc_tenms; > - volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; > - unsigned char msr = rtc->msr & 0xc0; > - unsigned long flags; > - volatile int i; > - > - rtc->msr = 0; /* Ensure clock accessible */ > - rtc_minutes = bcd2bin (rtc->bcd_min); > - > - if ((rtc_minutes < real_minutes > - ? real_minutes - rtc_minutes > - : rtc_minutes - real_minutes) < 30) > - { > - local_irq_save(flags); > - rtc_tenms = rtc->bcd_tenms; > - while (rtc_tenms == rtc->bcd_tenms) > - ; > - for (i = 0; i < 1000; i++) > - ; > - rtc->bcd_min = bin2bcd(real_minutes); > - rtc->bcd_sec = bin2bcd(real_seconds); > - local_irq_restore(flags); > - } > - else > - retval = -1; > - > - rtc->msr = msr; > - > - return retval; > -} > - > diff --git a/arch/m68k/include/asm/machdep.h b/arch/m68k/include/asm/machdep.h > index 1605da48ebf2..49bd3266b4b1 100644 > --- a/arch/m68k/include/asm/machdep.h > +++ b/arch/m68k/include/asm/machdep.h > @@ -22,7 +22,6 @@ extern int (*mach_hwclk)(int, struct rtc_time*); > extern unsigned int (*mach_get_ss)(void); > extern int (*mach_get_rtc_pll)(struct rtc_pll_info *); > extern int (*mach_set_rtc_pll)(struct rtc_pll_info *); > -extern int (*mach_set_clock_mmss)(unsigned long); > extern void (*mach_reset)( void ); > extern void (*mach_halt)( void ); > extern void (*mach_power_off)( void ); > diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c > index f35e3ebd6331..07244732eb41 100644 > --- a/arch/m68k/kernel/setup_mm.c > +++ b/arch/m68k/kernel/setup_mm.c > @@ -88,7 +88,6 @@ void (*mach_get_hardware_list) (struct seq_file *m); > /* machine dependent timer functions */ > int (*mach_hwclk) (int, struct rtc_time*); > EXPORT_SYMBOL(mach_hwclk); > -int (*mach_set_clock_mmss) (unsigned long); > unsigned int (*mach_get_ss)(void); > int (*mach_get_rtc_pll)(struct rtc_pll_info *); > int (*mach_set_rtc_pll)(struct rtc_pll_info *); > diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c > index a98af1018201..3c53e4c366ac 100644 > --- a/arch/m68k/kernel/setup_no.c > +++ b/arch/m68k/kernel/setup_no.c > @@ -51,7 +51,6 @@ char __initdata command_line[COMMAND_LINE_SIZE]; > > /* machine dependent timer functions */ > void (*mach_sched_init)(irq_handler_t handler) __initdata = NULL; > -int (*mach_set_clock_mmss)(unsigned long); > int (*mach_hwclk) (int, struct rtc_time*); > > /* machine dependent reboot functions */ > diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c > index e522307db47c..da1aeb966474 100644 > --- a/arch/m68k/mac/config.c > +++ b/arch/m68k/mac/config.c > @@ -57,7 +57,6 @@ static unsigned long mac_orig_videoaddr; > /* Mac specific timer functions */ > extern u32 mac_gettimeoffset(void); > extern int mac_hwclk(int, struct rtc_time *); > -extern int mac_set_clock_mmss(unsigned long); > extern void iop_preinit(void); > extern void iop_init(void); > extern void via_init(void); > @@ -158,7 +157,6 @@ void __init config_mac(void) > mach_get_model = mac_get_model; > arch_gettimeoffset = mac_gettimeoffset; > mach_hwclk = mac_hwclk; > - mach_set_clock_mmss = mac_set_clock_mmss; > mach_reset = mac_reset; > mach_halt = mac_poweroff; > mach_power_off = mac_poweroff; > diff --git a/arch/m68k/mac/misc.c b/arch/m68k/mac/misc.c > index b399a0809e18..b0dda5cb9e48 100644 > --- a/arch/m68k/mac/misc.c > +++ b/arch/m68k/mac/misc.c > @@ -735,19 +735,3 @@ int mac_hwclk(int op, struct rtc_time *t) > } > return 0; > } > - > -/* > - * Set minutes/seconds in the hardware clock > - */ > - > -int mac_set_clock_mmss (unsigned long nowtime) > -{ > - struct rtc_time now; > - > - mac_hwclk(0, &now); > - now.tm_sec = nowtime % 60; > - now.tm_min = (nowtime / 60) % 60; > - mac_hwclk(1, &now); > - > - return 0; > -} > diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c > index f8a710fd84cd..adea549d240e 100644 > --- a/arch/m68k/mvme147/config.c > +++ b/arch/m68k/mvme147/config.c > @@ -40,7 +40,6 @@ static void mvme147_get_model(char *model); > extern void mvme147_sched_init(irq_handler_t handler); > extern u32 mvme147_gettimeoffset(void); > extern int mvme147_hwclk (int, struct rtc_time *); > -extern int mvme147_set_clock_mmss (unsigned long); > extern void mvme147_reset (void); > > > @@ -92,7 +91,6 @@ void __init config_mvme147(void) > mach_init_IRQ = mvme147_init_IRQ; > arch_gettimeoffset = mvme147_gettimeoffset; > mach_hwclk = mvme147_hwclk; > - mach_set_clock_mmss = mvme147_set_clock_mmss; > mach_reset = mvme147_reset; > mach_get_model = mvme147_get_model; > > @@ -164,8 +162,3 @@ int mvme147_hwclk(int op, struct rtc_time *t) > } > return 0; > } > - > -int mvme147_set_clock_mmss (unsigned long nowtime) > -{ > - return 0; > -} > diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c > index 4ffd9ef98de4..6ee36a5b528d 100644 > --- a/arch/m68k/mvme16x/config.c > +++ b/arch/m68k/mvme16x/config.c > @@ -46,7 +46,6 @@ static void mvme16x_get_model(char *model); > extern void mvme16x_sched_init(irq_handler_t handler); > extern u32 mvme16x_gettimeoffset(void); > extern int mvme16x_hwclk (int, struct rtc_time *); > -extern int mvme16x_set_clock_mmss (unsigned long); > extern void mvme16x_reset (void); > > int bcd2int (unsigned char b); > @@ -280,7 +279,6 @@ void __init config_mvme16x(void) > mach_init_IRQ = mvme16x_init_IRQ; > arch_gettimeoffset = mvme16x_gettimeoffset; > mach_hwclk = mvme16x_hwclk; > - mach_set_clock_mmss = mvme16x_set_clock_mmss; > mach_reset = mvme16x_reset; > mach_get_model = mvme16x_get_model; > mach_get_hardware_list = mvme16x_get_hardware_list; > @@ -411,9 +409,3 @@ int mvme16x_hwclk(int op, struct rtc_time *t) > } > return 0; > } > - > -int mvme16x_set_clock_mmss (unsigned long nowtime) > -{ > - return 0; > -} > - > diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c > index 71c0867ecf20..96810d91da2b 100644 > --- a/arch/m68k/q40/config.c > +++ b/arch/m68k/q40/config.c > @@ -43,7 +43,6 @@ extern void q40_sched_init(irq_handler_t handler); > static u32 q40_gettimeoffset(void); > static int q40_hwclk(int, struct rtc_time *); > static unsigned int q40_get_ss(void); > -static int q40_set_clock_mmss(unsigned long); > static int q40_get_rtc_pll(struct rtc_pll_info *pll); > static int q40_set_rtc_pll(struct rtc_pll_info *pll); > > @@ -175,7 +174,6 @@ void __init config_q40(void) > mach_get_ss = q40_get_ss; > mach_get_rtc_pll = q40_get_rtc_pll; > mach_set_rtc_pll = q40_set_rtc_pll; > - mach_set_clock_mmss = q40_set_clock_mmss; > > mach_reset = q40_reset; > mach_get_model = q40_get_model; > @@ -267,34 +265,6 @@ static unsigned int q40_get_ss(void) > return bcd2bin(Q40_RTC_SECS); > } > > -/* > - * Set the minutes and seconds from seconds value 'nowtime'. Fail if > - * clock is out by > 30 minutes. Logic lifted from atari code. > - */ > - > -static int q40_set_clock_mmss(unsigned long nowtime) > -{ > - int retval = 0; > - short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60; > - > - int rtc_minutes; > - > - rtc_minutes = bcd2bin(Q40_RTC_MINS); > - > - if ((rtc_minutes < real_minutes ? > - real_minutes - rtc_minutes : > - rtc_minutes - real_minutes) < 30) { > - Q40_RTC_CTRL |= Q40_RTC_WRITE; > - Q40_RTC_MINS = bin2bcd(real_minutes); > - Q40_RTC_SECS = bin2bcd(real_seconds); > - Q40_RTC_CTRL &= ~(Q40_RTC_WRITE); > - } else > - retval = -1; > - > - return retval; > -} > - > - > /* get and set PLL calibration of RTC clock */ > #define Q40_RTC_PLL_MASK ((1<<5)-1) > #define Q40_RTC_PLL_SIGN (1<<5) >