mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
Merge branch 'hotfixes' into devel
This commit is contained in:
commit
c7c350e92a
455 changed files with 6451 additions and 6075 deletions
|
@ -225,8 +225,6 @@ kprobes.txt
|
|||
- documents the kernel probes debugging feature.
|
||||
kref.txt
|
||||
- docs on adding reference counters (krefs) to kernel objects.
|
||||
laptop-mode.txt
|
||||
- how to conserve battery power using laptop-mode.
|
||||
laptops/
|
||||
- directory with laptop related info and laptop driver documentation.
|
||||
ldm.txt
|
||||
|
@ -301,12 +299,8 @@ pcmcia/
|
|||
- info on the Linux PCMCIA driver.
|
||||
pi-futex.txt
|
||||
- documentation on lightweight PI-futexes.
|
||||
pm.txt
|
||||
- info on Linux power management support.
|
||||
pnp.txt
|
||||
- Linux Plug and Play documentation.
|
||||
power_supply_class.txt
|
||||
- Tells userspace about battery, UPS, AC or DC power supply properties
|
||||
power/
|
||||
- directory with info on Linux PCI power management.
|
||||
powerpc/
|
||||
|
|
|
@ -1,15 +1,7 @@
|
|||
Linux supports two methods of overriding the BIOS DSDT:
|
||||
Linux supports a method of overriding the BIOS DSDT:
|
||||
|
||||
CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel.
|
||||
|
||||
CONFIG_ACPI_CUSTOM_DSDT_INITRD adds the image to the initrd.
|
||||
|
||||
When to use these methods is described in detail on the
|
||||
When to use this method is described in detail on the
|
||||
Linux/ACPI home page:
|
||||
http://www.lesswatts.org/projects/acpi/overridingDSDT.php
|
||||
|
||||
Note that if both options are used, the DSDT supplied
|
||||
by the INITRD method takes precedence.
|
||||
|
||||
Documentation/initramfs-add-dsdt.sh is provided for convenience
|
||||
for use with the CONFIG_ACPI_CUSTOM_DSDT_INITRD method.
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Adds a DSDT file to the initrd (if it's an initramfs)
|
||||
# first argument is the name of archive
|
||||
# second argument is the name of the file to add
|
||||
# The file will be copied as /DSDT.aml
|
||||
|
||||
# 20060126: fix "Premature end of file" with some old cpio (Roland Robic)
|
||||
# 20060205: this time it should really work
|
||||
|
||||
# check the arguments
|
||||
if [ $# -ne 2 ]; then
|
||||
program_name=$(basename $0)
|
||||
echo "\
|
||||
$program_name: too few arguments
|
||||
Usage: $program_name initrd-name.img DSDT-to-add.aml
|
||||
Adds a DSDT file to an initrd (in initramfs format)
|
||||
|
||||
initrd-name.img: filename of the initrd in initramfs format
|
||||
DSDT-to-add.aml: filename of the DSDT file to add
|
||||
" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# we should check it's an initramfs
|
||||
|
||||
tempcpio=$(mktemp -d)
|
||||
# cleanup on exit, hangup, interrupt, quit, termination
|
||||
trap 'rm -rf $tempcpio' 0 1 2 3 15
|
||||
|
||||
# extract the archive
|
||||
gunzip -c "$1" > "$tempcpio"/initramfs.cpio || exit 1
|
||||
|
||||
# copy the DSDT file at the root of the directory so that we can call it "/DSDT.aml"
|
||||
cp -f "$2" "$tempcpio"/DSDT.aml
|
||||
|
||||
# add the file
|
||||
cd "$tempcpio"
|
||||
(echo DSDT.aml | cpio --quiet -H newc -o -A -O "$tempcpio"/initramfs.cpio) || exit 1
|
||||
cd "$OLDPWD"
|
||||
|
||||
# re-compress the archive
|
||||
gzip -c "$tempcpio"/initramfs.cpio > "$1"
|
||||
|
|
@ -1506,13 +1506,13 @@ laptop_mode
|
|||
-----------
|
||||
|
||||
laptop_mode is a knob that controls "laptop mode". All the things that are
|
||||
controlled by this knob are discussed in Documentation/laptop-mode.txt.
|
||||
controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.
|
||||
|
||||
block_dump
|
||||
----------
|
||||
|
||||
block_dump enables block I/O debugging when set to a nonzero value. More
|
||||
information on block I/O debugging is in Documentation/laptop-mode.txt.
|
||||
information on block I/O debugging is in Documentation/laptops/laptop-mode.txt.
|
||||
|
||||
swap_token_timeout
|
||||
------------------
|
||||
|
|
52
Documentation/input/notifier.txt
Normal file
52
Documentation/input/notifier.txt
Normal file
|
@ -0,0 +1,52 @@
|
|||
Keyboard notifier
|
||||
|
||||
One can use register_keyboard_notifier to get called back on keyboard
|
||||
events (see kbd_keycode() function for details). The passed structure is
|
||||
keyboard_notifier_param:
|
||||
|
||||
- 'vc' always provide the VC for which the keyboard event applies;
|
||||
- 'down' is 1 for a key press event, 0 for a key release;
|
||||
- 'shift' is the current modifier state, mask bit indexes are KG_*;
|
||||
- 'value' depends on the type of event.
|
||||
|
||||
- KBD_KEYCODE events are always sent before other events, value is the keycode.
|
||||
- KBD_UNBOUND_KEYCODE events are sent if the keycode is not bound to a keysym.
|
||||
value is the keycode.
|
||||
- KBD_UNICODE events are sent if the keycode -> keysym translation produced a
|
||||
unicode character. value is the unicode value.
|
||||
- KBD_KEYSYM events are sent if the keycode -> keysym translation produced a
|
||||
non-unicode character. value is the keysym.
|
||||
- KBD_POST_KEYSYM events are sent after the treatment of non-unicode keysyms.
|
||||
That permits one to inspect the resulting LEDs for instance.
|
||||
|
||||
For each kind of event but the last, the callback may return NOTIFY_STOP in
|
||||
order to "eat" the event: the notify loop is stopped and the keyboard event is
|
||||
dropped.
|
||||
|
||||
In a rough C snippet, we have:
|
||||
|
||||
kbd_keycode(keycode) {
|
||||
...
|
||||
params.value = keycode;
|
||||
if (notifier_call_chain(KBD_KEYCODE,¶ms) == NOTIFY_STOP)
|
||||
|| !bound) {
|
||||
notifier_call_chain(KBD_UNBOUND_KEYCODE,¶ms);
|
||||
return;
|
||||
}
|
||||
|
||||
if (unicode) {
|
||||
param.value = unicode;
|
||||
if (notifier_call_chain(KBD_UNICODE,¶ms) == NOTIFY_STOP)
|
||||
return;
|
||||
emit unicode;
|
||||
return;
|
||||
}
|
||||
|
||||
params.value = keysym;
|
||||
if (notifier_call_chain(KBD_KEYSYM,¶ms) == NOTIFY_STOP)
|
||||
return;
|
||||
apply keysym;
|
||||
notifier_call_chain(KBD_POST_KEYSYM,¶ms);
|
||||
}
|
||||
|
||||
NOTE: This notifier is usually called from interrupt context.
|
|
@ -138,7 +138,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
strict -- Be less tolerant of platforms that are not
|
||||
strictly ACPI specification compliant.
|
||||
|
||||
See also Documentation/pm.txt, pci=noacpi
|
||||
See also Documentation/power/pm.txt, pci=noacpi
|
||||
|
||||
acpi_apic_instance= [ACPI, IOAPIC]
|
||||
Format: <int>
|
||||
|
@ -177,9 +177,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
|
||||
acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT
|
||||
|
||||
acpi_no_initrd_override [KNL,ACPI]
|
||||
Disable loading custom ACPI tables from the initramfs
|
||||
|
||||
acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS
|
||||
Format: To spoof as Windows 98: ="Microsoft Windows"
|
||||
|
||||
|
@ -735,6 +732,8 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
(Don't attempt to blink the leds)
|
||||
i8042.noaux [HW] Don't check for auxiliary (== mouse) port
|
||||
i8042.nokbd [HW] Don't check/create keyboard port
|
||||
i8042.noloop [HW] Disable the AUX Loopback command while probing
|
||||
for the AUX port
|
||||
i8042.nomux [HW] Don't check presence of an active multiplexing
|
||||
controller
|
||||
i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
- This file
|
||||
acer-wmi.txt
|
||||
- information on the Acer Laptop WMI Extras driver.
|
||||
laptop-mode.txt
|
||||
- how to conserve battery power using laptop-mode.
|
||||
sony-laptop.txt
|
||||
- Sony Notebook Control Driver (SNC) Readme.
|
||||
sonypi.txt
|
||||
|
|
|
@ -48,7 +48,7 @@ DSDT.
|
|||
|
||||
To send me the DSDT, as root/sudo:
|
||||
|
||||
cat /sys/firmware/acpi/DSDT > dsdt
|
||||
cat /sys/firmware/acpi/tables/DSDT > dsdt
|
||||
|
||||
And send me the resulting 'dsdt' file.
|
||||
|
||||
|
@ -169,7 +169,7 @@ can be added to acer-wmi.
|
|||
|
||||
The LED is exposed through the LED subsystem, and can be found in:
|
||||
|
||||
/sys/devices/platform/acer-wmi/leds/acer-mail:green/
|
||||
/sys/devices/platform/acer-wmi/leds/acer-wmi::mail/
|
||||
|
||||
The mail LED is autodetected, so if you don't have one, the LED device won't
|
||||
be registered.
|
||||
|
|
|
@ -486,9 +486,12 @@ static void concat(char *dst, char *args[])
|
|||
unsigned int i, len = 0;
|
||||
|
||||
for (i = 0; args[i]; i++) {
|
||||
if (i) {
|
||||
strcat(dst+len, " ");
|
||||
len++;
|
||||
}
|
||||
strcpy(dst+len, args[i]);
|
||||
strcat(dst+len, " ");
|
||||
len += strlen(args[i]) + 1;
|
||||
len += strlen(args[i]);
|
||||
}
|
||||
/* In case it's empty. */
|
||||
dst[len] = '\0';
|
||||
|
|
|
@ -143,14 +143,7 @@ MCA Device Drivers
|
|||
|
||||
Currently, there are a number of MCA-specific device drivers.
|
||||
|
||||
1) PS/2 ESDI
|
||||
drivers/block/ps2esdi.c
|
||||
include/linux/ps2esdi.h
|
||||
Uses major number 36, and should use /dev files /dev/eda, /dev/edb.
|
||||
Supports two drives, but only one controller. May use the
|
||||
command-line args "ed=cyl,head,sec" and "tp720".
|
||||
|
||||
2) PS/2 SCSI
|
||||
1) PS/2 SCSI
|
||||
drivers/scsi/ibmmca.c
|
||||
drivers/scsi/ibmmca.h
|
||||
The driver for the IBM SCSI subsystem. Includes both integrated
|
||||
|
@ -159,25 +152,25 @@ Currently, there are a number of MCA-specific device drivers.
|
|||
machine with a front-panel display (i.e. model 95), you can use
|
||||
"ibmmcascsi=display" to enable a drive activity indicator.
|
||||
|
||||
3) 3c523
|
||||
2) 3c523
|
||||
drivers/net/3c523.c
|
||||
drivers/net/3c523.h
|
||||
3Com 3c523 Etherlink/MC ethernet driver.
|
||||
|
||||
4) SMC Ultra/MCA and IBM Adapter/A
|
||||
3) SMC Ultra/MCA and IBM Adapter/A
|
||||
drivers/net/smc-mca.c
|
||||
drivers/net/smc-mca.h
|
||||
Driver for the MCA version of the SMC Ultra and various other
|
||||
OEM'ed and work-alike cards (Elite, Adapter/A, etc).
|
||||
|
||||
5) NE/2
|
||||
4) NE/2
|
||||
driver/net/ne2.c
|
||||
driver/net/ne2.h
|
||||
The NE/2 is the MCA version of the NE2000. This may not work
|
||||
with clones that have a different adapter id than the original
|
||||
NE/2.
|
||||
|
||||
6) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and
|
||||
5) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and
|
||||
Reply Sound Blaster/SCSI (SCSI part)
|
||||
Better support for these cards than the driver for ISA.
|
||||
Supports multiple cards with IRQ sharing.
|
||||
|
|
|
@ -123,7 +123,7 @@ initialization with a pointer to a structure describing the driver
|
|||
|
||||
|
||||
The ID table is an array of struct pci_device_id entries ending with an
|
||||
all-zero entry; use of the macro DECLARE_PCI_DEVICE_TABLE is the preferred
|
||||
all-zero entry; use of the macro DEFINE_PCI_DEVICE_TABLE is the preferred
|
||||
method of declaring the table. Each entry consists of:
|
||||
|
||||
vendor,device Vendor and device ID to match (or PCI_ANY_ID)
|
||||
|
@ -193,7 +193,7 @@ Tips on when/where to use the above attributes:
|
|||
o Do not mark the struct pci_driver.
|
||||
|
||||
o The ID table array should be marked __devinitconst; this is done
|
||||
automatically if the table is declared with DECLARE_PCI_DEVICE_TABLE().
|
||||
automatically if the table is declared with DEFINE_PCI_DEVICE_TABLE().
|
||||
|
||||
o The probe() and remove() functions should be marked __devinit
|
||||
and __devexit respectively. All initialization functions
|
||||
|
|
|
@ -14,6 +14,12 @@ notifiers.txt
|
|||
- Registering suspend notifiers in device drivers
|
||||
pci.txt
|
||||
- How the PCI Subsystem Does Power Management
|
||||
pm.txt
|
||||
- info on Linux power management support.
|
||||
pm_qos_interface.txt
|
||||
- info on Linux PM Quality of Service interface
|
||||
power_supply_class.txt
|
||||
- Tells userspace about battery, UPS, AC or DC power supply properties
|
||||
s2ram.txt
|
||||
- How to get suspend to ram working (and debug it when it isn't)
|
||||
states.txt
|
||||
|
|
|
@ -108,7 +108,7 @@ void pm_unregister_all(pm_callback cback);
|
|||
* EINVAL if the request is not supported
|
||||
* EBUSY if the device is now busy and cannot handle the request
|
||||
* ENOMEM if the device was unable to handle the request due to memory
|
||||
*
|
||||
*
|
||||
* Details: The device request callback will be called before the
|
||||
* device/system enters a suspend state (ACPI D1-D3) or
|
||||
* or after the device/system resumes from suspend (ACPI D0).
|
|
@ -142,7 +142,7 @@ of idleness (idle, busy, and newly idle):
|
|||
|
||||
/proc/<pid>/schedstat
|
||||
----------------
|
||||
schedstats also adds a new /proc/<pid/schedstat file to include some of
|
||||
schedstats also adds a new /proc/<pid>/schedstat file to include some of
|
||||
the same information on a per-process level. There are three fields in
|
||||
this file correlating for that process to:
|
||||
1) time spent on the cpu
|
||||
|
|
|
@ -143,10 +143,10 @@ type Strings which represent the thermal zone type.
|
|||
This is given by thermal zone driver as part of registration.
|
||||
Eg: "ACPI thermal zone" indicates it's a ACPI thermal device
|
||||
RO
|
||||
Optional
|
||||
Required
|
||||
|
||||
temp Current temperature as reported by thermal zone (sensor)
|
||||
Unit: degree Celsius
|
||||
Unit: millidegree Celsius
|
||||
RO
|
||||
Required
|
||||
|
||||
|
@ -163,7 +163,7 @@ mode One of the predefined values in [kernel, user]
|
|||
charge of the thermal management.
|
||||
|
||||
trip_point_[0-*]_temp The temperature above which trip point will be fired
|
||||
Unit: degree Celsius
|
||||
Unit: millidegree Celsius
|
||||
RO
|
||||
Optional
|
||||
|
||||
|
@ -193,7 +193,7 @@ type String which represents the type of device
|
|||
eg. For memory controller device on intel_menlow platform:
|
||||
this should be "Memory controller"
|
||||
RO
|
||||
Optional
|
||||
Required
|
||||
|
||||
max_state The maximum permissible cooling state of this cooling device.
|
||||
RO
|
||||
|
@ -219,16 +219,16 @@ the sys I/F structure will be built like this:
|
|||
|
||||
|thermal_zone1:
|
||||
|-----type: ACPI thermal zone
|
||||
|-----temp: 37
|
||||
|-----temp: 37000
|
||||
|-----mode: kernel
|
||||
|-----trip_point_0_temp: 100
|
||||
|-----trip_point_0_temp: 100000
|
||||
|-----trip_point_0_type: critical
|
||||
|-----trip_point_1_temp: 80
|
||||
|-----trip_point_1_temp: 80000
|
||||
|-----trip_point_1_type: passive
|
||||
|-----trip_point_2_temp: 70
|
||||
|-----trip_point_2_type: active[0]
|
||||
|-----trip_point_3_temp: 60
|
||||
|-----trip_point_3_type: active[1]
|
||||
|-----trip_point_2_temp: 70000
|
||||
|-----trip_point_2_type: active0
|
||||
|-----trip_point_3_temp: 60000
|
||||
|-----trip_point_3_type: active1
|
||||
|-----cdev0: --->/sys/class/thermal/cooling_device0
|
||||
|-----cdev0_trip_point: 1 /* cdev0 can be used for passive */
|
||||
|-----cdev1: --->/sys/class/thermal/cooling_device3
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
usb-help.txt
|
||||
2000-July-12
|
||||
2008-Mar-7
|
||||
|
||||
For USB help other than the readme files that are located in
|
||||
Documentation/usb/*, see the following:
|
||||
|
@ -10,9 +10,7 @@ Linux-USB project: http://www.linux-usb.org
|
|||
Linux USB Guide: http://linux-usb.sourceforge.net
|
||||
Linux-USB device overview (working devices and drivers):
|
||||
http://www.qbik.ch/usb/devices/
|
||||
|
||||
The Linux-USB mailing lists are:
|
||||
linux-usb-users@lists.sourceforge.net for general user help
|
||||
linux-usb-devel@lists.sourceforge.net for developer discussions
|
||||
|
||||
The Linux-USB mailing list is at linux-usb@vger.kernel.org
|
||||
|
||||
###
|
||||
|
|
43
MAINTAINERS
43
MAINTAINERS
|
@ -266,6 +266,15 @@ L: linux-acpi@vger.kernel.org
|
|||
W: http://www.lesswatts.org/projects/acpi/
|
||||
S: Maintained
|
||||
|
||||
AD1889 ALSA SOUND DRIVER
|
||||
P: Kyle McMartin
|
||||
M: kyle@parisc-linux.org
|
||||
P: Thibaut Varene
|
||||
M: T-Bone@parisc-linux.org
|
||||
W: http://wiki.parisc-linux.org/AD1889
|
||||
L: linux-parisc@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
ADM1025 HARDWARE MONITOR DRIVER
|
||||
P: Jean Delvare
|
||||
M: khali@linux-fr.org
|
||||
|
@ -2052,43 +2061,19 @@ M: kernel@wantstofly.org
|
|||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
INTEL PRO/100 ETHERNET SUPPORT
|
||||
INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe)
|
||||
P: Auke Kok
|
||||
M: auke-jan.h.kok@intel.com
|
||||
P: Jesse Brandeburg
|
||||
M: jesse.brandeburg@intel.com
|
||||
P: Jeff Kirsher
|
||||
M: jeffrey.t.kirsher@intel.com
|
||||
P: Bruce Allan
|
||||
M: bruce.w.allan@intel.com
|
||||
P: John Ronciak
|
||||
M: john.ronciak@intel.com
|
||||
L: e1000-devel@lists.sourceforge.net
|
||||
W: http://sourceforge.net/projects/e1000/
|
||||
S: Supported
|
||||
|
||||
INTEL PRO/1000 GIGABIT ETHERNET SUPPORT
|
||||
P: Auke Kok
|
||||
M: auke-jan.h.kok@intel.com
|
||||
P: Jesse Brandeburg
|
||||
M: jesse.brandeburg@intel.com
|
||||
P: Jeff Kirsher
|
||||
M: jeffrey.t.kirsher@intel.com
|
||||
P: John Ronciak
|
||||
M: john.ronciak@intel.com
|
||||
L: e1000-devel@lists.sourceforge.net
|
||||
W: http://sourceforge.net/projects/e1000/
|
||||
S: Supported
|
||||
|
||||
INTEL PRO/10GbE SUPPORT
|
||||
P: Ayyappan Veeraiyan
|
||||
M: ayyappan.veeraiyan@intel.com
|
||||
P: Auke Kok
|
||||
M: auke-jan.h.kok@intel.com
|
||||
P: Jesse Brandeburg
|
||||
M: jesse.brandeburg@intel.com
|
||||
P: John Ronciak
|
||||
M: john.ronciak@intel.com
|
||||
L: e1000-devel@lists.sourceforge.net
|
||||
W: http://sourceforge.net/projects/e1000/
|
||||
W: http://e1000.sourceforge.net/
|
||||
S: Supported
|
||||
|
||||
INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
|
||||
|
@ -2156,7 +2141,7 @@ L: netdev@vger.kernel.org
|
|||
S: Maintained
|
||||
|
||||
IPATH DRIVER:
|
||||
P: Arthur Jones
|
||||
P: Ralph Campbell
|
||||
M: infinipath@qlogic.com
|
||||
L: general@lists.openfabrics.org
|
||||
T: git git://git.qlogic.com/ipath-linux-2.6
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 25
|
||||
EXTRAVERSION = -rc4
|
||||
EXTRAVERSION = -rc6
|
||||
NAME = Funky Weasel is Jiggy wit it
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -330,6 +330,9 @@ config PCI_DOMAINS
|
|||
config PCI_SYSCALL
|
||||
def_bool PCI
|
||||
|
||||
config IOMMU_HELPER
|
||||
def_bool PCI
|
||||
|
||||
config ALPHA_CORE_AGP
|
||||
bool
|
||||
depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <linux/scatterlist.h>
|
||||
#include <linux/log2.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/iommu-helper.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/hwrpb.h>
|
||||
|
@ -125,14 +126,6 @@ iommu_arena_new(struct pci_controller *hose, dma_addr_t base,
|
|||
return iommu_arena_new_node(0, hose, base, window_size, align);
|
||||
}
|
||||
|
||||
static inline int is_span_boundary(unsigned int index, unsigned int nr,
|
||||
unsigned long shift,
|
||||
unsigned long boundary_size)
|
||||
{
|
||||
shift = (shift + index) & (boundary_size - 1);
|
||||
return shift + nr > boundary_size;
|
||||
}
|
||||
|
||||
/* Must be called with the arena lock held */
|
||||
static long
|
||||
iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
|
||||
|
@ -144,15 +137,13 @@ iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
|
|||
unsigned long base;
|
||||
unsigned long boundary_size;
|
||||
|
||||
BUG_ON(arena->dma_base & ~PAGE_MASK);
|
||||
base = arena->dma_base >> PAGE_SHIFT;
|
||||
if (dev)
|
||||
boundary_size = ALIGN(dma_get_max_seg_size(dev) + 1, PAGE_SIZE)
|
||||
>> PAGE_SHIFT;
|
||||
else
|
||||
boundary_size = ALIGN(1UL << 32, PAGE_SIZE) >> PAGE_SHIFT;
|
||||
|
||||
BUG_ON(!is_power_of_2(boundary_size));
|
||||
if (dev) {
|
||||
boundary_size = dma_get_seg_boundary(dev) + 1;
|
||||
boundary_size >>= PAGE_SHIFT;
|
||||
} else {
|
||||
boundary_size = 1UL << (32 - PAGE_SHIFT);
|
||||
}
|
||||
|
||||
/* Search forward for the first mask-aligned sequence of N free ptes */
|
||||
ptes = arena->ptes;
|
||||
|
@ -162,7 +153,7 @@ iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
|
|||
|
||||
again:
|
||||
while (i < n && p+i < nent) {
|
||||
if (!i && is_span_boundary(p, n, base, boundary_size)) {
|
||||
if (!i && iommu_is_span_boundary(p, n, base, boundary_size)) {
|
||||
p = ALIGN(p + 1, mask + 1);
|
||||
goto again;
|
||||
}
|
||||
|
|
|
@ -251,6 +251,7 @@ define archhelp
|
|||
echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
|
||||
echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
|
||||
echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
|
||||
echo ' uImage - U-Boot wrapped zImage'
|
||||
echo ' bootpImage - Combined zImage and initial RAM disk'
|
||||
echo ' (supply initrd image via make variable INITRD=<path>)'
|
||||
echo ' install - Install uncompressed kernel'
|
||||
|
|
|
@ -274,7 +274,7 @@ static int it8152_pci_platform_notify_remove(struct device *dev)
|
|||
int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
|
||||
{
|
||||
dev_dbg(dev, "%s: dma_addr %08x, size %08x\n",
|
||||
__FUNCTION__, dma_addr, size);
|
||||
__func__, dma_addr, size);
|
||||
return (dev->bus == &pci_bus_type) &&
|
||||
((dma_addr + size - PHYS_OFFSET) >= SZ_64M);
|
||||
}
|
||||
|
@ -289,7 +289,7 @@ int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
|
|||
*/
|
||||
int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
|
||||
{
|
||||
dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask);
|
||||
dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask);
|
||||
if (mask >= PHYS_OFFSET + SZ_64M - 1)
|
||||
return 0;
|
||||
|
||||
|
@ -299,7 +299,7 @@ int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
|
|||
int
|
||||
pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
|
||||
{
|
||||
dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask);
|
||||
dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask);
|
||||
if (mask >= PHYS_OFFSET + SZ_64M - 1)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.24-rc5
|
||||
# Mon Dec 17 20:04:38 2007
|
||||
# Linux kernel version: 2.6.25-rc3
|
||||
# Mon Mar 3 03:39:48 2008
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
|
@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
|||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_ARCH_SUPPORTS_AOUT=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
@ -40,17 +41,22 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_FAIR_USER_SCHED=y
|
||||
# CONFIG_FAIR_CGROUP_SCHED is not set
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_SYSFS_DEPRECATED is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_NAMESPACES=y
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_IPC_NS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
|
@ -64,17 +70,26 @@ CONFIG_HOTPLUG=y
|
|||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
@ -102,6 +117,8 @@ CONFIG_DEFAULT_AS=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# System Type
|
||||
|
@ -130,6 +147,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
|||
# CONFIG_ARCH_KS8695 is not set
|
||||
# CONFIG_ARCH_NS9XXX is not set
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
# CONFIG_ARCH_ORION is not set
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
|
@ -139,6 +157,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
|
|||
# CONFIG_ARCH_LH7A40X is not set
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
CONFIG_ARCH_OMAP=y
|
||||
# CONFIG_ARCH_MSM7X00A is not set
|
||||
|
||||
#
|
||||
# TI OMAP Implementations
|
||||
|
@ -155,6 +174,7 @@ CONFIG_OMAP_MUX=y
|
|||
# CONFIG_OMAP_MUX_DEBUG is not set
|
||||
CONFIG_OMAP_MUX_WARNINGS=y
|
||||
CONFIG_OMAP_MCBSP=y
|
||||
# CONFIG_OMAP_MMU_FWK is not set
|
||||
# CONFIG_OMAP_MPU_TIMER is not set
|
||||
CONFIG_OMAP_32K_TIMER=y
|
||||
CONFIG_OMAP_32K_TIMER_HZ=128
|
||||
|
@ -266,6 +286,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
|
|||
CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_ATAGS_PROC is not set
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
|
@ -311,9 +332,10 @@ CONFIG_PM=y
|
|||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_SUSPEND_UP_POSSIBLE=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
# CONFIG_APM_EMULATION is not set
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
|
||||
#
|
||||
# Networking
|
||||
|
@ -330,6 +352,7 @@ CONFIG_XFRM=y
|
|||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
|
@ -384,6 +407,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
@ -421,11 +445,13 @@ CONFIG_BLK_DEV_LOOP=y
|
|||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_BLK_DEV_XIP is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
CONFIG_ATA_OVER_ETH=m
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
# CONFIG_HAVE_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
|
@ -489,6 +515,7 @@ CONFIG_SMC91X=y
|
|||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
# CONFIG_B44 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
# CONFIG_E1000E_ENABLED is not set
|
||||
CONFIG_NETDEV_10000=y
|
||||
|
||||
#
|
||||
|
@ -512,7 +539,6 @@ CONFIG_SLIP_COMPRESSED=y
|
|||
CONFIG_SLHC=y
|
||||
# CONFIG_SLIP_SMART is not set
|
||||
# CONFIG_SLIP_MODE_SLIP6 is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
@ -616,12 +642,10 @@ CONFIG_I2C_OMAP=y
|
|||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_ISP1301_OMAP is not set
|
||||
CONFIG_TPS65010=y
|
||||
|
@ -649,6 +673,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_ADM1031 is not set
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
|
@ -676,6 +701,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_ADS7828 is not set
|
||||
# CONFIG_SENSORS_THMC50 is not set
|
||||
# CONFIG_SENSORS_VT1211 is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
|
@ -683,6 +709,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_W83792D is not set
|
||||
# CONFIG_SENSORS_W83793 is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83L786NG is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
@ -705,6 +732,7 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_MFD_ASIC3 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
|
@ -802,10 +830,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y
|
|||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
@ -826,12 +850,10 @@ CONFIG_EXT2_FS=y
|
|||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
@ -874,8 +896,10 @@ CONFIG_SYSFS=y
|
|||
# CONFIG_EFS_FS is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
|
@ -946,9 +970,6 @@ CONFIG_NLS_ISO8859_1=y
|
|||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
# CONFIG_DLM is not set
|
||||
CONFIG_INSTRUMENTATION=y
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
|
@ -975,6 +996,7 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_CRYPTO=y
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
|
@ -992,6 +1014,9 @@ CONFIG_CRYPTO_CBC=y
|
|||
CONFIG_CRYPTO_PCBC=m
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
# CONFIG_CRYPTO_CTR is not set
|
||||
# CONFIG_CRYPTO_GCM is not set
|
||||
# CONFIG_CRYPTO_CCM is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
CONFIG_CRYPTO_DES=y
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
|
@ -1006,12 +1031,14 @@ CONFIG_CRYPTO_DES=y
|
|||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
|
||||
#
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.24-rc5
|
||||
# Mon Dec 17 21:12:45 2007
|
||||
# Linux kernel version: 2.6.25-rc3
|
||||
# Mon Mar 3 03:35:17 2008
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
|
||||
|
@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
|||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_ARCH_SUPPORTS_AOUT=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
@ -39,17 +40,22 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_FAIR_USER_SCHED=y
|
||||
# CONFIG_FAIR_CGROUP_SCHED is not set
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_SYSFS_DEPRECATED is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_NAMESPACES=y
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_IPC_NS is not set
|
||||
# CONFIG_USER_NS is not set
|
||||
# CONFIG_PID_NS is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
|
@ -63,17 +69,26 @@ CONFIG_HOTPLUG=y
|
|||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
@ -101,6 +116,8 @@ CONFIG_IOSCHED_CFQ=y
|
|||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
|
||||
#
|
||||
# System Type
|
||||
|
@ -129,6 +146,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
|
|||
# CONFIG_ARCH_KS8695 is not set
|
||||
# CONFIG_ARCH_NS9XXX is not set
|
||||
# CONFIG_ARCH_MXC is not set
|
||||
# CONFIG_ARCH_ORION is not set
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
|
@ -138,6 +156,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
|
|||
# CONFIG_ARCH_LH7A40X is not set
|
||||
# CONFIG_ARCH_DAVINCI is not set
|
||||
CONFIG_ARCH_OMAP=y
|
||||
# CONFIG_ARCH_MSM7X00A is not set
|
||||
|
||||
#
|
||||
# TI OMAP Implementations
|
||||
|
@ -154,6 +173,7 @@ CONFIG_OMAP_MUX=y
|
|||
# CONFIG_OMAP_MUX_DEBUG is not set
|
||||
CONFIG_OMAP_MUX_WARNINGS=y
|
||||
CONFIG_OMAP_MCBSP=y
|
||||
# CONFIG_OMAP_MMU_FWK is not set
|
||||
# CONFIG_OMAP_MPU_TIMER is not set
|
||||
CONFIG_OMAP_32K_TIMER=y
|
||||
CONFIG_OMAP_32K_TIMER_HZ=128
|
||||
|
@ -173,13 +193,13 @@ CONFIG_ARCH_OMAP16XX=y
|
|||
#
|
||||
# OMAP Board Type
|
||||
#
|
||||
# CONFIG_MACH_OMAP_INNOVATOR is not set
|
||||
# CONFIG_MACH_OMAP_H2 is not set
|
||||
# CONFIG_MACH_OMAP_H3 is not set
|
||||
CONFIG_MACH_OMAP_INNOVATOR=y
|
||||
CONFIG_MACH_OMAP_H2=y
|
||||
CONFIG_MACH_OMAP_H3=y
|
||||
CONFIG_MACH_OMAP_OSK=y
|
||||
# CONFIG_OMAP_OSK_MISTRAL is not set
|
||||
# CONFIG_MACH_NOKIA770 is not set
|
||||
# CONFIG_MACH_OMAP_GENERIC is not set
|
||||
CONFIG_MACH_NOKIA770=y
|
||||
CONFIG_MACH_OMAP_GENERIC=y
|
||||
|
||||
#
|
||||
# OMAP CPU Speed
|
||||
|
@ -275,6 +295,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
|
|||
CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw"
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_ATAGS_PROC is not set
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
|
@ -307,9 +328,10 @@ CONFIG_PM=y
|
|||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_PM_SLEEP=y
|
||||
CONFIG_SUSPEND_UP_POSSIBLE=y
|
||||
CONFIG_SUSPEND=y
|
||||
CONFIG_SUSPEND_FREEZER=y
|
||||
# CONFIG_APM_EMULATION is not set
|
||||
CONFIG_ARCH_SUSPEND_POSSIBLE=y
|
||||
|
||||
#
|
||||
# Networking
|
||||
|
@ -326,6 +348,7 @@ CONFIG_XFRM=y
|
|||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_XFRM_MIGRATE is not set
|
||||
# CONFIG_XFRM_STATISTICS is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
|
@ -381,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
|
@ -493,11 +517,13 @@ CONFIG_BLK_DEV_LOOP=y
|
|||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
# CONFIG_BLK_DEV_XIP is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
CONFIG_IDE=m
|
||||
CONFIG_BLK_DEV_IDE=m
|
||||
|
||||
|
@ -519,7 +545,6 @@ CONFIG_IDE_PROC_FS=y
|
|||
#
|
||||
# CONFIG_IDE_GENERIC is not set
|
||||
# CONFIG_BLK_DEV_PLATFORM is not set
|
||||
# CONFIG_IDE_ARM is not set
|
||||
# CONFIG_BLK_DEV_IDEDMA is not set
|
||||
CONFIG_IDE_ARCH_OBSOLETE_INIT=y
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
|
@ -553,6 +578,7 @@ CONFIG_SMC91X=y
|
|||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
# CONFIG_B44 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
# CONFIG_E1000E_ENABLED is not set
|
||||
CONFIG_NETDEV_10000=y
|
||||
|
||||
#
|
||||
|
@ -574,7 +600,6 @@ CONFIG_PPP_MULTILINK=y
|
|||
# CONFIG_PPPOL2TP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
CONFIG_SLHC=y
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
@ -671,6 +696,7 @@ CONFIG_HW_RANDOM_OMAP=m
|
|||
# CONFIG_SYNCLINK_CS is not set
|
||||
# CONFIG_CARDMAN_4000 is not set
|
||||
# CONFIG_CARDMAN_4040 is not set
|
||||
# CONFIG_IPWIRELESS is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
CONFIG_I2C=y
|
||||
|
@ -698,12 +724,10 @@ CONFIG_I2C_OMAP=y
|
|||
#
|
||||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_SENSORS_DS1337 is not set
|
||||
# CONFIG_SENSORS_DS1374 is not set
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_SENSORS_EEPROM is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCF8591 is not set
|
||||
# CONFIG_ISP1301_OMAP is not set
|
||||
CONFIG_TPS65010=y
|
||||
|
@ -731,6 +755,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_ADM1031 is not set
|
||||
# CONFIG_SENSORS_ADM9240 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
|
@ -758,6 +783,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_ADS7828 is not set
|
||||
# CONFIG_SENSORS_THMC50 is not set
|
||||
# CONFIG_SENSORS_VT1211 is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
|
@ -765,6 +791,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_W83792D is not set
|
||||
# CONFIG_SENSORS_W83793 is not set
|
||||
# CONFIG_SENSORS_W83L785TS is not set
|
||||
# CONFIG_SENSORS_W83L786NG is not set
|
||||
# CONFIG_SENSORS_W83627HF is not set
|
||||
# CONFIG_SENSORS_W83627EHF is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
@ -780,6 +807,7 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_MFD_ASIC3 is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
|
@ -865,10 +893,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y
|
|||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
@ -889,12 +913,10 @@ CONFIG_EXT2_FS=y
|
|||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_AUTOFS_FS=y
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
@ -948,8 +970,10 @@ CONFIG_JFFS2_RTIME=y
|
|||
# CONFIG_JFFS2_RUBIN is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
|
@ -1019,9 +1043,6 @@ CONFIG_NLS_ISO8859_1=m
|
|||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
# CONFIG_DLM is not set
|
||||
CONFIG_INSTRUMENTATION=y
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
|
@ -1045,7 +1066,51 @@ CONFIG_FRAME_POINTER=y
|
|||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
CONFIG_CRYPTO=y
|
||||
# CONFIG_CRYPTO_SEQIV is not set
|
||||
# CONFIG_CRYPTO_MANAGER is not set
|
||||
# CONFIG_CRYPTO_HMAC is not set
|
||||
# CONFIG_CRYPTO_XCBC is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_MD4 is not set
|
||||
# CONFIG_CRYPTO_MD5 is not set
|
||||
# CONFIG_CRYPTO_SHA1 is not set
|
||||
# CONFIG_CRYPTO_SHA256 is not set
|
||||
# CONFIG_CRYPTO_SHA512 is not set
|
||||
# CONFIG_CRYPTO_WP512 is not set
|
||||
# CONFIG_CRYPTO_TGR192 is not set
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_ECB is not set
|
||||
# CONFIG_CRYPTO_CBC is not set
|
||||
# CONFIG_CRYPTO_PCBC is not set
|
||||
# CONFIG_CRYPTO_LRW is not set
|
||||
# CONFIG_CRYPTO_XTS is not set
|
||||
# CONFIG_CRYPTO_CTR is not set
|
||||
# CONFIG_CRYPTO_GCM is not set
|
||||
# CONFIG_CRYPTO_CCM is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
# CONFIG_CRYPTO_DES is not set
|
||||
# CONFIG_CRYPTO_FCRYPT is not set
|
||||
# CONFIG_CRYPTO_BLOWFISH is not set
|
||||
# CONFIG_CRYPTO_TWOFISH is not set
|
||||
# CONFIG_CRYPTO_SERPENT is not set
|
||||
# CONFIG_CRYPTO_AES is not set
|
||||
# CONFIG_CRYPTO_CAST5 is not set
|
||||
# CONFIG_CRYPTO_CAST6 is not set
|
||||
# CONFIG_CRYPTO_TEA is not set
|
||||
# CONFIG_CRYPTO_ARC4 is not set
|
||||
# CONFIG_CRYPTO_KHAZAD is not set
|
||||
# CONFIG_CRYPTO_ANUBIS is not set
|
||||
# CONFIG_CRYPTO_SEED is not set
|
||||
# CONFIG_CRYPTO_SALSA20 is not set
|
||||
# CONFIG_CRYPTO_DEFLATE is not set
|
||||
# CONFIG_CRYPTO_MICHAEL_MIC is not set
|
||||
# CONFIG_CRYPTO_CRC32C is not set
|
||||
# CONFIG_CRYPTO_CAMELLIA is not set
|
||||
# CONFIG_CRYPTO_TEST is not set
|
||||
# CONFIG_CRYPTO_AUTHENC is not set
|
||||
# CONFIG_CRYPTO_LZO is not set
|
||||
CONFIG_CRYPTO_HW=y
|
||||
|
||||
#
|
||||
# Library routines
|
||||
|
|
|
@ -11,6 +11,9 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#define ATAG_CORE 0x54410001
|
||||
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
|
||||
|
||||
.type __switch_data, %object
|
||||
__switch_data:
|
||||
.long __mmap_switched
|
||||
|
|
|
@ -29,9 +29,6 @@
|
|||
#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)
|
||||
#define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET)
|
||||
|
||||
#define ATAG_CORE 0x54410001
|
||||
#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
|
||||
|
||||
|
||||
/*
|
||||
* swapper_pg_dir is the virtual address of the initial page table.
|
||||
|
|
|
@ -431,6 +431,11 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int __kprobes arch_trampoline_kprobe(struct kprobe *p)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct undef_hook kprobes_break_hook = {
|
||||
.instr_mask = 0xffffffff,
|
||||
.instr_val = KPROBE_BREAKPOINT_INSTRUCTION,
|
||||
|
|
|
@ -245,10 +245,7 @@ static struct fb_monspecs at91fb_default_monspecs = {
|
|||
|
||||
static void at91_lcdc_power_control(int on)
|
||||
{
|
||||
if (on)
|
||||
at91_set_gpio_value(AT91_PIN_PD12, 0); /* power up */
|
||||
else
|
||||
at91_set_gpio_value(AT91_PIN_PD12, 1); /* power down */
|
||||
at91_set_gpio_value(AT91_PIN_PA30, on);
|
||||
}
|
||||
|
||||
/* Driver datas */
|
||||
|
|
|
@ -490,6 +490,11 @@ postcore_initcall(at91_gpio_debugfs_init);
|
|||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
/* This lock class tells lockdep that GPIO irqs are in a different
|
||||
* category than their parents, so it won't report false recursion.
|
||||
*/
|
||||
static struct lock_class_key gpio_lock_class;
|
||||
|
||||
/*
|
||||
* Called from the processor-specific init to enable GPIO interrupt support.
|
||||
*/
|
||||
|
@ -510,6 +515,8 @@ void __init at91_gpio_irq_setup(void)
|
|||
__raw_writel(~0, this->regbase + PIO_IDR);
|
||||
|
||||
for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
|
||||
lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class);
|
||||
|
||||
/*
|
||||
* Can use the "simple" and not "edge" handler since it's
|
||||
* shorter, and the AIC handles interrupts sanely.
|
||||
|
|
|
@ -103,7 +103,7 @@ static void
|
|||
h720x_gpio_handler(unsigned int mask, unsigned int irq,
|
||||
struct irq_desc *desc)
|
||||
{
|
||||
IRQDBG("%s irq: %d\n",__FUNCTION__,irq);
|
||||
IRQDBG("%s irq: %d\n", __func__, irq);
|
||||
desc = irq_desc + irq;
|
||||
while (mask) {
|
||||
if (mask & 1) {
|
||||
|
@ -123,7 +123,7 @@ h720x_gpioa_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
|||
|
||||
mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOA(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,7 @@ h720x_gpiob_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
|||
unsigned int mask, irq;
|
||||
mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOB(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
|
||||
|
@ -144,7 +144,7 @@ h720x_gpioc_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
|||
|
||||
mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOC(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
|
||||
|
@ -155,7 +155,7 @@ h720x_gpiod_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
|||
|
||||
mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOD(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
|
||||
|
@ -167,7 +167,7 @@ h720x_gpioe_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
|
|||
|
||||
mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
|
||||
irq = IRQ_CHAINED_GPIOE(0);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq);
|
||||
IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
|
||||
h720x_gpio_handler(mask, irq, desc);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -54,7 +54,7 @@ static inline int imx_dma_sg_next(imx_dmach_t dma_ch, unsigned int lastcount)
|
|||
|
||||
if (!imxdma->name) {
|
||||
printk(KERN_CRIT "%s: called for not allocated channel %d\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -288,7 +288,7 @@ imx_dma_setup_handlers(imx_dmach_t dma_ch,
|
|||
|
||||
if (!imxdma->name) {
|
||||
printk(KERN_CRIT "%s: called for not allocated channel %d\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -321,7 +321,7 @@ void imx_dma_enable(imx_dmach_t dma_ch)
|
|||
|
||||
if (!imxdma->name) {
|
||||
printk(KERN_CRIT "%s: called for not allocated channel %d\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -365,7 +365,7 @@ int imx_dma_request(imx_dmach_t dma_ch, const char *name)
|
|||
|
||||
if (dma_ch >= IMX_DMA_CHANNELS) {
|
||||
printk(KERN_CRIT "%s: called for non-existed channel %d\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -396,7 +396,7 @@ void imx_dma_free(imx_dmach_t dma_ch)
|
|||
if (!imxdma->name) {
|
||||
printk(KERN_CRIT
|
||||
"%s: trying to free channel %d which is already freed\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -456,7 +456,7 @@ imx_dma_request_by_prio(imx_dmach_t * pdma_ch, const char *name,
|
|||
}
|
||||
}
|
||||
|
||||
printk(KERN_ERR "%s: no free DMA channel found\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: no free DMA channel found\n", __func__);
|
||||
|
||||
return -ENODEV;
|
||||
}
|
||||
|
|
|
@ -160,21 +160,21 @@ imx_gpio_irq_type(unsigned int _irq, unsigned int type)
|
|||
static void
|
||||
imx_gpio_ack_irq(unsigned int irq)
|
||||
{
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, irq);
|
||||
ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32);
|
||||
}
|
||||
|
||||
static void
|
||||
imx_gpio_mask_irq(unsigned int irq)
|
||||
{
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, irq);
|
||||
IMR(IRQ_TO_REG(irq)) &= ~( 1 << ((irq - IRQ_GPIOA(0)) % 32));
|
||||
}
|
||||
|
||||
static void
|
||||
imx_gpio_unmask_irq(unsigned int irq)
|
||||
{
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, irq);
|
||||
IMR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32);
|
||||
}
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ static void __init iq81340mc_init(void)
|
|||
static void __init iq81340mc_timer_init(void)
|
||||
{
|
||||
unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
|
||||
printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq);
|
||||
printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq);
|
||||
iop_init_time(bus_freq);
|
||||
}
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ static void __init iq81340sc_init(void)
|
|||
static void __init iq81340sc_timer_init(void)
|
||||
{
|
||||
unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
|
||||
printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq);
|
||||
printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq);
|
||||
iop_init_time(bus_freq);
|
||||
}
|
||||
|
||||
|
|
|
@ -94,13 +94,13 @@ void iop13xx_map_pci_memory(void)
|
|||
, 0, iop13xx_atux_mem_size, MT_DEVICE);
|
||||
if (!iop13xx_atux_mem_base) {
|
||||
printk("%s: atux allocation "
|
||||
"failed\n", __FUNCTION__);
|
||||
"failed\n", __func__);
|
||||
BUG();
|
||||
}
|
||||
} else
|
||||
iop13xx_atux_mem_size = 0;
|
||||
PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
|
||||
__FUNCTION__, atu, iop13xx_atux_mem_size,
|
||||
__func__, atu, iop13xx_atux_mem_size,
|
||||
iop13xx_atux_mem_base);
|
||||
break;
|
||||
case 1:
|
||||
|
@ -120,13 +120,13 @@ void iop13xx_map_pci_memory(void)
|
|||
, 0, iop13xx_atue_mem_size, MT_DEVICE);
|
||||
if (!iop13xx_atue_mem_base) {
|
||||
printk("%s: atue allocation "
|
||||
"failed\n", __FUNCTION__);
|
||||
"failed\n", __func__);
|
||||
BUG();
|
||||
}
|
||||
} else
|
||||
iop13xx_atue_mem_size = 0;
|
||||
PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
|
||||
__FUNCTION__, atu, iop13xx_atue_mem_size,
|
||||
__func__, atu, iop13xx_atue_mem_size,
|
||||
iop13xx_atue_mem_base);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -519,7 +519,7 @@ void __init iop13xx_platform_init(void)
|
|||
if (iq8134x_flash_resource.end > iq8134x_flash_resource.start)
|
||||
iop13xx_devices[plat_idx++] = &iq8134x_flash;
|
||||
else
|
||||
printk(KERN_ERR "%s: Failed to probe flash size\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: Failed to probe flash size\n", __func__);
|
||||
#endif
|
||||
|
||||
platform_add_devices(iop13xx_devices, plat_idx);
|
||||
|
|
|
@ -87,7 +87,7 @@ static inline int check_master_abort(void)
|
|||
if (isr & PCI_ISR_PFE) {
|
||||
/* make sure the Master Abort bit is reset */
|
||||
*PCI_ISR = PCI_ISR_PFE;
|
||||
pr_debug("%s failed\n", __FUNCTION__);
|
||||
pr_debug("%s failed\n", __func__);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -65,7 +65,7 @@ static int __init gtwx5715_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|||
else
|
||||
rc = gtwx5715_irqmap[slot][pin-1];
|
||||
|
||||
printk("%s: Mapped slot %d pin %d to IRQ %d\n", __FUNCTION__,slot, pin, rc);
|
||||
printk("%s: Mapped slot %d pin %d to IRQ %d\n", __func__, slot, pin, rc);
|
||||
return(rc);
|
||||
}
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ netx_hif_ack_irq(unsigned int _irq)
|
|||
val &= ~((1 << 24) << irq);
|
||||
writel(val, NETX_DPMAS_INT_EN);
|
||||
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -145,7 +145,7 @@ netx_hif_mask_irq(unsigned int _irq)
|
|||
val = readl(NETX_DPMAS_INT_EN);
|
||||
val &= ~((1 << 24) << irq);
|
||||
writel(val, NETX_DPMAS_INT_EN);
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -157,7 +157,7 @@ netx_hif_unmask_irq(unsigned int _irq)
|
|||
val = readl(NETX_DPMAS_INT_EN);
|
||||
val |= (1 << 24) << irq;
|
||||
writel(val, NETX_DPMAS_INT_EN);
|
||||
DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq);
|
||||
DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
|
||||
}
|
||||
|
||||
static struct irq_chip netx_hif_chip = {
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
static spinlock_t gpio_lock = __SPIN_LOCK_UNLOCKED(gpio_lock);
|
||||
|
||||
/* only access gpiores with atomic ops */
|
||||
static DECLARE_BITMAP(gpiores, GPIO_MAX);
|
||||
static DECLARE_BITMAP(gpiores, GPIO_MAX + 1);
|
||||
|
||||
static inline int ns9xxx_valid_gpio(unsigned gpio)
|
||||
{
|
||||
|
|
|
@ -350,6 +350,10 @@ static void __init h2_init_smc91x(void)
|
|||
|
||||
static struct i2c_board_info __initdata h2_i2c_board_info[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("tps65010", 0x48),
|
||||
.type = "tps65010",
|
||||
.irq = OMAP_GPIO_IRQ(58),
|
||||
}, {
|
||||
I2C_BOARD_INFO("isp1301_omap", 0x2d),
|
||||
.type = "isp1301_omap",
|
||||
.irq = OMAP_GPIO_IRQ(2),
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <linux/mtd/nand.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/i2c/tps65010.h>
|
||||
|
||||
#include <asm/setup.h>
|
||||
|
@ -51,6 +52,8 @@
|
|||
#include <asm/arch/mcbsp.h>
|
||||
#include <asm/arch/omap-alsa.h>
|
||||
|
||||
#define H3_TS_GPIO 48
|
||||
|
||||
static int h3_keymap[] = {
|
||||
KEY(0, 0, KEY_LEFT),
|
||||
KEY(0, 1, KEY_RIGHT),
|
||||
|
@ -373,6 +376,17 @@ static struct platform_device h3_lcd_device = {
|
|||
.id = -1,
|
||||
};
|
||||
|
||||
static struct spi_board_info h3_spi_board_info[] __initdata = {
|
||||
[0] = {
|
||||
.modalias = "tsc2101",
|
||||
.bus_num = 2,
|
||||
.chip_select = 0,
|
||||
.irq = OMAP_GPIO_IRQ(H3_TS_GPIO),
|
||||
.max_speed_hz = 16000000,
|
||||
/* .platform_data = &tsc_platform_data, */
|
||||
},
|
||||
};
|
||||
|
||||
static struct omap_mcbsp_reg_cfg mcbsp_regs = {
|
||||
.spcr2 = FREE | FRST | GRST | XRST | XINTM(3),
|
||||
.spcr1 = RINTM(3) | RRST,
|
||||
|
@ -457,6 +471,14 @@ static struct omap_board_config_kernel h3_config[] __initdata = {
|
|||
{ OMAP_TAG_LCD, &h3_lcd_config },
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata h3_i2c_board_info[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("tps65010", 0x48),
|
||||
.type = "tps65013",
|
||||
/* .irq = OMAP_GPIO_IRQ(??), */
|
||||
},
|
||||
};
|
||||
|
||||
static struct omap_gpio_switch h3_gpio_switches[] __initdata = {
|
||||
{
|
||||
.name = "mmc_slot",
|
||||
|
|
|
@ -717,7 +717,7 @@ static int __init omap_pm_init(void)
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_OMAP_32K_TIMER
|
||||
error = sysfs_create_file(power_kobj, &sleep_while_idle_attr);
|
||||
error = sysfs_create_file(power_kobj, &sleep_while_idle_attr.attr);
|
||||
if (error)
|
||||
printk(KERN_ERR "sysfs_create_file failed: %d\n", error);
|
||||
#endif
|
||||
|
|
|
@ -42,6 +42,12 @@ static struct map_desc omap2_io_desc[] __initdata = {
|
|||
.length = L3_24XX_SIZE,
|
||||
.type = MT_DEVICE
|
||||
},
|
||||
{
|
||||
.virtual = L4_24XX_VIRT,
|
||||
.pfn = __phys_to_pfn(L4_24XX_PHYS),
|
||||
.length = L4_24XX_SIZE,
|
||||
.type = MT_DEVICE
|
||||
},
|
||||
#ifdef CONFIG_ARCH_OMAP2430
|
||||
{
|
||||
.virtual = L4_WK_243X_VIRT,
|
||||
|
|
|
@ -97,14 +97,20 @@
|
|||
#define PCIE_BAR_CTRL(n) ORION_PCIE_REG(0x1804 + ((n - 1) * 4))
|
||||
#define PCIE_BAR_LO(n) ORION_PCIE_REG(0x0010 + ((n) * 8))
|
||||
#define PCIE_BAR_HI(n) ORION_PCIE_REG(0x0014 + ((n) * 8))
|
||||
#define PCIE_WIN_CTRL(n) ORION_PCIE_REG(0x1820 + ((n) << 4))
|
||||
#define PCIE_WIN_BASE(n) ORION_PCIE_REG(0x1824 + ((n) << 4))
|
||||
#define PCIE_WIN_REMAP(n) ORION_PCIE_REG(0x182c + ((n) << 4))
|
||||
#define PCIE_WIN_CTRL(n) (((n) < 5) ? \
|
||||
ORION_PCIE_REG(0x1820 + ((n) << 4)) : \
|
||||
ORION_PCIE_REG(0x1880))
|
||||
#define PCIE_WIN_BASE(n) (((n) < 5) ? \
|
||||
ORION_PCIE_REG(0x1824 + ((n) << 4)) : \
|
||||
ORION_PCIE_REG(0x1884))
|
||||
#define PCIE_WIN_REMAP(n) (((n) < 5) ? \
|
||||
ORION_PCIE_REG(0x182c + ((n) << 4)) : \
|
||||
ORION_PCIE_REG(0x188c))
|
||||
#define PCIE_DEFWIN_CTRL ORION_PCIE_REG(0x18b0)
|
||||
#define PCIE_EXPROM_WIN_CTRL ORION_PCIE_REG(0x18c0)
|
||||
#define PCIE_EXPROM_WIN_REMP ORION_PCIE_REG(0x18c4)
|
||||
#define PCIE_MAX_BARS 3
|
||||
#define PCIE_MAX_WINS 5
|
||||
#define PCIE_MAX_WINS 6
|
||||
|
||||
/*
|
||||
* Use PCIE BAR '1' for all DDR banks
|
||||
|
|
|
@ -17,7 +17,9 @@
|
|||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/mv643xx_i2c.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/timex.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/arch/hardware.h>
|
||||
#include "common.h"
|
||||
|
@ -177,8 +179,8 @@ static struct platform_device orion_ehci1 = {
|
|||
|
||||
static struct resource orion_eth_shared_resources[] = {
|
||||
{
|
||||
.start = ORION_ETH_PHYS_BASE,
|
||||
.end = ORION_ETH_PHYS_BASE + 0xffff,
|
||||
.start = ORION_ETH_PHYS_BASE + 0x2000,
|
||||
.end = ORION_ETH_PHYS_BASE + 0x3fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
@ -347,3 +349,21 @@ void __init orion_init(void)
|
|||
platform_device_register(&orion_ehci1);
|
||||
platform_device_register(&orion_i2c);
|
||||
}
|
||||
|
||||
/*
|
||||
* Many orion-based systems have buggy bootloader implementations.
|
||||
* This is a common fixup for bogus memory tags.
|
||||
*/
|
||||
void __init tag_fixup_mem32(struct machine_desc *mdesc, struct tag *t,
|
||||
char **from, struct meminfo *meminfo)
|
||||
{
|
||||
for (; t->hdr.size; t = tag_next(t))
|
||||
if (t->hdr.tag == ATAG_MEM &&
|
||||
(!t->u.mem.size || t->u.mem.size & ~PAGE_MASK ||
|
||||
t->u.mem.start & ~PAGE_MASK)) {
|
||||
printk(KERN_WARNING
|
||||
"Clearing invalid memory bank %dKB@0x%08x\n",
|
||||
t->u.mem.size / 1024, t->u.mem.start);
|
||||
t->hdr.tag = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,4 +83,10 @@ struct mv_sata_platform_data;
|
|||
|
||||
void __init orion_sata_init(struct mv_sata_platform_data *sata_data);
|
||||
|
||||
struct machine_desc;
|
||||
struct meminfo;
|
||||
struct tag;
|
||||
extern void __init tag_fixup_mem32(struct machine_desc *, struct tag *,
|
||||
char **, struct meminfo *);
|
||||
|
||||
#endif /* __ARCH_ORION_COMMON_H__ */
|
||||
|
|
|
@ -319,4 +319,5 @@ MACHINE_START(DNS323, "D-Link DNS-323")
|
|||
.map_io = orion_map_io,
|
||||
.init_irq = orion_init_irq,
|
||||
.timer = &orion_timer,
|
||||
.fixup = tag_fixup_mem32,
|
||||
MACHINE_END
|
||||
|
|
|
@ -36,7 +36,7 @@ int gpio_direction_input(unsigned pin)
|
|||
unsigned long flags;
|
||||
|
||||
if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ int gpio_direction_output(unsigned pin, int value)
|
|||
int mask;
|
||||
|
||||
if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -141,7 +141,7 @@ int gpio_request(unsigned pin, const char *label)
|
|||
unsigned long flags;
|
||||
|
||||
if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -149,7 +149,7 @@ int gpio_request(unsigned pin, const char *label)
|
|||
|
||||
if (gpio_label[pin]) {
|
||||
pr_debug("%s: GPIO %d already used as %s\n",
|
||||
__FUNCTION__, pin, gpio_label[pin]);
|
||||
__func__, pin, gpio_label[pin]);
|
||||
ret = -EBUSY;
|
||||
} else
|
||||
gpio_label[pin] = label ? label : "?";
|
||||
|
@ -162,12 +162,12 @@ EXPORT_SYMBOL(gpio_request);
|
|||
void gpio_free(unsigned pin)
|
||||
{
|
||||
if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
|
||||
pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin);
|
||||
pr_debug("%s: invalid GPIO %d\n", __func__, pin);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!gpio_label[pin])
|
||||
pr_warning("%s: GPIO %d already freed\n", __FUNCTION__, pin);
|
||||
pr_warning("%s: GPIO %d already freed\n", __func__, pin);
|
||||
else
|
||||
gpio_label[pin] = NULL;
|
||||
}
|
||||
|
|
|
@ -240,4 +240,5 @@ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
|
|||
.map_io = orion_map_io,
|
||||
.init_irq = orion_init_irq,
|
||||
.timer = &orion_timer,
|
||||
.fixup = tag_fixup_mem32,
|
||||
MACHINE_END
|
||||
|
|
|
@ -357,4 +357,5 @@ MACHINE_START(TS209, "QNAP TS-109/TS-209")
|
|||
.map_io = orion_map_io,
|
||||
.init_irq = orion_init_irq,
|
||||
.timer = &orion_timer,
|
||||
.fixup = tag_fixup_mem32,
|
||||
MACHINE_END
|
||||
|
|
|
@ -976,7 +976,7 @@ static int __init clk_init(void)
|
|||
(*clkp)->set_parent((*clkp), (*clkp)->parent);
|
||||
}
|
||||
pr_debug("%s: clock %s, rate %ld\n",
|
||||
__FUNCTION__, (*clkp)->name, (*clkp)->rate);
|
||||
__func__, (*clkp)->name, (*clkp)->rate);
|
||||
}
|
||||
|
||||
local_clk_use(&ck_pll4);
|
||||
|
|
|
@ -192,7 +192,7 @@ void pnx4008_free_channel(int ch)
|
|||
if (!dma_channels[ch].name) {
|
||||
printk(KERN_CRIT
|
||||
"%s: trying to free channel %d which is already freed\n",
|
||||
__FUNCTION__, ch);
|
||||
__func__, ch);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ static int __init cmx270_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|||
{
|
||||
int irq;
|
||||
|
||||
dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __FUNCTION__, slot, pin);
|
||||
dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __func__, slot, pin);
|
||||
|
||||
irq = it8152_pci_map_irq(dev, slot, pin);
|
||||
if (irq)
|
||||
|
|
|
@ -504,11 +504,11 @@ static void cmx270_mci_setpower(struct device *dev, unsigned int vdd)
|
|||
struct pxamci_platform_data *p_d = dev->platform_data;
|
||||
|
||||
if ((1 << vdd) & p_d->ocr_mask) {
|
||||
printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
|
||||
printk(KERN_DEBUG "%s: on\n", __func__);
|
||||
GPCR(105) = GPIO_bit(105);
|
||||
} else {
|
||||
GPSR(105) = GPIO_bit(105);
|
||||
printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
|
||||
printk(KERN_DEBUG "%s: off\n", __func__);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ void pxa_free_dma (int dma_ch)
|
|||
if (!dma_channels[dma_ch].name) {
|
||||
printk (KERN_CRIT
|
||||
"%s: trying to free channel %d which is already freed\n",
|
||||
__FUNCTION__, dma_ch);
|
||||
__func__, dma_ch);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -264,7 +264,7 @@ static int em_x270_mci_init(struct device *dev,
|
|||
"MMC card detect", data);
|
||||
if (err) {
|
||||
printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n",
|
||||
__FUNCTION__, err);
|
||||
__func__, err);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
|
@ -390,11 +390,11 @@ static void mainstone_mci_setpower(struct device *dev, unsigned int vdd)
|
|||
struct pxamci_platform_data* p_d = dev->platform_data;
|
||||
|
||||
if (( 1 << vdd) & p_d->ocr_mask) {
|
||||
printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
|
||||
printk(KERN_DEBUG "%s: on\n", __func__);
|
||||
MST_MSCWR1 |= MST_MSCWR1_MMC_ON;
|
||||
MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL;
|
||||
} else {
|
||||
printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
|
||||
printk(KERN_DEBUG "%s: off\n", __func__);
|
||||
MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -217,7 +217,7 @@ void board_pcmcia_power(int power)
|
|||
ConXS_BCR = trizeps_conxs_bcr;
|
||||
|
||||
}
|
||||
pr_debug("%s: o%s 0x%x\n", __FUNCTION__, power ? "n": "ff", trizeps_conxs_bcr);
|
||||
pr_debug("%s: o%s 0x%x\n", __func__, power ? "n": "ff", trizeps_conxs_bcr);
|
||||
}
|
||||
|
||||
/* backlight power switching for LCD panel */
|
||||
|
@ -228,7 +228,7 @@ static void board_backlight_power(int on)
|
|||
} else {
|
||||
trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP;
|
||||
}
|
||||
pr_debug("%s: o%s 0x%x\n", __FUNCTION__, on ? "n" : "ff", trizeps_conxs_bcr);
|
||||
pr_debug("%s: o%s 0x%x\n", __func__, on ? "n" : "ff", trizeps_conxs_bcr);
|
||||
ConXS_BCR = trizeps_conxs_bcr;
|
||||
}
|
||||
|
||||
|
@ -238,10 +238,10 @@ static void board_mci_power(struct device *dev, unsigned int vdd)
|
|||
struct pxamci_platform_data* p_d = dev->platform_data;
|
||||
|
||||
if (( 1 << vdd) & p_d->ocr_mask) {
|
||||
pr_debug("%s: on\n", __FUNCTION__);
|
||||
pr_debug("%s: on\n", __func__);
|
||||
/* FIXME fill in values here */
|
||||
} else {
|
||||
pr_debug("%s: off\n", __FUNCTION__);
|
||||
pr_debug("%s: off\n", __func__);
|
||||
/* FIXME fill in values here */
|
||||
}
|
||||
}
|
||||
|
|
|
@ -206,7 +206,7 @@ static int __init badge4_init(void)
|
|||
if (ret < 0)
|
||||
printk(KERN_ERR
|
||||
"%s: SA-1111 initialization failed (%d)\n",
|
||||
__FUNCTION__, ret);
|
||||
__func__, ret);
|
||||
|
||||
|
||||
/* maybe turn on 5v0 from the start */
|
||||
|
@ -240,11 +240,11 @@ void badge4_set_5V(unsigned subsystem, int on)
|
|||
/* detect on->off and off->on transitions */
|
||||
if ((!old_5V_bitmap) && (badge4_5V_bitmap)) {
|
||||
/* was off, now on */
|
||||
printk(KERN_INFO "%s: enabling 5V supply rail\n", __FUNCTION__);
|
||||
printk(KERN_INFO "%s: enabling 5V supply rail\n", __func__);
|
||||
GPSR = BADGE4_GPIO_PCMEN5V;
|
||||
} else if ((old_5V_bitmap) && (!badge4_5V_bitmap)) {
|
||||
/* was on, now off */
|
||||
printk(KERN_INFO "%s: disabling 5V supply rail\n", __FUNCTION__);
|
||||
printk(KERN_INFO "%s: disabling 5V supply rail\n", __func__);
|
||||
GPCR = BADGE4_GPIO_PCMEN5V;
|
||||
}
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ static void sa1100_update_dram_timings(int current_speed, int new_speed)
|
|||
|
||||
if (settings->speed == 0) {
|
||||
panic("%s: couldn't find dram setting for speed %d\n",
|
||||
__FUNCTION__, new_speed);
|
||||
__func__, new_speed);
|
||||
}
|
||||
|
||||
/* No risk, no fun: run with interrupts on! */
|
||||
|
|
|
@ -129,7 +129,7 @@ int sa1100_request_dma (dma_device_t device, const char *device_id,
|
|||
if (err) {
|
||||
printk(KERN_ERR
|
||||
"%s: unable to request IRQ %d for %s\n",
|
||||
__FUNCTION__, IRQ_DMA0 + i, device_id);
|
||||
__func__, IRQ_DMA0 + i, device_id);
|
||||
dma->device = 0;
|
||||
return err;
|
||||
}
|
||||
|
@ -165,12 +165,12 @@ void sa1100_free_dma(dma_regs_t *regs)
|
|||
if (regs == (dma_regs_t *)&DDAR(i))
|
||||
break;
|
||||
if (i >= SA1100_DMA_CHANNELS) {
|
||||
printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: bad DMA identifier\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dma_chan[i].device) {
|
||||
printk(KERN_ERR "%s: Trying to free free DMA\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: Trying to free free DMA\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -329,7 +329,7 @@ void sa1100_reset_dma(dma_regs_t *regs)
|
|||
if (regs == (dma_regs_t *)&DDAR(i))
|
||||
break;
|
||||
if (i >= SA1100_DMA_CHANNELS) {
|
||||
printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__);
|
||||
printk(KERN_ERR "%s: bad DMA identifier\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -596,7 +596,7 @@ static void h3800_control_egpio(enum ipaq_egpio_type x, int setp)
|
|||
case IPAQ_EGPIO_CODEC_NRESET:
|
||||
case IPAQ_EGPIO_AUDIO_ON:
|
||||
case IPAQ_EGPIO_QMUTE:
|
||||
printk("%s: error - should not be called\n", __FUNCTION__);
|
||||
printk("%s: error - should not be called\n", __func__);
|
||||
break;
|
||||
case IPAQ_EGPIO_OPT_NVRAM_ON:
|
||||
SET_ASIC2(GPIO2_OPT_ON_NVRAM);
|
||||
|
@ -638,7 +638,7 @@ static int h3800_pm_callback(int req)
|
|||
static u16 asic2_data;
|
||||
int result = 0;
|
||||
|
||||
printk("%s %d\n", __FUNCTION__, req);
|
||||
printk("%s %d\n", __func__, req);
|
||||
|
||||
switch (req) {
|
||||
case PM_RESUME:
|
||||
|
@ -666,7 +666,7 @@ static int h3800_pm_callback(int req)
|
|||
asic2_data = H3800_ASIC2_GPIOPIOD;
|
||||
break;
|
||||
default:
|
||||
printk("%s: unrecognized PM callback\n", __FUNCTION__);
|
||||
printk("%s: unrecognized PM callback\n", __func__);
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
|
@ -706,7 +706,7 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
|
|||
{
|
||||
int i;
|
||||
|
||||
if (0) printk("%s: interrupt received\n", __FUNCTION__);
|
||||
if (0) printk("%s: interrupt received\n", __func__);
|
||||
|
||||
desc->chip->ack(irq);
|
||||
|
||||
|
@ -716,21 +716,21 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
|
|||
|
||||
/* KPIO */
|
||||
irq = H3800_ASIC2_KPIINTFLAG;
|
||||
if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq);
|
||||
if (0) printk("%s KPIO 0x%08X\n", __func__, irq);
|
||||
for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++)
|
||||
if (irq & kpio_irq_mask[j])
|
||||
handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j);
|
||||
|
||||
/* GPIO2 */
|
||||
irq = H3800_ASIC2_GPIINTFLAG;
|
||||
if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq);
|
||||
if (0) printk("%s GPIO 0x%08X\n", __func__, irq);
|
||||
for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++)
|
||||
if (irq & gpio_irq_mask[j])
|
||||
handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j);
|
||||
}
|
||||
|
||||
if (i >= MAX_ASIC_ISR_LOOPS)
|
||||
printk("%s: interrupt processing overrun\n", __FUNCTION__);
|
||||
printk("%s: interrupt processing overrun\n", __func__);
|
||||
|
||||
/* For level-based interrupts */
|
||||
desc->chip->unmask(irq);
|
||||
|
|
|
@ -371,7 +371,7 @@ static int __init iop3xx_init_atu_setup(char *str)
|
|||
default:
|
||||
printk(KERN_DEBUG "\"%s\" malformed at "
|
||||
"character: \'%c\'",
|
||||
__FUNCTION__,
|
||||
__func__,
|
||||
*str);
|
||||
*(str + 1) = '\0';
|
||||
}
|
||||
|
|
|
@ -33,43 +33,33 @@
|
|||
#define MPU_CLK "virt_prcm_set"
|
||||
#endif
|
||||
|
||||
static struct clk *mpu_clk;
|
||||
|
||||
/* TODO: Add support for SDRAM timing changes */
|
||||
|
||||
int omap_verify_speed(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct clk * mpu_clk;
|
||||
|
||||
if (policy->cpu)
|
||||
return -EINVAL;
|
||||
|
||||
cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
|
||||
policy->cpuinfo.max_freq);
|
||||
mpu_clk = clk_get(NULL, MPU_CLK);
|
||||
if (IS_ERR(mpu_clk))
|
||||
return PTR_ERR(mpu_clk);
|
||||
|
||||
policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000;
|
||||
policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000;
|
||||
cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
|
||||
policy->cpuinfo.max_freq);
|
||||
clk_put(mpu_clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned int omap_getspeed(unsigned int cpu)
|
||||
{
|
||||
struct clk * mpu_clk;
|
||||
unsigned long rate;
|
||||
|
||||
if (cpu)
|
||||
return 0;
|
||||
|
||||
mpu_clk = clk_get(NULL, MPU_CLK);
|
||||
if (IS_ERR(mpu_clk))
|
||||
return 0;
|
||||
rate = clk_get_rate(mpu_clk) / 1000;
|
||||
clk_put(mpu_clk);
|
||||
|
||||
return rate;
|
||||
}
|
||||
|
||||
|
@ -77,14 +67,9 @@ static int omap_target(struct cpufreq_policy *policy,
|
|||
unsigned int target_freq,
|
||||
unsigned int relation)
|
||||
{
|
||||
struct clk * mpu_clk;
|
||||
struct cpufreq_freqs freqs;
|
||||
int ret = 0;
|
||||
|
||||
mpu_clk = clk_get(NULL, MPU_CLK);
|
||||
if (IS_ERR(mpu_clk))
|
||||
return PTR_ERR(mpu_clk);
|
||||
|
||||
freqs.old = omap_getspeed(0);
|
||||
freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
|
||||
freqs.cpu = 0;
|
||||
|
@ -92,15 +77,12 @@ static int omap_target(struct cpufreq_policy *policy,
|
|||
cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
|
||||
ret = clk_set_rate(mpu_clk, target_freq * 1000);
|
||||
cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
|
||||
clk_put(mpu_clk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int __init omap_cpu_init(struct cpufreq_policy *policy)
|
||||
{
|
||||
struct clk * mpu_clk;
|
||||
|
||||
mpu_clk = clk_get(NULL, MPU_CLK);
|
||||
if (IS_ERR(mpu_clk))
|
||||
return PTR_ERR(mpu_clk);
|
||||
|
@ -111,17 +93,23 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)
|
|||
policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000;
|
||||
policy->cpuinfo.max_freq = clk_round_rate(mpu_clk, VERY_HI_RATE) / 1000;
|
||||
policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
|
||||
clk_put(mpu_clk);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int omap_cpu_exit(struct cpufreq_policy *policy)
|
||||
{
|
||||
clk_put(mpu_clk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct cpufreq_driver omap_driver = {
|
||||
.flags = CPUFREQ_STICKY,
|
||||
.verify = omap_verify_speed,
|
||||
.target = omap_target,
|
||||
.get = omap_getspeed,
|
||||
.init = omap_cpu_init,
|
||||
.exit = omap_cpu_exit,
|
||||
.name = "omap",
|
||||
};
|
||||
|
||||
|
|
|
@ -88,68 +88,6 @@ EXPORT_SYMBOL(dsp_kfunc_device_register);
|
|||
static inline void omap_init_dsp(void) { }
|
||||
#endif /* CONFIG_OMAP_DSP */
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
|
||||
|
||||
#define OMAP1_I2C_BASE 0xfffb3800
|
||||
#define OMAP2_I2C_BASE1 0x48070000
|
||||
#define OMAP_I2C_SIZE 0x3f
|
||||
#define OMAP1_I2C_INT INT_I2C
|
||||
#define OMAP2_I2C_INT1 56
|
||||
|
||||
static struct resource i2c_resources1[] = {
|
||||
{
|
||||
.start = 0,
|
||||
.end = 0,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = 0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
/* DMA not used; works around erratum writing to non-empty i2c fifo */
|
||||
|
||||
static struct platform_device omap_i2c_device1 = {
|
||||
.name = "i2c_omap",
|
||||
.id = 1,
|
||||
.num_resources = ARRAY_SIZE(i2c_resources1),
|
||||
.resource = i2c_resources1,
|
||||
};
|
||||
|
||||
/* See also arch/arm/mach-omap2/devices.c for second I2C on 24xx */
|
||||
static void omap_init_i2c(void)
|
||||
{
|
||||
if (cpu_is_omap24xx()) {
|
||||
i2c_resources1[0].start = OMAP2_I2C_BASE1;
|
||||
i2c_resources1[0].end = OMAP2_I2C_BASE1 + OMAP_I2C_SIZE;
|
||||
i2c_resources1[1].start = OMAP2_I2C_INT1;
|
||||
} else {
|
||||
i2c_resources1[0].start = OMAP1_I2C_BASE;
|
||||
i2c_resources1[0].end = OMAP1_I2C_BASE + OMAP_I2C_SIZE;
|
||||
i2c_resources1[1].start = OMAP1_I2C_INT;
|
||||
}
|
||||
|
||||
/* FIXME define and use a boot tag, in case of boards that
|
||||
* either don't wire up I2C, or chips that mux it differently...
|
||||
* it can include clocking and address info, maybe more.
|
||||
*/
|
||||
if (cpu_is_omap24xx()) {
|
||||
omap_cfg_reg(M19_24XX_I2C1_SCL);
|
||||
omap_cfg_reg(L15_24XX_I2C1_SDA);
|
||||
} else {
|
||||
omap_cfg_reg(I2C_SCL);
|
||||
omap_cfg_reg(I2C_SDA);
|
||||
}
|
||||
|
||||
(void) platform_device_register(&omap_i2c_device1);
|
||||
}
|
||||
|
||||
#else
|
||||
static inline void omap_init_i2c(void) {}
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
#if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE)
|
||||
|
||||
|
@ -501,7 +439,6 @@ static int __init omap_init_devices(void)
|
|||
* in alphabetical order so they're easier to sort through.
|
||||
*/
|
||||
omap_init_dsp();
|
||||
omap_init_i2c();
|
||||
omap_init_kp();
|
||||
omap_init_mmc();
|
||||
omap_init_uwire();
|
||||
|
|
|
@ -137,7 +137,7 @@ static void omap_disable_channel_irq(int lch);
|
|||
static inline void omap_enable_channel_irq(int lch);
|
||||
|
||||
#define REVISIT_24XX() printk(KERN_ERR "FIXME: no %s on 24xx\n", \
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
|
||||
#ifdef CONFIG_ARCH_OMAP15XX
|
||||
/* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */
|
||||
|
@ -699,7 +699,7 @@ omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams)
|
|||
u32 reg;
|
||||
|
||||
if (!cpu_class_is_omap2()) {
|
||||
printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __FUNCTION__);
|
||||
printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1705,14 +1705,8 @@ static int omap2_dma_handle_ch(int ch)
|
|||
status = OMAP_DMA_CSR_REG(ch);
|
||||
}
|
||||
|
||||
if (likely(dma_chan[ch].callback != NULL)) {
|
||||
if (dma_chan[ch].chain_id != -1)
|
||||
dma_chan[ch].callback(dma_chan[ch].chain_id, status,
|
||||
dma_chan[ch].data);
|
||||
else
|
||||
dma_chan[ch].callback(ch, status, dma_chan[ch].data);
|
||||
|
||||
}
|
||||
if (likely(dma_chan[ch].callback != NULL))
|
||||
dma_chan[ch].callback(ch, status, dma_chan[ch].data);
|
||||
|
||||
OMAP_DMA_CSR_REG(ch) = status;
|
||||
|
||||
|
|
|
@ -268,7 +268,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
|
|||
if (id <= 0 || id > dm_timer_count || dm_timers[id-1].reserved) {
|
||||
spin_unlock_irqrestore(&dm_timer_lock, flags);
|
||||
printk("BUG: warning at %s:%d/%s(): unable to get timer %d\n",
|
||||
__FILE__, __LINE__, __FUNCTION__, id);
|
||||
__FILE__, __LINE__, __func__, id);
|
||||
dump_stack();
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -333,13 +333,14 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)
|
|||
void omap_set_gpio_direction(int gpio, int is_input)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return;
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
_set_gpio_direction(bank, get_gpio_index(gpio), is_input);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
|
||||
|
@ -406,13 +407,14 @@ static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
|
|||
void omap_set_gpio_dataout(int gpio, int enable)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return;
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
_set_gpio_dataout(bank, get_gpio_index(gpio), enable);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
int omap_get_gpio_datain(int gpio)
|
||||
|
@ -624,6 +626,7 @@ static int gpio_irq_type(unsigned irq, unsigned type)
|
|||
struct gpio_bank *bank;
|
||||
unsigned gpio;
|
||||
int retval;
|
||||
unsigned long flags;
|
||||
|
||||
if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE)
|
||||
gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE);
|
||||
|
@ -642,13 +645,13 @@ static int gpio_irq_type(unsigned irq, unsigned type)
|
|||
return -EINVAL;
|
||||
|
||||
bank = get_irq_chip_data(irq);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type);
|
||||
if (retval == 0) {
|
||||
irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK;
|
||||
irq_desc[irq].status |= type;
|
||||
}
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -830,11 +833,13 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena
|
|||
*/
|
||||
static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
switch (bank->method) {
|
||||
#ifdef CONFIG_ARCH_OMAP16XX
|
||||
case METHOD_MPUIO:
|
||||
case METHOD_GPIO_1610:
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (enable) {
|
||||
bank->suspend_wakeup |= (1 << gpio);
|
||||
enable_irq_wake(bank->irq);
|
||||
|
@ -842,7 +847,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
|
|||
disable_irq_wake(bank->irq);
|
||||
bank->suspend_wakeup &= ~(1 << gpio);
|
||||
}
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return 0;
|
||||
#endif
|
||||
#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
|
||||
|
@ -853,7 +858,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
|
|||
(bank - gpio_bank) * 32 + gpio);
|
||||
return -EINVAL;
|
||||
}
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (enable) {
|
||||
bank->suspend_wakeup |= (1 << gpio);
|
||||
enable_irq_wake(bank->irq);
|
||||
|
@ -861,7 +866,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
|
|||
disable_irq_wake(bank->irq);
|
||||
bank->suspend_wakeup &= ~(1 << gpio);
|
||||
}
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return 0;
|
||||
#endif
|
||||
default:
|
||||
|
@ -897,16 +902,17 @@ static int gpio_wake_enable(unsigned int irq, unsigned int enable)
|
|||
int omap_request_gpio(int gpio)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return -EINVAL;
|
||||
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) {
|
||||
printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio);
|
||||
dump_stack();
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return -1;
|
||||
}
|
||||
bank->reserved_map |= (1 << get_gpio_index(gpio));
|
||||
|
@ -925,7 +931,7 @@ int omap_request_gpio(int gpio)
|
|||
__raw_writel(__raw_readl(reg) | (1 << get_gpio_index(gpio)), reg);
|
||||
}
|
||||
#endif
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -933,15 +939,16 @@ int omap_request_gpio(int gpio)
|
|||
void omap_free_gpio(int gpio)
|
||||
{
|
||||
struct gpio_bank *bank;
|
||||
unsigned long flags;
|
||||
|
||||
if (check_gpio(gpio) < 0)
|
||||
return;
|
||||
bank = get_gpio_bank(gpio);
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) {
|
||||
printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio);
|
||||
dump_stack();
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
return;
|
||||
}
|
||||
#ifdef CONFIG_ARCH_OMAP16XX
|
||||
|
@ -960,7 +967,7 @@ void omap_free_gpio(int gpio)
|
|||
#endif
|
||||
bank->reserved_map &= ~(1 << get_gpio_index(gpio));
|
||||
_reset_gpio(bank, gpio);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1194,11 +1201,12 @@ static int omap_mpuio_suspend_late(struct platform_device *pdev, pm_message_t me
|
|||
{
|
||||
struct gpio_bank *bank = platform_get_drvdata(pdev);
|
||||
void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
bank->saved_wakeup = __raw_readl(mask_reg);
|
||||
__raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1207,10 +1215,11 @@ static int omap_mpuio_resume_early(struct platform_device *pdev)
|
|||
{
|
||||
struct gpio_bank *bank = platform_get_drvdata(pdev);
|
||||
void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
__raw_writel(bank->saved_wakeup, mask_reg);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1277,6 +1286,11 @@ static struct clk *gpio_fclks[OMAP34XX_NR_GPIOS];
|
|||
static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS];
|
||||
#endif
|
||||
|
||||
/* This lock class tells lockdep that GPIO irqs are in a different
|
||||
* category than their parents, so it won't report false recursion.
|
||||
*/
|
||||
static struct lock_class_key gpio_lock_class;
|
||||
|
||||
static int __init _omap_gpio_init(void)
|
||||
{
|
||||
int i;
|
||||
|
@ -1450,6 +1464,7 @@ static int __init _omap_gpio_init(void)
|
|||
#endif
|
||||
for (j = bank->virtual_irq_start;
|
||||
j < bank->virtual_irq_start + gpio_count; j++) {
|
||||
lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class);
|
||||
set_irq_chip_data(j, bank);
|
||||
if (bank_is_mpuio(bank))
|
||||
set_irq_chip(j, &mpuio_irq_chip);
|
||||
|
@ -1489,6 +1504,7 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
|
|||
void __iomem *wake_status;
|
||||
void __iomem *wake_clear;
|
||||
void __iomem *wake_set;
|
||||
unsigned long flags;
|
||||
|
||||
switch (bank->method) {
|
||||
#ifdef CONFIG_ARCH_OMAP16XX
|
||||
|
@ -1509,11 +1525,11 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
|
|||
continue;
|
||||
}
|
||||
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
bank->saved_wakeup = __raw_readl(wake_status);
|
||||
__raw_writel(0xffffffff, wake_clear);
|
||||
__raw_writel(bank->suspend_wakeup, wake_set);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -1530,6 +1546,7 @@ static int omap_gpio_resume(struct sys_device *dev)
|
|||
struct gpio_bank *bank = &gpio_bank[i];
|
||||
void __iomem *wake_clear;
|
||||
void __iomem *wake_set;
|
||||
unsigned long flags;
|
||||
|
||||
switch (bank->method) {
|
||||
#ifdef CONFIG_ARCH_OMAP16XX
|
||||
|
@ -1548,10 +1565,10 @@ static int omap_gpio_resume(struct sys_device *dev)
|
|||
continue;
|
||||
}
|
||||
|
||||
spin_lock(&bank->lock);
|
||||
spin_lock_irqsave(&bank->lock, flags);
|
||||
__raw_writel(0xffffffff, wake_clear);
|
||||
__raw_writel(bank->saved_wakeup, wake_set);
|
||||
spin_unlock(&bank->lock);
|
||||
spin_unlock_irqrestore(&bank->lock, flags);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -130,8 +130,8 @@ dmadbg_showregs(const char *fname, int line, struct s3c2410_dma_chan *chan)
|
|||
dmadbg_dumpregs(fname, line, chan, &state);
|
||||
}
|
||||
|
||||
#define dbg_showregs(chan) dmadbg_showregs(__FUNCTION__, __LINE__, (chan))
|
||||
#define dbg_showchan(chan) dmadbg_showchan(__FUNCTION__, __LINE__, (chan))
|
||||
#define dbg_showregs(chan) dmadbg_showregs(__func__, __LINE__, (chan))
|
||||
#define dbg_showchan(chan) dmadbg_showchan(__func__, __LINE__, (chan))
|
||||
#else
|
||||
#define dbg_showregs(chan) do { } while(0)
|
||||
#define dbg_showchan(chan) do { } while(0)
|
||||
|
@ -403,7 +403,7 @@ static int s3c2410_dma_start(struct s3c2410_dma_chan *chan)
|
|||
|
||||
if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
|
||||
pr_debug("%s: buff not yet loaded, no more todo\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
} else {
|
||||
chan->load_state = S3C2410_DMALOAD_1RUNNING;
|
||||
s3c2410_dma_loadbuffer(chan, chan->next);
|
||||
|
@ -463,16 +463,16 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
|
|||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: id=%p, data=%08x, size=%d\n",
|
||||
__FUNCTION__, id, (unsigned int)data, size);
|
||||
__func__, id, (unsigned int)data, size);
|
||||
|
||||
buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC);
|
||||
if (buf == NULL) {
|
||||
pr_debug("%s: out of memory (%ld alloc)\n",
|
||||
__FUNCTION__, (long)sizeof(*buf));
|
||||
__func__, (long)sizeof(*buf));
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
//pr_debug("%s: new buffer %p\n", __FUNCTION__, buf);
|
||||
//pr_debug("%s: new buffer %p\n", __func__, buf);
|
||||
//dbg_showchan(chan);
|
||||
|
||||
buf->next = NULL;
|
||||
|
@ -486,18 +486,18 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
|
|||
if (chan->curr == NULL) {
|
||||
/* we've got nothing loaded... */
|
||||
pr_debug("%s: buffer %p queued onto empty channel\n",
|
||||
__FUNCTION__, buf);
|
||||
__func__, buf);
|
||||
|
||||
chan->curr = buf;
|
||||
chan->end = buf;
|
||||
chan->next = NULL;
|
||||
} else {
|
||||
pr_debug("dma%d: %s: buffer %p queued onto non-empty channel\n",
|
||||
chan->number, __FUNCTION__, buf);
|
||||
chan->number, __func__, buf);
|
||||
|
||||
if (chan->end == NULL)
|
||||
pr_debug("dma%d: %s: %p not empty, and chan->end==NULL?\n",
|
||||
chan->number, __FUNCTION__, chan);
|
||||
chan->number, __func__, chan);
|
||||
|
||||
chan->end->next = buf;
|
||||
chan->end = buf;
|
||||
|
@ -572,7 +572,7 @@ s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan)
|
|||
if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
|
||||
/* flag error? */
|
||||
printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
|
||||
chan->number, __FUNCTION__);
|
||||
chan->number, __func__);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
@ -658,7 +658,7 @@ s3c2410_dma_irq(int irq, void *devpw)
|
|||
|
||||
if (buf->magic != BUF_MAGIC) {
|
||||
printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n",
|
||||
chan->number, __FUNCTION__, buf);
|
||||
chan->number, __func__, buf);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
@ -692,7 +692,7 @@ s3c2410_dma_irq(int irq, void *devpw)
|
|||
if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
|
||||
/* flag error? */
|
||||
printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
|
||||
chan->number, __FUNCTION__);
|
||||
chan->number, __func__);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
@ -759,7 +759,7 @@ int s3c2410_dma_request(unsigned int channel,
|
|||
|
||||
if (!chan->irq_claimed) {
|
||||
pr_debug("dma%d: %s : requesting irq %d\n",
|
||||
channel, __FUNCTION__, chan->irq);
|
||||
channel, __func__, chan->irq);
|
||||
|
||||
chan->irq_claimed = 1;
|
||||
local_irq_restore(flags);
|
||||
|
@ -786,7 +786,7 @@ int s3c2410_dma_request(unsigned int channel,
|
|||
|
||||
/* need to setup */
|
||||
|
||||
pr_debug("%s: channel initialised, %p\n", __FUNCTION__, chan);
|
||||
pr_debug("%s: channel initialised, %p\n", __func__, chan);
|
||||
|
||||
return chan->number | DMACH_LOW_LEVEL;
|
||||
}
|
||||
|
@ -823,7 +823,7 @@ int s3c2410_dma_free(dmach_t channel, struct s3c2410_dma_client *client)
|
|||
|
||||
if (chan->state != S3C2410_DMA_IDLE) {
|
||||
pr_debug("%s: need to stop dma channel %p\n",
|
||||
__FUNCTION__, chan);
|
||||
__func__, chan);
|
||||
|
||||
/* possibly flush the channel */
|
||||
s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STOP);
|
||||
|
@ -852,7 +852,7 @@ static int s3c2410_dma_dostop(struct s3c2410_dma_chan *chan)
|
|||
unsigned long flags;
|
||||
unsigned long tmp;
|
||||
|
||||
pr_debug("%s:\n", __FUNCTION__);
|
||||
pr_debug("%s:\n", __func__);
|
||||
|
||||
dbg_showchan(chan);
|
||||
|
||||
|
@ -907,14 +907,14 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
|
|||
struct s3c2410_dma_buf *buf, *next;
|
||||
unsigned long flags;
|
||||
|
||||
pr_debug("%s: chan %p (%d)\n", __FUNCTION__, chan, chan->number);
|
||||
pr_debug("%s: chan %p (%d)\n", __func__, chan, chan->number);
|
||||
|
||||
dbg_showchan(chan);
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
if (chan->state != S3C2410_DMA_IDLE) {
|
||||
pr_debug("%s: stopping channel...\n", __FUNCTION__ );
|
||||
pr_debug("%s: stopping channel...\n", __func__ );
|
||||
s3c2410_dma_ctrl(chan->number, S3C2410_DMAOP_STOP);
|
||||
}
|
||||
|
||||
|
@ -929,7 +929,7 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
|
|||
next = buf->next;
|
||||
|
||||
pr_debug("%s: free buffer %p, next %p\n",
|
||||
__FUNCTION__, buf, buf->next);
|
||||
__func__, buf, buf->next);
|
||||
|
||||
s3c2410_dma_buffdone(chan, buf, S3C2410_RES_ABORT);
|
||||
s3c2410_dma_freebuf(buf);
|
||||
|
@ -976,7 +976,7 @@ static int s3c2410_dma_started(struct s3c2410_dma_chan *chan)
|
|||
|
||||
if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
|
||||
pr_debug("%s: buff not yet loaded, no more todo\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
} else {
|
||||
chan->load_state = S3C2410_DMALOAD_1RUNNING;
|
||||
s3c2410_dma_loadbuffer(chan, chan->next);
|
||||
|
@ -1050,16 +1050,16 @@ int s3c2410_dma_config(dmach_t channel,
|
|||
struct s3c2410_dma_chan *chan = lookup_dma_channel(channel);
|
||||
|
||||
pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n",
|
||||
__FUNCTION__, channel, xferunit, dcon);
|
||||
__func__, channel, xferunit, dcon);
|
||||
|
||||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: Initial dcon is %08x\n", __FUNCTION__, dcon);
|
||||
pr_debug("%s: Initial dcon is %08x\n", __func__, dcon);
|
||||
|
||||
dcon |= chan->dcon & dma_sel.dcon_mask;
|
||||
|
||||
pr_debug("%s: New dcon is %08x\n", __FUNCTION__, dcon);
|
||||
pr_debug("%s: New dcon is %08x\n", __func__, dcon);
|
||||
|
||||
switch (xferunit) {
|
||||
case 1:
|
||||
|
@ -1075,14 +1075,14 @@ int s3c2410_dma_config(dmach_t channel,
|
|||
break;
|
||||
|
||||
default:
|
||||
pr_debug("%s: bad transfer size %d\n", __FUNCTION__, xferunit);
|
||||
pr_debug("%s: bad transfer size %d\n", __func__, xferunit);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
dcon |= S3C2410_DCON_HWTRIG;
|
||||
dcon |= S3C2410_DCON_INTREQ;
|
||||
|
||||
pr_debug("%s: dcon now %08x\n", __FUNCTION__, dcon);
|
||||
pr_debug("%s: dcon now %08x\n", __func__, dcon);
|
||||
|
||||
chan->dcon = dcon;
|
||||
chan->xfer_unit = xferunit;
|
||||
|
@ -1099,7 +1099,7 @@ int s3c2410_dma_setflags(dmach_t channel, unsigned int flags)
|
|||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: chan=%p, flags=%08x\n", __FUNCTION__, chan, flags);
|
||||
pr_debug("%s: chan=%p, flags=%08x\n", __func__, chan, flags);
|
||||
|
||||
chan->flags = flags;
|
||||
|
||||
|
@ -1120,7 +1120,7 @@ int s3c2410_dma_set_opfn(dmach_t channel, s3c2410_dma_opfn_t rtn)
|
|||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: chan=%p, op rtn=%p\n", __FUNCTION__, chan, rtn);
|
||||
pr_debug("%s: chan=%p, op rtn=%p\n", __func__, chan, rtn);
|
||||
|
||||
chan->op_fn = rtn;
|
||||
|
||||
|
@ -1136,7 +1136,7 @@ int s3c2410_dma_set_buffdone_fn(dmach_t channel, s3c2410_dma_cbfn_t rtn)
|
|||
if (chan == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: chan=%p, callback rtn=%p\n", __FUNCTION__, chan, rtn);
|
||||
pr_debug("%s: chan=%p, callback rtn=%p\n", __func__, chan, rtn);
|
||||
|
||||
chan->callback_fn = rtn;
|
||||
|
||||
|
@ -1170,7 +1170,7 @@ int s3c2410_dma_devconfig(int channel,
|
|||
return -EINVAL;
|
||||
|
||||
pr_debug("%s: source=%d, hwcfg=%08x, devaddr=%08lx\n",
|
||||
__FUNCTION__, (int)source, hwcfg, devaddr);
|
||||
__func__, (int)source, hwcfg, devaddr);
|
||||
|
||||
chan->source = source;
|
||||
chan->dev_addr = devaddr;
|
||||
|
@ -1180,7 +1180,7 @@ int s3c2410_dma_devconfig(int channel,
|
|||
case S3C2410_DMASRC_HW:
|
||||
/* source is hardware */
|
||||
pr_debug("%s: hw source, devaddr=%08lx, hwcfg=%d\n",
|
||||
__FUNCTION__, devaddr, hwcfg);
|
||||
__func__, devaddr, hwcfg);
|
||||
dma_wrreg(chan, S3C2410_DMA_DISRCC, hwcfg & 3);
|
||||
dma_wrreg(chan, S3C2410_DMA_DISRC, devaddr);
|
||||
dma_wrreg(chan, S3C2410_DMA_DIDSTC, (0<<1) | (0<<0));
|
||||
|
@ -1190,8 +1190,8 @@ int s3c2410_dma_devconfig(int channel,
|
|||
|
||||
case S3C2410_DMASRC_MEM:
|
||||
/* source is memory */
|
||||
pr_debug( "%s: mem source, devaddr=%08lx, hwcfg=%d\n",
|
||||
__FUNCTION__, devaddr, hwcfg);
|
||||
pr_debug("%s: mem source, devaddr=%08lx, hwcfg=%d\n",
|
||||
__func__, devaddr, hwcfg);
|
||||
dma_wrreg(chan, S3C2410_DMA_DISRCC, (0<<1) | (0<<0));
|
||||
dma_wrreg(chan, S3C2410_DMA_DIDST, devaddr);
|
||||
dma_wrreg(chan, S3C2410_DMA_DIDSTC, hwcfg & 3);
|
||||
|
|
|
@ -1824,7 +1824,7 @@ choice
|
|||
Allows the configuration of the timer frequency.
|
||||
|
||||
config HZ_48
|
||||
bool "48 HZ" if SYS_SUPPORTS_48HZ
|
||||
bool "48 HZ" if SYS_SUPPORTS_48HZ || SYS_SUPPORTS_ARBIT_HZ
|
||||
|
||||
config HZ_100
|
||||
bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
# for "archclean" cleaning up for this architecture.
|
||||
#
|
||||
|
||||
KBUILD_DEFCONFIG := ip22_defconfig
|
||||
|
||||
cflags-y :=
|
||||
|
||||
#
|
||||
|
|
|
@ -161,22 +161,22 @@ static dbdev_tab_t dbdev_tab[] = {
|
|||
{ DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
|
||||
|
||||
/* Provide 16 user definable device types */
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
{ ~0, 0, 0, 0, 0, 0, 0 },
|
||||
};
|
||||
|
||||
#define DBDEV_TAB_SIZE ARRAY_SIZE(dbdev_tab)
|
||||
|
@ -209,7 +209,7 @@ au1xxx_ddma_add_device(dbdev_tab_t *dev)
|
|||
dbdev_tab_t *p=NULL;
|
||||
static u16 new_id=0x1000;
|
||||
|
||||
p = find_dbdev_id(0);
|
||||
p = find_dbdev_id(~0);
|
||||
if ( NULL != p )
|
||||
{
|
||||
memcpy(p, dev, sizeof(dbdev_tab_t));
|
||||
|
|
1158
arch/mips/defconfig
1158
arch/mips/defconfig
File diff suppressed because it is too large
Load diff
|
@ -76,7 +76,6 @@ obj-$(CONFIG_PROC_FS) += proc.o
|
|||
obj-$(CONFIG_64BIT) += cpu-bugs64.o
|
||||
|
||||
obj-$(CONFIG_I8253) += i8253.o
|
||||
obj-$(CONFIG_PCSPEAKER) += pcspeaker.o
|
||||
|
||||
obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
|
||||
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
|
||||
|
|
|
@ -167,7 +167,7 @@ static inline void check_mult_sh(void)
|
|||
panic(bug64hit, !R4000_WAR ? r4kwar : nowar);
|
||||
}
|
||||
|
||||
static volatile int daddi_ov __initdata = 0;
|
||||
static volatile int daddi_ov __cpuinitdata = 0;
|
||||
|
||||
asmlinkage void __init do_daddi_ov(struct pt_regs *regs)
|
||||
{
|
||||
|
@ -239,7 +239,7 @@ static inline void check_daddi(void)
|
|||
panic(bug64hit, !DADDI_WAR ? daddiwar : nowar);
|
||||
}
|
||||
|
||||
int daddiu_bug __initdata = -1;
|
||||
int daddiu_bug __cpuinitdata = -1;
|
||||
|
||||
static inline void check_daddiu(void)
|
||||
{
|
||||
|
|
|
@ -550,7 +550,7 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
|
|||
}
|
||||
}
|
||||
|
||||
static char unknown_isa[] __initdata = KERN_ERR \
|
||||
static char unknown_isa[] __cpuinitdata = KERN_ERR \
|
||||
"Unsupported ISA type, c0.config0: %d.";
|
||||
|
||||
static inline unsigned int decode_config0(struct cpuinfo_mips *c)
|
||||
|
@ -656,7 +656,7 @@ static inline unsigned int decode_config3(struct cpuinfo_mips *c)
|
|||
return config3 & MIPS_CONF_M;
|
||||
}
|
||||
|
||||
static void __init decode_configs(struct cpuinfo_mips *c)
|
||||
static void __cpuinit decode_configs(struct cpuinfo_mips *c)
|
||||
{
|
||||
/* MIPS32 or MIPS64 compliant CPU. */
|
||||
c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER |
|
||||
|
@ -814,7 +814,7 @@ const char *__cpu_name[NR_CPUS];
|
|||
/*
|
||||
* Name a CPU
|
||||
*/
|
||||
static __init const char *cpu_to_name(struct cpuinfo_mips *c)
|
||||
static __cpuinit const char *cpu_to_name(struct cpuinfo_mips *c)
|
||||
{
|
||||
const char *name = NULL;
|
||||
|
||||
|
@ -896,7 +896,7 @@ static __init const char *cpu_to_name(struct cpuinfo_mips *c)
|
|||
return name;
|
||||
}
|
||||
|
||||
__init void cpu_probe(void)
|
||||
__cpuinit void cpu_probe(void)
|
||||
{
|
||||
struct cpuinfo_mips *c = ¤t_cpu_data;
|
||||
unsigned int cpu = smp_processor_id();
|
||||
|
@ -959,7 +959,7 @@ __init void cpu_probe(void)
|
|||
c->srsets = 1;
|
||||
}
|
||||
|
||||
__init void cpu_report(void)
|
||||
__cpuinit void cpu_report(void)
|
||||
{
|
||||
struct cpuinfo_mips *c = ¤t_cpu_data;
|
||||
|
||||
|
|
|
@ -22,12 +22,17 @@ static struct clocksource clocksource_mips = {
|
|||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
void __init init_mips_clocksource(void)
|
||||
int __init init_mips_clocksource(void)
|
||||
{
|
||||
if (!cpu_has_counter || !mips_hpt_frequency)
|
||||
return -ENXIO;
|
||||
|
||||
/* Calclate a somewhat reasonable rating value */
|
||||
clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000;
|
||||
|
||||
clocksource_set_clock(&clocksource_mips, mips_hpt_frequency);
|
||||
|
||||
clocksource_register(&clocksource_mips);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -195,7 +195,7 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
|
|||
j start_kernel
|
||||
END(kernel_entry)
|
||||
|
||||
__INIT
|
||||
__CPUINIT
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
/*
|
||||
|
|
|
@ -534,8 +534,7 @@ static int simulate_llsc(struct pt_regs *regs, unsigned int opcode)
|
|||
|
||||
/*
|
||||
* Simulate trapping 'rdhwr' instructions to provide user accessible
|
||||
* registers not implemented in hardware. The only current use of this
|
||||
* is the thread area pointer.
|
||||
* registers not implemented in hardware.
|
||||
*/
|
||||
static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode)
|
||||
{
|
||||
|
@ -545,11 +544,31 @@ static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode)
|
|||
int rd = (opcode & RD) >> 11;
|
||||
int rt = (opcode & RT) >> 16;
|
||||
switch (rd) {
|
||||
case 29:
|
||||
regs->regs[rt] = ti->tp_value;
|
||||
return 0;
|
||||
case 0: /* CPU number */
|
||||
regs->regs[rt] = smp_processor_id();
|
||||
return 0;
|
||||
case 1: /* SYNCI length */
|
||||
regs->regs[rt] = min(current_cpu_data.dcache.linesz,
|
||||
current_cpu_data.icache.linesz);
|
||||
return 0;
|
||||
case 2: /* Read count register */
|
||||
regs->regs[rt] = read_c0_count();
|
||||
return 0;
|
||||
case 3: /* Count register resolution */
|
||||
switch (current_cpu_data.cputype) {
|
||||
case CPU_20KC:
|
||||
case CPU_25KF:
|
||||
regs->regs[rt] = 1;
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
regs->regs[rt] = 2;
|
||||
}
|
||||
return 0;
|
||||
case 29:
|
||||
regs->regs[rt] = ti->tp_value;
|
||||
return 0;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1287,7 +1306,7 @@ int cp0_compare_irq;
|
|||
int cp0_perfcount_irq;
|
||||
EXPORT_SYMBOL_GPL(cp0_perfcount_irq);
|
||||
|
||||
void __init per_cpu_trap_init(void)
|
||||
void __cpuinit per_cpu_trap_init(void)
|
||||
{
|
||||
unsigned int cpu = smp_processor_id();
|
||||
unsigned int status_set = ST0_CU0;
|
||||
|
@ -1404,11 +1423,12 @@ void __init set_handler(unsigned long offset, void *addr, unsigned long size)
|
|||
flush_icache_range(ebase + offset, ebase + offset + size);
|
||||
}
|
||||
|
||||
static char panic_null_cerr[] __initdata =
|
||||
static char panic_null_cerr[] __cpuinitdata =
|
||||
"Trying to set NULL cache error exception handler";
|
||||
|
||||
/* Install uncached CPU exception handler */
|
||||
void __init set_uncached_handler(unsigned long offset, void *addr, unsigned long size)
|
||||
void __cpuinit set_uncached_handler(unsigned long offset, void *addr,
|
||||
unsigned long size)
|
||||
{
|
||||
#ifdef CONFIG_32BIT
|
||||
unsigned long uncached_ebase = KSEG1ADDR(ebase);
|
||||
|
|
|
@ -17,3 +17,5 @@ word_type __ucmpdi2(unsigned long long a, unsigned long long b)
|
|||
return 2;
|
||||
return 1;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(__ucmpdi2);
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
* values, so we can avoid sharing the same stack area between a cached
|
||||
* and the uncached mode.
|
||||
*/
|
||||
unsigned long __init run_uncached(void *func)
|
||||
unsigned long __cpuinit run_uncached(void *func)
|
||||
{
|
||||
register long sp __asm__("$sp");
|
||||
register long ret __asm__("$2");
|
||||
|
|
|
@ -146,7 +146,7 @@ void __init plat_perf_setup(void)
|
|||
}
|
||||
}
|
||||
|
||||
unsigned int __init get_c0_compare_int(void)
|
||||
unsigned int __cpuinit get_c0_compare_int(void)
|
||||
{
|
||||
#ifdef MSC01E_INT_BASE
|
||||
if (cpu_has_veic) {
|
||||
|
|
|
@ -83,7 +83,7 @@ static void mips_timer_dispatch(void)
|
|||
}
|
||||
|
||||
|
||||
unsigned __init get_c0_compare_int(void)
|
||||
unsigned __cpuinit get_c0_compare_int(void)
|
||||
{
|
||||
#ifdef MSC01E_INT_BASE
|
||||
if (cpu_has_veic) {
|
||||
|
|
|
@ -307,7 +307,7 @@ static void r3k_dma_cache_wback_inv(unsigned long start, unsigned long size)
|
|||
r3k_flush_dcache_range(start, start + size);
|
||||
}
|
||||
|
||||
void __init r3k_cache_init(void)
|
||||
void __cpuinit r3k_cache_init(void)
|
||||
{
|
||||
extern void build_clear_page(void);
|
||||
extern void build_copy_page(void);
|
||||
|
|
|
@ -93,7 +93,7 @@ static inline void r4k_blast_dcache_page_dc32(unsigned long addr)
|
|||
blast_dcache32_page(addr);
|
||||
}
|
||||
|
||||
static void __init r4k_blast_dcache_page_setup(void)
|
||||
static void __cpuinit r4k_blast_dcache_page_setup(void)
|
||||
{
|
||||
unsigned long dc_lsize = cpu_dcache_line_size();
|
||||
|
||||
|
@ -107,7 +107,7 @@ static void __init r4k_blast_dcache_page_setup(void)
|
|||
|
||||
static void (* r4k_blast_dcache_page_indexed)(unsigned long addr);
|
||||
|
||||
static void __init r4k_blast_dcache_page_indexed_setup(void)
|
||||
static void __cpuinit r4k_blast_dcache_page_indexed_setup(void)
|
||||
{
|
||||
unsigned long dc_lsize = cpu_dcache_line_size();
|
||||
|
||||
|
@ -121,7 +121,7 @@ static void __init r4k_blast_dcache_page_indexed_setup(void)
|
|||
|
||||
static void (* r4k_blast_dcache)(void);
|
||||
|
||||
static void __init r4k_blast_dcache_setup(void)
|
||||
static void __cpuinit r4k_blast_dcache_setup(void)
|
||||
{
|
||||
unsigned long dc_lsize = cpu_dcache_line_size();
|
||||
|
||||
|
@ -206,7 +206,7 @@ static inline void tx49_blast_icache32_page_indexed(unsigned long page)
|
|||
|
||||
static void (* r4k_blast_icache_page)(unsigned long addr);
|
||||
|
||||
static void __init r4k_blast_icache_page_setup(void)
|
||||
static void __cpuinit r4k_blast_icache_page_setup(void)
|
||||
{
|
||||
unsigned long ic_lsize = cpu_icache_line_size();
|
||||
|
||||
|
@ -223,7 +223,7 @@ static void __init r4k_blast_icache_page_setup(void)
|
|||
|
||||
static void (* r4k_blast_icache_page_indexed)(unsigned long addr);
|
||||
|
||||
static void __init r4k_blast_icache_page_indexed_setup(void)
|
||||
static void __cpuinit r4k_blast_icache_page_indexed_setup(void)
|
||||
{
|
||||
unsigned long ic_lsize = cpu_icache_line_size();
|
||||
|
||||
|
@ -247,7 +247,7 @@ static void __init r4k_blast_icache_page_indexed_setup(void)
|
|||
|
||||
static void (* r4k_blast_icache)(void);
|
||||
|
||||
static void __init r4k_blast_icache_setup(void)
|
||||
static void __cpuinit r4k_blast_icache_setup(void)
|
||||
{
|
||||
unsigned long ic_lsize = cpu_icache_line_size();
|
||||
|
||||
|
@ -268,7 +268,7 @@ static void __init r4k_blast_icache_setup(void)
|
|||
|
||||
static void (* r4k_blast_scache_page)(unsigned long addr);
|
||||
|
||||
static void __init r4k_blast_scache_page_setup(void)
|
||||
static void __cpuinit r4k_blast_scache_page_setup(void)
|
||||
{
|
||||
unsigned long sc_lsize = cpu_scache_line_size();
|
||||
|
||||
|
@ -286,7 +286,7 @@ static void __init r4k_blast_scache_page_setup(void)
|
|||
|
||||
static void (* r4k_blast_scache_page_indexed)(unsigned long addr);
|
||||
|
||||
static void __init r4k_blast_scache_page_indexed_setup(void)
|
||||
static void __cpuinit r4k_blast_scache_page_indexed_setup(void)
|
||||
{
|
||||
unsigned long sc_lsize = cpu_scache_line_size();
|
||||
|
||||
|
@ -304,7 +304,7 @@ static void __init r4k_blast_scache_page_indexed_setup(void)
|
|||
|
||||
static void (* r4k_blast_scache)(void);
|
||||
|
||||
static void __init r4k_blast_scache_setup(void)
|
||||
static void __cpuinit r4k_blast_scache_setup(void)
|
||||
{
|
||||
unsigned long sc_lsize = cpu_scache_line_size();
|
||||
|
||||
|
@ -691,11 +691,11 @@ static inline void rm7k_erratum31(void)
|
|||
}
|
||||
}
|
||||
|
||||
static char *way_string[] __initdata = { NULL, "direct mapped", "2-way",
|
||||
static char *way_string[] __cpuinitdata = { NULL, "direct mapped", "2-way",
|
||||
"3-way", "4-way", "5-way", "6-way", "7-way", "8-way"
|
||||
};
|
||||
|
||||
static void __init probe_pcache(void)
|
||||
static void __cpuinit probe_pcache(void)
|
||||
{
|
||||
struct cpuinfo_mips *c = ¤t_cpu_data;
|
||||
unsigned int config = read_c0_config();
|
||||
|
@ -1016,7 +1016,7 @@ static void __init probe_pcache(void)
|
|||
* executes in KSEG1 space or else you will crash and burn badly. You have
|
||||
* been warned.
|
||||
*/
|
||||
static int __init probe_scache(void)
|
||||
static int __cpuinit probe_scache(void)
|
||||
{
|
||||
unsigned long flags, addr, begin, end, pow2;
|
||||
unsigned int config = read_c0_config();
|
||||
|
@ -1095,7 +1095,7 @@ extern int r5k_sc_init(void);
|
|||
extern int rm7k_sc_init(void);
|
||||
extern int mips_sc_init(void);
|
||||
|
||||
static void __init setup_scache(void)
|
||||
static void __cpuinit setup_scache(void)
|
||||
{
|
||||
struct cpuinfo_mips *c = ¤t_cpu_data;
|
||||
unsigned int config = read_c0_config();
|
||||
|
@ -1206,7 +1206,7 @@ void au1x00_fixup_config_od(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void __init coherency_setup(void)
|
||||
static void __cpuinit coherency_setup(void)
|
||||
{
|
||||
change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT);
|
||||
|
||||
|
@ -1238,7 +1238,7 @@ static void __init coherency_setup(void)
|
|||
}
|
||||
}
|
||||
|
||||
void __init r4k_cache_init(void)
|
||||
void __cpuinit r4k_cache_init(void)
|
||||
{
|
||||
extern void build_clear_page(void);
|
||||
extern void build_copy_page(void);
|
||||
|
|
|
@ -329,7 +329,7 @@ static __init void tx39_probe_cache(void)
|
|||
}
|
||||
}
|
||||
|
||||
void __init tx39_cache_init(void)
|
||||
void __cpuinit tx39_cache_init(void)
|
||||
{
|
||||
extern void build_clear_page(void);
|
||||
extern void build_copy_page(void);
|
||||
|
|
|
@ -127,9 +127,10 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address,
|
|||
}
|
||||
}
|
||||
|
||||
static char cache_panic[] __initdata = "Yeee, unsupported cache architecture.";
|
||||
static char cache_panic[] __cpuinitdata =
|
||||
"Yeee, unsupported cache architecture.";
|
||||
|
||||
void __init cpu_cache_init(void)
|
||||
void __devinit cpu_cache_init(void)
|
||||
{
|
||||
if (cpu_has_3k_cache) {
|
||||
extern void __weak r3k_cache_init(void);
|
||||
|
|
|
@ -34,8 +34,6 @@
|
|||
* is changed.
|
||||
*/
|
||||
|
||||
__INIT
|
||||
|
||||
.set mips64
|
||||
.set noreorder
|
||||
.set noat
|
||||
|
@ -51,6 +49,8 @@
|
|||
* (0x170-0x17f) are used to preserve k0, k1, and ra.
|
||||
*/
|
||||
|
||||
__CPUINIT
|
||||
|
||||
LEAF(except_vec2_sb1)
|
||||
/*
|
||||
* If this error is recoverable, we need to exit the handler
|
||||
|
|
|
@ -66,21 +66,21 @@ EXPORT_SYMBOL(copy_page);
|
|||
* with 64-bit kernels. The prefetch offsets have been experimentally tuned
|
||||
* an Origin 200.
|
||||
*/
|
||||
static int pref_offset_clear __initdata = 512;
|
||||
static int pref_offset_copy __initdata = 256;
|
||||
static int pref_offset_clear __cpuinitdata = 512;
|
||||
static int pref_offset_copy __cpuinitdata = 256;
|
||||
|
||||
static unsigned int pref_src_mode __initdata;
|
||||
static unsigned int pref_dst_mode __initdata;
|
||||
static unsigned int pref_src_mode __cpuinitdata;
|
||||
static unsigned int pref_dst_mode __cpuinitdata;
|
||||
|
||||
static int load_offset __initdata;
|
||||
static int store_offset __initdata;
|
||||
static int load_offset __cpuinitdata;
|
||||
static int store_offset __cpuinitdata;
|
||||
|
||||
static unsigned int __initdata *dest, *epc;
|
||||
static unsigned int __cpuinitdata *dest, *epc;
|
||||
|
||||
static unsigned int instruction_pending;
|
||||
static union mips_instruction delayed_mi;
|
||||
|
||||
static void __init emit_instruction(union mips_instruction mi)
|
||||
static void __cpuinit emit_instruction(union mips_instruction mi)
|
||||
{
|
||||
if (instruction_pending)
|
||||
*epc++ = delayed_mi.word;
|
||||
|
@ -222,7 +222,7 @@ static inline void build_cdex_p(void)
|
|||
emit_instruction(mi);
|
||||
}
|
||||
|
||||
static void __init __build_store_reg(int reg)
|
||||
static void __cpuinit __build_store_reg(int reg)
|
||||
{
|
||||
union mips_instruction mi;
|
||||
unsigned int width;
|
||||
|
@ -339,7 +339,7 @@ static inline void build_jr_ra(void)
|
|||
flush_delay_slot_or_nop();
|
||||
}
|
||||
|
||||
void __init build_clear_page(void)
|
||||
void __cpuinit build_clear_page(void)
|
||||
{
|
||||
unsigned int loop_start;
|
||||
unsigned long off;
|
||||
|
@ -442,7 +442,7 @@ dest = label();
|
|||
pr_debug("\t.set pop\n");
|
||||
}
|
||||
|
||||
void __init build_copy_page(void)
|
||||
void __cpuinit build_copy_page(void)
|
||||
{
|
||||
unsigned int loop_start;
|
||||
unsigned long off;
|
||||
|
|
|
@ -293,10 +293,10 @@ void copy_page(void *to, void *from)
|
|||
EXPORT_SYMBOL(clear_page);
|
||||
EXPORT_SYMBOL(copy_page);
|
||||
|
||||
void __init build_clear_page(void)
|
||||
void __cpuinit build_clear_page(void)
|
||||
{
|
||||
}
|
||||
|
||||
void __init build_copy_page(void)
|
||||
void __cpuinit build_copy_page(void)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -168,7 +168,7 @@ struct bcache_ops indy_sc_ops = {
|
|||
.bc_inv = indy_sc_wback_invalidate
|
||||
};
|
||||
|
||||
void __init indy_sc_init(void)
|
||||
void __cpuinit indy_sc_init(void)
|
||||
{
|
||||
if (indy_sc_probe()) {
|
||||
indy_sc_enable();
|
||||
|
|
|
@ -100,7 +100,7 @@ static inline int __init mips_sc_probe(void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int __init mips_sc_init(void)
|
||||
int __cpuinit mips_sc_init(void)
|
||||
{
|
||||
int found = mips_sc_probe();
|
||||
if (found) {
|
||||
|
@ -109,4 +109,3 @@ int __init mips_sc_init(void)
|
|||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ static struct bcache_ops r5k_sc_ops = {
|
|||
.bc_inv = r5k_dma_cache_inv_sc
|
||||
};
|
||||
|
||||
void __init r5k_sc_init(void)
|
||||
void __cpuinit r5k_sc_init(void)
|
||||
{
|
||||
if (r5k_sc_probe()) {
|
||||
r5k_sc_enable();
|
||||
|
|
|
@ -128,7 +128,7 @@ struct bcache_ops rm7k_sc_ops = {
|
|||
.bc_inv = rm7k_sc_inv
|
||||
};
|
||||
|
||||
void __init rm7k_sc_init(void)
|
||||
void __cpuinit rm7k_sc_init(void)
|
||||
{
|
||||
struct cpuinfo_mips *c = ¤t_cpu_data;
|
||||
unsigned int config = read_c0_config();
|
||||
|
|
|
@ -281,7 +281,7 @@ void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|||
}
|
||||
}
|
||||
|
||||
void __init tlb_init(void)
|
||||
void __cpuinit tlb_init(void)
|
||||
{
|
||||
local_flush_tlb_all();
|
||||
|
||||
|
|
|
@ -388,7 +388,7 @@ void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
|
|||
* lifetime of the system
|
||||
*/
|
||||
|
||||
static int temp_tlb_entry __initdata;
|
||||
static int temp_tlb_entry __cpuinitdata;
|
||||
|
||||
__init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
|
||||
unsigned long entryhi, unsigned long pagemask)
|
||||
|
@ -427,7 +427,7 @@ out:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void __init probe_tlb(unsigned long config)
|
||||
static void __cpuinit probe_tlb(unsigned long config)
|
||||
{
|
||||
struct cpuinfo_mips *c = ¤t_cpu_data;
|
||||
unsigned int reg;
|
||||
|
@ -455,7 +455,7 @@ static void __init probe_tlb(unsigned long config)
|
|||
c->tlbsize = ((reg >> 25) & 0x3f) + 1;
|
||||
}
|
||||
|
||||
static int __initdata ntlb = 0;
|
||||
static int __cpuinitdata ntlb = 0;
|
||||
static int __init set_ntlb(char *str)
|
||||
{
|
||||
get_option(&str, &ntlb);
|
||||
|
@ -464,7 +464,7 @@ static int __init set_ntlb(char *str)
|
|||
|
||||
__setup("ntlb=", set_ntlb);
|
||||
|
||||
void __init tlb_init(void)
|
||||
void __cpuinit tlb_init(void)
|
||||
{
|
||||
unsigned int config = read_c0_config();
|
||||
|
||||
|
@ -473,7 +473,7 @@ void __init tlb_init(void)
|
|||
* - On R4600 1.7 the tlbp never hits for pages smaller than
|
||||
* the value in the c0_pagemask register.
|
||||
* - The entire mm handling assumes the c0_pagemask register to
|
||||
* be set for 4kb pages.
|
||||
* be set to fixed-size pages.
|
||||
*/
|
||||
probe_tlb(config);
|
||||
write_c0_pagemask(PM_DEFAULT_MASK);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue