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
Kirill Smelkov
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