Merge branch 'linux-2.6'
Paul Mackerras [Wed, 13 Sep 2006 21:07:18 +0000 (07:07 +1000)]
1  2 
arch/powerpc/Kconfig
arch/powerpc/configs/maple_defconfig
arch/powerpc/kernel/Makefile
arch/powerpc/platforms/86xx/mpc86xx_hpcn.c
arch/powerpc/platforms/powermac/pfunc_base.c
drivers/macintosh/via-pmu.c
drivers/video/riva/fbdev.c
include/asm-powerpc/paca.h

diff --combined arch/powerpc/Kconfig
@@@ -95,6 -95,10 +95,10 @@@ config GENERIC_TBSYN
        default y if PPC32 && SMP
        default n
  
+ config AUDIT_ARCH
+       bool
+       default y
  config DEFAULT_UIMAGE
        bool
        help
@@@ -413,17 -417,6 +417,17 @@@ config PPC_MAPL
            This option enables support for the Maple 970FX Evaluation Board.
          For more informations, refer to <http://www.970eval.com>
  
 +config PPC_PASEMI
 +      depends on PPC_MULTIPLATFORM && PPC64
 +      bool "PA Semi SoC-based platforms"
 +      default n
 +      select MPIC
 +      select PPC_UDBG_16550
 +      select GENERIC_TBSYNC
 +      help
 +        This option enables support for PA Semi's PWRficient line
 +        of SoC processors, including PA6T-1682M
 +
  config PPC_CELL
        bool
        default n
@@@ -443,8 -436,7 +447,8 @@@ config PPC_IBM_CELL_BLAD
        select UDBG_RTAS_CONSOLE
  
  config UDBG_RTAS_CONSOLE
 -      bool
 +      bool "RTAS based debug console"
 +      depends on PPC_RTAS
        default n
  
  config XICS
@@@ -1,15 -1,18 +1,18 @@@
  #
  # Automatically generated make config: don't edit
- # Linux kernel version: 2.6.16-rc6
- # Wed Mar 15 16:19:54 2006
+ # Linux kernel version: 2.6.18-rc6
+ # Sun Sep 10 10:24:55 2006
  #
  CONFIG_PPC64=y
  CONFIG_64BIT=y
  CONFIG_PPC_MERGE=y
  CONFIG_MMU=y
  CONFIG_GENERIC_HARDIRQS=y
+ CONFIG_IRQ_PER_CPU=y
  CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+ CONFIG_GENERIC_HWEIGHT=y
  CONFIG_GENERIC_CALIBRATE_DELAY=y
+ CONFIG_GENERIC_FIND_NEXT_BIT=y
  CONFIG_PPC=y
  CONFIG_EARLY_PRINTK=y
  CONFIG_COMPAT=y
@@@ -29,8 -32,10 +32,10 @@@ CONFIG_POWER4=
  CONFIG_PPC_FPU=y
  # CONFIG_ALTIVEC is not set
  CONFIG_PPC_STD_MMU=y
+ CONFIG_VIRT_CPU_ACCOUNTING=y
  CONFIG_SMP=y
  CONFIG_NR_CPUS=2
+ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
  
  #
  # Code maturity level options
@@@ -48,11 -53,13 +53,13 @@@ CONFIG_SWAP=
  CONFIG_SYSVIPC=y
  CONFIG_POSIX_MQUEUE=y
  # CONFIG_BSD_PROCESS_ACCT is not set
+ # CONFIG_TASKSTATS is not set
  CONFIG_SYSCTL=y
  # CONFIG_AUDIT is not set
  CONFIG_IKCONFIG=y
  CONFIG_IKCONFIG_PROC=y
  # CONFIG_CPUSETS is not set
+ # CONFIG_RELAY is not set
  CONFIG_INITRAMFS_SOURCE=""
  CONFIG_CC_OPTIMIZE_FOR_SIZE=y
  # CONFIG_EMBEDDED is not set
@@@ -64,14 -71,12 +71,12 @@@ CONFIG_PRINTK=
  CONFIG_BUG=y
  CONFIG_ELF_CORE=y
  CONFIG_BASE_FULL=y
+ CONFIG_RT_MUTEXES=y
  CONFIG_FUTEX=y
  CONFIG_EPOLL=y
  CONFIG_SHMEM=y
- CONFIG_CC_ALIGN_FUNCTIONS=0
- CONFIG_CC_ALIGN_LABELS=0
- CONFIG_CC_ALIGN_LOOPS=0
- CONFIG_CC_ALIGN_JUMPS=0
  CONFIG_SLAB=y
+ CONFIG_VM_EVENT_COUNTERS=y
  # CONFIG_TINY_SHMEM is not set
  CONFIG_BASE_SMALL=0
  # CONFIG_SLOB is not set
@@@ -82,7 -87,6 +87,6 @@@
  CONFIG_MODULES=y
  CONFIG_MODULE_UNLOAD=y
  # CONFIG_MODULE_FORCE_UNLOAD is not set
- CONFIG_OBSOLETE_MODPARM=y
  CONFIG_MODVERSIONS=y
  CONFIG_MODULE_SRCVERSION_ALL=y
  CONFIG_KMOD=y
@@@ -91,6 -95,7 +95,7 @@@ CONFIG_STOP_MACHINE=
  #
  # Block layer
  #
+ # CONFIG_BLK_DEV_IO_TRACE is not set
  
  #
  # IO Schedulers
@@@ -116,14 -121,18 +121,18 @@@ CONFIG_PPC_MULTIPLATFORM=
  # CONFIG_PPC_PMAC is not set
  CONFIG_PPC_MAPLE=y
  # CONFIG_PPC_CELL is not set
+ # CONFIG_PPC_CELL_NATIVE is not set
+ # CONFIG_PPC_IBM_CELL_BLADE is not set
+ # CONFIG_UDBG_RTAS_CONSOLE is not set
  CONFIG_U3_DART=y
- CONFIG_MPIC=y
  # CONFIG_PPC_RTAS is not set
  # CONFIG_MMIO_NVRAM is not set
  CONFIG_MPIC_BROKEN_U3=y
  # CONFIG_PPC_MPC106 is not set
+ CONFIG_PPC_970_NAP=y
  # CONFIG_CPU_FREQ is not set
  # CONFIG_WANT_EARLY_SERIAL is not set
+ CONFIG_MPIC=y
  
  #
  # Kernel options
@@@ -140,6 -149,7 +149,7 @@@ CONFIG_BINFMT_ELF=
  # CONFIG_BINFMT_MISC is not set
  CONFIG_FORCE_MAX_ZONEORDER=13
  CONFIG_IOMMU_VMERGE=y
+ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
  CONFIG_KEXEC=y
  # CONFIG_CRASH_DUMP is not set
  CONFIG_IRQ_ALL_CPUS=y
@@@ -155,6 -165,7 +165,7 @@@ CONFIG_FLATMEM=
  CONFIG_FLAT_NODE_MEM_MAP=y
  # CONFIG_SPARSEMEM_STATIC is not set
  CONFIG_SPLIT_PTLOCK_CPUS=4
+ CONFIG_RESOURCES_64BIT=y
  # CONFIG_PPC_64K_PAGES is not set
  # CONFIG_SCHED_SMT is not set
  CONFIG_PROC_DEVICETREE=y
@@@ -167,11 -178,12 +178,12 @@@ CONFIG_ISA_DMA_API=
  # Bus options
  #
  CONFIG_GENERIC_ISA_DMA=y
+ # CONFIG_MPIC_WEIRD is not set
  # CONFIG_PPC_I8259 is not set
  # CONFIG_PPC_INDIRECT_PCI is not set
  CONFIG_PCI=y
  CONFIG_PCI_DOMAINS=y
