📄 patch-2.6.0-rmk2
字号:
diff -urN orig/Documentation/arm/00-INDEX linux/Documentation/arm/00-INDEX--- orig/Documentation/arm/00-INDEX Mon Jan 13 22:32:15 2003+++ linux/Documentation/arm/00-INDEX Sun Apr 27 10:53:20 2003@@ -2,19 +2,27 @@ - this file Booting - requirements for booting+ConfigVars+ - random descriptions of various config variables Interrupts - ARM Interrupt subsystem documentation+MEMC+ - memc-related functions Netwinder - Netwinder specific documentation README - General ARM documentation SA1100 - SA1100 documentation+Setup+ - description of old param_struct. OBSOLETE. XScale - XScale documentation empeg - Empeg documentation mem_alignment - alignment abort handler documentation+memory.txt+ - description of the virtual memory layout nwfpe - NWFPE floating point emulator documentationdiff -urN orig/Documentation/arm/ConfigVars linux/Documentation/arm/ConfigVars--- orig/Documentation/arm/ConfigVars Thu Jan 1 01:00:00 1970+++ linux/Documentation/arm/ConfigVars Thu Jul 20 18:28:19 2000@@ -0,0 +1,26 @@+CONFIG_ARCH_CO285 - co-ebsa285+CONFIG_ARCH_FOOTBRIDGE - all other footbridge systems++ CONFIG_ARCH_CATS - CATS support+ CONFIG_ARCH_PERSONAL_SERVER - personal server support+ CONFIG_ARCH_EBSA285_ADDIN - add-in ebsa285 support+ CONFIG_ARCH_EBSA285_HOST - host ebsa285 support+ CONFIG_ARCH_NETWINDER - netwinder support++CONFIG_FOOTBRIDGE - any system with a footbridge chip+ |- (CONFIG_ARCH_CO285)+ \- (CONFIG_ARCH_FOOTBRIDGE)++CONFIG_FOOTBRIDGE_HOST - any system with host mode footbridge support+ |- (CONFIG_ARCH_CATS)+ |- (CONFIG_ARCH_EBSA285_HOST)+ |- (CONFIG_ARCH_NETWINDER)+ \- (CONFIG_ARCH_PERSONAL_SERVER)++CONFIG_FOOTBRIDGE_ADDIN - any system with addin mode footbridge support+ |- (CONFIG_ARCH_CO285)+ \- (CONFIG_ARCH_EBSA285_ADDIN)++CONFIG_ARCH_EBSA285 - either host or add-in ebsa285 support, but+ |- (CONFIG_ARCH_EBSA285_ADDIN) not co-ebsa285+ \- (CONFIG_ARCH_EBSA285_HOST)diff -urN orig/Documentation/arm/MEMC linux/Documentation/arm/MEMC--- orig/Documentation/arm/MEMC Thu Jan 1 01:00:00 1970+++ linux/Documentation/arm/MEMC Mon May 3 19:51:25 1999@@ -0,0 +1,57 @@+MEMC enhancements for Linux 2.3+-------------------------------++The current interface:++ There is a cache of the MEMC settings held in tsk->tss.memcmap, which is+ kept up to date by the following functions (from the page tables):++ update_memc_all() hits: 2+ Updates all MEMC caches on all processes. Update the real MEMC+ to reflect the `current' tasks page tables.++ update_memc_tsk(tsk) hits: 0+ Update the MEMC cache for the specified task. If tsk is the+ `current' task, then update the real MEMC as well.++ update_memc_mm(mm) hits: 16+ Update the MEMC cache for any task which has a mm_struct+ corresponding to `mm'. If the `current' tasks mm_struct+ includes this, then update the real MEMC as well.++ update_memc_addr(mm, addr, pte) hits: 8+ Update the MEMC cache entry defined by the physical address+ in pte for any task which has a mm_struct corresponding to `mm'.+ If the `current' tasks mm_struct includes this, then update the+ real MEMC as well.++The proposed interface:++ Couple the MEMC cache into the mm_struct so that we only have to+ keep one copy per mm_struct. This also allows us to reduce the+ number of loops through all existing tasks on each MEMC change.++ memc_clear(mm, physaddr) hits: 6+ Clear the MEMC mapping associated with the physical address+ `physaddr'. If the `current' tasks mm_struct is `mm', then+ update the real MEMC as well. (should equate to a possible+ two writes and zero reads).++ memc_update_addr(mm, pte, logaddr) hits: 10+ Change the MEMC mapping for the physical address specified+ in `pte' to point to the logical address `logaddr', with the+ protection specified in `pte'. If the `current' tasks mm_struct+ is `mm', then update the real MEMC as well. (should again equate+ to a possible two writes and zero reads).++ memc_update_mm(mm) hits: 7+ Rebuild the MEMC mappings for the specified `mm' in the same way+ that update_memc_mm used to. If the `current' tasks mm_struct+ is `mm', update the real MEMC as well.++ memc_update_all() hits: 2+ Rebuild the MEMC mappings for all mm_structs, including the real+ MEMC.++The hit numbers are approximate usage of each function in the 2.2.7+memory management (mm) code, and there are other uses outside this area.diff -urN orig/Documentation/arm/README linux/Documentation/arm/README--- orig/Documentation/arm/README Wed Aug 13 10:32:20 2003+++ linux/Documentation/arm/README Wed Oct 15 22:46:23 2003@@ -149,11 +149,34 @@ Kernel entry (head-armv.S) --------------------------- The initial entry into the kernel made via head-armv.S uses architecture- independent code. The architecture is selected by the value of 'r1' on- entry, which must be kept unique. You can register a new architecture- by mailing the following details to rmk@arm.linux.org.uk Please give- the mail a subject of 'Register new architecture':+ The initial entry into the kernel is via head-armv.S, which uses machine+ independent code. The machine type is selected by the value of 'r1' on+ entry, which must be kept unique.++ Due to the large number of machines which the ARM port of Linux provides+ for, we have a method to manage this which ensures that we don't end up+ duplicating large amounts of code.++ We group machine (or platform) support code into machine classes. A+ class typically based around one or more system on a chip devices, and+ acts as a natural container around the actual implementations. These+ classes are given directories - arch/arm/mach-<class> and+ include/asm-arm/arch-<class> - which contain the source files to+ support the machine class. This directories also contain any machine+ specific supporting code.++ For example, the SA1100 class is based upon the SA1100 and SA1110 SoC+ devices, and contains the code to support the way the on-board and off-+ board devices are used, or the device is setup, and provides that+ machine specific "personality."++ This fine-grained machine specific selection is controlled by the machine+ type ID, which acts both as a run-time and a compile-time code selection+ method.++ You can register a new machine type ID by mailing the following details+ to rmk@arm.linux.org.uk Please give the mail a subject of+ 'Register new architecture': Name: <name of your architecture> ArchDir: <name of include/asm-arm/arch-* directory>diff -urN orig/Documentation/arm/SA1100/SA1100_USB linux/Documentation/arm/SA1100/SA1100_USB--- orig/Documentation/arm/SA1100/SA1100_USB Thu Jan 1 01:00:00 1970+++ linux/Documentation/arm/SA1100/SA1100_USB Tue Oct 16 20:02:23 2001@@ -0,0 +1,344 @@+StrongARM SA-1100 USB function Driver+Ward Willats <ward.willats@extenex.com> - 08Mar01++1. History+''''''''''+Brad Parker <brad@parker.boston.ma.us> ported the DEC/Compaq "Itsy"+SA-1100 USB Function driver to the 2.4.x code base in late 2000, for+use as an "ethernet over usb" link. His original notes are here in+section 4. Nicolas Pitre <nico@cam.org> rewrote the transmitter and+reciver (endpoints 1 and 2) in late 2000 to use the standard SA DMA+API and I added a bulk character interface and reworked the control+control module code and rewrote endpoint zero in early 2001.++This release (22Feb01) is the first that completely separates+client modules (usb-eth.c and usb-char.c) from the SA-1100 USB core.+(usb_ctl, usb_ep0, usb_send and usb_receive)and makes the whole+mess a module. Oleg Drokin has done a huge amount of work, fixing+things I break and adding support for the generic usbnet driver+from the AC tree.++2. Usage+''''''''+Turn on CONFIG_SA1100_USB_NETLINK to use the "ethernet over usb"+functionality. Turn it off to use the character oriented+interface. The character driver currently uses mknod c 10 240.++Programming:+The public interface is in sa1100_usb.h. For a client USB service+to use the SA-1100 USB core driver it should:++1. Call sa1100_usb_open() to get the usb core assigned to it.++2. Setup descriptors as appropriate for the task at hand. Esp.+important are endpoint max packet lengths, vendor and product IDs,+and type of endpoint (bulk or interrupt). Call+sa1100_get_descriptor_ptr() to get this.++3. Call sa1100_usb_start() to actually start the usb hardware.+At this time the host will configure the device.++...at shutdown...++4. Call sa1100_usb_stop() to stop the USB core.+5. Call sa1100_usb_close() to free the core for use by another+client.++3. Netlink Usage+''''''''''''''''+StrongARM SA-1100 USB function "ethernet over usb driver"+Brad Parker <brad@parker.boston.ma.us>++I ported the DEC "Itsy" usb "ethernet over usb driver" code to the 2.4.x+base and made some enhacements and bug fixes. This code has 2 sides and+implements a simple "ethernet over usb" functionality.++function (SA1100) side:+- the driver has two endpoints and uses interrupt and bulk transfer to+receive/send packets. the driver does not require any other usb code+and should work on most any sa1100.++host (SA1111) side:+- because the SA1111 usb host is not working yet I tested this driver+(usb-net-host.c) on a 2.2.14 based PC with the latest usb backport.+It has been fully converted to use URBs and worked well with my UHCI+based controller.++TESTING:++To test you need an assabet on the 'function' side, a PC on the 'host'+side and a USB A-B cable to connect them together.++Boot a kernel on the assabet with "USB function and net-host support"+(CONFIG_SA1100_USB) turned on. This will define an interface named+"usbf". Once it's booted you can setup the interface with++ mount -t proc /proc /proc+ /sbin/ifconfig usbf 1.1.1.2++I used a 2.2.14 kernel on a x86 PC for the host side. It has a built+in UHCI usb controller chip. I installed the latest USB backport from+http://www.linux-usb.org onto the 2.2.14 kernel sources and turned on+"USB net-host" (CONFIG_USB_NET_HOST) as a module. Load the module+"usb-net-host.o" and connect the USB cable to the assabet. Configure+the usb network interface with++ /sbin/ifconfig usb0 1.1.1.1++You should be able to "ping" the assabet now with++ ping -c 1 1.1.1.2++If the assabet is running inetd the usual network services such as+telnet and ftp should work.++Oleg Drokin in 2.4.2-rmk1-np2 (08Mar01) added module config params for+read and write size to the usb-eth.c client to allow dynamic setting+of the DATA0/DATA1 packet size on the usb wire:++usb_rsize - number of bytes in OUT packets from host to SA1100+usb_wsize - number of bytes in IN packets from SA1100 to host++This allows dynamic tuning for performance or to prevent overruning+the the host with data.++4. Known Issues+'''''''''''''''+- We are fiddling with various ways to set the IMP register in+usb_send.c. A small percentage of the time, this value does not+"take."++- I've started to bring back the /proc interface, but clients+of the sa-usb core currently don't have a directory or something+to put their stats into.++- Only a useful subset of ep0 setup calls have been implemented.+++5. Mysteries of the Universe+''''''''''''''''''''''''''''+This driver has been hard to develop because the documentation+provided by Intel is incomplete, and the UDC itself seems to have a+variety of bugs. The errata for the part is particularly scary! This+section is an attempt to document some of the discoveries and+questions I have come across while working on this thing.++pp 11-63 of the "Intel Strong ARM SA-1110 Microprocessor Advanced+Developer Information" give an ominous warning about how "due to+internal synchronization required by the UDC configuration registers,+it is possible for the procesor to write the UDC refisters and FIFOs+too fast." This has led to a variety of approaches that attempt to+bang on the hardware repeatedly and read it back until the write+"sticks."++All of these approaches have been problematic. Currently some macros+in udc_ctl.h that Nicolas wrote are being used. My hardware guy told+me that writes would never be "lost" but stuck on some internal bus in+the UDC module and propagated to the rest of the circuit when the time+was right. Indeed this seemed to be the case, for example, it seems+impossible to reliably read back the interrupt mask register of the UDC when in+the interrupt service routine. Often times the state was not reflected+on a read until after pending interrupt sources were cleared.++I was feeling prety good about this and was ripping out the looping+macros right and left until I came upon a situation where, while+receiving a continuous set of 1 character packets, ep1 (usb_receive.c)+could not clear receive packet complete (RPC). After much desperate+faliling about it turns out changing the UDC_flip() macro to bang like+crazy on the RPC bit did in fact clear it, and clear it+consistently. So go figure.++Other items of interest:++- Upon emerging from a reset, the UDC will clear the mask register except+for a mask on suspend.++- USB 1.0 spec says maximum size of a DATA0/1 packet is 64 bytes,+which is what the character driver is using. However, the UDC can do+256 bytes and every host I've tried can handle it, even though they+are not required to. (Perhaps it is a problem when hubs are on the+line, but the SA UDC has other problems in a hub environment -- like+even getting the correct address -- per the errata).++- Endpoint zero FIFOs: ARGHHH! Just leave those routines alone.+Believe me, I have tried every other variation you can think of.+Probably.++- Sometimes I get a setup request of 0x80 from Windows hosts. I have+not determined if this is a read_fifo error (none is reported) or if+this is some undocumented secret Redmond handshake only known to+initiates of the inner-order.++6. Test Program+'''''''''''''''+This is now in the /proc interface. (For good or ill, probably don't+actually need to dump all this stuff..)++7. Errors and Notes on Intel's 1110 Documentation+'''''''''''''''''''''''''''''''''''''''''''''''''+These corrections apply to "Intel StrongARM SA-1110 Microprocessor,+Advanced Developer's Manual of December 1999" Some of these have been+corrected in later editions, some not. There have been several updates+to this document published through 2000. Always use the latest+available on http://developer.intel.com/design/strong/collateral.htm.++pp 11-65 section 11.8.3.8 bit 2, reserved is now the resume interrupt+mask. SRM is now SUSIM on SA-1110, and masks only the suspend+interrupt.++pp 11-67 section 11.8.6, Max IN register, end should be 9 _bytes_+not 9 bits.++pp 11-68 section 11.8.7.3, SST. This is set by the CPU _not_ the UDC.+And it looks like you don't get a SST if you FST yourself.++pp 11-68 section 11.8.7.5, DE. This is set by the CPU _not_ the UDC.++pp 11-73 section 11.8.9.7, UDCCS2 table, bit 2, Should be "valid only+when _TPC_ (not RPC) is set.++pp 11-74 section 11.8.10, should end with a GET_DESCRIPTOR _or+similar_ command. (Like, for example, GET_CONFIGURATION).+++8. Change History+'''''''''''''''''+Following are current chages 8Mar01 (released in 2.4.2-rmk1-np2?)++- Resetting UDC when coming out of suspend helped enumeration get+going considerably.++- Added support for client-supplied notify routine to be called+by the USB core when core reaches "configured" state.++- Added error returns from interrupt reads and buffer flush ioctl+calls to usb-char. Added usb-char.h file for ioctl calls.++- Fixed bug that kept usb-char transmitter from working the second+time the module was loaded.++- Turned off a lot of the noise in /proc++- Added specialty routines in ep0 to set and clear bits.++- More enumeration fiddling.++- There are horrible hacks to set max IN length in usb_send+ that ARE GOING AWAY SOON! REALLY!++*** Following changes 26Feb01 (released in 2.4.2-rmk1-np1)++- usb-eth integration with generic usbnet from AC tree.++- Creation of public interface for usb clients in sa1100_usb.h+and final separation into a "core" driver (usb_ctl.c, usb_ep0.c+usb_recv.c usb_send.c) and "client" services (usb-eth.c and+usb-char.c). Modularized.++- Descriptor handling rewritten. Support for string descriptors+added. More bugs in ep0 fixed. More setup packets handled.++- /proc interface in usb_ctl returning++- removed client specific stuff from usbd_info_t and hid the+structure in usb_ctl. Removed RAM-backing of address and pktsize+in this structure. Now the descriptor values are gospel.++- usb_dbg.h eliminated+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -