aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-01-06 18:30:54 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-06 18:30:54 -0500
commitf70f5b9dc74ca7d0a64c4ead3fb28da09dc1b234 (patch)
tree01f79ae109966d2ec515358481c151cda549d9ab /drivers
parentb69fc2efc9205d58c820eb2eb1caa6bf873b4b0d (diff)
parent09798eb9479da3413bdf96e7d22a84d8b21e05e1 (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.c8
-rw-r--r--drivers/video/aty/atyfb_base.c27
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
579static struct of_device_id __initdata apbuart_match[] = { 579static 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);