- CONFIG_PCI_LEGACY_PROC=y
+ # CONFIG_PCIEPORTBUS is not set
  # CONFIG_PCI_DEBUG is not set
  
  #
@@@ -197,6 -209,8 +209,8 @@@ CONFIG_NET=
  CONFIG_PACKET=y
  CONFIG_PACKET_MMAP=y
  CONFIG_UNIX=y
+ CONFIG_XFRM=y
+ CONFIG_XFRM_USER=m
  # CONFIG_NET_KEY is not set
  CONFIG_INET=y
  CONFIG_IP_MULTICAST=y
@@@ -214,12 -228,18 +228,18 @@@ CONFIG_IP_PNP_DHCP=
  # CONFIG_INET_AH is not set
  # CONFIG_INET_ESP is not set
  # CONFIG_INET_IPCOMP is not set
+ # CONFIG_INET_XFRM_TUNNEL is not set
  # CONFIG_INET_TUNNEL is not set
+ CONFIG_INET_XFRM_MODE_TRANSPORT=y
+ CONFIG_INET_XFRM_MODE_TUNNEL=y
  CONFIG_INET_DIAG=y
  CONFIG_INET_TCP_DIAG=y
  # CONFIG_TCP_CONG_ADVANCED is not set
  CONFIG_TCP_CONG_BIC=y
  # CONFIG_IPV6 is not set
+ # CONFIG_INET6_XFRM_TUNNEL is not set
+ # CONFIG_INET6_TUNNEL is not set
+ # CONFIG_NETWORK_SECMARK is not set
  # CONFIG_NETFILTER is not set
  
  #
@@@ -274,6 -294,7 +294,7 @@@ CONFIG_STANDALONE=
  CONFIG_PREVENT_FIRMWARE_BUILD=y
  # CONFIG_FW_LOADER is not set
  # CONFIG_DEBUG_DRIVER is not set
+ # CONFIG_SYS_HYPERVISOR is not set
  
  #
  # Connector - unified userspace <-> kernelspace linker
  CONFIG_BLK_DEV_RAM=y
  CONFIG_BLK_DEV_RAM_COUNT=16
  CONFIG_BLK_DEV_RAM_SIZE=8192
+ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
  # CONFIG_BLK_DEV_INITRD is not set
  # CONFIG_CDROM_PKTCDVD is not set
  # CONFIG_ATA_OVER_ETH is not set
@@@ -474,7 -496,7 +496,7 @@@ CONFIG_E1000=
  # CONFIG_SKY2 is not set
  # CONFIG_SK98LIN is not set
  # CONFIG_VIA_VELOCITY is not set
 -# CONFIG_TIGON3 is not set
 +CONFIG_TIGON3=y
  # CONFIG_BNX2 is not set
  # CONFIG_MV643XX_ETH is not set
  
  # CONFIG_CHELSIO_T1 is not set
  # CONFIG_IXGB is not set
  # CONFIG_S2IO is not set
+ # CONFIG_MYRI10GE is not set
  
  #
  # Token Ring devices
@@@ -556,6 -579,7 +579,7 @@@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=120
  CONFIG_VT=y
  CONFIG_VT_CONSOLE=y
  CONFIG_HW_CONSOLE=y
+ # CONFIG_VT_HW_CONSOLE_BINDING is not set
  # CONFIG_SERIAL_NONSTANDARD is not set
  
  #
  #
  CONFIG_SERIAL_8250=y
  CONFIG_SERIAL_8250_CONSOLE=y
+ CONFIG_SERIAL_8250_PCI=y
  CONFIG_SERIAL_8250_NR_UARTS=4
  CONFIG_SERIAL_8250_RUNTIME_UARTS=4
  # CONFIG_SERIAL_8250_EXTENDED is not set
@@@ -586,7 -611,7 +611,7 @@@ CONFIG_LEGACY_PTY_COUNT=25
  # Watchdog Cards
  #
  # CONFIG_WATCHDOG is not set
