~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/m68k/kernel/time.c

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/m68k/kernel/time.c (Version linux-6.12-rc7) and /arch/ppc/kernel/time.c (Version linux-4.17.19)


  1 // SPDX-License-Identifier: GPL-2.0-only            1 
  2 /*                                                
  3  *  linux/arch/m68k/kernel/time.c                 
  4  *                                                
  5  *  Copyright (C) 1991, 1992, 1995  Linus Torv    
  6  *                                                
  7  * This file contains the m68k-specific time h    
  8  * Most of the stuff is located in the machine    
  9  *                                                
 10  * 1997-09-10   Updated NTP code according to     
 11  *              "A Kernel Model for Precision     
 12  */                                               
 13                                                   
 14 #include <linux/errno.h>                          
 15 #include <linux/export.h>                         
 16 #include <linux/module.h>                         
 17 #include <linux/sched.h>                          
 18 #include <linux/sched/loadavg.h>                  
 19 #include <linux/kernel.h>                         
 20 #include <linux/param.h>                          
 21 #include <linux/string.h>                         
 22 #include <linux/mm.h>                             
 23 #include <linux/rtc.h>                            
 24 #include <linux/platform_device.h>                
 25                                                   
 26 #include <asm/machdep.h>                          
 27 #include <asm/io.h>                               
 28 #include <asm/irq_regs.h>                         
 29                                                   
 30 #include <linux/time.h>                           
 31 #include <linux/timex.h>                          
 32 #include <linux/profile.h>                        
 33                                                   
 34                                                   
 35 unsigned long (*mach_random_get_entropy)(void)    
 36 EXPORT_SYMBOL_GPL(mach_random_get_entropy);       
 37                                                   
 38 #ifdef CONFIG_HEARTBEAT                           
 39 void timer_heartbeat(void)                        
 40 {                                                 
 41         /* use power LED as a heartbeat instea    
 42            for debugging -- based on the versi    
 43         /* acts like an actual heart beat -- i    
 44         if (mach_heartbeat) {                     
 45             static unsigned cnt = 0, period =     
 46                                                   
 47             if (cnt == 0 || cnt == dist)          
 48                 mach_heartbeat( 1 );              
 49             else if (cnt == 7 || cnt == dist+7    
 50                 mach_heartbeat( 0 );              
 51                                                   
 52             if (++cnt > period) {                 
 53                 cnt = 0;                          
 54                 /* The hyperbolic function bel    
 55                  * length in dependency of the    
 56                  * through the points f(0)=126    
 57                  * f(inf)->30. */                 
 58                 period = ((672<<FSHIFT)/(5*ave    
 59                 dist = period / 4;                
 60             }                                     
 61         }                                         
 62 }                                                 
 63 #endif /* CONFIG_HEARTBEAT */                     
 64                                                   
 65 #ifdef CONFIG_M68KCLASSIC                         
 66 /* machine dependent timer functions */           
 67 int (*mach_hwclk) (int, struct rtc_time*);        
 68 EXPORT_SYMBOL(mach_hwclk);                        
 69                                                   
 70 int (*mach_get_rtc_pll)(struct rtc_pll_info *)    
 71 int (*mach_set_rtc_pll)(struct rtc_pll_info *)    
 72 EXPORT_SYMBOL(mach_get_rtc_pll);                  
 73 EXPORT_SYMBOL(mach_set_rtc_pll);                  
 74                                                   
 75 #if !IS_BUILTIN(CONFIG_RTC_DRV_GENERIC)           
 76 void read_persistent_clock64(struct timespec64    
 77 {                                                 
 78         struct rtc_time time;                     
 79                                                   
 80         ts->tv_sec = 0;                           
 81         ts->tv_nsec = 0;                          
 82                                                   
 83         if (!mach_hwclk)                          
 84                 return;                           
 85                                                   
 86         mach_hwclk(0, &time);                     
 87                                                   
 88         ts->tv_sec = mktime64(time.tm_year + 1    
 89                               time.tm_hour, ti    
 90 }                                                 
 91 #endif                                            
 92                                                   
 93 #if IS_ENABLED(CONFIG_RTC_DRV_GENERIC)            
 94 static int rtc_generic_get_time(struct device     
 95 {                                                 
 96         mach_hwclk(0, tm);                        
 97         return 0;                                 
 98 }                                                 
 99                                                   
100 static int rtc_generic_set_time(struct device     
101 {                                                 
102         if (mach_hwclk(1, tm) < 0)                
103                 return -EOPNOTSUPP;               
104         return 0;                                 
105 }                                                 
106                                                   
107 static int rtc_ioctl(struct device *dev, unsig    
108 {                                                 
109         struct rtc_pll_info pll;                  
110         struct rtc_pll_info __user *argp = (vo    
111                                                   
112         switch (cmd) {                            
113         case RTC_PLL_GET:                         
114                 if (!mach_get_rtc_pll || mach_    
115                         return -EINVAL;           
116                 return copy_to_user(argp, &pll    
117                                                   
118         case RTC_PLL_SET:                         
119                 if (!mach_set_rtc_pll)            
120                         return -EINVAL;           
121                 if (!capable(CAP_SYS_TIME))       
122                         return -EACCES;           
123                 if (copy_from_user(&pll, argp,    
124                         return -EFAULT;           
125                 return mach_set_rtc_pll(&pll);    
126         }                                         
127                                                   
128         return -ENOIOCTLCMD;                      
129 }                                                 
130                                                   
131 static const struct rtc_class_ops generic_rtc_    
132         .ioctl = rtc_ioctl,                       
133         .read_time = rtc_generic_get_time,        
134         .set_time = rtc_generic_set_time,         
135 };                                                
136                                                   
137 static int __init rtc_init(void)                  
138 {                                                 
139         struct platform_device *pdev;             
140                                                   
141         if (!mach_hwclk)                          
142                 return -ENODEV;                   
143                                                   
144         pdev = platform_device_register_data(N    
145                                              &    
146                                              s    
147         return PTR_ERR_OR_ZERO(pdev);             
148 }                                                 
149                                                   
150 module_init(rtc_init);                            
151 #endif /* CONFIG_RTC_DRV_GENERIC */               
152 #endif /* CONFIG M68KCLASSIC */                   
153                                                   
154 void __init time_init(void)                       
155 {                                                 
156         mach_sched_init();                        
157 }                                                 
158                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php