Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc: switch /proc/led to seq_file
sparc64: IO accessors fix

+66 -36
+22 -14
arch/sparc/kernel/led.c
··· 2 2 #include <linux/module.h> 3 3 #include <linux/init.h> 4 4 #include <linux/proc_fs.h> 5 + #include <linux/seq_file.h> 5 6 #include <linux/string.h> 6 7 #include <linux/jiffies.h> 7 8 #include <linux/timer.h> ··· 46 45 add_timer(&led_blink_timer); 47 46 } 48 47 49 - static int led_read_proc(char *buf, char **start, off_t offset, int count, 50 - int *eof, void *data) 48 + static int led_proc_show(struct seq_file *m, void *v) 51 49 { 52 - int len = 0; 53 - 54 50 if (get_auxio() & AUXIO_LED) 55 - len = sprintf(buf, "on\n"); 51 + seq_puts(m, "on\n"); 56 52 else 57 - len = sprintf(buf, "off\n"); 58 - 59 - return len; 53 + seq_puts(m, "off\n"); 54 + return 0; 60 55 } 61 56 62 - static int led_write_proc(struct file *file, const char __user *buffer, 63 - unsigned long count, void *data) 57 + static int led_proc_open(struct inode *inode, struct file *file) 58 + { 59 + return single_open(file, led_proc_show, NULL); 60 + } 61 + 62 + static ssize_t led_proc_write(struct file *file, const char __user *buffer, 63 + size_t count, loff_t *ppos) 64 64 { 65 65 char *buf = NULL; 66 66 ··· 105 103 return count; 106 104 } 107 105 106 + static const struct file_operations led_proc_fops = { 107 + .owner = THIS_MODULE, 108 + .open = led_proc_open, 109 + .read = seq_read, 110 + .llseek = seq_lseek, 111 + .release = single_release, 112 + .write = led_proc_write, 113 + }; 114 + 108 115 static struct proc_dir_entry *led; 109 116 110 117 #define LED_VERSION "0.1" ··· 123 112 init_timer(&led_blink_timer); 124 113 led_blink_timer.function = led_blink; 125 114 126 - led = create_proc_entry("led", 0, NULL); 115 + led = proc_create("led", 0, NULL, &led_proc_fops); 127 116 if (!led) 128 117 return -ENOMEM; 129 - 130 - led->read_proc = led_read_proc; /* reader function */ 131 - led->write_proc = led_write_proc; /* writer function */ 132 118 led->owner = THIS_MODULE; 133 119 134 120 printk(KERN_INFO
+44 -22
include/asm-sparc64/io.h
··· 24 24 25 25 __asm__ __volatile__("lduba\t[%1] %2, %0\t/* pci_inb */" 26 26 : "=r" (ret) 27 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 27 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 28 + : "memory"); 28 29 29 30 return ret; 30 31 } ··· 36 35 37 36 __asm__ __volatile__("lduha\t[%1] %2, %0\t/* pci_inw */" 38 37 : "=r" (ret) 39 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 38 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 39 + : "memory"); 40 40 41 41 return ret; 42 42 } ··· 48 46 49 47 __asm__ __volatile__("lduwa\t[%1] %2, %0\t/* pci_inl */" 50 48 : "=r" (ret) 51 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 49 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 50 + : "memory"); 52 51 53 52 return ret; 54 53 } ··· 58 55 { 59 56 __asm__ __volatile__("stba\t%r0, [%1] %2\t/* pci_outb */" 60 57 : /* no outputs */ 61 - : "Jr" (b), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 58 + : "Jr" (b), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 59 + : "memory"); 62 60 } 63 61 64 62 static inline void _outw(u16 w, unsigned long addr) 65 63 { 66 64 __asm__ __volatile__("stha\t%r0, [%1] %2\t/* pci_outw */" 67 65 : /* no outputs */ 68 - : "Jr" (w), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 66 + : "Jr" (w), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 67 + : "memory"); 69 68 } 70 69 71 70 static inline void _outl(u32 l, unsigned long addr) 72 71 { 73 72 __asm__ __volatile__("stwa\t%r0, [%1] %2\t/* pci_outl */" 74 73 : /* no outputs */ 75 - : "Jr" (l), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 74 + : "Jr" (l), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 75 + : "memory"); 76 76 } 77 77 78 78 #define inb(__addr) (_inb((unsigned long)(__addr))) ··· 134 128 135 129 __asm__ __volatile__("lduba\t[%1] %2, %0\t/* pci_readb */" 136 130 : "=r" (ret) 137 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 131 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 132 + : "memory"); 138 133 return ret; 139 134 } 140 135 ··· 144 137 145 138 __asm__ __volatile__("lduha\t[%1] %2, %0\t/* pci_readw */" 146 139 : "=r" (ret) 147 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 140 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 141 + : "memory"); 148 142 149 143 return ret; 150 144 } ··· 155 147 156 148 __asm__ __volatile__("lduwa\t[%1] %2, %0\t/* pci_readl */" 157 149 : "=r" (ret) 158 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 150 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 151 + : "memory"); 159 152 160 153 return ret; 161 154 } ··· 166 157 167 158 __asm__ __volatile__("ldxa\t[%1] %2, %0\t/* pci_readq */" 168 159 : "=r" (ret) 169 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 160 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 161 + : "memory"); 170 162 171 163 return ret; 172 164 } ··· 176 166 { 177 167 __asm__ __volatile__("stba\t%r0, [%1] %2\t/* pci_writeb */" 178 168 : /* no outputs */ 179 - : "Jr" (b), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 169 + : "Jr" (b), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 170 + : "memory"); 180 171 } 181 172 182 173 static inline void _writew(u16 w, volatile void __iomem *addr) 183 174 { 184 175 __asm__ __volatile__("stha\t%r0, [%1] %2\t/* pci_writew */" 185 176 : /* no outputs */ 186 - : "Jr" (w), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 177 + : "Jr" (w), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 178 + : "memory"); 187 179 } 188 180 189 181 static inline void _writel(u32 l, volatile void __iomem *addr) 190 182 { 191 183 __asm__ __volatile__("stwa\t%r0, [%1] %2\t/* pci_writel */" 192 184 : /* no outputs */ 193 - : "Jr" (l), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 185 + : "Jr" (l), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 186 + : "memory"); 194 187 } 195 188 196 189 static inline void _writeq(u64 q, volatile void __iomem *addr) 197 190 { 198 191 __asm__ __volatile__("stxa\t%r0, [%1] %2\t/* pci_writeq */" 199 192 : /* no outputs */ 200 - : "Jr" (q), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L)); 193 + : "Jr" (q), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E_L) 194 + : "memory"); 201 195 } 202 196 203 197 #define readb(__addr) _readb(__addr) ··· 313 299 314 300 __asm__ __volatile__("lduba\t[%1] %2, %0\t/* sbus_readb */" 315 301 : "=r" (ret) 316 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E)); 302 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E) 303 + : "memory"); 317 304 318 305 return ret; 319 306 } ··· 325 310 326 311 __asm__ __volatile__("lduha\t[%1] %2, %0\t/* sbus_readw */" 327 312 : "=r" (ret) 328 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E)); 313 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E) 314 + : "memory"); 329 315 330 316 return ret; 331 317 } ··· 337 321 338 322 __asm__ __volatile__("lduwa\t[%1] %2, %0\t/* sbus_readl */" 339 323 : "=r" (ret) 340 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E)); 324 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E) 325 + : "memory"); 341 326 342 327 return ret; 343 328 } ··· 349 332 350 333 __asm__ __volatile__("ldxa\t[%1] %2, %0\t/* sbus_readq */" 351 334 : "=r" (ret) 352 - : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E)); 335 + : "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E) 336 + : "memory"); 353 337 354 338 return ret; 355 339 } ··· 359 341 { 360 342 __asm__ __volatile__("stba\t%r0, [%1] %2\t/* sbus_writeb */" 361 343 : /* no outputs */ 362 - : "Jr" (b), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E)); 344 + : "Jr" (b), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E) 345 + : "memory"); 363 346 } 364 347 365 348 static inline void _sbus_writew(u16 w, volatile void __iomem *addr) 366 349 { 367 350 __asm__ __volatile__("stha\t%r0, [%1] %2\t/* sbus_writew */" 368 351 : /* no outputs */ 369 - : "Jr" (w), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E)); 352 + : "Jr" (w), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E) 353 + : "memory"); 370 354 } 371 355 372 356 static inline void _sbus_writel(u32 l, volatile void __iomem *addr) 373 357 { 374 358 __asm__ __volatile__("stwa\t%r0, [%1] %2\t/* sbus_writel */" 375 359 : /* no outputs */ 376 - : "Jr" (l), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E)); 360 + : "Jr" (l), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E) 361 + : "memory"); 377 362 } 378 363 379 364 static inline void _sbus_writeq(u64 l, volatile void __iomem *addr) 380 365 { 381 366 __asm__ __volatile__("stxa\t%r0, [%1] %2\t/* sbus_writeq */" 382 367 : /* no outputs */ 383 - : "Jr" (l), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E)); 368 + : "Jr" (l), "r" (addr), "i" (ASI_PHYS_BYPASS_EC_E) 369 + : "memory"); 384 370 } 385 371 386 372 #define sbus_readb(__addr) _sbus_readb(__addr)