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

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:
sparc32: Pass task_struct to schedule_tail() in ret_from_fork
apbuart: Depend upon sparc.
sparc64: Fix section mis-match errors.
sparc32,leon: Fixed APBUART frequency detection
sparc32, leon: APBUART driver must use archdata to get IRQ number
sparc: Hook up syncfs system call.

+32 -41
+2 -1
arch/sparc/include/asm/unistd.h
··· 403 403 #define __NR_name_to_handle_at 332 404 404 #define __NR_open_by_handle_at 333 405 405 #define __NR_clock_adjtime 334 406 + #define __NR_syncfs 335 406 407 407 - #define NR_syscalls 335 408 + #define NR_syscalls 336 408 409 409 410 #ifdef __32bit_syscall_numbers__ 410 411 /* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
+1 -1
arch/sparc/kernel/auxio_64.c
··· 93 93 } 94 94 EXPORT_SYMBOL(auxio_set_lte); 95 95 96 - static struct of_device_id __initdata auxio_match[] = { 96 + static const struct of_device_id auxio_match[] = { 97 97 { 98 98 .name = "auxio", 99 99 },
+2 -2
arch/sparc/kernel/central.c
··· 140 140 goto out; 141 141 } 142 142 143 - static struct of_device_id __initdata clock_board_match[] = { 143 + static const struct of_device_id clock_board_match[] = { 144 144 { 145 145 .name = "clock-board", 146 146 }, ··· 245 245 goto out; 246 246 } 247 247 248 - static struct of_device_id __initdata fhc_match[] = { 248 + static const struct of_device_id fhc_match[] = { 249 249 { 250 250 .name = "fhc", 251 251 },
+1 -1
arch/sparc/kernel/ds.c
··· 1218 1218 return 0; 1219 1219 } 1220 1220 1221 - static struct vio_device_id __initdata ds_match[] = { 1221 + static const struct vio_device_id ds_match[] = { 1222 1222 { 1223 1223 .type = "domain-services-port", 1224 1224 },
+1 -1
arch/sparc/kernel/entry.S
··· 1283 1283 .globl ret_from_fork 1284 1284 ret_from_fork: 1285 1285 call schedule_tail 1286 - mov %g3, %o0 1286 + ld [%g3 + TI_TASK], %o0 1287 1287 b ret_sys_call 1288 1288 ld [%sp + STACKFRAME_SZ + PT_I0], %o0 1289 1289
+1 -1
arch/sparc/kernel/mdesc.c
··· 107 107 return hp; 108 108 } 109 109 110 - static void mdesc_memblock_free(struct mdesc_handle *hp) 110 + static void __init mdesc_memblock_free(struct mdesc_handle *hp) 111 111 { 112 112 unsigned int alloc_size; 113 113 unsigned long start;
+1 -1
arch/sparc/kernel/pci_fire.c
··· 496 496 return err; 497 497 } 498 498 499 - static struct of_device_id __initdata fire_match[] = { 499 + static const struct of_device_id fire_match[] = { 500 500 { 501 501 .name = "pci", 502 502 .compatible = "pciex108e,80f0",
+1 -1
arch/sparc/kernel/pci_psycho.c
··· 592 592 return err; 593 593 } 594 594 595 - static struct of_device_id __initdata psycho_match[] = { 595 + static const struct of_device_id psycho_match[] = { 596 596 { 597 597 .name = "pci", 598 598 .compatible = "pci108e,8000",
+1 -1
arch/sparc/kernel/pci_sabre.c
··· 581 581 return err; 582 582 } 583 583 584 - static struct of_device_id __initdata sabre_match[] = { 584 + static const struct of_device_id sabre_match[] = { 585 585 { 586 586 .name = "pci", 587 587 .compatible = "pci108e,a001",
+1 -1
arch/sparc/kernel/pci_schizo.c
··· 1470 1470 * and pci108e,8001. So list the chips in reverse chronological 1471 1471 * order. 1472 1472 */ 1473 - static struct of_device_id __initdata schizo_match[] = { 1473 + static const struct of_device_id schizo_match[] = { 1474 1474 { 1475 1475 .name = "pci", 1476 1476 .compatible = "pci108e,a801",
+1 -1
arch/sparc/kernel/pci_sun4v.c
··· 998 998 return err; 999 999 } 1000 1000 1001 - static struct of_device_id __initdata pci_sun4v_match[] = { 1001 + static const struct of_device_id pci_sun4v_match[] = { 1002 1002 { 1003 1003 .name = "pci", 1004 1004 .compatible = "SUNW,sun4v-pci",
+1 -1
arch/sparc/kernel/power.c
··· 52 52 return 0; 53 53 } 54 54 55 - static struct of_device_id __initdata power_match[] = { 55 + static const struct of_device_id power_match[] = { 56 56 { 57 57 .name = "power", 58 58 },
+1 -1
arch/sparc/kernel/systbls_32.S
··· 84 84 /*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv 85 85 /*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init 86 86 /*330*/ .long sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime 87 - 87 + /*335*/ .long sys_syncfs
+2
arch/sparc/kernel/systbls_64.S
··· 85 85 /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv 86 86 .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init 87 87 /*330*/ .word sys32_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, compat_sys_open_by_handle_at, compat_sys_clock_adjtime 88 + .word sys_syncfs 88 89 89 90 #endif /* CONFIG_COMPAT */ 90 91 ··· 162 161 /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv 163 162 .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init 164 163 /*330*/ .word sys_fanotify_mark, sys_prlimit64, sys_name_to_handle_at, sys_open_by_handle_at, sys_clock_adjtime 164 + .word sys_syncfs
+3 -3
arch/sparc/kernel/time_64.c
··· 442 442 return platform_device_register(&rtc_cmos_device); 443 443 } 444 444 445 - static struct of_device_id __initdata rtc_match[] = { 445 + static const struct of_device_id rtc_match[] = { 446 446 { 447 447 .name = "rtc", 448 448 .compatible = "m5819", ··· 487 487 return platform_device_register(&rtc_bq4802_device); 488 488 } 489 489 490 - static struct of_device_id __initdata bq4802_match[] = { 490 + static const struct of_device_id bq4802_match[] = { 491 491 { 492 492 .name = "rtc", 493 493 .compatible = "bq4802", ··· 552 552 return platform_device_register(&m48t59_rtc); 553 553 } 554 554 555 - static struct of_device_id __initdata mostek_match[] = { 555 + static const struct of_device_id mostek_match[] = { 556 556 { 557 557 .name = "eeprom", 558 558 },
+1 -1
drivers/tty/serial/Kconfig
··· 1506 1506 1507 1507 config SERIAL_GRLIB_GAISLER_APBUART 1508 1508 tristate "GRLIB APBUART serial support" 1509 - depends on OF 1509 + depends on OF && SPARC 1510 1510 select SERIAL_CORE 1511 1511 ---help--- 1512 1512 Add support for the GRLIB APBUART serial port.
+11 -23
drivers/tty/serial/apbuart.c
··· 555 555 556 556 static int __devinit apbuart_probe(struct platform_device *op) 557 557 { 558 - int i = -1; 558 + int i; 559 559 struct uart_port *port = NULL; 560 560 561 - i = 0; 562 561 for (i = 0; i < grlib_apbuart_port_nr; i++) { 563 562 if (op->dev.of_node == grlib_apbuart_nodes[i]) 564 563 break; ··· 565 566 566 567 port = &grlib_apbuart_ports[i]; 567 568 port->dev = &op->dev; 569 + port->irq = op->archdata.irqs[0]; 568 570 569 571 uart_add_one_port(&grlib_apbuart_driver, (struct uart_port *) port); 570 572 ··· 598 598 599 599 static int grlib_apbuart_configure(void) 600 600 { 601 - struct device_node *np, *rp; 602 - const u32 *prop; 603 - int freq_khz, line = 0; 604 - 605 - /* Get bus frequency */ 606 - rp = of_find_node_by_path("/"); 607 - if (!rp) 608 - return -ENODEV; 609 - rp = of_get_next_child(rp, NULL); 610 - if (!rp) 611 - return -ENODEV; 612 - prop = of_get_property(rp, "clock-frequency", NULL); 613 - if (!prop) 614 - return -ENODEV; 615 - freq_khz = *prop; 601 + struct device_node *np; 602 + int line = 0; 616 603 617 604 for_each_matching_node(np, apbuart_match) { 618 - const int *irqs, *ampopts; 605 + const int *ampopts; 606 + const u32 *freq_hz; 619 607 const struct amba_prom_registers *regs; 620 608 struct uart_port *port; 621 609 unsigned long addr; ··· 611 623 ampopts = of_get_property(np, "ampopts", NULL); 612 624 if (ampopts && (*ampopts == 0)) 613 625 continue; /* Ignore if used by another OS instance */ 614 - 615 - irqs = of_get_property(np, "interrupts", NULL); 616 626 regs = of_get_property(np, "reg", NULL); 627 + /* Frequency of APB Bus is frequency of UART */ 628 + freq_hz = of_get_property(np, "freq", NULL); 617 629 618 - if (!irqs || !regs) 630 + if (!regs || !freq_hz || (*freq_hz == 0)) 619 631 continue; 620 632 621 633 grlib_apbuart_nodes[line] = np; ··· 626 638 627 639 port->mapbase = addr; 628 640 port->membase = ioremap(addr, sizeof(struct grlib_apbuart_regs_map)); 629 - port->irq = *irqs; 641 + port->irq = 0; 630 642 port->iotype = UPIO_MEM; 631 643 port->ops = &grlib_apbuart_ops; 632 644 port->flags = UPF_BOOT_AUTOCONF; 633 645 port->line = line; 634 - port->uartclk = freq_khz * 1000; 646 + port->uartclk = *freq_hz; 635 647 port->fifosize = apbuart_scan_fifo_size((struct uart_port *) port, line); 636 648 line++; 637 649