Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
165bcfcf
Commit
165bcfcf
authored
Apr 27, 2004
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://xfs.org:8090/xfs-linux-2.6
into ppc970.osdl.org:/home/torvalds/v2.6/linux
parents
4c9ff8d0
abfd7fc4
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
1438 additions
and
849 deletions
+1438
-849
arch/ppc/4xx_io/serial_sicc.c
arch/ppc/4xx_io/serial_sicc.c
+7
-19
arch/ppc/Kconfig
arch/ppc/Kconfig
+1
-1
arch/ppc/configs/k2_defconfig
arch/ppc/configs/k2_defconfig
+192
-125
arch/ppc/configs/prpmc750_defconfig
arch/ppc/configs/prpmc750_defconfig
+159
-164
arch/ppc/kernel/signal.c
arch/ppc/kernel/signal.c
+1
-1
arch/ppc/platforms/Makefile
arch/ppc/platforms/Makefile
+2
-2
arch/ppc/platforms/chrp_setup.c
arch/ppc/platforms/chrp_setup.c
+3
-0
arch/ppc/platforms/k2.c
arch/ppc/platforms/k2.c
+616
-0
arch/ppc/platforms/k2_setup.c
arch/ppc/platforms/k2_setup.c
+0
-354
arch/ppc/platforms/lopec_setup.c
arch/ppc/platforms/lopec_setup.c
+3
-0
arch/ppc/platforms/mcpn765.c
arch/ppc/platforms/mcpn765.c
+2
-3
arch/ppc/platforms/mvme5100_setup.c
arch/ppc/platforms/mvme5100_setup.c
+1
-0
arch/ppc/platforms/pplus.c
arch/ppc/platforms/pplus.c
+2
-0
arch/ppc/platforms/prep_setup.c
arch/ppc/platforms/prep_setup.c
+6
-1
arch/ppc/platforms/prpmc750.c
arch/ppc/platforms/prpmc750.c
+367
-0
arch/ppc/platforms/prpmc750.h
arch/ppc/platforms/prpmc750.h
+38
-18
arch/ppc/platforms/prpmc750_pci.c
arch/ppc/platforms/prpmc750_pci.c
+0
-145
arch/ppc/platforms/sandpoint.c
arch/ppc/platforms/sandpoint.c
+2
-0
arch/ppc/syslib/Makefile
arch/ppc/syslib/Makefile
+1
-1
arch/ppc/syslib/cpc710.h
arch/ppc/syslib/cpc710.h
+2
-0
arch/ppc/syslib/open_pic.c
arch/ppc/syslib/open_pic.c
+27
-14
arch/ppc64/mm/numa.c
arch/ppc64/mm/numa.c
+2
-0
fs/dquot.c
fs/dquot.c
+0
-1
include/asm-ppc/elf.h
include/asm-ppc/elf.h
+2
-0
include/asm-ppc/open_pic.h
include/asm-ppc/open_pic.h
+2
-0
No files found.
arch/ppc/4xx_io/serial_sicc.c
View file @
165bcfcf
...
...
@@ -32,6 +32,7 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/signal.h>
#include <linux/sched.h>
...
...
@@ -190,10 +191,6 @@
#define FALSE 0
#endif
#define DEBUG 0
/*
* Things needed by tty driver
*/
...
...
@@ -763,9 +760,7 @@ static void siccuart_change_speed(struct SICC_info *info, struct termios *old_te
cflag
=
info
->
tty
->
termios
->
c_cflag
;
#ifdef DEBUG
printk
(
"siccuart_set_cflag(0x%x) called
\n
"
,
cflag
);
#endif
pr_debug
(
"siccuart_set_cflag(0x%x) called
\n
"
,
cflag
);
/* byte size and parity */
switch
(
cflag
&
CSIZE
)
{
case
CS7
:
lcr_h
=
_LCR_PE_DISABLE
|
_LCR_DB_7_BITS
|
_LCR_SB_1_BIT
;
bits
=
9
;
break
;
...
...
@@ -1027,9 +1022,7 @@ static void siccuart_flush_buffer(struct tty_struct *tty)
struct
SICC_info
*
info
=
tty
->
driver_data
;
unsigned
long
flags
;
#ifdef DEBUG
printk
(
"siccuart_flush_buffer(%d) called
\n
"
,
tty
->
index
);
#endif
pr_debug
(
"siccuart_flush_buffer(%d) called
\n
"
,
tty
->
index
);
save_flags
(
flags
);
cli
();
info
->
xmit
.
head
=
info
->
xmit
.
tail
=
0
;
restore_flags
(
flags
);
...
...
@@ -1433,9 +1426,7 @@ static void siccuart_close(struct tty_struct *tty, struct file *filp)
state
=
info
->
state
;
#ifdef DEBUG
//printk("siccuart_close() called\n");
#endif
//pr_debug("siccuart_close() called\n");
save_flags
(
flags
);
cli
();
...
...
@@ -1544,11 +1535,9 @@ static void siccuart_wait_until_sent(struct tty_struct *tty, int timeout)
timeout
=
2
*
info
->
timeout
;
expire
=
jiffies
+
timeout
;
#ifdef DEBUG
printk
(
"siccuart_wait_until_sent(%d), jiff=%lu, expire=%lu char_time=%lu...
\n
"
,
pr_debug
(
"siccuart_wait_until_sent(%d), jiff=%lu, expire=%lu char_time=%lu...
\n
"
,
tty
->
index
,
jiffies
,
expire
,
char_time
);
#endif
while
((
readb
(
info
->
port
->
uart_base
+
BL_SICC_LSR
)
&
_LSR_TX_ALL
)
!=
_LSR_TX_ALL
)
{
set_current_state
(
TASK_INTERRUPTIBLE
);
schedule_timeout
(
char_time
);
...
...
@@ -1831,9 +1820,8 @@ static int siccuart_console_read(struct console *co, const char *s, u_int count)
unsigned
int
status
;
char
*
w
;
int
c
;
#ifdef DEBUG
printk
(
"siccuart_console_read() called
\n
"
);
#endif
pr_debug
(
"siccuart_console_read() called
\n
"
);
c
=
0
;
w
=
s
;
...
...
arch/ppc/Kconfig
View file @
165bcfcf
...
...
@@ -609,7 +609,7 @@ config PPC_OF
config PPC_GEN550
bool
depends on SANDPOINT || MCPN765 || SPRUCE || PPLUS || PCORE
depends on SANDPOINT || MCPN765 || SPRUCE || PPLUS || PCORE
|| PRPMC750 || K2
default y
config FORCE
...
...
arch/ppc/configs/k2_defconfig
View file @
165bcfcf
...
...
@@ -4,23 +4,39 @@
CONFIG_MMU=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_HAVE_DEC_LOCK=y
CONFIG_PPC=y
CONFIG_PPC32=y
CONFIG_GENERIC_NVRAM=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_STANDALONE=y
CONFIG_BROKEN_ON_SMP=y
#
# General setup
#
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_EMBEDDED is not set
# CONFIG_HOTPLUG is not set
# CONFIG_IKCONFIG is not set
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
#
# Loadable module support
...
...
@@ -33,24 +49,25 @@ CONFIG_OBSOLETE_MODPARM=y
CONFIG_KMOD=y
#
# P
latform support
# P
rocessor
#
CONFIG_PPC=y
CONFIG_PPC32=y
CONFIG_6xx=y
# CONFIG_40x is not set
# CONFIG_44x is not set
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
# CONFIG_8xx is not set
# CONFIG_ALTIVEC is not set
# CONFIG_TAU is not set
# CONFIG_CPU_FREQ is not set
CONFIG_PPC_STD_MMU=y
#
#
IBM 4xx
options
#
Platform
options
#
# CONFIG_8260 is not set
CONFIG_GENERIC_ISA_DMA=y
CONFIG_PPC_STD_MMU=y
# CONFIG_PPC_MULTIPLATFORM is not set
# CONFIG_APUS is not set
# CONFIG_WILLOW
_2
is not set
# CONFIG_WILLOW is not set
# CONFIG_PCORE is not set
# CONFIG_POWERPMC250 is not set
# CONFIG_EV64260 is not set
...
...
@@ -66,34 +83,29 @@ CONFIG_PPC_STD_MMU=y
CONFIG_K2=y
# CONFIG_PAL4 is not set
# CONFIG_GEMINI is not set
# CONFIG_EST8260 is not set
# CONFIG_SBS8260 is not set
# CONFIG_RPX6 is not set
# CONFIG_TQM8260 is not set
CONFIG_PPC_GEN550=y
# CONFIG_CPC710_DATA_GATHERING is not set
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set
# CONFIG_ALTIVEC is not set
# CONFIG_TAU is not set
# CONFIG_CPU_FREQ is not set
# CONFIG_HIGHMEM is not set
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="ip=on"
#
#
General setup
#
Bus options
#
# CONFIG_HIGHMEM is not set
CONFIG_GENERIC_ISA_DMA=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_PCI_LEGACY_PROC is not set
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
# CONFIG_PPC601_SYNC_FIX is not set
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="ip=on"
#
# Advanced setup
...
...
@@ -109,15 +121,27 @@ CONFIG_KERNEL_START=0xc0000000
CONFIG_TASK_SIZE=0x80000000
CONFIG_BOOT_LOAD=0x00800000
#
# Device Drivers
#
#
# Generic Driver Options
#
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Plug and Play support
#
# CONFIG_PNP is not set
#
# Block devices
...
...
@@ -128,53 +152,89 @@ CONFIG_BOOT_LOAD=0x00800000
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_CARMEL is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
# CONFIG_LBD is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
#
# ATA/IDE/MFM/RLL support
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
#
# IDE, ATA and ATAPI Block devices
#
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_IDEDISK_STROKE is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_IDE_TASK_IOCTL is not set
# CONFIG_IDE_TASKFILE_IO is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_BLK_DEV_IDEPCI is not set
# CONFIG_IDE_GENERIC is not set
CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set
# CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_SL82C105 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
# CONFIG_IDEDMA_PCI_AUTO is not set
CONFIG_BLK_DEV_ADMA=y
# CONFIG_BLK_DEV_AEC62XX is not set
CONFIG_BLK_DEV_ALI15X3=y
# CONFIG_WDC_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_HD is not set
#
# SCSI support
# SCSI
device
support
#
# CONFIG_SCSI is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
(EXPERIMENTAL)
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set
...
...
@@ -183,6 +243,10 @@ CONFIG_BLK_DEV_IDEDISK=y
#
# CONFIG_I2O is not set
#
# Macintosh device drivers
#
#
# Networking support
#
...
...
@@ -194,8 +258,6 @@ CONFIG_NET=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK_DEV is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
...
...
@@ -208,12 +270,19 @@ CONFIG_IP_PNP_DHCP=y
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
#
# IP: Virtual Server Configuration
#
# CONFIG_IP_VS is not set
# CONFIG_IPV6 is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
#
# IP: Netfilter Configuration
#
...
...
@@ -225,11 +294,13 @@ CONFIG_IP_NF_FTP=m
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
# CONFIG_IP_NF_MATCH_IPRANGE is not set
CONFIG_IP_NF_MATCH_MAC=m
CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
# CONFIG_IP_NF_MATCH_RECENT is not set
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
...
...
@@ -239,15 +310,15 @@ CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_HELPER=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_CONNTRACK=m
CONFIG_IP_NF_MATCH_UNCLEAN=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_MIRROR=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
# CONFIG_IP_NF_TARGET_NETMAP is not set
# CONFIG_IP_NF_TARGET_SAME is not set
# CONFIG_IP_NF_NAT_LOCAL is not set
# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
CONFIG_IP_NF_NAT_FTP=m
...
...
@@ -257,21 +328,22 @@ CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
# CONFIG_IP_NF_ARP_MANGLE is not set
CONFIG_IP_NF_COMPAT_IPCHAINS=m
# CONFIG_IP_NF_COMPAT_IPFWADM is not set
# CONFIG_IPV6 is not set
# CONFIG_XFRM_USER is not set
# CONFIG_IP_NF_RAW is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_LLC is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
...
...
@@ -289,17 +361,21 @@ CONFIG_IPV6_SCTP__=y
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
#
# Ethernet (10 or 100Mbit)
...
...
@@ -321,6 +397,7 @@ CONFIG_NET_PCI=y
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_DGRS is not set
CONFIG_EEPRO100=y
# CONFIG_EEPRO100_PIO is not set
...
...
@@ -353,51 +430,39 @@ CONFIG_EEPRO100=y
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_S2IO is not set
#
#
Wireless LAN (non-hamradio)
#
Token Ring devices
#
# CONFIG_
NET_RADIO
is not set
# CONFIG_
TR
is not set
#
#
Token Ring devices (depends on LLC=y
)
#
Wireless LAN (non-hamradio
)
#
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
# CONFIG_NET_RADIO is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
#
# ISDN subsystem
#
# CONFIG_ISDN
_BOOL
is not set
# CONFIG_ISDN is not set
#
#
Graphics s
upport
#
Telephony S
upport
#
# CONFIG_FB is not set
#
# Old CD-ROM drivers (not SCSI, not IDE)
#
# CONFIG_CD_NO_IDESCSI is not set
# CONFIG_PHONE is not set
#
# Input device support
...
...
@@ -414,18 +479,16 @@ CONFIG_EEPRO100=y
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
# CONFIG_SERIO is not set
# CONFIG_SERIO_I8042 is not set
#
# Input Device Drivers
#
#
# Macintosh device drivers
#
#
# Character devices
#
# CONFIG_VT is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
...
...
@@ -433,6 +496,7 @@ CONFIG_SOUND_GAMEPORT=y
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=2
# CONFIG_SERIAL_8250_EXTENDED is not set
#
...
...
@@ -441,26 +505,8 @@ CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# I2C support
#
# CONFIG_I2C is not set
#
# I2C Hardware Sensors Mainboard support
#
#
# I2C Hardware Sensors Chip support
#
# CONFIG_I2C_SENSOR is not set
#
# Mice
#
# CONFIG_BUSMOUSE is not set
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
# CONFIG_QIC02_TAPE is not set
#
...
...
@@ -486,7 +532,15 @@ CONFIG_GEN_RTC=y
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HANGCHECK_TIMER is not set
#
# I2C support
#
# CONFIG_I2C is not set
#
# Misc devices
#
#
# Multimedia devices
...
...
@@ -498,6 +552,26 @@ CONFIG_GEN_RTC=y
#
# CONFIG_DVB is not set
#
# Graphics support
#
# CONFIG_FB is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
#
# File systems
#
...
...
@@ -530,10 +604,12 @@ CONFIG_EXT2_FS=y
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
# CONFIG_DEVPTS_FS_XATTR is not set
CONFIG_TMPFS=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
#
...
...
@@ -542,6 +618,7 @@ CONFIG_RAMFS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
...
...
@@ -558,12 +635,13 @@ CONFIG_RAMFS=y
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
# CONFIG_EXPORTFS is not set
CONFIG_SUNRPC=y
# CONFIG_
SUNRPC_GSS
is not set
# CONFIG_
RPCSEC_GSS_KRB5
is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
...
...
@@ -578,20 +656,9 @@ CONFIG_SUNRPC=y
CONFIG_MSDOS_PARTITION=y
#
#
Sound
#
Native Language Support
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
# CONFIG_USB_GADGET is not set
#
# Bluetooth support
#
# CONFIG_BT is not set
# CONFIG_NLS is not set
#
# Library routines
...
...
@@ -602,7 +669,7 @@ CONFIG_MSDOS_PARTITION=y
# Kernel hacking
#
# CONFIG_DEBUG_KERNEL is not set
# CONFIG_
KALLSYMS
is not set
# CONFIG_
SERIAL_TEXT_DEBUG
is not set
#
# Security options
...
...
arch/ppc/configs/prpmc750_defconfig
View file @
165bcfcf
...
...
@@ -4,23 +4,39 @@
CONFIG_MMU=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_HAVE_DEC_LOCK=y
CONFIG_PPC=y
CONFIG_PPC32=y
CONFIG_GENERIC_NVRAM=y
#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_STANDALONE=y
CONFIG_BROKEN_ON_SMP=y
#
# General setup
#
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_HOTPLUG is not set
# CONFIG_IKCONFIG is not set
CONFIG_EMBEDDED=y
# CONFIG_KALLSYMS is not set
CONFIG_FUTEX=y
# CONFIG_EPOLL is not set
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
#
# Loadable module support
...
...
@@ -33,24 +49,25 @@ CONFIG_OBSOLETE_MODPARM=y
CONFIG_KMOD=y
#
# P
latform support
# P
rocessor
#
CONFIG_PPC=y
CONFIG_PPC32=y
CONFIG_6xx=y
# CONFIG_40x is not set
# CONFIG_44x is not set
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
# CONFIG_8xx is not set
# CONFIG_ALTIVEC is not set
# CONFIG_TAU is not set
# CONFIG_CPU_FREQ is not set
CONFIG_PPC_STD_MMU=y
#
#
IBM 4xx
options
#
Platform
options
#
# CONFIG_8260 is not set
CONFIG_GENERIC_ISA_DMA=y
CONFIG_PPC_STD_MMU=y
# CONFIG_PPC_MULTIPLATFORM is not set
# CONFIG_APUS is not set
# CONFIG_WILLOW
_2
is not set
# CONFIG_WILLOW is not set
# CONFIG_PCORE is not set
# CONFIG_POWERPMC250 is not set
# CONFIG_EV64260 is not set
...
...
@@ -66,33 +83,28 @@ CONFIG_PRPMC750=y
# CONFIG_K2 is not set
# CONFIG_PAL4 is not set
# CONFIG_GEMINI is not set
# CONFIG_EST8260 is not set
# CONFIG_SBS8260 is not set
# CONFIG_RPX6 is not set
# CONFIG_TQM8260 is not set
CONFIG_PPC_GEN550=y
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set
# CONFIG_ALTIVEC is not set
# CONFIG_TAU is not set
# CONFIG_CPU_FREQ is not set
# CONFIG_HIGHMEM is not set
CONFIG_KERNEL_ELF=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="ip=on"
#
#
General setup
#
Bus options
#
# CONFIG_HIGHMEM is not set
CONFIG_GENERIC_ISA_DMA=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_KCORE_ELF=y
CONFIG_BINFMT_ELF=y
CONFIG_KERNEL_ELF=y
# CONFIG_BINFMT_MISC is not set
# CONFIG_PCI_LEGACY_PROC is not set
# CONFIG_PCI_NAMES is not set
# CONFIG_HOTPLUG is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
# CONFIG_PPC601_SYNC_FIX is not set
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="ip=on"
#
# Advanced setup
...
...
@@ -108,15 +120,27 @@ CONFIG_KERNEL_START=0xc0000000
CONFIG_TASK_SIZE=0x80000000
CONFIG_BOOT_LOAD=0x00800000
#
# Device Drivers
#
#
# Generic Driver Options
#
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Plug and Play support
#
# CONFIG_PNP is not set
#
# Block devices
...
...
@@ -128,31 +152,34 @@ CONFIG_BOOT_LOAD=0x00800000
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_CARMEL is not set
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_INITRD=y
# CONFIG_LBD is not set
#
#
Multi-device support (RAID and LVM)
#
ATA/ATAPI/MFM/RLL support
#
# CONFIG_
MD
is not set
# CONFIG_
IDE
is not set
#
#
ATA/IDE/MFM/RLL
support
#
SCSI device
support
#
# CONFIG_
IDE
is not set
# CONFIG_
SCSI
is not set
#
#
SCSI support
#
Multi-device support (RAID and LVM)
#
# CONFIG_
SCSI
is not set
# CONFIG_
MD
is not set
#
# Fusion MPT device support
#
# CONFIG_FUSION is not set
#
# IEEE 1394 (FireWire) support
(EXPERIMENTAL)
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set
...
...
@@ -161,6 +188,10 @@ CONFIG_BLK_DEV_INITRD=y
#
# CONFIG_I2O is not set
#
# Macintosh device drivers
#
#
# Networking support
#
...
...
@@ -172,8 +203,6 @@ CONFIG_NET=y
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK_DEV is not set
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
...
...
@@ -187,71 +216,24 @@ CONFIG_IP_PNP_DHCP=y
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_INET_ECN is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
#
# IP: Netfilter Configuration
#
CONFIG_IP_NF_CONNTRACK=m
CONFIG_IP_NF_FTP=m
CONFIG_IP_NF_IRC=m
# CONFIG_IP_NF_TFTP is not set
# CONFIG_IP_NF_AMANDA is not set
# CONFIG_IP_NF_QUEUE is not set
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_LIMIT=m
CONFIG_IP_NF_MATCH_MAC=m
CONFIG_IP_NF_MATCH_PKTTYPE=m
CONFIG_IP_NF_MATCH_MARK=m
CONFIG_IP_NF_MATCH_MULTIPORT=m
CONFIG_IP_NF_MATCH_TOS=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_DSCP=m
CONFIG_IP_NF_MATCH_AH_ESP=m
CONFIG_IP_NF_MATCH_LENGTH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_TCPMSS=m
CONFIG_IP_NF_MATCH_HELPER=m
CONFIG_IP_NF_MATCH_STATE=m
CONFIG_IP_NF_MATCH_CONNTRACK=m
CONFIG_IP_NF_MATCH_UNCLEAN=m
CONFIG_IP_NF_MATCH_OWNER=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_MIRROR=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
# CONFIG_IP_NF_NAT_LOCAL is not set
# CONFIG_IP_NF_NAT_SNMP_BASIC is not set
CONFIG_IP_NF_NAT_IRC=m
CONFIG_IP_NF_NAT_FTP=m
# CONFIG_IP_NF_MANGLE is not set
# CONFIG_IP_NF_TARGET_LOG is not set
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_TCPMSS=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_COMPAT_IPCHAINS=m
# CONFIG_IP_NF_COMPAT_IPFWADM is not set
# CONFIG_IPV6 is not set
# CONFIG_
XFRM_US
ER is not set
# CONFIG_
NETFILT
ER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
CONFIG_IPV6_SCTP__=y
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_LLC is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
...
...
@@ -269,17 +251,21 @@ CONFIG_IPV6_SCTP__=y
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
#
# Ethernet (10 or 100Mbit)
...
...
@@ -294,13 +280,22 @@ CONFIG_MII=y
#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
CONFIG_NET_TULIP=y
# CONFIG_DE2104X is not set
CONFIG_TULIP=y
# CONFIG_TULIP_MWI is not set
CONFIG_TULIP_MMIO=y
# CONFIG_TULIP_NAPI is not set
# CONFIG_DE4X5 is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_DM9102 is not set
# CONFIG_HP100 is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_DGRS is not set
CONFIG_EEPRO100=y
# CONFIG_EEPRO100_PIO is not set
...
...
@@ -333,60 +328,53 @@ CONFIG_EEPRO100=y
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_S2IO is not set
#
#
Wireless LAN (non-hamradio)
#
Token Ring devices
#
# CONFIG_
NET_RADIO
is not set
# CONFIG_
TR
is not set
#
#
Token Ring devices (depends on LLC=y
)
#
Wireless LAN (non-hamradio
)
#
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
# CONFIG_NET_RADIO is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
#
# Amateur Radio support
#
# CONFIG_HAMRADIO is not set
#
# IrDA (infrared) support
#
# CONFIG_IRDA is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_RCPCI is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
#
# ISDN subsystem
#
# CONFIG_ISDN_BOOL is not set
#
# Graphics support
#
# CONFIG_FB is not set
# CONFIG_ISDN is not set
#
#
Old CD-ROM drivers (not SCSI, not IDE)
#
Telephony Support
#
# CONFIG_
CD_NO_IDESCSI
is not set
# CONFIG_
PHONE
is not set
#
# Input device support
#
# CONFIG_INPUT is not set
CONFIG_INPUT=y
#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set
#
# Input I/O drivers
...
...
@@ -394,18 +382,21 @@ CONFIG_EEPRO100=y
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
# CONFIG_SERIO is not set
# CONFIG_SERIO_I8042 is not set
#
# Input Device Drivers
#
#
# Macintosh device drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Character devices
#
# CONFIG_VT is not set
# CONFIG_SERIAL_NONSTANDARD is not set
#
...
...
@@ -413,6 +404,7 @@ CONFIG_SOUND_GAMEPORT=y
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set
#
...
...
@@ -421,26 +413,8 @@ CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
#
# I2C support
#
# CONFIG_I2C is not set
#
# I2C Hardware Sensors Mainboard support
#
#
# I2C Hardware Sensors Chip support
#
# CONFIG_I2C_SENSOR is not set
#
# Mice
#
CONFIG_BUSMOUSE=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
# CONFIG_QIC02_TAPE is not set
#
...
...
@@ -466,7 +440,15 @@ CONFIG_GEN_RTC=y
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HANGCHECK_TIMER is not set
#
# I2C support
#
# CONFIG_I2C is not set
#
# Misc devices
#
#
# Multimedia devices
...
...
@@ -478,6 +460,26 @@ CONFIG_GEN_RTC=y
#
# CONFIG_DVB is not set
#
# Graphics support
#
# CONFIG_FB is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
#
# File systems
#
...
...
@@ -515,10 +517,12 @@ CONFIG_FS_MBCACHE=y
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
# CONFIG_DEVFS_FS is not set
CONFIG_DEVPTS_FS=y
# CONFIG_DEVPTS_FS_XATTR is not set
CONFIG_TMPFS=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
#
...
...
@@ -527,6 +531,7 @@ CONFIG_RAMFS=y
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
...
...
@@ -543,12 +548,13 @@ CONFIG_RAMFS=y
CONFIG_NFS_FS=y
# CONFIG_NFS_V3 is not set
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
# CONFIG_NFSD is not set
CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
# CONFIG_EXPORTFS is not set
CONFIG_SUNRPC=y
# CONFIG_
SUNRPC_GSS
is not set
# CONFIG_
RPCSEC_GSS_KRB5
is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
...
...
@@ -563,31 +569,20 @@ CONFIG_SUNRPC=y
CONFIG_MSDOS_PARTITION=y
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
# CONFIG_USB is not set
# CONFIG_USB_GADGET is not set
#
# Bluetooth support
# Native Language Support
#
# CONFIG_
BT
is not set
# CONFIG_
NLS
is not set
#
# Library routines
#
# CONFIG_CRC32 is not set
CONFIG_CRC32=y
#
# Kernel hacking
#
# CONFIG_DEBUG_KERNEL is not set
# CONFIG_
KALLSYMS
is not set
# CONFIG_
SERIAL_TEXT_DEBUG
is not set
#
# Security options
...
...
arch/ppc/kernel/signal.c
View file @
165bcfcf
...
...
@@ -33,7 +33,7 @@
#include <asm/pgtable.h>
#include <asm/cacheflush.h>
#
define DEBUG_SIG 0
#
undef DEBUG_SIG
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
...
...
arch/ppc/platforms/Makefile
View file @
165bcfcf
...
...
@@ -33,7 +33,7 @@ obj-$(CONFIG_EST8260) += est8260_setup.o
obj-$(CONFIG_TQM8260)
+=
tqm8260_setup.o
obj-$(CONFIG_EV64260)
+=
ev64260_setup.o
obj-$(CONFIG_GEMINI)
+=
gemini_pci.o gemini_setup.o gemini_prom.o
obj-$(CONFIG_K2)
+=
k2
_setup.o k2_pci
.o
obj-$(CONFIG_K2)
+=
k2.o
obj-$(CONFIG_LOPEC)
+=
lopec_setup.o lopec_pci.o
obj-$(CONFIG_MCPN765)
+=
mcpn765.o
obj-$(CONFIG_MENF1)
+=
menf1_setup.o menf1_pci.o
...
...
@@ -42,7 +42,7 @@ obj-$(CONFIG_PAL4) += pal4_setup.o pal4_pci.o
obj-$(CONFIG_PCORE)
+=
pcore.o
obj-$(CONFIG_POWERPMC250)
+=
powerpmc250.o
obj-$(CONFIG_PPLUS)
+=
pplus.o
obj-$(CONFIG_PRPMC750)
+=
prpmc750
_setup.o prpmc750_pci
.o
obj-$(CONFIG_PRPMC750)
+=
prpmc750.o
obj-$(CONFIG_PRPMC800)
+=
prpmc800_setup.o prpmc800_pci.o
obj-$(CONFIG_SANDPOINT)
+=
sandpoint.o
obj-$(CONFIG_SPRUCE)
+=
spruce.o
...
...
arch/ppc/platforms/chrp_setup.c
View file @
165bcfcf
...
...
@@ -407,6 +407,9 @@ void __init chrp_init_IRQ(void)
OpenPIC_NumInitSenses
=
NR_IRQS
-
NUM_8259_INTERRUPTS
;
openpic_init
(
NUM_8259_INTERRUPTS
);
/* We have a cascade on OpenPIC IRQ 0, Linux IRQ 16 */
openpic_hookup_cascade
(
NUM_8259_INTERRUPTS
,
"82c59 cascade"
,
i8259_irq
);
for
(
i
=
0
;
i
<
NUM_8259_INTERRUPTS
;
i
++
)
irq_desc
[
i
].
handler
=
&
i8259_pic
;
...
...
arch/ppc/platforms/k2
_pci
.c
→
arch/ppc/platforms/k2.c
View file @
165bcfcf
/*
* arch/ppc/platforms/k2
_pci
.c
* arch/ppc/platforms/k2.c
*
*
PCI support
for SBS K2
*
Board setup routines
for SBS K2
*
* Author: Matt Porter <mporter@mvista.com>
*
* 2001 (c) MontaVista, Software, Inc. This file is licensed under
* Updated by: Randy Vinson <rvinson@mvista.com.
*
* 2001-2004 (c) MontaVista, Software, Inc. This file is licensed under
* the terms of the GNU General Public License version 2. This program
* is licensed "as is" without any warranty of any kind, whether express
* or implied.
*/
#include <linux/config.h>
#include <linux/stddef.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/reboot.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <asm/byteorder.h>
#include <linux/kdev_t.h>
#include <linux/types.h>
#include <linux/major.h>
#include <linux/initrd.h>
#include <linux/console.h>
#include <linux/delay.h>
#include <linux/ide.h>
#include <linux/irq.h>
#include <linux/seq_file.h>
#include <linux/root_dev.h>
#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/machdep.h>
#include <asm/pci-bridge.h>
#include <asm/time.h>
#include <asm/i8259.h>
#include <asm/todc.h>
#include <asm/bootinfo.h>
#include <syslib/cpc710.h>
#include "k2.h"
#undef DEBUG
#ifdef DEBUG
#define DBG(x...) printk(x)
#else
#define DBG(x...)
#endif
/* DEBUG */
extern
unsigned
long
loops_per_jiffy
;
extern
void
gen550_progress
(
char
*
,
unsigned
short
);
static
unsigned
int
cpu_7xx
[
16
]
=
{
0
,
15
,
14
,
0
,
0
,
13
,
5
,
9
,
6
,
11
,
8
,
10
,
16
,
12
,
7
,
0
};
static
unsigned
int
cpu_6xx
[
16
]
=
{
0
,
0
,
14
,
0
,
0
,
13
,
5
,
9
,
6
,
11
,
8
,
10
,
0
,
12
,
7
,
0
};
static
inline
int
__init
k2_map_irq
(
struct
pci_dev
*
dev
,
unsigned
char
idsel
,
unsigned
char
pin
)
...
...
@@ -41,8 +63,7 @@ k2_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
* Check our hose index. If we are zero then we are on the
* local PCI hose, otherwise we are on the cPCI hose.
*/
if
(
!
hose
->
index
)
{
if
(
!
hose
->
index
)
{
static
char
pci_irq_table
[][
4
]
=
/*
* PCI IDSEL/INTPIN->INTLINE
...
...
@@ -67,9 +88,7 @@ k2_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
};
const
long
min_idsel
=
3
,
max_idsel
=
17
,
irqs_per_slot
=
4
;
return
PCI_IRQ_TABLE_LOOKUP
;
}
else
{
}
else
{
static
char
pci_irq_table
[][
4
]
=
/*
* PCI IDSEL/INTPIN->INTLINE
...
...
@@ -98,16 +117,15 @@ void k2_pcibios_fixup(void)
* Enable DMA support on hdc
*/
ide_dev
=
pci_find_device
(
PCI_VENDOR_ID_AL
,
PCI_DEVICE_ID_AL_M5229
,
NULL
);
PCI_DEVICE_ID_AL_M5229
,
NULL
);
if
(
ide_dev
)
{
unsigned
long
ide_dma_base
;
ide_dma_base
=
pci_resource_start
(
ide_dev
,
4
);
outb
(
0x00
,
ide_dma_base
+
0x2
);
outb
(
0x20
,
ide_dma_base
+
0xa
);
outb
(
0x00
,
ide_dma_base
+
0x2
);
outb
(
0x20
,
ide_dma_base
+
0xa
);
}
#endif
}
...
...
@@ -117,11 +135,9 @@ void k2_pcibios_fixup_resources(struct pci_dev *dev)
int
i
;
if
((
dev
->
vendor
==
PCI_VENDOR_ID_IBM
)
&&
(
dev
->
device
==
PCI_DEVICE_ID_IBM_CPC710_PCI64
))
{
DBG
(
"Fixup CPC710 resources
\n
"
);
for
(
i
=
0
;
i
<
DEVICE_COUNT_RESOURCE
;
i
++
)
{
(
dev
->
device
==
PCI_DEVICE_ID_IBM_CPC710_PCI64
))
{
pr_debug
(
"Fixup CPC710 resources
\n
"
);
for
(
i
=
0
;
i
<
DEVICE_COUNT_RESOURCE
;
i
++
)
{
dev
->
resource
[
i
].
start
=
0
;
dev
->
resource
[
i
].
end
=
0
;
}
...
...
@@ -141,37 +157,37 @@ void k2_setup_hoses(void)
__raw_writel
(
0x808000e0
,
PGCHP
);
/* Set FPHB mode */
/* PCI32 mappings */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
PIBAR
);
/* PCI I/O base */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
PMBAR
);
/* PCI Mem base */
__raw_writel
(
0xf0000000
,
K2_PCI32_BAR
+
MSIZE
);
/* 256MB */
__raw_writel
(
0xfff00000
,
K2_PCI32_BAR
+
IOSIZE
);
/* 1MB */
__raw_writel
(
0xc0000000
,
K2_PCI32_BAR
+
SMBAR
);
/* Base@0xc0000000 */
__raw_writel
(
0x80000000
,
K2_PCI32_BAR
+
SIBAR
);
/* Base@0x80000000 */
__raw_writel
(
0x000000c0
,
K2_PCI32_BAR
+
PSSIZE
);
/* 1GB space */
__raw_writel
(
0x000000c0
,
K2_PCI32_BAR
+
PPSIZE
);
/* 1GB space */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
BARPS
);
/* Base@0x00000000 */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
BARPP
);
/* Base@0x00000000 */
__raw_writel
(
0x00000080
,
K2_PCI32_BAR
+
PSBAR
);
/* Base@0x80 */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
PPBAR
);
__raw_writel
(
0xc0000000
,
K2_PCI32_BAR
+
BPMDLK
);
__raw_writel
(
0xd0000000
,
K2_PCI32_BAR
+
TPMDLK
);
__raw_writel
(
0x80000000
,
K2_PCI32_BAR
+
BIODLK
);
__raw_writel
(
0x80100000
,
K2_PCI32_BAR
+
TIODLK
);
__raw_writel
(
0xe0008000
,
K2_PCI32_BAR
+
DLKCTRL
);
__raw_writel
(
0xffffffff
,
K2_PCI32_BAR
+
DLKDEV
);
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
PIBAR
);
/* PCI I/O base */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
PMBAR
);
/* PCI Mem base */
__raw_writel
(
0xf0000000
,
K2_PCI32_BAR
+
MSIZE
);
/* 256MB */
__raw_writel
(
0xfff00000
,
K2_PCI32_BAR
+
IOSIZE
);
/* 1MB */
__raw_writel
(
0xc0000000
,
K2_PCI32_BAR
+
SMBAR
);
/* Base@0xc0000000 */
__raw_writel
(
0x80000000
,
K2_PCI32_BAR
+
SIBAR
);
/* Base@0x80000000 */
__raw_writel
(
0x000000c0
,
K2_PCI32_BAR
+
PSSIZE
);
/* 1GB space */
__raw_writel
(
0x000000c0
,
K2_PCI32_BAR
+
PPSIZE
);
/* 1GB space */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
BARPS
);
/* Base@0x00000000 */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
BARPP
);
/* Base@0x00000000 */
__raw_writel
(
0x00000080
,
K2_PCI32_BAR
+
PSBAR
);
/* Base@0x80 */
__raw_writel
(
0x00000000
,
K2_PCI32_BAR
+
PPBAR
);
__raw_writel
(
0xc0000000
,
K2_PCI32_BAR
+
BPMDLK
);
__raw_writel
(
0xd0000000
,
K2_PCI32_BAR
+
TPMDLK
);
__raw_writel
(
0x80000000
,
K2_PCI32_BAR
+
BIODLK
);
__raw_writel
(
0x80100000
,
K2_PCI32_BAR
+
TIODLK
);
__raw_writel
(
0xe0008000
,
K2_PCI32_BAR
+
DLKCTRL
);
__raw_writel
(
0xffffffff
,
K2_PCI32_BAR
+
DLKDEV
);
/* PCI64 mappings */
__raw_writel
(
0x00100000
,
K2_PCI64_BAR
+
PIBAR
);
/* PCI I/O base */
__raw_writel
(
0x10000000
,
K2_PCI64_BAR
+
PMBAR
);
/* PCI Mem base */
__raw_writel
(
0xf0000000
,
K2_PCI64_BAR
+
MSIZE
);
/* 256MB */
__raw_writel
(
0xfff00000
,
K2_PCI64_BAR
+
IOSIZE
);
/* 1MB */
__raw_writel
(
0xd0000000
,
K2_PCI64_BAR
+
SMBAR
);
/* Base@0xd0000000 */
__raw_writel
(
0x80100000
,
K2_PCI64_BAR
+
SIBAR
);
/* Base@0x80100000 */
__raw_writel
(
0x000000c0
,
K2_PCI64_BAR
+
PSSIZE
);
/* 1GB space */
__raw_writel
(
0x000000c0
,
K2_PCI64_BAR
+
PPSIZE
);
/* 1GB space */
__raw_writel
(
0x00000000
,
K2_PCI64_BAR
+
BARPS
);
/* Base@0x00000000 */
__raw_writel
(
0x00000000
,
K2_PCI64_BAR
+
BARPP
);
/* Base@0x00000000 */
__raw_writel
(
0x00100000
,
K2_PCI64_BAR
+
PIBAR
);
/* PCI I/O base */
__raw_writel
(
0x10000000
,
K2_PCI64_BAR
+
PMBAR
);
/* PCI Mem base */
__raw_writel
(
0xf0000000
,
K2_PCI64_BAR
+
MSIZE
);
/* 256MB */
__raw_writel
(
0xfff00000
,
K2_PCI64_BAR
+
IOSIZE
);
/* 1MB */
__raw_writel
(
0xd0000000
,
K2_PCI64_BAR
+
SMBAR
);
/* Base@0xd0000000 */
__raw_writel
(
0x80100000
,
K2_PCI64_BAR
+
SIBAR
);
/* Base@0x80100000 */
__raw_writel
(
0x000000c0
,
K2_PCI64_BAR
+
PSSIZE
);
/* 1GB space */
__raw_writel
(
0x000000c0
,
K2_PCI64_BAR
+
PPSIZE
);
/* 1GB space */
__raw_writel
(
0x00000000
,
K2_PCI64_BAR
+
BARPS
);
/* Base@0x00000000 */
__raw_writel
(
0x00000000
,
K2_PCI64_BAR
+
BARPP
);
/* Base@0x00000000 */
/* Setup PCI32 hose */
hose_a
=
pcibios_alloc_controller
();
...
...
@@ -183,16 +199,14 @@ void k2_setup_hoses(void)
hose_a
->
pci_mem_offset
=
K2_PCI32_MEM_BASE
;
pci_init_resource
(
&
hose_a
->
io_resource
,
K2_PCI32_LOWER_IO
,
K2_PCI32_UPPER_IO
,
IORESOURCE_IO
,
"PCI32 host bridge"
);
K2_PCI32_LOWER_IO
,
K2_PCI32_UPPER_IO
,
IORESOURCE_IO
,
"PCI32 host bridge"
);
pci_init_resource
(
&
hose_a
->
mem_resources
[
0
],
K2_PCI32_LOWER_MEM
+
K2_PCI32_MEM_BASE
,
K2_PCI32_UPPER_MEM
+
K2_PCI32_MEM_BASE
,
IORESOURCE_MEM
,
"PCI32 host bridge"
);
K2_PCI32_LOWER_MEM
+
K2_PCI32_MEM_BASE
,
K2_PCI32_UPPER_MEM
+
K2_PCI32_MEM_BASE
,
IORESOURCE_MEM
,
"PCI32 host bridge"
);
hose_a
->
io_space
.
start
=
K2_PCI32_LOWER_IO
;
hose_a
->
io_space
.
end
=
K2_PCI32_UPPER_IO
;
...
...
@@ -204,89 +218,67 @@ void k2_setup_hoses(void)
/* Initialize PCI32 bus registers */
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
CPC710_BUS_NUMBER
,
hose_a
->
first_busno
);
hose_a
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
CPC710_BUS_NUMBER
,
hose_a
->
first_busno
);
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
CPC710_SUB_BUS_NUMBER
,
hose_a
->
last_busno
);
hose_a
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
CPC710_SUB_BUS_NUMBER
,
hose_a
->
last_busno
);
/* Enable PCI interrupt polling */
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x45
,
0x80
);
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x45
,
0x80
);
/* Route polled PCI interrupts */
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x48
,
0x58
);
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x48
,
0x58
);
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x49
,
0x07
);
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x49
,
0x07
);
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x4a
,
0x31
);
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x4a
,
0x31
);
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x4b
,
0xb9
);
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x4b
,
0xb9
);
/* route secondary IDE channel interrupt to IRQ 15 */
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x75
,
0x0f
);
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x75
,
0x0f
);
/* enable IDE controller IDSEL */
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x58
,
0x48
);
hose_a
->
first_busno
,
PCI_DEVFN
(
8
,
0
),
0x58
,
0x48
);
/* Enable IDE function */
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
17
,
0
),
0x50
,
0x03
);
hose_a
->
first_busno
,
PCI_DEVFN
(
17
,
0
),
0x50
,
0x03
);
/* Set M5229 IDE controller to native mode */
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
17
,
0
),
PCI_CLASS_PROG
,
0xdf
);
hose_a
->
first_busno
,
PCI_DEVFN
(
17
,
0
),
PCI_CLASS_PROG
,
0xdf
);
hose_a
->
last_busno
=
pciauto_bus_scan
(
hose_a
,
hose_a
->
first_busno
);
/* Write out correct max subordinate bus number for hose A */
early_write_config_byte
(
hose_a
,
hose_a
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
CPC710_SUB_BUS_NUMBER
,
hose_a
->
last_busno
);
hose_a
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
CPC710_SUB_BUS_NUMBER
,
hose_a
->
last_busno
);
/* Only setup PCI64 hose if we are in the system slot */
if
(
!
(
readb
(
K2_MISC_REG
)
&
K2_SYS_SLOT_MASK
))
{
if
(
!
(
readb
(
K2_MISC_REG
)
&
K2_SYS_SLOT_MASK
))
{
/* Setup PCI64 hose */
hose_b
=
pcibios_alloc_controller
();
if
(
!
hose_b
)
...
...
@@ -299,16 +291,14 @@ void k2_setup_hoses(void)
hose_b
->
pci_mem_offset
=
K2_PCI32_MEM_BASE
;
pci_init_resource
(
&
hose_b
->
io_resource
,
K2_PCI64_LOWER_IO
,
K2_PCI64_UPPER_IO
,
IORESOURCE_IO
,
"PCI64 host bridge"
);
K2_PCI64_LOWER_IO
,
K2_PCI64_UPPER_IO
,
IORESOURCE_IO
,
"PCI64 host bridge"
);
pci_init_resource
(
&
hose_b
->
mem_resources
[
0
],
K2_PCI64_LOWER_MEM
+
K2_PCI32_MEM_BASE
,
K2_PCI64_UPPER_MEM
+
K2_PCI32_MEM_BASE
,
IORESOURCE_MEM
,
"PCI64 host bridge"
);
K2_PCI64_LOWER_MEM
+
K2_PCI32_MEM_BASE
,
K2_PCI64_UPPER_MEM
+
K2_PCI32_MEM_BASE
,
IORESOURCE_MEM
,
"PCI64 host bridge"
);
hose_b
->
io_space
.
start
=
K2_PCI64_LOWER_IO
;
hose_b
->
io_space
.
end
=
K2_PCI64_UPPER_IO
;
...
...
@@ -317,38 +307,35 @@ void k2_setup_hoses(void)
hose_b
->
io_base_virt
=
(
void
*
)
K2_ISA_IO_BASE
;
setup_indirect_pci
(
hose_b
,
K2_PCI64_CONFIG_ADDR
,
K2_PCI64_CONFIG_DATA
);
K2_PCI64_CONFIG_ADDR
,
K2_PCI64_CONFIG_DATA
);
/* Initialize PCI64 bus registers */
early_write_config_byte
(
hose_b
,
0
,
PCI_DEVFN
(
0
,
0
),
CPC710_SUB_BUS_NUMBER
,
0xff
);
0
,
PCI_DEVFN
(
0
,
0
),
CPC710_SUB_BUS_NUMBER
,
0xff
);
early_write_config_byte
(
hose_b
,
0
,
PCI_DEVFN
(
0
,
0
),
CPC710_BUS_NUMBER
,
hose_b
->
first_busno
);
0
,
PCI_DEVFN
(
0
,
0
),
CPC710_BUS_NUMBER
,
hose_b
->
first_busno
);
hose_b
->
last_busno
=
pciauto_bus_scan
(
hose_b
,
hose_b
->
first_busno
);
hose_b
->
first_busno
);
/* Write out correct max subordinate bus number for hose B */
early_write_config_byte
(
hose_b
,
hose_b
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
CPC710_SUB_BUS_NUMBER
,
hose_b
->
last_busno
);
hose_b
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
CPC710_SUB_BUS_NUMBER
,
hose_b
->
last_busno
);
/* Configure PCI64 PSBAR */
early_write_config_dword
(
hose_b
,
hose_b
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
PCI_BASE_ADDRESS_0
,
K2_PCI64_SYS_MEM_BASE
);
hose_b
->
first_busno
,
PCI_DEVFN
(
0
,
0
),
PCI_BASE_ADDRESS_0
,
K2_PCI64_SYS_MEM_BASE
);
}
/* Configure i8259 level/edge settings */
...
...
@@ -369,3 +356,261 @@ void k2_setup_hoses(void)
ppc_md
.
pci_swizzle
=
common_swizzle
;
ppc_md
.
pci_map_irq
=
k2_map_irq
;
}
static
int
k2_get_bus_speed
(
void
)
{
int
bus_speed
;
unsigned
char
board_id
;
board_id
=
*
(
unsigned
char
*
)
K2_BOARD_ID_REG
;
switch
(
K2_BUS_SPD
(
board_id
))
{
case
0
:
default:
bus_speed
=
100000000
;
break
;
case
1
:
bus_speed
=
83333333
;
break
;
case
2
:
bus_speed
=
75000000
;
break
;
case
3
:
bus_speed
=
66666666
;
break
;
}
return
bus_speed
;
}
static
int
k2_get_cpu_speed
(
void
)
{
unsigned
long
hid1
;
int
cpu_speed
;
hid1
=
mfspr
(
HID1
)
>>
28
;
if
((
mfspr
(
PVR
)
>>
16
)
==
8
)
hid1
=
cpu_7xx
[
hid1
];
else
hid1
=
cpu_6xx
[
hid1
];
cpu_speed
=
k2_get_bus_speed
()
*
hid1
/
2
;
return
cpu_speed
;
}
static
void
__init
k2_calibrate_decr
(
void
)
{
int
freq
,
divisor
=
4
;
/* determine processor bus speed */
freq
=
k2_get_bus_speed
();
tb_ticks_per_jiffy
=
freq
/
HZ
/
divisor
;
tb_to_us
=
mulhwu_scale_factor
(
freq
/
divisor
,
1000000
);
}
static
int
k2_show_cpuinfo
(
struct
seq_file
*
m
)
{
unsigned
char
k2_geo_bits
,
k2_system_slot
;
seq_printf
(
m
,
"vendor
\t\t
: SBS
\n
"
);
seq_printf
(
m
,
"machine
\t\t
: K2
\n
"
);
seq_printf
(
m
,
"cpu speed
\t
: %dMhz
\n
"
,
k2_get_cpu_speed
()
/
1000000
);
seq_printf
(
m
,
"bus speed
\t
: %dMhz
\n
"
,
k2_get_bus_speed
()
/
1000000
);
seq_printf
(
m
,
"memory type
\t
: SDRAM
\n
"
);
k2_geo_bits
=
readb
(
K2_MSIZ_GEO_REG
)
&
K2_GEO_ADR_MASK
;
k2_system_slot
=
!
(
readb
(
K2_MISC_REG
)
&
K2_SYS_SLOT_MASK
);
seq_printf
(
m
,
"backplane
\t
: %s slot board"
,
k2_system_slot
?
"System"
:
"Non system"
);
seq_printf
(
m
,
"with geographical address %x
\n
"
,
k2_geo_bits
);
return
0
;
}
TODC_ALLOC
();
static
void
__init
k2_setup_arch
(
void
)
{
unsigned
int
cpu
;
/* Setup TODC access */
TODC_INIT
(
TODC_TYPE_MK48T37
,
0
,
0
,
ioremap
(
K2_RTC_BASE_ADDRESS
,
K2_RTC_SIZE
),
8
);
/* init to some ~sane value until calibrate_delay() runs */
loops_per_jiffy
=
50000000
/
HZ
;
/* make FLASH transactions higher priority than PCI to avoid deadlock */
__raw_writel
(
__raw_readl
(
SIOC1
)
|
0x80000000
,
SIOC1
);
/* Set hardware to access FLASH page 2 */
__raw_writel
(
1
<<
29
,
GPOUT
);
/* Setup PCI host bridges */
k2_setup_hoses
();
#ifdef CONFIG_BLK_DEV_INITRD
if
(
initrd_start
)
ROOT_DEV
=
Root_RAM0
;
else
#endif
#ifdef CONFIG_ROOT_NFS
ROOT_DEV
=
Root_NFS
;
#else
ROOT_DEV
=
Root_HDC1
;
#endif
#ifdef CONFIG_DUMMY_CONSOLE
conswitchp
=
&
dummy_con
;
#endif
/* Identify the system */
printk
(
KERN_INFO
"System Identification: SBS K2 - PowerPC 750 @ "
"%d Mhz
\n
"
,
k2_get_cpu_speed
()
/
1000000
);
printk
(
KERN_INFO
"Port by MontaVista Software, Inc. "
"(source@mvista.com)
\n
"
);
/* Identify the CPU manufacturer */
cpu
=
PVR_REV
(
mfspr
(
PVR
));
printk
(
KERN_INFO
"CPU manufacturer: %s [rev=%04x]
\n
"
,
(
cpu
&
(
1
<<
15
))
?
"IBM"
:
"Motorola"
,
cpu
);
}
static
void
k2_restart
(
char
*
cmd
)
{
local_irq_disable
();
/* Flip FLASH back to page 1 to access firmware image */
__raw_writel
(
0
,
GPOUT
);
/* SRR0 has system reset vector, SRR1 has default MSR value */
/* rfi restores MSR from SRR1 and sets the PC to the SRR0 value */
mtspr
(
SRR0
,
0xfff00100
);
mtspr
(
SRR1
,
0
);
__asm__
__volatile__
(
"rfi
\n\t
"
);
/* not reached */
for
(;;)
;
}
static
void
k2_power_off
(
void
)
{
for
(;;)
;
}
static
void
k2_halt
(
void
)
{
k2_restart
(
NULL
);
}
/*
* Set BAT 3 to map PCI32 I/O space.
*/
static
__inline__
void
k2_set_bat
(
void
)
{
/* wait for all outstanding memory accesses to complete */
mb
();
/* setup DBATs */
mtspr
(
DBAT2U
,
0x80001ffe
);
mtspr
(
DBAT2L
,
0x8000002a
);
mtspr
(
DBAT3U
,
0xf0001ffe
);
mtspr
(
DBAT3L
,
0xf000002a
);
/* wait for updates */
mb
();
}
static
unsigned
long
__init
k2_find_end_of_memory
(
void
)
{
unsigned
long
total
;
unsigned
char
msize
=
7
;
/* Default to 128MB */
msize
=
K2_MEM_SIZE
(
readb
(
K2_MSIZ_GEO_REG
));
switch
(
msize
)
{
case
2
:
/*
* This will break without a lowered
* KERNELBASE or CONFIG_HIGHMEM on.
* It seems non 1GB builds exist yet,
* though.
*/
total
=
K2_MEM_SIZE_1GB
;
break
;
case
3
:
case
4
:
total
=
K2_MEM_SIZE_512MB
;
break
;
case
5
:
case
6
:
total
=
K2_MEM_SIZE_256MB
;
break
;
case
7
:
total
=
K2_MEM_SIZE_128MB
;
break
;
default:
printk
(
"K2: Invalid memory size detected, defaulting to 128MB
\n
"
);
total
=
K2_MEM_SIZE_128MB
;
break
;
}
return
total
;
}
static
void
__init
k2_map_io
(
void
)
{
io_block_mapping
(
K2_PCI32_IO_BASE
,
K2_PCI32_IO_BASE
,
0x00200000
,
_PAGE_IO
);
io_block_mapping
(
0xff000000
,
0xff000000
,
0x01000000
,
_PAGE_IO
);
}
static
void
__init
k2_init_irq
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
16
;
i
++
)
irq_desc
[
i
].
handler
=
&
i8259_pic
;
i8259_init
(
0
);
}
void
__init
platform_init
(
unsigned
long
r3
,
unsigned
long
r4
,
unsigned
long
r5
,
unsigned
long
r6
,
unsigned
long
r7
)
{
parse_bootinfo
((
struct
bi_record
*
)(
r3
+
KERNELBASE
));
k2_set_bat
();
isa_io_base
=
K2_ISA_IO_BASE
;
isa_mem_base
=
K2_ISA_MEM_BASE
;
pci_dram_offset
=
K2_PCI32_SYS_MEM_BASE
;
ppc_md
.
setup_arch
=
k2_setup_arch
;
ppc_md
.
show_cpuinfo
=
k2_show_cpuinfo
;
ppc_md
.
init_IRQ
=
k2_init_irq
;
ppc_md
.
get_irq
=
i8259_irq
;
ppc_md
.
find_end_of_memory
=
k2_find_end_of_memory
;
ppc_md
.
setup_io_mappings
=
k2_map_io
;
ppc_md
.
restart
=
k2_restart
;
ppc_md
.
power_off
=
k2_power_off
;
ppc_md
.
halt
=
k2_halt
;
ppc_md
.
time_init
=
todc_time_init
;
ppc_md
.
set_rtc_time
=
todc_set_rtc_time
;
ppc_md
.
get_rtc_time
=
todc_get_rtc_time
;
ppc_md
.
calibrate_decr
=
k2_calibrate_decr
;
ppc_md
.
nvram_read_val
=
todc_direct_read_val
;
ppc_md
.
nvram_write_val
=
todc_direct_write_val
;
#ifdef CONFIG_SERIAL_TEXT_DEBUG
ppc_md
.
progress
=
gen550_progress
;
#endif
}
arch/ppc/platforms/k2_setup.c
deleted
100644 → 0
View file @
4c9ff8d0
/*
* arch/ppc/platforms/k2_setup.c
*
* Board setup routines for SBS K2
*
* Author: Matt Porter <mporter@mvista.com>
*
* 2001 (c) MontaVista, Software, Inc. This file is licensed under
* the terms of the GNU General Public License version 2. This program
* is licensed "as is" without any warranty of any kind, whether express
* or implied.
*/
#include <linux/config.h>
#include <linux/stddef.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/errno.h>
#include <linux/reboot.h>
#include <linux/pci.h>
#include <linux/kdev_t.h>
#include <linux/types.h>
#include <linux/major.h>
#include <linux/initrd.h>
#include <linux/console.h>
#include <linux/delay.h>
#include <linux/ide.h>
#include <linux/irq.h>
#include <linux/seq_file.h>
#include <linux/root_dev.h>
#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/machdep.h>
#include <asm/time.h>
#include <asm/i8259.h>
#include <asm/todc.h>
#include <asm/bootinfo.h>
#include "k2.h"
extern
void
k2_setup_hoses
(
void
);
extern
unsigned
long
loops_per_jiffy
;
static
unsigned
int
cpu_7xx
[
16
]
=
{
0
,
15
,
14
,
0
,
0
,
13
,
5
,
9
,
6
,
11
,
8
,
10
,
16
,
12
,
7
,
0
};
static
unsigned
int
cpu_6xx
[
16
]
=
{
0
,
0
,
14
,
0
,
0
,
13
,
5
,
9
,
6
,
11
,
8
,
10
,
0
,
12
,
7
,
0
};
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
/* IDE functions */
static
void
__init
k2_ide_init_hwif_ports
(
hw_regs_t
*
hw
,
unsigned
long
data_port
,
unsigned
long
ctrl_port
,
int
*
irq
)
{
unsigned
long
reg
=
data_port
;
int
i
=
8
;
for
(
i
=
IDE_DATA_OFFSET
;
i
<=
IDE_STATUS_OFFSET
;
i
++
)
{
hw
->
io_ports
[
i
]
=
reg
;
reg
+=
1
;
}
if
(
ctrl_port
)
hw
->
io_ports
[
IDE_CONTROL_OFFSET
]
=
ctrl_port
;
else
hw
->
io_ports
[
IDE_CONTROL_OFFSET
]
=
hw
->
io_ports
[
IDE_DATA_OFFSET
]
+
0x206
;
if
(
irq
!=
NULL
)
*
irq
=
0
;
}
#endif
static
int
k2_get_bus_speed
(
void
)
{
int
bus_speed
;
unsigned
char
board_id
;
board_id
=
*
(
unsigned
char
*
)
K2_BOARD_ID_REG
;
switch
(
K2_BUS_SPD
(
board_id
)
)
{
case
0
:
default:
bus_speed
=
100000000
;
break
;
case
1
:
bus_speed
=
83333333
;
break
;
case
2
:
bus_speed
=
75000000
;
break
;
case
3
:
bus_speed
=
66666666
;
break
;
}
return
bus_speed
;
}
static
int
k2_get_cpu_speed
(
void
)
{
unsigned
long
hid1
;
int
cpu_speed
;
hid1
=
mfspr
(
HID1
)
>>
28
;
if
((
mfspr
(
PVR
)
>>
16
)
==
8
)
hid1
=
cpu_7xx
[
hid1
];
else
hid1
=
cpu_6xx
[
hid1
];
cpu_speed
=
k2_get_bus_speed
()
*
hid1
/
2
;
return
cpu_speed
;
}
static
void
__init
k2_calibrate_decr
(
void
)
{
int
freq
,
divisor
=
4
;
/* determine processor bus speed */
freq
=
k2_get_bus_speed
();
tb_ticks_per_jiffy
=
freq
/
HZ
/
divisor
;
tb_to_us
=
mulhwu_scale_factor
(
freq
/
divisor
,
1000000
);
}
static
int
k2_show_cpuinfo
(
struct
seq_file
*
m
)
{
unsigned
char
k2_geo_bits
,
k2_system_slot
;
seq_printf
(
m
,
"vendor
\t\t
: SBS
\n
"
);
seq_printf
(
m
,
"machine
\t\t
: K2
\n
"
);
seq_printf
(
m
,
"cpu speed
\t
: %dMhz
\n
"
,
k2_get_cpu_speed
()
/
1000000
);
seq_printf
(
m
,
"bus speed
\t
: %dMhz
\n
"
,
k2_get_bus_speed
()
/
1000000
);
seq_printf
(
m
,
"memory type
\t
: SDRAM
\n
"
);
k2_geo_bits
=
readb
(
K2_MSIZ_GEO_REG
)
&
K2_GEO_ADR_MASK
;
k2_system_slot
=
!
(
readb
(
K2_MISC_REG
)
&
K2_SYS_SLOT_MASK
);
seq_printf
(
m
,
"backplane
\t
: %s slot board"
,
k2_system_slot
?
"System"
:
"Non system"
);
seq_printf
(
m
,
"with geographical address %x
\n
"
,
k2_geo_bits
);
return
0
;
}
extern
char
cmd_line
[];
TODC_ALLOC
();
static
void
__init
k2_setup_arch
(
void
)
{
unsigned
int
cpu
;
/* Setup TODC access */
TODC_INIT
(
TODC_TYPE_MK48T37
,
0
,
0
,
ioremap
(
K2_RTC_BASE_ADDRESS
,
K2_RTC_SIZE
),
8
);
/* init to some ~sane value until calibrate_delay() runs */
loops_per_jiffy
=
50000000
/
HZ
;
/* Setup PCI host bridges */
k2_setup_hoses
();
#ifdef CONFIG_BLK_DEV_INITRD
if
(
initrd_start
)
ROOT_DEV
=
Root_RAM0
;
else
#endif
#ifdef CONFIG_ROOT_NFS
ROOT_DEV
=
Root_NFS
;
#else
ROOT_DEV
=
Root_HDC1
;
#endif
#ifdef CONFIG_DUMMY_CONSOLE
conswitchp
=
&
dummy_con
;
#endif
/* Identify the system */
printk
(
"System Identification: SBS K2 - PowerPC 750 @ %d Mhz
\n
"
,
k2_get_cpu_speed
()
/
1000000
);
printk
(
"SBS K2 port (C) 2001 MontaVista Software, Inc. (source@mvista.com)
\n
"
);
/* Identify the CPU manufacturer */
cpu
=
PVR_REV
(
mfspr
(
PVR
));
printk
(
"CPU manufacturer: %s [rev=%04x]
\n
"
,
(
cpu
&
(
1
<<
15
))
?
"IBM"
:
"Motorola"
,
cpu
);
}
static
void
k2_restart
(
char
*
cmd
)
{
local_irq_disable
();
/* SRR0 has system reset vector, SRR1 has default MSR value */
/* rfi restores MSR from SRR1 and sets the PC to the SRR0 value */
__asm__
__volatile__
(
"lis 3,0xfff0
\n\t
"
"ori 3,3,0x0100
\n\t
"
"mtspr 26,3
\n\t
"
"li 3,0
\n\t
"
"mtspr 27,3
\n\t
"
"rfi
\n\t
"
);
for
(;;);
}
static
void
k2_power_off
(
void
)
{
for
(;;);
}
static
void
k2_halt
(
void
)
{
k2_restart
(
NULL
);
}
/*
* Set BAT 3 to map PCI32 I/O space.
*/
static
__inline__
void
k2_set_bat
(
void
)
{
unsigned
long
bat3u
,
bat3l
;
static
int
mapping_set
=
0
;
if
(
!
mapping_set
)
{
__asm__
__volatile__
(
"lis %0,0x8000
\n\t
"
"ori %1,%0,0x002a
\n\t
"
"ori %0,%0,0x1ffe
\n\t
"
"mtspr 0x21e,%0
\n\t
"
"mtspr 0x21f,%1
\n\t
"
"isync
\n\t
"
"sync
\n\t
"
:
"=r"
(
bat3u
),
"=r"
(
bat3l
));
mapping_set
=
1
;
}
return
;
}
static
unsigned
long
__init
k2_find_end_of_memory
(
void
)
{
unsigned
long
total
;
unsigned
char
msize
=
7
;
/* Default to 128MB */
k2_set_bat
();
msize
=
K2_MEM_SIZE
(
readb
(
K2_MSIZ_GEO_REG
));
switch
(
msize
)
{
case
2
:
/*
* This will break without a lowered
* KERNELBASE or CONFIG_HIGHMEM on.
* It seems non 1GB builds exist yet,
* though.
*/
total
=
K2_MEM_SIZE_1GB
;
break
;
case
3
:
case
4
:
total
=
K2_MEM_SIZE_512MB
;
break
;
case
5
:
case
6
:
total
=
K2_MEM_SIZE_256MB
;
break
;
case
7
:
total
=
K2_MEM_SIZE_128MB
;
break
;
default:
printk
(
"K2: Invalid memory size detected, defaulting to 128MB
\n
"
);
total
=
K2_MEM_SIZE_128MB
;
break
;
}
return
total
;
}
static
void
__init
k2_map_io
(
void
)
{
io_block_mapping
(
K2_PCI32_IO_BASE
,
K2_PCI32_IO_BASE
,
0x00200000
,
_PAGE_IO
);
io_block_mapping
(
0xff000000
,
0xff000000
,
0x01000000
,
_PAGE_IO
);
}
static
void
__init
k2_init_irq
(
void
)
{
int
i
;
for
(
i
=
0
;
i
<
16
;
i
++
)
irq_desc
[
i
].
handler
=
&
i8259_pic
;
i8259_init
(
NULL
);
}
void
__init
platform_init
(
unsigned
long
r3
,
unsigned
long
r4
,
unsigned
long
r5
,
unsigned
long
r6
,
unsigned
long
r7
)
{
parse_bootinfo
((
struct
bi_record
*
)
(
r3
+
KERNELBASE
));
isa_io_base
=
K2_ISA_IO_BASE
;
isa_mem_base
=
K2_ISA_MEM_BASE
;
pci_dram_offset
=
K2_PCI32_SYS_MEM_BASE
;
ppc_md
.
setup_arch
=
k2_setup_arch
;
ppc_md
.
show_cpuinfo
=
k2_show_cpuinfo
;
ppc_md
.
init_IRQ
=
k2_init_irq
;
ppc_md
.
get_irq
=
i8259_irq
;
ppc_md
.
find_end_of_memory
=
k2_find_end_of_memory
;
ppc_md
.
setup_io_mappings
=
k2_map_io
;
ppc_md
.
restart
=
k2_restart
;
ppc_md
.
power_off
=
k2_power_off
;
ppc_md
.
halt
=
k2_halt
;
ppc_md
.
time_init
=
todc_time_init
;
ppc_md
.
set_rtc_time
=
todc_set_rtc_time
;
ppc_md
.
get_rtc_time
=
todc_get_rtc_time
;
ppc_md
.
calibrate_decr
=
k2_calibrate_decr
;
ppc_md
.
nvram_read_val
=
todc_direct_read_val
;
ppc_md
.
nvram_write_val
=
todc_direct_write_val
;
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
ppc_ide_md
.
ide_init_hwif
=
k2_ide_init_hwif_ports
;
#endif
}
arch/ppc/platforms/lopec_setup.c
View file @
165bcfcf
...
...
@@ -208,6 +208,9 @@ lopec_init_IRQ(void)
openpic_set_sources
(
19
,
1
,
OpenPIC_Addr
+
0x110C0
);
openpic_init
(
NUM_8259_INTERRUPTS
);
/* We have a cascade on OpenPIC IRQ 0, Linux IRQ 16 */
openpic_hookup_cascade
(
NUM_8259_INTERRUPTS
,
"82c59 cascade"
,
&
i8259_irq
);
/* Map i8259 interrupts */
for
(
i
=
0
;
i
<
NUM_8259_INTERRUPTS
;
i
++
)
...
...
arch/ppc/platforms/mcpn765.c
View file @
165bcfcf
...
...
@@ -30,9 +30,6 @@
#include <linux/console.h>
#include <linux/delay.h>
#include <linux/irq.h>
#if 0
#include <linux/ide.h>
#endif
#include <linux/seq_file.h>
#include <linux/root_dev.h>
#include <linux/serial.h>
...
...
@@ -385,6 +382,8 @@ mcpn765_init_IRQ(void)
ppc_md
.
progress
(
"init_irq: enter"
,
0
);
openpic_init
(
NUM_8259_INTERRUPTS
);
openpic_hookup_cascade
(
NUM_8259_INTERRUPTS
,
"82c59 cascade"
,
i8259_irq
);
for
(
i
=
0
;
i
<
NUM_8259_INTERRUPTS
;
i
++
)
irq_desc
[
i
].
handler
=
&
i8259_pic
;
...
...
arch/ppc/platforms/mvme5100_setup.c
View file @
165bcfcf
...
...
@@ -138,6 +138,7 @@ mvme5100_init_IRQ(void)
#ifdef CONFIG_MVME5100_IPMC761_PRESENT
openpic_init
(
1
,
NUM_8259_INTERRUPTS
,
NULL
,
-
1
);
openpic_hookup_cascade
(
NUM_8259_INTERRUPTS
,
"82c59 cascade"
,
&
i8259_irq
);
for
(
i
=
0
;
i
<
NUM_8259_INTERRUPTS
;
i
++
)
irq_desc
[
i
].
handler
=
&
i8259_pic
;
...
...
arch/ppc/platforms/pplus.c
View file @
165bcfcf
...
...
@@ -672,6 +672,8 @@ static void __init pplus_init_IRQ(void)
openpic_set_sources
(
0
,
16
,
OpenPIC_Addr
+
0x10000
);
openpic_init
(
NUM_8259_INTERRUPTS
);
openpic_hookup_cascade
(
NUM_8259_INTERRUPTS
,
"82c59 cascade"
,
i8259_irq
);
ppc_md
.
get_irq
=
openpic_get_irq
;
}
...
...
arch/ppc/platforms/prep_setup.c
View file @
165bcfcf
...
...
@@ -134,6 +134,7 @@ EXPORT_SYMBOL(ppc_cs4232_dma2);
#define PREP_IBM_CAROLINA_IDE_0 0xf0
#define PREP_IBM_CAROLINA_IDE_1 0xf1
#define PREP_IBM_CAROLINA_IDE_2 0xf2
#define PREP_IBM_CAROLINA_IDE_3 0xf3
/* 7248-43P */
#define PREP_IBM_CAROLINA_SCSI_0 0xf4
#define PREP_IBM_CAROLINA_SCSI_1 0xf5
...
...
@@ -855,8 +856,12 @@ prep_init_IRQ(void)
int
i
;
unsigned
int
pci_viddid
,
pci_did
;
if
(
OpenPIC_Addr
!=
NULL
)
if
(
OpenPIC_Addr
!=
NULL
)
{
openpic_init
(
NUM_8259_INTERRUPTS
);
/* We have a cascade on OpenPIC IRQ 0, Linux IRQ 16 */
openpic_hookup_cascade
(
NUM_8259_INTERRUPTS
,
"82c59 cascade"
,
i8259_irq
);
}
for
(
i
=
0
;
i
<
NUM_8259_INTERRUPTS
;
i
++
)
irq_desc
[
i
].
handler
=
&
i8259_pic
;
/* If we have a Raven PCI bridge or a Hawk PCI bridge / Memory
...
...
arch/ppc/platforms/prpmc750
_setup
.c
→
arch/ppc/platforms/prpmc750.c
View file @
165bcfcf
...
...
@@ -5,7 +5,7 @@
*
* Author: Matt Porter <mporter@mvista.com>
*
* 2001 (c) MontaVista, Software, Inc. This file is licensed under
* 2001
-2004
(c) MontaVista, Software, Inc. This file is licensed under
* the terms of the GNU General Public License version 2. This program
* is licensed "as is" without any warranty of any kind, whether express
* or implied.
...
...
@@ -28,56 +28,156 @@
#include <linux/seq_file.h>
#include <linux/ide.h>
#include <linux/root_dev.h>
#include <linux/slab.h>
#include <asm/byteorder.h>
#include <asm/system.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/machdep.h>
#include <asm/pci-bridge.h>
#include <asm/uaccess.h>
#include <asm/time.h>
#include <platforms/prpmc750.h>
#include <asm/open_pic.h>
#include <asm/bootinfo.h>
#include <asm/pplus.h>
#include <asm/hawk.h>
#include "prpmc750.h"
extern
void
prpmc750_find_bridges
(
void
);
extern
int
mpic_init
(
void
);
extern
unsigned
long
loops_per_jiffy
;
extern
void
gen550_progress
(
char
*
,
unsigned
short
);
static
u_char
prpmc750_openpic_initsenses
[]
__initdata
=
{
1
,
/* PRPMC750_INT_HOSTINT0 */
1
,
/* PRPMC750_INT_UART */
1
,
/* PRPMC750_INT_DEBUGINT */
1
,
/* PRPMC750_INT_HAWK_WDT */
1
,
/* PRPMC750_INT_UNUSED */
1
,
/* PRPMC750_INT_ABORT */
1
,
/* PRPMC750_INT_HOSTINT1 */
1
,
/* PRPMC750_INT_HOSTINT2 */
1
,
/* PRPMC750_INT_HOSTINT3 */
1
,
/* PRPMC750_INT_PMC_INTA */
1
,
/* PRPMC750_INT_PMC_INTB */
1
,
/* PRPMC750_INT_PMC_INTC */
1
,
/* PRPMC750_INT_PMC_INTD */
1
,
/* PRPMC750_INT_UNUSED */
1
,
/* PRPMC750_INT_UNUSED */
1
,
/* PRPMC750_INT_UNUSED */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_HOSTINT0 */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_UART */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_DEBUGINT */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_HAWK_WDT */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_UNUSED */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_ABORT */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_HOSTINT1 */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_HOSTINT2 */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_HOSTINT3 */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_PMC_INTA */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_PMC_INTB */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_PMC_INTC */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_PMC_INTD */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_UNUSED */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_UNUSED */
(
IRQ_SENSE_LEVEL
|
IRQ_POLARITY_NEGATIVE
),
/* PRPMC750_INT_UNUSED */
};
/*
* Motorola PrPMC750/PrPMC800 in PrPMCBASE or PrPMC-Carrier
* Combined irq tables. Only Base has IDSEL 14, only Carrier has 21 and 22.
*/
static
inline
int
prpmc_map_irq
(
struct
pci_dev
*
dev
,
unsigned
char
idsel
,
unsigned
char
pin
)
{
static
char
pci_irq_table
[][
4
]
=
/*
* PCI IDSEL/INTPIN->INTLINE
* A B C D
*/
{
{
12
,
0
,
0
,
0
},
/* IDSEL 14 - Ethernet, base */
{
0
,
0
,
0
,
0
},
/* IDSEL 15 - unused */
{
10
,
11
,
12
,
9
},
/* IDSEL 16 - PMC A1, PMC1 */
{
10
,
11
,
12
,
9
},
/* IDSEL 17 - PrPMC-A-B, PMC2-B */
{
11
,
12
,
9
,
10
},
/* IDSEL 18 - PMC A1-B, PMC1-B */
{
0
,
0
,
0
,
0
},
/* IDSEL 19 - unused */
{
9
,
10
,
11
,
12
},
/* IDSEL 20 - P2P Bridge */
{
11
,
12
,
9
,
10
},
/* IDSEL 21 - PMC A2, carrier */
{
12
,
9
,
10
,
11
},
/* IDSEL 22 - PMC A2-B, carrier */
};
const
long
min_idsel
=
14
,
max_idsel
=
22
,
irqs_per_slot
=
4
;
return
PCI_IRQ_TABLE_LOOKUP
;
};
static
int
prpmc750_show_cpuinfo
(
struct
seq_file
*
m
)
static
void
__init
prpmc750_pcibios_fixup
(
void
)
{
struct
pci_dev
*
dev
;
unsigned
short
wtmp
;
/*
* Kludge to clean up after PPC6BUG which doesn't
* configure the CL5446 VGA card. Also the
* resource subsystem doesn't fixup the
* PCI mem resources on the CL5446.
*/
if
((
dev
=
pci_find_device
(
PCI_VENDOR_ID_CIRRUS
,
PCI_DEVICE_ID_CIRRUS_5446
,
0
)))
{
dev
->
resource
[
0
].
start
+=
PRPMC750_PCI_PHY_MEM_OFFSET
;
dev
->
resource
[
0
].
end
+=
PRPMC750_PCI_PHY_MEM_OFFSET
;
pci_read_config_word
(
dev
,
PCI_COMMAND
,
&
wtmp
);
pci_write_config_word
(
dev
,
PCI_COMMAND
,
wtmp
|
3
);
/* Enable Color mode in MISC reg */
outb
(
0x03
,
0x3c2
);
/* Select DRAM config reg */
outb
(
0x0f
,
0x3c4
);
/* Set proper DRAM config */
outb
(
0xdf
,
0x3c5
);
}
}
void
__init
prpmc750_find_bridges
(
void
)
{
struct
pci_controller
*
hose
;
hose
=
pcibios_alloc_controller
();
if
(
!
hose
)
return
;
hose
->
first_busno
=
0
;
hose
->
last_busno
=
0xff
;
hose
->
io_base_virt
=
(
void
*
)
PRPMC750_ISA_IO_BASE
;
hose
->
pci_mem_offset
=
PRPMC750_PCI_PHY_MEM_OFFSET
;
pci_init_resource
(
&
hose
->
io_resource
,
PRPMC750_PCI_IO_START
,
PRPMC750_PCI_IO_END
,
IORESOURCE_IO
,
"PCI host bridge"
);
pci_init_resource
(
&
hose
->
mem_resources
[
0
],
PRPMC750_PROC_PCI_MEM_START
,
PRPMC750_PROC_PCI_MEM_END
,
IORESOURCE_MEM
,
"PCI host bridge"
);
hose
->
io_space
.
start
=
PRPMC750_PCI_IO_START
;
hose
->
io_space
.
end
=
PRPMC750_PCI_IO_END
;
hose
->
mem_space
.
start
=
PRPMC750_PCI_MEM_START
;
hose
->
mem_space
.
end
=
PRPMC750_PCI_MEM_END
-
HAWK_MPIC_SIZE
;
if
(
hawk_init
(
hose
,
PRPMC750_HAWK_PPC_REG_BASE
,
PRPMC750_PROC_PCI_MEM_START
,
PRPMC750_PROC_PCI_MEM_END
-
HAWK_MPIC_SIZE
,
PRPMC750_PROC_PCI_IO_START
,
PRPMC750_PROC_PCI_IO_END
,
PRPMC750_PROC_PCI_MEM_END
-
HAWK_MPIC_SIZE
+
1
)
!=
0
)
{
printk
(
KERN_CRIT
"Could not initialize host bridge
\n
"
);
}
hose
->
last_busno
=
pciauto_bus_scan
(
hose
,
hose
->
first_busno
);
ppc_md
.
pcibios_fixup
=
prpmc750_pcibios_fixup
;
ppc_md
.
pci_swizzle
=
common_swizzle
;
ppc_md
.
pci_map_irq
=
prpmc_map_irq
;
}
static
int
prpmc750_show_cpuinfo
(
struct
seq_file
*
m
)
{
seq_printf
(
m
,
"machine
\t\t
: PrPMC750
\n
"
);
return
0
;
}
static
void
__init
prpmc750_setup_arch
(
void
)
static
void
__init
prpmc750_setup_arch
(
void
)
{
/* init to some ~sane value until calibrate_delay() runs */
loops_per_jiffy
=
50000000
/
HZ
;
loops_per_jiffy
=
50000000
/
HZ
;
/* Lookup PCI host bridges */
prpmc750_find_bridges
();
...
...
@@ -97,20 +197,18 @@ prpmc750_setup_arch(void)
conswitchp
=
&
dummy_con
;
#endif
/* Find and map our OpenPIC */
pplus_mpic_init
(
PRPMC750_PCI_MEM_OFFSET
);
OpenPIC_InitSenses
=
prpmc750_openpic_initsenses
;
OpenPIC_NumInitSenses
=
sizeof
(
prpmc750_openpic_initsenses
);
printk
(
"PrPMC750 port (C) 2001 MontaVista Software, Inc. (source@mvista.com)
\n
"
);
printk
(
KERN_INFO
"Port by MontaVista Software, Inc. "
"(source@mvista.com)
\n
"
);
}
/*
* Compute the PrPMC750's bus speed using the baud clock as a
* reference.
*/
static
unsigned
long
__init
prpmc750_get_bus_speed
(
void
)
static
unsigned
long
__init
prpmc750_get_bus_speed
(
void
)
{
unsigned
long
tbl_start
,
tbl_end
;
unsigned
long
current_state
,
old_state
,
bus_speed
;
...
...
@@ -138,8 +236,8 @@ prpmc750_get_bus_speed(void)
old_state
=
readb
(
PRPMC750_STATUS_REG
)
&
PRPMC750_BAUDOUT_MASK
;
do
{
current_state
=
readb
(
PRPMC750_STATUS_REG
)
&
PRPMC750_BAUDOUT_MASK
;
}
while
(
old_state
==
current_state
);
PRPMC750_BAUDOUT_MASK
;
}
while
(
old_state
==
current_state
);
old_state
=
current_state
;
...
...
@@ -153,8 +251,8 @@ prpmc750_get_bus_speed(void)
do
{
do
{
current_state
=
readb
(
PRPMC750_STATUS_REG
)
&
PRPMC750_BAUDOUT_MASK
;
}
while
(
old_state
==
current_state
);
PRPMC750_BAUDOUT_MASK
;
}
while
(
old_state
==
current_state
);
old_state
=
current_state
;
}
while
(
--
count
);
...
...
@@ -162,13 +260,12 @@ prpmc750_get_bus_speed(void)
tbl_end
=
get_tbl
();
/* Compute bus speed */
bus_speed
=
(
tbl_end
-
tbl_start
)
*
128
;
bus_speed
=
(
tbl_end
-
tbl_start
)
*
128
;
return
bus_speed
;
}
static
void
__init
prpmc750_calibrate_decr
(
void
)
static
void
__init
prpmc750_calibrate_decr
(
void
)
{
unsigned
long
freq
;
int
divisor
=
4
;
...
...
@@ -176,81 +273,60 @@ prpmc750_calibrate_decr(void)
freq
=
prpmc750_get_bus_speed
();
tb_ticks_per_jiffy
=
freq
/
(
HZ
*
divisor
);
tb_to_us
=
mulhwu_scale_factor
(
freq
/
divisor
,
1000000
);
tb_to_us
=
mulhwu_scale_factor
(
freq
/
divisor
,
1000000
);
}
static
void
prpmc750_restart
(
char
*
cmd
)
static
void
prpmc750_restart
(
char
*
cmd
)
{
local_irq_disable
();
writeb
(
PRPMC750_MODRST_MASK
,
PRPMC750_MODRST_REG
);
while
(
1
)
;
while
(
1
)
;
}
static
void
prpmc750_halt
(
void
)
static
void
prpmc750_halt
(
void
)
{
local_irq_disable
();
while
(
1
);
while
(
1
)
;
}
static
void
prpmc750_power_off
(
void
)
static
void
prpmc750_power_off
(
void
)
{
prpmc750_halt
();
}
static
void
__init
prpmc750_init_IRQ
(
void
)
static
void
__init
prpmc750_init_IRQ
(
void
)
{
openpic_init
(
1
,
0
,
0
,
-
1
);
openpic_init
(
0
);
}
/*
* Set BAT 3 to map 0xf0000000 to end of physical memory space.
*/
static
__inline__
void
prpmc750_set_bat
(
void
)
static
__inline__
void
prpmc750_set_bat
(
void
)
{
unsigned
long
bat3u
,
bat3l
;
static
int
mapping_set
=
0
;
if
(
!
mapping_set
)
{
__asm__
__volatile__
(
" lis %0,0xf000
\n
\
ori %1,%0,0x002a
\n
\
ori %0,%0,0x1ffe
\n
\
mtspr 0x21e,%0
\n
\
mtspr 0x21f,%1
\n
\
isync
\n
\
sync "
:
"=r"
(
bat3u
),
"=r"
(
bat3l
));
mapping_set
=
1
;
}
return
;
mb
();
mtspr
(
DBAT1U
,
0xf0001ffe
);
mtspr
(
DBAT1L
,
0xf000002a
);
mb
();
}
/*
* We need to read the Falcon/Hawk memory controller
* to properly determine this value
*/
static
unsigned
long
__init
prpmc750_find_end_of_memory
(
void
)
static
unsigned
long
__init
prpmc750_find_end_of_memory
(
void
)
{
/* Cover the Hawk registers with a BAT */
prpmc750_set_bat
();
/* Read the memory size from the Hawk SMC */
return
pplus
_get_mem_size
(
PRPMC750_HAWK_SMC_BASE
);
return
hawk
_get_mem_size
(
PRPMC750_HAWK_SMC_BASE
);
}
static
void
__init
prpmc750_map_io
(
void
)
static
void
__init
prpmc750_map_io
(
void
)
{
io_block_mapping
(
0x80000000
,
0x80000000
,
0x10000000
,
_PAGE_IO
);
io_block_mapping
(
PRPMC750_ISA_IO_BASE
,
PRPMC750_ISA_IO_BASE
,
0x10000000
,
_PAGE_IO
);
#if 0
io_block_mapping(0xf0000000, 0xc0000000, 0x08000000, _PAGE_IO);
#endif
io_block_mapping
(
0xf8000000
,
0xf8000000
,
0x08000000
,
_PAGE_IO
);
}
...
...
@@ -260,25 +336,32 @@ platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
{
parse_bootinfo
(
find_bootinfo
());
/* Cover the Hawk registers with a BAT */
prpmc750_set_bat
();
isa_io_base
=
PRPMC750_ISA_IO_BASE
;
isa_mem_base
=
PRPMC750_ISA_MEM_BASE
;
pci_dram_offset
=
PRPMC750_
SYS_MEM_BASE
;
pci_dram_offset
=
PRPMC750_
PCI_DRAM_OFFSET
;
ppc_md
.
setup_arch
=
prpmc750_setup_arch
;
ppc_md
.
show_cpuinfo
=
prpmc750_show_cpuinfo
;
ppc_md
.
init_IRQ
=
prpmc750_init_IRQ
;
ppc_md
.
get_irq
=
openpic_get_irq
;
ppc_md
.
setup_arch
=
prpmc750_setup_arch
;
ppc_md
.
show_cpuinfo
=
prpmc750_show_cpuinfo
;
ppc_md
.
init_IRQ
=
prpmc750_init_IRQ
;
ppc_md
.
get_irq
=
openpic_get_irq
;
ppc_md
.
find_end_of_memory
=
prpmc750_find_end_of_memory
;
ppc_md
.
setup_io_mappings
=
prpmc750_map_io
;
ppc_md
.
restart
=
prpmc750_restart
;
ppc_md
.
power_off
=
prpmc750_power_off
;
ppc_md
.
halt
=
prpmc750_halt
;
ppc_md
.
restart
=
prpmc750_restart
;
ppc_md
.
power_off
=
prpmc750_power_off
;
ppc_md
.
halt
=
prpmc750_halt
;
/* PrPMC750 has no timekeeper part */
ppc_md
.
time_init
=
NULL
;
ppc_md
.
get_rtc_time
=
NULL
;
ppc_md
.
set_rtc_time
=
NULL
;
ppc_md
.
calibrate_decr
=
prpmc750_calibrate_decr
;
ppc_md
.
time_init
=
NULL
;
ppc_md
.
get_rtc_time
=
NULL
;
ppc_md
.
set_rtc_time
=
NULL
;
ppc_md
.
calibrate_decr
=
prpmc750_calibrate_decr
;
#ifdef CONFIG_SERIAL_TEXT_DEBUG
ppc_md
.
progress
=
gen550_progress
;
#endif
/* CONFIG_SERIAL_TEXT_DEBUG */
}
arch/ppc/platforms/prpmc750.h
View file @
165bcfcf
...
...
@@ -19,27 +19,47 @@
#include <linux/serial_reg.h>
#define PRPMC750_PCI_CONFIG_ADDR 0x80000cf8
#define PRPMC750_PCI_CONFIG_DATA 0x80000cfc
/*
* Due to limiations imposed by legacy hardware (primaryily IDE controllers),
* the PrPMC750 carrier board operates using a PReP address map.
*
* From Processor (physical) -> PCI:
* PCI Mem Space: 0xc0000000 - 0xfe000000 -> 0x00000000 - 0x3e000000 (768 MB)
* PCI I/O Space: 0x80000000 - 0x90000000 -> 0x00000000 - 0x10000000 (256 MB)
* Note: Must skip 0xfe000000-0xfe400000 for CONFIG_HIGHMEM/PKMAP area
*
* From PCI -> Processor (physical):
* System Memory: 0x80000000 -> 0x00000000
*/
#define PRPMC750_PCI_PHY_MEM_BASE 0xc0000000
#define PRPMC750_PCI_MEM_BASE 0xf0000000
#define PRPMC750_PCI_IO_BASE 0x80000000
#define PRPMC750_ISA_IO_BASE PREP_ISA_IO_BASE
#define PRPMC750_ISA_MEM_BASE PREP_ISA_MEM_BASE
#define PRPMC750_ISA_IO_BASE PRPMC750_PCI_IO_BASE
#define PRPMC750_ISA_MEM_BASE PRPMC750_PCI_MEM_BASE
#define PRPMC750_PCI_MEM_OFFSET PRPMC750_PCI_PHY_MEM_BASE
/* PCI Memory space mapping info */
#define PRPMC750_PCI_MEM_SIZE 0x30000000U
#define PRPMC750_PROC_PCI_MEM_START PRPMC750_ISA_MEM_BASE
#define PRPMC750_PROC_PCI_MEM_END (PRPMC750_PROC_PCI_MEM_START + \
PRPMC750_PCI_MEM_SIZE - 1)
#define PRPMC750_PCI_MEM_START 0x00000000U
#define PRPMC750_PCI_MEM_END (PRPMC750_PCI_MEM_START + \
PRPMC750_PCI_MEM_SIZE - 1)
#define PRPMC750_SYS_MEM_BASE 0x80000000
/* PCI I/O space mapping info */
#define PRPMC750_PCI_IO_SIZE 0x10000000U
#define PRPMC750_PROC_PCI_IO_START PRPMC750_ISA_IO_BASE
#define PRPMC750_PROC_PCI_IO_END (PRPMC750_PROC_PCI_IO_START + \
PRPMC750_PCI_IO_SIZE - 1)
#define PRPMC750_PCI_IO_START 0x00000000U
#define PRPMC750_PCI_IO_END (PRPMC750_PCI_IO_START + \
PRPMC750_PCI_IO_SIZE - 1)
#define PRPMC750_PCI_LOWER_MEM 0x00000000
#define PRPMC750_PCI_UPPER_MEM_AUTO 0x3bf7ffff
#define PRPMC750_PCI_UPPER_MEM 0x3bffffff
#define PRPMC750_PCI_LOWER_IO 0x00000000
#define PRPMC750_PCI_UPPER_IO 0x0ff7ffff
/* System memory mapping info */
#define PRPMC750_PCI_DRAM_OFFSET PREP_PCI_DRAM_OFFSET
#define PRPMC750_PCI_PHY_MEM_OFFSET (PRPMC750_ISA_MEM_BASE-PRPMC750_PCI_MEM_START)
#define PRPMC750_HAWK_MPIC_BASE 0xfbf80000
#define PRPMC750_HAWK_SMC_BASE 0xfef80000
/* Register address definitions */
#define PRPMC750_HAWK_SMC_BASE 0xfef80000U
#define PRPMC750_HAWK_PPC_REG_BASE 0xfeff0000U
#define PRPMC750_BASE_BAUD 1843200
#define PRPMC750_SERIAL_0 0xfef88000
...
...
@@ -61,5 +81,5 @@
#define PRPMC750_TBEN_REG 0xfef880c0
#define PRPMC750_TBEN_MASK 0x01
#endif
/* __ASM_PRPMC750_H__ */
#endif
/* __KERNEL__ */
#endif
/* __ASM_PRPMC750_H__ */
#endif
/* __KERNEL__ */
arch/ppc/platforms/prpmc750_pci.c
deleted
100644 → 0
View file @
4c9ff8d0
/*
* arch/ppc/platforms/prpmc750_pci.c
*
* PCI support for Motorola PrPMC750
*
* Author: Matt Porter <mporter@mvista.com>
*
* 2001 (c) MontaVista, Software, Inc. This file is licensed under
* the terms of the GNU General Public License version 2. This program
* is licensed "as is" without any warranty of any kind, whether express
* or implied.
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <asm/byteorder.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/uaccess.h>
#include <asm/machdep.h>
#include <asm/pci-bridge.h>
#include <platforms/prpmc750.h>
/*
* Motorola PrPMC750/PrPMC800 in PrPMCBASE or PrPMC-Carrier
* Combined irq tables. Only Base has IDSEL 14, only Carrier has 21 and 22.
*/
static
inline
int
prpmc_map_irq
(
struct
pci_dev
*
dev
,
unsigned
char
idsel
,
unsigned
char
pin
)
{
static
char
pci_irq_table
[][
4
]
=
/*
* PCI IDSEL/INTPIN->INTLINE
* A B C D
*/
{
{
12
,
0
,
0
,
0
},
/* IDSEL 14 - Ethernet, base */
{
0
,
0
,
0
,
0
},
/* IDSEL 15 - unused */
{
10
,
11
,
12
,
9
},
/* IDSEL 16 - PMC A1, PMC1 */
{
10
,
11
,
12
,
9
},
/* IDSEL 17 - PrPMC-A-B, PMC2-B */
{
11
,
12
,
9
,
10
},
/* IDSEL 18 - PMC A1-B, PMC1-B */
{
0
,
0
,
0
,
0
},
/* IDSEL 19 - unused */
{
9
,
10
,
11
,
12
},
/* IDSEL 20 - P2P Bridge */
{
11
,
12
,
9
,
10
},
/* IDSEL 21 - PMC A2, carrier */
{
12
,
9
,
10
,
11
},
/* IDSEL 22 - PMC A2-B, carrier */
};
const
long
min_idsel
=
14
,
max_idsel
=
22
,
irqs_per_slot
=
4
;
return
PCI_IRQ_TABLE_LOOKUP
;
};
static
void
__init
prpmc750_pcibios_fixup
(
void
)
{
struct
pci_dev
*
dev
;
unsigned
short
wtmp
;
/*
* Kludge to clean up after PPC6BUG which doesn't
* configure the CL5446 VGA card. Also the
* resource subsystem doesn't fixup the
* PCI mem resources on the CL5446.
*/
if
((
dev
=
pci_find_device
(
PCI_VENDOR_ID_CIRRUS
,
PCI_DEVICE_ID_CIRRUS_5446
,
0
)))
{
dev
->
resource
[
0
].
start
+=
PRPMC750_PCI_PHY_MEM_BASE
;
dev
->
resource
[
0
].
end
+=
PRPMC750_PCI_PHY_MEM_BASE
;
pci_read_config_word
(
dev
,
PCI_COMMAND
,
&
wtmp
);
pci_write_config_word
(
dev
,
PCI_COMMAND
,
wtmp
|
3
);
/* Enable Color mode in MISC reg */
outb
(
0x03
,
0x3c2
);
/* Select DRAM config reg */
outb
(
0x0f
,
0x3c4
);
/* Set proper DRAM config */
outb
(
0xdf
,
0x3c5
);
}
}
void
__init
prpmc750_find_bridges
(
void
)
{
struct
pci_controller
*
hose
;
hose
=
pcibios_alloc_controller
();
if
(
!
hose
)
return
;
hose
->
first_busno
=
0
;
hose
->
last_busno
=
0xff
;
hose
->
pci_mem_offset
=
PRPMC750_PCI_PHY_MEM_BASE
;
pci_init_resource
(
&
hose
->
io_resource
,
PRPMC750_PCI_LOWER_IO
,
PRPMC750_PCI_UPPER_IO
,
IORESOURCE_IO
,
"PCI host bridge"
);
pci_init_resource
(
&
hose
->
mem_resources
[
0
],
PRPMC750_PCI_LOWER_MEM
+
PRPMC750_PCI_PHY_MEM_BASE
,
PRPMC750_PCI_UPPER_MEM
+
PRPMC750_PCI_PHY_MEM_BASE
,
IORESOURCE_MEM
,
"PCI host bridge"
);
hose
->
io_space
.
start
=
PRPMC750_PCI_LOWER_IO
;
hose
->
io_space
.
end
=
PRPMC750_PCI_UPPER_IO
;
hose
->
mem_space
.
start
=
PRPMC750_PCI_LOWER_MEM
;
hose
->
mem_space
.
end
=
PRPMC750_PCI_UPPER_MEM_AUTO
;
hose
->
io_base_virt
=
(
void
*
)
PRPMC750_ISA_IO_BASE
;
setup_indirect_pci
(
hose
,
PRPMC750_PCI_CONFIG_ADDR
,
PRPMC750_PCI_CONFIG_DATA
);
/*
* Disable MPIC response to PCI I/O space (BAR 0).
* Make MPIC respond to PCI Mem space at specified address.
* (BAR 1).
*/
early_write_config_dword
(
hose
,
0
,
PCI_DEVFN
(
0
,
0
),
PCI_BASE_ADDRESS_0
,
0x00000000
|
0x1
);
early_write_config_dword
(
hose
,
0
,
PCI_DEVFN
(
0
,
0
),
PCI_BASE_ADDRESS_1
,
(
PRPMC750_HAWK_MPIC_BASE
-
PRPMC750_PCI_MEM_OFFSET
)
|
0x0
);
hose
->
last_busno
=
pciauto_bus_scan
(
hose
,
hose
->
first_busno
);
ppc_md
.
pcibios_fixup
=
prpmc750_pcibios_fixup
;
ppc_md
.
pci_swizzle
=
common_swizzle
;
ppc_md
.
pci_map_irq
=
prpmc_map_irq
;
}
arch/ppc/platforms/sandpoint.c
View file @
165bcfcf
...
...
@@ -444,6 +444,8 @@ sandpoint_init_IRQ(void)
openpic_set_sources
(
0
,
16
,
OpenPIC_Addr
+
0x10200
);
openpic_init
(
NUM_8259_INTERRUPTS
);
openpic_hookup_cascade
(
NUM_8259_INTERRUPTS
,
"82c59 cascade"
,
i8259_irq
);
/*
* openpic_init() has set up irq_desc[16-31] to be openpic
...
...
arch/ppc/syslib/Makefile
View file @
165bcfcf
...
...
@@ -39,7 +39,7 @@ obj-$(CONFIG_ADIR) += i8259.o indirect_pci.o pci_auto.o \
obj-$(CONFIG_EBONY)
+=
indirect_pci.o pci_auto.o todc_time.o
obj-$(CONFIG_EV64260)
+=
gt64260_common.o gt64260_pic.o
\
indirect_pci.o todc_time.o pci_auto.o
obj-$(CONFIG_GEMINI)
+=
open_pic.o i
8259.o i
ndirect_pci.o
obj-$(CONFIG_GEMINI)
+=
open_pic.o indirect_pci.o
obj-$(CONFIG_K2)
+=
i8259.o indirect_pci.o todc_time.o
\
pci_auto.o
obj-$(CONFIG_LOPEC)
+=
pci_auto.o open_pic.o i8259.o todc_time.o
...
...
arch/ppc/syslib/cpc710.h
View file @
165bcfcf
...
...
@@ -26,8 +26,10 @@
#define ERRC 0xff001050
#define SESR 0xff001060
#define SEAR 0xff001070
#define SIOC1 0xff001090
#define PGCHP 0xff001100
#define GPDIR 0xff001130
#define GPOUT 0xff001150
#define ATAS 0xff001160
#define AVDG 0xff001170
#define MCCR 0xff001200
...
...
arch/ppc/syslib/open_pic.c
View file @
165bcfcf
...
...
@@ -48,6 +48,8 @@ static u_int NumProcessors;
static
u_int
NumSources
;
static
int
open_pic_irq_offset
;
static
volatile
OpenPIC_Source
*
ISR
[
NR_IRQS
];
static
int
openpic_cascade_irq
=
-
1
;
static
int
(
*
openpic_cascade_fn
)(
struct
pt_regs
*
);
/* Global Operations */
static
void
openpic_disable_8259_pass_through
(
void
);
...
...
@@ -416,13 +418,6 @@ void __init openpic_init(int offset)
/* Initialize the spurious interrupt */
if
(
ppc_md
.
progress
)
ppc_md
.
progress
(
"openpic: spurious"
,
0x3bd
);
openpic_set_spurious
(
OPENPIC_VEC_SPURIOUS
+
offset
);
/* Initialize the cascade */
if
(
offset
)
{
if
(
request_irq
(
offset
,
no_action
,
SA_INTERRUPT
,
"82c59 cascade"
,
NULL
))
printk
(
"Unable to get OpenPIC IRQ 0 for cascade
\n
"
);
}
openpic_disable_8259_pass_through
();
#ifdef CONFIG_EPIC_SERIAL_MODE
openpic_eicr_set_clk
(
7
);
/* Slowest value until we know better */
...
...
@@ -682,6 +677,19 @@ openpic_init_nmi_irq(u_int irq)
*
*/
/*
* Hookup a cascade to the OpenPIC.
*/
void
__init
openpic_hookup_cascade
(
u_int
irq
,
char
*
name
,
int
(
*
cascade_fn
)(
struct
pt_regs
*
))
{
openpic_cascade_irq
=
irq
;
openpic_cascade_fn
=
cascade_fn
;
if
(
request_irq
(
irq
,
no_action
,
SA_INTERRUPT
,
name
,
NULL
))
printk
(
"Unable to get OpenPIC IRQ %d for cascade
\n
"
,
irq
-
open_pic_irq_offset
);
}
/*
* Enable/disable an external interrupt source
...
...
@@ -841,14 +849,19 @@ openpic_get_irq(struct pt_regs *regs)
int
irq
=
openpic_irq
();
/*
* This needs to be cleaned up. We don't necessarily have
* an i8259 cascaded or even a cascade.
* Check for the cascade interrupt and call the cascaded
* interrupt controller function (usually i8259_irq) if so.
* This should move to irq.c eventually. -- paulus
*/
if
(
open_pic_irq_offset
&&
irq
==
open_pic_irq_offset
)
{
/* Get the IRQ from the cascade. */
irq
=
i8259_irq
(
regs
);
openpic_eoi
();
}
else
if
(
irq
==
OPENPIC_VEC_SPURIOUS
+
open_pic_irq_offset
)
if
(
irq
==
openpic_cascade_irq
&&
openpic_cascade_fn
!=
NULL
)
{
int
cirq
=
openpic_cascade_fn
(
regs
);
/* Allow for the cascade being shared with other devices */
if
(
cirq
!=
-
1
)
{
irq
=
cirq
;
openpic_eoi
();
}
}
else
if
(
irq
==
OPENPIC_VEC_SPURIOUS
+
open_pic_irq_offset
)
irq
=
-
1
;
return
irq
;
}
...
...
arch/ppc64/mm/numa.c
View file @
165bcfcf
...
...
@@ -184,6 +184,8 @@ static int __init parse_numa_properties(void)
if
(
numa_domain
>=
MAX_NUMNODES
)
BUG
();
node_set_online
(
numa_domain
);
if
(
max_domain
<
numa_domain
)
max_domain
=
numa_domain
;
...
...
fs/dquot.c
View file @
165bcfcf
...
...
@@ -1325,7 +1325,6 @@ int vfs_quota_off(struct super_block *sb, int type)
dqopt
->
ops
[
cnt
]
=
NULL
;
}
up
(
&
dqopt
->
dqonoff_sem
);
out:
return
0
;
}
...
...
include/asm-ppc/elf.h
View file @
165bcfcf
...
...
@@ -74,6 +74,8 @@ typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG];
#ifdef __KERNEL__
struct
task_struct
;
/*
* This is used to ensure we don't load something for the wrong architecture.
*/
...
...
include/asm-ppc/open_pic.h
View file @
165bcfcf
...
...
@@ -41,6 +41,8 @@ extern void* OpenPIC_Addr;
extern
void
openpic_set_sources
(
int
first_irq
,
int
num_irqs
,
void
*
isr
);
extern
void
openpic_init
(
int
linux_irq_offset
);
extern
void
openpic_init_nmi_irq
(
u_int
irq
);
extern
void
openpic_hookup_cascade
(
u_int
irq
,
char
*
name
,
int
(
*
cascade_fn
)(
struct
pt_regs
*
));
extern
u_int
openpic_irq
(
void
);
extern
void
openpic_eoi
(
void
);
extern
void
openpic_request_IPIs
(
void
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment