This section documents the patches released by the Wearable Group at Carnegie Mellon concerning Assabet and PCMCIA Card Services. Nearly all of the kernel patches are now part of the master StrongARM patch. All of the following patches were developed by the author of this report, and are distributed under the terms of the General Public License.
This was the first patch to include support for Assabet. Initial serial console support and memory configuration, based heavily on the code for Brutus, were provided. A bug caused the console to be come inaccessible following userland startup, although in retrospect, this was most likely due to a simple data rate mismatch in the userland getty terminal configuration. Support for the two general-purpose LEDs was present. The bulk of this 142-kilobyte patch was occupied with the task of converting the kernel nomenclature from ``SA-1100'' to ``SA-11x0'', a change which was ultimately rejected from the main StrongARM SA-1100 patch.
The fourth in a number of patches against the standalone PCMCIA Card Services for Linux distribution, this release began support for Assabet by moving from kernel 2.0.30 -- found on the Itsy/Cue -- to 2.3.99. In the process, the socket driver included in this release began to use an early version of the in-kernel PCMCIA abstraction facility, thereby reducing configuration complexity. (This patch was half the size of the one preceding it.)
This release continued to wrestle with the Socket Communications LP-E CF+ ethernet card, unsuccessfully. A procfs node was added to display the state of the socket controller, which is useful for debugging purposes.
Support for the LP-E card grows nearer, but DMA transfers during receive interrupt processing still fail.
PCMCIA Card Services for Linux is somewhat unusual in that it involves a number of loadable kernel modules, yet it is not distributed as part of the kernel source tree. As a result, the in-kernel aspects of Card Services cannot be easily debugged on a machine such as Assabet, because a complete RAM disk containing new versions of the modules must usually be transferred to the board every time a code change is performed. Meanwhile, Linus had chosen to fold the Card Services modules into the 2.3 kernel series, thus enabling them to be compiled statically into the kernel. This was attractive to ARM Linux developers, who wanted to see the new sa1100 socket driver available in the kernel tree itself.
The Card Services code which appears in kernel 2.3.99 gives the appearance of having been hijacked from its original developer, David Hinds. Some of the APIs have been changed, and the code itself is somewhat stale, appearing to have come from Card Services 3.1.10. As a result, many of the fixes originally needed to support the ARM in Card Services had to be duplicated in the kernel, such as support for fixed memory maps, large IRQ numbers, and so forth.
The Socket LP-E CF+ card finally works.
Bug fixes for pcnet_cs, the low-level PCMCIA interface, and interrupt handling for card insertions. Included Erik Bunce's patch for CompactFlash ATA/IDE devices, such as the IBM Microdrive.
Added boot-time detection of Neponset in both the kernel and the kernel decompressor. Fixed serial console support to use UART 3 when Neponset is present. Includes support for Neponset LEDs, and can activate the SA-1111 Register Access Bus. Adds support for SA-1111 interrupt handling and the SA-1111 PCMCIA Controller, including the MAX1600 power switching network.
Companion patch to the previous item, required for the pcnet_cs driver to work on Neponset. Causes the Socket LP-E CF+ card to transfer buffers in 8-bit mode, not 16 bits at a time. Corruption is observed when this patch is not applied.
Small correction to the interrupt handling facility in the StrongARM SA-1100 patch, which attempted to address a system lockup which had been observed. The patch, while able to illustrate the actual problem, still contains a logical error which could potentially still permit problems in other circumstances.
Small correction to the revised SA-1100 serial driver which fixes a parity configuration problem. Also corrects a kernel configuration omission which prevented SA-1111-related code from being enabled.
Introduces support for the SA-1111 Serial Audio Controller, and extends Nicolas Pitre's UDA1341 driver to work on Neponset. Occasional DMA lockups and audio corruption are observed, which may be explained by a recent Intel errata listing.
Begins conversion of PCMCIA socket driver memory management to on-demand mapping requests, and eliminates the use of static memory allocations for PCMCIA I/O, attribute, and common memory spaces.