Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6

Conflicts:

	drivers/net/tg3.c
	drivers/net/wireless/rt2x00/rt2x00dev.c
	net/mac80211/ieee80211_i.h
This commit is contained in:
David S. Miller
2008-06-10 02:22:26 -07:00
1080 changed files with 17167 additions and 9165 deletions
+1 -1
View File
@@ -52,8 +52,8 @@ series
# cscope files # cscope files
cscope.* cscope.*
ncscope.*
*.orig *.orig
*.rej
*~ *~
\#*# \#*#
@@ -14,6 +14,10 @@ MAJOR:MINOR
non-block filesystems which provide their own BDI, such as NFS non-block filesystems which provide their own BDI, such as NFS
and FUSE. and FUSE.
MAJOR:MINOR-fuseblk
Value of st_dev on fuseblk filesystems.
default default
The default backing dev, used for non-block device backed The default backing dev, used for non-block device backed
+25
View File
@@ -703,6 +703,31 @@
</sect1> </sect1>
</chapter> </chapter>
<chapter id="trylock-functions">
<title>The trylock Functions</title>
<para>
There are functions that try to acquire a lock only once and immediately
return a value telling about success or failure to acquire the lock.
They can be used if you need no access to the data protected with the lock
when some other thread is holding the lock. You should acquire the lock
later if you then need access to the data protected with the lock.
</para>
<para>
<function>spin_trylock()</function> does not spin but returns non-zero if
it acquires the spinlock on the first try or 0 if not. This function can
be used in all contexts like <function>spin_lock</function>: you must have
disabled the contexts that might interrupt you and acquire the spin lock.
</para>
<para>
<function>mutex_trylock()</function> does not suspend your task
but returns non-zero if it could lock the mutex on the first try
or 0 if not. This function cannot be safely used in hardware or software
interrupt contexts despite not sleeping.
</para>
</chapter>
<chapter id="Examples"> <chapter id="Examples">
<title>Common Examples</title> <title>Common Examples</title>
<para> <para>
-8
View File
@@ -129,14 +129,6 @@ to its default value of '80' it means that between the checking
intervals the CPU needs to be on average more than 80% in use to then intervals the CPU needs to be on average more than 80% in use to then
decide that the CPU frequency needs to be increased. decide that the CPU frequency needs to be increased.
sampling_down_factor: this parameter controls the rate that the CPU
makes a decision on when to decrease the frequency. When set to its
default value of '5' it means that at 1/5 the sampling_rate the kernel
makes a decision to lower the frequency. Five "lower rate" decisions
have to be made in a row before the CPU frequency is actually lower.
If set to '1' then the frequency decreases as quickly as it increases,
if set to '2' it decreases at half the rate of the increase.
ignore_nice_load: this parameter takes a value of '0' or '1'. When ignore_nice_load: this parameter takes a value of '0' or '1'. When
set to '0' (its default), all processes are counted towards the set to '0' (its default), all processes are counted towards the
'cpu utilisation' value. When set to '1', the processes that are 'cpu utilisation' value. When set to '1', the processes that are
+37
View File
@@ -0,0 +1,37 @@
Kernel driver ibmaem
======================
Supported systems:
* Any recent IBM System X server with Active Energy Manager support.
This includes the x3350, x3550, x3650, x3655, x3755, x3850 M2,
x3950 M2, and certain HS2x/LS2x/QS2x blades. The IPMI host interface
driver ("ipmi-si") needs to be loaded for this driver to do anything.
Prefix: 'ibmaem'
Datasheet: Not available
Author: Darrick J. Wong
Description
-----------
This driver implements sensor reading support for the energy and power
meters available on various IBM System X hardware through the BMC. All
sensor banks will be exported as platform devices; this driver can talk
to both v1 and v2 interfaces. This driver is completely separate from the
older ibmpex driver.
The v1 AEM interface has a simple set of features to monitor energy use.
There is a register that displays an estimate of raw energy consumption
since the last BMC reset, and a power sensor that returns average power
use over a configurable interval.
The v2 AEM interface is a bit more sophisticated, being able to present
a wider range of energy and power use registers, the power cap as
set by the AEM software, and temperature sensors.
Special Features
----------------
The "power_cap" value displays the current system power cap, as set by
the Active Energy Manager software. Setting the power cap from the host
is not currently supported.
+6 -3
View File
@@ -398,9 +398,6 @@ and is between 256 and 4096 characters. It is defined in the file
cio_ignore= [S390] cio_ignore= [S390]
See Documentation/s390/CommonIO for details. See Documentation/s390/CommonIO for details.
cio_msg= [S390]
See Documentation/s390/CommonIO for details.
clock= [BUGS=X86-32, HW] gettimeofday clocksource override. clock= [BUGS=X86-32, HW] gettimeofday clocksource override.
[Deprecated] [Deprecated]
Forces specified clocksource (if available) to be used Forces specified clocksource (if available) to be used
@@ -689,6 +686,12 @@ and is between 256 and 4096 characters. It is defined in the file
floppy= [HW] floppy= [HW]
See Documentation/floppy.txt. See Documentation/floppy.txt.
force_pal_cache_flush
[IA-64] Avoid check_sal_cache_flush which may hang on
buggy SAL_CACHE_FLUSH implementations. Using this
parameter will force ia64_sal_cache_flush to call
ia64_pal_cache_flush instead of SAL_CACHE_FLUSH.
gamecon.map[2|3]= gamecon.map[2|3]=
[HW,JOY] Multisystem joystick and NES/SNES/PSX pad [HW,JOY] Multisystem joystick and NES/SNES/PSX pad
support via parallel port (up to 5 devices per port) support via parallel port (up to 5 devices per port)
+10 -2
View File
@@ -157,6 +157,9 @@ struct virtqueue
/* The routine to call when the Guest pings us. */ /* The routine to call when the Guest pings us. */
void (*handle_output)(int fd, struct virtqueue *me); void (*handle_output)(int fd, struct virtqueue *me);
/* Outstanding buffers */
unsigned int inflight;
}; };
/* Remember the arguments to the program so we can "reboot" */ /* Remember the arguments to the program so we can "reboot" */
@@ -702,6 +705,7 @@ static unsigned get_vq_desc(struct virtqueue *vq,
errx(1, "Looped descriptor"); errx(1, "Looped descriptor");
} while ((i = next_desc(vq, i)) != vq->vring.num); } while ((i = next_desc(vq, i)) != vq->vring.num);
vq->inflight++;
return head; return head;
} }
@@ -719,6 +723,7 @@ static void add_used(struct virtqueue *vq, unsigned int head, int len)
/* Make sure buffer is written before we update index. */ /* Make sure buffer is written before we update index. */
wmb(); wmb();
vq->vring.used->idx++; vq->vring.used->idx++;
vq->inflight--;
} }
/* This actually sends the interrupt for this virtqueue */ /* This actually sends the interrupt for this virtqueue */
@@ -726,8 +731,9 @@ static void trigger_irq(int fd, struct virtqueue *vq)
{ {
unsigned long buf[] = { LHREQ_IRQ, vq->config.irq }; unsigned long buf[] = { LHREQ_IRQ, vq->config.irq };
/* If they don't want an interrupt, don't send one. */ /* If they don't want an interrupt, don't send one, unless empty. */
if (vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT) if ((vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)
&& vq->inflight)
return; return;
/* Send the Guest an interrupt tell them we used something up. */ /* Send the Guest an interrupt tell them we used something up. */
@@ -1107,6 +1113,7 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
vq->next = NULL; vq->next = NULL;
vq->last_avail_idx = 0; vq->last_avail_idx = 0;
vq->dev = dev; vq->dev = dev;
vq->inflight = 0;
/* Initialize the configuration. */ /* Initialize the configuration. */
vq->config.num = num_descs; vq->config.num = num_descs;
@@ -1368,6 +1375,7 @@ static void setup_tun_net(const char *arg)
/* Tell Guest what MAC address to use. */ /* Tell Guest what MAC address to use. */
add_feature(dev, VIRTIO_NET_F_MAC); add_feature(dev, VIRTIO_NET_F_MAC);
add_feature(dev, VIRTIO_F_NOTIFY_ON_EMPTY);
set_config(dev, sizeof(conf), &conf); set_config(dev, sizeof(conf), &conf);
/* We don't need the socket any more; setup is done. */ /* We don't need the socket any more; setup is done. */
+1 -1
View File
@@ -1,6 +1,6 @@
In order to use the Ethernet bridging functionality, you'll need the In order to use the Ethernet bridging functionality, you'll need the
userspace tools. These programs and documentation are available userspace tools. These programs and documentation are available
at http://bridge.sourceforge.net. The download page is at http://www.linux-foundation.org/en/Net:Bridge. The download page is
http://prdownloads.sourceforge.net/bridge. http://prdownloads.sourceforge.net/bridge.
If you still have questions, don't hesitate to post to the mailing list If you still have questions, don't hesitate to post to the mailing list
+1 -2
View File
@@ -96,5 +96,4 @@ missing-syscalls: scripts/checksyscalls.sh FORCE
$(call cmd,syscalls) $(call cmd,syscalls)
# Delete all targets during make clean # Delete all targets during make clean
clean-files := $(addprefix $(objtree)/,$(targets)) clean-files := $(addprefix $(objtree)/,$(filter-out $(bounds-file) $(offsets-file),$(targets)))
+101 -56
View File
@@ -982,13 +982,6 @@ L: bonding-devel@lists.sourceforge.net
W: http://sourceforge.net/projects/bonding/ W: http://sourceforge.net/projects/bonding/
S: Supported S: Supported
BROADBAND PROCESSOR ARCHITECTURE
P: Arnd Bergmann
M: arnd@arndb.de
L: linuxppc-dev@ozlabs.org
W: http://www.penguinppc.org/ppc64/
S: Supported
BROADCOM B44 10/100 ETHERNET DRIVER BROADCOM B44 10/100 ETHERNET DRIVER
P: Gary Zambrano P: Gary Zambrano
M: zambrano@broadcom.com M: zambrano@broadcom.com
@@ -1052,6 +1045,14 @@ L: linux-kernel@vger.kernel.org
L: discuss@x86-64.org L: discuss@x86-64.org
S: Maintained S: Maintained
CELL BROADBAND ENGINE ARCHITECTURE
P: Arnd Bergmann
M: arnd@arndb.de
L: linuxppc-dev@ozlabs.org
L: cbe-oss-dev@ozlabs.org
W: http://www.ibm.com/developerworks/power/cell/
S: Supported
CFAG12864B LCD DRIVER CFAG12864B LCD DRIVER
P: Miguel Ojeda Sandonis P: Miguel Ojeda Sandonis
M: maxextreme@gmail.com M: maxextreme@gmail.com
@@ -1239,6 +1240,20 @@ L: video4linux-list@redhat.com
W: http://linuxtv.org W: http://linuxtv.org
S: Maintained S: Maintained
CXGB3 ETHERNET DRIVER (CXGB3)
P: Divy Le Ray
M: divy@chelsio.com
L: netdev@vger.kernel.org
W: http://www.chelsio.com
S: Supported
CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
P: Steve Wise
M: swise@chelsio.com
L: general@lists.openfabrics.org
W: http://www.openfabrics.org
S: Supported
CYBERPRO FB DRIVER CYBERPRO FB DRIVER
P: Russell King P: Russell King
M: rmk@arm.linux.org.uk M: rmk@arm.linux.org.uk
@@ -1596,7 +1611,7 @@ ETHERNET BRIDGE
P: Stephen Hemminger P: Stephen Hemminger
M: shemminger@linux-foundation.org M: shemminger@linux-foundation.org
L: bridge@lists.linux-foundation.org L: bridge@lists.linux-foundation.org
W: http://bridge.sourceforge.net/ W: http://www.linux-foundation.org/en/Net:Bridge
S: Maintained S: Maintained
ETHERTEAM 16I DRIVER ETHERTEAM 16I DRIVER
@@ -1645,8 +1660,10 @@ W: http://linux-fbdev.sourceforge.net/
S: Maintained S: Maintained
FREESCALE DMA DRIVER FREESCALE DMA DRIVER
P; Zhang Wei P: Li Yang
M: wei.zhang@freescale.com M: leoli@freescale.com
P: Zhang Wei
M: zw@zh-kernel.org
L: linuxppc-embedded@ozlabs.org L: linuxppc-embedded@ozlabs.org
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
@@ -1940,8 +1957,10 @@ L: lm-sensors@lm-sensors.org
S: Maintained S: Maintained
I2C SUBSYSTEM I2C SUBSYSTEM
P: Jean Delvare P: Jean Delvare (PC drivers, core)
M: khali@linux-fr.org M: khali@linux-fr.org
P: Ben Dooks (embedded platforms)
M: ben-linux@fluff.org
L: i2c@lm-sensors.org L: i2c@lm-sensors.org
T: quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-i2c/ T: quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-i2c/
S: Maintained S: Maintained
@@ -2327,7 +2346,8 @@ S: Maintained
KERNEL BUILD (kbuild: Makefile, scripts/Makefile.*) KERNEL BUILD (kbuild: Makefile, scripts/Makefile.*)
P: Sam Ravnborg P: Sam Ravnborg
M: sam@ravnborg.org M: sam@ravnborg.org
T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-next.git
T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-fixes.git
L: linux-kbuild@vger.kernel.org L: linux-kbuild@vger.kernel.org
S: Maintained S: Maintained
@@ -2349,24 +2369,24 @@ S: Supported
KERNEL VIRTUAL MACHINE (KVM) KERNEL VIRTUAL MACHINE (KVM)
P: Avi Kivity P: Avi Kivity
M: avi@qumranet.com M: avi@qumranet.com
L: kvm-devel@lists.sourceforge.net L: kvm@vger.kernel.org
W: kvm.sourceforge.net W: http://kvm.qumranet.com
S: Supported S: Supported
KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
P: Hollis Blanchard P: Hollis Blanchard
M: hollisb@us.ibm.com M: hollisb@us.ibm.com
L: kvm-ppc-devel@lists.sourceforge.net L: kvm-ppc@vger.kernel.org
W: kvm.sourceforge.net W: http://kvm.qumranet.com
S: Supported S: Supported
KERNEL VIRTUAL MACHINE For Itanium(KVM/IA64) KERNEL VIRTUAL MACHINE For Itanium (KVM/IA64)
P: Anthony Xu P: Anthony Xu
M: anthony.xu@intel.com M: anthony.xu@intel.com
P: Xiantao Zhang P: Xiantao Zhang
M: xiantao.zhang@intel.com M: xiantao.zhang@intel.com
L: kvm-ia64-devel@lists.sourceforge.net L: kvm-ia64@vger.kernel.org
W: kvm.sourceforge.net W: http://kvm.qumranet.com
S: Supported S: Supported
KERNEL VIRTUAL MACHINE for s390 (KVM/s390) KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
@@ -2817,6 +2837,15 @@ M: jirislaby@gmail.com
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE)
P: Andrew Gallatin
M: gallatin@myri.com
P: Brice Goglin
M: brice@myri.com
L: netdev@vger.kernel.org
W: http://www.myri.com/scs/download-Myri10GE.html
S: Supported
NATSEMI ETHERNET DRIVER (DP8381x) NATSEMI ETHERNET DRIVER (DP8381x)
P: Tim Hockin P: Tim Hockin
M: thockin@hockin.org M: thockin@hockin.org
@@ -3130,7 +3159,7 @@ PCI ERROR RECOVERY
P: Linas Vepstas P: Linas Vepstas
M: linas@austin.ibm.com M: linas@austin.ibm.com
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
L: linux-pci@atrey.karlin.mff.cuni.cz L: linux-pci@vger.kernel.org
S: Supported S: Supported
PCI SUBSYSTEM PCI SUBSYSTEM
@@ -3764,6 +3793,14 @@ M: dbrownell@users.sourceforge.net
L: spi-devel-general@lists.sourceforge.net L: spi-devel-general@lists.sourceforge.net
S: Maintained S: Maintained
SPU FILE SYSTEM
P: Jeremy Kerr
M: jk@ozlabs.org
L: linuxppc-dev@ozlabs.org
L: cbe-oss-dev@ozlabs.org
W: http://www.ibm.com/developerworks/power/cell/
S: Supported
STABLE BRANCH: STABLE BRANCH:
P: Greg Kroah-Hartman P: Greg Kroah-Hartman
M: greg@kroah.com M: greg@kroah.com
@@ -4019,12 +4056,41 @@ M: ballabio_dario@emc.com
L: linux-scsi@vger.kernel.org L: linux-scsi@vger.kernel.org
S: Maintained S: Maintained
UCLINUX (AND M68KNOMMU)
P: Greg Ungerer
M: gerg@uclinux.org
W: http://www.uclinux.org/
L: uclinux-dev@uclinux.org (subscribers-only)
S: Maintained
UCLINUX FOR NEC V850
P: Miles Bader
UCLINUX FOR RENESAS H8/300
P: Yoshinori Sato
M: ysato@users.sourceforge.jp
W: http://uclinux-h8.sourceforge.jp/
S: Supported
UDF FILESYSTEM UDF FILESYSTEM
P: Jan Kara P: Jan Kara
M: jack@suse.cz M: jack@suse.cz
W: http://linux-udf.sourceforge.net W: http://linux-udf.sourceforge.net
S: Maintained S: Maintained
UFS FILESYSTEM
P: Evgeniy Dushistov
M: dushistov@mail.ru
L: linux-kernel@vger.kernel.org
S: Maintained
UltraSPARC (sparc64):
P: David S. Miller
M: davem@davemloft.net
L: sparclinux@vger.kernel.org
T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
S: Maintained
UNIFORM CDROM DRIVER UNIFORM CDROM DRIVER
P: Jens Axboe P: Jens Axboe
M: axboe@kernel.dk M: axboe@kernel.dk
@@ -4071,6 +4137,13 @@ L: netdev@vger.kernel.org
W: http://www.linux-usb.org/usbnet W: http://www.linux-usb.org/usbnet
S: Maintained S: Maintained
USB DIAMOND RIO500 DRIVER
P: Cesar Miquel
M: miquel@df.uba.ar
L: rio500-users@lists.sourceforge.net
W: http://rio500.sourceforge.net
S: Maintained
USB EHCI DRIVER USB EHCI DRIVER
P: David Brownell P: David Brownell
M: dbrownell@users.sourceforge.net M: dbrownell@users.sourceforge.net
@@ -4302,6 +4375,14 @@ M: gregkh@suse.de
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
UTIL-LINUX-NG PACKAGE
P: Karel Zak
M: kzak@redhat.com
L: util-linux-ng@vger.kernel.org
W: http://kernel.org/~kzak/util-linux-ng/
T: git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git
S: Maintained
VFAT/FAT/MSDOS FILESYSTEM: VFAT/FAT/MSDOS FILESYSTEM:
P: OGAWA Hirofumi P: OGAWA Hirofumi
M: hirofumi@mail.parknet.co.jp M: hirofumi@mail.parknet.co.jp
@@ -4325,42 +4406,6 @@ M: romieu@fr.zoreil.com
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
S: Maintained S: Maintained
UCLINUX (AND M68KNOMMU)
P: Greg Ungerer
M: gerg@uclinux.org
W: http://www.uclinux.org/
L: uclinux-dev@uclinux.org (subscribers-only)
S: Maintained
UCLINUX FOR NEC V850
P: Miles Bader
UCLINUX FOR RENESAS H8/300
P: Yoshinori Sato
M: ysato@users.sourceforge.jp
W: http://uclinux-h8.sourceforge.jp/
S: Supported
UFS FILESYSTEM
P: Evgeniy Dushistov
M: dushistov@mail.ru
L: linux-kernel@vger.kernel.org
S: Maintained
UltraSPARC (sparc64):
P: David S. Miller
M: davem@davemloft.net
L: sparclinux@vger.kernel.org
T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git
S: Maintained
USB DIAMOND RIO500 DRIVER
P: Cesar Miquel
M: miquel@df.uba.ar
L: rio500-users@lists.sourceforge.net
W: http://rio500.sourceforge.net
S: Maintained
VIDEO FOR LINUX VIDEO FOR LINUX
P: Mauro Carvalho Chehab P: Mauro Carvalho Chehab
M: mchehab@infradead.org M: mchehab@infradead.org
+3 -2
View File
@@ -1,7 +1,7 @@
VERSION = 2 VERSION = 2
PATCHLEVEL = 6 PATCHLEVEL = 6
SUBLEVEL = 26 SUBLEVEL = 26
EXTRAVERSION = -rc2 EXTRAVERSION = -rc4
NAME = Funky Weasel is Jiggy wit it NAME = Funky Weasel is Jiggy wit it
# *DOCUMENTATION* # *DOCUMENTATION*
@@ -1114,6 +1114,7 @@ MRPROPER_DIRS += include/config include2 usr/include
MRPROPER_FILES += .config .config.old include/asm .version .old_version \ MRPROPER_FILES += .config .config.old include/asm .version .old_version \
include/linux/autoconf.h include/linux/version.h \ include/linux/autoconf.h include/linux/version.h \
include/linux/utsrelease.h \ include/linux/utsrelease.h \
include/linux/bounds.h include/asm*/asm-offsets.h \
Module.symvers tags TAGS cscope* Module.symvers tags TAGS cscope*
# clean - Delete most, but leave enough to build external modules # clean - Delete most, but leave enough to build external modules
@@ -1431,7 +1432,7 @@ define xtags
elif $1 --version 2>&1 | grep -iq emacs; then \ elif $1 --version 2>&1 | grep -iq emacs; then \
$(all-sources) | xargs $1 -a; \ $(all-sources) | xargs $1 -a; \
$(all-kconfigs) | xargs $1 -a \ $(all-kconfigs) | xargs $1 -a \
--regex='/^[ \t]*(menu|)config[ \t]+\([a-zA-Z0-9_]+\)/\2/'; \ --regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'; \
$(all-defconfigs) | xargs -r $1 -a \ $(all-defconfigs) | xargs -r $1 -a \
--regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \ --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \
else \ else \
-1
View File
@@ -9,7 +9,6 @@
static struct fs_struct init_fs = INIT_FS; static struct fs_struct init_fs = INIT_FS;
static struct files_struct init_files = INIT_FILES;
static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
struct mm_struct init_mm = INIT_MM(init_mm); struct mm_struct init_mm = INIT_MM(init_mm);
+48 -18
View File
@@ -321,11 +321,42 @@ static void locomo_gpio_unmask_irq(unsigned int irq)
locomo_writel(r, mapbase + LOCOMO_GIE); locomo_writel(r, mapbase + LOCOMO_GIE);
} }
static int GPIO_IRQ_rising_edge;
static int GPIO_IRQ_falling_edge;
static int locomo_gpio_type(unsigned int irq, unsigned int type)
{
unsigned int mask;
void __iomem *mapbase = get_irq_chip_data(irq);
mask = 1 << (irq - LOCOMO_IRQ_GPIO_START);
if (type == IRQT_PROBE) {
if ((GPIO_IRQ_rising_edge | GPIO_IRQ_falling_edge) & mask)
return 0;
type = __IRQT_RISEDGE | __IRQT_FALEDGE;
}
if (type & __IRQT_RISEDGE)
GPIO_IRQ_rising_edge |= mask;
else
GPIO_IRQ_rising_edge &= ~mask;
if (type & __IRQT_FALEDGE)
GPIO_IRQ_falling_edge |= mask;
else
GPIO_IRQ_falling_edge &= ~mask;
locomo_writel(GPIO_IRQ_rising_edge, mapbase + LOCOMO_GRIE);
locomo_writel(GPIO_IRQ_falling_edge, mapbase + LOCOMO_GFIE);
return 0;
}
static struct irq_chip locomo_gpio_chip = { static struct irq_chip locomo_gpio_chip = {
.name = "LOCOMO-gpio", .name = "LOCOMO-gpio",
.ack = locomo_gpio_ack_irq, .ack = locomo_gpio_ack_irq,
.mask = locomo_gpio_mask_irq, .mask = locomo_gpio_mask_irq,
.unmask = locomo_gpio_unmask_irq, .unmask = locomo_gpio_unmask_irq,
.set_type = locomo_gpio_type,
}; };
static void locomo_lt_handler(unsigned int irq, struct irq_desc *desc) static void locomo_lt_handler(unsigned int irq, struct irq_desc *desc)
@@ -450,22 +481,18 @@ static void locomo_setup_irq(struct locomo *lchip)
set_irq_chip(IRQ_LOCOMO_KEY_BASE, &locomo_chip); set_irq_chip(IRQ_LOCOMO_KEY_BASE, &locomo_chip);
set_irq_chip_data(IRQ_LOCOMO_KEY_BASE, irqbase); set_irq_chip_data(IRQ_LOCOMO_KEY_BASE, irqbase);
set_irq_chained_handler(IRQ_LOCOMO_KEY_BASE, locomo_key_handler); set_irq_chained_handler(IRQ_LOCOMO_KEY_BASE, locomo_key_handler);
set_irq_flags(IRQ_LOCOMO_KEY_BASE, IRQF_VALID | IRQF_PROBE);
set_irq_chip(IRQ_LOCOMO_GPIO_BASE, &locomo_chip); set_irq_chip(IRQ_LOCOMO_GPIO_BASE, &locomo_chip);
set_irq_chip_data(IRQ_LOCOMO_GPIO_BASE, irqbase); set_irq_chip_data(IRQ_LOCOMO_GPIO_BASE, irqbase);
set_irq_chained_handler(IRQ_LOCOMO_GPIO_BASE, locomo_gpio_handler); set_irq_chained_handler(IRQ_LOCOMO_GPIO_BASE, locomo_gpio_handler);
set_irq_flags(IRQ_LOCOMO_GPIO_BASE, IRQF_VALID | IRQF_PROBE);
set_irq_chip(IRQ_LOCOMO_LT_BASE, &locomo_chip); set_irq_chip(IRQ_LOCOMO_LT_BASE, &locomo_chip);
set_irq_chip_data(IRQ_LOCOMO_LT_BASE, irqbase); set_irq_chip_data(IRQ_LOCOMO_LT_BASE, irqbase);
set_irq_chained_handler(IRQ_LOCOMO_LT_BASE, locomo_lt_handler); set_irq_chained_handler(IRQ_LOCOMO_LT_BASE, locomo_lt_handler);
set_irq_flags(IRQ_LOCOMO_LT_BASE, IRQF_VALID | IRQF_PROBE);
set_irq_chip(IRQ_LOCOMO_SPI_BASE, &locomo_chip); set_irq_chip(IRQ_LOCOMO_SPI_BASE, &locomo_chip);
set_irq_chip_data(IRQ_LOCOMO_SPI_BASE, irqbase); set_irq_chip_data(IRQ_LOCOMO_SPI_BASE, irqbase);
set_irq_chained_handler(IRQ_LOCOMO_SPI_BASE, locomo_spi_handler); set_irq_chained_handler(IRQ_LOCOMO_SPI_BASE, locomo_spi_handler);
set_irq_flags(IRQ_LOCOMO_SPI_BASE, IRQF_VALID | IRQF_PROBE);
/* install handlers for IRQ_LOCOMO_KEY_BASE generated interrupts */ /* install handlers for IRQ_LOCOMO_KEY_BASE generated interrupts */
set_irq_chip(LOCOMO_IRQ_KEY_START, &locomo_key_chip); set_irq_chip(LOCOMO_IRQ_KEY_START, &locomo_key_chip);
@@ -488,7 +515,7 @@ static void locomo_setup_irq(struct locomo *lchip)
set_irq_flags(LOCOMO_IRQ_LT_START, IRQF_VALID | IRQF_PROBE); set_irq_flags(LOCOMO_IRQ_LT_START, IRQF_VALID | IRQF_PROBE);
/* install handlers for IRQ_LOCOMO_SPI_BASE generated interrupts */ /* install handlers for IRQ_LOCOMO_SPI_BASE generated interrupts */
for (irq = LOCOMO_IRQ_SPI_START; irq < LOCOMO_IRQ_SPI_START + 3; irq++) { for (irq = LOCOMO_IRQ_SPI_START; irq < LOCOMO_IRQ_SPI_START + 4; irq++) {
set_irq_chip(irq, &locomo_spi_chip); set_irq_chip(irq, &locomo_spi_chip);
set_irq_chip_data(irq, irqbase); set_irq_chip_data(irq, irqbase);
set_irq_handler(irq, handle_edge_irq); set_irq_handler(irq, handle_edge_irq);
@@ -574,20 +601,20 @@ static int locomo_suspend(struct platform_device *dev, pm_message_t state)
save->LCM_GPO = locomo_readl(lchip->base + LOCOMO_GPO); /* GPIO */ save->LCM_GPO = locomo_readl(lchip->base + LOCOMO_GPO); /* GPIO */
locomo_writel(0x00, lchip->base + LOCOMO_GPO); locomo_writel(0x00, lchip->base + LOCOMO_GPO);
save->LCM_SPICT = locomo_readl(lchip->base + LOCOMO_SPICT); /* SPI */ save->LCM_SPICT = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT); /* SPI */
locomo_writel(0x40, lchip->base + LOCOMO_SPICT); locomo_writel(0x40, lchip->base + LOCOMO_SPICT);
save->LCM_GPE = locomo_readl(lchip->base + LOCOMO_GPE); /* GPIO */ save->LCM_GPE = locomo_readl(lchip->base + LOCOMO_GPE); /* GPIO */
locomo_writel(0x00, lchip->base + LOCOMO_GPE); locomo_writel(0x00, lchip->base + LOCOMO_GPE);
save->LCM_ASD = locomo_readl(lchip->base + LOCOMO_ASD); /* ADSTART */ save->LCM_ASD = locomo_readl(lchip->base + LOCOMO_ASD); /* ADSTART */
locomo_writel(0x00, lchip->base + LOCOMO_ASD); locomo_writel(0x00, lchip->base + LOCOMO_ASD);
save->LCM_SPIMD = locomo_readl(lchip->base + LOCOMO_SPIMD); /* SPI */ save->LCM_SPIMD = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPIMD); /* SPI */
locomo_writel(0x3C14, lchip->base + LOCOMO_SPIMD); locomo_writel(0x3C14, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);
locomo_writel(0x00, lchip->base + LOCOMO_PAIF); locomo_writel(0x00, lchip->base + LOCOMO_PAIF);
locomo_writel(0x00, lchip->base + LOCOMO_DAC); locomo_writel(0x00, lchip->base + LOCOMO_DAC);
locomo_writel(0x00, lchip->base + LOCOMO_BACKLIGHT + LOCOMO_TC); locomo_writel(0x00, lchip->base + LOCOMO_BACKLIGHT + LOCOMO_TC);
if ( (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT0) & 0x88) && (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT1) & 0x88) ) if ((locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT0) & 0x88) && (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT1) & 0x88))
locomo_writel(0x00, lchip->base + LOCOMO_C32K); /* CLK32 off */ locomo_writel(0x00, lchip->base + LOCOMO_C32K); /* CLK32 off */
else else
/* 18MHz already enabled, so no wait */ /* 18MHz already enabled, so no wait */
@@ -616,10 +643,10 @@ static int locomo_resume(struct platform_device *dev)
spin_lock_irqsave(&lchip->lock, flags); spin_lock_irqsave(&lchip->lock, flags);
locomo_writel(save->LCM_GPO, lchip->base + LOCOMO_GPO); locomo_writel(save->LCM_GPO, lchip->base + LOCOMO_GPO);
locomo_writel(save->LCM_SPICT, lchip->base + LOCOMO_SPICT); locomo_writel(save->LCM_SPICT, lchip->base + LOCOMO_SPI + LOCOMO_SPICT);
locomo_writel(save->LCM_GPE, lchip->base + LOCOMO_GPE); locomo_writel(save->LCM_GPE, lchip->base + LOCOMO_GPE);
locomo_writel(save->LCM_ASD, lchip->base + LOCOMO_ASD); locomo_writel(save->LCM_ASD, lchip->base + LOCOMO_ASD);
locomo_writel(save->LCM_SPIMD, lchip->base + LOCOMO_SPIMD); locomo_writel(save->LCM_SPIMD, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD);
locomo_writel(0x00, lchip->base + LOCOMO_C32K); locomo_writel(0x00, lchip->base + LOCOMO_C32K);
locomo_writel(0x90, lchip->base + LOCOMO_TADC); locomo_writel(0x90, lchip->base + LOCOMO_TADC);
@@ -688,9 +715,9 @@ __locomo_probe(struct device *me, struct resource *mem, int irq)
/* GPIO */ /* GPIO */
locomo_writel(0, lchip->base + LOCOMO_GPO); locomo_writel(0, lchip->base + LOCOMO_GPO);
locomo_writel( (LOCOMO_GPIO(2) | LOCOMO_GPIO(3) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14)) locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
, lchip->base + LOCOMO_GPE); , lchip->base + LOCOMO_GPE);
locomo_writel( (LOCOMO_GPIO(2) | LOCOMO_GPIO(3) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14)) locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14))
, lchip->base + LOCOMO_GPD); , lchip->base + LOCOMO_GPD);
locomo_writel(0, lchip->base + LOCOMO_GIE); locomo_writel(0, lchip->base + LOCOMO_GIE);
@@ -833,7 +860,10 @@ void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir
spin_lock_irqsave(&lchip->lock, flags); spin_lock_irqsave(&lchip->lock, flags);
r = locomo_readl(lchip->base + LOCOMO_GPD); r = locomo_readl(lchip->base + LOCOMO_GPD);
r &= ~bits; if (dir)
r |= bits;
else
r &= ~bits;
locomo_writel(r, lchip->base + LOCOMO_GPD); locomo_writel(r, lchip->base + LOCOMO_GPD);
r = locomo_readl(lchip->base + LOCOMO_GPE); r = locomo_readl(lchip->base + LOCOMO_GPE);
+2
View File
@@ -179,3 +179,5 @@ EXPORT_SYMBOL(_find_next_zero_bit_be);
EXPORT_SYMBOL(_find_first_bit_be); EXPORT_SYMBOL(_find_first_bit_be);
EXPORT_SYMBOL(_find_next_bit_be); EXPORT_SYMBOL(_find_next_bit_be);
#endif #endif
EXPORT_SYMBOL(copy_page);
+2
View File
@@ -90,3 +90,5 @@ static void __exit arthur_exit(void)
module_init(arthur_init); module_init(arthur_init);
module_exit(arthur_exit); module_exit(arthur_exit);
MODULE_LICENSE("GPL");
-1
View File
@@ -13,7 +13,6 @@
#include <asm/pgtable.h> #include <asm/pgtable.h>
static struct fs_struct init_fs = INIT_FS; static struct fs_struct init_fs = INIT_FS;
static struct files_struct init_files = INIT_FILES;
static struct signal_struct init_signals = INIT_SIGNALS(init_signals); static struct signal_struct init_signals = INIT_SIGNALS(init_signals);
static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand);
struct mm_struct init_mm = INIT_MM(init_mm); struct mm_struct init_mm = INIT_MM(init_mm);
+17 -1
View File
@@ -16,16 +16,32 @@
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/arch/at91x40.h> #include <asm/arch/at91x40.h>
#include <asm/arch/at91_st.h> #include <asm/arch/at91_st.h>
#include <asm/arch/timex.h>
#include "generic.h" #include "generic.h"
/* /*
* This is used in the gpio code, stub locally. * Export the clock functions for the AT91X40. Some external code common
* to all AT91 family parts relys on this, like the gpio and serial support.
*/ */
int clk_enable(struct clk *clk) int clk_enable(struct clk *clk)
{ {
return 0; return 0;
} }
void clk_disable(struct clk *clk)
{
}
unsigned long clk_get_rate(struct clk *clk)
{
return AT91X40_MASTER_CLOCK;
}
struct clk *clk_get(struct device *dev, const char *id)
{
return NULL;
}
void __init at91x40_initialize(unsigned long main_clock) void __init at91x40_initialize(unsigned long main_clock)
{ {
at91_extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1) at91_extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1)
+2 -1
View File
@@ -369,7 +369,8 @@ static int impd1_probe(struct lm_device *dev)
lm_set_drvdata(dev, impd1); lm_set_drvdata(dev, impd1);
printk("IM-PD1 found at 0x%08lx\n", dev->resource.start); printk("IM-PD1 found at 0x%08lx\n",
(unsigned long)dev->resource.start);
for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) { for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) {
impd1->vcos[i].owner = THIS_MODULE, impd1->vcos[i].owner = THIS_MODULE,
+1 -1
View File
@@ -405,7 +405,6 @@ v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
addr, fsr, pc, instr, __raw_readl(SC_LBFADDR), __raw_readl(SC_LBFCODE) & 255, addr, fsr, pc, instr, __raw_readl(SC_LBFADDR), __raw_readl(SC_LBFCODE) & 255,
v3_readb(V3_LB_ISTAT)); v3_readb(V3_LB_ISTAT));
printk(KERN_DEBUG "%s", buf); printk(KERN_DEBUG "%s", buf);
printascii(buf);
#endif #endif
v3_writeb(V3_LB_ISTAT, 0); v3_writeb(V3_LB_ISTAT, 0);
@@ -447,6 +446,7 @@ static irqreturn_t v3_irq(int dummy, void *devid)
unsigned long pc = instruction_pointer(regs); unsigned long pc = instruction_pointer(regs);
unsigned long instr = *(unsigned long *)pc; unsigned long instr = *(unsigned long *)pc;
char buf[128]; char buf[128];
extern void printascii(const char *);
sprintf(buf, "V3 int %d: pc=0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x " sprintf(buf, "V3 int %d: pc=0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x "
"ISTAT=%02x\n", IRQ_AP_V3INT, pc, instr, "ISTAT=%02x\n", IRQ_AP_V3INT, pc, instr,
+1 -11
View File
@@ -24,7 +24,6 @@
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/tsc2102.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/apm-emulation.h> #include <linux/apm-emulation.h>
@@ -63,7 +62,7 @@ static const int palmte_keymap[] = {
KEY(1, 1, KEY_DOWN), KEY(1, 1, KEY_DOWN),
KEY(1, 2, KEY_UP), KEY(1, 2, KEY_UP),
KEY(1, 3, KEY_RIGHT), KEY(1, 3, KEY_RIGHT),
KEY(1, 4, KEY_CENTER), KEY(1, 4, KEY_ENTER),
0, 0,
}; };
@@ -315,14 +314,6 @@ static void palmte_get_power_status(struct apm_power_info *info, int *battery)
#define palmte_get_power_status NULL #define palmte_get_power_status NULL
#endif #endif
static struct tsc2102_config palmte_tsc2102_config = {
.use_internal = 0,
.monitor = TSC_BAT1 | TSC_AUX | TSC_TEMP,
.temp_at25c = { 2200, 2615 },
.apm_report = palmte_get_power_status,
.alsa_config = &palmte_alsa_config,
};
static struct omap_board_config_kernel palmte_config[] __initdata = { static struct omap_board_config_kernel palmte_config[] __initdata = {
{ OMAP_TAG_USB, &palmte_usb_config }, { OMAP_TAG_USB, &palmte_usb_config },
{ OMAP_TAG_MMC, &palmte_mmc_config }, { OMAP_TAG_MMC, &palmte_mmc_config },
@@ -336,7 +327,6 @@ static struct spi_board_info palmte_spi_info[] __initdata = {
.bus_num = 2, /* uWire (officially) */ .bus_num = 2, /* uWire (officially) */
.chip_select = 0, /* As opposed to 3 */ .chip_select = 0, /* As opposed to 3 */
.irq = OMAP_GPIO_IRQ(PALMTE_PINTDAV_GPIO), .irq = OMAP_GPIO_IRQ(PALMTE_PINTDAV_GPIO),
.platform_data = &palmte_tsc2102_config,
.max_speed_hz = 8000000, .max_speed_hz = 8000000,
}, },
}; };

Some files were not shown because too many files have changed in this diff Show More