Name: PPC Compile fixes Author: Paul Mackerras, Ben Herrenschmidt et al. Status: Experimental D: Various things to make 2.5.x compile on PPC. D: -rw-r--r-- 1 rusty rusty 386 Nov 4 12:13 rd.patch D: -rw-r--r-- 1 rusty rusty 50118 Nov 4 12:14 macdr1.patch D: -rw-r--r-- 1 rusty rusty 635 Nov 4 12:15 mman.patch D: -rw-r--r-- 1 rusty rusty 373 Nov 4 12:16 poll.patch D: -rw-r--r-- 1 rusty rusty 2085 Nov 4 12:16 pciids.patch D: -rw-r--r-- 1 rusty rusty 123481 Nov 4 12:17 drmac-video.patch diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/arch/ppc/Makefile .27641-linux-2.5.52.updated/arch/ppc/Makefile --- .27641-linux-2.5.52/arch/ppc/Makefile 2002-12-10 15:56:47.000000000 +1100 +++ .27641-linux-2.5.52.updated/arch/ppc/Makefile 2002-12-17 21:30:34.000000000 +1100 @@ -22,6 +22,7 @@ AFLAGS := $(AFLAGS) -I$(TOPDIR)/arch/$( CFLAGS := $(CFLAGS) -I$(TOPDIR)/arch/$(ARCH) -msoft-float -pipe \ -ffixed-r2 -Wno-uninitialized -mmultiple -mstring CPP = $(CC) -E $(CFLAGS) +ARCHBLOBLFLAGS := -I binary -O elf32-powerpc -B powerpc ifdef CONFIG_4xx CFLAGS := $(CFLAGS) -Wa,-m405 diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/drivers/macintosh/adb.c .27641-linux-2.5.52.updated/drivers/macintosh/adb.c --- .27641-linux-2.5.52/drivers/macintosh/adb.c 2002-11-19 09:58:43.000000000 +1100 +++ .27641-linux-2.5.52.updated/drivers/macintosh/adb.c 2002-12-17 21:30:34.000000000 +1100 @@ -413,6 +413,7 @@ do_adb_reset_bus(void) /* Let the trackpad settle down */ adb_wait_ms(1500); } + up(&adb_handler_sem); if (!ret) { devs = adb_scan_bus(); diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/drivers/macintosh/mediabay.c .27641-linux-2.5.52.updated/drivers/macintosh/mediabay.c --- .27641-linux-2.5.52/drivers/macintosh/mediabay.c 2002-11-19 09:58:43.000000000 +1100 +++ .27641-linux-2.5.52.updated/drivers/macintosh/mediabay.c 2002-12-17 21:30:34.000000000 +1100 @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -569,7 +570,8 @@ media_bay_step(int i) pmu_suspend(); ide_init_hwif_ports(&hw, (ide_ioreg_t) bay->cd_base, (ide_ioreg_t) 0, NULL); hw.irq = bay->cd_irq; - bay->cd_index = ide_register_hw(&hw); + hw.chipset = ide_pmac; + bay->cd_index = ide_register_hw(&hw, NULL); pmu_resume(); } if (bay->cd_index == -1) { @@ -597,7 +599,7 @@ media_bay_step(int i) if (bay->cd_index >= 0) { printk(KERN_DEBUG "Unregistering mb %d ide, index:%d\n", i, bay->cd_index); - ide_unregister(bay->cd_index); + ide_unregister(&ide_hwifs[bay->cd_index]); bay->cd_index = -1; } if (bay->cd_retry) { diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/drivers/scsi/mesh.c .27641-linux-2.5.52.updated/drivers/scsi/mesh.c --- .27641-linux-2.5.52/drivers/scsi/mesh.c 2002-10-31 12:36:42.000000000 +1100 +++ .27641-linux-2.5.52.updated/drivers/scsi/mesh.c 2002-12-17 21:30:34.000000000 +1100 @@ -487,14 +487,11 @@ int mesh_abort(Scsi_Cmnd *cmd) { struct mesh_state *ms = (struct mesh_state *) cmd->host->hostdata; - unsigned long flags; printk(KERN_DEBUG "mesh_abort(%p)\n", cmd); - spin_lock_irqsave(ms->host->host_lock, flags); mesh_dump_regs(ms); dumplog(ms, cmd->target); dumpslog(ms); - spin_unlock_irqrestore(ms->host->host_lock, flags); return SCSI_ABORT_SNOOZE; } diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/drivers/video/aty/atyfb_base.c .27641-linux-2.5.52.updated/drivers/video/aty/atyfb_base.c --- .27641-linux-2.5.52/drivers/video/aty/atyfb_base.c 2002-12-10 15:56:50.000000000 +1100 +++ .27641-linux-2.5.52.updated/drivers/video/aty/atyfb_base.c 2002-12-17 21:30:34.000000000 +1100 @@ -682,6 +682,13 @@ static int aty_crtc_to_var(const struct (v_sync_pol ? 0 : FB_SYNC_VERT_HIGH_ACT) | (c_sync ? FB_SYNC_COMP_HIGH_ACT : 0); + var->red.msb_right = 0; + var->green.msb_right = 0; + var->blue.offset = 0; + var->blue.msb_right = 0; + var->transp.offset = 0; + var->transp.length = 0; + var->transp.msb_right = 0; switch (pix_width) { #if 0 case CRTC_PIX_WIDTH_4BPP: @@ -690,10 +697,7 @@ static int aty_crtc_to_var(const struct var->red.length = 8; var->green.offset = 0; var->green.length = 8; - var->blue.offset = 0; var->blue.length = 8; - var->transp.offset = 0; - var->transp.length = 0; break; #endif case CRTC_PIX_WIDTH_8BPP: @@ -702,10 +706,7 @@ static int aty_crtc_to_var(const struct var->red.length = 8; var->green.offset = 0; var->green.length = 8; - var->blue.offset = 0; var->blue.length = 8; - var->transp.offset = 0; - var->transp.length = 0; break; case CRTC_PIX_WIDTH_15BPP: /* RGB 555 */ bpp = 16; @@ -713,10 +714,7 @@ static int aty_crtc_to_var(const struct var->red.length = 5; var->green.offset = 5; var->green.length = 5; - var->blue.offset = 0; var->blue.length = 5; - var->transp.offset = 0; - var->transp.length = 0; break; #if 0 case CRTC_PIX_WIDTH_16BPP: /* RGB 565 */ @@ -725,10 +723,7 @@ static int aty_crtc_to_var(const struct var->red.length = 5; var->green.offset = 5; var->green.length = 6; - var->blue.offset = 0; var->blue.length = 5; - var->transp.offset = 0; - var->transp.length = 0; break; #endif case CRTC_PIX_WIDTH_24BPP: /* RGB 888 */ @@ -737,10 +732,7 @@ static int aty_crtc_to_var(const struct var->red.length = 8; var->green.offset = 8; var->green.length = 8; - var->blue.offset = 0; var->blue.length = 8; - var->transp.offset = 0; - var->transp.length = 0; break; case CRTC_PIX_WIDTH_32BPP: /* ARGB 8888 */ bpp = 32; @@ -748,7 +740,6 @@ static int aty_crtc_to_var(const struct var->red.length = 8; var->green.offset = 8; var->green.length = 8; - var->blue.offset = 0; var->blue.length = 8; var->transp.offset = 24; var->transp.length = 8; @@ -858,8 +849,7 @@ static int atyfb_set_par(struct fb_info #ifdef CONFIG_BOOTX_TEXT btext_update_display(info->fix.smem_start, - (((par->crtc.h_tot_disp >> 16) & 0xff) + - 1) * 8, + (((par->crtc.h_tot_disp >> 16) & 0xff) + 1) * 8, ((par->crtc.v_tot_disp >> 16) & 0x7ff) + 1, info->var.bits_per_pixel, par->crtc.vxres * info->var.bits_per_pixel / 8); @@ -893,14 +883,13 @@ static int atyfb_encode_var(struct fb_va { int err; - memset(var, 0, sizeof(struct fb_var_screeninfo)); - if ((err = aty_crtc_to_var(&par->crtc, var))) return err; var->pixclock = par->pll_ops->pll_to_var(info, &par->pll); var->height = -1; var->width = -1; + var->nonstd = 0; return 0; } @@ -1412,15 +1401,15 @@ static int aty_power_mgmt(int sleep, str static int aty_sleep_notify(struct pmu_sleep_notifier *self, int when) { struct fb_info *info; - struct atyfb_par *par = (struct atyfb_par *) info->fb.par; + struct atyfb_par *par; int result; result = PBOOK_SLEEP_OK; for (info = first_display; info != NULL; info = par->next) { - struct fb_fix_screeninfo fix; int nb; + par = (struct atyfb_par *) info->par; nb = fb_display[fg_console].var.yres * info->fix.line_length; switch (when) { @@ -1439,7 +1428,7 @@ static int aty_sleep_notify(struct pmu_s if (par->blitter_may_be_busy) wait_for_idle(par); /* Stop accel engine (stop bus mastering) */ - if (par->accel_flags & FB_ACCELF_TEXT) + if (info->var.accel_flags & FB_ACCELF_TEXT) aty_reset_engine(par); /* Backup fb content */ @@ -2330,7 +2319,6 @@ int __init atyfb_init(void) if (first_display == NULL) pmu_register_sleep_notifier (&aty_sleep_notifier); - /* FIXME info->next = first_display; */ default_par->next = first_display; #endif } @@ -2357,7 +2345,7 @@ int __init atyfb_init(void) return -ENOMEM; } memset(info, 0, sizeof(struct fb_info)); - info->fix = atyfb_fix; + info->fix = atyfb_fix; /* * Map the video memory (physical address given) to somewhere in the @@ -2368,7 +2356,7 @@ int __init atyfb_init(void) info->fix.smem_start = info->screen_base; /* Fake! */ default_par->ati_regbase = (unsigned long)ioremap(phys_guiregbase[m64_num], 0x10000) + 0xFC00ul; - info->fix.mmio_start = par->ati_regbase; /* Fake! */ + info->fix.mmio_start = default_par->ati_regbase; /* Fake! */ aty_st_le32(CLOCK_CNTL, 0x12345678, default_par); clock_r = aty_ld_le32(CLOCK_CNTL, default_par); diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/drivers/video/aty128fb.c .27641-linux-2.5.52.updated/drivers/video/aty128fb.c --- .27641-linux-2.5.52/drivers/video/aty128fb.c 2002-12-10 15:56:50.000000000 +1100 +++ .27641-linux-2.5.52.updated/drivers/video/aty128fb.c 2002-12-17 21:30:35.000000000 +1100 @@ -2187,6 +2187,7 @@ aty128_rectcopy(int srcx, int srcy, int } +#if 0 /* * Text mode accelerated functions */ diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/drivers/video/offb.c .27641-linux-2.5.52.updated/drivers/video/offb.c --- .27641-linux-2.5.52/drivers/video/offb.c 2002-12-10 15:56:51.000000000 +1100 +++ .27641-linux-2.5.52.updated/drivers/video/offb.c 2002-12-17 21:31:53.000000000 +1100 @@ -393,6 +393,7 @@ static void __init offb_init_fb(const ch struct fb_fix_screeninfo *fix; struct fb_var_screeninfo *var; struct fb_info *info; + int size; if (!request_mem_region(res_start, res_size, "offb")) return; @@ -421,7 +422,7 @@ static void __init offb_init_fb(const ch var = &info->var; strcpy(fix->id, "OFfb "); - strncat(fix->id, name, sizeof(fix->id)); + strncat(fix->id, name, sizeof(fix->id) - sizeof("OFfb ")); fix->id[sizeof(fix->id) - 1] = '\0'; var->xres = var->xres_virtual = width; @@ -522,8 +523,6 @@ static void __init offb_init_fb(const ch var->sync = 0; var->vmode = FB_VMODE_NONINTERLACED; - strcpy(fix->id, "OFfb "); - strncat(fix->id, full_name, sizeof(fix->id)); info->node = NODEV; info->fbops = &offb_ops; info->screen_base = ioremap(address, fix->smem_len); diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/include/linux/pci_ids.h .27641-linux-2.5.52.updated/include/linux/pci_ids.h --- .27641-linux-2.5.52/include/linux/pci_ids.h 2002-12-10 15:56:53.000000000 +1100 +++ .27641-linux-2.5.52.updated/include/linux/pci_ids.h 2002-12-17 21:30:35.000000000 +1100 @@ -270,6 +270,43 @@ #define PCI_DEVICE_ID_ATI_RADEON_RD 0x5147 /* RadeonIGP */ #define PCI_DEVICE_ID_ATI_RADEON_IGP 0xCAB0 +/* Radeon R100 */ +#define PCI_DEVICE_ID_ATI_RADEON_QD 0x5144 +#define PCI_DEVICE_ID_ATI_RADEON_QE 0x5145 +#define PCI_DEVICE_ID_ATI_RADEON_QF 0x5146 +#define PCI_DEVICE_ID_ATI_RADEON_QG 0x5147 +/* Radeon RV100 (VE) */ +#define PCI_DEVICE_ID_ATI_RADEON_QY 0x5159 +#define PCI_DEVICE_ID_ATI_RADEON_QZ 0x515a +/* Radeon R200 (8500) */ +#define PCI_DEVICE_ID_ATI_RADEON_QL 0x514c +#define PCI_DEVICE_ID_ATI_RADEON_QN 0x514e +#define PCI_DEVICE_ID_ATI_RADEON_QO 0x514f +#define PCI_DEVICE_ID_ATI_RADEON_Ql 0x516c +#define PCI_DEVICE_ID_ATI_RADEON_BB 0x4242 +/* Radeon RV200 (7500) */ +#define PCI_DEVICE_ID_ATI_RADEON_QW 0x5157 +#define PCI_DEVICE_ID_ATI_RADEON_QX 0x5158 +/* Radeon RV250 (9000) */ +#define PCI_DEVICE_ID_ATI_RADEON_Id 0x4964 +#define PCI_DEVICE_ID_ATI_RADEON_Ie 0x4965 +#define PCI_DEVICE_ID_ATI_RADEON_If 0x4966 +#define PCI_DEVICE_ID_ATI_RADEON_Ig 0x4967 +/* Radeon R300 (9700) */ +#define PCI_DEVICE_ID_ATI_RADEON_ND 0x4e44 +#define PCI_DEVICE_ID_ATI_RADEON_NE 0x4e45 +#define PCI_DEVICE_ID_ATI_RADEON_NF 0x4e46 +#define PCI_DEVICE_ID_ATI_RADEON_NG 0x4e47 +/* Radeon M6 */ +#define PCI_DEVICE_ID_ATI_RADEON_LY 0x4c59 +#define PCI_DEVICE_ID_ATI_RADEON_LZ 0x4c5a +/* Radeon M7 */ +#define PCI_DEVICE_ID_ATI_RADEON_LW 0x4c57 +#define PCI_DEVICE_ID_ATI_RADEON_LX 0x4c58 +#define PCI_DEVICE_ID_ATI_RADEON_Ld 0x4964 +#define PCI_DEVICE_ID_ATI_RADEON_Le 0x4965 +#define PCI_DEVICE_ID_ATI_RADEON_Lf 0x4966 +#define PCI_DEVICE_ID_ATI_RADEON_Lg 0x4967 #define PCI_VENDOR_ID_VLSI 0x1004 #define PCI_DEVICE_ID_VLSI_82C592 0x0005 diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/include/linux/smp.h .27641-linux-2.5.52.updated/include/linux/smp.h --- .27641-linux-2.5.52/include/linux/smp.h 2002-10-15 15:19:44.000000000 +1000 +++ .27641-linux-2.5.52.updated/include/linux/smp.h 2002-12-17 21:30:35.000000000 +1100 @@ -79,6 +79,7 @@ extern void unregister_cpu_notifier(stru int cpu_up(unsigned int cpu); #else /* !SMP */ +#include /* For BUG() */ /* * These macros fold the SMP functionality into a single CPU system diff -urpN --exclude TAGS -X /home/rusty/devel/kernel/kernel-patches/current-dontdiff --minimal .27641-linux-2.5.52/include/linux/timer.h .27641-linux-2.5.52.updated/include/linux/timer.h --- .27641-linux-2.5.52/include/linux/timer.h 2002-11-11 20:01:06.000000000 +1100 +++ .27641-linux-2.5.52.updated/include/linux/timer.h 2002-12-17 21:30:35.000000000 +1100 @@ -4,6 +4,7 @@ #include #include #include +#include struct tvec_t_base_s;