Commit 0f9b6e47 authored by James Simmons's avatar James Simmons

Merge maxwell.earthlink.net:/usr/src/linus-2.5

into maxwell.earthlink.net:/usr/src/fbdev-2.5
parents 874d3efe 03a85f8e
......@@ -2440,7 +2440,6 @@ D: implemented kmod
D: modularized BSD Unix domain sockets
N: Martin Kasper Petersen
E: mkp@linuxcare.com
E: mkp@mkp.net
D: PA-RISC port
D: XFS file system
......@@ -3466,14 +3465,10 @@ S: D-73732 Esslingen
S: Germany
N: Leonard N. Zubkoff
E: lnz@dandelion.com
W: http://www.dandelion.com/Linux/
D: BusLogic SCSI driver
D: Mylex DAC960 PCI RAID driver
D: Miscellaneous kernel fixes
S: 3078 Sulphur Spring Court
S: San Jose, California 95148
S: USA
N: Alessandro Zummo
E: azummo@ita.flashnet.it
......
......@@ -186,6 +186,7 @@ Original developers of the crypto algorithms:
Kazunori Miyazawa / USAGI (HMAC)
Matthew Skala (Twofish)
Dag Arne Osvik (Serpent)
Brian Gladman (AES)
DES algorithm contributors:
Raimar Falke
......@@ -203,6 +204,10 @@ Twofish algorithm contributors:
SHA256 algorithm contributors:
Andrew McDonald
AES algorithm contributors:
Alexander Kjeldaas
Adam J. Richter
Please send any credits updates or corrections to:
James Morris <jmorris@intercode.com.au>
......@@ -1462,10 +1462,14 @@ routing issues.
error_burst and error_cost
--------------------------
These parameters are used to limit the warning messages written to the kernel
log from the routing code. The higher the error_cost factor is, the fewer
messages will be written. Error_burst controls when messages will be dropped.
The default settings limit warning messages to one every five seconds.
These parameters are used to limit how many ICMP destination unreachable to
send from the host in question. ICMP destination unreachable messages are
sent when we can not reach the next hop, while trying to transmit a packet.
It will also print some error messages to kernel logs if someone is ignoring
our ICMP redirects. The higher the error_cost factor is, the fewer
destination unreachable and error messages will be let through. Error_burst
controls when destination unreachable messages and error messages will be
dropped. The default settings limit warning messages to five every second.
flush
-----
......
......@@ -176,11 +176,11 @@ hardware.
Locking: port_sem taken.
Interrupts: caller dependent.
change_speed(port,cflag,iflag,quot)
set_termios(port,termios,oldtermios)
Change the port parameters, including word length, parity, stop
bits. Update read_status_mask and ignore_status_mask to indicate
the types of events we are interested in receiving. Relevant
cflag bits are:
termios->c_cflag bits are:
CSIZE - word size
CSTOPB - 2 stop bits
PARENB - parity enable
......@@ -191,7 +191,7 @@ hardware.
CRTSCTS - if set, enable CTS status change reporting
CLOCAL - if not set, enable modem status change
reporting.
Relevant iflag bits are:
Relevant termios->c_iflag bits are:
INPCK - enable frame and parity error events to be
passed to the TTY layer.
BRKINT
......@@ -278,6 +278,35 @@ hardware.
Locking: none.
Interrupts: caller dependent.
Other functions
---------------
uart_update_timeout(port,cflag,quot)
Update the FIFO drain timeout, port->timeout, according to the
number of bits, parity, stop bits and quotient.
Locking: caller is expected to take port->lock
Interrupts: n/a
uart_get_baud_rate(port,termios)
Return the numeric baud rate for the specified termios, taking
account of the special 38400 baud "kludge". The B0 baud rate
is mapped to 9600 baud.
Locking: caller dependent.
Interrupts: n/a
uart_get_divisor(port,termios,oldtermios)
Return the divsor (baud_base / baud) for the selected baud rate
specified by termios. If the baud rate is out of range, try
the original baud rate specified by oldtermios (if non-NULL).
If that fails, try 9600 baud.
If 38400 baud and custom divisor is selected, return the
custom divisor instead.
Locking: caller dependent.
Interrupts: n/a
Other notes
-----------
......@@ -292,10 +321,3 @@ thus:
struct uart_port port;
int my_stuff;
};
Todo
----
Please see the BUGS file in CVS at
http://cvs.arm.linux.org.uk/cgi/viewcvs.cgi/serial/BUGS
Copyright (C) 1999, 2000 David E. Nelson
April 26, 2000
CHANGES
- Amended for Linux-2.3.99-pre6-3
- Updated for multiple scanner support
INTRODUCTION
This document will hopefully provide enough info on how to get SANE
working with a Hewlett Packard USB capable scanner using the USB
interface. The majority of HP Scanners support the Scanner Control
Language (SCL) which is both published by HP and supported by SANE.
The only HP Scanners that I'm aware of that do not support SCL are the
4200C ,3300C, and the PhotoSmart S20. All other HP scanners with USB
interfaces should work (4100C, 5200C, 6200C, and 6300C) as do models
that are derived from the models above. ie the 6350C which is a 6300C
with a transparency adaptor included with the scanner at time of
purchase. Of course as HP releases new scanners this information may
change.
REQUIREMENTS
In order to get this running you'll need USB support in your kernel in
addition to USB Scanner support. Please refer to scanner.txt for
issues pertaining to Linux USB and USB Scanner support.
An installed version of SANE which is available from
http://www.mostang.com/sane/. Testing has been performed using
version SANE-1.0.1. For instructions on building and installing SANE,
refer to the various README files within the SANE distribution.
The latest SANE HP backend is available from http://www.kirchgessner.net.
At the time of this writing, version 0.83 was available.
OK, I'VE INSTALLED SANE. SO WHAT DO I DO NOW?
NOTE: $INSTALL_DIR is the location where SANE is installed. It may be
/usr/local, /usr, /opt or somewhere else. If you don't know, ask your
system administrator.
1) Make sure that you have the libsane-hp.* libraries under the
$INSTALL_DIR/lib/sane/ directory. If you don't, then the HP backend
was either not compiled or installed properly.
2) Under the directory $INSTALL_DIR/etc/sane.d/ edit the following
files: dll.conf, hp.conf.
dll.conf: Make sure that the 'hp' entry is present and uncommented.
hp.conf: This should contain two lines:
/dev/usbscanner
option connect-device
NOTE: If you are using multiple scanners, make sure to have the correct
device, ie /dev/usbscanner0. See scanner.txt for more info.
3) You should now be able to use SANE (xscanimage or scanimage).
Don't forget to read any relevant man pages regarding the usage of
SANE. If you have other entries uncommented in 'dll.conf', you may
have to specify the device to (x)scanimage. Again, `man` is your
friend. The xscanimage (1) man page has info on how to get 'The Gimp'
to work with xscanimage. Note that Gimp support must be compiled into
SANE for it to work. If you are dealing with a RedHat system, this
means that you'll also need to install the gimp-devel rpm package
prior to compiling SANE.
NOTE: The issues regarding core dumping by (x)scanimage have (or seem
to be thus far) been resolved with version 0.2+ of the USB scanner
driver which should be available in linux-2.3.23. If you notice
otherwise, please contact me.
David /\/elson
dnelson@jump.net
http://www.jump.net/~dnelson
This diff is collapsed.
......@@ -69,7 +69,7 @@ bttv.o
card=67 - IODATA GV-BCTV4/PCI
card=68 - 3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)
card=69 - Active Imaging AIMMS
card=70 - Prolink Pixelview PV-BT878P+ (Rev.4C)
card=70 - Prolink Pixelview PV-BT878P+ (Rev.4C,8E)
card=71 - Lifeview FlyVideo 98EZ (capture only) LR51
card=72 - Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)
card=73 - Sensoray 311
......
......@@ -4,25 +4,27 @@ is available at: http://mayerg.gmxhome.de/bttv/bttv-gallery.html
Suppported cards:
Bt848/Bt848a/Bt849/Bt878/Bt879 cards
------------------------------------
All cards with Bt848/Bt848a/Bt849/Bt878/Bt879 and normal Composite/S-VHS inputs
are supported.
Teletext and Intercast support (PAL only) for ALL cards via VBI sample decoding
in software.
All cards with Bt848/Bt848a/Bt849/Bt878/Bt879 and normal
Composite/S-VHS inputs are supported. Teletext and Intercast support
(PAL only) for ALL cards via VBI sample decoding in software.
Some cards with additional multiplexing of inputs or other additional
fancy chips are only partially supported (unless specifications by the
card manufacturer are given). When a card is listed here it isn't
necessarily fully supported.
Some cards with additional multiplexing of inputs are only partially
supported (unless specifications by the card manufacturer are given).
All other cards only differ by additional components as tuners, sound
decoders, EEPROMs, teletext decoders ...
All other cards only differ by additional components as tuners, sound decoders,
EEPROMs, teletext decoders ...
Unsupported Cards:
------------------
Cards with Zoran (ZR) or Philips (SAA) or ISA are not supported by this driver.
Cards with Zoran (ZR) or Philips (SAA) or ISA are not supported by
this driver.
MATRIX Vision
......@@ -197,7 +199,7 @@ Typhoon TV card series:
50686 "TV Tuner" = KNC1 TV Station
50687 "TV Tuner stereo" = KNC1 TV Station pro
50688 "TV Tuner RDS" (black package) = KNC1 TV Station RDS
50689 TV SAT DVB-S CARD CI PCI (SAA7146AH)
50689 TV SAT DVB-S CARD CI PCI (SAA7146AH, SU1278?) = "KNC1 TV Station DVB-S"
50692 "TV/FM Tuner" (small PCB)
50694 TV TUNER CARD RDS (PHILIPS CHIPSET SAA7134HL)
50696 TV TUNER STEREO (PHILIPS CHIPSET SAA7134HL, MK3ME Tuner)
......@@ -234,10 +236,20 @@ Prolink
PixelView PowerStudio PAK - (Model: PV-M3600 REV 4E)
PixelView DigitalVCR PAK - (Model: PV-M2400 REV 4C / 8D / 10A )
PixelView PlayTV PAK II (TV/FM card + usb camera) PV-M3800
PixelView PlayTV XP PV-M4700,PV-M4700(w/FM)
PixelView PlayTV DVR PV-M4600 package contents:PixelView PlayTV pro, windvr & videoMail s/w
Further Cards:
PV-BT878P+rev.9B (Play TV Pro, opt. w/FM w/NICAM)
PV-BT878P+rev.2F
PV-BT878P Rev.1D (bt878, capture only)
XCapture PV-CX881P (cx23881)
PlayTV HD PV-CX881PL+, PV-CX881PL+(w/FM) (cx23881)
DTV3000 PV-DTV3000P+ DVB-S CI = Twinhan VP-1030
DTV2000 DVB-S = Twinhan VP-1020
Video Conferencing:
PixelView Meeting PAK - (Model: PV-BT878P)
......@@ -245,6 +257,9 @@ Prolink
PixelView Meeting PAK plus - (Model: PV-BT878P+rev 4C/8D/10A)
PixelView Capture - (Model: PV-BT848P)
PixelView PlayTV USB pro
Model No. PV-NT1004+, PV-NT1004+ (w/FM) = NT1004 USB decoder chip + SAA7113 video decoder chip
Dynalink
--------
These are CPH series.
......@@ -284,6 +299,8 @@ KNC One
TV-Station pro (+TV stereo)
TV-Station FM (+Radio)
TV-Station RDS (+RDS)
TV Station SAT (analog satellite)
TV-Station DVB-S
newer Cards have saa7134, but model name stayed the same?
......@@ -296,8 +313,23 @@ Provideo
3DeMon PV951
MediaForte TV-Vision PV951
Yoko PV951
)
Vivanco Tuner Card PCI Art.-Nr.: 68404
) now named PV-951T
Surveillance Series
PV-141
PV-143
PV-147
PV-148 (capture only)
PV-150
PV-151
TV-FM Tuner Series
PV-951TDV (tv tuner + 1394)
PV-951T/TF
PV-951PT/TF
PV-956T/TF Low Profile
PV-911
Highscreen
----------
......@@ -372,9 +404,9 @@ Aimslab
IXMicro (former: IMS=Integrated Micro Solutions)
-------
IXTV BT848
IXTV BT848 (=TurboTV)
IXTV BT878
TurboTV (Bt848)
IMS TurboTV (Bt848)
Lifetec/Medion/Tevion/Aldi
--------------------------
......@@ -386,8 +418,10 @@ Lifetec/Medion/Tevion/Aldi
Modular Technologies (www.modulartech.com) UK
---------------------------------------------
MM100 PCTV (Bt848)
MM201 PCTV (Bt878, Bt832) w/ Quartzsight camera
MM202 PCTV (Bt878, Bt832, tda9874)
MM205 PCTV (Bt878)
MM210 PCTV (Bt878) (Galaxy TV)
MM210 PCTV (Bt878) (Galaxy TV, Galaxymedia ?)
Terratec
--------
......@@ -399,6 +433,7 @@ Terratec
Terra TValue Version BT878, "80-CP2830110-0 TTTV4" printed on the PCB,
"CPH011-D83" on back
Terra TValue Version 1.0 "ceb105.PCB" (really identical to Terra TV+ Version 1.0)
Terra TValue New Revision "LR102 Rec.C"
Terra Active Radio Upgrade (tea5757h, saa6588t)
LR74 is a newer PCB revision of ceb105 (both incl. connector for Active Radio Upgrade)
......@@ -446,7 +481,7 @@ Pinnacle
Studio PCTV Pro (Bt878 stereo w/ FM)
Pinnacle PCTV (Bt878, MT2032)
Pinnacle PCTV Pro (Bt878, MT2032)
Pinncale PCTV Sat
Pinncale PCTV Sat (bt878a, HM1821/1221)
M(J)PEG capture and playback:
DC1+ (ISA)
......@@ -519,7 +554,7 @@ Formac
------
iProTV (Card for iMac Mezzanine slot, Bt848+SCSI)
ProTV (Bt848)
ProTV II = ProTV Stereo (Bt878)
ProTV II = ProTV Stereo (Bt878) ["stereo" means FM stereo, tv is still mono]
ATI
---
......@@ -544,7 +579,7 @@ Intel
STB
---
STB bt878 == Gateway 6000704
STB Gateway 6000704 (bt878)
STB Gateway 6000699 (bt848)
STB Gateway 6000402 (bt848)
STB TV130 PCI
......@@ -558,13 +593,14 @@ Technotrend
------------
TT-SAT PCI (PCB "Sat-PCI Rev.:1.3.1"; zr36125, vpx3225d, stc0056a, Tuner:BSKE6-155A
TT-DVB-Sat
revisions 1.1, 1.3, 1.5, 1.6 and 2.1
This card is sold as OEM from:
Siemens DVB-s Card
Hauppauge WinTV DVB-S
Technisat SkyStar 1 DVB
Galaxis DVB Sat
Now this card is called TT-PCline Premium Family
TT-Budget
TT-Budget (saa7146, bsru6-701a)
This card is sold as OEM from:
Hauppauge WinTV Nova
Satelco Standard PCI (DVB-S)
......@@ -603,18 +639,71 @@ Galaxis
Galaxis DVB Card C CI
Galaxis DVB Card S
Galaxis DVB Card C
Galaxis plug.in S [neuer Name: Galaxis DVB Card S CI
Hauppauge
---------
many many WinTV models ...
WinTV DVBs = Tehcnotrend Premium
WinTV NOVA = Technotrend Budget
WinTV NOVA-CI
WinTV-Nexus-s
WinTV DVBs = Technotrend Premium 1.3
WinTV NOVA = Technotrend Budget 1.1 "S-DVB DATA"
WinTV NOVA-CI "SDVBACI"
WinTV Nova USB (=Technotrend USB 1.0)
WinTV-Nexus-s (=Technotrend Premium 2.1 or 2.2)
WinTV PVR
WinTV PVR 250
WinTV PVR 450
US models
990 WinTV-PVR-350 (249USD)
980 WinTV-PVR-250 (149USD)
880 WinTV-PVR-PCI (199USD)
881 WinTV-PVR-USB
190 WinTV-GO
191 WinTV-GO-FM
404 WinTV
401 WinTV-radio
495 WinTV-Theater
602 WinTV-USB
621 WinTV-USB-FM
600 USB-Live
698 WinTV-HD
697 WinTV-D
564 WinTV-Nexus-S
Deutsche Modelle
603 WinTV GO
719 WinTV Primio-FM
718 WinTV PCI-FM
497 WinTV Theater
569 WinTV USB
568 WinTV USB-FM
882 WinTV PVR
981 WinTV PVR 250
891 WinTV-PVR-USB
541 WinTV Nova
488 WinTV Nova-Ci
564 WinTV-Nexus-s
727 WinTV-DVB-c
545 Common Interface
898 WinTV-Nova-USB
UK models
607 WinTV Go
693,793 WinTV Primio FM
647,747 WinTV PCI FM
498 WinTV Theater
883 WinTV PVR
893 WinTV PVR USB (Duplicate entry)
566 WinTV USB (UK)
573 WinTV USB FM
429 Impact VCB (bt848)
600 USB Libe (Video-In 1x Comp, 1xSVHS)
542 WinTV Nova
717 WinTV DVB-S
909 Nova-t PCI
893 Nova-t USB (Duplicate entry)
Matrix-Vision
-------------
MATRIX-Vision MV-Delta
......@@ -699,7 +788,7 @@ Boser www.boser.com.tw
HS-878 Mini PCI Capture Add-on Card
HS-879 Mini PCI 3D Audio and Capture Add-on Card (w/ ES1938 Solo-1)
Satelco
Satelco www.citycom-gmbh.de, www.satelco.de
-------
TV-FM =KNC1 saa7134
Standard PCI (DVB-S) = Technotrend Budget
......@@ -724,7 +813,8 @@ CEI (Chartered Electronics Industries Pte Ltd [CEI] [FCC ID HBY])
AITech
------
AITech WaveWatcher TV-PCI = LR26
Wavewatcher TV (ISA)
AITech WaveWatcher TV-PCI = can be LR26 (Bt848) or LR50 (BT878)
WaveWatcher TVR-202 TV/FM Radio Card (ISA)
MAXRON
......@@ -750,3 +840,42 @@ Cybertainment
CyberMail AV Video Email Kit w/ PCI Capture Card (capture only)
CyberMail Xtreme
These are Flyvideo
VCR (http://www.vcrinc.com/)
---
Video Catcher 16
Twinhan
-------
DST Card/DST-IP (bt878, twinhan asic) VP-1020
Sold as:
KWorld DVBS Satellite TV-Card
Powercolor DSTV Satellite Tuner Card
Prolink Pixelview DTV2000
Provideo PV-911 Digital Satellite TV Tuner Card With Common Interface ?
DST-CI Card (DVB Satellite) VP-1030
DCT Card (DVB cable)
MSI
---
MSI TV@nywhere Tuner Card (MS-8876) (CX23881/883) Not Bt878 compatible.
MS-8401 DVB-S
Focus www.focusinfo.com
-----
InVideo PCI (bt878)
Sdisilk www.sdisilk.com/
-------
SDI Silk 100
SDI Silk 200 SDI Input Card
www.euresys.com
PICOLO series
PMC/Pace
www.pacecom.co.uk website closed
Mercury www.kobian.com (UK and FR)
LR50
LR138RBG-Rx == LR138
VERSION = 2
PATCHLEVEL = 5
SUBLEVEL = 54
SUBLEVEL = 55
EXTRAVERSION =
# *DOCUMENTATION*
......
......@@ -303,11 +303,6 @@ config X86_POPAD_OK
depends on !M386
default y
config X86_USE_STRING_486
bool
depends on MELAN || M586MMX || M586TSC || M586 || M486
default y
config X86_ALIGNMENT_16
bool
depends on MWINCHIP3D || MWINCHIP2 || MWINCHIPC6 || MCYRIXIII || MELAN || MK6 || M586MMX || M586TSC || M586 || M486
......@@ -345,11 +340,11 @@ config X86_OOSTORE
config X86_PREFETCH
bool
depends on MPENTIUMIII || MP4
depends on MPENTIUMIII || MPENTIUM4
default y
config X86_SSE2
bool
bool
depends on MK8 || MPENTIUM4
default y
......
......@@ -419,8 +419,8 @@ edd_show_info_flags(struct edd_device *edev, char *buf, size_t count,
return 0;
}
if (info->params.info_flags & EDD_INFO_DMA_BOUNDRY_ERROR_TRANSPARENT)
p += snprintf(p, left, "DMA boundry error transparent\n");
if (info->params.info_flags & EDD_INFO_DMA_BOUNDARY_ERROR_TRANSPARENT)
p += snprintf(p, left, "DMA boundary error transparent\n");
if (info->params.info_flags & EDD_INFO_GEOMETRY_VALID)
p += snprintf(p, left, "geometry valid\n");
if (info->params.info_flags & EDD_INFO_REMOVABLE)
......
......@@ -145,16 +145,16 @@ ENTRY(lcall7)
# gates, which has to be cleaned up later..
pushl %eax
SAVE_ALL
movl %esp, %ebx
pushl %ebx
movl %esp, %ebp
pushl %ebp
pushl $0x7
do_lcall:
movl EIP(%ebx), %eax # due to call gates, this is eflags, not eip..
movl CS(%ebx), %edx # this is eip..
movl EFLAGS(%ebx), %ecx # and this is cs..
movl %eax,EFLAGS(%ebx) #
movl %edx,EIP(%ebx) # Now we move them to their "normal" places
movl %ecx,CS(%ebx) #
movl EIP(%ebp), %eax # due to call gates, this is eflags, not eip..
movl CS(%ebp), %edx # this is eip..
movl EFLAGS(%ebp), %ecx # and this is cs..
movl %eax,EFLAGS(%ebp) #
movl %edx,EIP(%ebp) # Now we move them to their "normal" places
movl %ecx,CS(%ebp) #
#
# Call gates don't clear TF and NT in eflags like
......@@ -166,8 +166,8 @@ do_lcall:
pushl %eax
popfl
andl $-8192, %ebx # GET_THREAD_INFO
movl TI_EXEC_DOMAIN(%ebx), %edx # Get the execution domain
andl $-8192, %ebp # GET_THREAD_INFO
movl TI_EXEC_DOMAIN(%ebp), %edx # Get the execution domain
call *4(%edx) # Call the lcall7 handler for the domain
addl $4, %esp
popl %eax
......@@ -178,8 +178,8 @@ ENTRY(lcall27)
# gates, which has to be cleaned up later..
pushl %eax
SAVE_ALL
movl %esp, %ebx
pushl %ebx
movl %esp, %ebp
pushl %ebp
pushl $0x27
jmp do_lcall
......@@ -187,7 +187,7 @@ ENTRY(lcall27)
ENTRY(ret_from_fork)
# NOTE: this function takes a parameter but it's unused on x86.
call schedule_tail
GET_THREAD_INFO(%ebx)
GET_THREAD_INFO(%ebp)
jmp syscall_exit
/*
......@@ -202,7 +202,7 @@ ENTRY(ret_from_fork)
ret_from_exception:
preempt_stop
ret_from_intr:
GET_THREAD_INFO(%ebx)
GET_THREAD_INFO(%ebp)
movl EFLAGS(%esp), %eax # mix EFLAGS and CS
movb CS(%esp), %al
testl $(VM_MASK | 3), %eax
......@@ -211,7 +211,7 @@ ENTRY(resume_userspace)
cli # make sure we don't miss an interrupt
# setting need_resched or sigpending
# between sampling and the iret
movl TI_FLAGS(%ebx), %ecx
movl TI_FLAGS(%ebp), %ecx
andl $_TIF_WORK_MASK, %ecx # is there any work to be done on
# int/exception return?
jne work_pending
......@@ -219,18 +219,18 @@ ENTRY(resume_userspace)
#ifdef CONFIG_PREEMPT
ENTRY(resume_kernel)
cmpl $0,TI_PRE_COUNT(%ebx) # non-zero preempt_count ?
cmpl $0,TI_PRE_COUNT(%ebp) # non-zero preempt_count ?
jnz restore_all
need_resched:
movl TI_FLAGS(%ebx), %ecx # need_resched set ?
movl TI_FLAGS(%ebp), %ecx # need_resched set ?
testb $_TIF_NEED_RESCHED, %cl
jz restore_all
testl $IF_MASK,EFLAGS(%esp) # interrupts off (execption path) ?
jz restore_all
movl $PREEMPT_ACTIVE,TI_PRE_COUNT(%ebx)
movl $PREEMPT_ACTIVE,TI_PRE_COUNT(%ebp)
sti
call schedule
movl $0,TI_PRE_COUNT(%ebx)
movl $0,TI_PRE_COUNT(%ebp)
cli
jmp need_resched
#endif
......@@ -262,21 +262,21 @@ ENTRY(sysenter_entry)
pushl %eax
SAVE_ALL
GET_THREAD_INFO(%ebx)
GET_THREAD_INFO(%ebp)
cmpl $(NR_syscalls), %eax
jae syscall_badsys
testb $_TIF_SYSCALL_TRACE,TI_FLAGS(%ebx)
testb $_TIF_SYSCALL_TRACE,TI_FLAGS(%ebp)
jnz syscall_trace_entry
call *sys_call_table(,%eax,4)
movl %eax,EAX(%esp)
cli
movl TI_FLAGS(%ebx), %ecx
movl TI_FLAGS(%ebp), %ecx
testw $_TIF_ALLWORK_MASK, %cx
jne syscall_exit_work
RESTORE_INT_REGS
movl 12(%esp),%edx
movl 24(%esp),%ecx
/* if something modifies registers it must also disable sysexit */
movl EIP(%esp), %edx
movl OLDESP(%esp), %ecx
sti
sysexit
......@@ -286,11 +286,11 @@ ENTRY(sysenter_entry)
ENTRY(system_call)
pushl %eax # save orig_eax
SAVE_ALL
GET_THREAD_INFO(%ebx)
GET_THREAD_INFO(%ebp)
cmpl $(NR_syscalls), %eax
jae syscall_badsys
# system call tracing in operation
testb $_TIF_SYSCALL_TRACE,TI_FLAGS(%ebx)
testb $_TIF_SYSCALL_TRACE,TI_FLAGS(%ebp)
jnz syscall_trace_entry
syscall_call:
call *sys_call_table(,%eax,4)
......@@ -299,7 +299,7 @@ syscall_exit:
cli # make sure we don't miss an interrupt
# setting need_resched or sigpending
# between sampling and the iret
movl TI_FLAGS(%ebx), %ecx
movl TI_FLAGS(%ebp), %ecx
testw $_TIF_ALLWORK_MASK, %cx # current->work
jne syscall_exit_work
restore_all:
......@@ -315,7 +315,7 @@ work_resched:
cli # make sure we don't miss an interrupt
# setting need_resched or sigpending
# between sampling and the iret
movl TI_FLAGS(%ebx), %ecx
movl TI_FLAGS(%ebp), %ecx
andl $_TIF_WORK_MASK, %ecx # is there any work to be done other
# than syscall tracing?
jz restore_all
......@@ -370,7 +370,7 @@ syscall_exit_work:
syscall_fault:
pushl %eax # save orig_eax
SAVE_ALL
GET_THREAD_INFO(%ebx)
GET_THREAD_INFO(%ebp)
movl $-EFAULT,EAX(%esp)
jmp resume_userspace
......
......@@ -1017,7 +1017,7 @@ void __init mp_config_ioapic_for_sci(int irq)
* walking the MADT again.
*/
status = acpi_get_firmware_table("APIC", 1, ACPI_LOGICAL_ADDRESSING,
(acpi_table_header **) &madt);
(struct acpi_table_header **) &madt);
if (ACPI_SUCCESS(status)) {
madt_end = (void *) (unsigned long)madt + madt->header.length;
......
......@@ -19,7 +19,7 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
void *ret;
int gfp = GFP_ATOMIC;
if (dev == NULL || ((u32)*dev->dma_mask != 0xffffffff))
if (dev == NULL || (*dev->dma_mask < 0xffffffff))
gfp |= GFP_DMA;
ret = (void *)__get_free_pages(gfp, get_order(size));
......
......@@ -276,8 +276,11 @@ static inline unsigned long get_cr2(void)
static inline void do_trap(int trapnr, int signr, char *str, int vm86,
struct pt_regs * regs, long error_code, siginfo_t *info)
{
if (vm86 && regs->eflags & VM_MASK)
goto vm86_trap;
if (regs->eflags & VM_MASK) {
if (vm86)
goto vm86_trap;
goto trap_signal;
}
if (!(regs->xcs & 3))
goto kernel_trap;
......
......@@ -298,9 +298,10 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk
__asm__ __volatile__(
"xorl %%eax,%%eax; movl %%eax,%%fs; movl %%eax,%%gs\n\t"
"movl %0,%%esp\n\t"
"movl %1,%%ebp\n\t"
"jmp resume_userspace"
: /* no outputs */
:"r" (&info->regs), "b" (tsk->thread_info) : "ax");
:"r" (&info->regs), "r" (tsk->thread_info) : "ax");
/* we never return here */
}
......@@ -311,8 +312,9 @@ static inline void return_to_32bit(struct kernel_vm86_regs * regs16, int retval)
regs32 = save_v86_state(regs16);
regs32->eax = retval;
__asm__ __volatile__("movl %0,%%esp\n\t"
"movl %1,%%ebp\n\t"
"jmp resume_userspace"
: : "r" (regs32), "b" (current_thread_info()));
: : "r" (regs32), "r" (current_thread_info()));
}
static inline void set_IF(struct kernel_vm86_regs * regs)
......
......@@ -1060,13 +1060,7 @@ config HIGHMEM_START_BOOL
Say N here unless you know what you are doing.
config HIGHMEM_START
hex "Virtual start address of high memory pool"
depends on HIGHMEM_START_BOOL
default "0xfe000000"
config HIGHMEM_START
hex
depends on !HIGHMEM_START_BOOL
hex "Virtual start address of high memory pool" if HIGHMEM_START_BOOL
default "0xfe000000"
config LOWMEM_SIZE_BOOL
......@@ -1082,14 +1076,8 @@ config LOWMEM_SIZE_BOOL
Say N here unless you know what you are doing.
config LOWMEM_SIZE
hex "Maximum low memory size (in bytes)"
depends on LOWMEM_SIZE_BOOL
default "0x20000000"
config LOWMEM_SIZE
hex
depends on !LOWMEM_SIZE_BOOL
default "0x20000000"
hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
default "0x30000000"
config KERNEL_START_BOOL
bool "Set custom kernel base address"
......@@ -1103,13 +1091,7 @@ config KERNEL_START_BOOL
Say N here unless you know what you are doing.
config KERNEL_START
hex "Virtual address of kernel base"
depends on KERNEL_START_BOOL
default "0xc0000000"
config KERNEL_START
hex
depends on !KERNEL_START_BOOL
hex "Virtual address of kernel base" if KERNEL_START_BOOL
default "0xc0000000"
config TASK_SIZE_BOOL
......@@ -1123,13 +1105,7 @@ config TASK_SIZE_BOOL
Say N here unless you know what you are doing.
config TASK_SIZE
hex "Size of user task space"
depends on TASK_SIZE_BOOL
default "0x80000000"
config TASK_SIZE
hex
depends on !TASK_SIZE_BOOL
hex "Size of user task space" if TASK_SIZE_BOOL
default "0x80000000"
config BOOT_LOAD_BOOL
......@@ -1143,19 +1119,8 @@ config BOOT_LOAD_BOOL
Say N here unless you know what you are doing.
config BOOT_LOAD
hex "Link/load address for booting"
depends on BOOT_LOAD_BOOL
default "0x00400000"
# If we don't have a custom load, we define one here depending.
config BOOT_LOAD
hex
depends on !BOOT_LOAD_BOOL && (40x || 8xx || 8260)
default "0x00400000"
config BOOT_LOAD
hex
depends on !BOOT_LOAD_BOOL
hex "Link/load address for booting" if BOOT_LOAD_BOOL
default "0x00400000" if 40x || 8xx || 8260
default "0x00800000"
config PIN_TLB
......
......@@ -316,9 +316,31 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
{
struct bi_record *rec;
rec = (struct bi_record *)_ALIGN((unsigned long)(zimage_size) +
unsigned long initrd_loc;
unsigned long rec_loc = _ALIGN((unsigned long)(zimage_size) +
(1 << 20) - 1, (1 << 20));
rec = (struct bi_record *)rec_loc;
/* We need to make sure that the initrd and bi_recs do not
* overlap. */
if ( initrd_size ) {
initrd_loc = (unsigned long)(&__ramdisk_begin);
/* If the bi_recs are in the middle of the current
* initrd, move the initrd to the next MB
* boundary. */
if ((rec_loc > initrd_loc) &&
((initrd_loc + initrd_size)
> rec_loc)) {
initrd_loc = _ALIGN((unsigned long)(zimage_size)
+ (2 << 20) - 1, (2 << 20));
memmove((void *)initrd_loc, &__ramdisk_begin,
initrd_size);
puts("initrd moved: "); puthex(initrd_loc);
puts(" "); puthex(initrd_loc + initrd_size);
puts("\n");
}
}
rec->tag = BI_FIRST;
rec->size = sizeof(struct bi_record);
......@@ -348,7 +370,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
if ( initrd_size ) {
rec->tag = BI_INITRD;
rec->data[0] = (unsigned long)(&__ramdisk_begin);
rec->data[0] = initrd_loc;
rec->data[1] = initrd_size;
rec->size = sizeof(struct bi_record) + 2 *
sizeof(unsigned long);
......
......@@ -209,9 +209,30 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum, b
puts("done.\n");
{
struct bi_record *rec;
unsigned long initrd_loc;
unsigned long rec_loc = _ALIGN((unsigned long)(zimage_size) +
(1 << 20) - 1, (1 << 20));
rec = (struct bi_record *)rec_loc;
rec = (struct bi_record *)_ALIGN((unsigned long)zimage_size +
(1 << 20) - 1,(1 << 20));
/* We need to make sure that the initrd and bi_recs do not
* overlap. */
if ( initrd_size ) {
initrd_loc = (unsigned long)(&__ramdisk_begin);
/* If the bi_recs are in the middle of the current
* initrd, move the initrd to the next MB
* boundary. */
if ((rec_loc > initrd_loc) &&
((initrd_loc + initrd_size)
> rec_loc)) {
initrd_loc = _ALIGN((unsigned long)(zimage_size)
+ (2 << 20) - 1, (2 << 20));
memmove((void *)initrd_loc, &__ramdisk_begin,
initrd_size);
puts("initrd moved: "); puthex(initrd_loc);
puts(" "); puthex(initrd_loc + initrd_size);
puts("\n");
}
}
rec->tag = BI_FIRST;
rec->size = sizeof(struct bi_record);
......@@ -224,7 +245,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum, b
if ( initrd_size ) {
rec->tag = BI_INITRD;
rec->data[0] = (unsigned long)(&__ramdisk_begin);
rec->data[0] = initrd_loc;
rec->data[1] = initrd_size;
rec->size = sizeof(struct bi_record) + 2 *
sizeof(unsigned long);
......
......@@ -396,9 +396,30 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
{
struct bi_record *rec;
rec = (struct bi_record *)_ALIGN((ulong)zimage_size +
(1<<20)-1,(1<<20));
unsigned long initrd_loc;
unsigned long rec_loc = _ALIGN((unsigned long)(zimage_size) +
(1 << 20) - 1, (1 << 20));
rec = (struct bi_record *)rec_loc;
/* We need to make sure that the initrd and bi_recs do not
* overlap. */
if ( initrd_size ) {
initrd_loc = (unsigned long)(&__ramdisk_begin);
/* If the bi_recs are in the middle of the current
* initrd, move the initrd to the next MB
* boundary. */
if ((rec_loc > initrd_loc) &&
((initrd_loc + initrd_size)
> rec_loc)) {
initrd_loc = _ALIGN((unsigned long)(zimage_size)
+ (2 << 20) - 1, (2 << 20));
memmove((void *)initrd_loc, &__ramdisk_begin,
initrd_size);
puts("initrd moved: "); puthex(initrd_loc);
puts(" "); puthex(initrd_loc + initrd_size);
puts("\n");
}
}
rec->tag = BI_FIRST;
rec->size = sizeof(struct bi_record);
......@@ -421,7 +442,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
if ( initrd_size ) {
rec->tag = BI_INITRD;
rec->data[0] = (unsigned long)(&__ramdisk_begin);
rec->data[0] = initrd_loc;
rec->data[1] = initrd_size;
rec->size = sizeof(struct bi_record) + 2 *
sizeof(unsigned long);
......
......@@ -76,8 +76,8 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
{
int timer = 0;
char *cp, ch;
struct bi_record *rec, *birecs;
unsigned long TotalMemory = 0;
struct bi_record *rec;
unsigned long TotalMemory = 0, rec_loc, initrd_loc;
serial_fixups();
com_port = serial_init(0, NULL);
......@@ -197,10 +197,29 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
/*
* Create bi_recs for cmd_line and initrds
*/
rec = (struct bi_record *)_ALIGN((unsigned long)(zimage_size) +
rec_loc = _ALIGN((unsigned long)(zimage_size) +
(1 << 20) - 1, (1 << 20));
birecs = rec;
rec = (struct bi_record *)rec_loc;
/* We need to make sure that the initrd and bi_recs do not
* overlap. */
if ( initrd_size ) {
initrd_loc = (unsigned long)(&__ramdisk_begin);
/* If the bi_recs are in the middle of the current
* initrd, move the initrd to the next MB
* boundary. */
if ((rec_loc > initrd_loc) &&
((initrd_loc + initrd_size) > rec_loc)) {
initrd_loc = _ALIGN((unsigned long)(zimage_size)
+ (2 << 20) - 1, (2 << 20));
memmove((void *)initrd_loc, &__ramdisk_begin,
initrd_size);
puts("initrd moved: "); puthex(initrd_loc);
puts(" "); puthex(initrd_loc + initrd_size);
puts("\n");
}
}
rec->tag = BI_FIRST;
rec->size = sizeof(struct bi_record);
rec = (struct bi_record *)((unsigned long)rec + rec->size);
......@@ -219,7 +238,7 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
if ( initrd_size ) {
rec->tag = BI_INITRD;
rec->data[0] = (unsigned long)(&__ramdisk_begin);
rec->data[0] = initrd_loc;
rec->data[1] = initrd_size;
rec->size = sizeof(struct bi_record) + 2 *
sizeof(unsigned long);
......@@ -233,5 +252,5 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum)
puts("Now booting the kernel\n");
serial_close(com_port);
return birecs;
return (struct bi_record *)rec_loc;
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -286,13 +286,11 @@ void do_settimeofday(struct timeval *tv)
write_unlock_irqrestore(&xtime_lock, flags);
}
/* This function is only called on the boot processor */
void __init time_init(void)
{
time_t sec, old_sec;
unsigned old_stamp, stamp, elapsed;
/* This function is only called on the boot processor */
unsigned long flags;
if (ppc_md.time_init != NULL)
time_offset = ppc_md.time_init();
......@@ -309,31 +307,31 @@ void __init time_init(void)
/* Now that the decrementer is calibrated, it can be used in case the
* clock is stuck, but the fact that we have to handle the 601
* makes things more complex. Repeatedly read the RTC until the
* next second boundary to try to achieve some precision...
* next second boundary to try to achieve some precision. If there
* is no RTC, we still need to set tb_last_stamp and
* last_jiffy_stamp(cpu 0) to the current stamp.
*/
stamp = get_native_tbl();
if (ppc_md.get_rtc_time) {
stamp = get_native_tbl();
sec = ppc_md.get_rtc_time();
elapsed = 0;
do {
old_stamp = stamp;
old_sec = sec;
stamp = get_native_tbl();
if (__USE_RTC() && stamp < old_stamp) old_stamp -= 1000000000;
if (__USE_RTC() && stamp < old_stamp)
old_stamp -= 1000000000;
elapsed += stamp - old_stamp;
sec = ppc_md.get_rtc_time();
} while ( sec == old_sec && elapsed < 2*HZ*tb_ticks_per_jiffy);
if (sec==old_sec) {
if (sec==old_sec)
printk("Warning: real time clock seems stuck!\n");
}
write_lock_irqsave(&xtime_lock, flags);
xtime.tv_sec = sec;
last_jiffy_stamp(0) = tb_last_stamp = stamp;
xtime.tv_nsec = 0;
/* No update now, we just read the time from the RTC ! */
last_rtc_update = xtime.tv_sec;
write_unlock_irqrestore(&xtime_lock, flags);
}
last_jiffy_stamp(0) = tb_last_stamp = stamp;
/* Not exact, but the timer interrupt takes care of this */
set_dec(tb_ticks_per_jiffy);
......
......@@ -112,42 +112,23 @@ _exception(int signr, struct pt_regs *regs)
force_sig(signr, current);
}
void
MachineCheckException(struct pt_regs *regs)
/*
* I/O accesses can cause machine checks on powermacs.
* Check if the NIP corresponds to the address of a sync
* instruction for which there is an entry in the exception
* table.
* Note that the 601 only takes a machine check on TEA
* (transfer error ack) signal assertion, and does not
* set any of the top 16 bits of SRR1.
* -- paulus.
*/
static inline int check_io_access(struct pt_regs *regs)
{
#ifdef CONFIG_ALL_PPC
const struct exception_table_entry *entry;
#endif /* CONFIG_ALL_PPC */
unsigned long msr = regs->msr;
const struct exception_table_entry *entry;
unsigned int *nip = (unsigned int *)regs->nip;
if (user_mode(regs)) {
regs->msr |= MSR_RI;
_exception(SIGSEGV, regs);
return;
}
#if defined(CONFIG_8xx) && defined(CONFIG_PCI)
/* the qspan pci read routines can cause machine checks -- Cort */
bad_page_fault(regs, regs->dar, SIGBUS);
return;
#endif
if (debugger_fault_handler) {
debugger_fault_handler(regs);
regs->msr |= MSR_RI;
return;
}
#ifdef CONFIG_ALL_PPC
/*
* I/O accesses can cause machine checks on powermacs.
* Check if the NIP corresponds to the address of a sync
* instruction for which there is an entry in the exception
* table.
* Note that the 601 only takes a machine check on TEA
* (transfer error ack) signal assertion, and does not
* set any of the top 16 bits of SRR1.
* -- paulus.
*/
if (((msr & 0xffff0000) == 0 || (msr & (0x80000 | 0x40000)))
&& (entry = search_exception_tables(regs->nip)) != NULL) {
/*
......@@ -158,7 +139,6 @@ MachineCheckException(struct pt_regs *regs)
* For the debug message, we look at the preceding
* load or store.
*/
unsigned int *nip = (unsigned int *)regs->nip;
if (*nip == 0x60000000) /* nop */
nip -= 2;
else if (*nip == 0x4c00012c) /* isync */
......@@ -173,14 +153,42 @@ MachineCheckException(struct pt_regs *regs)
(*nip & 0x100)? "OUT to": "IN from",
regs->gpr[rb] - _IO_BASE, nip);
regs->msr |= MSR_RI;
regs->nip = fixup;
return;
regs->nip = entry->fixup;
return 1;
}
}
#endif /* CONFIG_ALL_PPC */
printk("Machine check in kernel mode.\n");
printk("Caused by (from SRR1=%lx): ", msr);
switch (msr & 0x601F0000) {
return 0;
}
void
MachineCheckException(struct pt_regs *regs)
{
if (user_mode(regs)) {
regs->msr |= MSR_RI;
_exception(SIGSEGV, regs);
return;
}
#if defined(CONFIG_8xx) && defined(CONFIG_PCI)
/* the qspan pci read routines can cause machine checks -- Cort */
bad_page_fault(regs, regs->dar, SIGBUS);
return;
#endif
if (debugger_fault_handler) {
debugger_fault_handler(regs);
regs->msr |= MSR_RI;
return;
}
if (check_io_access(regs))
return;
#ifndef CONFIG_4xx
printk(KERN_CRIT "Machine check in kernel mode.\n");
printk(KERN_CRIT "Caused by (from SRR1=%lx): ", regs->msr);
switch (regs->msr & 0x601F0000) {
case 0x80000:
printk("Machine check signal\n");
break;
......@@ -207,6 +215,17 @@ MachineCheckException(struct pt_regs *regs)
default:
printk("Unknown values in msr\n");
}
#else /* CONFIG_4xx */
/* Note that the ESR gets stored in regs->dsisr on 4xx. */
if (regs->dsisr & ESR_MCI) {
printk(KERN_CRIT "Instruction");
mtspr(SPRN_ESR, regs->dsisr & ~ESR_MCI);
} else
printk(KERN_CRIT "Data");
printk(" machine check in kernel mode.\n");
#endif /* CONFIG_4xx */
debugger(regs);
die("machine check", regs, SIGBUS);
}
......
......@@ -13,6 +13,9 @@ choice
config ASH
bool "Ash"
config BEECH
bool "Beech"
config CEDAR
bool "Cedar"
......@@ -38,6 +41,12 @@ config REDWOOD_4
config REDWOOD_5
bool "Redwood-5"
config REDWOOD_6
bool "Redwood-6"
config SYCAMORE
bool "Sycamore"
config TIVO
bool "Tivo"
......@@ -75,7 +84,7 @@ config IBM405_ERR51
config IBM_OCP
bool
depends on ASH || CEDAR || CPCI405 || EP405 || REDWOOD_4 || REDWOOD_5 || WALNUT
depends on ASH || BEECH || CEDAR || CPCI405 || EP405 || REDWOOD_4 || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
default y
config NP405L
......@@ -85,7 +94,7 @@ config NP405L
config BIOS_FIXUP
bool
depends on CEDAR || EP405 || WALNUT
depends on CEDAR || EP405 || SYCAMORE || WALNUT
default y
config 403GCX
......@@ -98,9 +107,17 @@ config 405GP
depends on CPCI405 || EP405 || WALNUT
default y
config 405GPR
bool
depends on SYCAMORE
config 405LP
bool
depends on CEDAR
config STB03xxx
bool
depends on REDWOOD_5 || REDWOOD_4
depends on REDWOOD_5 || REDWOOD_4 || REDWOOD_6
default y
config EMBEDDEDBOOT
......@@ -110,7 +127,7 @@ config EMBEDDEDBOOT
config IBM_OPENBIOS
bool
depends on ASH || CEDAR || REDWOOD_4 || REDWOOD_5 || WALNUT
depends on ASH || BEECH || CEDAR || REDWOOD_4 || REDWOOD_5 || REDWOOD_6 || SYCAMORE || WALNUT
default y
config 405_DMA
......
#
# Makefile for the PowerPC 4xx linux kernel.
export-objs := ibm405lp.o
obj-$(CONFIG_ASH) += ash.o
obj-$(CONFIG_BEECH) += beech.o
obj-$(CONFIG_CEDAR) += cedar.o
obj-$(CONFIG_CPCI405) += cpci405.o
obj-$(CONFIG_EP405) += ep405.o
obj-$(CONFIG_OAK) += oak.o
obj-$(CONFIG_REDWOOD_4) += redwood.o
obj-$(CONFIG_REDWOOD_5) += redwood5.o
obj-$(CONFIG_REDWOOD_6) += redwood6.o
obj-$(CONFIG_SYCAMORE) += sycamore.o
obj-$(CONFIG_WALNUT) += walnut.o
obj-$(CONFIG_NP405L) += ibmnp405l.o
......@@ -15,3 +20,7 @@ obj-$(CONFIG_405GP) += ibm405gp.o
obj-$(CONFIG_REDWOOD_4) += ibmstb3.o
obj-$(CONFIG_REDWOOD_5) += ibmstb4.o
obj-$(CONFIG_NP405H) += ibmnp405h.o
obj-$(CONFIG_REDWOOD_6) += ibmstbx25.o
obj-$(CONFIG_NP4GS3) += ibmnp4gs.o
obj-$(CONFIG_405LP) += ibm405lp.o
obj-$(CONFIG_405GPR) += ibm405gpr.o
This diff is collapsed.
/*
*
*
* Copyright 2000 MontaVista Software Inc.
* Copyright 2000-2002 MontaVista Software Inc.
* Author: MontaVista Software, Inc.
* akuster@mvista.com or source@mvista.com
*
......@@ -17,7 +17,7 @@
#ifdef __KERNEL__
#ifndef __ASM_ASH_H__
#define __ASM_ASH_H__
#include <platforms/4xx/ibm_ocp.h>
#include <asm/ibm_ocp.h>
#include <platforms/4xx/ibmnp405h.h>
#ifndef __ASSEMBLY__
......@@ -32,7 +32,7 @@ typedef struct board_info {
unsigned char bi_s_version[4]; /* Version of this structure */
unsigned char bi_r_version[30]; /* Version of the IBM ROM */
unsigned int bi_memsize; /* DRAM installed, in bytes */
unsigned char bi_enetaddr[EMAC_NUMS][6]; /* Local Ethernet MAC address */
unsigned char bi_enetaddr[4][6]; /* Local Ethernet MAC address */
unsigned char bi_pci_enetaddr[6];
unsigned int bi_intfreq; /* Processor speed, in Hz */
unsigned int bi_busfreq; /* PLB Bus speed, in Hz */
......@@ -76,7 +76,7 @@ extern void *ash_rtc_base;
#define BASE_BAUD 691200
#endif
#define PPC4xx_MACHINE_NAME "IBM NP405H Ceder"
#define PPC4xx_MACHINE_NAME "IBM NP405H Ash"
extern char pci_irq_table[][4];
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -13,9 +13,6 @@
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* History: 11/09/2001 - armin
* added board_init to add in additional instuctions needed during platfrom_init
*
*/
#include <linux/config.h>
......@@ -26,6 +23,8 @@
#include <asm/machdep.h>
#include <asm/todc.h>
void *cpci405_nvram;
/*
* Some IRQs unique to CPCI-405.
*/
......@@ -51,28 +50,31 @@ ppc405_map_irq(struct pci_dev *dev, unsigned char idsel, unsigned char pin)
};
void __init
board_setup_arch(void)
cpci405_setup_arch(void)
{
ppc4xx_setup_arch();
TODC_INIT(TODC_TYPE_MK48T35, cpci405_nvram, cpci405_nvram, cpci405_nvram, 8);
}
void __init
board_io_mapping(void)
cpci405_map_io(void)
{
ppc4xx_map_io();
cpci405_nvram = ioremap(CPCI405_NVRAM_PADDR, CPCI405_NVRAM_SIZE);
}
void __init
board_setup_irq(void)
platform_init(unsigned long r3, unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7)
{
}
ppc4xx_init(r3, r4, r5, r6, r7);
ppc_md.setup_arch = cpci405_setup_arch;
ppc_md.setup_io_mappings = cpci405_map_io;
void __init
board_init(void)
{
#ifdef CONFIG_PPC_RTC
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.nvram_read_val = todc_direct_read_val;
ppc_md.nvram_write_val = todc_direct_write_val;
#endif
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File mode changed from 100755 to 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
File mode changed from 100755 to 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment