Merge branch 'master' into for-2.6.33
This commit is contained in:
commit
5d13379a4d
561 changed files with 18461 additions and 14690 deletions
|
@ -232,7 +232,7 @@ your e-mail client so that it sends your patches untouched.
|
||||||
When sending patches to Linus, always follow step #7.
|
When sending patches to Linus, always follow step #7.
|
||||||
|
|
||||||
Large changes are not appropriate for mailing lists, and some
|
Large changes are not appropriate for mailing lists, and some
|
||||||
maintainers. If your patch, uncompressed, exceeds 40 kB in size,
|
maintainers. If your patch, uncompressed, exceeds 300 kB in size,
|
||||||
it is preferred that you store your patch on an Internet-accessible
|
it is preferred that you store your patch on an Internet-accessible
|
||||||
server, and provide instead a URL (link) pointing to your patch.
|
server, and provide instead a URL (link) pointing to your patch.
|
||||||
|
|
||||||
|
|
|
@ -29,11 +29,13 @@ TCM location and size. Notice that this is not a MMU table: you
|
||||||
actually move the physical location of the TCM around. At the
|
actually move the physical location of the TCM around. At the
|
||||||
place you put it, it will mask any underlying RAM from the
|
place you put it, it will mask any underlying RAM from the
|
||||||
CPU so it is usually wise not to overlap any physical RAM with
|
CPU so it is usually wise not to overlap any physical RAM with
|
||||||
the TCM. The TCM memory exists totally outside the MMU and will
|
the TCM.
|
||||||
override any MMU mappings.
|
|
||||||
|
|
||||||
Code executing inside the ITCM does not "see" any MMU mappings
|
The TCM memory can then be remapped to another address again using
|
||||||
and e.g. register accesses must be made to physical addresses.
|
the MMU, but notice that the TCM if often used in situations where
|
||||||
|
the MMU is turned off. To avoid confusion the current Linux
|
||||||
|
implementation will map the TCM 1 to 1 from physical to virtual
|
||||||
|
memory in the location specified by the machine.
|
||||||
|
|
||||||
TCM is used for a few things:
|
TCM is used for a few things:
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ static char cn_test_name[] = "cn_test";
|
||||||
static struct sock *nls;
|
static struct sock *nls;
|
||||||
static struct timer_list cn_test_timer;
|
static struct timer_list cn_test_timer;
|
||||||
|
|
||||||
static void cn_test_callback(struct cn_msg *msg)
|
static void cn_test_callback(struct cn_msg *msg, struct netlink_skb_parms *nsp)
|
||||||
{
|
{
|
||||||
pr_info("%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n",
|
pr_info("%s: %lu: idx=%x, val=%x, seq=%u, ack=%u, len=%d: %s.\n",
|
||||||
__func__, jiffies, msg->id.idx, msg->id.val,
|
__func__, jiffies, msg->id.idx, msg->id.val,
|
||||||
|
|
|
@ -23,7 +23,7 @@ handling, etc... The Connector driver allows any kernelspace agents to use
|
||||||
netlink based networking for inter-process communication in a significantly
|
netlink based networking for inter-process communication in a significantly
|
||||||
easier way:
|
easier way:
|
||||||
|
|
||||||
int cn_add_callback(struct cb_id *id, char *name, void (*callback) (void *));
|
int cn_add_callback(struct cb_id *id, char *name, void (*callback) (struct cn_msg *, struct netlink_skb_parms *));
|
||||||
void cn_netlink_send(struct cn_msg *msg, u32 __group, int gfp_mask);
|
void cn_netlink_send(struct cn_msg *msg, u32 __group, int gfp_mask);
|
||||||
|
|
||||||
struct cb_id
|
struct cb_id
|
||||||
|
@ -53,15 +53,15 @@ struct cn_msg
|
||||||
Connector interfaces.
|
Connector interfaces.
|
||||||
/*****************************************/
|
/*****************************************/
|
||||||
|
|
||||||
int cn_add_callback(struct cb_id *id, char *name, void (*callback) (void *));
|
int cn_add_callback(struct cb_id *id, char *name, void (*callback) (struct cn_msg *, struct netlink_skb_parms *));
|
||||||
|
|
||||||
Registers new callback with connector core.
|
Registers new callback with connector core.
|
||||||
|
|
||||||
struct cb_id *id - unique connector's user identifier.
|
struct cb_id *id - unique connector's user identifier.
|
||||||
It must be registered in connector.h for legal in-kernel users.
|
It must be registered in connector.h for legal in-kernel users.
|
||||||
char *name - connector's callback symbolic name.
|
char *name - connector's callback symbolic name.
|
||||||
void (*callback) (void *) - connector's callback.
|
void (*callback) (struct cn..) - connector's callback.
|
||||||
Argument must be dereferenced to struct cn_msg *.
|
cn_msg and the sender's credentials
|
||||||
|
|
||||||
|
|
||||||
void cn_del_callback(struct cb_id *id);
|
void cn_del_callback(struct cb_id *id);
|
||||||
|
|
|
@ -282,9 +282,16 @@ stripe=n Number of filesystem blocks that mballoc will try
|
||||||
to use for allocation size and alignment. For RAID5/6
|
to use for allocation size and alignment. For RAID5/6
|
||||||
systems this should be the number of data
|
systems this should be the number of data
|
||||||
disks * RAID chunk size in file system blocks.
|
disks * RAID chunk size in file system blocks.
|
||||||
delalloc (*) Deferring block allocation until write-out time.
|
|
||||||
nodelalloc Disable delayed allocation. Blocks are allocation
|
delalloc (*) Defer block allocation until just before ext4
|
||||||
when data is copied from user to page cache.
|
writes out the block(s) in question. This
|
||||||
|
allows ext4 to better allocation decisions
|
||||||
|
more efficiently.
|
||||||
|
nodelalloc Disable delayed allocation. Blocks are allocated
|
||||||
|
when the data is copied from userspace to the
|
||||||
|
page cache, either via the write(2) system call
|
||||||
|
or when an mmap'ed page which was previously
|
||||||
|
unallocated is written for the first time.
|
||||||
|
|
||||||
max_batch_time=usec Maximum amount of time ext4 should wait for
|
max_batch_time=usec Maximum amount of time ext4 should wait for
|
||||||
additional filesystem operations to be batch
|
additional filesystem operations to be batch
|
||||||
|
|
|
@ -1113,7 +1113,6 @@ Table 1-12: Files in /proc/fs/ext4/<devname>
|
||||||
..............................................................................
|
..............................................................................
|
||||||
File Content
|
File Content
|
||||||
mb_groups details of multiblock allocator buddy cache of free blocks
|
mb_groups details of multiblock allocator buddy cache of free blocks
|
||||||
mb_history multiblock allocation history
|
|
||||||
..............................................................................
|
..............................................................................
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@ shortname=lower|win95|winnt|mixed
|
||||||
winnt: emulate the Windows NT rule for display/create.
|
winnt: emulate the Windows NT rule for display/create.
|
||||||
mixed: emulate the Windows NT rule for display,
|
mixed: emulate the Windows NT rule for display,
|
||||||
emulate the Windows 95 rule for create.
|
emulate the Windows 95 rule for create.
|
||||||
Default setting is `lower'.
|
Default setting is `mixed'.
|
||||||
|
|
||||||
tz=UTC -- Interpret timestamps as UTC rather than local time.
|
tz=UTC -- Interpret timestamps as UTC rather than local time.
|
||||||
This option disables the conversion of timestamps
|
This option disables the conversion of timestamps
|
||||||
|
|
|
@ -22,12 +22,13 @@ Usage Notes
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
This driver does not probe for LTC4215 devices, due to the fact that some
|
This driver does not probe for LTC4215 devices, due to the fact that some
|
||||||
of the possible addresses are unfriendly to probing. You will need to use
|
of the possible addresses are unfriendly to probing. You will have to
|
||||||
the "force" parameter to tell the driver where to find the device.
|
instantiate the devices explicitly.
|
||||||
|
|
||||||
Example: the following will load the driver for an LTC4215 at address 0x44
|
Example: the following will load the driver for an LTC4215 at address 0x44
|
||||||
on I2C bus #0:
|
on I2C bus #0:
|
||||||
$ modprobe ltc4215 force=0,0x44
|
$ modprobe ltc4215
|
||||||
|
$ echo ltc4215 0x44 > /sys/bus/i2c/devices/i2c-0/new_device
|
||||||
|
|
||||||
|
|
||||||
Sysfs entries
|
Sysfs entries
|
||||||
|
|
|
@ -23,12 +23,13 @@ Usage Notes
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
This driver does not probe for LTC4245 devices, due to the fact that some
|
This driver does not probe for LTC4245 devices, due to the fact that some
|
||||||
of the possible addresses are unfriendly to probing. You will need to use
|
of the possible addresses are unfriendly to probing. You will have to
|
||||||
the "force" parameter to tell the driver where to find the device.
|
instantiate the devices explicitly.
|
||||||
|
|
||||||
Example: the following will load the driver for an LTC4245 at address 0x23
|
Example: the following will load the driver for an LTC4245 at address 0x23
|
||||||
on I2C bus #1:
|
on I2C bus #1:
|
||||||
$ modprobe ltc4245 force=1,0x23
|
$ modprobe ltc4245
|
||||||
|
$ echo ltc4245 0x23 > /sys/bus/i2c/devices/i2c-1/new_device
|
||||||
|
|
||||||
|
|
||||||
Sysfs entries
|
Sysfs entries
|
||||||
|
|
|
@ -188,7 +188,7 @@ segment, the address is sufficient to uniquely identify the device to be
|
||||||
deleted.
|
deleted.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
# echo eeprom 0x50 > /sys/class/i2c-adapter/i2c-3/new_device
|
# echo eeprom 0x50 > /sys/bus/i2c/devices/i2c-3/new_device
|
||||||
|
|
||||||
While this interface should only be used when in-kernel device declaration
|
While this interface should only be used when in-kernel device declaration
|
||||||
can't be done, there is a variety of cases where it can be helpful:
|
can't be done, there is a variety of cases where it can be helpful:
|
||||||
|
|
|
@ -42,10 +42,12 @@ General Remarks
|
||||||
|
|
||||||
Valid addresses for the MAX6875 are 0x50 and 0x52.
|
Valid addresses for the MAX6875 are 0x50 and 0x52.
|
||||||
Valid addresses for the MAX6874 are 0x50, 0x52, 0x54 and 0x56.
|
Valid addresses for the MAX6874 are 0x50, 0x52, 0x54 and 0x56.
|
||||||
The driver does not probe any address, so you must force the address.
|
The driver does not probe any address, so you explicitly instantiate the
|
||||||
|
devices.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
$ modprobe max6875 force=0,0x50
|
$ modprobe max6875
|
||||||
|
$ echo max6875 0x50 > /sys/bus/i2c/devices/i2c-0/new_device
|
||||||
|
|
||||||
The MAX6874/MAX6875 ignores address bit 0, so this driver attaches to multiple
|
The MAX6874/MAX6875 ignores address bit 0, so this driver attaches to multiple
|
||||||
addresses. For example, for address 0x50, it also reserves 0x51.
|
addresses. For example, for address 0x50, it also reserves 0x51.
|
|
@ -381,7 +381,7 @@ int main(int argc, char **argv)
|
||||||
memset(&hwtstamp, 0, sizeof(hwtstamp));
|
memset(&hwtstamp, 0, sizeof(hwtstamp));
|
||||||
strncpy(hwtstamp.ifr_name, interface, sizeof(hwtstamp.ifr_name));
|
strncpy(hwtstamp.ifr_name, interface, sizeof(hwtstamp.ifr_name));
|
||||||
hwtstamp.ifr_data = (void *)&hwconfig;
|
hwtstamp.ifr_data = (void *)&hwconfig;
|
||||||
memset(&hwconfig, 0, sizeof(&hwconfig));
|
memset(&hwconfig, 0, sizeof(hwconfig));
|
||||||
hwconfig.tx_type =
|
hwconfig.tx_type =
|
||||||
(so_timestamping_flags & SOF_TIMESTAMPING_TX_HARDWARE) ?
|
(so_timestamping_flags & SOF_TIMESTAMPING_TX_HARDWARE) ?
|
||||||
HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF;
|
HWTSTAMP_TX_ON : HWTSTAMP_TX_OFF;
|
||||||
|
|
|
@ -209,6 +209,7 @@ AD1884A / AD1883 / AD1984A / AD1984B
|
||||||
laptop laptop with HP jack sensing
|
laptop laptop with HP jack sensing
|
||||||
mobile mobile devices with HP jack sensing
|
mobile mobile devices with HP jack sensing
|
||||||
thinkpad Lenovo Thinkpad X300
|
thinkpad Lenovo Thinkpad X300
|
||||||
|
touchsmart HP Touchsmart
|
||||||
|
|
||||||
AD1884
|
AD1884
|
||||||
======
|
======
|
||||||
|
|
|
@ -24,8 +24,8 @@ General Remarks
|
||||||
|
|
||||||
Valid addresses are 0x18, 0x19, 0x1a, and 0x1b.
|
Valid addresses are 0x18, 0x19, 0x1a, and 0x1b.
|
||||||
However, the device cannot be detected without writing to the i2c bus, so no
|
However, the device cannot be detected without writing to the i2c bus, so no
|
||||||
detection is done.
|
detection is done. You should instantiate the device explicitly.
|
||||||
You should force the device address.
|
|
||||||
|
|
||||||
$ modprobe ds2482 force=0,0x18
|
$ modprobe ds2482
|
||||||
|
$ echo ds2482 0x18 > /sys/bus/i2c/devices/i2c-0/new_device
|
||||||
|
|
||||||
|
|
36
MAINTAINERS
36
MAINTAINERS
|
@ -257,6 +257,13 @@ W: http://www.lesswatts.org/projects/acpi/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/acpi/fan.c
|
F: drivers/acpi/fan.c
|
||||||
|
|
||||||
|
ACPI PROCESSOR AGGREGATOR DRIVER
|
||||||
|
M: Shaohua Li <shaohua.li@intel.com>
|
||||||
|
L: linux-acpi@vger.kernel.org
|
||||||
|
W: http://www.lesswatts.org/projects/acpi/
|
||||||
|
S: Supported
|
||||||
|
F: drivers/acpi/acpi_pad.c
|
||||||
|
|
||||||
ACPI THERMAL DRIVER
|
ACPI THERMAL DRIVER
|
||||||
M: Zhang Rui <rui.zhang@intel.com>
|
M: Zhang Rui <rui.zhang@intel.com>
|
||||||
L: linux-acpi@vger.kernel.org
|
L: linux-acpi@vger.kernel.org
|
||||||
|
@ -646,24 +653,24 @@ ARM/INTEL IOP32X ARM ARCHITECTURE
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||||
M: Dan Williams <dan.j.williams@intel.com>
|
M: Dan Williams <dan.j.williams@intel.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Maintained
|
||||||
|
|
||||||
ARM/INTEL IOP33X ARM ARCHITECTURE
|
ARM/INTEL IOP33X ARM ARCHITECTURE
|
||||||
M: Dan Williams <dan.j.williams@intel.com>
|
M: Dan Williams <dan.j.williams@intel.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Maintained
|
||||||
|
|
||||||
ARM/INTEL IOP13XX ARM ARCHITECTURE
|
ARM/INTEL IOP13XX ARM ARCHITECTURE
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||||
M: Dan Williams <dan.j.williams@intel.com>
|
M: Dan Williams <dan.j.williams@intel.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Maintained
|
||||||
|
|
||||||
ARM/INTEL IQ81342EX MACHINE SUPPORT
|
ARM/INTEL IQ81342EX MACHINE SUPPORT
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||||
M: Dan Williams <dan.j.williams@intel.com>
|
M: Dan Williams <dan.j.williams@intel.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Maintained
|
||||||
|
|
||||||
ARM/INTEL IXP2000 ARM ARCHITECTURE
|
ARM/INTEL IXP2000 ARM ARCHITECTURE
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||||
|
@ -691,7 +698,7 @@ ARM/INTEL XSC3 (MANZANO) ARM CORE
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||||
M: Dan Williams <dan.j.williams@intel.com>
|
M: Dan Williams <dan.j.williams@intel.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Supported
|
S: Maintained
|
||||||
|
|
||||||
ARM/IP FABRICS DOUBLE ESPRESSO MACHINE SUPPORT
|
ARM/IP FABRICS DOUBLE ESPRESSO MACHINE SUPPORT
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||||
|
@ -741,23 +748,36 @@ M: Dirk Opfer <dirk@opfer-online.de>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT
|
ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT
|
||||||
P: Marek Vasut
|
M: Marek Vasut <marek.vasut@gmail.com>
|
||||||
M: marek.vasut@gmail.com
|
|
||||||
L: linux-arm-kernel@lists.infradead.org
|
L: linux-arm-kernel@lists.infradead.org
|
||||||
W: http://hackndev.com
|
W: http://hackndev.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: arch/arm/mach-pxa/include/mach/palmtx.h
|
||||||
|
F: arch/arm/mach-pxa/palmtx.c
|
||||||
|
F: arch/arm/mach-pxa/include/mach/palmt5.h
|
||||||
|
F: arch/arm/mach-pxa/palmt5.c
|
||||||
|
F: arch/arm/mach-pxa/include/mach/palmld.h
|
||||||
|
F: arch/arm/mach-pxa/palmld.c
|
||||||
|
F: arch/arm/mach-pxa/include/mach/palmte2.h
|
||||||
|
F: arch/arm/mach-pxa/palmte2.c
|
||||||
|
F: arch/arm/mach-pxa/include/mach/palmtc.h
|
||||||
|
F: arch/arm/mach-pxa/palmtc.c
|
||||||
|
|
||||||
ARM/PALM TREO 680 SUPPORT
|
ARM/PALM TREO 680 SUPPORT
|
||||||
M: Tomas Cech <sleep_walker@suse.cz>
|
M: Tomas Cech <sleep_walker@suse.cz>
|
||||||
L: linux-arm-kernel@lists.infradead.org
|
L: linux-arm-kernel@lists.infradead.org
|
||||||
W: http://hackndev.com
|
W: http://hackndev.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: arch/arm/mach-pxa/include/mach/treo680.h
|
||||||
|
F: arch/arm/mach-pxa/treo680.c
|
||||||
|
|
||||||
ARM/PALMZ72 SUPPORT
|
ARM/PALMZ72 SUPPORT
|
||||||
M: Sergey Lapin <slapin@ossfans.org>
|
M: Sergey Lapin <slapin@ossfans.org>
|
||||||
L: linux-arm-kernel@lists.infradead.org
|
L: linux-arm-kernel@lists.infradead.org
|
||||||
W: http://hackndev.com
|
W: http://hackndev.com
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: arch/arm/mach-pxa/include/mach/palmz72.h
|
||||||
|
F: arch/arm/mach-pxa/palmz72.c
|
||||||
|
|
||||||
ARM/PLEB SUPPORT
|
ARM/PLEB SUPPORT
|
||||||
M: Peter Chubb <pleb@gelato.unsw.edu.au>
|
M: Peter Chubb <pleb@gelato.unsw.edu.au>
|
||||||
|
@ -2695,7 +2715,7 @@ F: include/linux/intel-iommu.h
|
||||||
|
|
||||||
INTEL IOP-ADMA DMA DRIVER
|
INTEL IOP-ADMA DMA DRIVER
|
||||||
M: Dan Williams <dan.j.williams@intel.com>
|
M: Dan Williams <dan.j.williams@intel.com>
|
||||||
S: Supported
|
S: Maintained
|
||||||
F: drivers/dma/iop-adma.c
|
F: drivers/dma/iop-adma.c
|
||||||
|
|
||||||
INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
|
INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 32
|
SUBLEVEL = 32
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc3
|
||||||
NAME = Man-Eating Seals of Antiquity
|
NAME = Man-Eating Seals of Antiquity
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -1032,6 +1032,7 @@ unsigned int sa1111_pll_clock(struct sa1111_dev *sadev)
|
||||||
|
|
||||||
return __sa1111_pll_clock(sachip);
|
return __sa1111_pll_clock(sachip);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_pll_clock);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sa1111_select_audio_mode - select I2S or AC link mode
|
* sa1111_select_audio_mode - select I2S or AC link mode
|
||||||
|
@ -1059,6 +1060,7 @@ void sa1111_select_audio_mode(struct sa1111_dev *sadev, int mode)
|
||||||
|
|
||||||
spin_unlock_irqrestore(&sachip->lock, flags);
|
spin_unlock_irqrestore(&sachip->lock, flags);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_select_audio_mode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sa1111_set_audio_rate - set the audio sample rate
|
* sa1111_set_audio_rate - set the audio sample rate
|
||||||
|
@ -1083,6 +1085,7 @@ int sa1111_set_audio_rate(struct sa1111_dev *sadev, int rate)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_set_audio_rate);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sa1111_get_audio_rate - get the audio sample rate
|
* sa1111_get_audio_rate - get the audio sample rate
|
||||||
|
@ -1100,6 +1103,7 @@ int sa1111_get_audio_rate(struct sa1111_dev *sadev)
|
||||||
|
|
||||||
return __sa1111_pll_clock(sachip) / (256 * div);
|
return __sa1111_pll_clock(sachip) / (256 * div);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_get_audio_rate);
|
||||||
|
|
||||||
void sa1111_set_io_dir(struct sa1111_dev *sadev,
|
void sa1111_set_io_dir(struct sa1111_dev *sadev,
|
||||||
unsigned int bits, unsigned int dir,
|
unsigned int bits, unsigned int dir,
|
||||||
|
@ -1128,6 +1132,7 @@ void sa1111_set_io_dir(struct sa1111_dev *sadev,
|
||||||
MODIFY_BITS(gpio + SA1111_GPIO_PCSDR, (bits >> 16) & 255, sleep_dir >> 16);
|
MODIFY_BITS(gpio + SA1111_GPIO_PCSDR, (bits >> 16) & 255, sleep_dir >> 16);
|
||||||
spin_unlock_irqrestore(&sachip->lock, flags);
|
spin_unlock_irqrestore(&sachip->lock, flags);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_set_io_dir);
|
||||||
|
|
||||||
void sa1111_set_io(struct sa1111_dev *sadev, unsigned int bits, unsigned int v)
|
void sa1111_set_io(struct sa1111_dev *sadev, unsigned int bits, unsigned int v)
|
||||||
{
|
{
|
||||||
|
@ -1142,6 +1147,7 @@ void sa1111_set_io(struct sa1111_dev *sadev, unsigned int bits, unsigned int v)
|
||||||
MODIFY_BITS(gpio + SA1111_GPIO_PCDWR, (bits >> 16) & 255, v >> 16);
|
MODIFY_BITS(gpio + SA1111_GPIO_PCDWR, (bits >> 16) & 255, v >> 16);
|
||||||
spin_unlock_irqrestore(&sachip->lock, flags);
|
spin_unlock_irqrestore(&sachip->lock, flags);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_set_io);
|
||||||
|
|
||||||
void sa1111_set_sleep_io(struct sa1111_dev *sadev, unsigned int bits, unsigned int v)
|
void sa1111_set_sleep_io(struct sa1111_dev *sadev, unsigned int bits, unsigned int v)
|
||||||
{
|
{
|
||||||
|
@ -1156,6 +1162,7 @@ void sa1111_set_sleep_io(struct sa1111_dev *sadev, unsigned int bits, unsigned i
|
||||||
MODIFY_BITS(gpio + SA1111_GPIO_PCSSR, (bits >> 16) & 255, v >> 16);
|
MODIFY_BITS(gpio + SA1111_GPIO_PCSSR, (bits >> 16) & 255, v >> 16);
|
||||||
spin_unlock_irqrestore(&sachip->lock, flags);
|
spin_unlock_irqrestore(&sachip->lock, flags);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_set_sleep_io);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Individual device operations.
|
* Individual device operations.
|
||||||
|
@ -1176,6 +1183,7 @@ void sa1111_enable_device(struct sa1111_dev *sadev)
|
||||||
sa1111_writel(val | sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
|
sa1111_writel(val | sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
|
||||||
spin_unlock_irqrestore(&sachip->lock, flags);
|
spin_unlock_irqrestore(&sachip->lock, flags);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_enable_device);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sa1111_disable_device - disable an on-chip SA1111 function block
|
* sa1111_disable_device - disable an on-chip SA1111 function block
|
||||||
|
@ -1192,6 +1200,7 @@ void sa1111_disable_device(struct sa1111_dev *sadev)
|
||||||
sa1111_writel(val & ~sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
|
sa1111_writel(val & ~sadev->skpcr_mask, sachip->base + SA1111_SKPCR);
|
||||||
spin_unlock_irqrestore(&sachip->lock, flags);
|
spin_unlock_irqrestore(&sachip->lock, flags);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_disable_device);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SA1111 "Register Access Bus."
|
* SA1111 "Register Access Bus."
|
||||||
|
@ -1259,17 +1268,20 @@ struct bus_type sa1111_bus_type = {
|
||||||
.suspend = sa1111_bus_suspend,
|
.suspend = sa1111_bus_suspend,
|
||||||
.resume = sa1111_bus_resume,
|
.resume = sa1111_bus_resume,
|
||||||
};
|
};
|
||||||
|
EXPORT_SYMBOL(sa1111_bus_type);
|
||||||
|
|
||||||
int sa1111_driver_register(struct sa1111_driver *driver)
|
int sa1111_driver_register(struct sa1111_driver *driver)
|
||||||
{
|
{
|
||||||
driver->drv.bus = &sa1111_bus_type;
|
driver->drv.bus = &sa1111_bus_type;
|
||||||
return driver_register(&driver->drv);
|
return driver_register(&driver->drv);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_driver_register);
|
||||||
|
|
||||||
void sa1111_driver_unregister(struct sa1111_driver *driver)
|
void sa1111_driver_unregister(struct sa1111_driver *driver)
|
||||||
{
|
{
|
||||||
driver_unregister(&driver->drv);
|
driver_unregister(&driver->drv);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(sa1111_driver_unregister);
|
||||||
|
|
||||||
static int __init sa1111_init(void)
|
static int __init sa1111_init(void)
|
||||||
{
|
{
|
||||||
|
@ -1290,16 +1302,3 @@ module_exit(sa1111_exit);
|
||||||
|
|
||||||
MODULE_DESCRIPTION("Intel Corporation SA1111 core driver");
|
MODULE_DESCRIPTION("Intel Corporation SA1111 core driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
EXPORT_SYMBOL(sa1111_select_audio_mode);
|
|
||||||
EXPORT_SYMBOL(sa1111_set_audio_rate);
|
|
||||||
EXPORT_SYMBOL(sa1111_get_audio_rate);
|
|
||||||
EXPORT_SYMBOL(sa1111_set_io_dir);
|
|
||||||
EXPORT_SYMBOL(sa1111_set_io);
|
|
||||||
EXPORT_SYMBOL(sa1111_set_sleep_io);
|
|
||||||
EXPORT_SYMBOL(sa1111_enable_device);
|
|
||||||
EXPORT_SYMBOL(sa1111_disable_device);
|
|
||||||
EXPORT_SYMBOL(sa1111_pll_clock);
|
|
||||||
EXPORT_SYMBOL(sa1111_bus_type);
|
|
||||||
EXPORT_SYMBOL(sa1111_driver_register);
|
|
||||||
EXPORT_SYMBOL(sa1111_driver_unregister);
|
|
||||||
|
|
|
@ -90,7 +90,6 @@ CONFIG_ARCH_SA1100=y
|
||||||
# CONFIG_SA1100_COLLIE is not set
|
# CONFIG_SA1100_COLLIE is not set
|
||||||
# CONFIG_SA1100_H3100 is not set
|
# CONFIG_SA1100_H3100 is not set
|
||||||
CONFIG_SA1100_H3600=y
|
CONFIG_SA1100_H3600=y
|
||||||
CONFIG_SA1100_H3XXX=y
|
|
||||||
# CONFIG_SA1100_BADGE4 is not set
|
# CONFIG_SA1100_BADGE4 is not set
|
||||||
# CONFIG_SA1100_JORNADA720 is not set
|
# CONFIG_SA1100_JORNADA720 is not set
|
||||||
# CONFIG_SA1100_HACKKIT is not set
|
# CONFIG_SA1100_HACKKIT is not set
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -120,25 +120,39 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prefetch abort handler. If the CPU has an IFAR use that, otherwise
|
* Prefetch Abort Model
|
||||||
* use the address of the aborted instruction
|
* ================
|
||||||
|
*
|
||||||
|
* We have the following to choose from:
|
||||||
|
* legacy - no IFSR, no IFAR
|
||||||
|
* v6 - ARMv6: IFSR, no IFAR
|
||||||
|
* v7 - ARMv7: IFSR and IFAR
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#undef CPU_PABORT_HANDLER
|
#undef CPU_PABORT_HANDLER
|
||||||
#undef MULTI_PABORT
|
#undef MULTI_PABORT
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_PABRT_IFAR
|
#ifdef CONFIG_CPU_PABRT_LEGACY
|
||||||
# ifdef CPU_PABORT_HANDLER
|
# ifdef CPU_PABORT_HANDLER
|
||||||
# define MULTI_PABORT 1
|
# define MULTI_PABORT 1
|
||||||
# else
|
# else
|
||||||
# define CPU_PABORT_HANDLER(reg, insn) mrc p15, 0, reg, cr6, cr0, 2
|
# define CPU_PABORT_HANDLER legacy_pabort
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_PABRT_NOIFAR
|
#ifdef CONFIG_CPU_PABRT_V6
|
||||||
# ifdef CPU_PABORT_HANDLER
|
# ifdef CPU_PABORT_HANDLER
|
||||||
# define MULTI_PABORT 1
|
# define MULTI_PABORT 1
|
||||||
# else
|
# else
|
||||||
# define CPU_PABORT_HANDLER(reg, insn) mov reg, insn
|
# define CPU_PABORT_HANDLER v6_pabort
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_CPU_PABRT_V7
|
||||||
|
# ifdef CPU_PABORT_HANDLER
|
||||||
|
# define MULTI_PABORT 1
|
||||||
|
# else
|
||||||
|
# define CPU_PABORT_HANDLER v7_pabort
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,7 @@ extern int iop3xx_get_init_atu(void);
|
||||||
* IOP3XX I/O and Mem space regions for PCI autoconfiguration
|
* IOP3XX I/O and Mem space regions for PCI autoconfiguration
|
||||||
*/
|
*/
|
||||||
#define IOP3XX_PCI_LOWER_MEM_PA 0x80000000
|
#define IOP3XX_PCI_LOWER_MEM_PA 0x80000000
|
||||||
|
#define IOP3XX_PCI_MEM_WINDOW_SIZE 0x08000000
|
||||||
|
|
||||||
#define IOP3XX_PCI_IO_WINDOW_SIZE 0x00010000
|
#define IOP3XX_PCI_IO_WINDOW_SIZE 0x00010000
|
||||||
#define IOP3XX_PCI_LOWER_IO_PA 0x90000000
|
#define IOP3XX_PCI_LOWER_IO_PA 0x90000000
|
||||||
|
|
16
arch/arm/include/asm/smp_plat.h
Normal file
16
arch/arm/include/asm/smp_plat.h
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
* ARM specific SMP header, this contains our implementation
|
||||||
|
* details.
|
||||||
|
*/
|
||||||
|
#ifndef __ASMARM_SMP_PLAT_H
|
||||||
|
#define __ASMARM_SMP_PLAT_H
|
||||||
|
|
||||||
|
#include <asm/cputype.h>
|
||||||
|
|
||||||
|
/* all SMP configurations have the extended CPUID registers */
|
||||||
|
static inline int tlb_ops_need_broadcast(void)
|
||||||
|
{
|
||||||
|
return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -456,6 +456,7 @@
|
||||||
* Unimplemented (or alternatively implemented) syscalls
|
* Unimplemented (or alternatively implemented) syscalls
|
||||||
*/
|
*/
|
||||||
#define __IGNORE_fadvise64_64 1
|
#define __IGNORE_fadvise64_64 1
|
||||||
|
#define __IGNORE_migrate_pages 1
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
#endif /* __ASM_ARM_UNISTD_H */
|
#endif /* __ASM_ARM_UNISTD_H */
|
||||||
|
|
|
@ -311,22 +311,16 @@ __pabt_svc:
|
||||||
tst r3, #PSR_I_BIT
|
tst r3, #PSR_I_BIT
|
||||||
biceq r9, r9, #PSR_I_BIT
|
biceq r9, r9, #PSR_I_BIT
|
||||||
|
|
||||||
@
|
|
||||||
@ set args, then call main handler
|
|
||||||
@
|
|
||||||
@ r0 - address of faulting instruction
|
|
||||||
@ r1 - pointer to registers on stack
|
|
||||||
@
|
|
||||||
#ifdef MULTI_PABORT
|
|
||||||
mov r0, r2 @ pass address of aborted instruction.
|
mov r0, r2 @ pass address of aborted instruction.
|
||||||
|
#ifdef MULTI_PABORT
|
||||||
ldr r4, .LCprocfns
|
ldr r4, .LCprocfns
|
||||||
mov lr, pc
|
mov lr, pc
|
||||||
ldr pc, [r4, #PROCESSOR_PABT_FUNC]
|
ldr pc, [r4, #PROCESSOR_PABT_FUNC]
|
||||||
#else
|
#else
|
||||||
CPU_PABORT_HANDLER(r0, r2)
|
bl CPU_PABORT_HANDLER
|
||||||
#endif
|
#endif
|
||||||
msr cpsr_c, r9 @ Maybe enable interrupts
|
msr cpsr_c, r9 @ Maybe enable interrupts
|
||||||
mov r1, sp @ regs
|
mov r2, sp @ regs
|
||||||
bl do_PrefetchAbort @ call abort handler
|
bl do_PrefetchAbort @ call abort handler
|
||||||
|
|
||||||
@
|
@
|
||||||
|
@ -701,16 +695,16 @@ ENDPROC(__und_usr_unknown)
|
||||||
__pabt_usr:
|
__pabt_usr:
|
||||||
usr_entry
|
usr_entry
|
||||||
|
|
||||||
#ifdef MULTI_PABORT
|
|
||||||
mov r0, r2 @ pass address of aborted instruction.
|
mov r0, r2 @ pass address of aborted instruction.
|
||||||
|
#ifdef MULTI_PABORT
|
||||||
ldr r4, .LCprocfns
|
ldr r4, .LCprocfns
|
||||||
mov lr, pc
|
mov lr, pc
|
||||||
ldr pc, [r4, #PROCESSOR_PABT_FUNC]
|
ldr pc, [r4, #PROCESSOR_PABT_FUNC]
|
||||||
#else
|
#else
|
||||||
CPU_PABORT_HANDLER(r0, r2)
|
bl CPU_PABORT_HANDLER
|
||||||
#endif
|
#endif
|
||||||
enable_irq @ Enable interrupts
|
enable_irq @ Enable interrupts
|
||||||
mov r1, sp @ regs
|
mov r2, sp @ regs
|
||||||
bl do_PrefetchAbort @ call abort handler
|
bl do_PrefetchAbort @ call abort handler
|
||||||
UNWIND(.fnend )
|
UNWIND(.fnend )
|
||||||
/* fall through */
|
/* fall through */
|
||||||
|
|
|
@ -126,7 +126,7 @@ ENTRY(__gnu_mcount_nc)
|
||||||
cmp r0, r2
|
cmp r0, r2
|
||||||
bne gnu_trace
|
bne gnu_trace
|
||||||
ldmia sp!, {r0-r3, ip, lr}
|
ldmia sp!, {r0-r3, ip, lr}
|
||||||
bx ip
|
mov pc, ip
|
||||||
|
|
||||||
gnu_trace:
|
gnu_trace:
|
||||||
ldr r1, [sp, #20] @ lr of instrumented routine
|
ldr r1, [sp, #20] @ lr of instrumented routine
|
||||||
|
@ -135,7 +135,7 @@ gnu_trace:
|
||||||
mov lr, pc
|
mov lr, pc
|
||||||
mov pc, r2
|
mov pc, r2
|
||||||
ldmia sp!, {r0-r3, ip, lr}
|
ldmia sp!, {r0-r3, ip, lr}
|
||||||
bx ip
|
mov pc, ip
|
||||||
|
|
||||||
ENTRY(mcount)
|
ENTRY(mcount)
|
||||||
stmdb sp!, {r0-r3, lr}
|
stmdb sp!, {r0-r3, lr}
|
||||||
|
@ -425,13 +425,6 @@ sys_mmap2:
|
||||||
#endif
|
#endif
|
||||||
ENDPROC(sys_mmap2)
|
ENDPROC(sys_mmap2)
|
||||||
|
|
||||||
ENTRY(pabort_ifar)
|
|
||||||
mrc p15, 0, r0, cr6, cr0, 2
|
|
||||||
ENTRY(pabort_noifar)
|
|
||||||
mov pc, lr
|
|
||||||
ENDPROC(pabort_ifar)
|
|
||||||
ENDPROC(pabort_noifar)
|
|
||||||
|
|
||||||
#ifdef CONFIG_OABI_COMPAT
|
#ifdef CONFIG_OABI_COMPAT
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
#define ATAG_CORE 0x54410001
|
#define ATAG_CORE 0x54410001
|
||||||
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
|
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
|
||||||
|
#define ATAG_CORE_SIZE_EMPTY ((2*4) >> 2)
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
.type __switch_data, %object
|
.type __switch_data, %object
|
||||||
|
@ -251,7 +252,8 @@ __vet_atags:
|
||||||
bne 1f
|
bne 1f
|
||||||
|
|
||||||
ldr r5, [r2, #0] @ is first tag ATAG_CORE?
|
ldr r5, [r2, #0] @ is first tag ATAG_CORE?
|
||||||
subs r5, r5, #ATAG_CORE_SIZE
|
cmp r5, #ATAG_CORE_SIZE
|
||||||
|
cmpne r5, #ATAG_CORE_SIZE_EMPTY
|
||||||
bne 1f
|
bne 1f
|
||||||
ldr r5, [r2, #4]
|
ldr r5, [r2, #4]
|
||||||
ldr r6, =ATAG_CORE
|
ldr r6, =ATAG_CORE
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include <asm/tlbflush.h>
|
#include <asm/tlbflush.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
#include <asm/localtimer.h>
|
#include <asm/localtimer.h>
|
||||||
|
#include <asm/smp_plat.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* as from 2.5, kernels no longer have an init_tasks structure
|
* as from 2.5, kernels no longer have an init_tasks structure
|
||||||
|
@ -153,7 +154,7 @@ int __cpuinit __cpu_up(unsigned int cpu)
|
||||||
/*
|
/*
|
||||||
* __cpu_disable runs on the processor to be shutdown.
|
* __cpu_disable runs on the processor to be shutdown.
|
||||||
*/
|
*/
|
||||||
int __cpuexit __cpu_disable(void)
|
int __cpu_disable(void)
|
||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
struct task_struct *p;
|
struct task_struct *p;
|
||||||
|
@ -200,7 +201,7 @@ int __cpuexit __cpu_disable(void)
|
||||||
* called on the thread which is asking for a CPU to be shutdown -
|
* called on the thread which is asking for a CPU to be shutdown -
|
||||||
* waits until shutdown has completed, or it is timed out.
|
* waits until shutdown has completed, or it is timed out.
|
||||||
*/
|
*/
|
||||||
void __cpuexit __cpu_die(unsigned int cpu)
|
void __cpu_die(unsigned int cpu)
|
||||||
{
|
{
|
||||||
if (!platform_cpu_kill(cpu))
|
if (!platform_cpu_kill(cpu))
|
||||||
printk("CPU%u: unable to kill\n", cpu);
|
printk("CPU%u: unable to kill\n", cpu);
|
||||||
|
@ -214,7 +215,7 @@ void __cpuexit __cpu_die(unsigned int cpu)
|
||||||
* of the other hotplug-cpu capable cores, so presumably coming
|
* of the other hotplug-cpu capable cores, so presumably coming
|
||||||
* out of idle fixes this.
|
* out of idle fixes this.
|
||||||
*/
|
*/
|
||||||
void __cpuexit cpu_die(void)
|
void __ref cpu_die(void)
|
||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
|
|
||||||
|
@ -586,12 +587,6 @@ struct tlb_args {
|
||||||
unsigned long ta_end;
|
unsigned long ta_end;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* all SMP configurations have the extended CPUID registers */
|
|
||||||
static inline int tlb_ops_need_broadcast(void)
|
|
||||||
{
|
|
||||||
return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void ipi_flush_tlb_all(void *ignored)
|
static inline void ipi_flush_tlb_all(void *ignored)
|
||||||
{
|
{
|
||||||
local_flush_tlb_all();
|
local_flush_tlb_all();
|
||||||
|
|
|
@ -166,10 +166,12 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk)
|
||||||
clockevents_register_device(clk);
|
clockevents_register_device(clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
/*
|
/*
|
||||||
* take a local timer down
|
* take a local timer down
|
||||||
*/
|
*/
|
||||||
void __cpuexit twd_timer_stop(void)
|
void twd_timer_stop(void)
|
||||||
{
|
{
|
||||||
__raw_writel(0, twd_base + TWD_TIMER_CONTROL);
|
__raw_writel(0, twd_base + TWD_TIMER_CONTROL);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -418,12 +418,14 @@ static int bad_syscall(int n, struct pt_regs *regs)
|
||||||
static inline void
|
static inline void
|
||||||
do_cache_op(unsigned long start, unsigned long end, int flags)
|
do_cache_op(unsigned long start, unsigned long end, int flags)
|
||||||
{
|
{
|
||||||
|
struct mm_struct *mm = current->active_mm;
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma;
|
||||||
|
|
||||||
if (end < start || flags)
|
if (end < start || flags)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
vma = find_vma(current->active_mm, start);
|
down_read(&mm->mmap_sem);
|
||||||
|
vma = find_vma(mm, start);
|
||||||
if (vma && vma->vm_start < end) {
|
if (vma && vma->vm_start < end) {
|
||||||
if (start < vma->vm_start)
|
if (start < vma->vm_start)
|
||||||
start = vma->vm_start;
|
start = vma->vm_start;
|
||||||
|
@ -432,6 +434,7 @@ do_cache_op(unsigned long start, unsigned long end, int flags)
|
||||||
|
|
||||||
flush_cache_user_range(vma, start, end);
|
flush_cache_user_range(vma, start, end);
|
||||||
}
|
}
|
||||||
|
up_read(&mm->mmap_sem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
#include <linux/clocksource.h>
|
#include <linux/clocksource.h>
|
||||||
#include <linux/clockchips.h>
|
#include <linux/clockchips.h>
|
||||||
|
|
||||||
#include <linux/amba/bus.h>
|
|
||||||
#include <mach/csp/mm_addr.h>
|
#include <mach/csp/mm_addr.h>
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <asm/clkdev.h>
|
#include <asm/clkdev.h>
|
||||||
|
@ -45,7 +44,6 @@
|
||||||
#include <asm/mach/irq.h>
|
#include <asm/mach/irq.h>
|
||||||
#include <asm/mach/time.h>
|
#include <asm/mach/time.h>
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
#include <asm/mach/mmc.h>
|
|
||||||
|
|
||||||
#include <cfg_global.h>
|
#include <cfg_global.h>
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,6 @@
|
||||||
#include <mach/common.h>
|
#include <mach/common.h>
|
||||||
#include <mach/i2c.h>
|
#include <mach/i2c.h>
|
||||||
#include <mach/serial.h>
|
#include <mach/serial.h>
|
||||||
#include <mach/common.h>
|
|
||||||
#include <mach/mmc.h>
|
#include <mach/mmc.h>
|
||||||
#include <mach/nand.h>
|
#include <mach/nand.h>
|
||||||
|
|
||||||
|
|
|
@ -486,7 +486,7 @@ int __init pci_v3_setup(int nr, struct pci_sys_data *sys)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct pci_bus *pci_v3_scan_bus(int nr, struct pci_sys_data *sys)
|
struct pci_bus * __init pci_v3_scan_bus(int nr, struct pci_sys_data *sys)
|
||||||
{
|
{
|
||||||
return pci_scan_bus(sys->busnr, &pci_v3_ops, sys);
|
return pci_scan_bus(sys->busnr, &pci_v3_ops, sys);
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,5 @@
|
||||||
#define IOP32X_MAX_RAM_SIZE 0x40000000UL
|
#define IOP32X_MAX_RAM_SIZE 0x40000000UL
|
||||||
#define IOP3XX_MAX_RAM_SIZE IOP32X_MAX_RAM_SIZE
|
#define IOP3XX_MAX_RAM_SIZE IOP32X_MAX_RAM_SIZE
|
||||||
#define IOP3XX_PCI_LOWER_MEM_BA 0x80000000
|
#define IOP3XX_PCI_LOWER_MEM_BA 0x80000000
|
||||||
#define IOP32X_PCI_MEM_WINDOW_SIZE 0x04000000
|
|
||||||
#define IOP3XX_PCI_MEM_WINDOW_SIZE IOP32X_PCI_MEM_WINDOW_SIZE
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -36,8 +36,6 @@
|
||||||
#define IOP33X_MAX_RAM_SIZE 0x80000000UL
|
#define IOP33X_MAX_RAM_SIZE 0x80000000UL
|
||||||
#define IOP3XX_MAX_RAM_SIZE IOP33X_MAX_RAM_SIZE
|
#define IOP3XX_MAX_RAM_SIZE IOP33X_MAX_RAM_SIZE
|
||||||
#define IOP3XX_PCI_LOWER_MEM_BA (PHYS_OFFSET + IOP33X_MAX_RAM_SIZE)
|
#define IOP3XX_PCI_LOWER_MEM_BA (PHYS_OFFSET + IOP33X_MAX_RAM_SIZE)
|
||||||
#define IOP33X_PCI_MEM_WINDOW_SIZE 0x08000000
|
|
||||||
#define IOP3XX_PCI_MEM_WINDOW_SIZE IOP33X_PCI_MEM_WINDOW_SIZE
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -195,7 +195,7 @@ static int clk_debugfs_open(struct inode *inode, struct file *file)
|
||||||
return single_open(file, clk_debugfs_show, NULL);
|
return single_open(file, clk_debugfs_show, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct file_operations clk_debugfs_operations = {
|
static const struct file_operations clk_debugfs_operations = {
|
||||||
.open = clk_debugfs_open,
|
.open = clk_debugfs_open,
|
||||||
.read = seq_read,
|
.read = seq_read,
|
||||||
.llseek = seq_lseek,
|
.llseek = seq_lseek,
|
||||||
|
|
|
@ -38,7 +38,7 @@ static struct omap_id omap_ids[] __initdata = {
|
||||||
{ .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000},
|
{ .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000},
|
||||||
{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
|
{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
|
||||||
{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
|
{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
|
||||||
{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320500, .type = 0x08500000},
|
{ .jtag_id = 0xb62c, .die_rev = 0x1, .omap_id = 0x03320500, .type = 0x08500000},
|
||||||
{ .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
|
{ .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
|
||||||
{ .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000},
|
{ .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000},
|
||||||
{ .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000},
|
{ .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000},
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
|
|
||||||
#define TWL4030_MSECURE_GPIO 22
|
#define TWL4030_MSECURE_GPIO 22
|
||||||
|
|
||||||
static int sdp3430_keymap[] = {
|
static int board_keymap[] = {
|
||||||
KEY(0, 0, KEY_LEFT),
|
KEY(0, 0, KEY_LEFT),
|
||||||
KEY(0, 1, KEY_RIGHT),
|
KEY(0, 1, KEY_RIGHT),
|
||||||
KEY(0, 2, KEY_A),
|
KEY(0, 2, KEY_A),
|
||||||
|
@ -88,11 +88,15 @@ static int sdp3430_keymap[] = {
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct matrix_keymap_data board_map_data = {
|
||||||
|
.keymap = board_keymap,
|
||||||
|
.keymap_size = ARRAY_SIZE(board_keymap),
|
||||||
|
};
|
||||||
|
|
||||||
static struct twl4030_keypad_data sdp3430_kp_data = {
|
static struct twl4030_keypad_data sdp3430_kp_data = {
|
||||||
|
.keymap_data = &board_map_data,
|
||||||
.rows = 5,
|
.rows = 5,
|
||||||
.cols = 6,
|
.cols = 6,
|
||||||
.keymap = sdp3430_keymap,
|
|
||||||
.keymapsize = ARRAY_SIZE(sdp3430_keymap),
|
|
||||||
.rep = 1,
|
.rep = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ static struct platform_device ldp_smsc911x_device = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int ldp_twl4030_keymap[] = {
|
static int board_keymap[] = {
|
||||||
KEY(0, 0, KEY_1),
|
KEY(0, 0, KEY_1),
|
||||||
KEY(1, 0, KEY_2),
|
KEY(1, 0, KEY_2),
|
||||||
KEY(2, 0, KEY_3),
|
KEY(2, 0, KEY_3),
|
||||||
|
@ -101,11 +101,15 @@ static int ldp_twl4030_keymap[] = {
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct matrix_keymap_data board_map_data = {
|
||||||
|
.keymap = board_keymap,
|
||||||
|
.keymap_size = ARRAY_SIZE(board_keymap),
|
||||||
|
};
|
||||||
|
|
||||||
static struct twl4030_keypad_data ldp_kp_twl4030_data = {
|
static struct twl4030_keypad_data ldp_kp_twl4030_data = {
|
||||||
|
.keymap_data = &board_map_data,
|
||||||
.rows = 6,
|
.rows = 6,
|
||||||
.cols = 6,
|
.cols = 6,
|
||||||
.keymap = ldp_twl4030_keymap,
|
|
||||||
.keymapsize = ARRAY_SIZE(ldp_twl4030_keymap),
|
|
||||||
.rep = 1,
|
.rep = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -139,8 +139,13 @@ static struct gpio_led gpio_leds[];
|
||||||
static int beagle_twl_gpio_setup(struct device *dev,
|
static int beagle_twl_gpio_setup(struct device *dev,
|
||||||
unsigned gpio, unsigned ngpio)
|
unsigned gpio, unsigned ngpio)
|
||||||
{
|
{
|
||||||
|
if (system_rev >= 0x20 && system_rev <= 0x34301000) {
|
||||||
|
omap_cfg_reg(AG9_34XX_GPIO23);
|
||||||
|
mmc[0].gpio_wp = 23;
|
||||||
|
} else {
|
||||||
|
omap_cfg_reg(AH8_34XX_GPIO29);
|
||||||
|
}
|
||||||
/* gpio + 0 is "mmc0_cd" (input/IRQ) */
|
/* gpio + 0 is "mmc0_cd" (input/IRQ) */
|
||||||
omap_cfg_reg(AH8_34XX_GPIO29);
|
|
||||||
mmc[0].gpio_cd = gpio + 0;
|
mmc[0].gpio_cd = gpio + 0;
|
||||||
twl4030_mmc_init(mmc);
|
twl4030_mmc_init(mmc);
|
||||||
|
|
||||||
|
|
|
@ -159,7 +159,7 @@ static struct twl4030_usb_data omap3evm_usb_data = {
|
||||||
.usb_mode = T2_USB_MODE_ULPI,
|
.usb_mode = T2_USB_MODE_ULPI,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int omap3evm_keymap[] = {
|
static int board_keymap[] = {
|
||||||
KEY(0, 0, KEY_LEFT),
|
KEY(0, 0, KEY_LEFT),
|
||||||
KEY(0, 1, KEY_RIGHT),
|
KEY(0, 1, KEY_RIGHT),
|
||||||
KEY(0, 2, KEY_A),
|
KEY(0, 2, KEY_A),
|
||||||
|
@ -178,11 +178,15 @@ static int omap3evm_keymap[] = {
|
||||||
KEY(3, 3, KEY_P)
|
KEY(3, 3, KEY_P)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct matrix_keymap_data board_map_data = {
|
||||||
|
.keymap = board_keymap,
|
||||||
|
.keymap_size = ARRAY_SIZE(board_keymap),
|
||||||
|
};
|
||||||
|
|
||||||
static struct twl4030_keypad_data omap3evm_kp_data = {
|
static struct twl4030_keypad_data omap3evm_kp_data = {
|
||||||
|
.keymap_data = &board_map_data,
|
||||||
.rows = 4,
|
.rows = 4,
|
||||||
.cols = 4,
|
.cols = 4,
|
||||||
.keymap = omap3evm_keymap,
|
|
||||||
.keymapsize = ARRAY_SIZE(omap3evm_keymap),
|
|
||||||
.rep = 1,
|
.rep = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -133,7 +133,7 @@ static void __init pandora_keys_gpio_init(void)
|
||||||
omap_set_gpio_debounce_time(32 * 5, GPIO_DEBOUNCE_TIME);
|
omap_set_gpio_debounce_time(32 * 5, GPIO_DEBOUNCE_TIME);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pandora_keypad_map[] = {
|
static int board_keymap[] = {
|
||||||
/* col, row, code */
|
/* col, row, code */
|
||||||
KEY(0, 0, KEY_9),
|
KEY(0, 0, KEY_9),
|
||||||
KEY(0, 1, KEY_0),
|
KEY(0, 1, KEY_0),
|
||||||
|
@ -180,11 +180,15 @@ static int pandora_keypad_map[] = {
|
||||||
KEY(5, 2, KEY_FN),
|
KEY(5, 2, KEY_FN),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct matrix_keymap_data board_map_data = {
|
||||||
|
.keymap = board_keymap,
|
||||||
|
.keymap_size = ARRAY_SIZE(board_keymap),
|
||||||
|
};
|
||||||
|
|
||||||
static struct twl4030_keypad_data pandora_kp_data = {
|
static struct twl4030_keypad_data pandora_kp_data = {
|
||||||
|
.keymap_data = &board_map_data,
|
||||||
.rows = 8,
|
.rows = 8,
|
||||||
.cols = 6,
|
.cols = 6,
|
||||||
.keymap = pandora_keypad_map,
|
|
||||||
.keymapsize = ARRAY_SIZE(pandora_keypad_map),
|
|
||||||
.rep = 1,
|
.rep = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
#define SYSTEM_REV_B_USES_VAUX3 0x1699
|
#define SYSTEM_REV_B_USES_VAUX3 0x1699
|
||||||
#define SYSTEM_REV_S_USES_VAUX3 0x8
|
#define SYSTEM_REV_S_USES_VAUX3 0x8
|
||||||
|
|
||||||
static int rx51_keymap[] = {
|
static int board_keymap[] = {
|
||||||
KEY(0, 0, KEY_Q),
|
KEY(0, 0, KEY_Q),
|
||||||
KEY(0, 1, KEY_W),
|
KEY(0, 1, KEY_W),
|
||||||
KEY(0, 2, KEY_E),
|
KEY(0, 2, KEY_E),
|
||||||
|
@ -83,11 +83,15 @@ static int rx51_keymap[] = {
|
||||||
KEY(0xff, 5, KEY_F10),
|
KEY(0xff, 5, KEY_F10),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct matrix_keymap_data board_map_data = {
|
||||||
|
.keymap = board_keymap,
|
||||||
|
.keymap_size = ARRAY_SIZE(board_keymap),
|
||||||
|
};
|
||||||
|
|
||||||
static struct twl4030_keypad_data rx51_kp_data = {
|
static struct twl4030_keypad_data rx51_kp_data = {
|
||||||
|
.keymap_data = &board_map_data,
|
||||||
.rows = 8,
|
.rows = 8,
|
||||||
.cols = 8,
|
.cols = 8,
|
||||||
.keymap = rx51_keymap,
|
|
||||||
.keymapsize = ARRAY_SIZE(rx51_keymap),
|
|
||||||
.rep = 1,
|
.rep = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#include "mmc-twl4030.h"
|
#include "mmc-twl4030.h"
|
||||||
|
|
||||||
/* Zoom2 has Qwerty keyboard*/
|
/* Zoom2 has Qwerty keyboard*/
|
||||||
static int zoom2_twl4030_keymap[] = {
|
static int board_keymap[] = {
|
||||||
KEY(0, 0, KEY_E),
|
KEY(0, 0, KEY_E),
|
||||||
KEY(1, 0, KEY_R),
|
KEY(1, 0, KEY_R),
|
||||||
KEY(2, 0, KEY_T),
|
KEY(2, 0, KEY_T),
|
||||||
|
@ -82,11 +82,15 @@ static int zoom2_twl4030_keymap[] = {
|
||||||
0
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct matrix_keymap_data board_map_data = {
|
||||||
|
.keymap = board_keymap,
|
||||||
|
.keymap_size = ARRAY_SIZE(board_keymap),
|
||||||
|
};
|
||||||
|
|
||||||
static struct twl4030_keypad_data zoom2_kp_twl4030_data = {
|
static struct twl4030_keypad_data zoom2_kp_twl4030_data = {
|
||||||
|
.keymap_data = &board_map_data,
|
||||||
.rows = 8,
|
.rows = 8,
|
||||||
.cols = 8,
|
.cols = 8,
|
||||||
.keymap = zoom2_twl4030_keymap,
|
|
||||||
.keymapsize = ARRAY_SIZE(zoom2_twl4030_keymap),
|
|
||||||
.rep = 1,
|
.rep = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
#include <asm/atomic.h>
|
#include <asm/atomic.h>
|
||||||
|
|
||||||
#include "cm.h"
|
#include "cm.h"
|
||||||
#include "cm-regbits-4xxx.h"
|
|
||||||
|
|
||||||
/* XXX move this to cm.h */
|
/* XXX move this to cm.h */
|
||||||
/* MAX_MODULE_READY_TIME: max milliseconds for module to leave idle */
|
/* MAX_MODULE_READY_TIME: max milliseconds for module to leave idle */
|
||||||
|
@ -50,19 +49,7 @@
|
||||||
*/
|
*/
|
||||||
int omap4_cm_wait_idlest_ready(u32 prcm_mod, u8 prcm_dev_offs)
|
int omap4_cm_wait_idlest_ready(u32 prcm_mod, u8 prcm_dev_offs)
|
||||||
{
|
{
|
||||||
int i = 0;
|
/* FIXME: Add clock manager related code */
|
||||||
u8 cm_id;
|
return 0;
|
||||||
u16 prcm_mod_offs;
|
|
||||||
u32 mask = OMAP4_PRCM_CM_CLKCTRL_IDLEST_MASK;
|
|
||||||
|
|
||||||
cm_id = prcm_mod >> OMAP4_PRCM_MOD_CM_ID_SHIFT;
|
|
||||||
prcm_mod_offs = prcm_mod & OMAP4_PRCM_MOD_OFFS_MASK;
|
|
||||||
|
|
||||||
while (((omap4_cm_read_mod_reg(cm_id, prcm_mod_offs, prcm_dev_offs,
|
|
||||||
OMAP4_CM_CLKCTRL_DREG) & mask) != 0) &&
|
|
||||||
(i++ < MAX_MODULE_READY_TIME))
|
|
||||||
udelay(1);
|
|
||||||
|
|
||||||
return (i < MAX_MODULE_READY_TIME) ? 0 : -EBUSY;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -355,29 +355,60 @@ static struct platform_device omap2_mcspi4 = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void omap_init_mcspi(void)
|
#ifdef CONFIG_ARCH_OMAP4
|
||||||
|
static inline void omap4_mcspi_fixup(void)
|
||||||
{
|
{
|
||||||
if (cpu_is_omap44xx()) {
|
omap2_mcspi1_resources[0].start = OMAP4_MCSPI1_BASE;
|
||||||
omap2_mcspi1_resources[0].start = OMAP4_MCSPI1_BASE;
|
omap2_mcspi1_resources[0].end = OMAP4_MCSPI1_BASE + 0xff;
|
||||||
omap2_mcspi1_resources[0].end = OMAP4_MCSPI1_BASE + 0xff;
|
omap2_mcspi2_resources[0].start = OMAP4_MCSPI2_BASE;
|
||||||
omap2_mcspi2_resources[0].start = OMAP4_MCSPI2_BASE;
|
omap2_mcspi2_resources[0].end = OMAP4_MCSPI2_BASE + 0xff;
|
||||||
omap2_mcspi2_resources[0].end = OMAP4_MCSPI2_BASE + 0xff;
|
omap2_mcspi3_resources[0].start = OMAP4_MCSPI3_BASE;
|
||||||
omap2_mcspi3_resources[0].start = OMAP4_MCSPI3_BASE;
|
omap2_mcspi3_resources[0].end = OMAP4_MCSPI3_BASE + 0xff;
|
||||||
omap2_mcspi3_resources[0].end = OMAP4_MCSPI3_BASE + 0xff;
|
omap2_mcspi4_resources[0].start = OMAP4_MCSPI4_BASE;
|
||||||
omap2_mcspi4_resources[0].start = OMAP4_MCSPI4_BASE;
|
omap2_mcspi4_resources[0].end = OMAP4_MCSPI4_BASE + 0xff;
|
||||||
omap2_mcspi4_resources[0].end = OMAP4_MCSPI4_BASE + 0xff;
|
}
|
||||||
}
|
#else
|
||||||
platform_device_register(&omap2_mcspi1);
|
static inline void omap4_mcspi_fixup(void)
|
||||||
platform_device_register(&omap2_mcspi2);
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \
|
#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3) || \
|
||||||
defined(CONFIG_ARCH_OMAP4)
|
defined(CONFIG_ARCH_OMAP4)
|
||||||
if (cpu_is_omap2430() || cpu_is_omap343x() || cpu_is_omap44xx())
|
static inline void omap2_mcspi3_init(void)
|
||||||
platform_device_register(&omap2_mcspi3);
|
{
|
||||||
|
platform_device_register(&omap2_mcspi3);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void omap2_mcspi3_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
|
#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
|
||||||
if (cpu_is_omap343x() || cpu_is_omap44xx())
|
static inline void omap2_mcspi4_init(void)
|
||||||
platform_device_register(&omap2_mcspi4);
|
{
|
||||||
|
platform_device_register(&omap2_mcspi4);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void omap2_mcspi4_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void omap_init_mcspi(void)
|
||||||
|
{
|
||||||
|
if (cpu_is_omap44xx())
|
||||||
|
omap4_mcspi_fixup();
|
||||||
|
|
||||||
|
platform_device_register(&omap2_mcspi1);
|
||||||
|
platform_device_register(&omap2_mcspi2);
|
||||||
|
|
||||||
|
if (cpu_is_omap2430() || cpu_is_omap343x() || cpu_is_omap44xx())
|
||||||
|
omap2_mcspi3_init();
|
||||||
|
|
||||||
|
if (cpu_is_omap343x() || cpu_is_omap44xx())
|
||||||
|
omap2_mcspi4_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -294,10 +294,10 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
|
||||||
else if (cpu_is_omap34xx())
|
else if (cpu_is_omap34xx())
|
||||||
hwmods = omap34xx_hwmods;
|
hwmods = omap34xx_hwmods;
|
||||||
|
|
||||||
omap_hwmod_init(hwmods);
|
|
||||||
omap2_mux_init();
|
|
||||||
#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */
|
#ifndef CONFIG_ARCH_OMAP4 /* FIXME: Remove this once the clkdev is ready */
|
||||||
/* The OPP tables have to be registered before a clk init */
|
/* The OPP tables have to be registered before a clk init */
|
||||||
|
omap_hwmod_init(hwmods);
|
||||||
|
omap2_mux_init();
|
||||||
omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps);
|
omap_pm_if_early_init(mpu_opps, dsp_opps, l3_opps);
|
||||||
pwrdm_init(powerdomains_omap);
|
pwrdm_init(powerdomains_omap);
|
||||||
clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
|
clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
|
||||||
|
|
|
@ -79,7 +79,7 @@ static int omap2_iommu_enable(struct iommu *obj)
|
||||||
l = iommu_read_reg(obj, MMU_SYSSTATUS);
|
l = iommu_read_reg(obj, MMU_SYSSTATUS);
|
||||||
if (l & MMU_SYS_RESETDONE)
|
if (l & MMU_SYS_RESETDONE)
|
||||||
break;
|
break;
|
||||||
} while (time_after(jiffies, timeout));
|
} while (!time_after(jiffies, timeout));
|
||||||
|
|
||||||
if (!(l & MMU_SYS_RESETDONE)) {
|
if (!(l & MMU_SYS_RESETDONE)) {
|
||||||
dev_err(obj->dev, "can't take mmu out of reset\n");
|
dev_err(obj->dev, "can't take mmu out of reset\n");
|
||||||
|
|
|
@ -30,6 +30,14 @@
|
||||||
#define MAILBOX_IRQ_NEWMSG(u) (1 << (2 * (u)))
|
#define MAILBOX_IRQ_NEWMSG(u) (1 << (2 * (u)))
|
||||||
#define MAILBOX_IRQ_NOTFULL(u) (1 << (2 * (u) + 1))
|
#define MAILBOX_IRQ_NOTFULL(u) (1 << (2 * (u) + 1))
|
||||||
|
|
||||||
|
/* SYSCONFIG: register bit definition */
|
||||||
|
#define AUTOIDLE (1 << 0)
|
||||||
|
#define SOFTRESET (1 << 1)
|
||||||
|
#define SMARTIDLE (2 << 3)
|
||||||
|
|
||||||
|
/* SYSSTATUS: register bit definition */
|
||||||
|
#define RESETDONE (1 << 0)
|
||||||
|
|
||||||
#define MBOX_REG_SIZE 0x120
|
#define MBOX_REG_SIZE 0x120
|
||||||
#define MBOX_NR_REGS (MBOX_REG_SIZE / sizeof(u32))
|
#define MBOX_NR_REGS (MBOX_REG_SIZE / sizeof(u32))
|
||||||
|
|
||||||
|
@ -69,21 +77,33 @@ static inline void mbox_write_reg(u32 val, size_t ofs)
|
||||||
/* Mailbox H/W preparations */
|
/* Mailbox H/W preparations */
|
||||||
static int omap2_mbox_startup(struct omap_mbox *mbox)
|
static int omap2_mbox_startup(struct omap_mbox *mbox)
|
||||||
{
|
{
|
||||||
unsigned int l;
|
u32 l;
|
||||||
|
unsigned long timeout;
|
||||||
|
|
||||||
mbox_ick_handle = clk_get(NULL, "mailboxes_ick");
|
mbox_ick_handle = clk_get(NULL, "mailboxes_ick");
|
||||||
if (IS_ERR(mbox_ick_handle)) {
|
if (IS_ERR(mbox_ick_handle)) {
|
||||||
printk("Could not get mailboxes_ick\n");
|
pr_err("Can't get mailboxes_ick\n");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
clk_enable(mbox_ick_handle);
|
clk_enable(mbox_ick_handle);
|
||||||
|
|
||||||
|
mbox_write_reg(SOFTRESET, MAILBOX_SYSCONFIG);
|
||||||
|
timeout = jiffies + msecs_to_jiffies(20);
|
||||||
|
do {
|
||||||
|
l = mbox_read_reg(MAILBOX_SYSSTATUS);
|
||||||
|
if (l & RESETDONE)
|
||||||
|
break;
|
||||||
|
} while (!time_after(jiffies, timeout));
|
||||||
|
|
||||||
|
if (!(l & RESETDONE)) {
|
||||||
|
pr_err("Can't take mmu out of reset\n");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
l = mbox_read_reg(MAILBOX_REVISION);
|
l = mbox_read_reg(MAILBOX_REVISION);
|
||||||
pr_info("omap mailbox rev %d.%d\n", (l & 0xf0) >> 4, (l & 0x0f));
|
pr_info("omap mailbox rev %d.%d\n", (l & 0xf0) >> 4, (l & 0x0f));
|
||||||
|
|
||||||
/* set smart-idle & autoidle */
|
l = SMARTIDLE | AUTOIDLE;
|
||||||
l = mbox_read_reg(MAILBOX_SYSCONFIG);
|
|
||||||
l |= 0x00000011;
|
|
||||||
mbox_write_reg(l, MAILBOX_SYSCONFIG);
|
mbox_write_reg(l, MAILBOX_SYSCONFIG);
|
||||||
|
|
||||||
omap2_mbox_enable_irq(mbox, IRQ_RX);
|
omap2_mbox_enable_irq(mbox, IRQ_RX);
|
||||||
|
@ -156,6 +176,9 @@ static void omap2_mbox_ack_irq(struct omap_mbox *mbox,
|
||||||
u32 bit = (irq == IRQ_TX) ? p->notfull_bit : p->newmsg_bit;
|
u32 bit = (irq == IRQ_TX) ? p->notfull_bit : p->newmsg_bit;
|
||||||
|
|
||||||
mbox_write_reg(bit, p->irqstatus);
|
mbox_write_reg(bit, p->irqstatus);
|
||||||
|
|
||||||
|
/* Flush posted write for irq status to avoid spurious interrupts */
|
||||||
|
mbox_read_reg(p->irqstatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int omap2_mbox_is_irq(struct omap_mbox *mbox,
|
static int omap2_mbox_is_irq(struct omap_mbox *mbox,
|
||||||
|
|
|
@ -460,6 +460,8 @@ MUX_CFG_34XX("AF26_34XX_GPIO0", 0x1e0,
|
||||||
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
|
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
|
||||||
MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18,
|
MUX_CFG_34XX("AF22_34XX_GPIO9", 0xa18,
|
||||||
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
|
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
|
||||||
|
MUX_CFG_34XX("AG9_34XX_GPIO23", 0x5ee,
|
||||||
|
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
|
||||||
MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
|
MUX_CFG_34XX("AH8_34XX_GPIO29", 0x5fa,
|
||||||
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
|
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_INPUT)
|
||||||
MUX_CFG_34XX("U8_34XX_GPIO54_OUT", 0x0b4,
|
MUX_CFG_34XX("U8_34XX_GPIO54_OUT", 0x0b4,
|
||||||
|
@ -472,6 +474,8 @@ MUX_CFG_34XX("G25_34XX_GPIO86_OUT", 0x0fc,
|
||||||
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
|
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
|
||||||
MUX_CFG_34XX("AG4_34XX_GPIO134_OUT", 0x160,
|
MUX_CFG_34XX("AG4_34XX_GPIO134_OUT", 0x160,
|
||||||
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
|
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
|
||||||
|
MUX_CFG_34XX("AF4_34XX_GPIO135_OUT", 0x162,
|
||||||
|
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
|
||||||
MUX_CFG_34XX("AE4_34XX_GPIO136_OUT", 0x164,
|
MUX_CFG_34XX("AE4_34XX_GPIO136_OUT", 0x164,
|
||||||
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
|
OMAP34XX_MUX_MODE4 | OMAP34XX_PIN_OUTPUT)
|
||||||
MUX_CFG_34XX("AF6_34XX_GPIO140_UP", 0x16c,
|
MUX_CFG_34XX("AF6_34XX_GPIO140_UP", 0x16c,
|
||||||
|
|
|
@ -110,7 +110,7 @@ static struct plat_serial8250_port serial_platform_data2[] = {
|
||||||
.uartclk = OMAP24XX_BASE_BAUD * 16,
|
.uartclk = OMAP24XX_BASE_BAUD * 16,
|
||||||
}, {
|
}, {
|
||||||
#ifdef CONFIG_ARCH_OMAP4
|
#ifdef CONFIG_ARCH_OMAP4
|
||||||
.membase = IO_ADDRESS(OMAP_UART4_BASE),
|
.membase = OMAP2_IO_ADDRESS(OMAP_UART4_BASE),
|
||||||
.mapbase = OMAP_UART4_BASE,
|
.mapbase = OMAP_UART4_BASE,
|
||||||
.irq = 70,
|
.irq = 70,
|
||||||
.flags = UPF_BOOT_AUTOCONF,
|
.flags = UPF_BOOT_AUTOCONF,
|
||||||
|
@ -126,7 +126,7 @@ static struct plat_serial8250_port serial_platform_data2[] = {
|
||||||
#ifdef CONFIG_ARCH_OMAP4
|
#ifdef CONFIG_ARCH_OMAP4
|
||||||
static struct plat_serial8250_port serial_platform_data3[] = {
|
static struct plat_serial8250_port serial_platform_data3[] = {
|
||||||
{
|
{
|
||||||
.membase = IO_ADDRESS(OMAP_UART4_BASE),
|
.membase = OMAP2_IO_ADDRESS(OMAP_UART4_BASE),
|
||||||
.mapbase = OMAP_UART4_BASE,
|
.mapbase = OMAP_UART4_BASE,
|
||||||
.irq = 70,
|
.irq = 70,
|
||||||
.flags = UPF_BOOT_AUTOCONF,
|
.flags = UPF_BOOT_AUTOCONF,
|
||||||
|
@ -579,7 +579,7 @@ static struct omap_uart_state omap_uart[OMAP_MAX_NR_PORTS] = {
|
||||||
{
|
{
|
||||||
.pdev = {
|
.pdev = {
|
||||||
.name = "serial8250",
|
.name = "serial8250",
|
||||||
.id = 3
|
.id = 3,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = serial_platform_data3,
|
.platform_data = serial_platform_data3,
|
||||||
},
|
},
|
||||||
|
|
|
@ -71,11 +71,6 @@ config SA1100_H3600
|
||||||
<http://www.handhelds.org/Compaq/index.html#iPAQ_H3600>
|
<http://www.handhelds.org/Compaq/index.html#iPAQ_H3600>
|
||||||
<http://www.compaq.com/products/handhelds/pocketpc/>
|
<http://www.compaq.com/products/handhelds/pocketpc/>
|
||||||
|
|
||||||
config SA1100_H3XXX
|
|
||||||
bool
|
|
||||||
depends on SA1100_H3100 || SA1100_H3600
|
|
||||||
default y
|
|
||||||
|
|
||||||
config SA1100_BADGE4
|
config SA1100_BADGE4
|
||||||
bool "HP Labs BadgePAD 4"
|
bool "HP Labs BadgePAD 4"
|
||||||
select SA1111
|
select SA1111
|
||||||
|
|
|
@ -77,7 +77,7 @@ static struct clock_event_device ckevt_sa1100_osmr0 = {
|
||||||
.set_mode = sa1100_osmr0_set_mode,
|
.set_mode = sa1100_osmr0_set_mode,
|
||||||
};
|
};
|
||||||
|
|
||||||
static cycle_t sa1100_read_oscr(void)
|
static cycle_t sa1100_read_oscr(struct clocksource *s)
|
||||||
{
|
{
|
||||||
return OSCR;
|
return OSCR;
|
||||||
}
|
}
|
||||||
|
|
|
@ -281,6 +281,16 @@ int gpio_unregister_callback(unsigned gpio)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(gpio_unregister_callback);
|
EXPORT_SYMBOL(gpio_unregister_callback);
|
||||||
|
|
||||||
|
/* Non-zero means valid */
|
||||||
|
int gpio_is_valid(int number)
|
||||||
|
{
|
||||||
|
if (number >= 0 &&
|
||||||
|
number < (U300_GPIO_NUM_PORTS * U300_GPIO_PINS_PER_PORT))
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(gpio_is_valid);
|
||||||
|
|
||||||
int gpio_request(unsigned gpio, const char *label)
|
int gpio_request(unsigned gpio, const char *label)
|
||||||
{
|
{
|
||||||
if (gpio_pin[gpio].users)
|
if (gpio_pin[gpio].users)
|
||||||
|
|
|
@ -258,6 +258,7 @@
|
||||||
#define PIN_TO_PORT(val) (val >> 3)
|
#define PIN_TO_PORT(val) (val >> 3)
|
||||||
|
|
||||||
/* These can be found in arch/arm/mach-u300/gpio.c */
|
/* These can be found in arch/arm/mach-u300/gpio.c */
|
||||||
|
extern int gpio_is_valid(int number);
|
||||||
extern int gpio_request(unsigned gpio, const char *label);
|
extern int gpio_request(unsigned gpio, const char *label);
|
||||||
extern void gpio_free(unsigned gpio);
|
extern void gpio_free(unsigned gpio);
|
||||||
extern int gpio_direction_input(unsigned gpio);
|
extern int gpio_direction_input(unsigned gpio);
|
||||||
|
|
|
@ -17,7 +17,7 @@ config CPU_ARM610
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_COPY_V3 if MMU
|
select CPU_COPY_V3 if MMU
|
||||||
select CPU_TLB_V3 if MMU
|
select CPU_TLB_V3 if MMU
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
help
|
help
|
||||||
The ARM610 is the successor to the ARM3 processor
|
The ARM610 is the successor to the ARM3 processor
|
||||||
and was produced by VLSI Technology Inc.
|
and was produced by VLSI Technology Inc.
|
||||||
|
@ -31,7 +31,7 @@ config CPU_ARM7TDMI
|
||||||
depends on !MMU
|
depends on !MMU
|
||||||
select CPU_32v4T
|
select CPU_32v4T
|
||||||
select CPU_ABRT_LV4T
|
select CPU_ABRT_LV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4
|
select CPU_CACHE_V4
|
||||||
help
|
help
|
||||||
A 32-bit RISC microprocessor based on the ARM7 processor core
|
A 32-bit RISC microprocessor based on the ARM7 processor core
|
||||||
|
@ -49,7 +49,7 @@ config CPU_ARM710
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_COPY_V3 if MMU
|
select CPU_COPY_V3 if MMU
|
||||||
select CPU_TLB_V3 if MMU
|
select CPU_TLB_V3 if MMU
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
help
|
help
|
||||||
A 32-bit RISC microprocessor based on the ARM7 processor core
|
A 32-bit RISC microprocessor based on the ARM7 processor core
|
||||||
designed by Advanced RISC Machines Ltd. The ARM710 is the
|
designed by Advanced RISC Machines Ltd. The ARM710 is the
|
||||||
|
@ -64,7 +64,7 @@ config CPU_ARM720T
|
||||||
bool "Support ARM720T processor" if ARCH_INTEGRATOR
|
bool "Support ARM720T processor" if ARCH_INTEGRATOR
|
||||||
select CPU_32v4T
|
select CPU_32v4T
|
||||||
select CPU_ABRT_LV4T
|
select CPU_ABRT_LV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4
|
select CPU_CACHE_V4
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -83,7 +83,7 @@ config CPU_ARM740T
|
||||||
depends on !MMU
|
depends on !MMU
|
||||||
select CPU_32v4T
|
select CPU_32v4T
|
||||||
select CPU_ABRT_LV4T
|
select CPU_ABRT_LV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V3 # although the core is v4t
|
select CPU_CACHE_V3 # although the core is v4t
|
||||||
select CPU_CP15_MPU
|
select CPU_CP15_MPU
|
||||||
help
|
help
|
||||||
|
@ -100,7 +100,7 @@ config CPU_ARM9TDMI
|
||||||
depends on !MMU
|
depends on !MMU
|
||||||
select CPU_32v4T
|
select CPU_32v4T
|
||||||
select CPU_ABRT_NOMMU
|
select CPU_ABRT_NOMMU
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4
|
select CPU_CACHE_V4
|
||||||
help
|
help
|
||||||
A 32-bit RISC microprocessor based on the ARM9 processor core
|
A 32-bit RISC microprocessor based on the ARM9 processor core
|
||||||
|
@ -114,7 +114,7 @@ config CPU_ARM920T
|
||||||
bool "Support ARM920T processor" if ARCH_INTEGRATOR
|
bool "Support ARM920T processor" if ARCH_INTEGRATOR
|
||||||
select CPU_32v4T
|
select CPU_32v4T
|
||||||
select CPU_ABRT_EV4T
|
select CPU_ABRT_EV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4WT
|
select CPU_CACHE_V4WT
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -135,7 +135,7 @@ config CPU_ARM922T
|
||||||
bool "Support ARM922T processor" if ARCH_INTEGRATOR
|
bool "Support ARM922T processor" if ARCH_INTEGRATOR
|
||||||
select CPU_32v4T
|
select CPU_32v4T
|
||||||
select CPU_ABRT_EV4T
|
select CPU_ABRT_EV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4WT
|
select CPU_CACHE_V4WT
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -154,7 +154,7 @@ config CPU_ARM925T
|
||||||
bool "Support ARM925T processor" if ARCH_OMAP1
|
bool "Support ARM925T processor" if ARCH_OMAP1
|
||||||
select CPU_32v4T
|
select CPU_32v4T
|
||||||
select CPU_ABRT_EV4T
|
select CPU_ABRT_EV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4WT
|
select CPU_CACHE_V4WT
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -173,7 +173,7 @@ config CPU_ARM926T
|
||||||
bool "Support ARM926T processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB
|
bool "Support ARM926T processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV5TJ
|
select CPU_ABRT_EV5TJ
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_COPY_V4WB if MMU
|
select CPU_COPY_V4WB if MMU
|
||||||
|
@ -191,7 +191,7 @@ config CPU_FA526
|
||||||
bool
|
bool
|
||||||
select CPU_32v4
|
select CPU_32v4
|
||||||
select CPU_ABRT_EV4
|
select CPU_ABRT_EV4
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_CACHE_FA
|
select CPU_CACHE_FA
|
||||||
|
@ -210,7 +210,7 @@ config CPU_ARM940T
|
||||||
depends on !MMU
|
depends on !MMU
|
||||||
select CPU_32v4T
|
select CPU_32v4T
|
||||||
select CPU_ABRT_NOMMU
|
select CPU_ABRT_NOMMU
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MPU
|
select CPU_CP15_MPU
|
||||||
help
|
help
|
||||||
|
@ -228,7 +228,7 @@ config CPU_ARM946E
|
||||||
depends on !MMU
|
depends on !MMU
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_NOMMU
|
select CPU_ABRT_NOMMU
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MPU
|
select CPU_CP15_MPU
|
||||||
help
|
help
|
||||||
|
@ -244,7 +244,7 @@ config CPU_ARM1020
|
||||||
bool "Support ARM1020T (rev 0) processor" if ARCH_INTEGRATOR
|
bool "Support ARM1020T (rev 0) processor" if ARCH_INTEGRATOR
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV4T
|
select CPU_ABRT_EV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4WT
|
select CPU_CACHE_V4WT
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -262,7 +262,7 @@ config CPU_ARM1020E
|
||||||
bool "Support ARM1020E processor" if ARCH_INTEGRATOR
|
bool "Support ARM1020E processor" if ARCH_INTEGRATOR
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV4T
|
select CPU_ABRT_EV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4WT
|
select CPU_CACHE_V4WT
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -275,7 +275,7 @@ config CPU_ARM1022
|
||||||
bool "Support ARM1022E processor" if ARCH_INTEGRATOR
|
bool "Support ARM1022E processor" if ARCH_INTEGRATOR
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV4T
|
select CPU_ABRT_EV4T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_COPY_V4WB if MMU # can probably do better
|
select CPU_COPY_V4WB if MMU # can probably do better
|
||||||
|
@ -293,7 +293,7 @@ config CPU_ARM1026
|
||||||
bool "Support ARM1026EJ-S processor" if ARCH_INTEGRATOR
|
bool "Support ARM1026EJ-S processor" if ARCH_INTEGRATOR
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10
|
select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_COPY_V4WB if MMU # can probably do better
|
select CPU_COPY_V4WB if MMU # can probably do better
|
||||||
|
@ -311,7 +311,7 @@ config CPU_SA110
|
||||||
select CPU_32v3 if ARCH_RPC
|
select CPU_32v3 if ARCH_RPC
|
||||||
select CPU_32v4 if !ARCH_RPC
|
select CPU_32v4 if !ARCH_RPC
|
||||||
select CPU_ABRT_EV4
|
select CPU_ABRT_EV4
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4WB
|
select CPU_CACHE_V4WB
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -331,7 +331,7 @@ config CPU_SA1100
|
||||||
bool
|
bool
|
||||||
select CPU_32v4
|
select CPU_32v4
|
||||||
select CPU_ABRT_EV4
|
select CPU_ABRT_EV4
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_V4WB
|
select CPU_CACHE_V4WB
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -342,7 +342,7 @@ config CPU_XSCALE
|
||||||
bool
|
bool
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV5T
|
select CPU_ABRT_EV5T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_TLB_V4WBI if MMU
|
select CPU_TLB_V4WBI if MMU
|
||||||
|
@ -352,7 +352,7 @@ config CPU_XSC3
|
||||||
bool
|
bool
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV5T
|
select CPU_ABRT_EV5T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_TLB_V4WBI if MMU
|
select CPU_TLB_V4WBI if MMU
|
||||||
|
@ -363,7 +363,7 @@ config CPU_MOHAWK
|
||||||
bool
|
bool
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV5T
|
select CPU_ABRT_EV5T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_TLB_V4WBI if MMU
|
select CPU_TLB_V4WBI if MMU
|
||||||
|
@ -374,7 +374,7 @@ config CPU_FEROCEON
|
||||||
bool
|
bool
|
||||||
select CPU_32v5
|
select CPU_32v5
|
||||||
select CPU_ABRT_EV5T
|
select CPU_ABRT_EV5T
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_LEGACY
|
||||||
select CPU_CACHE_VIVT
|
select CPU_CACHE_VIVT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
select CPU_COPY_FEROCEON if MMU
|
select CPU_COPY_FEROCEON if MMU
|
||||||
|
@ -394,7 +394,7 @@ config CPU_V6
|
||||||
bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
|
bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
|
||||||
select CPU_32v6
|
select CPU_32v6
|
||||||
select CPU_ABRT_EV6
|
select CPU_ABRT_EV6
|
||||||
select CPU_PABRT_NOIFAR
|
select CPU_PABRT_V6
|
||||||
select CPU_CACHE_V6
|
select CPU_CACHE_V6
|
||||||
select CPU_CACHE_VIPT
|
select CPU_CACHE_VIPT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -420,7 +420,7 @@ config CPU_V7
|
||||||
select CPU_32v6K
|
select CPU_32v6K
|
||||||
select CPU_32v7
|
select CPU_32v7
|
||||||
select CPU_ABRT_EV7
|
select CPU_ABRT_EV7
|
||||||
select CPU_PABRT_IFAR
|
select CPU_PABRT_V7
|
||||||
select CPU_CACHE_V7
|
select CPU_CACHE_V7
|
||||||
select CPU_CACHE_VIPT
|
select CPU_CACHE_VIPT
|
||||||
select CPU_CP15_MMU
|
select CPU_CP15_MMU
|
||||||
|
@ -482,10 +482,13 @@ config CPU_ABRT_EV6
|
||||||
config CPU_ABRT_EV7
|
config CPU_ABRT_EV7
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config CPU_PABRT_IFAR
|
config CPU_PABRT_LEGACY
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config CPU_PABRT_NOIFAR
|
config CPU_PABRT_V6
|
||||||
|
bool
|
||||||
|
|
||||||
|
config CPU_PABRT_V7
|
||||||
bool
|
bool
|
||||||
|
|
||||||
# The cache model
|
# The cache model
|
||||||
|
|
|
@ -27,6 +27,10 @@ obj-$(CONFIG_CPU_ABRT_EV5TJ) += abort-ev5tj.o
|
||||||
obj-$(CONFIG_CPU_ABRT_EV6) += abort-ev6.o
|
obj-$(CONFIG_CPU_ABRT_EV6) += abort-ev6.o
|
||||||
obj-$(CONFIG_CPU_ABRT_EV7) += abort-ev7.o
|
obj-$(CONFIG_CPU_ABRT_EV7) += abort-ev7.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_CPU_PABRT_LEGACY) += pabort-legacy.o
|
||||||
|
obj-$(CONFIG_CPU_PABRT_V6) += pabort-v6.o
|
||||||
|
obj-$(CONFIG_CPU_PABRT_V7) += pabort-v7.o
|
||||||
|
|
||||||
obj-$(CONFIG_CPU_CACHE_V3) += cache-v3.o
|
obj-$(CONFIG_CPU_CACHE_V3) += cache-v3.o
|
||||||
obj-$(CONFIG_CPU_CACHE_V4) += cache-v4.o
|
obj-$(CONFIG_CPU_CACHE_V4) += cache-v4.o
|
||||||
obj-$(CONFIG_CPU_CACHE_V4WT) += cache-v4wt.o
|
obj-$(CONFIG_CPU_CACHE_V4WT) += cache-v4wt.o
|
||||||
|
|
|
@ -519,9 +519,58 @@ do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
||||||
arm_notify_die("", regs, &info, fsr, 0);
|
arm_notify_die("", regs, &info, fsr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static struct fsr_info ifsr_info[] = {
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 0" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 1" },
|
||||||
|
{ do_bad, SIGBUS, 0, "debug event" },
|
||||||
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "section access flag fault" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 4" },
|
||||||
|
{ do_translation_fault, SIGSEGV, SEGV_MAPERR, "section translation fault" },
|
||||||
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "page access flag fault" },
|
||||||
|
{ do_page_fault, SIGSEGV, SEGV_MAPERR, "page translation fault" },
|
||||||
|
{ do_bad, SIGBUS, 0, "external abort on non-linefetch" },
|
||||||
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "section domain fault" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 10" },
|
||||||
|
{ do_bad, SIGSEGV, SEGV_ACCERR, "page domain fault" },
|
||||||
|
{ do_bad, SIGBUS, 0, "external abort on translation" },
|
||||||
|
{ do_sect_fault, SIGSEGV, SEGV_ACCERR, "section permission fault" },
|
||||||
|
{ do_bad, SIGBUS, 0, "external abort on translation" },
|
||||||
|
{ do_page_fault, SIGSEGV, SEGV_ACCERR, "page permission fault" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 16" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 17" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 18" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 19" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 20" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 21" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 22" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 23" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 24" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 25" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 26" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 27" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 28" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 29" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 30" },
|
||||||
|
{ do_bad, SIGBUS, 0, "unknown 31" },
|
||||||
|
};
|
||||||
|
|
||||||
asmlinkage void __exception
|
asmlinkage void __exception
|
||||||
do_PrefetchAbort(unsigned long addr, struct pt_regs *regs)
|
do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
do_translation_fault(addr, FSR_LNX_PF, regs);
|
const struct fsr_info *inf = ifsr_info + fsr_fs(ifsr);
|
||||||
|
struct siginfo info;
|
||||||
|
|
||||||
|
if (!inf->fn(addr, ifsr | FSR_LNX_PF, regs))
|
||||||
|
return;
|
||||||
|
|
||||||
|
printk(KERN_ALERT "Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n",
|
||||||
|
inf->name, ifsr, addr);
|
||||||
|
|
||||||
|
info.si_signo = inf->sig;
|
||||||
|
info.si_errno = 0;
|
||||||
|
info.si_code = inf->code;
|
||||||
|
info.si_addr = (void __user *)addr;
|
||||||
|
arm_notify_die("", regs, &info, ifsr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ int valid_phys_addr_range(unsigned long addr, size_t size)
|
||||||
{
|
{
|
||||||
if (addr < PHYS_OFFSET)
|
if (addr < PHYS_OFFSET)
|
||||||
return 0;
|
return 0;
|
||||||
if (addr + size >= __pa(high_memory - 1))
|
if (addr + size > __pa(high_memory - 1) + 1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <asm/cachetype.h>
|
#include <asm/cachetype.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/sizes.h>
|
#include <asm/sizes.h>
|
||||||
|
#include <asm/smp_plat.h>
|
||||||
#include <asm/tlb.h>
|
#include <asm/tlb.h>
|
||||||
#include <asm/highmem.h>
|
#include <asm/highmem.h>
|
||||||
|
|
||||||
|
@ -709,10 +710,6 @@ static void __init sanity_check_meminfo(void)
|
||||||
if (meminfo.nr_banks >= NR_BANKS) {
|
if (meminfo.nr_banks >= NR_BANKS) {
|
||||||
printk(KERN_CRIT "NR_BANKS too low, "
|
printk(KERN_CRIT "NR_BANKS too low, "
|
||||||
"ignoring high memory\n");
|
"ignoring high memory\n");
|
||||||
} else if (cache_is_vipt_aliasing()) {
|
|
||||||
printk(KERN_CRIT "HIGHMEM is not yet supported "
|
|
||||||
"with VIPT aliasing cache, "
|
|
||||||
"ignoring high memory\n");
|
|
||||||
} else {
|
} else {
|
||||||
memmove(bank + 1, bank,
|
memmove(bank + 1, bank,
|
||||||
(meminfo.nr_banks - i) * sizeof(*bank));
|
(meminfo.nr_banks - i) * sizeof(*bank));
|
||||||
|
@ -726,6 +723,8 @@ static void __init sanity_check_meminfo(void)
|
||||||
bank->size = VMALLOC_MIN - __va(bank->start);
|
bank->size = VMALLOC_MIN - __va(bank->start);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
bank->highmem = highmem;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check whether this memory bank would entirely overlap
|
* Check whether this memory bank would entirely overlap
|
||||||
* the vmalloc area.
|
* the vmalloc area.
|
||||||
|
@ -754,6 +753,38 @@ static void __init sanity_check_meminfo(void)
|
||||||
#endif
|
#endif
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
|
#ifdef CONFIG_HIGHMEM
|
||||||
|
if (highmem) {
|
||||||
|
const char *reason = NULL;
|
||||||
|
|
||||||
|
if (cache_is_vipt_aliasing()) {
|
||||||
|
/*
|
||||||
|
* Interactions between kmap and other mappings
|
||||||
|
* make highmem support with aliasing VIPT caches
|
||||||
|
* rather difficult.
|
||||||
|
*/
|
||||||
|
reason = "with VIPT aliasing cache";
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
} else if (tlb_ops_need_broadcast()) {
|
||||||
|
/*
|
||||||
|
* kmap_high needs to occasionally flush TLB entries,
|
||||||
|
* however, if the TLB entries need to be broadcast
|
||||||
|
* we may deadlock:
|
||||||
|
* kmap_high(irqs off)->flush_all_zero_pkmaps->
|
||||||
|
* flush_tlb_kernel_range->smp_call_function_many
|
||||||
|
* (must not be called with irqs off)
|
||||||
|
*/
|
||||||
|
reason = "without hardware TLB ops broadcasting";
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (reason) {
|
||||||
|
printk(KERN_CRIT "HIGHMEM is not supported %s, ignoring high memory\n",
|
||||||
|
reason);
|
||||||
|
while (j > 0 && meminfo.bank[j - 1].highmem)
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
meminfo.nr_banks = j;
|
meminfo.nr_banks = j;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
19
arch/arm/mm/pabort-legacy.S
Normal file
19
arch/arm/mm/pabort-legacy.S
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: legacy_pabort
|
||||||
|
*
|
||||||
|
* Params : r0 = address of aborted instruction
|
||||||
|
*
|
||||||
|
* Returns : r0 = address of abort
|
||||||
|
* : r1 = Simulated IFSR with section translation fault status
|
||||||
|
*
|
||||||
|
* Purpose : obtain information about current prefetch abort.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.align 5
|
||||||
|
ENTRY(legacy_pabort)
|
||||||
|
mov r1, #5
|
||||||
|
mov pc, lr
|
||||||
|
ENDPROC(legacy_pabort)
|
19
arch/arm/mm/pabort-v6.S
Normal file
19
arch/arm/mm/pabort-v6.S
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: v6_pabort
|
||||||
|
*
|
||||||
|
* Params : r0 = address of aborted instruction
|
||||||
|
*
|
||||||
|
* Returns : r0 = address of abort
|
||||||
|
* : r1 = IFSR
|
||||||
|
*
|
||||||
|
* Purpose : obtain information about current prefetch abort.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.align 5
|
||||||
|
ENTRY(v6_pabort)
|
||||||
|
mrc p15, 0, r1, c5, c0, 1 @ get IFSR
|
||||||
|
mov pc, lr
|
||||||
|
ENDPROC(v6_pabort)
|
20
arch/arm/mm/pabort-v7.S
Normal file
20
arch/arm/mm/pabort-v7.S
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function: v6_pabort
|
||||||
|
*
|
||||||
|
* Params : r0 = address of aborted instruction
|
||||||
|
*
|
||||||
|
* Returns : r0 = address of abort
|
||||||
|
* : r1 = IFSR
|
||||||
|
*
|
||||||
|
* Purpose : obtain information about current prefetch abort.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.align 5
|
||||||
|
ENTRY(v7_pabort)
|
||||||
|
mrc p15, 0, r0, c6, c0, 2 @ get IFAR
|
||||||
|
mrc p15, 0, r1, c5, c0, 1 @ get IFSR
|
||||||
|
mov pc, lr
|
||||||
|
ENDPROC(v7_pabort)
|
|
@ -449,7 +449,7 @@ arm1020_crval:
|
||||||
.type arm1020_processor_functions, #object
|
.type arm1020_processor_functions, #object
|
||||||
arm1020_processor_functions:
|
arm1020_processor_functions:
|
||||||
.word v4t_early_abort
|
.word v4t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm1020_proc_init
|
.word cpu_arm1020_proc_init
|
||||||
.word cpu_arm1020_proc_fin
|
.word cpu_arm1020_proc_fin
|
||||||
.word cpu_arm1020_reset
|
.word cpu_arm1020_reset
|
||||||
|
|
|
@ -430,7 +430,7 @@ arm1020e_crval:
|
||||||
.type arm1020e_processor_functions, #object
|
.type arm1020e_processor_functions, #object
|
||||||
arm1020e_processor_functions:
|
arm1020e_processor_functions:
|
||||||
.word v4t_early_abort
|
.word v4t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm1020e_proc_init
|
.word cpu_arm1020e_proc_init
|
||||||
.word cpu_arm1020e_proc_fin
|
.word cpu_arm1020e_proc_fin
|
||||||
.word cpu_arm1020e_reset
|
.word cpu_arm1020e_reset
|
||||||
|
|
|
@ -413,7 +413,7 @@ arm1022_crval:
|
||||||
.type arm1022_processor_functions, #object
|
.type arm1022_processor_functions, #object
|
||||||
arm1022_processor_functions:
|
arm1022_processor_functions:
|
||||||
.word v4t_early_abort
|
.word v4t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm1022_proc_init
|
.word cpu_arm1022_proc_init
|
||||||
.word cpu_arm1022_proc_fin
|
.word cpu_arm1022_proc_fin
|
||||||
.word cpu_arm1022_reset
|
.word cpu_arm1022_reset
|
||||||
|
|
|
@ -408,7 +408,7 @@ arm1026_crval:
|
||||||
.type arm1026_processor_functions, #object
|
.type arm1026_processor_functions, #object
|
||||||
arm1026_processor_functions:
|
arm1026_processor_functions:
|
||||||
.word v5t_early_abort
|
.word v5t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm1026_proc_init
|
.word cpu_arm1026_proc_init
|
||||||
.word cpu_arm1026_proc_fin
|
.word cpu_arm1026_proc_fin
|
||||||
.word cpu_arm1026_reset
|
.word cpu_arm1026_reset
|
||||||
|
|
|
@ -278,7 +278,7 @@ __arm7_setup: mov r0, #0
|
||||||
.type arm6_processor_functions, #object
|
.type arm6_processor_functions, #object
|
||||||
ENTRY(arm6_processor_functions)
|
ENTRY(arm6_processor_functions)
|
||||||
.word cpu_arm6_data_abort
|
.word cpu_arm6_data_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm6_proc_init
|
.word cpu_arm6_proc_init
|
||||||
.word cpu_arm6_proc_fin
|
.word cpu_arm6_proc_fin
|
||||||
.word cpu_arm6_reset
|
.word cpu_arm6_reset
|
||||||
|
@ -295,7 +295,7 @@ ENTRY(arm6_processor_functions)
|
||||||
.type arm7_processor_functions, #object
|
.type arm7_processor_functions, #object
|
||||||
ENTRY(arm7_processor_functions)
|
ENTRY(arm7_processor_functions)
|
||||||
.word cpu_arm7_data_abort
|
.word cpu_arm7_data_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm7_proc_init
|
.word cpu_arm7_proc_init
|
||||||
.word cpu_arm7_proc_fin
|
.word cpu_arm7_proc_fin
|
||||||
.word cpu_arm7_reset
|
.word cpu_arm7_reset
|
||||||
|
|
|
@ -181,7 +181,7 @@ arm720_crval:
|
||||||
.type arm720_processor_functions, #object
|
.type arm720_processor_functions, #object
|
||||||
ENTRY(arm720_processor_functions)
|
ENTRY(arm720_processor_functions)
|
||||||
.word v4t_late_abort
|
.word v4t_late_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm720_proc_init
|
.word cpu_arm720_proc_init
|
||||||
.word cpu_arm720_proc_fin
|
.word cpu_arm720_proc_fin
|
||||||
.word cpu_arm720_reset
|
.word cpu_arm720_reset
|
||||||
|
|
|
@ -126,7 +126,7 @@ __arm740_setup:
|
||||||
.type arm740_processor_functions, #object
|
.type arm740_processor_functions, #object
|
||||||
ENTRY(arm740_processor_functions)
|
ENTRY(arm740_processor_functions)
|
||||||
.word v4t_late_abort
|
.word v4t_late_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm740_proc_init
|
.word cpu_arm740_proc_init
|
||||||
.word cpu_arm740_proc_fin
|
.word cpu_arm740_proc_fin
|
||||||
.word cpu_arm740_reset
|
.word cpu_arm740_reset
|
||||||
|
|
|
@ -64,7 +64,7 @@ __arm7tdmi_setup:
|
||||||
.type arm7tdmi_processor_functions, #object
|
.type arm7tdmi_processor_functions, #object
|
||||||
ENTRY(arm7tdmi_processor_functions)
|
ENTRY(arm7tdmi_processor_functions)
|
||||||
.word v4t_late_abort
|
.word v4t_late_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm7tdmi_proc_init
|
.word cpu_arm7tdmi_proc_init
|
||||||
.word cpu_arm7tdmi_proc_fin
|
.word cpu_arm7tdmi_proc_fin
|
||||||
.word cpu_arm7tdmi_reset
|
.word cpu_arm7tdmi_reset
|
||||||
|
|
|
@ -395,7 +395,7 @@ arm920_crval:
|
||||||
.type arm920_processor_functions, #object
|
.type arm920_processor_functions, #object
|
||||||
arm920_processor_functions:
|
arm920_processor_functions:
|
||||||
.word v4t_early_abort
|
.word v4t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm920_proc_init
|
.word cpu_arm920_proc_init
|
||||||
.word cpu_arm920_proc_fin
|
.word cpu_arm920_proc_fin
|
||||||
.word cpu_arm920_reset
|
.word cpu_arm920_reset
|
||||||
|
|
|
@ -399,7 +399,7 @@ arm922_crval:
|
||||||
.type arm922_processor_functions, #object
|
.type arm922_processor_functions, #object
|
||||||
arm922_processor_functions:
|
arm922_processor_functions:
|
||||||
.word v4t_early_abort
|
.word v4t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm922_proc_init
|
.word cpu_arm922_proc_init
|
||||||
.word cpu_arm922_proc_fin
|
.word cpu_arm922_proc_fin
|
||||||
.word cpu_arm922_reset
|
.word cpu_arm922_reset
|
||||||
|
|
|
@ -462,7 +462,7 @@ arm925_crval:
|
||||||
.type arm925_processor_functions, #object
|
.type arm925_processor_functions, #object
|
||||||
arm925_processor_functions:
|
arm925_processor_functions:
|
||||||
.word v4t_early_abort
|
.word v4t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm925_proc_init
|
.word cpu_arm925_proc_init
|
||||||
.word cpu_arm925_proc_fin
|
.word cpu_arm925_proc_fin
|
||||||
.word cpu_arm925_reset
|
.word cpu_arm925_reset
|
||||||
|
|
|
@ -415,7 +415,7 @@ arm926_crval:
|
||||||
.type arm926_processor_functions, #object
|
.type arm926_processor_functions, #object
|
||||||
arm926_processor_functions:
|
arm926_processor_functions:
|
||||||
.word v5tj_early_abort
|
.word v5tj_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm926_proc_init
|
.word cpu_arm926_proc_init
|
||||||
.word cpu_arm926_proc_fin
|
.word cpu_arm926_proc_fin
|
||||||
.word cpu_arm926_reset
|
.word cpu_arm926_reset
|
||||||
|
|
|
@ -322,7 +322,7 @@ __arm940_setup:
|
||||||
.type arm940_processor_functions, #object
|
.type arm940_processor_functions, #object
|
||||||
ENTRY(arm940_processor_functions)
|
ENTRY(arm940_processor_functions)
|
||||||
.word nommu_early_abort
|
.word nommu_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm940_proc_init
|
.word cpu_arm940_proc_init
|
||||||
.word cpu_arm940_proc_fin
|
.word cpu_arm940_proc_fin
|
||||||
.word cpu_arm940_reset
|
.word cpu_arm940_reset
|
||||||
|
|
|
@ -377,7 +377,7 @@ __arm946_setup:
|
||||||
.type arm946_processor_functions, #object
|
.type arm946_processor_functions, #object
|
||||||
ENTRY(arm946_processor_functions)
|
ENTRY(arm946_processor_functions)
|
||||||
.word nommu_early_abort
|
.word nommu_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm946_proc_init
|
.word cpu_arm946_proc_init
|
||||||
.word cpu_arm946_proc_fin
|
.word cpu_arm946_proc_fin
|
||||||
.word cpu_arm946_reset
|
.word cpu_arm946_reset
|
||||||
|
|
|
@ -64,7 +64,7 @@ __arm9tdmi_setup:
|
||||||
.type arm9tdmi_processor_functions, #object
|
.type arm9tdmi_processor_functions, #object
|
||||||
ENTRY(arm9tdmi_processor_functions)
|
ENTRY(arm9tdmi_processor_functions)
|
||||||
.word nommu_early_abort
|
.word nommu_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_arm9tdmi_proc_init
|
.word cpu_arm9tdmi_proc_init
|
||||||
.word cpu_arm9tdmi_proc_fin
|
.word cpu_arm9tdmi_proc_fin
|
||||||
.word cpu_arm9tdmi_reset
|
.word cpu_arm9tdmi_reset
|
||||||
|
|
|
@ -191,7 +191,7 @@ fa526_cr1_set:
|
||||||
.type fa526_processor_functions, #object
|
.type fa526_processor_functions, #object
|
||||||
fa526_processor_functions:
|
fa526_processor_functions:
|
||||||
.word v4_early_abort
|
.word v4_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_fa526_proc_init
|
.word cpu_fa526_proc_init
|
||||||
.word cpu_fa526_proc_fin
|
.word cpu_fa526_proc_fin
|
||||||
.word cpu_fa526_reset
|
.word cpu_fa526_reset
|
||||||
|
|
|
@ -499,7 +499,7 @@ feroceon_crval:
|
||||||
.type feroceon_processor_functions, #object
|
.type feroceon_processor_functions, #object
|
||||||
feroceon_processor_functions:
|
feroceon_processor_functions:
|
||||||
.word v5t_early_abort
|
.word v5t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_feroceon_proc_init
|
.word cpu_feroceon_proc_init
|
||||||
.word cpu_feroceon_proc_fin
|
.word cpu_feroceon_proc_fin
|
||||||
.word cpu_feroceon_reset
|
.word cpu_feroceon_reset
|
||||||
|
|
|
@ -359,7 +359,7 @@ mohawk_crval:
|
||||||
.type mohawk_processor_functions, #object
|
.type mohawk_processor_functions, #object
|
||||||
mohawk_processor_functions:
|
mohawk_processor_functions:
|
||||||
.word v5t_early_abort
|
.word v5t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_mohawk_proc_init
|
.word cpu_mohawk_proc_init
|
||||||
.word cpu_mohawk_proc_fin
|
.word cpu_mohawk_proc_fin
|
||||||
.word cpu_mohawk_reset
|
.word cpu_mohawk_reset
|
||||||
|
|
|
@ -199,7 +199,7 @@ sa110_crval:
|
||||||
.type sa110_processor_functions, #object
|
.type sa110_processor_functions, #object
|
||||||
ENTRY(sa110_processor_functions)
|
ENTRY(sa110_processor_functions)
|
||||||
.word v4_early_abort
|
.word v4_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_sa110_proc_init
|
.word cpu_sa110_proc_init
|
||||||
.word cpu_sa110_proc_fin
|
.word cpu_sa110_proc_fin
|
||||||
.word cpu_sa110_reset
|
.word cpu_sa110_reset
|
||||||
|
|
|
@ -214,7 +214,7 @@ sa1100_crval:
|
||||||
.type sa1100_processor_functions, #object
|
.type sa1100_processor_functions, #object
|
||||||
ENTRY(sa1100_processor_functions)
|
ENTRY(sa1100_processor_functions)
|
||||||
.word v4_early_abort
|
.word v4_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_sa1100_proc_init
|
.word cpu_sa1100_proc_init
|
||||||
.word cpu_sa1100_proc_fin
|
.word cpu_sa1100_proc_fin
|
||||||
.word cpu_sa1100_reset
|
.word cpu_sa1100_reset
|
||||||
|
|
|
@ -191,7 +191,7 @@ v6_crval:
|
||||||
.type v6_processor_functions, #object
|
.type v6_processor_functions, #object
|
||||||
ENTRY(v6_processor_functions)
|
ENTRY(v6_processor_functions)
|
||||||
.word v6_early_abort
|
.word v6_early_abort
|
||||||
.word pabort_noifar
|
.word v6_pabort
|
||||||
.word cpu_v6_proc_init
|
.word cpu_v6_proc_init
|
||||||
.word cpu_v6_proc_fin
|
.word cpu_v6_proc_fin
|
||||||
.word cpu_v6_reset
|
.word cpu_v6_reset
|
||||||
|
|
|
@ -295,7 +295,7 @@ __v7_setup_stack:
|
||||||
.type v7_processor_functions, #object
|
.type v7_processor_functions, #object
|
||||||
ENTRY(v7_processor_functions)
|
ENTRY(v7_processor_functions)
|
||||||
.word v7_early_abort
|
.word v7_early_abort
|
||||||
.word pabort_ifar
|
.word v7_pabort
|
||||||
.word cpu_v7_proc_init
|
.word cpu_v7_proc_init
|
||||||
.word cpu_v7_proc_fin
|
.word cpu_v7_proc_fin
|
||||||
.word cpu_v7_reset
|
.word cpu_v7_reset
|
||||||
|
|
|
@ -428,7 +428,7 @@ xsc3_crval:
|
||||||
.type xsc3_processor_functions, #object
|
.type xsc3_processor_functions, #object
|
||||||
ENTRY(xsc3_processor_functions)
|
ENTRY(xsc3_processor_functions)
|
||||||
.word v5t_early_abort
|
.word v5t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_xsc3_proc_init
|
.word cpu_xsc3_proc_init
|
||||||
.word cpu_xsc3_proc_fin
|
.word cpu_xsc3_proc_fin
|
||||||
.word cpu_xsc3_reset
|
.word cpu_xsc3_reset
|
||||||
|
|
|
@ -511,7 +511,7 @@ xscale_crval:
|
||||||
.type xscale_processor_functions, #object
|
.type xscale_processor_functions, #object
|
||||||
ENTRY(xscale_processor_functions)
|
ENTRY(xscale_processor_functions)
|
||||||
.word v5t_early_abort
|
.word v5t_early_abort
|
||||||
.word pabort_noifar
|
.word legacy_pabort
|
||||||
.word cpu_xscale_proc_init
|
.word cpu_xscale_proc_init
|
||||||
.word cpu_xscale_proc_fin
|
.word cpu_xscale_proc_fin
|
||||||
.word cpu_xscale_reset
|
.word cpu_xscale_reset
|
||||||
|
|
|
@ -257,7 +257,8 @@ void __init iop3xx_atu_setup(void)
|
||||||
*IOP3XX_OUMWTVR0 = 0;
|
*IOP3XX_OUMWTVR0 = 0;
|
||||||
|
|
||||||
/* Outbound window 1 */
|
/* Outbound window 1 */
|
||||||
*IOP3XX_OMWTVR1 = IOP3XX_PCI_LOWER_MEM_BA + IOP3XX_PCI_MEM_WINDOW_SIZE;
|
*IOP3XX_OMWTVR1 = IOP3XX_PCI_LOWER_MEM_BA +
|
||||||
|
IOP3XX_PCI_MEM_WINDOW_SIZE / 2;
|
||||||
*IOP3XX_OUMWTVR1 = 0;
|
*IOP3XX_OUMWTVR1 = 0;
|
||||||
|
|
||||||
/* BAR 3 ( Disabled ) */
|
/* BAR 3 ( Disabled ) */
|
||||||
|
|
|
@ -85,7 +85,7 @@ void __init iop_init_time(unsigned long tick_rate)
|
||||||
{
|
{
|
||||||
u32 timer_ctl;
|
u32 timer_ctl;
|
||||||
|
|
||||||
ticks_per_jiffy = (tick_rate + HZ/2) / HZ;
|
ticks_per_jiffy = DIV_ROUND_CLOSEST(tick_rate, HZ);
|
||||||
ticks_per_usec = tick_rate / 1000000;
|
ticks_per_usec = tick_rate / 1000000;
|
||||||
next_jiffy_time = 0xffffffff;
|
next_jiffy_time = 0xffffffff;
|
||||||
iop_tick_rate = tick_rate;
|
iop_tick_rate = tick_rate;
|
||||||
|
|
|
@ -250,7 +250,7 @@ static struct gpio_bank gpio_bank_730[7] = {
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP850
|
#ifdef CONFIG_ARCH_OMAP850
|
||||||
static struct gpio_bank gpio_bank_850[7] = {
|
static struct gpio_bank gpio_bank_850[7] = {
|
||||||
{ OMAP1_MPUIO_BASE, INT_850_MPUIO, IH_MPUIO_BASE, METHOD_MPUIO },
|
{ OMAP1_MPUIO_VBASE, INT_850_MPUIO, IH_MPUIO_BASE, METHOD_MPUIO },
|
||||||
{ OMAP850_GPIO1_BASE, INT_850_GPIO_BANK1, IH_GPIO_BASE, METHOD_GPIO_850 },
|
{ OMAP850_GPIO1_BASE, INT_850_GPIO_BANK1, IH_GPIO_BASE, METHOD_GPIO_850 },
|
||||||
{ OMAP850_GPIO2_BASE, INT_850_GPIO_BANK2, IH_GPIO_BASE + 32, METHOD_GPIO_850 },
|
{ OMAP850_GPIO2_BASE, INT_850_GPIO_BANK2, IH_GPIO_BASE + 32, METHOD_GPIO_850 },
|
||||||
{ OMAP850_GPIO3_BASE, INT_850_GPIO_BANK3, IH_GPIO_BASE + 64, METHOD_GPIO_850 },
|
{ OMAP850_GPIO3_BASE, INT_850_GPIO_BANK3, IH_GPIO_BASE + 64, METHOD_GPIO_850 },
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
#ifndef ASMARM_ARCH_KEYPAD_H
|
#ifndef ASMARM_ARCH_KEYPAD_H
|
||||||
#define ASMARM_ARCH_KEYPAD_H
|
#define ASMARM_ARCH_KEYPAD_H
|
||||||
|
|
||||||
|
#include <linux/input/matrix_keypad.h>
|
||||||
|
|
||||||
struct omap_kp_platform_data {
|
struct omap_kp_platform_data {
|
||||||
int rows;
|
int rows;
|
||||||
int cols;
|
int cols;
|
||||||
|
@ -35,9 +37,6 @@ struct omap_kp_platform_data {
|
||||||
|
|
||||||
#define KEY_PERSISTENT 0x00800000
|
#define KEY_PERSISTENT 0x00800000
|
||||||
#define KEYNUM_MASK 0x00EFFFFF
|
#define KEYNUM_MASK 0x00EFFFFF
|
||||||
#define KEY(col, row, val) (((col) << 28) | ((row) << 24) | (val))
|
|
||||||
#define PERSISTENT_KEY(col, row) (((col) << 28) | ((row) << 24) | \
|
|
||||||
KEY_PERSISTENT)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -840,12 +840,14 @@ enum omap34xx_index {
|
||||||
*/
|
*/
|
||||||
AF26_34XX_GPIO0,
|
AF26_34XX_GPIO0,
|
||||||
AF22_34XX_GPIO9,
|
AF22_34XX_GPIO9,
|
||||||
|
AG9_34XX_GPIO23,
|
||||||
AH8_34XX_GPIO29,
|
AH8_34XX_GPIO29,
|
||||||
U8_34XX_GPIO54_OUT,
|
U8_34XX_GPIO54_OUT,
|
||||||
U8_34XX_GPIO54_DOWN,
|
U8_34XX_GPIO54_DOWN,
|
||||||
L8_34XX_GPIO63,
|
L8_34XX_GPIO63,
|
||||||
G25_34XX_GPIO86_OUT,
|
G25_34XX_GPIO86_OUT,
|
||||||
AG4_34XX_GPIO134_OUT,
|
AG4_34XX_GPIO134_OUT,
|
||||||
|
AF4_34XX_GPIO135_OUT,
|
||||||
AE4_34XX_GPIO136_OUT,
|
AE4_34XX_GPIO136_OUT,
|
||||||
AF6_34XX_GPIO140_UP,
|
AF6_34XX_GPIO140_UP,
|
||||||
AE6_34XX_GPIO141,
|
AE6_34XX_GPIO141,
|
||||||
|
|
|
@ -199,7 +199,8 @@ static void *vmap_sg(const struct sg_table *sgt)
|
||||||
va += bytes;
|
va += bytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
flush_cache_vmap(new->addr, new->addr + total);
|
flush_cache_vmap((unsigned long)new->addr,
|
||||||
|
(unsigned long)(new->addr + total));
|
||||||
return new->addr;
|
return new->addr;
|
||||||
|
|
||||||
err_out:
|
err_out:
|
||||||
|
@ -390,7 +391,7 @@ static void sgtable_fill_vmalloc(struct sg_table *sgt, void *_va)
|
||||||
}
|
}
|
||||||
|
|
||||||
va_end = _va + PAGE_SIZE * i;
|
va_end = _va + PAGE_SIZE * i;
|
||||||
flush_cache_vmap(_va, va_end);
|
flush_cache_vmap((unsigned long)_va, (unsigned long)va_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void sgtable_drain_vmalloc(struct sg_table *sgt)
|
static inline void sgtable_drain_vmalloc(struct sg_table *sgt)
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
#define _ARCH_MCI_H
|
#define _ARCH_MCI_H
|
||||||
|
|
||||||
struct s3c24xx_mci_pdata {
|
struct s3c24xx_mci_pdata {
|
||||||
|
unsigned int no_wprotect : 1;
|
||||||
|
unsigned int no_detect : 1;
|
||||||
unsigned int wprotect_invert : 1;
|
unsigned int wprotect_invert : 1;
|
||||||
unsigned int detect_invert : 1; /* set => detect active high. */
|
unsigned int detect_invert : 1; /* set => detect active high. */
|
||||||
|
unsigned int use_dma : 1;
|
||||||
|
|
||||||
unsigned int gpio_detect;
|
unsigned int gpio_detect;
|
||||||
unsigned int gpio_wprotect;
|
unsigned int gpio_wprotect;
|
||||||
|
|
|
@ -48,7 +48,7 @@ coreb_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned l
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct file_operations coreb_fops = {
|
static const struct file_operations coreb_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.ioctl = coreb_ioctl,
|
.ioctl = coreb_ioctl,
|
||||||
};
|
};
|
||||||
|
|
|
@ -244,7 +244,7 @@ static unsigned sync_serial_prescale_shadow;
|
||||||
|
|
||||||
#define NUMBER_OF_PORTS 2
|
#define NUMBER_OF_PORTS 2
|
||||||
|
|
||||||
static struct file_operations sync_serial_fops = {
|
static const struct file_operations sync_serial_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.write = sync_serial_write,
|
.write = sync_serial_write,
|
||||||
.read = sync_serial_read,
|
.read = sync_serial_read,
|
||||||
|
|
|
@ -855,7 +855,7 @@ gpio_leds_ioctl(unsigned int cmd, unsigned long arg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct file_operations gpio_fops = {
|
static const struct file_operations gpio_fops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.poll = gpio_poll,
|
.poll = gpio_poll,
|
||||||
.ioctl = gpio_ioctl,
|
.ioctl = gpio_ioctl,
|
||||||
|
|
|
@ -162,6 +162,13 @@ static inline void _writel(unsigned long l, unsigned long addr)
|
||||||
#define __raw_writew writew
|
#define __raw_writew writew
|
||||||
#define __raw_writel writel
|
#define __raw_writel writel
|
||||||
|
|
||||||
|
#define ioread8 read
|
||||||
|
#define ioread16 readw
|
||||||
|
#define ioread32 readl
|
||||||
|
#define iowrite8 writeb
|
||||||
|
#define iowrite16 writew
|
||||||
|
#define iowrite32 writel
|
||||||
|
|
||||||
#define mmiowb()
|
#define mmiowb()
|
||||||
|
|
||||||
#define flush_write_buffers() do { } while (0) /* M32R_FIXME */
|
#define flush_write_buffers() do { } while (0) /* M32R_FIXME */
|
||||||
|
|
|
@ -23,12 +23,6 @@ EXPORT_SYMBOL(__ioremap);
|
||||||
EXPORT_SYMBOL(iounmap);
|
EXPORT_SYMBOL(iounmap);
|
||||||
EXPORT_SYMBOL(kernel_thread);
|
EXPORT_SYMBOL(kernel_thread);
|
||||||
|
|
||||||
/* Networking helper routines. */
|
|
||||||
/* Delay loops */
|
|
||||||
EXPORT_SYMBOL(__udelay);
|
|
||||||
EXPORT_SYMBOL(__delay);
|
|
||||||
EXPORT_SYMBOL(__const_udelay);
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(strncpy_from_user);
|
EXPORT_SYMBOL(strncpy_from_user);
|
||||||
EXPORT_SYMBOL(__strncpy_from_user);
|
EXPORT_SYMBOL(__strncpy_from_user);
|
||||||
EXPORT_SYMBOL(clear_user);
|
EXPORT_SYMBOL(clear_user);
|
||||||
|
|
|
@ -33,6 +33,15 @@
|
||||||
|
|
||||||
#include <asm/hw_irq.h>
|
#include <asm/hw_irq.h>
|
||||||
|
|
||||||
|
#if defined(CONFIG_RTC_DRV_CMOS) || defined(CONFIG_RTC_DRV_CMOS_MODULE)
|
||||||
|
/* this needs a better home */
|
||||||
|
DEFINE_SPINLOCK(rtc_lock);
|
||||||
|
|
||||||
|
#ifdef CONFIG_RTC_DRV_CMOS_MODULE
|
||||||
|
EXPORT_SYMBOL(rtc_lock);
|
||||||
|
#endif
|
||||||
|
#endif /* pc-style 'CMOS' RTC support */
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
extern void smp_local_timer_interrupt(void);
|
extern void smp_local_timer_interrupt(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue