diff mbox

rtc: rtc-generic: use correct header file

Message ID 1456836400-10102-1-git-send-email-sudipm.mukherjee@gmail.com
State Rejected
Headers show

Commit Message

Sudip Mukherjee March 1, 2016, 12:46 p.m. UTC
The allmodconfig build of m32r fails with errors like:

In file included from drivers/rtc/rtc-generic.c:12:0:
arch/m32r/include/asm/rtc.h:46:8: error: redefinition of 'struct rtc_time'

drivers/rtc/rtc-generic.c: In function 'generic_get_time':
drivers/rtc/rtc-generic.c:16:21: error: implicit declaration of function 'get_rtc_time'

drivers/rtc/rtc-generic.c:18:12: error: 'RTC_BATT_BAD' undeclared

drivers/rtc/rtc-generic.c: In function 'generic_set_time':
drivers/rtc/rtc-generic.c:26:6: error: implicit declaration of function 'set_rtc_time'

Apart from m32r, many other arch like xtensa, sparc are failing with:
drivers/rtc/rtc-generic.c:12:21: fatal error: asm/rtc.h: No such file or directory

Other rtc drivers are using asm-generic/rtc.h, so use it here.

Fixes: 2a32c792f1c9 ("rtc: enable COMPILE_TEST")
Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
---

m32r allmodconfig build log is at:
https://travis-ci.org/sudipm-mukherjee/parport/jobs/112780210

failure with sparc and xtensa needs more work as after this patch also
they fail with error about missing file "mc146818rtc.h".

 drivers/rtc/rtc-generic.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

kernel test robot March 1, 2016, 1 p.m. UTC | #1
Hi Sudip,

[auto build test ERROR on abelloni/rtc-next]
[also build test ERROR on v4.5-rc6 next-20160301]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Sudip-Mukherjee/rtc-rtc-generic-use-correct-header-file/20160301-204926
base:   https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git rtc-next
config: parisc-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=parisc 

All errors (new ones prefixed by >>):

   In file included from drivers/rtc/rtc-generic.c:12:0:
   include/asm-generic/rtc.h: In function 'rtc_is_updating':
>> include/asm-generic/rtc.h:43:2: error: implicit declaration of function 'CMOS_READ' [-Werror=implicit-function-declaration]
     uip = (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP);
     ^
   include/asm-generic/rtc.h: In function '__get_rtc_time':
>> include/asm-generic/rtc.h:94:33: error: 'RTC_ALWAYS_BCD' undeclared (first use in this function)
     if (!(ctrl & RTC_DM_BINARY) || RTC_ALWAYS_BCD)
                                    ^
   include/asm-generic/rtc.h:94:33: note: each undeclared identifier is reported only once for each function it appears in
   include/asm-generic/rtc.h: In function '__set_rtc_time':
   include/asm-generic/rtc.h:188:9: error: 'RTC_ALWAYS_BCD' undeclared (first use in this function)
         || RTC_ALWAYS_BCD) {
            ^
>> include/asm-generic/rtc.h:199:2: error: implicit declaration of function 'CMOS_WRITE' [-Werror=implicit-function-declaration]
     CMOS_WRITE((save_control|RTC_SET), RTC_CONTROL);
     ^
   cc1: some warnings being treated as errors

vim +/CMOS_READ +43 include/asm-generic/rtc.h

^1da177e Linus Torvalds   2005-04-16   37  static inline unsigned char rtc_is_updating(void)
^1da177e Linus Torvalds   2005-04-16   38  {
^1da177e Linus Torvalds   2005-04-16   39  	unsigned char uip;
795d45b2 Andrew Morton    2008-02-04   40  	unsigned long flags;
^1da177e Linus Torvalds   2005-04-16   41  
795d45b2 Andrew Morton    2008-02-04   42  	spin_lock_irqsave(&rtc_lock, flags);
^1da177e Linus Torvalds   2005-04-16  @43  	uip = (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP);
795d45b2 Andrew Morton    2008-02-04   44  	spin_unlock_irqrestore(&rtc_lock, flags);
^1da177e Linus Torvalds   2005-04-16   45  	return uip;
^1da177e Linus Torvalds   2005-04-16   46  }
^1da177e Linus Torvalds   2005-04-16   47  
5f7dc5d7 Ivan Kokshaysky  2009-01-15   48  static inline unsigned int __get_rtc_time(struct rtc_time *time)
^1da177e Linus Torvalds   2005-04-16   49  {
^1da177e Linus Torvalds   2005-04-16   50  	unsigned char ctrl;
795d45b2 Andrew Morton    2008-02-04   51  	unsigned long flags;
3c217e51 Sylvain Chouleur 2015-06-08   52  	unsigned char century = 0;
795d45b2 Andrew Morton    2008-02-04   53  
^1da177e Linus Torvalds   2005-04-16   54  #ifdef CONFIG_MACH_DECSTATION
^1da177e Linus Torvalds   2005-04-16   55  	unsigned int real_year;
^1da177e Linus Torvalds   2005-04-16   56  #endif
^1da177e Linus Torvalds   2005-04-16   57  
^1da177e Linus Torvalds   2005-04-16   58  	/*
^1da177e Linus Torvalds   2005-04-16   59  	 * read RTC once any update in progress is done. The update
38c052f8 Ingo Molnar      2008-08-23   60  	 * can take just over 2ms. We wait 20ms. There is no need to
^1da177e Linus Torvalds   2005-04-16   61  	 * to poll-wait (up to 1s - eeccch) for the falling edge of RTC_UIP.
^1da177e Linus Torvalds   2005-04-16   62  	 * If you need to know *exactly* when a second has started, enable
^1da177e Linus Torvalds   2005-04-16   63  	 * periodic update complete interrupts, (via ioctl) and then 
^1da177e Linus Torvalds   2005-04-16   64  	 * immediately read /dev/rtc which will block until you get the IRQ.
^1da177e Linus Torvalds   2005-04-16   65  	 * Once the read clears, read the RTC time (again via ioctl). Easy.
^1da177e Linus Torvalds   2005-04-16   66  	 */
38c052f8 Ingo Molnar      2008-08-23   67  	if (rtc_is_updating())
38c052f8 Ingo Molnar      2008-08-23   68  		mdelay(20);
^1da177e Linus Torvalds   2005-04-16   69  
^1da177e Linus Torvalds   2005-04-16   70  	/*
^1da177e Linus Torvalds   2005-04-16   71  	 * Only the values that we read from the RTC are set. We leave
^1da177e Linus Torvalds   2005-04-16   72  	 * tm_wday, tm_yday and tm_isdst untouched. Even though the
^1da177e Linus Torvalds   2005-04-16   73  	 * RTC has RTC_DAY_OF_WEEK, we ignore it, as it is only updated
^1da177e Linus Torvalds   2005-04-16   74  	 * by the RTC when initially set to a non-zero value.
^1da177e Linus Torvalds   2005-04-16   75  	 */
795d45b2 Andrew Morton    2008-02-04   76  	spin_lock_irqsave(&rtc_lock, flags);
^1da177e Linus Torvalds   2005-04-16   77  	time->tm_sec = CMOS_READ(RTC_SECONDS);
^1da177e Linus Torvalds   2005-04-16   78  	time->tm_min = CMOS_READ(RTC_MINUTES);
^1da177e Linus Torvalds   2005-04-16   79  	time->tm_hour = CMOS_READ(RTC_HOURS);
^1da177e Linus Torvalds   2005-04-16   80  	time->tm_mday = CMOS_READ(RTC_DAY_OF_MONTH);
^1da177e Linus Torvalds   2005-04-16   81  	time->tm_mon = CMOS_READ(RTC_MONTH);
^1da177e Linus Torvalds   2005-04-16   82  	time->tm_year = CMOS_READ(RTC_YEAR);
^1da177e Linus Torvalds   2005-04-16   83  #ifdef CONFIG_MACH_DECSTATION
^1da177e Linus Torvalds   2005-04-16   84  	real_year = CMOS_READ(RTC_DEC_YEAR);
^1da177e Linus Torvalds   2005-04-16   85  #endif
3c217e51 Sylvain Chouleur 2015-06-08   86  #ifdef CONFIG_ACPI
3c217e51 Sylvain Chouleur 2015-06-08   87  	if (acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID &&
3c217e51 Sylvain Chouleur 2015-06-08   88  	    acpi_gbl_FADT.century)
3c217e51 Sylvain Chouleur 2015-06-08   89  		century = CMOS_READ(acpi_gbl_FADT.century);
3c217e51 Sylvain Chouleur 2015-06-08   90  #endif
^1da177e Linus Torvalds   2005-04-16   91  	ctrl = CMOS_READ(RTC_CONTROL);
795d45b2 Andrew Morton    2008-02-04   92  	spin_unlock_irqrestore(&rtc_lock, flags);
^1da177e Linus Torvalds   2005-04-16   93  
^1da177e Linus Torvalds   2005-04-16  @94  	if (!(ctrl & RTC_DM_BINARY) || RTC_ALWAYS_BCD)
^1da177e Linus Torvalds   2005-04-16   95  	{
357c6e63 Adrian Bunk      2008-10-18   96  		time->tm_sec = bcd2bin(time->tm_sec);
357c6e63 Adrian Bunk      2008-10-18   97  		time->tm_min = bcd2bin(time->tm_min);
357c6e63 Adrian Bunk      2008-10-18   98  		time->tm_hour = bcd2bin(time->tm_hour);
357c6e63 Adrian Bunk      2008-10-18   99  		time->tm_mday = bcd2bin(time->tm_mday);
357c6e63 Adrian Bunk      2008-10-18  100  		time->tm_mon = bcd2bin(time->tm_mon);
357c6e63 Adrian Bunk      2008-10-18  101  		time->tm_year = bcd2bin(time->tm_year);
3c217e51 Sylvain Chouleur 2015-06-08  102  		century = bcd2bin(century);
^1da177e Linus Torvalds   2005-04-16  103  	}
^1da177e Linus Torvalds   2005-04-16  104  
^1da177e Linus Torvalds   2005-04-16  105  #ifdef CONFIG_MACH_DECSTATION
^1da177e Linus Torvalds   2005-04-16  106  	time->tm_year += real_year - 72;
^1da177e Linus Torvalds   2005-04-16  107  #endif
^1da177e Linus Torvalds   2005-04-16  108  
3c217e51 Sylvain Chouleur 2015-06-08  109  	if (century)
3c217e51 Sylvain Chouleur 2015-06-08  110  		time->tm_year += (century - 19) * 100;
3c217e51 Sylvain Chouleur 2015-06-08  111  
^1da177e Linus Torvalds   2005-04-16  112  	/*
^1da177e Linus Torvalds   2005-04-16  113  	 * Account for differences between how the RTC uses the values
^1da177e Linus Torvalds   2005-04-16  114  	 * and how they are defined in a struct rtc_time;
^1da177e Linus Torvalds   2005-04-16  115  	 */
^1da177e Linus Torvalds   2005-04-16  116  	if (time->tm_year <= 69)
^1da177e Linus Torvalds   2005-04-16  117  		time->tm_year += 100;
^1da177e Linus Torvalds   2005-04-16  118  
^1da177e Linus Torvalds   2005-04-16  119  	time->tm_mon--;
^1da177e Linus Torvalds   2005-04-16  120  
^1da177e Linus Torvalds   2005-04-16  121  	return RTC_24H;
^1da177e Linus Torvalds   2005-04-16  122  }
^1da177e Linus Torvalds   2005-04-16  123  
5f7dc5d7 Ivan Kokshaysky  2009-01-15  124  #ifndef get_rtc_time
5f7dc5d7 Ivan Kokshaysky  2009-01-15  125  #define get_rtc_time	__get_rtc_time
5f7dc5d7 Ivan Kokshaysky  2009-01-15  126  #endif
5f7dc5d7 Ivan Kokshaysky  2009-01-15  127  
^1da177e Linus Torvalds   2005-04-16  128  /* Set the current date and time in the real time clock. */
5f7dc5d7 Ivan Kokshaysky  2009-01-15  129  static inline int __set_rtc_time(struct rtc_time *time)
^1da177e Linus Torvalds   2005-04-16  130  {
eb71c87a Linus Torvalds   2006-06-24  131  	unsigned long flags;
^1da177e Linus Torvalds   2005-04-16  132  	unsigned char mon, day, hrs, min, sec;
^1da177e Linus Torvalds   2005-04-16  133  	unsigned char save_control, save_freq_select;
^1da177e Linus Torvalds   2005-04-16  134  	unsigned int yrs;
^1da177e Linus Torvalds   2005-04-16  135  #ifdef CONFIG_MACH_DECSTATION
^1da177e Linus Torvalds   2005-04-16  136  	unsigned int real_yrs, leap_yr;
^1da177e Linus Torvalds   2005-04-16  137  #endif
3c217e51 Sylvain Chouleur 2015-06-08  138  	unsigned char century = 0;
^1da177e Linus Torvalds   2005-04-16  139  
^1da177e Linus Torvalds   2005-04-16  140  	yrs = time->tm_year;
^1da177e Linus Torvalds   2005-04-16  141  	mon = time->tm_mon + 1;   /* tm_mon starts at zero */
^1da177e Linus Torvalds   2005-04-16  142  	day = time->tm_mday;
^1da177e Linus Torvalds   2005-04-16  143  	hrs = time->tm_hour;
^1da177e Linus Torvalds   2005-04-16  144  	min = time->tm_min;
^1da177e Linus Torvalds   2005-04-16  145  	sec = time->tm_sec;
^1da177e Linus Torvalds   2005-04-16  146  
^1da177e Linus Torvalds   2005-04-16  147  	if (yrs > 255)	/* They are unsigned */
^1da177e Linus Torvalds   2005-04-16  148  		return -EINVAL;
^1da177e Linus Torvalds   2005-04-16  149  
eb71c87a Linus Torvalds   2006-06-24  150  	spin_lock_irqsave(&rtc_lock, flags);
^1da177e Linus Torvalds   2005-04-16  151  #ifdef CONFIG_MACH_DECSTATION
^1da177e Linus Torvalds   2005-04-16  152  	real_yrs = yrs;
^1da177e Linus Torvalds   2005-04-16  153  	leap_yr = ((!((yrs + 1900) % 4) && ((yrs + 1900) % 100)) ||
^1da177e Linus Torvalds   2005-04-16  154  			!((yrs + 1900) % 400));
^1da177e Linus Torvalds   2005-04-16  155  	yrs = 72;
^1da177e Linus Torvalds   2005-04-16  156  
^1da177e Linus Torvalds   2005-04-16  157  	/*
^1da177e Linus Torvalds   2005-04-16  158  	 * We want to keep the year set to 73 until March
^1da177e Linus Torvalds   2005-04-16  159  	 * for non-leap years, so that Feb, 29th is handled
^1da177e Linus Torvalds   2005-04-16  160  	 * correctly.
^1da177e Linus Torvalds   2005-04-16  161  	 */
^1da177e Linus Torvalds   2005-04-16  162  	if (!leap_yr && mon < 3) {
^1da177e Linus Torvalds   2005-04-16  163  		real_yrs--;
^1da177e Linus Torvalds   2005-04-16  164  		yrs = 73;
^1da177e Linus Torvalds   2005-04-16  165  	}
^1da177e Linus Torvalds   2005-04-16  166  #endif
3c217e51 Sylvain Chouleur 2015-06-08  167  
3c217e51 Sylvain Chouleur 2015-06-08  168  #ifdef CONFIG_ACPI
3c217e51 Sylvain Chouleur 2015-06-08  169  	if (acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID &&
3c217e51 Sylvain Chouleur 2015-06-08  170  	    acpi_gbl_FADT.century) {
3c217e51 Sylvain Chouleur 2015-06-08  171  		century = (yrs + 1900) / 100;
3c217e51 Sylvain Chouleur 2015-06-08  172  		yrs %= 100;
3c217e51 Sylvain Chouleur 2015-06-08  173  	}
3c217e51 Sylvain Chouleur 2015-06-08  174  #endif
3c217e51 Sylvain Chouleur 2015-06-08  175  
^1da177e Linus Torvalds   2005-04-16  176  	/* These limits and adjustments are independent of
^1da177e Linus Torvalds   2005-04-16  177  	 * whether the chip is in binary mode or not.
^1da177e Linus Torvalds   2005-04-16  178  	 */
^1da177e Linus Torvalds   2005-04-16  179  	if (yrs > 169) {
eb71c87a Linus Torvalds   2006-06-24  180  		spin_unlock_irqrestore(&rtc_lock, flags);
^1da177e Linus Torvalds   2005-04-16  181  		return -EINVAL;
^1da177e Linus Torvalds   2005-04-16  182  	}
^1da177e Linus Torvalds   2005-04-16  183  
^1da177e Linus Torvalds   2005-04-16  184  	if (yrs >= 100)
^1da177e Linus Torvalds   2005-04-16  185  		yrs -= 100;
^1da177e Linus Torvalds   2005-04-16  186  
^1da177e Linus Torvalds   2005-04-16  187  	if (!(CMOS_READ(RTC_CONTROL) & RTC_DM_BINARY)
^1da177e Linus Torvalds   2005-04-16  188  	    || RTC_ALWAYS_BCD) {
357c6e63 Adrian Bunk      2008-10-18  189  		sec = bin2bcd(sec);
357c6e63 Adrian Bunk      2008-10-18  190  		min = bin2bcd(min);
357c6e63 Adrian Bunk      2008-10-18  191  		hrs = bin2bcd(hrs);
357c6e63 Adrian Bunk      2008-10-18  192  		day = bin2bcd(day);
357c6e63 Adrian Bunk      2008-10-18  193  		mon = bin2bcd(mon);
357c6e63 Adrian Bunk      2008-10-18  194  		yrs = bin2bcd(yrs);
3c217e51 Sylvain Chouleur 2015-06-08  195  		century = bin2bcd(century);
^1da177e Linus Torvalds   2005-04-16  196  	}
^1da177e Linus Torvalds   2005-04-16  197  
^1da177e Linus Torvalds   2005-04-16  198  	save_control = CMOS_READ(RTC_CONTROL);
^1da177e Linus Torvalds   2005-04-16 @199  	CMOS_WRITE((save_control|RTC_SET), RTC_CONTROL);
^1da177e Linus Torvalds   2005-04-16  200  	save_freq_select = CMOS_READ(RTC_FREQ_SELECT);
^1da177e Linus Torvalds   2005-04-16  201  	CMOS_WRITE((save_freq_select|RTC_DIV_RESET2), RTC_FREQ_SELECT);
^1da177e Linus Torvalds   2005-04-16  202  

:::::: The code at line 43 was first introduced by commit
:::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2

:::::: TO: Linus Torvalds <torvalds@ppc970.osdl.org>
:::::: CC: Linus Torvalds <torvalds@ppc970.osdl.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Alexandre Belloni March 1, 2016, 1:06 p.m. UTC | #2
On 01/03/2016 at 18:16:40 +0530, Sudip Mukherjee wrote :
> The allmodconfig build of m32r fails with errors like:
> 
> In file included from drivers/rtc/rtc-generic.c:12:0:
> arch/m32r/include/asm/rtc.h:46:8: error: redefinition of 'struct rtc_time'
> 
> drivers/rtc/rtc-generic.c: In function 'generic_get_time':
> drivers/rtc/rtc-generic.c:16:21: error: implicit declaration of function 'get_rtc_time'
> 
> drivers/rtc/rtc-generic.c:18:12: error: 'RTC_BATT_BAD' undeclared
> 
> drivers/rtc/rtc-generic.c: In function 'generic_set_time':
> drivers/rtc/rtc-generic.c:26:6: error: implicit declaration of function 'set_rtc_time'
> 
> Apart from m32r, many other arch like xtensa, sparc are failing with:
> drivers/rtc/rtc-generic.c:12:21: fatal error: asm/rtc.h: No such file or directory
> 
> Other rtc drivers are using asm-generic/rtc.h, so use it here.
> 
> Fixes: 2a32c792f1c9 ("rtc: enable COMPILE_TEST")
> Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
> ---
> 
> m32r allmodconfig build log is at:
> https://travis-ci.org/sudipm-mukherjee/parport/jobs/112780210
> 
> failure with sparc and xtensa needs more work as after this patch also
> they fail with error about missing file "mc146818rtc.h".
> 

Yeah I'll remove COMPILE_TEST for that driver.
diff mbox

Patch

diff --git a/drivers/rtc/rtc-generic.c b/drivers/rtc/rtc-generic.c
index e782ebd..494dd85 100644
--- a/drivers/rtc/rtc-generic.c
+++ b/drivers/rtc/rtc-generic.c
@@ -9,7 +9,7 @@ 
 #include <linux/platform_device.h>
 #include <linux/rtc.h>
 
-#include <asm/rtc.h>
+#include <asm-generic/rtc.h>
 
 static int generic_get_time(struct device *dev, struct rtc_time *tm)
 {