diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-06 18:30:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-06 18:30:54 -0500 |
commit | f70f5b9dc74ca7d0a64c4ead3fb28da09dc1b234 (patch) | |
tree | 01f79ae109966d2ec515358481c151cda549d9ab /drivers | |
parent | b69fc2efc9205d58c820eb2eb1caa6bf873b4b0d (diff) | |
parent | 09798eb9479da3413bdf96e7d22a84d8b21e05e1 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6: (25 commits)
atyfb: Fix bootup hangs on sparc64.
sparc: update copyright in piggyback.c
sparc: unify strip command in boot/Makefile
sparc: rename piggyback_32 to piggyback
sparc: fix tftpboot.img for sparc64 on little-endian host
sparc: add $BITS to piggyback arguments
sparc: remove obsolete ELF support in piggyback_32.c
sparc: additional comments to piggyback_32.c
sparc: use _start for the start entry (like 64 bit does)
sparc: use trapbase in setup_arch
sparc: refactor piggy_32.c
Added support for ampopts in APBUART driver. Used in AMP systems.
APBUART: added raw AMBA vendor/device number to match against.
SPARC/LEON: avoid AMBAPP name duplicates in openprom fs when REG is missing
SPARC/LEON: added support for selecting Timer Core and Timer within core
LEON: added raw AMBA vendor/device number to find TIMER, IRQCTRL
SPARC/LEON: added support for IRQAMP IRQ Controller
SPARC/LEON: find IRQCTRL and Timer via OF-Tree, instead of hardcoded.
sparc: fix sparse warnings in arch/sparc/prom for 32 bit build
sparc: remove unused prom tree functions
...
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/serial/apbuart.c | 8 | ||||
-rw-r--r-- | drivers/video/aty/atyfb_base.c | 27 |
2 files changed, 12 insertions, 23 deletions
diff --git a/drivers/serial/apbuart.c b/drivers/serial/apbuart.c index cc01c650a144..767ce9e396c5 100644 --- a/drivers/serial/apbuart.c +++ b/drivers/serial/apbuart.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/of.h> | 26 | #include <linux/of.h> |
27 | #include <linux/of_device.h> | 27 | #include <linux/of_device.h> |
28 | #include <linux/of_platform.h> | 28 | #include <linux/of_platform.h> |
29 | #include <linux/of_irq.h> | ||
29 | #include <linux/platform_device.h> | 30 | #include <linux/platform_device.h> |
30 | #include <linux/io.h> | 31 | #include <linux/io.h> |
31 | #include <linux/serial_core.h> | 32 | #include <linux/serial_core.h> |
@@ -573,13 +574,15 @@ static int __devinit apbuart_probe(struct platform_device *op, | |||
573 | printk(KERN_INFO "grlib-apbuart at 0x%llx, irq %d\n", | 574 | printk(KERN_INFO "grlib-apbuart at 0x%llx, irq %d\n", |
574 | (unsigned long long) port->mapbase, port->irq); | 575 | (unsigned long long) port->mapbase, port->irq); |
575 | return 0; | 576 | return 0; |
576 | |||
577 | } | 577 | } |
578 | 578 | ||
579 | static struct of_device_id __initdata apbuart_match[] = { | 579 | static struct of_device_id __initdata apbuart_match[] = { |
580 | { | 580 | { |
581 | .name = "GAISLER_APBUART", | 581 | .name = "GAISLER_APBUART", |
582 | }, | 582 | }, |
583 | { | ||
584 | .name = "01_00c", | ||
585 | }, | ||
583 | {}, | 586 | {}, |
584 | }; | 587 | }; |
585 | 588 | ||
@@ -620,9 +623,12 @@ static void grlib_apbuart_configure(void) | |||
620 | int *vendor = (int *) of_get_property(np, "vendor", NULL); | 623 | int *vendor = (int *) of_get_property(np, "vendor", NULL); |
621 | int *device = (int *) of_get_property(np, "device", NULL); | 624 | int *device = (int *) of_get_property(np, "device", NULL); |
622 | int *irqs = (int *) of_get_property(np, "interrupts", NULL); | 625 | int *irqs = (int *) of_get_property(np, "interrupts", NULL); |
626 | int *ampopts = (int *) of_get_property(np, "ampopts", NULL); | ||
623 | regs = (struct amba_prom_registers *) | 627 | regs = (struct amba_prom_registers *) |
624 | of_get_property(np, "reg", NULL); | 628 | of_get_property(np, "reg", NULL); |
625 | 629 | ||
630 | if (ampopts && (*ampopts == 0)) | ||
631 | continue; /* Ignore if used by another OS instance */ | ||
626 | if (vendor) | 632 | if (vendor) |
627 | v = *vendor; | 633 | v = *vendor; |
628 | if (device) | 634 | if (device) |
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c index 5bf91236c701..5a3ce3ad1ec8 100644 --- a/drivers/video/aty/atyfb_base.c +++ b/drivers/video/aty/atyfb_base.c | |||
@@ -2969,10 +2969,8 @@ static int __devinit atyfb_setup_sparc(struct pci_dev *pdev, | |||
2969 | { | 2969 | { |
2970 | struct atyfb_par *par = info->par; | 2970 | struct atyfb_par *par = info->par; |
2971 | struct device_node *dp; | 2971 | struct device_node *dp; |
2972 | char prop[128]; | ||
2973 | phandle node; | ||
2974 | int len, i, j, ret; | ||
2975 | u32 mem, chip_id; | 2972 | u32 mem, chip_id; |
2973 | int i, j, ret; | ||
2976 | 2974 | ||
2977 | /* | 2975 | /* |
2978 | * Map memory-mapped registers. | 2976 | * Map memory-mapped registers. |
@@ -3088,23 +3086,8 @@ static int __devinit atyfb_setup_sparc(struct pci_dev *pdev, | |||
3088 | aty_st_le32(MEM_CNTL, mem, par); | 3086 | aty_st_le32(MEM_CNTL, mem, par); |
3089 | } | 3087 | } |
3090 | 3088 | ||
3091 | /* | ||
3092 | * If this is the console device, we will set default video | ||
3093 | * settings to what the PROM left us with. | ||
3094 | */ | ||
3095 | node = prom_getchild(prom_root_node); | ||
3096 | node = prom_searchsiblings(node, "aliases"); | ||
3097 | if (node) { | ||
3098 | len = prom_getproperty(node, "screen", prop, sizeof(prop)); | ||
3099 | if (len > 0) { | ||
3100 | prop[len] = '\0'; | ||
3101 | node = prom_finddevice(prop); | ||
3102 | } else | ||
3103 | node = 0; | ||
3104 | } | ||
3105 | |||
3106 | dp = pci_device_to_OF_node(pdev); | 3089 | dp = pci_device_to_OF_node(pdev); |
3107 | if (node == dp->phandle) { | 3090 | if (dp == of_console_device) { |
3108 | struct fb_var_screeninfo *var = &default_var; | 3091 | struct fb_var_screeninfo *var = &default_var; |
3109 | unsigned int N, P, Q, M, T, R; | 3092 | unsigned int N, P, Q, M, T, R; |
3110 | u32 v_total, h_total; | 3093 | u32 v_total, h_total; |
@@ -3112,9 +3095,9 @@ static int __devinit atyfb_setup_sparc(struct pci_dev *pdev, | |||
3112 | u8 pll_regs[16]; | 3095 | u8 pll_regs[16]; |
3113 | u8 clock_cntl; | 3096 | u8 clock_cntl; |
3114 | 3097 | ||
3115 | crtc.vxres = prom_getintdefault(node, "width", 1024); | 3098 | crtc.vxres = of_getintprop_default(dp, "width", 1024); |
3116 | crtc.vyres = prom_getintdefault(node, "height", 768); | 3099 | crtc.vyres = of_getintprop_default(dp, "height", 768); |
3117 | var->bits_per_pixel = prom_getintdefault(node, "depth", 8); | 3100 | var->bits_per_pixel = of_getintprop_default(dp, "depth", 8); |
3118 | var->xoffset = var->yoffset = 0; | 3101 | var->xoffset = var->yoffset = 0; |
3119 | crtc.h_tot_disp = aty_ld_le32(CRTC_H_TOTAL_DISP, par); | 3102 | crtc.h_tot_disp = aty_ld_le32(CRTC_H_TOTAL_DISP, par); |
3120 | crtc.h_sync_strt_wid = aty_ld_le32(CRTC_H_SYNC_STRT_WID, par); | 3103 | crtc.h_sync_strt_wid = aty_ld_le32(CRTC_H_SYNC_STRT_WID, par); |