- # CONFIG_RTC is not set
+ # CONFIG_HW_RANDOM is not set
  CONFIG_GEN_RTC=y
  # CONFIG_GEN_RTC_X is not set
  # CONFIG_DTLK is not set
@@@ -632,10 -657,10 +657,10 @@@ CONFIG_I2C_AMD8111=
  # CONFIG_I2C_I810 is not set
  # CONFIG_I2C_PIIX4 is not set
  # CONFIG_I2C_NFORCE2 is not set
+ # CONFIG_I2C_OCORES is not set
  # CONFIG_I2C_PARPORT_LIGHT is not set
  # CONFIG_I2C_PROSAVAGE is not set
  # CONFIG_I2C_SAVAGE4 is not set
- # CONFIG_SCx200_ACB is not set
  # CONFIG_I2C_SIS5595 is not set
  # CONFIG_I2C_SIS630 is not set
  # CONFIG_I2C_SIS96X is not set
  # CONFIG_SENSORS_PCF8574 is not set
  # CONFIG_SENSORS_PCA9539 is not set
  # CONFIG_SENSORS_PCF8591 is not set
- # CONFIG_SENSORS_RTC8564 is not set
  # CONFIG_SENSORS_MAX6875 is not set
- # CONFIG_RTC_X1205_I2C is not set
  # CONFIG_I2C_DEBUG_CORE is not set
  # CONFIG_I2C_DEBUG_ALGO is not set
  # CONFIG_I2C_DEBUG_BUS is not set
  #
  # Dallas's 1-wire bus
  #
- # CONFIG_W1 is not set
  
  #
  # Hardware Monitoring support
  #
  
  #
  # Multimedia devices
  #
  # CONFIG_VIDEO_DEV is not set
+ CONFIG_VIDEO_V4L2=y
  
  #
  # Digital Video Broadcasting Devices
  #
  # CONFIG_DVB is not set
+ # CONFIG_USB_DABUSB is not set
  
  #
  # Graphics support
  #
+ CONFIG_FIRMWARE_EDID=y
  # CONFIG_FB is not set
  
  #
  #
  # CONFIG_VGA_CONSOLE is not set
  CONFIG_DUMMY_CONSOLE=y
+ # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
  
  #
  # Sound
  #
  CONFIG_USB_ARCH_HAS_HCD=y
  CONFIG_USB_ARCH_HAS_OHCI=y
+ CONFIG_USB_ARCH_HAS_EHCI=y
  CONFIG_USB=y
  # CONFIG_USB_DEBUG is not set
  
@@@ -735,6 -758,7 +758,7 @@@ CONFIG_USB_DEVICEFS=
  CONFIG_USB_EHCI_HCD=y
  CONFIG_USB_EHCI_SPLIT_ISO=y
  CONFIG_USB_EHCI_ROOT_HUB_TT=y
+ # CONFIG_USB_EHCI_TT_NEWSCHED is not set
  # CONFIG_USB_ISP116X_HCD is not set
  CONFIG_USB_OHCI_HCD=y
  # CONFIG_USB_OHCI_BIG_ENDIAN is not set
@@@ -771,9 -795,7 +795,7 @@@ CONFIG_USB_HIDINPUT=
  # CONFIG_USB_ACECAD is not set
  # CONFIG_USB_KBTAB is not set
  # CONFIG_USB_POWERMATE is not set
- # CONFIG_USB_MTOUCH is not set
- # CONFIG_USB_ITMTOUCH is not set
- # CONFIG_USB_EGALAX is not set
+ # CONFIG_USB_TOUCHSCREEN is not set
  # CONFIG_USB_YEALINK is not set
  # CONFIG_USB_XPAD is not set
  # CONFIG_USB_ATI_REMOTE is not set
  # CONFIG_USB_MDC800 is not set
  
  #
- # USB Multimedia devices
- #
- # CONFIG_USB_DABUSB is not set
- #
- # Video4Linux support is needed for USB Multimedia device support
- #
- #
  # USB Network Adapters
  #
  # CONFIG_USB_CATC is not set
@@@ -816,7 -829,7 +829,7 @@@ CONFIG_USB_SERIAL=
  # CONFIG_USB_SERIAL_CONSOLE is not set
  CONFIG_USB_SERIAL_GENERIC=y
  # CONFIG_USB_SERIAL_AIRPRIME is not set
- # CONFIG_USB_SERIAL_ANYDATA is not set
+ # CONFIG_USB_SERIAL_ARK3116 is not set
  # CONFIG_USB_SERIAL_BELKIN is not set
  # CONFIG_USB_SERIAL_WHITEHEAT is not set
  # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
  CONFIG_USB_SERIAL_CYPRESS_M8=m
  # CONFIG_USB_SERIAL_EMPEG is not set
  # CONFIG_USB_SERIAL_FTDI_SIO is not set
+ # CONFIG_USB_SERIAL_FUNSOFT is not set
  # CONFIG_USB_SERIAL_VISOR is not set
  # CONFIG_USB_SERIAL_IPAQ is not set
  # CONFIG_USB_SERIAL_IR is not set
@@@ -848,12 -862,15 +862,15 @@@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=
  # CONFIG_USB_SERIAL_KLSI is not set
  # CONFIG_USB_SERIAL_KOBIL_SCT is not set
  # CONFIG_USB_SERIAL_MCT_U232 is not set
+ # CONFIG_USB_SERIAL_NAVMAN is not set
  # CONFIG_USB_SERIAL_PL2303 is not set
  # CONFIG_USB_SERIAL_HP4X is not set
  # CONFIG_USB_SERIAL_SAFE is not set
+ # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
  CONFIG_USB_SERIAL_TI=m
  # CONFIG_USB_SERIAL_CYBERJACK is not set
  # CONFIG_USB_SERIAL_XIRCOM is not set
+ # CONFIG_USB_SERIAL_OPTION is not set
  # CONFIG_USB_SERIAL_OMNINET is not set
  CONFIG_USB_EZUSB=y
  
  # CONFIG_USB_LEGOTOWER is not set
  # CONFIG_USB_LCD is not set
  # CONFIG_USB_LED is not set
+ # CONFIG_USB_CYPRESS_CY7C63 is not set
  # CONFIG_USB_CYTHERM is not set
  # CONFIG_USB_PHIDGETKIT is not set
  # CONFIG_USB_PHIDGETSERVO is not set
  # CONFIG_USB_IDMOUSE is not set
+ # CONFIG_USB_APPLEDISPLAY is not set
  # CONFIG_USB_SISUSBVGA is not set
  # CONFIG_USB_LD is not set
  # CONFIG_USB_TEST is not set
  # CONFIG_MMC is not set
  
  #
+ # LED devices
+ #
+ # CONFIG_NEW_LEDS is not set
+ #
+ # LED drivers
+ #
+ #
+ # LED Triggers
+ #
+ #
  # InfiniBand support
  #
  # CONFIG_INFINIBAND is not set
  #
  
  #
+ # Real Time Clock
+ #
+ # CONFIG_RTC_CLASS is not set
+ #
+ # DMA Engine support
+ #
+ # CONFIG_DMA_ENGINE is not set
+ #
+ # DMA Clients
+ #
+ #
+ # DMA Devices
+ #
+ #
  # File systems
  #
  CONFIG_EXT2_FS=y
@@@ -917,6 -967,7 +967,7 @@@ CONFIG_FS_POSIX_ACL=
  # CONFIG_MINIX_FS is not set
  # CONFIG_ROMFS_FS is not set
  CONFIG_INOTIFY=y
+ CONFIG_INOTIFY_USER=y
  # CONFIG_QUOTA is not set
  CONFIG_DNOTIFY=y
  # CONFIG_AUTOFS_FS is not set
@@@ -949,7 -1000,6 +1000,6 @@@ CONFIG_TMPFS=
  CONFIG_HUGETLBFS=y
  CONFIG_HUGETLB_PAGE=y
  CONFIG_RAMFS=y
- # CONFIG_RELAYFS_FS is not set
  # CONFIG_CONFIGFS_FS is not set
  
  #
@@@ -1067,6 -1117,7 +1117,7 @@@ CONFIG_CRC_CCITT=
  CONFIG_CRC32=y
  # CONFIG_LIBCRC32C is not set
  CONFIG_ZLIB_INFLATE=y
+ CONFIG_PLIST=y
  
  #
  # Instrumentation Support
  #
  # CONFIG_PRINTK_TIME is not set
  CONFIG_MAGIC_SYSRQ=y
+ # CONFIG_UNUSED_SYMBOLS is not set
  CONFIG_DEBUG_KERNEL=y
  CONFIG_LOG_BUF_SHIFT=17
  CONFIG_DETECT_SOFTLOCKUP=y
  # CONFIG_SCHEDSTATS is not set
  CONFIG_DEBUG_SLAB=y
- # CONFIG_DEBUG_MUTEXES is not set
+ # CONFIG_DEBUG_SLAB_LEAK is not set
+ # CONFIG_DEBUG_RT_MUTEXES is not set
+ # CONFIG_RT_MUTEX_TESTER is not set
  # CONFIG_DEBUG_SPINLOCK is not set
+ # CONFIG_DEBUG_MUTEXES is not set
+ # CONFIG_DEBUG_RWSEMS is not set
  CONFIG_DEBUG_SPINLOCK_SLEEP=y
+ # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
  # CONFIG_DEBUG_KOBJECT is not set
  # CONFIG_DEBUG_INFO is not set
  CONFIG_DEBUG_FS=y
@@@ -1100,11 -1157,7 +1157,7 @@@ CONFIG_XMON=
  CONFIG_XMON_DEFAULT=y
  # CONFIG_IRQSTACKS is not set
  CONFIG_BOOTX_TEXT=y
- # CONFIG_PPC_EARLY_DEBUG_LPAR is not set
- # CONFIG_PPC_EARLY_DEBUG_G5 is not set
- # CONFIG_PPC_EARLY_DEBUG_RTAS is not set
- # CONFIG_PPC_EARLY_DEBUG_MAPLE is not set
- # CONFIG_PPC_EARLY_DEBUG_ISERIES is not set
+ # CONFIG_PPC_EARLY_DEBUG is not set
  
  #
  # Security options
@@@ -16,7 -16,7 +16,7 @@@ obj-y                         := semaphore.o cputable.o ptra
  obj-y                         += vdso32/
  obj-$(CONFIG_PPC64)           += setup_64.o binfmt_elf32.o sys_ppc32.o \
                                   signal_64.o ptrace32.o \
 -                                 paca.o cpu_setup_power4.o \
 +                                 paca.o cpu_setup_ppc970.o \
                                   firmware.o sysfs.o
  obj-$(CONFIG_PPC64)           += vdso64/
  obj-$(CONFIG_ALTIVEC)         += vecemu.o vector.o
@@@ -70,6 -70,8 +70,8 @@@ obj-$(CONFIG_PCI)             += $(pci64-y) $(pci3
  kexec-$(CONFIG_PPC64)         := machine_kexec_64.o
  kexec-$(CONFIG_PPC32)         := machine_kexec_32.o
  obj-$(CONFIG_KEXEC)           += machine_kexec.o crash.o $(kexec-y)
+ obj-$(CONFIG_AUDIT)           += audit.o
+ obj64-$(CONFIG_AUDIT)         += compat_audit.o
  
  ifeq ($(CONFIG_PPC_ISERIES),y)
  $(obj)/head_64.o: $(obj)/lparmap.s
@@@ -158,7 -158,7 +158,7 @@@ get_pci_irq_from_of(struct pci_controll
  
        laddr[0] = (hose->first_busno << 16) | (PCI_DEVFN(slot, 0) << 8);
        laddr[1] = laddr[2] = 0;
-       of_irq_map_raw(hosenode, &pin, laddr, &oirq);
+       of_irq_map_raw(hosenode, &pin, 1, laddr, &oirq);
        DBG("mpc86xx_hpcn: pci irq addr %x, slot %d, pin %d, irq %d\n",
                        laddr[0], slot, pin, oirq.specifier[0]);
        return oirq.specifier[0];
@@@ -347,9 -347,9 +347,9 @@@ mpc86xx_hpcn_setup_arch(void
  
        np = of_find_node_by_type(NULL, "cpu");
        if (np != 0) {
 -              unsigned int *fp;
 +              const unsigned int *fp;
  
 -              fp = (int *)get_property(np, "clock-frequency", NULL);
 +              fp = get_property(np, "clock-frequency", NULL);
                if (fp != 0)
                        loops_per_jiffy = *fp / HZ;
                else
@@@ -114,7 -114,7 +114,7 @@@ static void macio_gpio_init_one(struct 
         * we just create them all
         */
        for (gp = NULL; (gp = of_get_next_child(gparent, gp)) != NULL;) {
 -              u32 *reg = (u32 *)get_property(gp, "reg", NULL);
 +              const u32 *reg = get_property(gp, "reg", NULL);
                unsigned long offset;
                if (reg == NULL)
                        continue;
@@@ -256,7 -256,7 +256,7 @@@ static struct pmf_handlers macio_mmio_h
        .write_reg32            = macio_do_write_reg32,
        .read_reg32             = macio_do_read_reg32,
        .write_reg8             = macio_do_write_reg8,
-       .read_reg32             = macio_do_read_reg8,
+       .read_reg8              = macio_do_read_reg8,
        .read_reg32_msrx        = macio_do_read_reg32_msrx,
        .read_reg8_msrx         = macio_do_read_reg8_msrx,
        .write_reg32_slm        = macio_do_write_reg32_slm,
@@@ -280,7 -280,7 +280,7 @@@ static char *pbook_type[] = 
  int __init find_via_pmu(void)
  {
        u64 taddr;
 -      u32 *reg;
 +      const u32 *reg;
  
        if (via != 0)
                return 1;
        if (vias == NULL)
                return 0;
  
 -      reg = (u32 *)get_property(vias, "reg", NULL);
 +      reg = get_property(vias, "reg", NULL);
        if (reg == NULL) {
                printk(KERN_ERR "via-pmu: No \"reg\" property !\n");
                goto fail;
                
                gpiop = of_find_node_by_name(NULL, "gpio");
                if (gpiop) {
 -                      reg = (u32 *)get_property(gpiop, "reg", NULL);
 +                      reg = get_property(gpiop, "reg", NULL);
                        if (reg)
                                gaddr = of_translate_address(gpiop, reg);
                        if (gaddr != OF_BAD_ADDR)
@@@ -479,9 -479,9 +479,9 @@@ static int __init via_pmu_dev_init(void
                pmu_batteries[1].flags |= PMU_BATT_TYPE_SMART;
        } else {
                struct device_node* prim = find_devices("power-mgt");
 -              u32 *prim_info = NULL;
 +              const u32 *prim_info = NULL;
                if (prim)
 -                      prim_info = (u32 *)get_property(prim, "prim-info", NULL);
 +                      prim_info = get_property(prim, "prim-info", NULL);
                if (prim_info) {
                        /* Other stuffs here yet unknown */
                        pmu_battery_count = (prim_info[6] >> 16) & 0xff;
@@@ -1995,6 -1995,8 +1995,8 @@@ restore_via_state(void
        out_8(&via[IER], IER_SET | SR_INT | CB1_INT);
  }
  
+ extern void pmu_backlight_set_sleep(int sleep);
  static int
  pmac_suspend_devices(void)
  {
                return -EBUSY;
        }
  
+ #ifdef CONFIG_PMAC_BACKLIGHT
+       /* Tell backlight code not to muck around with the chip anymore */
+       pmu_backlight_set_sleep(1);
+ #endif
        /* Call platform functions marked "on sleep" */
        pmac_pfunc_i2c_suspend();
        pmac_pfunc_base_suspend();
@@@ -2090,6 -2097,11 +2097,11 @@@ pmac_wakeup_devices(void
  {
        mdelay(100);
  
+ #ifdef CONFIG_PMAC_BACKLIGHT
+       /* Tell backlight code it can use the chip again */
+       pmu_backlight_set_sleep(0);
+ #endif
        /* Power back up system devices (including the PIC) */
        device_power_up();
  
@@@ -354,14 -354,15 +354,15 @@@ static struct backlight_properties riva
  
  static void riva_bl_set_power(struct fb_info *info, int power)
  {
-       if (info->bl_dev == NULL)
-               return;
        mutex_lock(&info->bl_mutex);
-       up(&info->bl_dev->sem);
-       info->bl_dev->props->power = power;
-       __riva_bl_update_status(info->bl_dev);
-       down(&info->bl_dev->sem);
+       if (info->bl_dev) {
+               down(&info->bl_dev->sem);
+               info->bl_dev->props->power = power;
+               __riva_bl_update_status(info->bl_dev);
+               up(&info->bl_dev->sem);
+       }
        mutex_unlock(&info->bl_mutex);
  }
  
@@@ -396,11 -397,11 +397,11 @@@ static void riva_bl_init(struct riva_pa
                0x534 * FB_BACKLIGHT_MAX / MAX_LEVEL);
        mutex_unlock(&info->bl_mutex);
  
-       up(&bd->sem);
+       down(&bd->sem);
        bd->props->brightness = riva_bl_data.max_brightness;
        bd->props->power = FB_BLANK_UNBLANK;
        bd->props->update_status(bd);
-       down(&bd->sem);
+       up(&bd->sem);
  
  #ifdef CONFIG_PMAC_BACKLIGHT
        mutex_lock(&pmac_backlight_mutex);
@@@ -1834,13 -1835,14 +1835,13 @@@ static int __devinit riva_get_EDID_OF(s
        NVTRACE_ENTER();
        dp = pci_device_to_OF_node(pd);
        for (; dp != NULL; dp = dp->child) {
 -              disptype = (unsigned char *)get_property(dp, "display-type", NULL);
 +              disptype = get_property(dp, "display-type", NULL);
                if (disptype == NULL)
                        continue;
                if (strncmp(disptype, "LCD", 3) != 0)
                        continue;
                for (i = 0; propnames[i] != NULL; ++i) {
 -                      pedid = (unsigned char *)
 -                              get_property(dp, propnames[i], NULL);
 +                      pedid = get_property(dp, propnames[i], NULL);
                        if (pedid != NULL) {
                                par->EDID = pedid;
                                NVTRACE("LCD found.\n");
@@@ -23,7 -23,6 +23,7 @@@
  register struct paca_struct *local_paca asm("r13");
  #define get_paca()    local_paca
  #define get_lppaca()  (get_paca()->lppaca_ptr)
 +#define get_slb_shadow()      (get_paca()->slb_shadow_ptr)
  
  struct task_struct;
  
@@@ -94,13 -93,12 +94,14 @@@ struct paca_struct 
        u64 saved_r1;                   /* r1 save for RTAS calls */
        u64 saved_msr;                  /* MSR saved here by enter_rtas */
        u8 proc_enabled;                /* irq soft-enable flag */
+       u8 io_sync;                     /* writel() needs spin_unlock sync */
  
        /* Stuff for accurate time accounting */
        u64 user_time;                  /* accumulated usermode TB ticks */
        u64 system_time;                /* accumulated system TB ticks */
        u64 startpurr;                  /* PURR/TB value snapshot */
 +
 +      struct slb_shadow *slb_shadow_ptr;
  };
  
  extern struct paca_struct paca[];