- sync fedora branch
authorMark Huang <mlhuang@cs.princeton.edu>
Sat, 20 Aug 2005 20:22:07 +0000 (20:22 +0000)
committerMark Huang <mlhuang@cs.princeton.edu>
Sat, 20 Aug 2005 20:22:07 +0000 (20:22 +0000)
12 files changed:
Documentation/usb/philips.txt [deleted file]
arch/alpha/lib/io.c [deleted file]
arch/arm/configs/iq80310_defconfig [deleted file]
arch/arm/mach-iop3xx/iop310-irq.c [deleted file]
arch/arm/mach-iop3xx/iop310-pci.c [deleted file]
arch/arm/mach-iop3xx/iq80310-irq.c [deleted file]
arch/arm/mach-iop3xx/iq80310-pci.c [deleted file]
arch/arm/mach-iop3xx/iq80310-time.c [deleted file]
arch/arm/mach-iop3xx/mm.c [deleted file]
arch/arm/mach-iop3xx/xs80200-irq.c [deleted file]
arch/arm/mach-omap/bus.c [deleted file]
arch/arm/mach-omap/leds-perseus2.c [deleted file]

diff --git a/Documentation/usb/philips.txt b/Documentation/usb/philips.txt
deleted file mode 100644 (file)
index 04a640d..0000000
+++ /dev/null
@@ -1,236 +0,0 @@
-This file contains some additional information for the Philips and OEM webcams.
-E-mail: webcam@smcc.demon.nl                        Last updated: 2004-01-19
-Site: http://www.smcc.demon.nl/webcam/
-
-As of this moment, the following cameras are supported:
- * Philips PCA645
- * Philips PCA646
- * Philips PCVC675
- * Philips PCVC680
- * Philips PCVC690
- * Philips PCVC720/40
- * Philips PCVC730
- * Philips PCVC740
- * Philips PCVC750
- * Askey VC010
- * Creative Labs Webcam 5
- * Creative Labs Webcam Pro Ex
- * Logitech QuickCam 3000 Pro
- * Logitech QuickCam 4000 Pro
- * Logitech QuickCam Notebook Pro
- * Logitech QuickCam Zoom
- * Logitech QuickCam Orbit
- * Logitech QuickCam Sphere
- * Samsung MPC-C10
- * Samsung MPC-C30
- * Sotec Afina Eye
- * AME CU-001
- * Visionite VCS-UM100
- * Visionite VCS-UC300
-
-The main webpage for the Philips driver is at the address above. It contains
-a lot of extra information, a FAQ, and the binary plugin 'PWCX'. This plugin
-contains decompression routines that allow you to use higher image sizes and
-framerates; in addition the webcam uses less bandwidth on the USB bus (handy
-if you want to run more than 1 camera simultaneously). These routines fall
-under a NDA, and may therefor not be distributed as source; however, its use
-is completely optional.
-
-You can build this code either into your kernel, or as a module. I recommend
-the latter, since it makes troubleshooting a lot easier. The built-in
-microphone is supported through the USB Audio class.
-
-When you load the module you can set some default settings for the
-camera; some programs depend on a particular image-size or -format and
-don't know how to set it properly in the driver. The options are:
-
-size
-   Can be one of 'sqcif', 'qsif', 'qcif', 'sif', 'cif' or
-   'vga', for an image size of resp. 128x96, 160x120, 176x144,
-   320x240, 352x288 and 640x480 (of course, only for those cameras that 
-   support these resolutions).
-
-fps
-   Specifies the desired framerate. Is an integer in the range of 4-30.
-
-fbufs
-   This paramter specifies the number of internal buffers to use for storing 
-   frames from the cam. This will help if the process that reads images from 
-   the cam is a bit slow or momentarely busy. However, on slow machines it 
-   only introduces lag, so choose carefully. The default is 3, which is 
-   reasonable. You can set it between 2 and 5.
-
-mbufs
-   This is an integer between 1 and 10. It will tell the module the number of
-   buffers to reserve for mmap(), VIDIOCCGMBUF, VIDIOCMCAPTURE and friends.
-   The default is 2, which is adequate for most applications (double
-   buffering).
-      
-   Should you experience a lot of 'Dumping frame...' messages during
-   grabbing with a tool that uses mmap(), you might want to increase if. 
-   However, it doesn't really buffer images, it just gives you a bit more
-   slack when your program is behind. But you need a multi-threaded or
-   forked program to really take advantage of these buffers.
-
-   The absolute maximum is 10, but don't set it too high!  Every buffer takes
-   up 460 KB of RAM, so unless you have a lot of memory setting this to
-   something more than 4 is an absolute waste.  This memory is only
-   allocated during open(), so nothing is wasted when the camera is not in
-   use.
-
-power_save
-   When power_save is enabled (set to 1), the module will try to shut down
-   the cam on close() and re-activate on open(). This will save power and
-   turn off the LED. Not all cameras support this though (the 645 and 646
-   don't have power saving at all), and some models don't work either (they
-   will shut down, but never wake up). Consider this experimental. By
-   default this option is disabled.
-
-compression (only useful with the plugin)
-   With this option you can control the compression factor that the camera
-   uses to squeeze the image through the USB bus. You can set the 
-   parameter between 0 and 3:
-     0 = prefer uncompressed images; if the requested mode is not available
-         in an uncompressed format, the driver will silently switch to low
-         compression.
-     1 = low compression.
-     2 = medium compression.
-     3 = high compression.
-      
-   High compression takes less bandwidth of course, but it could also
-   introduce some unwanted artefacts. The default is 2, medium compression.
-   See the FAQ on the website for an overview of which modes require
-   compression.
-
-   The compression parameter does not apply to the 645 and 646 cameras
-   and OEM models derived from those (only a few). Most cams honour this
-   parameter.
-
-leds
-   This settings takes 2 integers, that define the on/off time for the LED
-   (in milliseconds). One of the interesting things that you can do with
-   this is let the LED blink while the camera is in use. This:
-
-     leds=500,500
-      
-   will blink the LED once every second. But with:
-
-     leds=0,0
-
-   the LED never goes on, making it suitable for silent surveillance.
-
-   By default the camera's LED is on solid while in use, and turned off
-   when the camera is not used anymore.
-
-   This parameter works only with the ToUCam range of cameras (720, 730, 740,
-   750) and OEMs. For other cameras this command is silently ignored, and 
-   the LED cannot be controlled.
-
-   Finally: this parameters does not take effect UNTIL the first time you
-   open the camera device. Until then, the LED remains on.
-
-dev_hint
-   A long standing problem with USB devices is their dynamic nature: you
-   never know what device a camera gets assigned; it depends on module load
-   order, the hub configuration, the order in which devices are plugged in,
-   and the phase of the moon (i.e. it can be random). With this option you
-   can give the driver a hint as to what video device node (/dev/videoX) it
-   should use with a specific camera. This is also handy if you have two
-   cameras of the same model.
-
-   A camera is specified by its type (the number from the camera model,
-   like PCA645, PCVC750VC, etc) and optionally the serial number (visible
-   in /proc/bus/usb/devices). A hint consists of a string with the following
-   format:
-
-      [type[.serialnumber]:]node
-      
-   The square brackets mean that both the type and the serialnumber are
-   optional, but a serialnumber cannot be specified without a type (which
-   would be rather pointless). The serialnumber is separated from the type
-   by a '.'; the node number by a ':'.
-   
-   This somewhat cryptic syntax is best explained by a few examples:
-
-     dev_hint=3,5              The first detected cam gets assigned
-                               /dev/video3, the second /dev/video5. Any
-                               other cameras will get the first free 
-                               available slot (see below).
-
-     dev_hint=645:1,680:2      The PCA645 camera will get /dev/video1,
-                               and a PCVC680 /dev/video2.
-                               
-     dev_hint=645.0123:3,645.4567:0    The PCA645 camera with serialnumber 
-                                        0123 goes to /dev/video3, the same
-                                        camera model with the 4567 serial
-                                        gets /dev/video0.
-
-     dev_hint=750:1,4,5,6       The PCVC750 camera will get /dev/video1, the 
-                                next 3 Philips cams will use /dev/video4 
-                                through /dev/video6.
-
-   Some points worth knowing:
-   - Serialnumbers are case sensitive and must be written full, including 
-     leading zeroes (it's treated as a string).
-   - If a device node is already occupied, registration will fail and 
-     the webcam is not available.
-   - You can have up to 64 video devices; be sure to make enough device
-     nodes in /dev if you want to spread the numbers (this does not apply
-     to devfs). After /dev/video9 comes /dev/video10 (not /dev/videoA).
-   - If a camera does not match any dev_hint, it will simply get assigned
-     the first available device node, just as it used to be.
-
-trace
-   In order to better detect problems, it is now possible to turn on a
-   'trace' of some of the calls the module makes; it logs all items in your
-   kernel log at debug level.
-
-   The trace variable is a bitmask; each bit represents a certain feature.
-   If you want to trace something, look up the bit value(s) in the table 
-   below, add the values together and supply that to the trace variable.
-
-   Value  Value   Description                                     Default
-   (dec)  (hex)
-       1    0x1   Module initialization; this will log messages       On
-                  while loading and unloading the module
-
-       2    0x2   probe() and disconnect() traces                     On
-
-       4    0x4   Trace open() and close() calls                      Off
-
-       8    0x8   read(), mmap() and associated ioctl() calls         Off
-
-      16   0x10   Memory allocation of buffers, etc.                  Off
-
-      32   0x20   Showing underflow, overflow and Dumping frame       On
-                  messages
-
-      64   0x40   Show viewport and image sizes                       Off
-
-     128   0x80   PWCX debugging                                      Off
-
-   For example, to trace the open() & read() fuctions, sum 8 + 4 = 12,
-   so you would supply trace=12 during insmod or modprobe. If
-   you want to turn the initialization and probing tracing off, set trace=0.
-   The default value for trace is 35 (0x23).
-
-
-
-Example:
-     
-     # modprobe pwc size=cif fps=15 power_save=1
-
-The fbufs, mbufs and trace parameters are global and apply to all connected
-cameras. Each camera has its own set of buffers.
-
-size and fps only specify defaults when you open() the device; this is to
-accommodate some tools that don't set the size. You can change these
-settings after open() with the Video4Linux ioctl() calls. The default of
-defaults is QCIF size at 10 fps.
-
-The compression parameter is semiglobal; it sets the initial compression
-preference for all camera's, but this parameter can be set per camera with
-the VIDIOCPWCSCQUAL ioctl() call.
-
-All parameters are optional.
-
diff --git a/arch/alpha/lib/io.c b/arch/alpha/lib/io.c
deleted file mode 100644 (file)
index dedc518..0000000
+++ /dev/null
@@ -1,594 +0,0 @@
-/*
- * Alpha IO and memory functions.. Just expand the inlines in the header
- * files..
- */
-
-#include <linux/kernel.h>
-#include <linux/types.h>
-#include <linux/string.h>
-
-#include <asm/io.h>
-
-u8 _inb(unsigned long addr)
-{
-       return __inb(addr);
-}
-
-u16 _inw(unsigned long addr)
-{
-       return __inw(addr);
-}
-
-u32 _inl(unsigned long addr)
-{
-       return __inl(addr);
-}
-
-
-void _outb(u8 b, unsigned long addr)
-{
-       __outb(b, addr);
-}
-
-void _outw(u16 b, unsigned long addr)
-{
-       __outw(b, addr);
-}
-
-void _outl(u32 b, unsigned long addr)
-{
-       __outl(b, addr);
-}
-
-u8 ___raw_readb(unsigned long addr)
-{
-       return __readb(addr);
-}
-
-u16 ___raw_readw(unsigned long addr)
-{
-       return __readw(addr);
-}
-
-u32 ___raw_readl(unsigned long addr)
-{
-       return __readl(addr);
-}
-
-u64 ___raw_readq(unsigned long addr)
-{
-       return __readq(addr);
-}
-
-u8 _readb(unsigned long addr)
-{
-       unsigned long r = __readb(addr);
-       mb();
-       return r;
-}
-
-u16 _readw(unsigned long addr)
-{
-       unsigned long r = __readw(addr);
-       mb();
-       return r;
-}
-
-u32 _readl(unsigned long addr)
-{
-       unsigned long r = __readl(addr);
-       mb();
-       return r;
-}
-
-u64 _readq(unsigned long addr)
-{
-       unsigned long r = __readq(addr);
-       mb();
-       return r;
-}
-
-void ___raw_writeb(u8 b, unsigned long addr)
-{
-       __writeb(b, addr);
-}
-
-void ___raw_writew(u16 b, unsigned long addr)
-{
-       __writew(b, addr);
-}
-
-void ___raw_writel(u32 b, unsigned long addr)
-{
-       __writel(b, addr);
-}
-
-void ___raw_writeq(u64 b, unsigned long addr)
-{
-       __writeq(b, addr);
-}
-
-void _writeb(u8 b, unsigned long addr)
-{
-       __writeb(b, addr);
-       mb();
-}
-
-void _writew(u16 b, unsigned long addr)
-{
-       __writew(b, addr);
-       mb();
-}
-
-void _writel(u32 b, unsigned long addr)
-{
-       __writel(b, addr);
-       mb();
-}
-
-void _writeq(u64 b, unsigned long addr)
-{
-       __writeq(b, addr);
-       mb();
-}
-
-/*
- * Read COUNT 8-bit bytes from port PORT into memory starting at
- * SRC.
- */
-void insb (unsigned long port, void *dst, unsigned long count)
-{
-       while (((unsigned long)dst) & 0x3) {
-               if (!count)
-                       return;
-               count--;
-               *(unsigned char *) dst = inb(port);
-               dst += 1;
-       }
-
-       while (count >= 4) {
-               unsigned int w;
-               count -= 4;
-               w = inb(port);
-               w |= inb(port) << 8;
-               w |= inb(port) << 16;
-               w |= inb(port) << 24;
-               *(unsigned int *) dst = w;
-               dst += 4;
-       }
-
-       while (count) {
-               --count;
-               *(unsigned char *) dst = inb(port);
-               dst += 1;
-       }
-}
-
-
-/*
- * Read COUNT 16-bit words from port PORT into memory starting at
- * SRC.  SRC must be at least short aligned.  This is used by the
- * IDE driver to read disk sectors.  Performance is important, but
- * the interfaces seems to be slow: just using the inlined version
- * of the inw() breaks things.
- */
-void insw (unsigned long port, void *dst, unsigned long count)
-{
-       if (((unsigned long)dst) & 0x3) {
-               if (((unsigned long)dst) & 0x1) {
-                       panic("insw: memory not short aligned");
-               }
-               if (!count)
-                       return;
-               count--;
-               *(unsigned short *) dst = inw(port);
-               dst += 2;
-       }
-
-       while (count >= 2) {
-               unsigned int w;
-               count -= 2;
-               w = inw(port);
-               w |= inw(port) << 16;
-               *(unsigned int *) dst = w;
-               dst += 4;
-       }
-
-       if (count) {
-               *(unsigned short*) dst = inw(port);
-       }
-}
-
-
-/*
- * Read COUNT 32-bit words from port PORT into memory starting at
- * SRC. Now works with any alignment in SRC. Performance is important,
- * but the interfaces seems to be slow: just using the inlined version
- * of the inl() breaks things.
- */
-void insl (unsigned long port, void *dst, unsigned long count)
-{
-       unsigned int l = 0, l2;
-
-       if (!count)
-               return;
-
-       switch (((unsigned long) dst) & 0x3)
-       {
-        case 0x00:                     /* Buffer 32-bit aligned */
-               while (count--)
-               {
-                       *(unsigned int *) dst = inl(port);
-                       dst += 4;
-               }
-               break;
-
-       /* Assuming little endian Alphas in cases 0x01 -- 0x03 ... */
-
-        case 0x02:                     /* Buffer 16-bit aligned */
-               --count;
-
-               l = inl(port);
-               *(unsigned short *) dst = l;
-               dst += 2;
-
-               while (count--)
-               {
-                       l2 = inl(port);
-                       *(unsigned int *) dst = l >> 16 | l2 << 16;
-                       dst += 4;
-                       l = l2;
-               }
-               *(unsigned short *) dst = l >> 16;
-               break;
-
-        case 0x01:                     /* Buffer 8-bit aligned */
-               --count;
-
-               l = inl(port);
-               *(unsigned char *) dst = l;
-               dst += 1;
-               *(unsigned short *) dst = l >> 8;
-               dst += 2;
-               while (count--)
-               {
-                       l2 = inl(port);
-                       *(unsigned int *) dst = l >> 24 | l2 << 8;
-                       dst += 4;
-                       l = l2;
-               }
-               *(unsigned char *) dst = l >> 24;
-               break;
-
-        case 0x03:                     /* Buffer 8-bit aligned */
-               --count;
-
-               l = inl(port);
-               *(unsigned char *) dst = l;
-               dst += 1;
-               while (count--)
-               {
-                       l2 = inl(port);
-                       *(unsigned int *) dst = l << 24 | l2 >> 8;
-                       dst += 4;
-                       l = l2;
-               }
-               *(unsigned short *) dst = l >> 8;
-               dst += 2;
-               *(unsigned char *) dst = l >> 24;
-               break;
-       }
-}
-
-
-/*
- * Like insb but in the opposite direction.
- * Don't worry as much about doing aligned memory transfers:
- * doing byte reads the "slow" way isn't nearly as slow as
- * doing byte writes the slow way (no r-m-w cycle).
- */
-void outsb(unsigned long port, const void * src, unsigned long count)
-{
-       while (count) {
-               count--;
-               outb(*(char *)src, port);
-               src += 1;
-       }
-}
-
-/*
- * Like insw but in the opposite direction.  This is used by the IDE
- * driver to write disk sectors.  Performance is important, but the
- * interfaces seems to be slow: just using the inlined version of the
- * outw() breaks things.
- */
-void outsw (unsigned long port, const void *src, unsigned long count)
-{
-       if (((unsigned long)src) & 0x3) {
-               if (((unsigned long)src) & 0x1) {
-                       panic("outsw: memory not short aligned");
-               }
-               outw(*(unsigned short*)src, port);
-               src += 2;
-               --count;
-       }
-
-       while (count >= 2) {
-               unsigned int w;
-               count -= 2;
-               w = *(unsigned int *) src;
-               src += 4;
-               outw(w >>  0, port);
-               outw(w >> 16, port);
-       }
-
-       if (count) {
-               outw(*(unsigned short *) src, port);
-       }
-}
-
-
-/*
- * Like insl but in the opposite direction.  This is used by the IDE
- * driver to write disk sectors.  Works with any alignment in SRC.
- *  Performance is important, but the interfaces seems to be slow:
- * just using the inlined version of the outl() breaks things.
- */
-void outsl (unsigned long port, const void *src, unsigned long count)
-{
-       unsigned int l = 0, l2;
-
-       if (!count)
-               return;
-
-       switch (((unsigned long) src) & 0x3)
-       {
-        case 0x00:                     /* Buffer 32-bit aligned */
-               while (count--)
-               {
-                       outl(*(unsigned int *) src, port);
-                       src += 4;
-               }
-               break;
-
-        case 0x02:                     /* Buffer 16-bit aligned */
-               --count;
-
-               l = *(unsigned short *) src << 16;
-               src += 2;
-
-               while (count--)
-               {
-                       l2 = *(unsigned int *) src;
-                       src += 4;
-                       outl (l >> 16 | l2 << 16, port);
-                       l = l2;
-               }
-               l2 = *(unsigned short *) src;
-               outl (l >> 16 | l2 << 16, port);
-               break;
-
-        case 0x01:                     /* Buffer 8-bit aligned */
-               --count;
-
-               l  = *(unsigned char *) src << 8;
-               src += 1;
-               l |= *(unsigned short *) src << 16;
-               src += 2;
-               while (count--)
-               {
-                       l2 = *(unsigned int *) src;
-                       src += 4;
-                       outl (l >> 8 | l2 << 24, port);
-                       l = l2;
-               }
-               l2 = *(unsigned char *) src;
-               outl (l >> 8 | l2 << 24, port);
-               break;
-
-        case 0x03:                     /* Buffer 8-bit aligned */
-               --count;
-
-               l  = *(unsigned char *) src << 24;
-               src += 1;
-               while (count--)
-               {
-                       l2 = *(unsigned int *) src;
-                       src += 4;
-                       outl (l >> 24 | l2 << 8, port);
-                       l = l2;
-               }
-               l2  = *(unsigned short *) src;
-               src += 2;
-               l2 |= *(unsigned char *) src << 16;
-               outl (l >> 24 | l2 << 8, port);
-               break;
-       }
-}
-
-
-/*
- * Copy data from IO memory space to "real" memory space.
- * This needs to be optimized.
- */
-void _memcpy_fromio(void * to, unsigned long from, long count)
-{
-       /* Optimize co-aligned transfers.  Everything else gets handled
-          a byte at a time. */
-
-       if (count >= 8 && ((unsigned long)to & 7) == (from & 7)) {
-               count -= 8;
-               do {
-                       *(u64 *)to = __raw_readq(from);
-                       count -= 8;
-                       to += 8;
-                       from += 8;
-               } while (count >= 0);
-               count += 8;
-       }
-
-       if (count >= 4 && ((unsigned long)to & 3) == (from & 3)) {
-               count -= 4;
-               do {
-                       *(u32 *)to = __raw_readl(from);
-                       count -= 4;
-                       to += 4;
-                       from += 4;
-               } while (count >= 0);
-               count += 4;
-       }
-
-       if (count >= 2 && ((unsigned long)to & 1) == (from & 1)) {
-               count -= 2;
-               do {
-                       *(u16 *)to = __raw_readw(from);
-                       count -= 2;
-                       to += 2;
-                       from += 2;
-               } while (count >= 0);
-               count += 2;
-       }
-
-       while (count > 0) {
-               *(u8 *) to = __raw_readb(from);
-               count--;
-               to++;
-               from++;
-       }
-}
-
-/*
- * Copy data from "real" memory space to IO memory space.
- * This needs to be optimized.
- */
-void _memcpy_toio(unsigned long to, const void * from, long count)
-{
-       /* Optimize co-aligned transfers.  Everything else gets handled
-          a byte at a time. */
-       /* FIXME -- align FROM.  */
-
-       if (count >= 8 && (to & 7) == ((unsigned long)from & 7)) {
-               count -= 8;
-               do {
-                       __raw_writeq(*(const u64 *)from, to);
-                       count -= 8;
-                       to += 8;
-                       from += 8;
-               } while (count >= 0);
-               count += 8;
-       }
-
-       if (count >= 4 && (to & 3) == ((unsigned long)from & 3)) {
-               count -= 4;
-               do {
-                       __raw_writel(*(const u32 *)from, to);
-                       count -= 4;
-                       to += 4;
-                       from += 4;
-               } while (count >= 0);
-               count += 4;
-       }
-
-       if (count >= 2 && (to & 1) == ((unsigned long)from & 1)) {
-               count -= 2;
-               do {
-                       __raw_writew(*(const u16 *)from, to);
-                       count -= 2;
-                       to += 2;
-                       from += 2;
-               } while (count >= 0);
-               count += 2;
-       }
-
-       while (count > 0) {
-               __raw_writeb(*(const u8 *) from, to);
-               count--;
-               to++;
-               from++;
-       }
-       mb();
-}
-
-/*
- * "memset" on IO memory space.
- */
-void _memset_c_io(unsigned long to, unsigned long c, long count)
-{
-       /* Handle any initial odd byte */
-       if (count > 0 && (to & 1)) {
-               __raw_writeb(c, to);
-               to++;
-               count--;
-       }
-
-       /* Handle any initial odd halfword */
-       if (count >= 2 && (to & 2)) {
-               __raw_writew(c, to);
-               to += 2;
-               count -= 2;
-       }
-
-       /* Handle any initial odd word */
-       if (count >= 4 && (to & 4)) {
-               __raw_writel(c, to);
-               to += 4;
-               count -= 4;
-       }
-
-       /* Handle all full-sized quadwords: we're aligned
-          (or have a small count) */
-       count -= 8;
-       if (count >= 0) {
-               do {
-                       __raw_writeq(c, to);
-                       to += 8;
-                       count -= 8;
-               } while (count >= 0);
-       }
-       count += 8;
-
-       /* The tail is word-aligned if we still have count >= 4 */
-       if (count >= 4) {
-               __raw_writel(c, to);
-               to += 4;
-               count -= 4;
-       }
-
-       /* The tail is half-word aligned if we have count >= 2 */
-       if (count >= 2) {
-               __raw_writew(c, to);
-               to += 2;
-               count -= 2;
-       }
-
-       /* And finally, one last byte.. */
-       if (count) {
-               __raw_writeb(c, to);
-       }
-       mb();
-}
-
-void
-scr_memcpyw(u16 *d, const u16 *s, unsigned int count)
-{
-       if (! __is_ioaddr((unsigned long) s)) {
-               /* Source is memory.  */
-               if (! __is_ioaddr((unsigned long) d))
-                       memcpy(d, s, count);
-               else
-                       memcpy_toio(d, s, count);
-       } else {
-               /* Source is screen.  */
-               if (! __is_ioaddr((unsigned long) d))
-                       memcpy_fromio(d, s, count);
-               else {
-                       /* FIXME: Should handle unaligned ops and
-                          operation widening.  */
-                       count /= 2;
-                       while (count--) {
-                               u16 tmp = __raw_readw((unsigned long)(s++));
-                               __raw_writew(tmp, (unsigned long)(d++));
-                       }
-               }
-       }
-}
diff --git a/arch/arm/configs/iq80310_defconfig b/arch/arm/configs/iq80310_defconfig
deleted file mode 100644 (file)
index e67d114..0000000
+++ /dev/null
@@ -1,768 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-CONFIG_ARM=y
-CONFIG_MMU=y
-CONFIG_UID16=y
-CONFIG_RWSEM_GENERIC_SPINLOCK=y
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-
-#
-# General setup
-#
-CONFIG_SWAP=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_SYSCTL=y
-CONFIG_LOG_BUF_SHIFT=14
-# CONFIG_EMBEDDED is not set
-CONFIG_KALLSYMS=y
-CONFIG_FUTEX=y
-CONFIG_EPOLL=y
-CONFIG_IOSCHED_AS=y
-CONFIG_IOSCHED_DEADLINE=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-# CONFIG_MODULE_UNLOAD is not set
-CONFIG_OBSOLETE_MODPARM=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-
-#
-# System Type
-#
-# CONFIG_ARCH_ADIFCC is not set
-# CONFIG_ARCH_CLPS7500 is not set
-# CONFIG_ARCH_CLPS711X is not set
-# CONFIG_ARCH_CO285 is not set
-# CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_EBSA110 is not set
-# CONFIG_ARCH_CAMELOT is not set
-# CONFIG_ARCH_FOOTBRIDGE is not set
-# CONFIG_ARCH_INTEGRATOR is not set
-CONFIG_ARCH_IOP3XX=y
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_RPC is not set
-# CONFIG_ARCH_SA1100 is not set
-# CONFIG_ARCH_SHARK is not set
-
-#
-# CLPS711X/EP721X Implementations
-#
-
-#
-# Epxa10db
-#
-
-#
-# Footbridge Implementations
-#
-
-#
-# IOP3xx Implementation Options
-#
-CONFIG_ARCH_IQ80310=y
-# CONFIG_ARCH_IQ80321 is not set
-CONFIG_ARCH_IOP310=y
-# CONFIG_ARCH_IOP321 is not set
-
-#
-# IOP3xx Chipset Features
-#
-# CONFIG_IOP3XX_AAU is not set
-# CONFIG_IOP3XX_DMA is not set
-# CONFIG_IOP3XX_MU is not set
-# CONFIG_IOP3XX_PMON is not set
-
-#
-# ADIFCC Implementation Options
-#
-
-#
-# ADI Board Types
-#
-
-#
-# Intel PXA250/210 Implementations
-#
-
-#
-# SA11x0 Implementations
-#
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_XS80200=y
-CONFIG_CPU_32v5=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-CONFIG_XSCALE_PMU=y
-
-#
-# General setup
-#
-CONFIG_PCI=y
-# CONFIG_ZBOOT_ROM is not set
-CONFIG_ZBOOT_ROM_TEXT=0x00060000
-CONFIG_ZBOOT_ROM_BSS=0xa1008000
-# CONFIG_PCI_LEGACY_PROC is not set
-CONFIG_PCI_NAMES=y
-# CONFIG_HOTPLUG is not set
-
-#
-# MMC/SD Card support
-#
-# CONFIG_MMC is not set
-
-#
-# At least one math emulation must be selected
-#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
-# CONFIG_FPE_FASTFPE is not set
-CONFIG_KCORE_ELF=y
-# CONFIG_KCORE_AOUT is not set
-CONFIG_BINFMT_AOUT=y
-CONFIG_BINFMT_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_PM is not set
-# CONFIG_PREEMPT is not set
-# CONFIG_ARTHUR is not set
-CONFIG_CMDLINE="console=ttyS0,115200 ip=bootp mem=32M root=/dev/nfs initrd=0xc0800000,4M"
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Memory Technology Devices (MTD)
-#
-CONFIG_MTD=y
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_PARTITIONS=y
-# CONFIG_MTD_CONCAT is not set
-CONFIG_MTD_REDBOOT_PARTS=y
-# CONFIG_MTD_CMDLINE_PARTS is not set
-# CONFIG_MTD_AFS_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-CONFIG_MTD_CFI=y
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_GEN_PROBE=y
-# CONFIG_MTD_CFI_ADV_OPTIONS is not set
-CONFIG_MTD_CFI_INTELEXT=y
-# CONFIG_MTD_CFI_AMDSTD is not set
-# CONFIG_MTD_CFI_STAA is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-# CONFIG_MTD_OBSOLETE_CHIPS is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-# CONFIG_MTD_PHYSMAP is not set
-# CONFIG_MTD_ARM_INTEGRATOR is not set
-CONFIG_MTD_IQ80310=y
-# CONFIG_MTD_EDB7312 is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_PMC551 is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLKMTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOC2000 is not set
-# CONFIG_MTD_DOC2001 is not set
-# CONFIG_MTD_DOC2001PLUS is not set
-
-#
-# NAND Flash Device Drivers
-#
-# CONFIG_MTD_NAND is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_CPQ_DA is not set
-# CONFIG_BLK_CPQ_CISS_DA is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-# CONFIG_BLK_DEV_UMEM is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_BLK_DEV_INITRD=y
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-
-#
-# Networking support
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_PACKET 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
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-# CONFIG_IP_PNP_DHCP is not set
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# 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: Netfilter Configuration
-#
-# CONFIG_IP_NF_CONNTRACK is not set
-# CONFIG_IP_NF_QUEUE is not set
-# CONFIG_IP_NF_IPTABLES is not set
-# CONFIG_IP_NF_ARPTABLES is not set
-# CONFIG_IP_NF_COMPAT_IPCHAINS is not set
-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
-
-#
-# IP: Virtual Server Configuration
-#
-# CONFIG_IP_VS is not set
-# CONFIG_IPV6 is not set
-# CONFIG_XFRM_USER is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-CONFIG_IPV6_SCTP__=y
-# CONFIG_IP_SCTP is not set
-# CONFIG_ATM 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_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-CONFIG_NETDEVICES=y
-
-#
-# 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)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MII=y
-# CONFIG_SMC91X is not set
-# CONFIG_HAPPYMEAL is not set
-# CONFIG_SUNGEM is not set
-# CONFIG_NET_VENDOR_3COM is not set
-
-#
-# Tulip family network device support
-#
-# CONFIG_NET_TULIP 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_DGRS is not set
-CONFIG_EEPRO100=y
-# CONFIG_EEPRO100_PIO is not set
-# CONFIG_E100 is not set
-# CONFIG_FEALNX is not set
-# CONFIG_NATSEMI is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_8139CP is not set
-# CONFIG_8139TOO is not set
-# CONFIG_SIS900 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_SUNDANCE is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-# CONFIG_ACENIC is not set
-# CONFIG_DL2K is not set
-# CONFIG_E1000 is not set
-# CONFIG_NS83820 is not set
-# CONFIG_HAMACHI is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_R8169 is not set
-# CONFIG_SK98LIN is not set
-# CONFIG_TIGON3 is not set
-
-#
-# 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
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Token Ring devices (depends on LLC=y)
-#
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# IrDA (infrared) support
-#
-# CONFIG_IRDA is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# 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=y
-# 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
-
-#
-# SCSI device support
-#
-# CONFIG_SCSI is not set
-
-#
-# IEEE 1394 (FireWire) support (EXPERIMENTAL)
-#
-# CONFIG_IEEE1394 is not set
-
-#
-# I2O device support
-#
-# CONFIG_I2O is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN_BOOL is not set
-
-#
-# Input device support
-#
-# CONFIG_INPUT is not set
-
-#
-# Userland interfaces
-#
-
-#
-# Input I/O drivers
-#
-# CONFIG_GAMEPORT is not set
-CONFIG_SOUND_GAMEPORT=y
-# CONFIG_SERIO is not set
-
-#
-# Input Device Drivers
-#
-
-#
-# Character devices
-#
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_SERIAL_8250_EXTENDED is not set
-
-#
-# Non-8250 serial port support
-#
-# CONFIG_SERIAL_DZ is not set
-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
-
-#
-# L3 serial bus support
-#
-# CONFIG_L3 is not set
-
-#
-# Mice
-#
-# CONFIG_BUSMOUSE is not set
-# CONFIG_QIC02_TAPE is not set
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-# CONFIG_GEN_RTC is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_AGP is not set
-# CONFIG_DRM is not set
-# CONFIG_RAW_DRIVER is not set
-# CONFIG_HANGCHECK_TIMER is not set
-
-#
-# Multimedia devices
-#
-CONFIG_VIDEO_DEV=y
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_PROC_FS is not set
-
-#
-# Video Adapters
-#
-# CONFIG_VIDEO_PMS is not set
-# CONFIG_VIDEO_CPIA is not set
-# CONFIG_VIDEO_STRADIS is not set
-# CONFIG_VIDEO_HEXIUM_ORION is not set
-# CONFIG_VIDEO_HEXIUM_GEMINI is not set
-
-#
-# Radio Adapters
-#
-# CONFIG_RADIO_GEMTEK_PCI is not set
-# CONFIG_RADIO_MAXIRADIO is not set
-# CONFIG_RADIO_MAESTRO is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-CONFIG_DVB=y
-CONFIG_DVB_CORE=y
-
-#
-# Supported Frontend Modules
-#
-# CONFIG_DVB_STV0299 is not set
-# CONFIG_DVB_ALPS_BSRV2 is not set
-# CONFIG_DVB_ALPS_TDLB7 is not set
-# CONFIG_DVB_ALPS_TDMB7 is not set
-# CONFIG_DVB_ATMEL_AT76C651 is not set
-# CONFIG_DVB_CX24110 is not set
-# CONFIG_DVB_GRUNDIG_29504_491 is not set
-# CONFIG_DVB_GRUNDIG_29504_401 is not set
-# CONFIG_DVB_MT312 is not set
-# CONFIG_DVB_VES1820 is not set
-# CONFIG_DVB_TDA1004X is not set
-
-#
-# Supported SAA7146 based PCI Adapters
-#
-# CONFIG_DVB_AV7110 is not set
-# CONFIG_DVB_BUDGET is not set
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-# CONFIG_DVB_B2C2_SKYSTAR is not set
-# CONFIG_VIDEO_BTCX is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=y
-# CONFIG_EXT2_FS_XATTR is not set
-# CONFIG_EXT3_FS is not set
-# CONFIG_JBD is not set
-# CONFIG_REISERFS_FS is not set
-# CONFIG_JFS_FS is not set
-# CONFIG_XFS_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_AUTOFS4_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-# CONFIG_ISO9660_FS is not set
-# CONFIG_UDF_FS is not set
-
-#
-# DOS/FAT/NT Filesystems
-#
-# CONFIG_FAT_FS is not set
-# CONFIG_NTFS_FS is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-# CONFIG_DEVFS_FS is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_DEVPTS_FS_XATTR is not set
-CONFIG_TMPFS=y
-CONFIG_RAMFS=y
-
-#
-# Miscellaneous filesystems
-#
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_BEFS_FS is not set
-# CONFIG_BFS_FS is not set
-# CONFIG_EFS_FS is not set
-# CONFIG_JFFS_FS is not set
-CONFIG_JFFS2_FS=y
-CONFIG_JFFS2_FS_DEBUG=0
-# CONFIG_JFFS2_FS_NAND is not set
-# CONFIG_CRAMFS is not set
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=y
-# CONFIG_NFS_V3 is not set
-# CONFIG_NFS_V4 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_SMB_FS is not set
-# CONFIG_CIFS is not set
-# CONFIG_NCP_FS is not set
-# CONFIG_CODA_FS is not set
-# CONFIG_INTERMEZZO_FS is not set
-# CONFIG_AFS_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_OSF_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MINIX_SUBPARTITION is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_LDM_PARTITION is not set
-# CONFIG_NEC98_PARTITION is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_ULTRIX_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_EFI_PARTITION is not set
-
-#
-# Graphics support
-#
-# CONFIG_FB is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# Misc devices
-#
-
-#
-# Multimedia Capabilities Port drivers
-#
-# CONFIG_MCP is not set
-
-#
-# Console Switches
-#
-# CONFIG_SWITCHES is not set
-
-#
-# USB support
-#
-# CONFIG_USB is not set
-# CONFIG_USB_GADGET is not set
-
-#
-# Bluetooth support
-#
-# CONFIG_BT is not set
-
-#
-# Kernel hacking
-#
-CONFIG_FRAME_POINTER=y
-CONFIG_DEBUG_USER=y
-# CONFIG_DEBUG_INFO is not set
-CONFIG_DEBUG_KERNEL=y
-# CONFIG_DEBUG_SLAB is not set
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_DEBUG_SPINLOCK is not set
-# CONFIG_DEBUG_WAITQ is not set
-CONFIG_DEBUG_BUGVERBOSE=y
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
-
-#
-# Security options
-#
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Library routines
-#
-# CONFIG_CRC32 is not set
-CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
diff --git a/arch/arm/mach-iop3xx/iop310-irq.c b/arch/arm/mach-iop3xx/iop310-irq.c
deleted file mode 100644 (file)
index a05e7e9..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * linux/arch/arm/mach-iop3xx/iop310-irq.c
- *
- * Generic IOP310 IRQ handling functionality
- *
- * Author:  Nicolas Pitre
- * Copyright:   (C) 2001 MontaVista Software Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Added IOP310 chipset and IQ80310 board demuxing, masking code. - DS
- *
- */
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/list.h>
-
-#include <asm/mach/irq.h>
-#include <asm/irq.h>
-#include <asm/hardware.h>
-
-extern void xs80200_irq_mask(unsigned int);
-extern void xs80200_irq_unmask(unsigned int);
-extern void xs80200_init_irq(void);
-
-extern void do_IRQ(int, struct pt_regs *);
-
-static u32 iop310_mask /* = 0 */;
-
-static void iop310_irq_mask (unsigned int irq)
-{
-       iop310_mask ++;
-
-       /*
-        * No mask bits on the 80312, so we have to
-        * mask everything from the outside!
-        */
-       if (iop310_mask == 1) {
-               disable_irq(IRQ_XS80200_EXTIRQ);
-               irq_desc[IRQ_XS80200_EXTIRQ].chip->mask(IRQ_XS80200_EXTIRQ);
-       }
-}
-
-static void iop310_irq_unmask (unsigned int irq)
-{
-       if (iop310_mask)
-               iop310_mask --;
-
-       /*
-        * Check if all 80312 sources are unmasked now
-        */
-       if (iop310_mask == 0)
-               enable_irq(IRQ_XS80200_EXTIRQ);
-}
-
-struct irqchip ext_chip = {
-       .ack    = iop310_irq_mask,
-       .mask   = iop310_irq_mask,
-       .unmask = iop310_irq_unmask,
-};
-
-void
-iop310_irq_demux(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
-{
-       u32 fiq1isr = *((volatile u32*)IOP310_FIQ1ISR);
-       u32 fiq2isr = *((volatile u32*)IOP310_FIQ2ISR);
-       struct irqdesc *d;
-       unsigned int irqno = 0;
-
-       if(fiq1isr)
-       {
-               if(fiq1isr & 0x1)
-                       irqno = IRQ_IOP310_DMA0;
-               if(fiq1isr & 0x2)
-                       irqno = IRQ_IOP310_DMA1;
-               if(fiq1isr & 0x4)
-                       irqno = IRQ_IOP310_DMA2;
-               if(fiq1isr & 0x10)
-                       irqno = IRQ_IOP310_PMON;
-               if(fiq1isr & 0x20)
-                       irqno = IRQ_IOP310_AAU;
-       }
-       else
-       {
-               if(fiq2isr & 0x2)
-                       irqno = IRQ_IOP310_I2C;
-               if(fiq2isr & 0x4)
-                       irqno = IRQ_IOP310_MU;
-       }
-
-       if (irqno) {
-               d = irq_desc + irqno;
-               d->handle(irqno, d, regs);
-       }
-}
-
-void __init iop310_init_irq(void)
-{
-       unsigned int i;
-
-       for(i = IOP310_IRQ_OFS; i < NR_IOP310_IRQS; i++)
-       {
-               set_irq_chip(i, &ext_chip);
-               set_irq_handler(i, do_level_IRQ);
-               set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
-       }
-
-       xs80200_init_irq();
-}
diff --git a/arch/arm/mach-iop3xx/iop310-pci.c b/arch/arm/mach-iop3xx/iop310-pci.c
deleted file mode 100644 (file)
index 8e54013..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * arch/arm/mach-iop3xx/iop310-pci.c
- *
- * PCI support for the Intel IOP310 chipset
- *
- * Matt Porter <mporter@mvista.com>
- *
- * Copyright (C) 2001 MontaVista Software, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/slab.h>
-#include <linux/mm.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/system.h>
-#include <asm/hardware.h>
-#include <asm/mach/pci.h>
-
-#include <asm/arch/iop310.h>
-
-/*
- *    *** Special note - why the IOP310 should NOT be used ***
- *
- * The PCI ATU is a brain dead implementation, only allowing 32-bit
- * accesses to PCI configuration space.  This is especially brain
- * dead for writes to this space.  A simple for-instance:
- *
- *  You want to modify the command register *without* corrupting the
- *  status register.
- *
- *  To perform this, you need to read *32* bits of data from offset 4,
- *  mask off the low 16, replace them with the new data, and write *32*
- *  bits back.
- *
- *  Writing the status register at offset 6 with status bits set *clears*
- *  the status.
- *
- * Hello?  Could we have a *SANE* implementation of a PCI ATU some day
- * *PLEASE*?
- */
-#undef DEBUG
-#ifdef DEBUG
-#define  DBG(x...) printk(x)
-#else
-#define  DBG(x...) do { } while (0)
-#endif
-
-/*
- * Calculate the address, etc from the bus, devfn and register
- * offset.  Note that we have two root buses, so we need some
- * method to determine whether we need config type 0 or 1 cycles.
- * We use a root bus number in our bus->sysdata structure for this.
- */
-static u32 iop310_cfg_address(struct pci_bus *bus, int devfn, int where)
-{
-       struct pci_sys_data *sys = bus->sysdata;
-       u32 addr;
-
-       if (sys->busnr == bus->number)
-               addr = 1 << (PCI_SLOT(devfn) + 16);
-       else
-               addr = bus->number << 16 | PCI_SLOT(devfn) << 11 | 1;
-
-       addr |= PCI_FUNC(devfn) << 8 | (where & ~3);
-
-       return addr;
-}
-
-/*
- * Primary PCI interface support.
- */
-static int iop310_pri_pci_status(void)
-{
-       unsigned int status;
-       int ret = 0;
-
-       status = *IOP310_PATUSR;
-       if (status & 0xf900) {
-               *IOP310_PATUSR = status & 0xf900;
-               ret = 1;
-       }
-       status = *IOP310_PATUISR;
-       if (status & 0x0000018f) {
-               *IOP310_PATUISR = status & 0x0000018f;
-               ret = 1;
-       }
-       status = *IOP310_PSR;
-       if (status & 0xf900) {
-               *IOP310_PSR = status & 0xf900;
-               ret = 1;
-       }
-       status = *IOP310_PBISR;
-       if (status & 0x003f) {
-               *IOP310_PBISR = status & 0x003f;
-               ret = 1;
-       }
-       return ret;
-}
-
-/*
- * Simply write the address register and read the configuration
- * data.  Note that the 4 nop's ensure that we are able to handle
- * a delayed abort (in theory.)
- */
-static inline u32 iop310_pri_read(unsigned long addr)
-{
-       u32 val;
-
-       __asm__ __volatile__(
-               "str    %1, [%2]\n\t"
-               "ldr    %0, [%3]\n\t"
-               "nop\n\t"
-               "nop\n\t"
-               "nop\n\t"
-               "nop\n\t"
-               : "=r" (val)
-               : "r" (addr), "r" (IOP310_POCCAR), "r" (IOP310_POCCDR));
-
-       return val;
-}
-
-static int
-iop310_pri_read_config(struct pci_bus *bus, unsigned int devfn, int where,
-                      int size, u32 *value)
-{
-       unsigned long addr = iop310_cfg_address(bus, devfn, where);
-       u32 val = iop310_pri_read(addr) >> ((where & 3) * 8);
-
-       if (iop310_pri_pci_status())
-               val = 0xffffffff;
-
-       *value = val;
-
-       return PCIBIOS_SUCCESSFUL;
-}
-
-static int
-iop310_pri_write_config(struct pci_bus *bus, unsigned int devfn, int where,
-                       int size, u32 value)
-{
-       unsigned long addr = iop310_cfg_address(bus, devfn, where);
-       u32 val;
-
-       if (size != 4) {
-               val = iop310_pri_read(addr);
-               if (!iop310_pri_pci_status() == 0)
-                       return PCIBIOS_SUCCESSFUL;
-
-               where = (where & 3) * 8;
-
-               if (size == 1)
-                       val &= ~(0xff << where);
-               else
-                       val &= ~(0xffff << where);
-
-               *IOP310_POCCDR = val | value << where;
-       } else {
-               asm volatile(
-                       "str    %1, [%2]\n\t"
-                       "str    %0, [%3]\n\t"
-                       "nop\n\t"
-                       "nop\n\t"
-                       "nop\n\t"
-                       "nop\n\t"
-                       :
-                       : "r" (value), "r" (addr),
-                         "r" (IOP310_POCCAR), "r" (IOP310_POCCDR));
-       }
-
-       return PCIBIOS_SUCCESSFUL;
-}
-
-static struct pci_ops iop310_primary_ops = {
-       .read   = iop310_pri_read_config,
-       .write  = iop310_pri_write_config,
-};
-
-/*
- * Secondary PCI interface support.
- */
-static int iop310_sec_pci_status(void)
-{
-       unsigned int usr, uisr;
-       int ret = 0;
-
-       usr = *IOP310_SATUSR;
-       uisr = *IOP310_SATUISR;
-       if (usr & 0xf900) {
-               *IOP310_SATUSR = usr & 0xf900;
-               ret = 1;
-       }
-       if (uisr & 0x0000069f) {
-               *IOP310_SATUISR = uisr & 0x0000069f;
-               ret = 1;
-       }
-       if (ret)
-               DBG("ERROR (%08x %08x)", usr, uisr);
-       return ret;
-}
-
-/*
- * Simply write the address register and read the configuration
- * data.  Note that the 4 nop's ensure that we are able to handle
- * a delayed abort (in theory.)
- */
-static inline u32 iop310_sec_read(unsigned long addr)
-{
-       u32 val;
-
-       __asm__ __volatile__(
-               "str    %1, [%2]\n\t"
-               "ldr    %0, [%3]\n\t"
-               "nop\n\t"
-               "nop\n\t"
-               "nop\n\t"
-               "nop\n\t"
-               : "=r" (val)
-               : "r" (addr), "r" (IOP310_SOCCAR), "r" (IOP310_SOCCDR));
-
-       return val;
-}
-
-static int
-iop310_sec_read_config(struct pci_bus *bus, unsigned int devfn, int where,
-                      int size, u32 *value)
-{
-       unsigned long addr = iop310_cfg_address(bus, devfn, where);
-       u32 val = iop310_sec_read(addr) >> ((where & 3) * 8);
-
-       if (iop310_sec_pci_status())
-               val = 0xffffffff;
-
-       *value = val;
-
-       return PCIBIOS_SUCCESSFUL;
-}
-
-static int
-iop310_sec_write_config(struct pci_bus *bus, unsigned int devfn, int where,
-                       int size, u32 value)
-{
-       unsigned long addr = iop310_cfg_address(bus, devfn, where);
-       u32 val;
-
-       if (size != 4) {
-               val = iop310_sec_read(addr);
-
-               if (!iop310_sec_pci_status() == 0)
-                       return PCIBIOS_SUCCESSFUL;
-
-               where = (where & 3) * 8;
-
-               if (size == 1)
-                       val &= ~(0xff << where);
-               else
-                       val &= ~(0xffff << where);
-
-               *IOP310_SOCCDR = val | value << where;
-       } else {
-               asm volatile(
-                       "str    %1, [%2]\n\t"
-                       "str    %0, [%3]\n\t"
-                       "nop\n\t"
-                       "nop\n\t"
-                       "nop\n\t"
-                       "nop\n\t"
-                       :
-                       : "r" (value), "r" (addr),
-                         "r" (IOP310_SOCCAR), "r" (IOP310_SOCCDR));
-       }
-
-       return PCIBIOS_SUCCESSFUL;
-}
-
-static struct pci_ops iop310_secondary_ops = {
-       .read   = iop310_sec_read_config,
-       .write  = iop310_sec_write_config,
-};
-
-/*
- * When a PCI device does not exist during config cycles, the 80200 gets
- * an external abort instead of returning 0xffffffff.  If it was an
- * imprecise abort, we need to correct the return address to point after
- * the instruction.  Also note that the Xscale manual says:
- *
- *  "if a stall-until-complete LD or ST instruction triggers an
- *  imprecise fault, then that fault will be seen by the program
- *  within 3 instructions."
- *
- * This does not appear to be the case.  With 8 NOPs after the load, we
- * see the imprecise abort occurring on the STM of iop310_sec_pci_status()
- * which is about 10 instructions away.
- *
- * Always trust reality!
- */
-static int
-iop310_pci_abort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
-{
-       DBG("PCI abort: address = 0x%08lx fsr = 0x%03x PC = 0x%08lx LR = 0x%08lx\n",
-               addr, fsr, regs->ARM_pc, regs->ARM_lr);
-
-       /*
-        * If it was an imprecise abort, then we need to correct the
-        * return address to be _after_ the instruction.
-        */
-       if (fsr & (1 << 10))
-               regs->ARM_pc += 4;
-
-       return 0;
-}
-
-/*
- * Scan an IOP310 PCI bus.  sys->bus defines which bus we scan.
- */
-struct pci_bus *iop310_scan_bus(int nr, struct pci_sys_data *sys)
-{
-       struct pci_ops *ops;
-
-       if (nr)
-               ops = &iop310_secondary_ops;
-       else
-               ops = &iop310_primary_ops;
-
-       return pci_scan_bus(sys->busnr, ops, sys);
-}
-
-/*
- * Setup the system data for controller 'nr'.   Return 0 if none found,
- * 1 if found, or negative error.
- *
- * We can alter:
- *  io_offset   - offset between IO resources and PCI bus BARs
- *  mem_offset  - offset between mem resources and PCI bus BARs
- *  resource[0] - parent IO resource
- *  resource[1] - parent non-prefetchable memory resource
- *  resource[2] - parent prefetchable memory resource
- *  swizzle     - bridge swizzling function
- *  map_irq     - irq mapping function
- *
- * Note that 'io_offset' and 'mem_offset' are left as zero since
- * the IOP310 doesn't attempt to perform any address translation
- * on accesses from the host to the bus.
- */
-int iop310_setup(int nr, struct pci_sys_data *sys)
-{
-       struct resource *res;
-
-       if (nr >= 2)
-               return 0;
-
-       res = kmalloc(sizeof(struct resource) * 2, GFP_KERNEL);
-       if (!res)
-               panic("PCI: unable to alloc resources");
-
-       memset(res, 0, sizeof(struct resource) * 2);
-
-       switch (nr) {
-       case 0:
-               res[0].start = IOP310_PCIPRI_LOWER_IO + 0x6e000000;
-               res[0].end   = IOP310_PCIPRI_LOWER_IO + 0x6e00ffff;
-               res[0].name  = "PCI IO Primary";
-               res[0].flags = IORESOURCE_IO;
-
-               res[1].start = IOP310_PCIPRI_LOWER_MEM;
-               res[1].end   = IOP310_PCIPRI_LOWER_MEM + IOP310_PCI_WINDOW_SIZE;
-               res[1].name  = "PCI Memory Primary";
-               res[1].flags = IORESOURCE_MEM;
-               break;
-
-       case 1:
-               res[0].start = IOP310_PCISEC_LOWER_IO + 0x6e000000;
-               res[0].end   = IOP310_PCISEC_LOWER_IO + 0x6e00ffff;
-               res[0].name  = "PCI IO Secondary";
-               res[0].flags = IORESOURCE_IO;
-
-               res[1].start = IOP310_PCISEC_LOWER_MEM;
-               res[1].end   = IOP310_PCISEC_LOWER_MEM + IOP310_PCI_WINDOW_SIZE;
-               res[1].name  = "PCI Memory Secondary";
-               res[1].flags = IORESOURCE_MEM;
-               break;
-       }
-
-       request_resource(&ioport_resource, &res[0]);
-       request_resource(&iomem_resource, &res[1]);
-
-       sys->resource[0] = &res[0];
-       sys->resource[1] = &res[1];
-       sys->resource[2] = NULL;
-       sys->io_offset   = 0x6e000000;
-
-       return 1;
-}
-
-void iop310_init(void)
-{
-       DBG("PCI:  Intel 80312 PCI-to-PCI init code.\n");
-       DBG("  ATU secondary: ATUCR =0x%08x\n", *IOP310_ATUCR);
-       DBG("  ATU secondary: SOMWVR=0x%08x  SOIOWVR=0x%08x\n",
-               *IOP310_SOMWVR, *IOP310_SOIOWVR);
-       DBG("  ATU secondary: SIABAR=0x%08x  SIALR  =0x%08x SIATVR=%08x\n",
-               *IOP310_SIABAR, *IOP310_SIALR, *IOP310_SIATVR);
-       DBG("  ATU primary:   POMWVR=0x%08x  POIOWVR=0x%08x\n",
-               *IOP310_POMWVR, *IOP310_POIOWVR);
-       DBG("  ATU primary:   PIABAR=0x%08x  PIALR  =0x%08x PIATVR=%08x\n",
-               *IOP310_PIABAR, *IOP310_PIALR, *IOP310_PIATVR);
-       DBG("  P2P: PCR=0x%04x BCR=0x%04x EBCR=0x%04x\n",
-               *IOP310_PCR, *IOP310_BCR, *IOP310_EBCR);
-
-       /*
-        * Windows have to be carefully opened via a nice set of calls
-        * here or just some direct register fiddling in the board
-        * specific init when we want transactions to occur between the
-        * two PCI hoses.
-        *
-        * To do this, we will have manage RETRY assertion between the
-        * firmware and the kernel.  This will ensure that the host
-        * system's enumeration code is held off until we have tweaked
-        * the interrupt routing and public/private IDSELs.
-        *
-        * For now we will simply default to disabling the integrated type
-        * 81 P2P bridge.
-        */
-       *IOP310_PCR &= 0xfff8;
-
-       hook_fault_code(16+6, iop310_pci_abort, SIGBUS, "imprecise external abort");
-}
diff --git a/arch/arm/mach-iop3xx/iq80310-irq.c b/arch/arm/mach-iop3xx/iq80310-irq.c
deleted file mode 100644 (file)
index 9331537..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * linux/arch/arm/mach-iop3xx/iq80310-irq.c
- *
- * IRQ hadling/demuxing for IQ80310 board
- *
- * Author:  Nicolas Pitre
- * Copyright:   (C) 2001 MontaVista Software Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * 2.4.7-rmk1-iop310.1
- *     Moved demux from asm to C - DS
- *     Fixes for various revision boards - DS
- */
-#include <linux/init.h>
-#include <linux/list.h>
-
-#include <asm/irq.h>
-#include <asm/mach/irq.h>
-#include <asm/hardware.h>
-#include <asm/system.h>
-
-extern void iop310_init_irq(void);
-extern void iop310_irq_demux(unsigned int, struct irqdesc *, struct pt_regs *);
-
-static void iq80310_irq_mask(unsigned int irq)
-{
-       *(volatile char *)IQ80310_INT_MASK |= (1 << (irq - IQ80310_IRQ_OFS));
-}
-
-static void iq80310_irq_unmask(unsigned int irq)
-{
-       *(volatile char *)IQ80310_INT_MASK &= ~(1 << (irq - IQ80310_IRQ_OFS));
-}
-
-static struct irqchip iq80310_irq_chip = {
-       .ack    = iq80310_irq_mask,
-       .mask   = iq80310_irq_mask,
-       .unmask = iq80310_irq_unmask,
-};
-
-extern struct irqchip ext_chip;
-
-static void
-iq80310_cpld_irq_handler(unsigned int irq, struct irqdesc *desc,
-                        struct pt_regs *regs)
-{
-       unsigned int irq_stat = *(volatile u8*)IQ80310_INT_STAT;
-       unsigned int irq_mask = *(volatile u8*)IQ80310_INT_MASK;
-       unsigned int i, handled = 0;
-       struct irqdesc *d;
-
-       desc->chip->ack(irq);
-
-       /*
-        * Mask out the interrupts which aren't enabled.
-        */
-       irq_stat &= 0x1f & ~irq_mask;
-
-       /*
-        * Test each IQ80310 CPLD interrupt
-        */
-       for (i = IRQ_IQ80310_TIMER, d = irq_desc + IRQ_IQ80310_TIMER;
-            irq_stat; i++, d++, irq_stat >>= 1)
-               if (irq_stat & 1) {
-                       d->handle(i, d, regs);
-                       handled++;
-               }
-
-       /*
-        * If running on a board later than REV D.1, we can
-        * decode the PCI interrupt status.
-        */
-       if (system_rev) {
-               irq_stat = *((volatile u8*)IQ80310_PCI_INT_STAT) & 7;
-
-               for (i = IRQ_IQ80310_INTA, d = irq_desc + IRQ_IQ80310_INTA;
-                    irq_stat; i++, d++, irq_stat >>= 1)
-                       if (irq_stat & 0x1) {
-                               d->handle(i, d, regs);
-                               handled++;
-                       }
-       }
-
-       /*
-        * If on a REV D.1 or lower board, we just assumed INTA
-        * since PCI is not routed, and it may actually be an
-        * on-chip interrupt.
-        *
-        * Note that we're giving on-chip interrupts slightly
-        * higher priority than PCI by handling them first.
-        *
-        * On boards later than REV D.1, if we didn't read a
-        * CPLD interrupt, we assume it's from a device on the
-        * chipset itself.
-        */
-       if (system_rev == 0 || handled == 0)
-               iop310_irq_demux(irq, desc, regs);
-
-       desc->chip->unmask(irq);
-}
-
-void __init iq80310_init_irq(void)
-{
-       volatile char *mask = (volatile char *)IQ80310_INT_MASK;
-       unsigned int i;
-
-       iop310_init_irq();
-
-       /*
-        * Setup PIRSR to route PCI interrupts into xs80200
-        */
-       *IOP310_PIRSR = 0xff;
-
-       /*
-        * Setup the IRQs in the FE820000/FE860000 registers
-        */
-       for (i = IQ80310_IRQ_OFS; i <= IRQ_IQ80310_INTD; i++) {
-               set_irq_chip(i, &iq80310_irq_chip);
-               set_irq_handler(i, do_level_IRQ);
-               set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
-       }
-
-       /*
-        * Setup the PCI IRQs
-        */
-       for (i = IRQ_IQ80310_INTA; i < IRQ_IQ80310_INTC; i++) {
-               set_irq_chip(i, &ext_chip);
-               set_irq_handler(i, do_level_IRQ);
-               set_irq_flags(i, IRQF_VALID);
-       }
-
-       *mask = 0xff;  /* mask all sources */
-
-       set_irq_chained_handler(IRQ_XS80200_EXTIRQ,
-                               &iq80310_cpld_irq_handler);
-}
diff --git a/arch/arm/mach-iop3xx/iq80310-pci.c b/arch/arm/mach-iop3xx/iq80310-pci.c
deleted file mode 100644 (file)
index fa92f3e..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * arch/arm/mach-iop3xx/iq80310-pci.c
- *
- * PCI support for the Intel IQ80310 reference board
- *
- * Matt Porter <mporter@mvista.com>
- *
- * Copyright (C) 2001 MontaVista Software, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/init.h>
-
-#include <asm/hardware.h>
-#include <asm/irq.h>
-#include <asm/mach/pci.h>
-#include <asm/mach-types.h>
-
-/*
- * The following macro is used to lookup irqs in a standard table
- * format for those systems that do not already have PCI
- * interrupts properly routed.  We assume 1 <= pin <= 4
- */
-#define PCI_IRQ_TABLE_LOOKUP(minid,maxid)      \
-({ int _ctl_ = -1;                             \
-   unsigned int _idsel = idsel - minid;                \
-   if (_idsel <= maxid)                                \
-      _ctl_ = pci_irq_table[_idsel][pin-1];    \
-   _ctl_; })
-
-#define INTA   IRQ_IQ80310_INTA
-#define INTB   IRQ_IQ80310_INTB
-#define INTC   IRQ_IQ80310_INTC
-#define INTD   IRQ_IQ80310_INTD
-
-#define INTE   IRQ_IQ80310_I82559
-
-typedef u8 irq_table[4];
-
-/*
- * IRQ tables for primary bus.
- *
- * On a Rev D.1 and older board, INT A-C are not routed, so we
- * just fake it as INTA and than we take care of handling it
- * correctly in the IRQ demux routine.
- */
-static irq_table pci_pri_d_irq_table[] = {
-/* Pin:    A     B     C     D */
-       { INTA, INTD, INTA, INTA }, /*  PCI Slot J3 */
-       { INTD, INTA, INTA, INTA }, /*  PCI Slot J4 */
-};
-
-static irq_table pci_pri_f_irq_table[] = {
-/* Pin:    A     B     C     D */
-       { INTC, INTD, INTA, INTB }, /*  PCI Slot J3 */
-       { INTD, INTA, INTB, INTC }, /*  PCI Slot J4 */
-};
-
-static int __init
-iq80310_pri_map_irq(struct pci_dev *dev, u8 idsel, u8 pin)
-{
-       irq_table *pci_irq_table;
-
-       BUG_ON(pin < 1 || pin > 4);
-
-       if (!system_rev) {
-               pci_irq_table = pci_pri_d_irq_table;
-       } else {
-               pci_irq_table = pci_pri_f_irq_table;
-       }
-
-       return PCI_IRQ_TABLE_LOOKUP(2, 3);
-}
-
-/*
- * IRQ tables for secondary bus.
- *
- * On a Rev D.1 and older board, INT A-C are not routed, so we
- * just fake it as INTA and than we take care of handling it
- * correctly in the IRQ demux routine.
- */
-static irq_table pci_sec_d_irq_table[] = {
-/* Pin:    A     B     C     D */
-       { INTA, INTA, INTA, INTD }, /*  PCI Slot J1 */
-       { INTA, INTA, INTD, INTA }, /*  PCI Slot J5 */
-       { INTE, INTE, INTE, INTE }, /*  P2P Bridge */
-};
-
-static irq_table pci_sec_f_irq_table[] = {
-/* Pin:           A     B     C     D */
-       { INTA, INTB, INTC, INTD }, /* PCI Slot J1 */
-       { INTB, INTC, INTD, INTA }, /* PCI Slot J5 */
-       { INTE, INTE, INTE, INTE }, /* P2P Bridge */
-};
-
-static int __init
-iq80310_sec_map_irq(struct pci_dev *dev, u8 idsel, u8 pin)
-{
-       irq_table *pci_irq_table;
-
-       BUG_ON(pin < 1 || pin > 4);
-
-       if (!system_rev) {
-               pci_irq_table = pci_sec_d_irq_table;
-       } else {
-               pci_irq_table = pci_sec_f_irq_table;
-       }
-
-       return PCI_IRQ_TABLE_LOOKUP(0, 2);
-}
-
-static int iq80310_pri_host;
-
-static int iq80310_setup(int nr, struct pci_sys_data *sys)
-{
-       switch (nr) {
-       case 0:
-               if (!iq80310_pri_host)
-                       return 0;
-
-               sys->map_irq = iq80310_pri_map_irq;
-               break;
-
-       case 1:
-               sys->map_irq = iq80310_sec_map_irq;
-               break;
-
-       default:
-               return 0;
-       }
-
-       return iop310_setup(nr, sys);
-}
-
-static void iq80310_preinit(void)
-{
-       iq80310_pri_host = *(volatile u32 *)IQ80310_BACKPLANE & 1;
-
-       printk(KERN_INFO "PCI: IQ80310 is a%s\n",
-               iq80310_pri_host ? " system controller" : "n agent");
-
-       iop310_init();
-}
-
-static struct hw_pci iq80310_pci __initdata = {
-       .swizzle        = pci_std_swizzle,
-       .nr_controllers = 2,
-       .setup          = iq80310_setup,
-       .scan           = iop310_scan_bus,
-       .preinit        = iq80310_preinit,
-};
-
-static int __init iq80310_pci_init(void)
-{
-       if (machine_is_iq80310())
-               pci_common_init(&iq80310_pci);
-       return 0;
-}
-
-subsys_initcall(iq80310_pci_init);
diff --git a/arch/arm/mach-iop3xx/iq80310-time.c b/arch/arm/mach-iop3xx/iq80310-time.c
deleted file mode 100644 (file)
index 2698938..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * linux/arch/arm/mach-iop3xx/time-iq80310.c
- *
- * Timer functions for IQ80310 onboard timer
- *
- * Author:  Nicolas Pitre
- * Copyright:   (C) 2001 MontaVista Software Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- */
-#include <linux/kernel.h>
-#include <linux/interrupt.h>
-#include <linux/time.h>
-#include <linux/init.h>
-#include <linux/timex.h>
-
-#include <asm/hardware.h>
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/uaccess.h>
-#include <asm/mach/irq.h>
-
-static void iq80310_write_timer (u_long val)
-{
-       volatile u_char *la0 = (volatile u_char *)IQ80310_TIMER_LA0;
-       volatile u_char *la1 = (volatile u_char *)IQ80310_TIMER_LA1;
-       volatile u_char *la2 = (volatile u_char *)IQ80310_TIMER_LA2;
-
-       *la0 = val;
-       *la1 = val >> 8;
-       *la2 = (val >> 16) & 0x3f;
-}
-
-static u_long iq80310_read_timer (void)
-{
-       volatile u_char *la0 = (volatile u_char *)IQ80310_TIMER_LA0;
-       volatile u_char *la1 = (volatile u_char *)IQ80310_TIMER_LA1;
-       volatile u_char *la2 = (volatile u_char *)IQ80310_TIMER_LA2;
-       volatile u_char *la3 = (volatile u_char *)IQ80310_TIMER_LA3;
-       u_long b0, b1, b2, b3, val;
-
-       b0 = *la0; b1 = *la1; b2 = *la2; b3 = *la3;
-       b0 = (((b0 & 0x40) >> 1) | (b0 & 0x1f));
-       b1 = (((b1 & 0x40) >> 1) | (b1 & 0x1f));
-       b2 = (((b2 & 0x40) >> 1) | (b2 & 0x1f));
-       b3 = (b3 & 0x0f);
-       val = ((b0 << 0) | (b1 << 6) | (b2 << 12) | (b3 << 18));
-       return val;
-}
-
-/*
- * IRQs are disabled before entering here from do_gettimeofday().
- * Note that the counter may wrap.  When it does, 'elapsed' will
- * be small, but we will have a pending interrupt.
- */
-static unsigned long iq80310_gettimeoffset (void)
-{
-       unsigned long elapsed, usec;
-       unsigned int stat1, stat2;
-
-       stat1 = *(volatile u8 *)IQ80310_INT_STAT;
-       elapsed = iq80310_read_timer();
-       stat2 = *(volatile u8 *)IQ80310_INT_STAT;
-
-       /*
-        * If an interrupt was pending before we read the timer,
-        * we've already wrapped.  Factor this into the time.
-        * If an interrupt was pending after we read the timer,
-        * it may have wrapped between checking the interrupt
-        * status and reading the timer.  Re-read the timer to
-        * be sure its value is after the wrap.
-        */
-       if (stat1 & 1)
-               elapsed += LATCH;
-       else if (stat2 & 1)
-               elapsed = LATCH + iq80310_read_timer();
-
-       /*
-        * Now convert them to usec.
-        */
-       usec = (unsigned long)(elapsed * (tick_nsec / 1000))/LATCH;
-
-       return usec;
-}
-
-
-static irqreturn_t
-iq80310_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
-{
-       volatile u_char *timer_en = (volatile u_char *)IQ80310_TIMER_EN;
-
-       /* clear timer interrupt */
-       *timer_en &= ~2;
-       *timer_en |= 2;
-
-       do_timer(regs);
-
-       return IRQ_HANDLED;
-}
-
-extern unsigned long (*gettimeoffset)(void);
-
-static struct irqaction timer_irq = {
-       .name           = "timer",
-       .handler        = iq80310_timer_interrupt,
-};
-
-
-void __init time_init(void)
-{
-       volatile u_char *timer_en = (volatile u_char *)IQ80310_TIMER_EN;
-
-       gettimeoffset = iq80310_gettimeoffset;
-
-       setup_irq(IRQ_IQ80310_TIMER, &timer_irq);
-
-       *timer_en = 0;
-       iq80310_write_timer(LATCH);
-       *timer_en |= 2;
-       *timer_en |= 1;
-}
diff --git a/arch/arm/mach-iop3xx/mm.c b/arch/arm/mach-iop3xx/mm.c
deleted file mode 100644 (file)
index 110381a..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * linux/arch/arm/mach-iop3xx/mm.c
- *
- * Low level memory initialization for IOP310 based systems
- *
- * Author: Nicolas Pitre <npitre@mvista.com>
- *
- * Copyright 2000-2001 MontaVista Software Inc.
- *
- * This program is free software; you can redistribute  it and/or modify it
- * under  the terms of  the GNU General  Public License as published by the
- * Free Software Foundation;  either version 2 of the  License, or (at your
- * option) any later version.
- *
- */
-#include <linux/config.h>
-#include <linux/kernel.h>
-#include <linux/mm.h>
-#include <linux/init.h>
-
-#include <asm/io.h>
-#include <asm/pgtable.h>
-#include <asm/page.h>
-
-#include <asm/mach/map.h>
-
-#ifdef CONFIG_IOP310_MU
-#include "message.h"
-#endif
-
-/*
- * Standard IO mapping for all IOP310 based systems
- */
-static struct map_desc iop80310_std_desc[] __initdata = {
- /* virtual     physical      length       type */
- // IOP310 Memory Mapped Registers
- { 0xe8001000,  0x00001000,   0x00001000,  MT_DEVICE },
- // PCI I/O Space
- { 0xfe000000,  0x90000000,   0x00020000,  MT_DEVICE }
-};
-
-void __init iop310_map_io(void)
-{
-       iotable_init(iop80310_std_desc, ARRAY_SIZE(iop80310_std_desc));
-}
-
-/*
- * IQ80310 specific IO mappings
- */
-#ifdef CONFIG_ARCH_IQ80310
-static struct map_desc iq80310_io_desc[] __initdata = {
- /* virtual     physical      length        type */
- // IQ80310 On-Board Devices
- { 0xfe800000,  0xfe800000,   0x00100000,   MT_DEVICE }
-};
-
-void __init iq80310_map_io(void)
-{
-#ifdef CONFIG_IOP310_MU
-       /* acquiring 1MB of memory aligned on 1MB boundary for MU */
-       mu_mem = __alloc_bootmem(0x100000, 0x100000, 0);
-#endif
-
-       iop310_map_io();
-
-       iotable_init(iq80310_io_desc, ARRAY_SIZE(iq80310_io_desc));
-}
-#endif // CONFIG_ARCH_IQ80310
-
diff --git a/arch/arm/mach-iop3xx/xs80200-irq.c b/arch/arm/mach-iop3xx/xs80200-irq.c
deleted file mode 100644 (file)
index 70304dd..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * linux/arch/arm/mach-iop3xx/xs80200-irq.c
- *
- * Generic IRQ handling for the XS80200 XScale core.
- *
- * Author:  Nicolas Pitre
- * Copyright:   (C) 2001 MontaVista Software Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <linux/init.h>
-#include <linux/list.h>
-
-#include <asm/mach/irq.h>
-#include <asm/irq.h>
-#include <asm/hardware.h>
-
-static void xs80200_irq_mask (unsigned int irq)
-{
-       unsigned long intctl;
-       asm ("mrc p13, 0, %0, c0, c0, 0" : "=r" (intctl));
-       switch (irq) {
-           case IRQ_XS80200_BCU:     intctl &= ~(1<<3); break;
-           case IRQ_XS80200_PMU:     intctl &= ~(1<<2); break;
-           case IRQ_XS80200_EXTIRQ:  intctl &= ~(1<<1); break;
-           case IRQ_XS80200_EXTFIQ:  intctl &= ~(1<<0); break;
-       }
-       asm ("mcr p13, 0, %0, c0, c0, 0" : : "r" (intctl));
-}
-
-static void xs80200_irq_unmask (unsigned int irq)
-{
-       unsigned long intctl;
-       asm ("mrc p13, 0, %0, c0, c0, 0" : "=r" (intctl));
-       switch (irq) {
-           case IRQ_XS80200_BCU:       intctl |= (1<<3); break;
-           case IRQ_XS80200_PMU:       intctl |= (1<<2); break;
-           case IRQ_XS80200_EXTIRQ:    intctl |= (1<<1); break;
-           case IRQ_XS80200_EXTFIQ:    intctl |= (1<<0); break;
-       }
-       asm ("mcr p13, 0, %0, c0, c0, 0" : : "r" (intctl));
-}
-
-static struct irqchip xs80200_chip = {
-       .ack    = xs80200_irq_mask,
-       .mask   = xs80200_irq_mask,
-       .unmask = xs80200_irq_unmask,
-};
-
-void __init xs80200_init_irq(void)
-{
-       unsigned int i;
-
-       asm("mcr p13, 0, %0, c0, c0, 0" : : "r" (0));
-
-       for (i = 0; i < NR_XS80200_IRQS; i++) {
-               set_irq_chip(i, &xs80200_chip);
-               set_irq_handler(i, do_level_IRQ);
-               set_irq_flags(i, IRQF_VALID);
-       }
-}
diff --git a/arch/arm/mach-omap/bus.c b/arch/arm/mach-omap/bus.c
deleted file mode 100644 (file)
index 24a57f2..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/bus.c
- *
- * Virtual bus for OMAP. Allows better power management, such as managing
- * shared clocks, and mapping of bus addresses to Local Bus addresses.
- *
- * See drivers/usb/host/ohci-omap.c or drivers/video/omap/omapfb.c for
- * examples on how to register drivers to this bus.
- *
- * Copyright (C) 2003 - 2004 Nokia Corporation
- * Written by Tony Lindgren <tony@atomide.com>
- * Portions of code based on sa1111.c.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <linux/config.h>
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/ptrace.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/device.h>
-#include <linux/slab.h>
-#include <linux/spinlock.h>
-
-#include <asm/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/io.h>
-#include <asm/irq.h>
-#include <asm/mach/irq.h>
-
-#include <asm/arch/bus.h>
-
-static int omap_bus_match(struct device *_dev, struct device_driver *_drv);
-static int omap_bus_suspend(struct device *dev, u32 state);
-static int omap_bus_resume(struct device *dev);
-
-/*
- * OMAP bus definitions
- *
- * NOTE: Most devices should use TIPB. LBUS does automatic address mapping
- *      to Local Bus addresses, and should only be used for Local Bus devices.
- *      We may add new buses later on for power management reasons. Basically
- *      we want to be able to turn off any bus if it's not used by device
- *      drivers.
- */
-static struct device omap_bus_devices[OMAP_NR_BUSES] = {
-       {
-               .bus_id         = OMAP_BUS_NAME_TIPB
-       }, {
-               .bus_id         = OMAP_BUS_NAME_LBUS
-       },
-};
-
-static struct bus_type omap_bus_types[OMAP_NR_BUSES] = {
-       {
-               .name           = OMAP_BUS_NAME_TIPB,
-               .match          = omap_bus_match,
-               .suspend        = omap_bus_suspend,
-               .resume         = omap_bus_resume,
-       }, {
-               .name           = OMAP_BUS_NAME_LBUS,   /* Local bus on 1510 */
-               .match          = omap_bus_match,
-               .suspend        = omap_bus_suspend,
-               .resume         = omap_bus_resume,
-       },
-};
-
-static int omap_bus_match(struct device *dev, struct device_driver *drv)
-{
-       struct omap_dev *omapdev = OMAP_DEV(dev);
-       struct omap_driver *omapdrv = OMAP_DRV(drv);
-
-       return omapdev->devid == omapdrv->devid;
-}
-
-static int omap_bus_suspend(struct device *dev, u32 state)
-{
-       struct omap_dev *omapdev = OMAP_DEV(dev);
-       struct omap_driver *omapdrv = OMAP_DRV(dev->driver);
-       int ret = 0;
-
-       if (omapdrv && omapdrv->suspend)
-               ret = omapdrv->suspend(omapdev, state);
-       return ret;
-}
-
-static int omap_bus_resume(struct device *dev)
-{
-       struct omap_dev *omapdev = OMAP_DEV(dev);
-       struct omap_driver *omapdrv = OMAP_DRV(dev->driver);
-       int ret = 0;
-
-       if (omapdrv && omapdrv->resume)
-               ret = omapdrv->resume(omapdev);
-       return ret;
-}
-
-static int omap_device_probe(struct device *dev)
-{
-       struct omap_dev *omapdev = OMAP_DEV(dev);
-       struct omap_driver *omapdrv = OMAP_DRV(dev->driver);
-       int ret = -ENODEV;
-
-       if (omapdrv && omapdrv->probe)
-               ret = omapdrv->probe(omapdev);
-
-       return ret;
-}
-
-static int omap_device_remove(struct device *dev)
-{
-       struct omap_dev *omapdev = OMAP_DEV(dev);
-       struct omap_driver *omapdrv = OMAP_DRV(dev->driver);
-       int ret = 0;
-
-       if (omapdrv && omapdrv->remove)
-               ret = omapdrv->remove(omapdev);
-       return ret;
-}
-
-int omap_device_register(struct omap_dev *odev)
-{
-       if (!odev)
-               return -EINVAL;
-
-       if (odev->busid < 0 || odev->busid >= OMAP_NR_BUSES) {
-               printk(KERN_ERR "%s: busid invalid: %s: bus: %i\n",
-                      __FUNCTION__, odev->name, odev->busid);
-               return -EINVAL;
-       }
-
-       odev->dev.parent = &omap_bus_devices[odev->busid];
-       odev->dev.bus = &omap_bus_types[odev->busid];
-
-       /* This is needed for USB OHCI to work */
-       if (odev->dma_mask)
-               odev->dev.dma_mask = odev->dma_mask;
-
-       if (odev->coherent_dma_mask)
-               odev->dev.coherent_dma_mask = odev->coherent_dma_mask;
-
-       snprintf(odev->dev.bus_id, BUS_ID_SIZE, "%s%u",
-                odev->name, odev->devid);
-
-       printk("Registering OMAP device '%s'. Parent at %s\n",
-                odev->dev.bus_id, odev->dev.parent->bus_id);
-
-       return device_register(&odev->dev);
-}
-
-void omap_device_unregister(struct omap_dev *odev)
-{
-       if (odev)
-               device_unregister(&odev->dev);
-}
-
-int omap_driver_register(struct omap_driver *driver)
-{
-       int ret;
-
-       if (driver->busid < 0 || driver->busid >= OMAP_NR_BUSES) {
-               printk(KERN_ERR "%s: busid invalid: bus: %i device: %i\n",
-                      __FUNCTION__, driver->busid, driver->devid);
-               return -EINVAL;
-       }
-
-       driver->drv.probe = omap_device_probe;
-       driver->drv.remove = omap_device_remove;
-       driver->drv.bus = &omap_bus_types[driver->busid];
-
-       /*
-        * driver_register calls bus_add_driver
-        */
-       ret = driver_register(&driver->drv);
-
-       return ret;
-}
-
-void omap_driver_unregister(struct omap_driver *driver)
-{
-       driver_unregister(&driver->drv);
-}
-
-static int __init omap_bus_init(void)
-{
-       int i, ret;
-
-       /* Initialize all OMAP virtual buses */
-       for (i = 0; i < OMAP_NR_BUSES; i++) {
-               ret = device_register(&omap_bus_devices[i]);
-               if (ret != 0) {
-                       printk(KERN_ERR "Unable to register bus device %s\n",
-                              omap_bus_devices[i].bus_id);
-                       continue;
-               }
-               ret = bus_register(&omap_bus_types[i]);
-               if (ret != 0) {
-                       printk(KERN_ERR "Unable to register bus %s\n",
-                              omap_bus_types[i].name);
-                       device_unregister(&omap_bus_devices[i]);
-               }
-       }
-       printk("OMAP virtual buses initialized\n");
-
-       return ret;
-}
-
-static void __exit omap_bus_exit(void)
-{
-       int i;
-
-       /* Unregister all OMAP virtual buses */
-       for (i = 0; i < OMAP_NR_BUSES; i++) {
-               bus_unregister(&omap_bus_types[i]);
-               device_unregister(&omap_bus_devices[i]);
-       }
-}
-
-postcore_initcall(omap_bus_init);
-module_exit(omap_bus_exit);
-
-MODULE_DESCRIPTION("Virtual bus for OMAP");
-MODULE_LICENSE("GPL");
-
-EXPORT_SYMBOL(omap_bus_types);
-EXPORT_SYMBOL(omap_driver_register);
-EXPORT_SYMBOL(omap_driver_unregister);
-EXPORT_SYMBOL(omap_device_register);
-EXPORT_SYMBOL(omap_device_unregister);
-
diff --git a/arch/arm/mach-omap/leds-perseus2.c b/arch/arm/mach-omap/leds-perseus2.c
deleted file mode 100644 (file)
index 8dafc0d..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * linux/arch/arm/mach-omap/leds-perseus2.c
- *
- * Copyright 2003 by Texas Instruments Incorporated
- *
- */
-#include <linux/config.h>
-#include <linux/init.h>
-#include <linux/kernel_stat.h>
-#include <linux/sched.h>
-#include <linux/version.h>
-
-#include <asm/io.h>
-#include <asm/hardware.h>
-#include <asm/leds.h>
-#include <asm/system.h>
-
-#include "leds.h"
-
-void perseus2_leds_event(led_event_t evt)
-{
-       unsigned long flags;
-       static unsigned long hw_led_state = 0;
-
-       local_irq_save(flags);
-
-       switch (evt) {
-       case led_start:
-               hw_led_state |= OMAP730_FPGA_LED_STARTSTOP;
-               break;
-
-       case led_stop:
-               hw_led_state &= ~OMAP730_FPGA_LED_STARTSTOP;
-               break;
-
-       case led_claim:
-               hw_led_state |= OMAP730_FPGA_LED_CLAIMRELEASE;
-               break;
-
-       case led_release:
-               hw_led_state &= ~OMAP730_FPGA_LED_CLAIMRELEASE;
-               break;
-
-#ifdef CONFIG_LEDS_TIMER
-       case led_timer:
-               /*
-                * Toggle Timer LED
-                */
-               if (hw_led_state & OMAP730_FPGA_LED_TIMER)
-                       hw_led_state &= ~OMAP730_FPGA_LED_TIMER;
-               else
-                       hw_led_state |= OMAP730_FPGA_LED_TIMER;
-               break;
-#endif
-
-#ifdef CONFIG_LEDS_CPU
-       case led_idle_start:
-               hw_led_state |= OMAP730_FPGA_LED_IDLE;
-               break;
-
-       case led_idle_end:
-               hw_led_state &= ~OMAP730_FPGA_LED_IDLE;
-               break;
-#endif
-
-       case led_halted:
-               if (hw_led_state & OMAP730_FPGA_LED_HALTED)
-                       hw_led_state &= ~OMAP730_FPGA_LED_HALTED;
-               else
-                       hw_led_state |= OMAP730_FPGA_LED_HALTED;
-               break;
-
-       case led_green_on:
-               break;
-
-       case led_green_off:
-               break;
-
-       case led_amber_on:
-               break;
-
-       case led_amber_off:
-               break;
-
-       case led_red_on:
-               break;
-
-       case led_red_off:
-               break;
-
-       default:
-               break;
-       }
-
-
-       /*
-        *  Actually burn the LEDs
-        */
-       __raw_writew(~hw_led_state & 0xffff, OMAP730_FPGA_LEDS);
-
-       local_irq_restore(flags);
-}