Commit 33d444f1 authored by Linus Torvalds's avatar Linus Torvalds

Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6

* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
  [SPARC]: Wire up signalfd/timerfd/eventfd syscalls.
  [SPARC64]: Add support for bq4802 TOD chip, as found on ultra45.
  [SPARC64]: Correct FIRE_IOMMU_FLUSHINV register offset.
  [SPARC64]: envctrl.c needs asm/io.h
  [SPARC64]: Update defconfig.
  [TTY]: Export proc_clear_tty() to modulea.
  [SPARC64]: pci_resource_adjust() cannot be __init.
  [SPARC64]: Spelling fixes.
  [SPARC]: Spelling fixes.
  [SPARC64]: Kill LARGE_ALLOCS and update defconfig.
parents ae7d5c86 8354c5b7
...@@ -88,7 +88,7 @@ void set_auxio(unsigned char bits_on, unsigned char bits_off) ...@@ -88,7 +88,7 @@ void set_auxio(unsigned char bits_on, unsigned char bits_off)
break; break;
case sun4m: case sun4m:
if(!auxio_register) if(!auxio_register)
break; /* VME chassic sun4m, no auxio. */ break; /* VME chassis sun4m, no auxio. */
regval = sbus_readb(auxio_register); regval = sbus_readb(auxio_register);
sbus_writeb(((regval | bits_on) & ~bits_off) | AUXIO_ORMEIN4M, sbus_writeb(((regval | bits_on) & ~bits_off) | AUXIO_ORMEIN4M,
auxio_register); auxio_register);
......
...@@ -617,7 +617,7 @@ void *pci_alloc_consistent(struct pci_dev *pdev, size_t len, dma_addr_t *pba) ...@@ -617,7 +617,7 @@ void *pci_alloc_consistent(struct pci_dev *pdev, size_t len, dma_addr_t *pba)
* size must be the same as what as passed into pci_alloc_consistent, * size must be the same as what as passed into pci_alloc_consistent,
* and likewise dma_addr must be the same as what *dma_addrp was set to. * and likewise dma_addr must be the same as what *dma_addrp was set to.
* *
* References to the memory and mappings assosciated with cpu_addr/dma_addr * References to the memory and mappings associated with cpu_addr/dma_addr
* past this call are illegal. * past this call are illegal.
*/ */
void pci_free_consistent(struct pci_dev *pdev, size_t n, void *p, dma_addr_t ba) void pci_free_consistent(struct pci_dev *pdev, size_t n, void *p, dma_addr_t ba)
......
/* $Id: irq.c,v 1.114 2001/12/11 04:55:51 davem Exp $ /* $Id: irq.c,v 1.114 2001/12/11 04:55:51 davem Exp $
* arch/sparc/kernel/irq.c: Interrupt request handling routines. On the * arch/sparc/kernel/irq.c: Interrupt request handling routines. On the
* Sparc the IRQ's are basically 'cast in stone' * Sparc the IRQs are basically 'cast in stone'
* and you are supposed to probe the prom's device * and you are supposed to probe the prom's device
* node trees to find out who's got which IRQ. * node trees to find out who's got which IRQ.
* *
...@@ -330,7 +330,7 @@ void handler_irq(int irq, struct pt_regs * regs) ...@@ -330,7 +330,7 @@ void handler_irq(int irq, struct pt_regs * regs)
irq_enter(); irq_enter();
disable_pil_irq(irq); disable_pil_irq(irq);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* Only rotate on lower priority IRQ's (scsi, ethernet, etc.). */ /* Only rotate on lower priority IRQs (scsi, ethernet, etc.). */
if((sparc_cpu_model==sun4m) && (irq < 10)) if((sparc_cpu_model==sun4m) && (irq < 10))
smp4m_irq_rotate(cpu); smp4m_irq_rotate(cpu);
#endif #endif
...@@ -371,7 +371,7 @@ void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs) ...@@ -371,7 +371,7 @@ void sparc_floppy_irq(int irq, void *dev_id, struct pt_regs *regs)
} }
#endif #endif
/* Fast IRQ's on the Sparc can only have one routine attached to them, /* Fast IRQs on the Sparc can only have one routine attached to them,
* thus no sharing possible. * thus no sharing possible.
*/ */
int request_fast_irq(unsigned int irq, int request_fast_irq(unsigned int irq,
...@@ -608,7 +608,7 @@ void __init init_IRQ(void) ...@@ -608,7 +608,7 @@ void __init init_IRQ(void)
break; break;
default: default:
prom_printf("Cannot initialize IRQ's on this Sun machine..."); prom_printf("Cannot initialize IRQs on this Sun machine...");
break; break;
} }
btfixup(); btfixup();
......
...@@ -755,7 +755,7 @@ void __init pci_time_init(void) ...@@ -755,7 +755,7 @@ void __init pci_time_init(void)
static __inline__ unsigned long do_gettimeoffset(void) static __inline__ unsigned long do_gettimeoffset(void)
{ {
/* /*
* We devide all to 100 * We divide all by 100
* to have microsecond resolution and to avoid overflow * to have microsecond resolution and to avoid overflow
*/ */
unsigned long count = unsigned long count =
...@@ -956,7 +956,7 @@ EXPORT_SYMBOL(pci_device_to_OF_node); ...@@ -956,7 +956,7 @@ EXPORT_SYMBOL(pci_device_to_OF_node);
* Also, think for a moment about likes of floppy.c that * Also, think for a moment about likes of floppy.c that
* include architecture specific parts. They may want to redefine ins/outs. * include architecture specific parts. They may want to redefine ins/outs.
* *
* We do not use horroble macroses here because we want to * We do not use horrible macros here because we want to
* advance pointer by sizeof(size). * advance pointer by sizeof(size).
*/ */
void outsb(unsigned long addr, const void *src, unsigned long count) void outsb(unsigned long addr, const void *src, unsigned long count)
......
...@@ -683,7 +683,7 @@ asmlinkage int sparc_execve(struct pt_regs *regs) ...@@ -683,7 +683,7 @@ asmlinkage int sparc_execve(struct pt_regs *regs)
* NOTE! Only a kernel-only process(ie the swapper or direct descendants * NOTE! Only a kernel-only process(ie the swapper or direct descendants
* who haven't done an "execve()") should use this: it will work within * who haven't done an "execve()") should use this: it will work within
* a system call from a "real" process, but the process memory space will * a system call from a "real" process, but the process memory space will
* not be free'd until both the parent and the child have exited. * not be freed until both the parent and the child have exited.
*/ */
pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{ {
......
...@@ -521,7 +521,7 @@ static void __init sun4d_init_timers(irq_handler_t counter_fn) ...@@ -521,7 +521,7 @@ static void __init sun4d_init_timers(irq_handler_t counter_fn)
lvl14_save[2] += smp4d_ticker - real_irq_entry; lvl14_save[2] += smp4d_ticker - real_irq_entry;
/* For SMP we use the level 14 ticker, however the bootup code /* For SMP we use the level 14 ticker, however the bootup code
* has copied the firmwares level 14 vector into boot cpu's * has copied the firmware's level 14 vector into the boot cpu's
* trap table, we must fix this now or we get squashed. * trap table, we must fix this now or we get squashed.
*/ */
local_irq_save(flags); local_irq_save(flags);
......
...@@ -299,7 +299,7 @@ static void __init sun4m_init_timers(irq_handler_t counter_fn) ...@@ -299,7 +299,7 @@ static void __init sun4m_init_timers(irq_handler_t counter_fn)
struct tt_entry *trap_table = &sparc_ttable[SP_TRAP_IRQ1 + (14 - 1)]; struct tt_entry *trap_table = &sparc_ttable[SP_TRAP_IRQ1 + (14 - 1)];
/* For SMP we use the level 14 ticker, however the bootup code /* For SMP we use the level 14 ticker, however the bootup code
* has copied the firmwares level 14 vector into boot cpu's * has copied the firmware's level 14 vector into the boot cpu's
* trap table, we must fix this now or we get squashed. * trap table, we must fix this now or we get squashed.
*/ */
local_irq_save(flags); local_irq_save(flags);
......
...@@ -80,7 +80,7 @@ sys_call_table: ...@@ -80,7 +80,7 @@ sys_call_table:
/*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare /*295*/ .long sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
/*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy /*300*/ .long sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy
/*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait /*305*/ .long sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
/*310*/ .long sys_utimensat /*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd, sys_eventfd
#ifdef CONFIG_SUNOS_EMUL #ifdef CONFIG_SUNOS_EMUL
/* Now the SunOS syscall table. */ /* Now the SunOS syscall table. */
...@@ -197,6 +197,7 @@ sunos_sys_table: ...@@ -197,6 +197,7 @@ sunos_sys_table:
.long sunos_nosys, sunos_nosys, sunos_nosys .long sunos_nosys, sunos_nosys, sunos_nosys
.long sunos_nosys, sunos_nosys, sunos_nosys .long sunos_nosys, sunos_nosys, sunos_nosys
.long sunos_nosys .long sunos_nosys
/*310*/ .long sunos_nosys /*310*/ .long sunos_nosys, sunos_nosys, sunos_nosys
.long sunos_nosys
#endif #endif
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
* Copyright (c) 2002 Pete Zaitcev (zaitcev@yahoo.com) * Copyright (c) 2002 Pete Zaitcev (zaitcev@yahoo.com)
* *
* We used to warn all over the code: DO NOT USE prom_printf(), * We used to warn all over the code: DO NOT USE prom_printf(),
* and yet people do. Anton's banking code was outputing banks * and yet people do. Anton's banking code was outputting banks
* with prom_printf for most of the 2.4 lifetime. Since an effective * with prom_printf for most of the 2.4 lifetime. Since an effective
* stick is not available, we deployed a carrot: an early printk * stick is not available, we deployed a carrot: an early printk
* through PROM by means of -p boot option. This ought to fix it. * through PROM by means of -p boot option. This ought to fix it.
......
...@@ -226,9 +226,6 @@ config ARCH_SPARSEMEM_DEFAULT ...@@ -226,9 +226,6 @@ config ARCH_SPARSEMEM_DEFAULT
def_bool y def_bool y
select SPARSEMEM_STATIC select SPARSEMEM_STATIC
config LARGE_ALLOCS
def_bool y
source "mm/Kconfig" source "mm/Kconfig"
config ISA config ISA
......
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.21 # Linux kernel version: 2.6.21
# Sun May 6 22:46:54 2007 # Fri May 11 14:31:45 2007
# #
CONFIG_SPARC=y CONFIG_SPARC=y
CONFIG_SPARC64=y CONFIG_SPARC64=y
...@@ -9,6 +9,7 @@ CONFIG_GENERIC_TIME=y ...@@ -9,6 +9,7 @@ CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_64BIT=y CONFIG_64BIT=y
CONFIG_MMU=y CONFIG_MMU=y
CONFIG_QUICKLIST=y
CONFIG_STACKTRACE_SUPPORT=y CONFIG_STACKTRACE_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y CONFIG_LOCKDEP_SUPPORT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y
...@@ -49,6 +50,7 @@ CONFIG_POSIX_MQUEUE=y ...@@ -49,6 +50,7 @@ CONFIG_POSIX_MQUEUE=y
# CONFIG_UTS_NS is not set # CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set # CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set # CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=18
CONFIG_SYSFS_DEPRECATED=y CONFIG_SYSFS_DEPRECATED=y
CONFIG_RELAY=y CONFIG_RELAY=y
# CONFIG_BLK_DEV_INITRD is not set # CONFIG_BLK_DEV_INITRD is not set
...@@ -66,14 +68,20 @@ CONFIG_BUG=y ...@@ -66,14 +68,20 @@ CONFIG_BUG=y
CONFIG_ELF_CORE=y CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y CONFIG_BASE_FULL=y
CONFIG_FUTEX=y CONFIG_FUTEX=y
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y CONFIG_VM_EVENT_COUNTERS=y
CONFIG_SLUB_DEBUG=y
# CONFIG_SLAB is not set
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_RT_MUTEXES=y CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set # CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0 CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set
# #
# Loadable module support # Loadable module support
...@@ -137,7 +145,6 @@ CONFIG_HUGETLB_PAGE_SIZE_4MB=y ...@@ -137,7 +145,6 @@ CONFIG_HUGETLB_PAGE_SIZE_4MB=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_LARGE_ALLOCS=y
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
# CONFIG_FLATMEM_MANUAL is not set # CONFIG_FLATMEM_MANUAL is not set
# CONFIG_DISCONTIGMEM_MANUAL is not set # CONFIG_DISCONTIGMEM_MANUAL is not set
...@@ -148,6 +155,7 @@ CONFIG_SPARSEMEM_STATIC=y ...@@ -148,6 +155,7 @@ CONFIG_SPARSEMEM_STATIC=y
CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_RESOURCES_64BIT=y CONFIG_RESOURCES_64BIT=y
CONFIG_ZONE_DMA_FLAG=0 CONFIG_ZONE_DMA_FLAG=0
CONFIG_NR_QUICK=1
CONFIG_SBUS=y CONFIG_SBUS=y
CONFIG_SBUSCHAR=y CONFIG_SBUSCHAR=y
CONFIG_SUN_AUXIO=y CONFIG_SUN_AUXIO=y
...@@ -305,6 +313,7 @@ CONFIG_NET_TCPPROBE=m ...@@ -305,6 +313,7 @@ CONFIG_NET_TCPPROBE=m
# CONFIG_WIRELESS_EXT is not set # CONFIG_WIRELESS_EXT is not set
# CONFIG_MAC80211 is not set # CONFIG_MAC80211 is not set
# CONFIG_IEEE80211 is not set # CONFIG_IEEE80211 is not set
# CONFIG_RFKILL is not set
# #
# Device Drivers # Device Drivers
...@@ -359,8 +368,10 @@ CONFIG_ATA_OVER_ETH=m ...@@ -359,8 +368,10 @@ CONFIG_ATA_OVER_ETH=m
# #
# Misc devices # Misc devices
# #
# CONFIG_PHANTOM is not set
# CONFIG_SGI_IOC4 is not set # CONFIG_SGI_IOC4 is not set
# CONFIG_TIFM_CORE is not set # CONFIG_TIFM_CORE is not set
# CONFIG_BLINK is not set
# #
# ATA/ATAPI/MFM/RLL support # ATA/ATAPI/MFM/RLL support
...@@ -379,6 +390,7 @@ CONFIG_BLK_DEV_IDECD=y ...@@ -379,6 +390,7 @@ CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDEFLOPPY is not set # CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_BLK_DEV_IDESCSI is not set # CONFIG_BLK_DEV_IDESCSI is not set
# CONFIG_IDE_TASK_IOCTL is not set # CONFIG_IDE_TASK_IOCTL is not set
CONFIG_IDE_PROC_FS=y
# #
# IDE chipset support/bugfixes # IDE chipset support/bugfixes
...@@ -386,6 +398,7 @@ CONFIG_BLK_DEV_IDECD=y ...@@ -386,6 +398,7 @@ CONFIG_BLK_DEV_IDECD=y
CONFIG_IDE_GENERIC=y CONFIG_IDE_GENERIC=y
CONFIG_BLK_DEV_IDEPCI=y CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set # CONFIG_IDEPCI_SHARE_IRQ is not set
CONFIG_IDEPCI_PCIBUS_ORDER=y
# CONFIG_BLK_DEV_OFFBOARD is not set # CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_GENERIC is not set # CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set # CONFIG_BLK_DEV_OPTI621 is not set
...@@ -521,6 +534,7 @@ CONFIG_DM_SNAPSHOT=m ...@@ -521,6 +534,7 @@ CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m CONFIG_DM_ZERO=m
# CONFIG_DM_MULTIPATH is not set # CONFIG_DM_MULTIPATH is not set
# CONFIG_DM_DELAY is not set
# #
# Fusion MPT device support # Fusion MPT device support
...@@ -533,6 +547,7 @@ CONFIG_DM_ZERO=m ...@@ -533,6 +547,7 @@ CONFIG_DM_ZERO=m
# #
# IEEE 1394 (FireWire) support # IEEE 1394 (FireWire) support
# #
# CONFIG_FIREWIRE is not set
# CONFIG_IEEE1394 is not set # CONFIG_IEEE1394 is not set
# #
...@@ -629,6 +644,8 @@ CONFIG_BNX2=m ...@@ -629,6 +644,8 @@ CONFIG_BNX2=m
# CONFIG_S2IO is not set # CONFIG_S2IO is not set
# CONFIG_MYRI10GE is not set # CONFIG_MYRI10GE is not set
# CONFIG_NETXEN_NIC is not set # CONFIG_NETXEN_NIC is not set
# CONFIG_MLX4_CORE is not set
CONFIG_MLX4_DEBUG=y
# #
# Token Ring devices # Token Ring devices
...@@ -641,6 +658,16 @@ CONFIG_BNX2=m ...@@ -641,6 +658,16 @@ CONFIG_BNX2=m
# CONFIG_WLAN_PRE80211 is not set # CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set # CONFIG_WLAN_80211 is not set
#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
# #
# Wan interfaces # Wan interfaces
# #
...@@ -711,11 +738,18 @@ CONFIG_MOUSE_PS2_LIFEBOOK=y ...@@ -711,11 +738,18 @@ CONFIG_MOUSE_PS2_LIFEBOOK=y
CONFIG_MOUSE_PS2_TRACKPOINT=y CONFIG_MOUSE_PS2_TRACKPOINT=y
# CONFIG_MOUSE_PS2_TOUCHKIT is not set # CONFIG_MOUSE_PS2_TOUCHKIT is not set
CONFIG_MOUSE_SERIAL=y CONFIG_MOUSE_SERIAL=y
# CONFIG_MOUSE_APPLETOUCH is not set
# CONFIG_MOUSE_VSXXXAA is not set # CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set # CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set # CONFIG_INPUT_TOUCHSCREEN is not set
CONFIG_INPUT_MISC=y CONFIG_INPUT_MISC=y
CONFIG_INPUT_SPARCSPKR=y CONFIG_INPUT_SPARCSPKR=y
# CONFIG_INPUT_ATI_REMOTE is not set
# CONFIG_INPUT_ATI_REMOTE2 is not set
# CONFIG_INPUT_KEYSPAN_REMOTE is not set
# CONFIG_INPUT_POWERMATE is not set
# CONFIG_INPUT_YEALINK is not set
# CONFIG_INPUT_UINPUT is not set # CONFIG_INPUT_UINPUT is not set
# CONFIG_INPUT_POLLDEV is not set # CONFIG_INPUT_POLLDEV is not set
...@@ -762,14 +796,9 @@ CONFIG_UNIX98_PTYS=y ...@@ -762,14 +796,9 @@ CONFIG_UNIX98_PTYS=y
# IPMI # IPMI
# #
# CONFIG_IPMI_HANDLER is not set # CONFIG_IPMI_HANDLER is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set # CONFIG_WATCHDOG is not set
# CONFIG_HW_RANDOM is not set # CONFIG_HW_RANDOM is not set
CONFIG_RTC=y CONFIG_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set # CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set # CONFIG_APPLICOM is not set
# CONFIG_DRM is not set # CONFIG_DRM is not set
...@@ -779,6 +808,7 @@ CONFIG_RTC=y ...@@ -779,6 +808,7 @@ CONFIG_RTC=y
# TPM devices # TPM devices
# #
# CONFIG_TCG_TPM is not set # CONFIG_TCG_TPM is not set
CONFIG_DEVPORT=y
CONFIG_I2C=y CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_CHARDEV is not set # CONFIG_I2C_CHARDEV is not set
...@@ -841,13 +871,10 @@ CONFIG_I2C_ALGOBIT=y ...@@ -841,13 +871,10 @@ CONFIG_I2C_ALGOBIT=y
# Dallas's 1-wire bus # Dallas's 1-wire bus
# #
# CONFIG_W1 is not set # CONFIG_W1 is not set
#
# Hardware Monitoring support
#
CONFIG_HWMON=y CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set # CONFIG_HWMON_VID is not set
# CONFIG_SENSORS_ABITUGURU is not set # CONFIG_SENSORS_ABITUGURU is not set
# CONFIG_SENSORS_AD7418 is not set
# CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1026 is not set
...@@ -874,6 +901,7 @@ CONFIG_HWMON=y ...@@ -874,6 +901,7 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_LM90 is not set # CONFIG_SENSORS_LM90 is not set
# CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_MAX6650 is not set
# CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_PC87427 is not set # CONFIG_SENSORS_PC87427 is not set
# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SIS5595 is not set
...@@ -901,23 +929,30 @@ CONFIG_HWMON=y ...@@ -901,23 +929,30 @@ CONFIG_HWMON=y
# Multimedia devices # Multimedia devices
# #
# CONFIG_VIDEO_DEV is not set # CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DAB is not set
# #
# Digital Video Broadcasting Devices # Graphics support
# #
# CONFIG_DVB is not set # CONFIG_BACKLIGHT_LCD_SUPPORT is not set
# CONFIG_USB_DABUSB is not set
# #
# Graphics support # Display device support
# #
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set # CONFIG_DISPLAY_SUPPORT is not set
# CONFIG_VGASTATE is not set
CONFIG_FB=y CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set # CONFIG_FIRMWARE_EDID is not set
CONFIG_FB_DDC=y CONFIG_FB_DDC=y
CONFIG_FB_CFB_FILLRECT=y CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_SYS_FOPS is not set
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set # CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set # CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set # CONFIG_FB_BACKLIGHT is not set
...@@ -949,7 +984,10 @@ CONFIG_FB_RADEON_I2C=y ...@@ -949,7 +984,10 @@ CONFIG_FB_RADEON_I2C=y
# CONFIG_FB_KYRO is not set # CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set # CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set # CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_VT8623 is not set
# CONFIG_FB_TRIDENT is not set # CONFIG_FB_TRIDENT is not set
# CONFIG_FB_ARK is not set
# CONFIG_FB_PM3 is not set
# CONFIG_FB_XVR500 is not set # CONFIG_FB_XVR500 is not set
# CONFIG_FB_XVR2500 is not set # CONFIG_FB_XVR2500 is not set
# CONFIG_FB_PCI is not set # CONFIG_FB_PCI is not set
...@@ -972,10 +1010,6 @@ CONFIG_FONTS=y ...@@ -972,10 +1010,6 @@ CONFIG_FONTS=y
CONFIG_FONT_SUN8x16=y CONFIG_FONT_SUN8x16=y
# CONFIG_FONT_SUN12x22 is not set # CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set # CONFIG_FONT_10x18 is not set
#
# Logo configuration
#
CONFIG_LOGO=y CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set # CONFIG_LOGO_LINUX_VGA16 is not set
...@@ -1083,6 +1117,7 @@ CONFIG_SND_ALI5451=m ...@@ -1083,6 +1117,7 @@ CONFIG_SND_ALI5451=m
# USB devices # USB devices
# #
# CONFIG_SND_USB_AUDIO is not set # CONFIG_SND_USB_AUDIO is not set
# CONFIG_SND_USB_CAIAQ is not set
# #
# ALSA Sparc devices # ALSA Sparc devices
...@@ -1092,7 +1127,7 @@ CONFIG_SND_SUN_CS4231=m ...@@ -1092,7 +1127,7 @@ CONFIG_SND_SUN_CS4231=m
# CONFIG_SND_SUN_DBRI is not set # CONFIG_SND_SUN_DBRI is not set
# #
# SoC audio support # System on Chip audio support
# #
# CONFIG_SND_SOC is not set # CONFIG_SND_SOC is not set
...@@ -1177,38 +1212,11 @@ CONFIG_USB_STORAGE=m ...@@ -1177,38 +1212,11 @@ CONFIG_USB_STORAGE=m
# CONFIG_USB_STORAGE_KARMA is not set # CONFIG_USB_STORAGE_KARMA is not set
# CONFIG_USB_LIBUSUAL is not set # CONFIG_USB_LIBUSUAL is not set
#
# USB Input Devices
#
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_ACECAD is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE 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_ATI_REMOTE2 is not set
# CONFIG_USB_KEYSPAN_REMOTE is not set
# CONFIG_USB_APPLETOUCH is not set
# CONFIG_USB_GTCO is not set
# #
# USB Imaging devices # USB Imaging devices
# #
# CONFIG_USB_MDC800 is not set # CONFIG_USB_MDC800 is not set
# CONFIG_USB_MICROTEK is not set # CONFIG_USB_MICROTEK is not set
#
# USB Network Adapters
#
# CONFIG_USB_CATC is not set
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
# CONFIG_USB_MON is not set # CONFIG_USB_MON is not set
# #
...@@ -1252,10 +1260,6 @@ CONFIG_USB_STORAGE=m ...@@ -1252,10 +1260,6 @@ CONFIG_USB_STORAGE=m
# USB Gadget Support # USB Gadget Support
# #
# CONFIG_USB_GADGET is not set # CONFIG_USB_GADGET is not set
#
# MMC/SD Card support
#
# CONFIG_MMC is not set # CONFIG_MMC is not set
# #
...@@ -1298,14 +1302,6 @@ CONFIG_USB_STORAGE=m ...@@ -1298,14 +1302,6 @@ CONFIG_USB_STORAGE=m
# DMA Devices # DMA Devices
# #
#
# Auxiliary Display support
#
#
# Virtualization
#
# #
# Misc Linux/SPARC drivers # Misc Linux/SPARC drivers
# #
...@@ -1486,11 +1482,9 @@ CONFIG_DEBUG_FS=y ...@@ -1486,11 +1482,9 @@ CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set # CONFIG_HEADERS_CHECK is not set
CONFIG_DEBUG_KERNEL=y CONFIG_DEBUG_KERNEL=y
# CONFIG_DEBUG_SHIRQ is not set # CONFIG_DEBUG_SHIRQ is not set
CONFIG_LOG_BUF_SHIFT=18
CONFIG_DETECT_SOFTLOCKUP=y CONFIG_DETECT_SOFTLOCKUP=y
CONFIG_SCHEDSTATS=y CONFIG_SCHEDSTATS=y
# CONFIG_TIMER_STATS is not set # CONFIG_TIMER_STATS is not set
# CONFIG_DEBUG_SLAB is not set
# CONFIG_DEBUG_RT_MUTEXES is not set # CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set # CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_SPINLOCK is not set
...@@ -1574,6 +1568,7 @@ CONFIG_CRYPTO_TEST=m ...@@ -1574,6 +1568,7 @@ CONFIG_CRYPTO_TEST=m
CONFIG_BITREVERSE=y CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m CONFIG_CRC_CCITT=m
CONFIG_CRC16=m CONFIG_CRC16=m
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y CONFIG_CRC32=y
CONFIG_LIBCRC32C=m CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_INFLATE=y
...@@ -1581,3 +1576,4 @@ CONFIG_ZLIB_DEFLATE=y ...@@ -1581,3 +1576,4 @@ CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include <asm/timer.h> #include <asm/timer.h>
#include <asm/cpudata.h> #include <asm/cpudata.h>
/* Used to synchronize acceses to NatSemi SUPER I/O chip configure /* Used to synchronize accesses to NatSemi SUPER I/O chip configure
* operations in asm/ns87303.h * operations in asm/ns87303.h
*/ */
DEFINE_SPINLOCK(ns87303_lock); DEFINE_SPINLOCK(ns87303_lock);
......
...@@ -596,7 +596,7 @@ static void __init build_device_resources(struct of_device *op, ...@@ -596,7 +596,7 @@ static void __init build_device_resources(struct of_device *op,
/* Convert to num-entries. */ /* Convert to num-entries. */
num_reg /= na + ns; num_reg /= na + ns;
/* Prevent overruning the op->resources[] array. */ /* Prevent overrunning the op->resources[] array. */
if (num_reg > PROMREG_MAX) { if (num_reg > PROMREG_MAX) {
printk(KERN_WARNING "%s: Too many regs (%d), " printk(KERN_WARNING "%s: Too many regs (%d), "
"limiting to %d.\n", "limiting to %d.\n",
...@@ -904,7 +904,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp, ...@@ -904,7 +904,7 @@ static struct of_device * __init scan_one_device(struct device_node *dp,
op->num_irqs = 0; op->num_irqs = 0;
} }
/* Prevent overruning the op->irqs[] array. */ /* Prevent overrunning the op->irqs[] array. */
if (op->num_irqs > PROMINTR_MAX) { if (op->num_irqs > PROMINTR_MAX) {
printk(KERN_WARNING "%s: Too many irqs (%d), " printk(KERN_WARNING "%s: Too many irqs (%d), "
"limiting to %d.\n", "limiting to %d.\n",
......
...@@ -495,7 +495,7 @@ static void __devinit apb_calc_first_last(u8 map, u32 *first_p, u32 *last_p) ...@@ -495,7 +495,7 @@ static void __devinit apb_calc_first_last(u8 map, u32 *first_p, u32 *last_p)
*last_p = last; *last_p = last;
} }
static void __init pci_resource_adjust(struct resource *res, static void pci_resource_adjust(struct resource *res,
struct resource *root) struct resource *root)
{ {
res->start += root->start; res->start += root->start;
......
...@@ -37,7 +37,7 @@ static void pci_fire_scan_bus(struct pci_pbm_info *pbm) ...@@ -37,7 +37,7 @@ static void pci_fire_scan_bus(struct pci_pbm_info *pbm)
#define FIRE_IOMMU_CONTROL 0x40000UL #define FIRE_IOMMU_CONTROL 0x40000UL
#define FIRE_IOMMU_TSBBASE 0x40008UL #define FIRE_IOMMU_TSBBASE 0x40008UL
#define FIRE_IOMMU_FLUSH 0x40100UL #define FIRE_IOMMU_FLUSH 0x40100UL
#define FIRE_IOMMU_FLUSHINV 0x40100UL #define FIRE_IOMMU_FLUSHINV 0x40108UL
static void pci_fire_pbm_iommu_init(struct pci_pbm_info *pbm) static void pci_fire_pbm_iommu_init(struct pci_pbm_info *pbm)
{ {
......
...@@ -542,7 +542,7 @@ static inline void fill_sg(iopte_t *iopte, struct scatterlist *sg, ...@@ -542,7 +542,7 @@ static inline void fill_sg(iopte_t *iopte, struct scatterlist *sg,
/* Map a set of buffers described by SGLIST with NELEMS array /* Map a set of buffers described by SGLIST with NELEMS array
* elements in streaming mode for PCI DMA. * elements in streaming mode for PCI DMA.
* When making changes here, inspect the assembly output. I was having * When making changes here, inspect the assembly output. I was having
* hard time to kepp this routine out of using stack slots for holding variables. * hard time to keep this routine out of using stack slots for holding variables.
*/ */
static int pci_4u_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, int direction) static int pci_4u_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, int direction)
{ {
......
...@@ -731,7 +731,7 @@ struct pci_sun4v_msiq_entry { ...@@ -731,7 +731,7 @@ struct pci_sun4v_msiq_entry {
u64 msi_address; u64 msi_address;
/* The format of this value is message type dependant. /* The format of this value is message type dependent.
* For MSI bits 15:0 are the data from the MSI packet. * For MSI bits 15:0 are the data from the MSI packet.
* For MSI-X bits 31:0 are the data from the MSI packet. * For MSI-X bits 31:0 are the data from the MSI packet.
* For MSG, the message code and message routing code where: * For MSG, the message code and message routing code where:
......
...@@ -677,7 +677,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, ...@@ -677,7 +677,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,
* NOTE! Only a kernel-only process(ie the swapper or direct descendants * NOTE! Only a kernel-only process(ie the swapper or direct descendants
* who haven't done an "execve()") should use this: it will work within * who haven't done an "execve()") should use this: it will work within
* a system call from a "real" process, but the process memory space will * a system call from a "real" process, but the process memory space will
* not be free'd until both the parent and the child have exited. * not be freed until both the parent and the child have exited.
*/ */
pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags) pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{ {
......
...@@ -899,7 +899,7 @@ static unsigned int fire_irq_build(struct device_node *dp, ...@@ -899,7 +899,7 @@ static unsigned int fire_irq_build(struct device_node *dp,
/* The interrupt map registers do not have an INO field /* The interrupt map registers do not have an INO field
* like other chips do. They return zero in the INO * like other chips do. They return zero in the INO
* field, and the interrupt controller number is controlled * field, and the interrupt controller number is controlled
* in bits 6 thru 9. So in order for build_irq() to get * in bits 6 to 9. So in order for build_irq() to get
* the INO right we pass it in as part of the fixup * the INO right we pass it in as part of the fixup
* which will get added to the map register zero value * which will get added to the map register zero value
* read by build_irq(). * read by build_irq().
......
...@@ -81,7 +81,7 @@ sys_call_table32: ...@@ -81,7 +81,7 @@ sys_call_table32:
.word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare .word sys_fchmodat, sys_faccessat, compat_sys_pselect6, compat_sys_ppoll, sys_unshare
/*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages, compat_sys_mbind, compat_sys_get_mempolicy /*300*/ .word compat_sys_set_robust_list, compat_sys_get_robust_list, compat_sys_migrate_pages, compat_sys_mbind, compat_sys_get_mempolicy
.word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait
/*310*/ .word compat_sys_utimensat /*310*/ .word compat_sys_utimensat, compat_sys_signalfd, compat_sys_timerfd, sys_eventfd
#endif /* CONFIG_COMPAT */ #endif /* CONFIG_COMPAT */
...@@ -153,7 +153,7 @@ sys_call_table: ...@@ -153,7 +153,7 @@ sys_call_table:
.word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare .word sys_fchmodat, sys_faccessat, sys_pselect6, sys_ppoll, sys_unshare
/*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy /*300*/ .word sys_set_robust_list, sys_get_robust_list, sys_migrate_pages, sys_mbind, sys_get_mempolicy
.word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait
/*310*/ .word sys_utimensat /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd, sys_eventfd
#if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \
defined(CONFIG_SOLARIS_EMUL_MODULE) defined(CONFIG_SOLARIS_EMUL_MODULE)
...@@ -271,6 +271,7 @@ sunos_sys_table: ...@@ -271,6 +271,7 @@ sunos_sys_table:
.word sunos_nosys, sunos_nosys, sunos_nosys .word sunos_nosys, sunos_nosys, sunos_nosys
.word sunos_nosys, sunos_nosys, sunos_nosys .word sunos_nosys, sunos_nosys, sunos_nosys
.word sunos_nosys .word sunos_nosys
/*310*/ .long sunos_nosys /*310*/ .word sunos_nosys, sunos_nosys, sunos_nosys
.word sunos_nosys
#endif #endif
...@@ -55,6 +55,7 @@ DEFINE_SPINLOCK(rtc_lock); ...@@ -55,6 +55,7 @@ DEFINE_SPINLOCK(rtc_lock);
void __iomem *mstk48t02_regs = NULL; void __iomem *mstk48t02_regs = NULL;
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
unsigned long ds1287_regs = 0UL; unsigned long ds1287_regs = 0UL;
static void __iomem *bq4802_regs;
#endif #endif
static void __iomem *mstk48t08_regs; static void __iomem *mstk48t08_regs;
...@@ -565,12 +566,14 @@ static void __init set_system_time(void) ...@@ -565,12 +566,14 @@ static void __init set_system_time(void)
void __iomem *mregs = mstk48t02_regs; void __iomem *mregs = mstk48t02_regs;
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
unsigned long dregs = ds1287_regs; unsigned long dregs = ds1287_regs;
void __iomem *bregs = bq4802_regs;
#else #else
unsigned long dregs = 0UL; unsigned long dregs = 0UL;
void __iomem *bregs = 0UL;
#endif #endif
u8 tmp; u8 tmp;
if (!mregs && !dregs) { if (!mregs && !dregs && !bregs) {
prom_printf("Something wrong, clock regs not mapped yet.\n"); prom_printf("Something wrong, clock regs not mapped yet.\n");
prom_halt(); prom_halt();
} }
...@@ -589,6 +592,33 @@ static void __init set_system_time(void) ...@@ -589,6 +592,33 @@ static void __init set_system_time(void)
day = MSTK_REG_DOM(mregs); day = MSTK_REG_DOM(mregs);
mon = MSTK_REG_MONTH(mregs); mon = MSTK_REG_MONTH(mregs);
year = MSTK_CVT_YEAR( MSTK_REG_YEAR(mregs) ); year = MSTK_CVT_YEAR( MSTK_REG_YEAR(mregs) );
} else if (bregs) {
unsigned char val = readb(bregs + 0x0e);
unsigned int century;
/* BQ4802 RTC chip. */
writeb(val | 0x08, bregs + 0x0e);
sec = readb(bregs + 0x00);
min = readb(bregs + 0x02);
hour = readb(bregs + 0x04);
day = readb(bregs + 0x06);
mon = readb(bregs + 0x09);
year = readb(bregs + 0x0a);
century = readb(bregs + 0x0f);
writeb(val, bregs + 0x0e);
BCD_TO_BIN(sec);
BCD_TO_BIN(min);
BCD_TO_BIN(hour);
BCD_TO_BIN(day);
BCD_TO_BIN(mon);
BCD_TO_BIN(year);
BCD_TO_BIN(century);
year += (century * 100);
} else { } else {
/* Dallas 12887 RTC chip. */ /* Dallas 12887 RTC chip. */
...@@ -712,7 +742,8 @@ static int __init clock_model_matches(const char *model) ...@@ -712,7 +742,8 @@ static int __init clock_model_matches(const char *model)
strcmp(model, "m5819") && strcmp(model, "m5819") &&
strcmp(model, "m5819p") && strcmp(model, "m5819p") &&
strcmp(model, "m5823") && strcmp(model, "m5823") &&
strcmp(model, "ds1287")) strcmp(model, "ds1287") &&
strcmp(model, "bq4802"))
return 0; return 0;
return 1; return 1;
...@@ -722,9 +753,13 @@ static int __devinit clock_probe(struct of_device *op, const struct of_device_id ...@@ -722,9 +753,13 @@ static int __devinit clock_probe(struct of_device *op, const struct of_device_id
{ {
struct device_node *dp = op->node; struct device_node *dp = op->node;
const char *model = of_get_property(dp, "model", NULL); const char *model = of_get_property(dp, "model", NULL);
const char *compat = of_get_property(dp, "compatible", NULL);
unsigned long size, flags; unsigned long size, flags;
void __iomem *regs; void __iomem *regs;
if (!model)
model = compat;
if (!model || !clock_model_matches(model)) if (!model || !clock_model_matches(model))
return -ENODEV; return -ENODEV;
...@@ -746,6 +781,8 @@ static int __devinit clock_probe(struct of_device *op, const struct of_device_id ...@@ -746,6 +781,8 @@ static int __devinit clock_probe(struct of_device *op, const struct of_device_id
!strcmp(model, "m5819p") || !strcmp(model, "m5819p") ||
!strcmp(model, "m5823")) { !strcmp(model, "m5823")) {
ds1287_regs = (unsigned long) regs; ds1287_regs = (unsigned long) regs;
} else if (!strcmp(model, "bq4802")) {
bq4802_regs = regs;
} else } else
#endif #endif
if (model[5] == '0' && model[6] == '2') { if (model[5] == '0' && model[6] == '2') {
...@@ -1070,8 +1107,10 @@ static int set_rtc_mmss(unsigned long nowtime) ...@@ -1070,8 +1107,10 @@ static int set_rtc_mmss(unsigned long nowtime)
void __iomem *mregs = mstk48t02_regs; void __iomem *mregs = mstk48t02_regs;
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
unsigned long dregs = ds1287_regs; unsigned long dregs = ds1287_regs;
void __iomem *bregs = bq4802_regs;
#else #else
unsigned long dregs = 0UL; unsigned long dregs = 0UL;
void __iomem *bregs = 0UL;
#endif #endif
unsigned long flags; unsigned long flags;
u8 tmp; u8 tmp;
...@@ -1080,7 +1119,7 @@ static int set_rtc_mmss(unsigned long nowtime) ...@@ -1080,7 +1119,7 @@ static int set_rtc_mmss(unsigned long nowtime)
* Not having a register set can lead to trouble. * Not having a register set can lead to trouble.
* Also starfire doesn't have a tod clock. * Also starfire doesn't have a tod clock.
*/ */
if (!mregs && !dregs) if (!mregs && !dregs & !bregs)
return -1; return -1;
if (mregs) { if (mregs) {
...@@ -1129,6 +1168,37 @@ static int set_rtc_mmss(unsigned long nowtime) ...@@ -1129,6 +1168,37 @@ static int set_rtc_mmss(unsigned long nowtime)
return -1; return -1;
} }
} else if (bregs) {
int retval = 0;
unsigned char val = readb(bregs + 0x0e);
/* BQ4802 RTC chip. */
writeb(val | 0x08, bregs + 0x0e);
chip_minutes = readb(bregs + 0x02);
BCD_TO_BIN(chip_minutes);
real_seconds = nowtime % 60;
real_minutes = nowtime / 60;
if (((abs(real_minutes - chip_minutes) + 15)/30) & 1)
real_minutes += 30;
real_minutes %= 60;
if (abs(real_minutes - chip_minutes) < 30) {
BIN_TO_BCD(real_seconds);
BIN_TO_BCD(real_minutes);
writeb(real_seconds, bregs + 0x00);
writeb(real_minutes, bregs + 0x02);
} else {
printk(KERN_WARNING
"set_rtc_mmss: can't update from %d to %d\n",
chip_minutes, real_minutes);
retval = -1;
}
writeb(val, bregs + 0x0e);
return retval;
} else { } else {
int retval = 0; int retval = 0;
unsigned char save_control, save_freq_select; unsigned char save_control, save_freq_select;
...@@ -1259,38 +1329,152 @@ static void to_tm(int tim, struct rtc_time *tm) ...@@ -1259,38 +1329,152 @@ static void to_tm(int tim, struct rtc_time *tm)
/* Both Starfire and SUN4V give us seconds since Jan 1st, 1970, /* Both Starfire and SUN4V give us seconds since Jan 1st, 1970,
* aka Unix time. So we have to convert to/from rtc_time. * aka Unix time. So we have to convert to/from rtc_time.
*/ */
static inline void mini_get_rtc_time(struct rtc_time *time) static void starfire_get_rtc_time(struct rtc_time *time)
{ {
unsigned long flags; u32 seconds = starfire_get_time();
u32 seconds;
spin_lock_irqsave(&rtc_lock, flags); to_tm(seconds, time);
seconds = 0; time->tm_year -= 1900;
if (this_is_starfire) time->tm_mon -= 1;
seconds = starfire_get_time(); }
else if (tlb_type == hypervisor)
seconds = hypervisor_get_time(); static int starfire_set_rtc_time(struct rtc_time *time)
spin_unlock_irqrestore(&rtc_lock, flags); {
u32 seconds = mktime(time->tm_year + 1900, time->tm_mon + 1,
time->tm_mday, time->tm_hour,
time->tm_min, time->tm_sec);
return starfire_set_time(seconds);
}
static void hypervisor_get_rtc_time(struct rtc_time *time)
{
u32 seconds = hypervisor_get_time();
to_tm(seconds, time); to_tm(seconds, time);
time->tm_year -= 1900; time->tm_year -= 1900;
time->tm_mon -= 1; time->tm_mon -= 1;
} }
static inline int mini_set_rtc_time(struct rtc_time *time) static int hypervisor_set_rtc_time(struct rtc_time *time)
{ {
u32 seconds = mktime(time->tm_year + 1900, time->tm_mon + 1, u32 seconds = mktime(time->tm_year + 1900, time->tm_mon + 1,
time->tm_mday, time->tm_hour, time->tm_mday, time->tm_hour,
time->tm_min, time->tm_sec); time->tm_min, time->tm_sec);
return hypervisor_set_time(seconds);
}
static void bq4802_get_rtc_time(struct rtc_time *time)
{
unsigned char val = readb(bq4802_regs + 0x0e);
unsigned int century;
writeb(val | 0x08, bq4802_regs + 0x0e);
time->tm_sec = readb(bq4802_regs + 0x00);
time->tm_min = readb(bq4802_regs + 0x02);
time->tm_hour = readb(bq4802_regs + 0x04);
time->tm_mday = readb(bq4802_regs + 0x06);
time->tm_mon = readb(bq4802_regs + 0x09);
time->tm_year = readb(bq4802_regs + 0x0a);
time->tm_wday = readb(bq4802_regs + 0x08);
century = readb(bq4802_regs + 0x0f);
writeb(val, bq4802_regs + 0x0e);
BCD_TO_BIN(time->tm_sec);
BCD_TO_BIN(time->tm_min);
BCD_TO_BIN(time->tm_hour);
BCD_TO_BIN(time->tm_mday);
BCD_TO_BIN(time->tm_mon);
BCD_TO_BIN(time->tm_year);
BCD_TO_BIN(time->tm_wday);
BCD_TO_BIN(century);
time->tm_year += (century * 100);
time->tm_year -= 1900;
time->tm_mon--;
}
static int bq4802_set_rtc_time(struct rtc_time *time)
{
unsigned char val = readb(bq4802_regs + 0x0e);
unsigned char sec, min, hrs, day, mon, yrs, century;
unsigned int year;
year = time->tm_year + 1900;
century = year / 100;
yrs = year % 100;
mon = time->tm_mon + 1; /* tm_mon starts at zero */
day = time->tm_mday;
hrs = time->tm_hour;
min = time->tm_min;
sec = time->tm_sec;
BIN_TO_BCD(sec);
BIN_TO_BCD(min);
BIN_TO_BCD(hrs);
BIN_TO_BCD(day);
BIN_TO_BCD(mon);
BIN_TO_BCD(yrs);
BIN_TO_BCD(century);
writeb(val | 0x08, bq4802_regs + 0x0e);
writeb(sec, bq4802_regs + 0x00);
writeb(min, bq4802_regs + 0x02);
writeb(hrs, bq4802_regs + 0x04);
writeb(day, bq4802_regs + 0x06);
writeb(mon, bq4802_regs + 0x09);
writeb(yrs, bq4802_regs + 0x0a);
writeb(century, bq4802_regs + 0x0f);
writeb(val, bq4802_regs + 0x0e);
return 0;
}
struct mini_rtc_ops {
void (*get_rtc_time)(struct rtc_time *);
int (*set_rtc_time)(struct rtc_time *);
};
static struct mini_rtc_ops starfire_rtc_ops = {
.get_rtc_time = starfire_get_rtc_time,
.set_rtc_time = starfire_set_rtc_time,
};
static struct mini_rtc_ops hypervisor_rtc_ops = {
.get_rtc_time = hypervisor_get_rtc_time,
.set_rtc_time = hypervisor_set_rtc_time,
};
static struct mini_rtc_ops bq4802_rtc_ops = {
.get_rtc_time = bq4802_get_rtc_time,
.set_rtc_time = bq4802_set_rtc_time,
};
static struct mini_rtc_ops *mini_rtc_ops;
static inline void mini_get_rtc_time(struct rtc_time *time)
{
unsigned long flags;
spin_lock_irqsave(&rtc_lock, flags);
mini_rtc_ops->get_rtc_time(time);
spin_unlock_irqrestore(&rtc_lock, flags);
}
static inline int mini_set_rtc_time(struct rtc_time *time)
{
unsigned long flags; unsigned long flags;
int err; int err;
spin_lock_irqsave(&rtc_lock, flags); spin_lock_irqsave(&rtc_lock, flags);
err = -ENODEV; err = mini_rtc_ops->set_rtc_time(time);
if (this_is_starfire)
err = starfire_set_time(seconds);
else if (tlb_type == hypervisor)
err = hypervisor_set_time(seconds);
spin_unlock_irqrestore(&rtc_lock, flags); spin_unlock_irqrestore(&rtc_lock, flags);
return err; return err;
...@@ -1391,7 +1575,13 @@ static int __init rtc_mini_init(void) ...@@ -1391,7 +1575,13 @@ static int __init rtc_mini_init(void)
{ {
int retval; int retval;
if (tlb_type != hypervisor && !this_is_starfire) if (tlb_type == hypervisor)
mini_rtc_ops = &hypervisor_rtc_ops;
else if (this_is_starfire)
mini_rtc_ops = &starfire_rtc_ops;
else if (bq4802_regs)
mini_rtc_ops = &bq4802_rtc_ops;
else
return -ENODEV; return -ENODEV;
printk(KERN_INFO "Mini RTC Driver\n"); printk(KERN_INFO "Mini RTC Driver\n");
......
...@@ -1008,7 +1008,7 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail, ...@@ -1008,7 +1008,7 @@ static unsigned long __init bootmem_init(unsigned long *pages_avail,
if (initrd_start) { if (initrd_start) {
size = initrd_end - initrd_start; size = initrd_end - initrd_start;
/* Resert the initrd image area. */ /* Reserve the initrd image area. */
#ifdef CONFIG_DEBUG_BOOTMEM #ifdef CONFIG_DEBUG_BOOTMEM
prom_printf("reserve_bootmem(initrd): base[%llx] size[%lx]\n", prom_printf("reserve_bootmem(initrd): base[%llx] size[%lx]\n",
initrd_start, initrd_end); initrd_start, initrd_end);
......
...@@ -3880,6 +3880,7 @@ void proc_clear_tty(struct task_struct *p) ...@@ -3880,6 +3880,7 @@ void proc_clear_tty(struct task_struct *p)
p->signal->tty = NULL; p->signal->tty = NULL;
spin_unlock_irq(&p->sighand->siglock); spin_unlock_irq(&p->sighand->siglock);
} }
EXPORT_SYMBOL(proc_clear_tty);
static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty) static void __proc_set_tty(struct task_struct *tsk, struct tty_struct *tty)
{ {
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <asm/ebus.h> #include <asm/ebus.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/envctrl.h> #include <asm/envctrl.h>
#include <asm/io.h>
#define ENVCTRL_MINOR 162 #define ENVCTRL_MINOR 162
......
...@@ -327,8 +327,11 @@ ...@@ -327,8 +327,11 @@
#define __NR_getcpu 308 #define __NR_getcpu 308
#define __NR_epoll_pwait 309 #define __NR_epoll_pwait 309
#define __NR_utimensat 310 #define __NR_utimensat 310
#define __NR_signalfd 311
#define __NR_timerfd 312
#define __NR_eventfd 313
#define NR_SYSCALLS 311 #define NR_SYSCALLS 314
#ifdef __KERNEL__ #ifdef __KERNEL__
#define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_IPC_PARSE_VERSION
......
...@@ -329,8 +329,11 @@ ...@@ -329,8 +329,11 @@
#define __NR_getcpu 308 #define __NR_getcpu 308
#define __NR_epoll_pwait 309 #define __NR_epoll_pwait 309
#define __NR_utimensat 310 #define __NR_utimensat 310
#define __NR_signalfd 311
#define __NR_timerfd 312
#define __NR_eventfd 313
#define NR_SYSCALLS 311 #define NR_SYSCALLS 314
#ifdef __KERNEL__ #ifdef __KERNEL__
/* sysconf options, for SunOS compatibility */ /* sysconf options, for SunOS compatibility */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment