mirror of
https://github.com/torvalds/linux.git
synced 2026-06-08 14:42:37 +02:00
Merge remote-tracking branch 'common/android-3.0' into develop-3.0-jb
Conflicts: drivers/cpufreq/cpufreq_interactive.c drivers/misc/pmem.c drivers/net/usb/asix.c drivers/net/wireless/ath/ath9k/ani.c drivers/net/wireless/ath/ath9k/ar5008_phy.c drivers/net/wireless/ath/ath9k/ar9002_hw.c drivers/net/wireless/ath/ath9k/ar9003_calib.c drivers/net/wireless/ath/ath9k/ar9003_mac.c drivers/net/wireless/ath/ath9k/ar9003_phy.h drivers/net/wireless/ath/ath9k/calib.c drivers/net/wireless/ath/ath9k/hif_usb.c drivers/net/wireless/ath/ath9k/hw.c drivers/net/wireless/ath/ath9k/hw.h drivers/net/wireless/ath/ath9k/main.c drivers/net/wireless/ath/ath9k/rc.c drivers/net/wireless/ath/ath9k/recv.c drivers/net/wireless/b43/main.c drivers/net/wireless/bcm4319/aiutils.c drivers/net/wireless/bcm4319/bcmsdh.c drivers/net/wireless/bcm4319/bcmsdh_linux.c drivers/net/wireless/bcm4319/bcmsdh_sdmmc.c drivers/net/wireless/bcm4319/bcmsdh_sdmmc_linux.c drivers/net/wireless/bcm4319/bcmutils.c drivers/net/wireless/bcm4319/dhd_common.c drivers/net/wireless/bcm4319/dhd_proto.h drivers/net/wireless/bcm4319/dhd_sdio.c drivers/net/wireless/bcm4319/hndpmu.c drivers/net/wireless/bcm4319/include/aidmp.h drivers/net/wireless/bcm4319/include/bcmcdc.h drivers/net/wireless/bcm4319/include/bcmdefs.h drivers/net/wireless/bcm4319/include/bcmdevs.h drivers/net/wireless/bcm4319/include/bcmendian.h drivers/net/wireless/bcm4319/include/bcmpcispi.h drivers/net/wireless/bcm4319/include/bcmperf.h drivers/net/wireless/bcm4319/include/bcmsdbus.h drivers/net/wireless/bcm4319/include/bcmsdh.h drivers/net/wireless/bcm4319/include/bcmsdh_sdmmc.h drivers/net/wireless/bcm4319/include/bcmsdpcm.h drivers/net/wireless/bcm4319/include/bcmsdspi.h drivers/net/wireless/bcm4319/include/bcmsdstd.h drivers/net/wireless/bcm4319/include/bcmspi.h drivers/net/wireless/bcm4319/include/bcmutils.h drivers/net/wireless/bcm4319/include/bcmwifi.h drivers/net/wireless/bcm4319/include/dhdioctl.h drivers/net/wireless/bcm4319/include/epivers.h drivers/net/wireless/bcm4319/include/hndpmu.h drivers/net/wireless/bcm4319/include/hndrte_armtrap.h drivers/net/wireless/bcm4319/include/hndrte_cons.h drivers/net/wireless/bcm4319/include/hndsoc.h drivers/net/wireless/bcm4319/include/linux_osl.h drivers/net/wireless/bcm4319/include/linuxver.h drivers/net/wireless/bcm4319/include/miniopt.h drivers/net/wireless/bcm4319/include/msgtrace.h drivers/net/wireless/bcm4319/include/osl.h drivers/net/wireless/bcm4319/include/packed_section_end.h drivers/net/wireless/bcm4319/include/packed_section_start.h drivers/net/wireless/bcm4319/include/pcicfg.h drivers/net/wireless/bcm4319/include/proto/802.11e.h drivers/net/wireless/bcm4319/include/proto/802.1d.h drivers/net/wireless/bcm4319/include/proto/bcmeth.h drivers/net/wireless/bcm4319/include/proto/bcmevent.h drivers/net/wireless/bcm4319/include/proto/bcmip.h drivers/net/wireless/bcm4319/include/proto/eapol.h drivers/net/wireless/bcm4319/include/proto/ethernet.h drivers/net/wireless/bcm4319/include/proto/sdspi.h drivers/net/wireless/bcm4319/include/proto/vlan.h drivers/net/wireless/bcm4319/include/proto/wpa.h drivers/net/wireless/bcm4319/include/sbchipc.h drivers/net/wireless/bcm4319/include/sbconfig.h drivers/net/wireless/bcm4319/include/sbhnddma.h drivers/net/wireless/bcm4319/include/sbpcmcia.h drivers/net/wireless/bcm4319/include/sbsdio.h drivers/net/wireless/bcm4319/include/sbsdpcmdev.h drivers/net/wireless/bcm4319/include/sbsocram.h drivers/net/wireless/bcm4319/include/sdio.h drivers/net/wireless/bcm4319/include/sdioh.h drivers/net/wireless/bcm4319/include/sdiovar.h drivers/net/wireless/bcm4319/include/siutils.h drivers/net/wireless/bcm4319/include/trxhdr.h drivers/net/wireless/bcm4319/include/typedefs.h drivers/net/wireless/bcm4319/siutils.c drivers/net/wireless/bcm4319/wl_iw.c drivers/net/wireless/bcm4319/wl_iw.h drivers/net/wireless/bcmdhd/Kconfig drivers/net/wireless/bcmdhd/Makefile drivers/net/wireless/bcmdhd/bcmevent.c drivers/net/wireless/bcmdhd/dhd.h drivers/net/wireless/bcmdhd/dhd_cdc.c drivers/net/wireless/bcmdhd/dhd_linux.c drivers/net/wireless/bcmdhd/dhd_wlfc.h drivers/net/wireless/bcmdhd/include/Makefile drivers/net/wireless/bcmdhd/include/htsf.h drivers/net/wireless/bcmdhd/include/proto/802.11.h drivers/net/wireless/bcmdhd/include/proto/802.11_bta.h drivers/net/wireless/bcmdhd/include/proto/bt_amp_hci.h drivers/net/wireless/bcmdhd/include/proto/p2p.h drivers/net/wireless/bcmdhd/include/wlfc_proto.h drivers/net/wireless/bcmdhd/include/wlioctl.h drivers/net/wireless/bcmdhd/linux_osl.c drivers/net/wireless/bcmdhd/wl_android.c drivers/net/wireless/bcmdhd/wl_android.h drivers/net/wireless/bcmdhd/wl_cfg80211.c drivers/net/wireless/bcmdhd/wl_cfg80211.h drivers/net/wireless/bcmdhd/wl_cfgp2p.c drivers/net/wireless/bcmdhd/wl_cfgp2p.h drivers/net/wireless/bcmdhd/wl_linux_mon.c drivers/net/wireless/bcmdhd/wldev_common.c drivers/net/wireless/bcmdhd/wldev_common.h drivers/net/wireless/ipw2x00/ipw2200.c drivers/net/wireless/iwlwifi/iwl-agn-lib.c drivers/net/wireless/iwlwifi/iwl-agn-tx.c drivers/net/wireless/iwlwifi/iwl-agn-ucode.c drivers/net/wireless/iwlwifi/iwl-agn.c drivers/net/wireless/iwlwifi/iwl-agn.h drivers/net/wireless/iwlwifi/iwl-core.c drivers/net/wireless/iwlwifi/iwl-hcmd.c drivers/net/wireless/iwlwifi/iwl-rx.c drivers/net/wireless/iwlwifi/iwl-tx.c drivers/net/wireless/libertas/if_spi.c drivers/net/wireless/p54/p54spi.c drivers/net/wireless/rt2x00/rt2800lib.c drivers/net/wireless/rt2x00/rt2800pci.c drivers/net/wireless/rt2x00/rt2800usb.c drivers/net/wireless/rt2x00/rt2x00.h drivers/net/wireless/rt2x00/rt2x00dev.c drivers/net/wireless/rt2x00/rt2x00mac.c drivers/net/wireless/rt2x00/rt2x00queue.c drivers/usb/serial/option.c
This commit is contained in:
commit
30be6d7972
|
|
@ -275,8 +275,8 @@ versions.
|
|||
If no 2.6.x.y kernel is available, then the highest numbered 2.6.x
|
||||
kernel is the current stable kernel.
|
||||
|
||||
2.6.x.y are maintained by the "stable" team <stable@kernel.org>, and are
|
||||
released as needs dictate. The normal release period is approximately
|
||||
2.6.x.y are maintained by the "stable" team <stable@vger.kernel.org>, and
|
||||
are released as needs dictate. The normal release period is approximately
|
||||
two weeks, but it can be longer if there are no pressing problems. A
|
||||
security-related problem, instead, can cause a release to happen almost
|
||||
instantly.
|
||||
|
|
|
|||
|
|
@ -225,11 +225,32 @@ frequency before ramping down. This is to ensure that the governor has
|
|||
seen enough historic cpu load data to determine the appropriate
|
||||
workload. Default is 80000 uS.
|
||||
|
||||
go_maxspeed_load: The CPU load at which to ramp to max speed. Default
|
||||
is 85.
|
||||
hispeed_freq: An intermediate "hi speed" at which to initially ramp
|
||||
when CPU load hits the value specified in go_hispeed_load. If load
|
||||
stays high for the amount of time specified in above_hispeed_delay,
|
||||
then speed may be bumped higher. Default is maximum speed.
|
||||
|
||||
go_hispeed_load: The CPU load at which to ramp to the intermediate "hi
|
||||
speed". Default is 85%.
|
||||
|
||||
above_hispeed_delay: Once speed is set to hispeed_freq, wait for this
|
||||
long before bumping speed higher in response to continued high load.
|
||||
Default is 20000 uS.
|
||||
|
||||
timer_rate: Sample rate for reevaluating cpu load when the system is
|
||||
not idle. Default is 30000 uS.
|
||||
not idle. Default is 20000 uS.
|
||||
|
||||
input_boost: If non-zero, boost speed of all CPUs to hispeed_freq on
|
||||
touchscreen activity. Default is 0.
|
||||
|
||||
boost: If non-zero, immediately boost speed of all CPUs to at least
|
||||
hispeed_freq until zero is written to this attribute. If zero, allow
|
||||
CPU speeds to drop below hispeed_freq according to load as usual.
|
||||
|
||||
boostpulse: Immediately boost speed of all CPUs to hispeed_freq for
|
||||
min_sample_time, after which speeds are allowed to drop below
|
||||
hispeed_freq according to load as usual.
|
||||
|
||||
|
||||
2.7 Hotplug
|
||||
-----------
|
||||
|
|
|
|||
|
|
@ -271,10 +271,10 @@ copies should go to:
|
|||
the linux-kernel list.
|
||||
|
||||
- If you are fixing a bug, think about whether the fix should go into the
|
||||
next stable update. If so, stable@kernel.org should get a copy of the
|
||||
patch. Also add a "Cc: stable@kernel.org" to the tags within the patch
|
||||
itself; that will cause the stable team to get a notification when your
|
||||
fix goes into the mainline.
|
||||
next stable update. If so, stable@vger.kernel.org should get a copy of
|
||||
the patch. Also add a "Cc: stable@vger.kernel.org" to the tags within
|
||||
the patch itself; that will cause the stable team to get a notification
|
||||
when your fix goes into the mainline.
|
||||
|
||||
When selecting recipients for a patch, it is good to have an idea of who
|
||||
you think will eventually accept the patch and get it merged. While it
|
||||
|
|
|
|||
|
|
@ -7,21 +7,29 @@ Supported chips:
|
|||
Addresses scanned: I2C 0x18 - 0x1f
|
||||
Datasheets:
|
||||
http://www.analog.com/static/imported-files/data_sheets/ADT7408.pdf
|
||||
* IDT TSE2002B3, TS3000B3
|
||||
Prefix: 'tse2002b3', 'ts3000b3'
|
||||
* Atmel AT30TS00
|
||||
Prefix: 'at30ts00'
|
||||
Addresses scanned: I2C 0x18 - 0x1f
|
||||
Datasheets:
|
||||
http://www.idt.com/products/getdoc.cfm?docid=18715691
|
||||
http://www.idt.com/products/getdoc.cfm?docid=18715692
|
||||
http://www.atmel.com/Images/doc8585.pdf
|
||||
* IDT TSE2002B3, TSE2002GB2, TS3000B3, TS3000GB2
|
||||
Prefix: 'tse2002', 'ts3000'
|
||||
Addresses scanned: I2C 0x18 - 0x1f
|
||||
Datasheets:
|
||||
http://www.idt.com/sites/default/files/documents/IDT_TSE2002B3C_DST_20100512_120303152056.pdf
|
||||
http://www.idt.com/sites/default/files/documents/IDT_TSE2002GB2A1_DST_20111107_120303145914.pdf
|
||||
http://www.idt.com/sites/default/files/documents/IDT_TS3000B3A_DST_20101129_120303152013.pdf
|
||||
http://www.idt.com/sites/default/files/documents/IDT_TS3000GB2A1_DST_20111104_120303151012.pdf
|
||||
* Maxim MAX6604
|
||||
Prefix: 'max6604'
|
||||
Addresses scanned: I2C 0x18 - 0x1f
|
||||
Datasheets:
|
||||
http://datasheets.maxim-ic.com/en/ds/MAX6604.pdf
|
||||
* Microchip MCP9805, MCP98242, MCP98243, MCP9843
|
||||
Prefixes: 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
|
||||
* Microchip MCP9804, MCP9805, MCP98242, MCP98243, MCP9843
|
||||
Prefixes: 'mcp9804', 'mcp9805', 'mcp98242', 'mcp98243', 'mcp9843'
|
||||
Addresses scanned: I2C 0x18 - 0x1f
|
||||
Datasheets:
|
||||
http://ww1.microchip.com/downloads/en/DeviceDoc/22203C.pdf
|
||||
http://ww1.microchip.com/downloads/en/DeviceDoc/21977b.pdf
|
||||
http://ww1.microchip.com/downloads/en/DeviceDoc/21996a.pdf
|
||||
http://ww1.microchip.com/downloads/en/DeviceDoc/22153c.pdf
|
||||
|
|
@ -48,6 +56,12 @@ Supported chips:
|
|||
Datasheets:
|
||||
http://www.st.com/stonline/products/literature/ds/13447/stts424.pdf
|
||||
http://www.st.com/stonline/products/literature/ds/13448/stts424e02.pdf
|
||||
* ST Microelectronics STTS2002, STTS3000
|
||||
Prefix: 'stts2002', 'stts3000'
|
||||
Addresses scanned: I2C 0x18 - 0x1f
|
||||
Datasheets:
|
||||
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00225278.pdf
|
||||
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATA_BRIEF/CD00270920.pdf
|
||||
* JEDEC JC 42.4 compliant temperature sensor chips
|
||||
Prefix: 'jc42'
|
||||
Addresses scanned: I2C 0x18 - 0x1f
|
||||
|
|
|
|||
|
|
@ -39,23 +39,20 @@ independent, drivers.
|
|||
in case an unused hwspinlock isn't available. Users of this
|
||||
API will usually want to communicate the lock's id to the remote core
|
||||
before it can be used to achieve synchronization.
|
||||
Can be called from an atomic context (this function will not sleep) but
|
||||
not from within interrupt context.
|
||||
Should be called from a process context (might sleep).
|
||||
|
||||
struct hwspinlock *hwspin_lock_request_specific(unsigned int id);
|
||||
- assign a specific hwspinlock id and return its address, or NULL
|
||||
if that hwspinlock is already in use. Usually board code will
|
||||
be calling this function in order to reserve specific hwspinlock
|
||||
ids for predefined purposes.
|
||||
Can be called from an atomic context (this function will not sleep) but
|
||||
not from within interrupt context.
|
||||
Should be called from a process context (might sleep).
|
||||
|
||||
int hwspin_lock_free(struct hwspinlock *hwlock);
|
||||
- free a previously-assigned hwspinlock; returns 0 on success, or an
|
||||
appropriate error code on failure (e.g. -EINVAL if the hwspinlock
|
||||
is already free).
|
||||
Can be called from an atomic context (this function will not sleep) but
|
||||
not from within interrupt context.
|
||||
Should be called from a process context (might sleep).
|
||||
|
||||
int hwspin_lock_timeout(struct hwspinlock *hwlock, unsigned int timeout);
|
||||
- lock a previously-assigned hwspinlock with a timeout limit (specified in
|
||||
|
|
@ -232,15 +229,14 @@ int hwspinlock_example2(void)
|
|||
|
||||
int hwspin_lock_register(struct hwspinlock *hwlock);
|
||||
- to be called from the underlying platform-specific implementation, in
|
||||
order to register a new hwspinlock instance. Can be called from an atomic
|
||||
context (this function will not sleep) but not from within interrupt
|
||||
context. Returns 0 on success, or appropriate error code on failure.
|
||||
order to register a new hwspinlock instance. Should be called from
|
||||
a process context (this function might sleep).
|
||||
Returns 0 on success, or appropriate error code on failure.
|
||||
|
||||
struct hwspinlock *hwspin_lock_unregister(unsigned int id);
|
||||
- to be called from the underlying vendor-specific implementation, in order
|
||||
to unregister an existing (and unused) hwspinlock instance.
|
||||
Can be called from an atomic context (will not sleep) but not from
|
||||
within interrupt context.
|
||||
Should be called from a process context (this function might sleep).
|
||||
Returns the address of hwspinlock on success, or NULL on error (e.g.
|
||||
if the hwspinlock is sill in use).
|
||||
|
||||
|
|
|
|||
|
|
@ -709,6 +709,16 @@ will behave normally, not taking the autosuspend delay into account.
|
|||
Similarly, if the power.use_autosuspend field isn't set then the autosuspend
|
||||
helper functions will behave just like the non-autosuspend counterparts.
|
||||
|
||||
Under some circumstances a driver or subsystem may want to prevent a device
|
||||
from autosuspending immediately, even though the usage counter is zero and the
|
||||
autosuspend delay time has expired. If the ->runtime_suspend() callback
|
||||
returns -EAGAIN or -EBUSY, and if the next autosuspend delay expiration time is
|
||||
in the future (as it normally would be if the callback invoked
|
||||
pm_runtime_mark_last_busy()), the PM core will automatically reschedule the
|
||||
autosuspend. The ->runtime_suspend() callback can't do this rescheduling
|
||||
itself because no suspend requests of any kind are accepted while the device is
|
||||
suspending (i.e., while the callback is running).
|
||||
|
||||
The implementation is well suited for asynchronous use in interrupt contexts.
|
||||
However such use inevitably involves races, because the PM core can't
|
||||
synchronize ->runtime_suspend() callbacks with the arrival of I/O requests.
|
||||
|
|
|
|||
|
|
@ -24,10 +24,10 @@ Rules on what kind of patches are accepted, and which ones are not, into the
|
|||
Procedure for submitting patches to the -stable tree:
|
||||
|
||||
- Send the patch, after verifying that it follows the above rules, to
|
||||
stable@kernel.org. You must note the upstream commit ID in the changelog
|
||||
of your submission.
|
||||
stable@vger.kernel.org. You must note the upstream commit ID in the
|
||||
changelog of your submission.
|
||||
- To have the patch automatically included in the stable tree, add the tag
|
||||
Cc: stable@kernel.org
|
||||
Cc: stable@vger.kernel.org
|
||||
in the sign-off area. Once the patch is merged it will be applied to
|
||||
the stable tree without anything else needing to be done by the author
|
||||
or subsystem maintainer.
|
||||
|
|
@ -35,10 +35,10 @@ Procedure for submitting patches to the -stable tree:
|
|||
cherry-picked than this can be specified in the following format in
|
||||
the sign-off area:
|
||||
|
||||
Cc: <stable@kernel.org> # .32.x: a1f84a3: sched: Check for idle
|
||||
Cc: <stable@kernel.org> # .32.x: 1b9508f: sched: Rate-limit newidle
|
||||
Cc: <stable@kernel.org> # .32.x: fd21073: sched: Fix affinity logic
|
||||
Cc: <stable@kernel.org> # .32.x
|
||||
Cc: <stable@vger.kernel.org> # .32.x: a1f84a3: sched: Check for idle
|
||||
Cc: <stable@vger.kernel.org> # .32.x: 1b9508f: sched: Rate-limit newidle
|
||||
Cc: <stable@vger.kernel.org> # .32.x: fd21073: sched: Fix affinity logic
|
||||
Cc: <stable@vger.kernel.org> # .32.x
|
||||
Signed-off-by: Ingo Molnar <mingo@elte.hu>
|
||||
|
||||
The tag sequence has the meaning of:
|
||||
|
|
|
|||
|
|
@ -47,10 +47,11 @@ This allows to filter away annoying devices that talk continuously.
|
|||
|
||||
2. Find which bus connects to the desired device
|
||||
|
||||
Run "cat /proc/bus/usb/devices", and find the T-line which corresponds to
|
||||
the device. Usually you do it by looking for the vendor string. If you have
|
||||
many similar devices, unplug one and compare two /proc/bus/usb/devices outputs.
|
||||
The T-line will have a bus number. Example:
|
||||
Run "cat /sys/kernel/debug/usb/devices", and find the T-line which corresponds
|
||||
to the device. Usually you do it by looking for the vendor string. If you have
|
||||
many similar devices, unplug one and compare the two
|
||||
/sys/kernel/debug/usb/devices outputs. The T-line will have a bus number.
|
||||
Example:
|
||||
|
||||
T: Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
|
||||
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
|
||||
|
|
@ -58,7 +59,10 @@ P: Vendor=0557 ProdID=2004 Rev= 1.00
|
|||
S: Manufacturer=ATEN
|
||||
S: Product=UC100KM V2.00
|
||||
|
||||
Bus=03 means it's bus 3.
|
||||
"Bus=03" means it's bus 3. Alternatively, you can look at the output from
|
||||
"lsusb" and get the bus number from the appropriate line. Example:
|
||||
|
||||
Bus 003 Device 002: ID 0557:2004 ATEN UC100KM V2.00
|
||||
|
||||
3. Start 'cat'
|
||||
|
||||
|
|
|
|||
16
MAINTAINERS
16
MAINTAINERS
|
|
@ -1221,7 +1221,7 @@ F: Documentation/aoe/
|
|||
F: drivers/block/aoe/
|
||||
|
||||
ATHEROS ATH GENERIC UTILITIES
|
||||
M: "Luis R. Rodriguez" <lrodriguez@atheros.com>
|
||||
M: "Luis R. Rodriguez" <mcgrof@qca.qualcomm.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/net/wireless/ath/*
|
||||
|
|
@ -1229,7 +1229,7 @@ F: drivers/net/wireless/ath/*
|
|||
ATHEROS ATH5K WIRELESS DRIVER
|
||||
M: Jiri Slaby <jirislaby@gmail.com>
|
||||
M: Nick Kossifidis <mickflemm@gmail.com>
|
||||
M: "Luis R. Rodriguez" <lrodriguez@atheros.com>
|
||||
M: "Luis R. Rodriguez" <mcgrof@qca.qualcomm.com>
|
||||
M: Bob Copeland <me@bobcopeland.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
L: ath5k-devel@lists.ath5k.org
|
||||
|
|
@ -1238,10 +1238,10 @@ S: Maintained
|
|||
F: drivers/net/wireless/ath/ath5k/
|
||||
|
||||
ATHEROS ATH9K WIRELESS DRIVER
|
||||
M: "Luis R. Rodriguez" <lrodriguez@atheros.com>
|
||||
M: Jouni Malinen <jmalinen@atheros.com>
|
||||
M: Vasanthakumar Thiagarajan <vasanth@atheros.com>
|
||||
M: Senthil Balasubramanian <senthilkumar@atheros.com>
|
||||
M: "Luis R. Rodriguez" <mcgrof@qca.qualcomm.com>
|
||||
M: Jouni Malinen <jouni@qca.qualcomm.com>
|
||||
M: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
|
||||
M: Senthil Balasubramanian <senthilb@qca.qualcomm.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
L: ath9k-devel@lists.ath9k.org
|
||||
W: http://wireless.kernel.org/en/users/Drivers/ath9k
|
||||
|
|
@ -1269,7 +1269,7 @@ F: drivers/input/misc/ati_remote2.c
|
|||
ATLX ETHERNET DRIVERS
|
||||
M: Jay Cliburn <jcliburn@gmail.com>
|
||||
M: Chris Snook <chris.snook@gmail.com>
|
||||
M: Jie Yang <jie.yang@atheros.com>
|
||||
M: Jie Yang <yangjie@qca.qualcomm.com>
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://sourceforge.net/projects/atl1
|
||||
W: http://atl1.sourceforge.net
|
||||
|
|
@ -6039,7 +6039,7 @@ F: arch/alpha/kernel/srm_env.c
|
|||
|
||||
STABLE BRANCH
|
||||
M: Greg Kroah-Hartman <greg@kroah.com>
|
||||
L: stable@kernel.org
|
||||
L: stable@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
STAGING SUBSYSTEM
|
||||
|
|
|
|||
2
Makefile
2
Makefile
|
|
@ -1,6 +1,6 @@
|
|||
VERSION = 3
|
||||
PATCHLEVEL = 0
|
||||
SUBLEVEL = 8
|
||||
SUBLEVEL = 31
|
||||
EXTRAVERSION =
|
||||
NAME = Sneaky Weasel
|
||||
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
|
|||
" lda $31,3b-2b(%0)\n"
|
||||
" .previous\n"
|
||||
: "+r"(ret), "=&r"(prev), "=&r"(cmp)
|
||||
: "r"(uaddr), "r"((long)oldval), "r"(newval)
|
||||
: "r"(uaddr), "r"((long)(int)oldval), "r"(newval)
|
||||
: "memory");
|
||||
|
||||
*uval = prev;
|
||||
|
|
|
|||
|
|
@ -1217,7 +1217,7 @@ config ARM_ERRATA_743622
|
|||
depends on CPU_V7
|
||||
help
|
||||
This option enables the workaround for the 743622 Cortex-A9
|
||||
(r2p0..r2p2) erratum. Under very rare conditions, a faulty
|
||||
(r2p*) erratum. Under very rare conditions, a faulty
|
||||
optimisation in the Cortex-A9 Store Buffer may lead to data
|
||||
corruption. This workaround sets a specific bit in the diagnostic
|
||||
register of the Cortex-A9 which disables the Store Buffer
|
||||
|
|
@ -1350,6 +1350,18 @@ config ARM_ERRATA_764369
|
|||
relevant cache maintenance functions and sets a specific bit
|
||||
in the diagnostic control register of the SCU.
|
||||
|
||||
config PL310_ERRATA_769419
|
||||
bool "PL310 errata: no automatic Store Buffer drain"
|
||||
depends on CACHE_L2X0
|
||||
help
|
||||
On revisions of the PL310 prior to r3p2, the Store Buffer does
|
||||
not automatically drain. This can cause normal, non-cacheable
|
||||
writes to be retained when the memory system is idle, leading
|
||||
to suboptimal I/O performance for drivers using coherent DMA.
|
||||
This option adds a write barrier to the cpu_idle loop so that,
|
||||
on systems with an outer cache, the store buffer is drained
|
||||
explicitly.
|
||||
|
||||
endmenu
|
||||
|
||||
menu "Kernel Features"
|
||||
|
|
|
|||
|
|
@ -287,7 +287,7 @@ CONFIG_USB=y
|
|||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_GADGET_PXA27X=y
|
||||
CONFIG_USB_PXA27X=y
|
||||
CONFIG_USB_ETH=m
|
||||
# CONFIG_USB_ETH_RNDIS is not set
|
||||
CONFIG_MMC=y
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ CONFIG_USB=y
|
|||
# CONFIG_USB_DEVICE_CLASS is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_GADGET_PXA27X=y
|
||||
CONFIG_USB_PXA27X=y
|
||||
CONFIG_USB_ETH=m
|
||||
# CONFIG_USB_ETH_RNDIS is not set
|
||||
CONFIG_MMC=y
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ CONFIG_USB_MON=m
|
|||
CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
CONFIG_USB_GADGET_PXA27X=y
|
||||
CONFIG_USB_PXA27X=y
|
||||
CONFIG_USB_ETH=m
|
||||
# CONFIG_USB_ETH_RNDIS is not set
|
||||
CONFIG_USB_GADGETFS=m
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ CONFIG_USB_SERIAL=m
|
|||
CONFIG_USB_SERIAL_GENERIC=y
|
||||
CONFIG_USB_SERIAL_MCT_U232=m
|
||||
CONFIG_USB_GADGET=m
|
||||
CONFIG_USB_GADGET_PXA27X=y
|
||||
CONFIG_USB_PXA27X=y
|
||||
CONFIG_USB_ETH=m
|
||||
CONFIG_USB_GADGETFS=m
|
||||
CONFIG_USB_FILE_STORAGE=m
|
||||
|
|
|
|||
|
|
@ -232,6 +232,9 @@ void cpu_idle(void)
|
|||
#endif
|
||||
|
||||
local_irq_disable();
|
||||
#ifdef CONFIG_PL310_ERRATA_769419
|
||||
wmb();
|
||||
#endif
|
||||
if (hlt_counter) {
|
||||
local_irq_enable();
|
||||
cpu_relax();
|
||||
|
|
|
|||
|
|
@ -237,9 +237,9 @@ static struct clk_lookup periph_clocks_lookups[] = {
|
|||
CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.0", &tc0_clk),
|
||||
CLKDEV_CON_DEV_ID("t1_clk", "atmel_tcb.0", &tc1_clk),
|
||||
CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.0", &tc2_clk),
|
||||
CLKDEV_CON_DEV_ID("t3_clk", "atmel_tcb.1", &tc3_clk),
|
||||
CLKDEV_CON_DEV_ID("t4_clk", "atmel_tcb.1", &tc4_clk),
|
||||
CLKDEV_CON_DEV_ID("t5_clk", "atmel_tcb.1", &tc5_clk),
|
||||
CLKDEV_CON_DEV_ID("t0_clk", "atmel_tcb.1", &tc3_clk),
|
||||
CLKDEV_CON_DEV_ID("t1_clk", "atmel_tcb.1", &tc4_clk),
|
||||
CLKDEV_CON_DEV_ID("t2_clk", "atmel_tcb.1", &tc5_clk),
|
||||
CLKDEV_CON_DEV_ID("pclk", "ssc.0", &ssc_clk),
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -748,7 +748,7 @@ static struct snd_platform_data da850_evm_snd_data = {
|
|||
.num_serializer = ARRAY_SIZE(da850_iis_serializer_direction),
|
||||
.tdm_slots = 2,
|
||||
.serial_dir = da850_iis_serializer_direction,
|
||||
.asp_chan_q = EVENTQ_1,
|
||||
.asp_chan_q = EVENTQ_0,
|
||||
.version = MCASP_VERSION_2,
|
||||
.txnumevt = 1,
|
||||
.rxnumevt = 1,
|
||||
|
|
|
|||
|
|
@ -563,7 +563,7 @@ static int setup_vpif_input_channel_mode(int mux_mode)
|
|||
int val;
|
||||
u32 value;
|
||||
|
||||
if (!vpif_vsclkdis_reg || !cpld_client)
|
||||
if (!vpif_vidclkctl_reg || !cpld_client)
|
||||
return -ENXIO;
|
||||
|
||||
val = i2c_smbus_read_byte(cpld_client);
|
||||
|
|
@ -571,7 +571,7 @@ static int setup_vpif_input_channel_mode(int mux_mode)
|
|||
return val;
|
||||
|
||||
spin_lock_irqsave(&vpif_reg_lock, flags);
|
||||
value = __raw_readl(vpif_vsclkdis_reg);
|
||||
value = __raw_readl(vpif_vidclkctl_reg);
|
||||
if (mux_mode) {
|
||||
val &= VPIF_INPUT_TWO_CHANNEL;
|
||||
value |= VIDCH1CLK;
|
||||
|
|
@ -579,7 +579,7 @@ static int setup_vpif_input_channel_mode(int mux_mode)
|
|||
val |= VPIF_INPUT_ONE_CHANNEL;
|
||||
value &= ~VIDCH1CLK;
|
||||
}
|
||||
__raw_writel(value, vpif_vsclkdis_reg);
|
||||
__raw_writel(value, vpif_vidclkctl_reg);
|
||||
spin_unlock_irqrestore(&vpif_reg_lock, flags);
|
||||
|
||||
err = i2c_smbus_write_byte(cpld_client, val);
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include <asm/mach/arch.h>
|
||||
#include <linux/irq.h>
|
||||
#include <plat/time.h>
|
||||
#include <plat/ehci-orion.h>
|
||||
#include <plat/common.h>
|
||||
#include "common.h"
|
||||
|
||||
|
|
@ -74,7 +75,7 @@ void __init dove_map_io(void)
|
|||
void __init dove_ehci0_init(void)
|
||||
{
|
||||
orion_ehci_init(&dove_mbus_dram_info,
|
||||
DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0);
|
||||
DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0, EHCI_PHY_NA);
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
#include <plat/cache-feroceon-l2.h>
|
||||
#include <plat/mvsdio.h>
|
||||
#include <plat/orion_nand.h>
|
||||
#include <plat/ehci-orion.h>
|
||||
#include <plat/common.h>
|
||||
#include <plat/time.h>
|
||||
#include "common.h"
|
||||
|
|
@ -74,7 +75,7 @@ void __init kirkwood_ehci_init(void)
|
|||
{
|
||||
kirkwood_clk_ctrl |= CGC_USB0;
|
||||
orion_ehci_init(&kirkwood_mbus_dram_info,
|
||||
USB_PHYS_BASE, IRQ_KIRKWOOD_USB);
|
||||
USB_PHYS_BASE, IRQ_KIRKWOOD_USB, EHCI_PHY_NA);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -31,313 +31,313 @@
|
|||
#define MPP_F6282_MASK MPP( 0, 0x0, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP0_GPIO MPP( 0, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP0_NF_IO2 MPP( 0, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP0_NF_IO2 MPP( 0, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP1_GPO MPP( 1, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP1_NF_IO3 MPP( 1, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP1_NF_IO3 MPP( 1, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP2_GPO MPP( 2, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP2_NF_IO4 MPP( 2, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP2_NF_IO4 MPP( 2, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP3_GPO MPP( 3, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP3_NF_IO5 MPP( 3, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP3_SPI_MISO MPP( 3, 0x2, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP3_NF_IO5 MPP( 3, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP3_SPI_MISO MPP( 3, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP4_GPIO MPP( 4, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP4_NF_IO6 MPP( 4, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP4_UART0_RXD MPP( 4, 0x2, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP4_NF_IO6 MPP( 4, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP4_UART0_RXD MPP( 4, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP4_LCD_VGA_HSYNC MPP( 4, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP4_PTP_CLK MPP( 4, 0xd, 1, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP4_PTP_CLK MPP( 4, 0xd, 0, 0, 1, 1, 1, 1, 0 )
|
||||
|
||||
#define MPP5_GPO MPP( 5, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP5_NF_IO7 MPP( 5, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 1, 1, 1, 1, 1, 0 )
|
||||
#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP5_NF_IO7 MPP( 5, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP5_LCD_VGA_VSYNC MPP( 5, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 1, 1, 1, 1, 1, 0 )
|
||||
#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 0, 1, 1, 1, 1, 0 )
|
||||
|
||||
#define MPP7_GPO MPP( 7, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 1, 1, 1, 1, 1, 0 )
|
||||
#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 1, 1, 1, 1, 1, 0 )
|
||||
#define MPP7_LCD_PWM MPP( 7, 0xb, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP7_LCD_PWM MPP( 7, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP8_GPIO MPP( 8, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP8_TW0_SDA MPP( 8, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP8_MII0_RXERR MPP( 8, 0x4, 1, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP8_PTP_CLK MPP( 8, 0xc, 1, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP8_MII0_COL MPP( 8, 0xd, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP8_TW0_SDA MPP( 8, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP8_MII0_RXERR MPP( 8, 0x4, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP8_PTP_CLK MPP( 8, 0xc, 0, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP8_MII0_COL MPP( 8, 0xd, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP9_GPIO MPP( 9, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP9_TW0_SCK MPP( 9, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP9_UART0_CTS MPP( 9, 0x2, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP9_UART1_CTS MPP( 9, 0x3, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 1, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP9_MII0_CRS MPP( 9, 0xd, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP9_TW0_SCK MPP( 9, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP9_UART0_CTS MPP( 9, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP9_UART1_CTS MPP( 9, 0x3, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 0, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP9_MII0_CRS MPP( 9, 0xd, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP10_GPO MPP( 10, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP10_UART0_TXD MPP( 10, 0X3, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 1, 1, 1, 1, 1, 0 )
|
||||
#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP10_UART0_TXD MPP( 10, 0X3, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 0, 1, 1, 1, 1, 0 )
|
||||
|
||||
#define MPP11_GPIO MPP( 11, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP11_SPI_MISO MPP( 11, 0x2, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP11_UART0_RXD MPP( 11, 0x3, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 1, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 1, 1, 1, 1, 1, 0 )
|
||||
#define MPP11_PTP_CLK MPP( 11, 0xd, 1, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP11_SPI_MISO MPP( 11, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP11_UART0_RXD MPP( 11, 0x3, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 0, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP11_PTP_CLK MPP( 11, 0xd, 0, 0, 1, 1, 1, 1, 0 )
|
||||
#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 0, 0, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP12_SD_CLK MPP( 12, 0x1, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP12_TW1_SDA MPP( 12, 0xd, 1, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP12_SD_CLK MPP( 12, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP12_TW1_SDA MPP( 12, 0xd, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP13_GPIO MPP( 13, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP13_SD_CMD MPP( 13, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP13_AU_SPDIFRMCLK MPP( 13, 0xa, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP13_LCDPWM MPP( 13, 0xb, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP13_SD_CMD MPP( 13, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP13_AU_SPDIFRMCLK MPP( 13, 0xa, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP13_LCDPWM MPP( 13, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP14_GPIO MPP( 14, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP14_SD_D0 MPP( 14, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP14_UART1_RXD MPP( 14, 0x3, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP14_AU_SPDIFI MPP( 14, 0xa, 1, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP14_AU_I2SDI MPP( 14, 0xb, 1, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP14_MII0_COL MPP( 14, 0xd, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP14_SD_D0 MPP( 14, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP14_UART1_RXD MPP( 14, 0x3, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP14_AU_SPDIFI MPP( 14, 0xa, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP14_AU_I2SDI MPP( 14, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP14_MII0_COL MPP( 14, 0xd, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP15_GPIO MPP( 15, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP15_SD_D1 MPP( 15, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP15_SPI_CSn MPP( 15, 0xb, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP15_SD_D1 MPP( 15, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP15_SPI_CSn MPP( 15, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP16_GPIO MPP( 16, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP16_SD_D2 MPP( 16, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP16_UART0_CTS MPP( 16, 0x2, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP16_UART1_RXD MPP( 16, 0x3, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP16_LCD_EXT_REF_CLK MPP( 16, 0xb, 1, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP16_MII0_CRS MPP( 16, 0xd, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP16_SD_D2 MPP( 16, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP16_UART0_CTS MPP( 16, 0x2, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP16_UART1_RXD MPP( 16, 0x3, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP16_LCD_EXT_REF_CLK MPP( 16, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP16_MII0_CRS MPP( 16, 0xd, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP17_GPIO MPP( 17, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP17_SD_D3 MPP( 17, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP17_SATA1_ACTn MPP( 17, 0xa, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP17_TW1_SCK MPP( 17, 0xd, 1, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP17_SD_D3 MPP( 17, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP17_SATA1_ACTn MPP( 17, 0xa, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP17_TW1_SCK MPP( 17, 0xd, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP18_GPO MPP( 18, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP18_NF_IO0 MPP( 18, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP18_PEX0_CLKREQ MPP( 18, 0x2, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP18_NF_IO0 MPP( 18, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP18_PEX0_CLKREQ MPP( 18, 0x2, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP19_GPO MPP( 19, 0x0, 0, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP19_NF_IO1 MPP( 19, 0x1, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP19_NF_IO1 MPP( 19, 0x1, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP20_GPIO MPP( 20, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP20_TSMP0 MPP( 20, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP20_TSMP0 MPP( 20, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP20_GE1_TXD0 MPP( 20, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP20_AU_SPDIFI MPP( 20, 0x4, 1, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP20_AU_SPDIFI MPP( 20, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP20_LCD_D0 MPP( 20, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP21_GPIO MPP( 21, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP21_TSMP1 MPP( 21, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP21_TSMP1 MPP( 21, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP21_GE1_TXD1 MPP( 21, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP21_AU_SPDIFO MPP( 21, 0x4, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP21_AU_SPDIFO MPP( 21, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP21_LCD_D1 MPP( 21, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP22_GPIO MPP( 22, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP22_TSMP2 MPP( 22, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP22_TSMP2 MPP( 22, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP22_GE1_TXD2 MPP( 22, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP22_AU_SPDIFRMKCLK MPP( 22, 0x4, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP22_AU_SPDIFRMKCLK MPP( 22, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP22_LCD_D2 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP23_GPIO MPP( 23, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP23_TSMP3 MPP( 23, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 1, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP23_TSMP3 MPP( 23, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP23_GE1_TXD3 MPP( 23, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP23_AU_I2SBCLK MPP( 23, 0x4, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP23_AU_I2SBCLK MPP( 23, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP23_LCD_D3 MPP( 23, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP24_GPIO MPP( 24, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP24_TSMP4 MPP( 24, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP24_TDM_SPI_CS0 MPP( 24, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP24_TSMP4 MPP( 24, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP24_TDM_SPI_CS0 MPP( 24, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP24_GE1_RXD0 MPP( 24, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP24_AU_I2SDO MPP( 24, 0x4, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP24_AU_I2SDO MPP( 24, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP24_LCD_D4 MPP( 24, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP25_GPIO MPP( 25, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP25_TSMP5 MPP( 25, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP25_TSMP5 MPP( 25, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP25_GE1_RXD1 MPP( 25, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP25_AU_I2SLRCLK MPP( 25, 0x4, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP25_AU_I2SLRCLK MPP( 25, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP25_LCD_D5 MPP( 25, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP26_GPIO MPP( 26, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP26_TSMP6 MPP( 26, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 1, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP26_TSMP6 MPP( 26, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP26_GE1_RXD2 MPP( 26, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP26_AU_I2SMCLK MPP( 26, 0x4, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP26_AU_I2SMCLK MPP( 26, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP26_LCD_D6 MPP( 26, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP27_GPIO MPP( 27, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP27_TSMP7 MPP( 27, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP27_TSMP7 MPP( 27, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP27_GE1_RXD3 MPP( 27, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP27_AU_I2SDI MPP( 27, 0x4, 1, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP27_AU_I2SDI MPP( 27, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP27_LCD_D7 MPP( 27, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP28_GPIO MPP( 28, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP28_TSMP8 MPP( 28, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP28_TSMP8 MPP( 28, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP28_TDM_CODEC_INTn MPP( 28, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP28_GE1_COL MPP( 28, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP28_AU_EXTCLK MPP( 28, 0x4, 1, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP28_AU_EXTCLK MPP( 28, 0x4, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP28_LCD_D8 MPP( 28, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP29_GPIO MPP( 29, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP29_TSMP9 MPP( 29, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP29_TSMP9 MPP( 29, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP29_TDM_CODEC_RSTn MPP( 29, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP29_GE1_TCLK MPP( 29, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP29_LCD_D9 MPP( 29, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP30_GPIO MPP( 30, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP30_TSMP10 MPP( 30, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP30_TDM_PCLK MPP( 30, 0x2, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP30_TSMP10 MPP( 30, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP30_TDM_PCLK MPP( 30, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP30_GE1_RXCTL MPP( 30, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP30_LCD_D10 MPP( 30, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP31_GPIO MPP( 31, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP31_TSMP11 MPP( 31, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP31_TDM_FS MPP( 31, 0x2, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP31_TSMP11 MPP( 31, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP31_TDM_FS MPP( 31, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP31_GE1_RXCLK MPP( 31, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP31_LCD_D11 MPP( 31, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP32_GPIO MPP( 32, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP32_TSMP12 MPP( 32, 0x1, 1, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP32_TDM_DRX MPP( 32, 0x2, 1, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP32_TSMP12 MPP( 32, 0x1, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP32_TDM_DRX MPP( 32, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP32_GE1_TCLKOUT MPP( 32, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP32_LCD_D12 MPP( 32, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP33_GPO MPP( 33, 0x0, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP33_GE1_TXCTL MPP( 33, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP33_LCD_D13 MPP( 33, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP34_GPIO MPP( 34, 0x0, 1, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP34_GE1_TXEN MPP( 34, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP34_LCD_D14 MPP( 34, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP35_GPIO MPP( 35, 0x0, 1, 1, 1, 1, 1, 1, 1 )
|
||||
#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 1, 0, 0, 1, 1, 1 )
|
||||
#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 0, 0, 0, 1, 1, 1 )
|
||||
#define MPP35_GE1_RXERR MPP( 35, 0x3, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 1, 0, 1, 1, 1, 1 )
|
||||
#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 0, 0, 1, 1, 1, 1 )
|
||||
#define MPP35_LCD_D15 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP35_MII0_RXERR MPP( 35, 0xc, 1, 0, 1, 1, 1, 1, 1 )
|
||||
#define MPP35_MII0_RXERR MPP( 35, 0xc, 0, 0, 1, 1, 1, 1, 1 )
|
||||
|
||||
#define MPP36_GPIO MPP( 36, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP36_TSMP0 MPP( 36, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP36_AU_SPDIFI MPP( 36, 0x4, 1, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP36_TW1_SDA MPP( 36, 0xb, 1, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP36_TSMP0 MPP( 36, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP36_AU_SPDIFI MPP( 36, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP36_TW1_SDA MPP( 36, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP37_GPIO MPP( 37, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP37_TSMP1 MPP( 37, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP37_AU_SPDIFO MPP( 37, 0x4, 0, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP37_TW1_SCK MPP( 37, 0xb, 1, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP37_TSMP1 MPP( 37, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP37_AU_SPDIFO MPP( 37, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP37_TW1_SCK MPP( 37, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP38_GPIO MPP( 38, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP38_TSMP2 MPP( 38, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP38_AU_SPDIFRMLCLK MPP( 38, 0x4, 0, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP38_TSMP2 MPP( 38, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP38_AU_SPDIFRMLCLK MPP( 38, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP38_LCD_D18 MPP( 38, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP39_GPIO MPP( 39, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP39_TSMP3 MPP( 39, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP39_AU_I2SBCLK MPP( 39, 0x4, 0, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP39_TSMP3 MPP( 39, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP39_AU_I2SBCLK MPP( 39, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP39_LCD_D19 MPP( 39, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP40_GPIO MPP( 40, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP40_TSMP4 MPP( 40, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP40_AU_I2SDO MPP( 40, 0x4, 0, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP40_TSMP4 MPP( 40, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP40_AU_I2SDO MPP( 40, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP40_LCD_D20 MPP( 40, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP41_GPIO MPP( 41, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP41_TSMP5 MPP( 41, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 1, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP41_AU_I2SLRCLK MPP( 41, 0x4, 0, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP41_TSMP5 MPP( 41, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP41_AU_I2SLRCLK MPP( 41, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP41_LCD_D21 MPP( 41, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP42_GPIO MPP( 42, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP42_TSMP6 MPP( 42, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP42_AU_I2SMCLK MPP( 42, 0x4, 0, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP42_TSMP6 MPP( 42, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP42_AU_I2SMCLK MPP( 42, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP42_LCD_D22 MPP( 42, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP43_GPIO MPP( 43, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP43_TSMP7 MPP( 43, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP43_TSMP7 MPP( 43, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP43_TDM_CODEC_INTn MPP( 43, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP43_AU_I2SDI MPP( 43, 0x4, 1, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP43_AU_I2SDI MPP( 43, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP43_LCD_D23 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP44_GPIO MPP( 44, 0x0, 1, 1, 1, 0, 0, 1, 1 )
|
||||
#define MPP44_TSMP8 MPP( 44, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP44_TSMP8 MPP( 44, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP44_TDM_CODEC_RSTn MPP( 44, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP44_AU_EXTCLK MPP( 44, 0x4, 1, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP44_AU_EXTCLK MPP( 44, 0x4, 0, 0, 1, 0, 0, 1, 1 )
|
||||
#define MPP44_LCD_CLK MPP( 44, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP45_GPIO MPP( 45, 0x0, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP45_TSMP9 MPP( 45, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP45_TDM_PCLK MPP( 45, 0x2, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP45_TSMP9 MPP( 45, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP45_TDM_PCLK MPP( 45, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP245_LCD_E MPP( 45, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP46_GPIO MPP( 46, 0x0, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP46_TSMP10 MPP( 46, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP46_TDM_FS MPP( 46, 0x2, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP46_TSMP10 MPP( 46, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP46_TDM_FS MPP( 46, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP46_LCD_HSYNC MPP( 46, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP47_GPIO MPP( 47, 0x0, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP47_TSMP11 MPP( 47, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP47_TDM_DRX MPP( 47, 0x2, 1, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP47_TSMP11 MPP( 47, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP47_TDM_DRX MPP( 47, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP47_LCD_VSYNC MPP( 47, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP48_TDM_DTX MPP( 48, 0x2, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP48_TSMP12 MPP( 48, 0x1, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP48_TDM_DTX MPP( 48, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP48_LCD_D16 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1, 0 )
|
||||
#define MPP49_GPO MPP( 49, 0x0, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1, 0 )
|
||||
#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 1, 0, 0, 0, 1, 1 )
|
||||
#define MPP49_PTP_CLK MPP( 49, 0x5, 1, 0, 0, 0, 0, 1, 0 )
|
||||
#define MPP49_PEX0_CLKREQ MPP( 49, 0xa, 0, 1, 0, 0, 0, 0, 1 )
|
||||
#define MPP49_TSMP9 MPP( 49, 0x1, 0, 0, 0, 0, 0, 1, 0 )
|
||||
#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 0, 0, 0, 0, 1, 1 )
|
||||
#define MPP49_PTP_CLK MPP( 49, 0x5, 0, 0, 0, 0, 0, 1, 0 )
|
||||
#define MPP49_PEX0_CLKREQ MPP( 49, 0xa, 0, 0, 0, 0, 0, 0, 1 )
|
||||
#define MPP49_LCD_D17 MPP( 49, 0xb, 0, 0, 0, 0, 0, 0, 1 )
|
||||
|
||||
#define MPP_MAX 49
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
*/
|
||||
#define IRQ_LPC32XX_JTAG_COMM_TX LPC32XX_SIC1_IRQ(1)
|
||||
#define IRQ_LPC32XX_JTAG_COMM_RX LPC32XX_SIC1_IRQ(2)
|
||||
#define IRQ_LPC32XX_GPI_11 LPC32XX_SIC1_IRQ(4)
|
||||
#define IRQ_LPC32XX_GPI_28 LPC32XX_SIC1_IRQ(4)
|
||||
#define IRQ_LPC32XX_TS_P LPC32XX_SIC1_IRQ(6)
|
||||
#define IRQ_LPC32XX_TS_IRQ LPC32XX_SIC1_IRQ(7)
|
||||
#define IRQ_LPC32XX_TS_AUX LPC32XX_SIC1_IRQ(8)
|
||||
|
|
|
|||
|
|
@ -118,6 +118,10 @@ static const struct lpc32xx_event_info lpc32xx_events[NR_IRQS] = {
|
|||
.event_group = &lpc32xx_event_pin_regs,
|
||||
.mask = LPC32XX_CLKPWR_EXTSRC_GPI_06_BIT,
|
||||
},
|
||||
[IRQ_LPC32XX_GPI_28] = {
|
||||
.event_group = &lpc32xx_event_pin_regs,
|
||||
.mask = LPC32XX_CLKPWR_EXTSRC_GPI_28_BIT,
|
||||
},
|
||||
[IRQ_LPC32XX_GPIO_00] = {
|
||||
.event_group = &lpc32xx_event_int_regs,
|
||||
.mask = LPC32XX_CLKPWR_INTSRC_GPIO_00_BIT,
|
||||
|
|
@ -305,9 +309,18 @@ static int lpc32xx_irq_wake(struct irq_data *d, unsigned int state)
|
|||
|
||||
if (state)
|
||||
eventreg |= lpc32xx_events[d->irq].mask;
|
||||
else
|
||||
else {
|
||||
eventreg &= ~lpc32xx_events[d->irq].mask;
|
||||
|
||||
/*
|
||||
* When disabling the wakeup, clear the latched
|
||||
* event
|
||||
*/
|
||||
__raw_writel(lpc32xx_events[d->irq].mask,
|
||||
lpc32xx_events[d->irq].
|
||||
event_group->rawstat_reg);
|
||||
}
|
||||
|
||||
__raw_writel(eventreg,
|
||||
lpc32xx_events[d->irq].event_group->enab_reg);
|
||||
|
||||
|
|
@ -380,13 +393,15 @@ void __init lpc32xx_init_irq(void)
|
|||
|
||||
/* Setup SIC1 */
|
||||
__raw_writel(0, LPC32XX_INTC_MASK(LPC32XX_SIC1_BASE));
|
||||
__raw_writel(MIC_APR_DEFAULT, LPC32XX_INTC_POLAR(LPC32XX_SIC1_BASE));
|
||||
__raw_writel(MIC_ATR_DEFAULT, LPC32XX_INTC_ACT_TYPE(LPC32XX_SIC1_BASE));
|
||||
__raw_writel(SIC1_APR_DEFAULT, LPC32XX_INTC_POLAR(LPC32XX_SIC1_BASE));
|
||||
__raw_writel(SIC1_ATR_DEFAULT,
|
||||
LPC32XX_INTC_ACT_TYPE(LPC32XX_SIC1_BASE));
|
||||
|
||||
/* Setup SIC2 */
|
||||
__raw_writel(0, LPC32XX_INTC_MASK(LPC32XX_SIC2_BASE));
|
||||
__raw_writel(MIC_APR_DEFAULT, LPC32XX_INTC_POLAR(LPC32XX_SIC2_BASE));
|
||||
__raw_writel(MIC_ATR_DEFAULT, LPC32XX_INTC_ACT_TYPE(LPC32XX_SIC2_BASE));
|
||||
__raw_writel(SIC2_APR_DEFAULT, LPC32XX_INTC_POLAR(LPC32XX_SIC2_BASE));
|
||||
__raw_writel(SIC2_ATR_DEFAULT,
|
||||
LPC32XX_INTC_ACT_TYPE(LPC32XX_SIC2_BASE));
|
||||
|
||||
/* Configure supported IRQ's */
|
||||
for (i = 0; i < NR_IRQS; i++) {
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ struct uartinit {
|
|||
char *uart_ck_name;
|
||||
u32 ck_mode_mask;
|
||||
void __iomem *pdiv_clk_reg;
|
||||
resource_size_t mapbase;
|
||||
};
|
||||
|
||||
static struct uartinit uartinit_data[] __initdata = {
|
||||
|
|
@ -97,6 +98,7 @@ static struct uartinit uartinit_data[] __initdata = {
|
|||
.ck_mode_mask =
|
||||
LPC32XX_UART_CLKMODE_LOAD(LPC32XX_UART_CLKMODE_ON, 5),
|
||||
.pdiv_clk_reg = LPC32XX_CLKPWR_UART5_CLK_CTRL,
|
||||
.mapbase = LPC32XX_UART5_BASE,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_LPC32XX_UART3_SELECT
|
||||
|
|
@ -105,6 +107,7 @@ static struct uartinit uartinit_data[] __initdata = {
|
|||
.ck_mode_mask =
|
||||
LPC32XX_UART_CLKMODE_LOAD(LPC32XX_UART_CLKMODE_ON, 3),
|
||||
.pdiv_clk_reg = LPC32XX_CLKPWR_UART3_CLK_CTRL,
|
||||
.mapbase = LPC32XX_UART3_BASE,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_LPC32XX_UART4_SELECT
|
||||
|
|
@ -113,6 +116,7 @@ static struct uartinit uartinit_data[] __initdata = {
|
|||
.ck_mode_mask =
|
||||
LPC32XX_UART_CLKMODE_LOAD(LPC32XX_UART_CLKMODE_ON, 4),
|
||||
.pdiv_clk_reg = LPC32XX_CLKPWR_UART4_CLK_CTRL,
|
||||
.mapbase = LPC32XX_UART4_BASE,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_LPC32XX_UART6_SELECT
|
||||
|
|
@ -121,6 +125,7 @@ static struct uartinit uartinit_data[] __initdata = {
|
|||
.ck_mode_mask =
|
||||
LPC32XX_UART_CLKMODE_LOAD(LPC32XX_UART_CLKMODE_ON, 6),
|
||||
.pdiv_clk_reg = LPC32XX_CLKPWR_UART6_CLK_CTRL,
|
||||
.mapbase = LPC32XX_UART6_BASE,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
|
@ -165,11 +170,24 @@ void __init lpc32xx_serial_init(void)
|
|||
|
||||
/* pre-UART clock divider set to 1 */
|
||||
__raw_writel(0x0101, uartinit_data[i].pdiv_clk_reg);
|
||||
|
||||
/*
|
||||
* Force a flush of the RX FIFOs to work around a
|
||||
* HW bug
|
||||
*/
|
||||
puart = uartinit_data[i].mapbase;
|
||||
__raw_writel(0xC1, LPC32XX_UART_IIR_FCR(puart));
|
||||
__raw_writel(0x00, LPC32XX_UART_DLL_FIFO(puart));
|
||||
j = LPC32XX_SUART_FIFO_SIZE;
|
||||
while (j--)
|
||||
tmp = __raw_readl(
|
||||
LPC32XX_UART_DLL_FIFO(puart));
|
||||
__raw_writel(0, LPC32XX_UART_IIR_FCR(puart));
|
||||
}
|
||||
|
||||
/* This needs to be done after all UART clocks are setup */
|
||||
__raw_writel(clkmodes, LPC32XX_UARTCTL_CLKMODE);
|
||||
for (i = 0; i < ARRAY_SIZE(uartinit_data) - 1; i++) {
|
||||
for (i = 0; i < ARRAY_SIZE(uartinit_data); i++) {
|
||||
/* Force a flush of the RX FIFOs to work around a HW bug */
|
||||
puart = serial_std_platform_data[i].mapbase;
|
||||
__raw_writel(0xC1, LPC32XX_UART_IIR_FCR(puart));
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include <mach/mv78xx0.h>
|
||||
#include <mach/bridge-regs.h>
|
||||
#include <plat/cache-feroceon-l2.h>
|
||||
#include <plat/ehci-orion.h>
|
||||
#include <plat/orion_nand.h>
|
||||
#include <plat/time.h>
|
||||
#include <plat/common.h>
|
||||
|
|
@ -170,7 +171,7 @@ void __init mv78xx0_map_io(void)
|
|||
void __init mv78xx0_ehci0_init(void)
|
||||
{
|
||||
orion_ehci_init(&mv78xx0_mbus_dram_info,
|
||||
USB0_PHYS_BASE, IRQ_MV78XX0_USB_0);
|
||||
USB0_PHYS_BASE, IRQ_MV78XX0_USB_0, EHCI_PHY_NA);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,296 +24,296 @@
|
|||
#define MPP_78100_A0_MASK MPP(0, 0x0, 0, 0, 1)
|
||||
|
||||
#define MPP0_GPIO MPP(0, 0x0, 1, 1, 1)
|
||||
#define MPP0_GE0_COL MPP(0, 0x1, 1, 0, 1)
|
||||
#define MPP0_GE1_TXCLK MPP(0, 0x2, 0, 1, 1)
|
||||
#define MPP0_GE0_COL MPP(0, 0x1, 0, 0, 1)
|
||||
#define MPP0_GE1_TXCLK MPP(0, 0x2, 0, 0, 1)
|
||||
#define MPP0_UNUSED MPP(0, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP1_GPIO MPP(1, 0x0, 1, 1, 1)
|
||||
#define MPP1_GE0_RXERR MPP(1, 0x1, 1, 0, 1)
|
||||
#define MPP1_GE1_TXCTL MPP(1, 0x2, 0, 1, 1)
|
||||
#define MPP1_GE0_RXERR MPP(1, 0x1, 0, 0, 1)
|
||||
#define MPP1_GE1_TXCTL MPP(1, 0x2, 0, 0, 1)
|
||||
#define MPP1_UNUSED MPP(1, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP2_GPIO MPP(2, 0x0, 1, 1, 1)
|
||||
#define MPP2_GE0_CRS MPP(2, 0x1, 1, 0, 1)
|
||||
#define MPP2_GE1_RXCTL MPP(2, 0x2, 1, 0, 1)
|
||||
#define MPP2_GE0_CRS MPP(2, 0x1, 0, 0, 1)
|
||||
#define MPP2_GE1_RXCTL MPP(2, 0x2, 0, 0, 1)
|
||||
#define MPP2_UNUSED MPP(2, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP3_GPIO MPP(3, 0x0, 1, 1, 1)
|
||||
#define MPP3_GE0_TXERR MPP(3, 0x1, 0, 1, 1)
|
||||
#define MPP3_GE1_RXCLK MPP(3, 0x2, 1, 0, 1)
|
||||
#define MPP3_GE0_TXERR MPP(3, 0x1, 0, 0, 1)
|
||||
#define MPP3_GE1_RXCLK MPP(3, 0x2, 0, 0, 1)
|
||||
#define MPP3_UNUSED MPP(3, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP4_GPIO MPP(4, 0x0, 1, 1, 1)
|
||||
#define MPP4_GE0_TXD4 MPP(4, 0x1, 0, 1, 1)
|
||||
#define MPP4_GE1_TXD0 MPP(4, 0x2, 0, 1, 1)
|
||||
#define MPP4_GE0_TXD4 MPP(4, 0x1, 0, 0, 1)
|
||||
#define MPP4_GE1_TXD0 MPP(4, 0x2, 0, 0, 1)
|
||||
#define MPP4_UNUSED MPP(4, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP5_GPIO MPP(5, 0x0, 1, 1, 1)
|
||||
#define MPP5_GE0_TXD5 MPP(5, 0x1, 0, 1, 1)
|
||||
#define MPP5_GE1_TXD1 MPP(5, 0x2, 0, 1, 1)
|
||||
#define MPP5_GE0_TXD5 MPP(5, 0x1, 0, 0, 1)
|
||||
#define MPP5_GE1_TXD1 MPP(5, 0x2, 0, 0, 1)
|
||||
#define MPP5_UNUSED MPP(5, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP6_GPIO MPP(6, 0x0, 1, 1, 1)
|
||||
#define MPP6_GE0_TXD6 MPP(6, 0x1, 0, 1, 1)
|
||||
#define MPP6_GE1_TXD2 MPP(6, 0x2, 0, 1, 1)
|
||||
#define MPP6_GE0_TXD6 MPP(6, 0x1, 0, 0, 1)
|
||||
#define MPP6_GE1_TXD2 MPP(6, 0x2, 0, 0, 1)
|
||||
#define MPP6_UNUSED MPP(6, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP7_GPIO MPP(7, 0x0, 1, 1, 1)
|
||||
#define MPP7_GE0_TXD7 MPP(7, 0x1, 0, 1, 1)
|
||||
#define MPP7_GE1_TXD3 MPP(7, 0x2, 0, 1, 1)
|
||||
#define MPP7_GE0_TXD7 MPP(7, 0x1, 0, 0, 1)
|
||||
#define MPP7_GE1_TXD3 MPP(7, 0x2, 0, 0, 1)
|
||||
#define MPP7_UNUSED MPP(7, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP8_GPIO MPP(8, 0x0, 1, 1, 1)
|
||||
#define MPP8_GE0_RXD4 MPP(8, 0x1, 1, 0, 1)
|
||||
#define MPP8_GE1_RXD0 MPP(8, 0x2, 1, 0, 1)
|
||||
#define MPP8_GE0_RXD4 MPP(8, 0x1, 0, 0, 1)
|
||||
#define MPP8_GE1_RXD0 MPP(8, 0x2, 0, 0, 1)
|
||||
#define MPP8_UNUSED MPP(8, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP9_GPIO MPP(9, 0x0, 1, 1, 1)
|
||||
#define MPP9_GE0_RXD5 MPP(9, 0x1, 1, 0, 1)
|
||||
#define MPP9_GE1_RXD1 MPP(9, 0x2, 1, 0, 1)
|
||||
#define MPP9_GE0_RXD5 MPP(9, 0x1, 0, 0, 1)
|
||||
#define MPP9_GE1_RXD1 MPP(9, 0x2, 0, 0, 1)
|
||||
#define MPP9_UNUSED MPP(9, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP10_GPIO MPP(10, 0x0, 1, 1, 1)
|
||||
#define MPP10_GE0_RXD6 MPP(10, 0x1, 1, 0, 1)
|
||||
#define MPP10_GE1_RXD2 MPP(10, 0x2, 1, 0, 1)
|
||||
#define MPP10_GE0_RXD6 MPP(10, 0x1, 0, 0, 1)
|
||||
#define MPP10_GE1_RXD2 MPP(10, 0x2, 0, 0, 1)
|
||||
#define MPP10_UNUSED MPP(10, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP11_GPIO MPP(11, 0x0, 1, 1, 1)
|
||||
#define MPP11_GE0_RXD7 MPP(11, 0x1, 1, 0, 1)
|
||||
#define MPP11_GE1_RXD3 MPP(11, 0x2, 1, 0, 1)
|
||||
#define MPP11_GE0_RXD7 MPP(11, 0x1, 0, 0, 1)
|
||||
#define MPP11_GE1_RXD3 MPP(11, 0x2, 0, 0, 1)
|
||||
#define MPP11_UNUSED MPP(11, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP12_GPIO MPP(12, 0x0, 1, 1, 1)
|
||||
#define MPP12_M_BB MPP(12, 0x3, 1, 0, 1)
|
||||
#define MPP12_UA0_CTSn MPP(12, 0x4, 1, 0, 1)
|
||||
#define MPP12_NAND_FLASH_REn0 MPP(12, 0x5, 0, 1, 1)
|
||||
#define MPP12_TDM0_SCSn MPP(12, 0X6, 0, 1, 1)
|
||||
#define MPP12_M_BB MPP(12, 0x3, 0, 0, 1)
|
||||
#define MPP12_UA0_CTSn MPP(12, 0x4, 0, 0, 1)
|
||||
#define MPP12_NAND_FLASH_REn0 MPP(12, 0x5, 0, 0, 1)
|
||||
#define MPP12_TDM0_SCSn MPP(12, 0X6, 0, 0, 1)
|
||||
#define MPP12_UNUSED MPP(12, 0x1, 0, 0, 1)
|
||||
|
||||
#define MPP13_GPIO MPP(13, 0x0, 1, 1, 1)
|
||||
#define MPP13_SYSRST_OUTn MPP(13, 0x3, 0, 1, 1)
|
||||
#define MPP13_UA0_RTSn MPP(13, 0x4, 0, 1, 1)
|
||||
#define MPP13_NAN_FLASH_WEn0 MPP(13, 0x5, 0, 1, 1)
|
||||
#define MPP13_TDM_SCLK MPP(13, 0x6, 0, 1, 1)
|
||||
#define MPP13_SYSRST_OUTn MPP(13, 0x3, 0, 0, 1)
|
||||
#define MPP13_UA0_RTSn MPP(13, 0x4, 0, 0, 1)
|
||||
#define MPP13_NAN_FLASH_WEn0 MPP(13, 0x5, 0, 0, 1)
|
||||
#define MPP13_TDM_SCLK MPP(13, 0x6, 0, 0, 1)
|
||||
#define MPP13_UNUSED MPP(13, 0x1, 0, 0, 1)
|
||||
|
||||
#define MPP14_GPIO MPP(14, 0x0, 1, 1, 1)
|
||||
#define MPP14_SATA1_ACTn MPP(14, 0x3, 0, 1, 1)
|
||||
#define MPP14_UA1_CTSn MPP(14, 0x4, 1, 0, 1)
|
||||
#define MPP14_NAND_FLASH_REn1 MPP(14, 0x5, 0, 1, 1)
|
||||
#define MPP14_TDM_SMOSI MPP(14, 0x6, 0, 1, 1)
|
||||
#define MPP14_SATA1_ACTn MPP(14, 0x3, 0, 0, 1)
|
||||
#define MPP14_UA1_CTSn MPP(14, 0x4, 0, 0, 1)
|
||||
#define MPP14_NAND_FLASH_REn1 MPP(14, 0x5, 0, 0, 1)
|
||||
#define MPP14_TDM_SMOSI MPP(14, 0x6, 0, 0, 1)
|
||||
#define MPP14_UNUSED MPP(14, 0x1, 0, 0, 1)
|
||||
|
||||
#define MPP15_GPIO MPP(15, 0x0, 1, 1, 1)
|
||||
#define MPP15_SATA0_ACTn MPP(15, 0x3, 0, 1, 1)
|
||||
#define MPP15_UA1_RTSn MPP(15, 0x4, 0, 1, 1)
|
||||
#define MPP15_NAND_FLASH_WEn1 MPP(15, 0x5, 0, 1, 1)
|
||||
#define MPP15_TDM_SMISO MPP(15, 0x6, 1, 0, 1)
|
||||
#define MPP15_SATA0_ACTn MPP(15, 0x3, 0, 0, 1)
|
||||
#define MPP15_UA1_RTSn MPP(15, 0x4, 0, 0, 1)
|
||||
#define MPP15_NAND_FLASH_WEn1 MPP(15, 0x5, 0, 0, 1)
|
||||
#define MPP15_TDM_SMISO MPP(15, 0x6, 0, 0, 1)
|
||||
#define MPP15_UNUSED MPP(15, 0x1, 0, 0, 1)
|
||||
|
||||
#define MPP16_GPIO MPP(16, 0x0, 1, 1, 1)
|
||||
#define MPP16_SATA1_PRESENTn MPP(16, 0x3, 0, 1, 1)
|
||||
#define MPP16_UA2_TXD MPP(16, 0x4, 0, 1, 1)
|
||||
#define MPP16_NAND_FLASH_REn3 MPP(16, 0x5, 0, 1, 1)
|
||||
#define MPP16_TDM_INTn MPP(16, 0x6, 1, 0, 1)
|
||||
#define MPP16_SATA1_PRESENTn MPP(16, 0x3, 0, 0, 1)
|
||||
#define MPP16_UA2_TXD MPP(16, 0x4, 0, 0, 1)
|
||||
#define MPP16_NAND_FLASH_REn3 MPP(16, 0x5, 0, 0, 1)
|
||||
#define MPP16_TDM_INTn MPP(16, 0x6, 0, 0, 1)
|
||||
#define MPP16_UNUSED MPP(16, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP17_GPIO MPP(17, 0x0, 1, 1, 1)
|
||||
#define MPP17_SATA0_PRESENTn MPP(17, 0x3, 0, 1, 1)
|
||||
#define MPP17_UA2_RXD MPP(17, 0x4, 1, 0, 1)
|
||||
#define MPP17_NAND_FLASH_WEn3 MPP(17, 0x5, 0, 1, 1)
|
||||
#define MPP17_TDM_RSTn MPP(17, 0x6, 0, 1, 1)
|
||||
#define MPP17_SATA0_PRESENTn MPP(17, 0x3, 0, 0, 1)
|
||||
#define MPP17_UA2_RXD MPP(17, 0x4, 0, 0, 1)
|
||||
#define MPP17_NAND_FLASH_WEn3 MPP(17, 0x5, 0, 0, 1)
|
||||
#define MPP17_TDM_RSTn MPP(17, 0x6, 0, 0, 1)
|
||||
#define MPP17_UNUSED MPP(17, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP18_GPIO MPP(18, 0x0, 1, 1, 1)
|
||||
#define MPP18_UA0_CTSn MPP(18, 0x4, 1, 0, 1)
|
||||
#define MPP18_BOOT_FLASH_REn MPP(18, 0x5, 0, 1, 1)
|
||||
#define MPP18_UA0_CTSn MPP(18, 0x4, 0, 0, 1)
|
||||
#define MPP18_BOOT_FLASH_REn MPP(18, 0x5, 0, 0, 1)
|
||||
#define MPP18_UNUSED MPP(18, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP19_GPIO MPP(19, 0x0, 1, 1, 1)
|
||||
#define MPP19_UA0_CTSn MPP(19, 0x4, 0, 1, 1)
|
||||
#define MPP19_BOOT_FLASH_WEn MPP(19, 0x5, 0, 1, 1)
|
||||
#define MPP19_UA0_CTSn MPP(19, 0x4, 0, 0, 1)
|
||||
#define MPP19_BOOT_FLASH_WEn MPP(19, 0x5, 0, 0, 1)
|
||||
#define MPP19_UNUSED MPP(19, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP20_GPIO MPP(20, 0x0, 1, 1, 1)
|
||||
#define MPP20_UA1_CTSs MPP(20, 0x4, 1, 0, 1)
|
||||
#define MPP20_TDM_PCLK MPP(20, 0x6, 1, 1, 0)
|
||||
#define MPP20_UA1_CTSs MPP(20, 0x4, 0, 0, 1)
|
||||
#define MPP20_TDM_PCLK MPP(20, 0x6, 0, 0, 0)
|
||||
#define MPP20_UNUSED MPP(20, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP21_GPIO MPP(21, 0x0, 1, 1, 1)
|
||||
#define MPP21_UA1_CTSs MPP(21, 0x4, 0, 1, 1)
|
||||
#define MPP21_TDM_FSYNC MPP(21, 0x6, 1, 1, 0)
|
||||
#define MPP21_UA1_CTSs MPP(21, 0x4, 0, 0, 1)
|
||||
#define MPP21_TDM_FSYNC MPP(21, 0x6, 0, 0, 0)
|
||||
#define MPP21_UNUSED MPP(21, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP22_GPIO MPP(22, 0x0, 1, 1, 1)
|
||||
#define MPP22_UA3_TDX MPP(22, 0x4, 0, 1, 1)
|
||||
#define MPP22_NAND_FLASH_REn2 MPP(22, 0x5, 0, 1, 1)
|
||||
#define MPP22_TDM_DRX MPP(22, 0x6, 1, 0, 1)
|
||||
#define MPP22_UA3_TDX MPP(22, 0x4, 0, 0, 1)
|
||||
#define MPP22_NAND_FLASH_REn2 MPP(22, 0x5, 0, 0, 1)
|
||||
#define MPP22_TDM_DRX MPP(22, 0x6, 0, 0, 1)
|
||||
#define MPP22_UNUSED MPP(22, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP23_GPIO MPP(23, 0x0, 1, 1, 1)
|
||||
#define MPP23_UA3_RDX MPP(23, 0x4, 1, 0, 1)
|
||||
#define MPP23_NAND_FLASH_WEn2 MPP(23, 0x5, 0, 1, 1)
|
||||
#define MPP23_TDM_DTX MPP(23, 0x6, 0, 1, 1)
|
||||
#define MPP23_UA3_RDX MPP(23, 0x4, 0, 0, 1)
|
||||
#define MPP23_NAND_FLASH_WEn2 MPP(23, 0x5, 0, 0, 1)
|
||||
#define MPP23_TDM_DTX MPP(23, 0x6, 0, 0, 1)
|
||||
#define MPP23_UNUSED MPP(23, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP24_GPIO MPP(24, 0x0, 1, 1, 1)
|
||||
#define MPP24_UA2_TXD MPP(24, 0x4, 0, 1, 1)
|
||||
#define MPP24_TDM_INTn MPP(24, 0x6, 1, 0, 1)
|
||||
#define MPP24_UA2_TXD MPP(24, 0x4, 0, 0, 1)
|
||||
#define MPP24_TDM_INTn MPP(24, 0x6, 0, 0, 1)
|
||||
#define MPP24_UNUSED MPP(24, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP25_GPIO MPP(25, 0x0, 1, 1, 1)
|
||||
#define MPP25_UA2_RXD MPP(25, 0x4, 1, 0, 1)
|
||||
#define MPP25_TDM_RSTn MPP(25, 0x6, 0, 1, 1)
|
||||
#define MPP25_UA2_RXD MPP(25, 0x4, 0, 0, 1)
|
||||
#define MPP25_TDM_RSTn MPP(25, 0x6, 0, 0, 1)
|
||||
#define MPP25_UNUSED MPP(25, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP26_GPIO MPP(26, 0x0, 1, 1, 1)
|
||||
#define MPP26_UA2_CTSn MPP(26, 0x4, 1, 0, 1)
|
||||
#define MPP26_TDM_PCLK MPP(26, 0x6, 1, 1, 1)
|
||||
#define MPP26_UA2_CTSn MPP(26, 0x4, 0, 0, 1)
|
||||
#define MPP26_TDM_PCLK MPP(26, 0x6, 0, 0, 1)
|
||||
#define MPP26_UNUSED MPP(26, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP27_GPIO MPP(27, 0x0, 1, 1, 1)
|
||||
#define MPP27_UA2_RTSn MPP(27, 0x4, 0, 1, 1)
|
||||
#define MPP27_TDM_FSYNC MPP(27, 0x6, 1, 1, 1)
|
||||
#define MPP27_UA2_RTSn MPP(27, 0x4, 0, 0, 1)
|
||||
#define MPP27_TDM_FSYNC MPP(27, 0x6, 0, 0, 1)
|
||||
#define MPP27_UNUSED MPP(27, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP28_GPIO MPP(28, 0x0, 1, 1, 1)
|
||||
#define MPP28_UA3_TXD MPP(28, 0x4, 0, 1, 1)
|
||||
#define MPP28_TDM_DRX MPP(28, 0x6, 1, 0, 1)
|
||||
#define MPP28_UA3_TXD MPP(28, 0x4, 0, 0, 1)
|
||||
#define MPP28_TDM_DRX MPP(28, 0x6, 0, 0, 1)
|
||||
#define MPP28_UNUSED MPP(28, 0x1, 0, 0, 1)
|
||||
|
||||
#define MPP29_GPIO MPP(29, 0x0, 1, 1, 1)
|
||||
#define MPP29_UA3_RXD MPP(29, 0x4, 1, 0, 1)
|
||||
#define MPP29_SYSRST_OUTn MPP(29, 0x5, 0, 1, 1)
|
||||
#define MPP29_TDM_DTX MPP(29, 0x6, 0, 1, 1)
|
||||
#define MPP29_UA3_RXD MPP(29, 0x4, 0, 0, 1)
|
||||
#define MPP29_SYSRST_OUTn MPP(29, 0x5, 0, 0, 1)
|
||||
#define MPP29_TDM_DTX MPP(29, 0x6, 0, 0, 1)
|
||||
#define MPP29_UNUSED MPP(29, 0x1, 0, 0, 1)
|
||||
|
||||
#define MPP30_GPIO MPP(30, 0x0, 1, 1, 1)
|
||||
#define MPP30_UA3_CTSn MPP(30, 0x4, 1, 0, 1)
|
||||
#define MPP30_UA3_CTSn MPP(30, 0x4, 0, 0, 1)
|
||||
#define MPP30_UNUSED MPP(30, 0x1, 0, 0, 1)
|
||||
|
||||
#define MPP31_GPIO MPP(31, 0x0, 1, 1, 1)
|
||||
#define MPP31_UA3_RTSn MPP(31, 0x4, 0, 1, 1)
|
||||
#define MPP31_TDM1_SCSn MPP(31, 0x6, 0, 1, 1)
|
||||
#define MPP31_UA3_RTSn MPP(31, 0x4, 0, 0, 1)
|
||||
#define MPP31_TDM1_SCSn MPP(31, 0x6, 0, 0, 1)
|
||||
#define MPP31_UNUSED MPP(31, 0x1, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP32_GPIO MPP(32, 0x1, 1, 1, 1)
|
||||
#define MPP32_UA3_TDX MPP(32, 0x4, 0, 1, 1)
|
||||
#define MPP32_SYSRST_OUTn MPP(32, 0x5, 0, 1, 1)
|
||||
#define MPP32_TDM0_RXQ MPP(32, 0x6, 0, 1, 1)
|
||||
#define MPP32_UA3_TDX MPP(32, 0x4, 0, 0, 1)
|
||||
#define MPP32_SYSRST_OUTn MPP(32, 0x5, 0, 0, 1)
|
||||
#define MPP32_TDM0_RXQ MPP(32, 0x6, 0, 0, 1)
|
||||
#define MPP32_UNUSED MPP(32, 0x3, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP33_GPIO MPP(33, 0x1, 1, 1, 1)
|
||||
#define MPP33_UA3_RDX MPP(33, 0x4, 1, 0, 1)
|
||||
#define MPP33_TDM0_TXQ MPP(33, 0x6, 0, 1, 1)
|
||||
#define MPP33_UA3_RDX MPP(33, 0x4, 0, 0, 1)
|
||||
#define MPP33_TDM0_TXQ MPP(33, 0x6, 0, 0, 1)
|
||||
#define MPP33_UNUSED MPP(33, 0x3, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP34_GPIO MPP(34, 0x1, 1, 1, 1)
|
||||
#define MPP34_UA2_TDX MPP(34, 0x4, 0, 1, 1)
|
||||
#define MPP34_TDM1_RXQ MPP(34, 0x6, 0, 1, 1)
|
||||
#define MPP34_UA2_TDX MPP(34, 0x4, 0, 0, 1)
|
||||
#define MPP34_TDM1_RXQ MPP(34, 0x6, 0, 0, 1)
|
||||
#define MPP34_UNUSED MPP(34, 0x3, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP35_GPIO MPP(35, 0x1, 1, 1, 1)
|
||||
#define MPP35_UA2_RDX MPP(35, 0x4, 1, 0, 1)
|
||||
#define MPP35_TDM1_TXQ MPP(35, 0x6, 0, 1, 1)
|
||||
#define MPP35_UA2_RDX MPP(35, 0x4, 0, 0, 1)
|
||||
#define MPP35_TDM1_TXQ MPP(35, 0x6, 0, 0, 1)
|
||||
#define MPP35_UNUSED MPP(35, 0x3, 0, 0, 1)
|
||||
|
||||
#define MPP36_GPIO MPP(36, 0x1, 1, 1, 1)
|
||||
#define MPP36_UA0_CTSn MPP(36, 0x2, 1, 0, 1)
|
||||
#define MPP36_UA2_TDX MPP(36, 0x4, 0, 1, 1)
|
||||
#define MPP36_TDM0_SCSn MPP(36, 0x6, 0, 1, 1)
|
||||
#define MPP36_UA0_CTSn MPP(36, 0x2, 0, 0, 1)
|
||||
#define MPP36_UA2_TDX MPP(36, 0x4, 0, 0, 1)
|
||||
#define MPP36_TDM0_SCSn MPP(36, 0x6, 0, 0, 1)
|
||||
#define MPP36_UNUSED MPP(36, 0x3, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP37_GPIO MPP(37, 0x1, 1, 1, 1)
|
||||
#define MPP37_UA0_RTSn MPP(37, 0x2, 0, 1, 1)
|
||||
#define MPP37_UA2_RXD MPP(37, 0x4, 1, 0, 1)
|
||||
#define MPP37_SYSRST_OUTn MPP(37, 0x5, 0, 1, 1)
|
||||
#define MPP37_TDM_SCLK MPP(37, 0x6, 0, 1, 1)
|
||||
#define MPP37_UA0_RTSn MPP(37, 0x2, 0, 0, 1)
|
||||
#define MPP37_UA2_RXD MPP(37, 0x4, 0, 0, 1)
|
||||
#define MPP37_SYSRST_OUTn MPP(37, 0x5, 0, 0, 1)
|
||||
#define MPP37_TDM_SCLK MPP(37, 0x6, 0, 0, 1)
|
||||
#define MPP37_UNUSED MPP(37, 0x3, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
|
||||
#define MPP38_GPIO MPP(38, 0x1, 1, 1, 1)
|
||||
#define MPP38_UA1_CTSn MPP(38, 0x2, 1, 0, 1)
|
||||
#define MPP38_UA3_TXD MPP(38, 0x4, 0, 1, 1)
|
||||
#define MPP38_SYSRST_OUTn MPP(38, 0x5, 0, 1, 1)
|
||||
#define MPP38_TDM_SMOSI MPP(38, 0x6, 0, 1, 1)
|
||||
#define MPP38_UA1_CTSn MPP(38, 0x2, 0, 0, 1)
|
||||
#define MPP38_UA3_TXD MPP(38, 0x4, 0, 0, 1)
|
||||
#define MPP38_SYSRST_OUTn MPP(38, 0x5, 0, 0, 1)
|
||||
#define MPP38_TDM_SMOSI MPP(38, 0x6, 0, 0, 1)
|
||||
#define MPP38_UNUSED MPP(38, 0x3, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
|
||||
#define MPP39_GPIO MPP(39, 0x1, 1, 1, 1)
|
||||
#define MPP39_UA1_RTSn MPP(39, 0x2, 0, 1, 1)
|
||||
#define MPP39_UA3_RXD MPP(39, 0x4, 1, 0, 1)
|
||||
#define MPP39_SYSRST_OUTn MPP(39, 0x5, 0, 1, 1)
|
||||
#define MPP39_TDM_SMISO MPP(39, 0x6, 1, 0, 1)
|
||||
#define MPP39_UA1_RTSn MPP(39, 0x2, 0, 0, 1)
|
||||
#define MPP39_UA3_RXD MPP(39, 0x4, 0, 0, 1)
|
||||
#define MPP39_SYSRST_OUTn MPP(39, 0x5, 0, 0, 1)
|
||||
#define MPP39_TDM_SMISO MPP(39, 0x6, 0, 0, 1)
|
||||
#define MPP39_UNUSED MPP(39, 0x3, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP40_GPIO MPP(40, 0x1, 1, 1, 1)
|
||||
#define MPP40_TDM_INTn MPP(40, 0x6, 1, 0, 1)
|
||||
#define MPP40_TDM_INTn MPP(40, 0x6, 0, 0, 1)
|
||||
#define MPP40_UNUSED MPP(40, 0x0, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP41_GPIO MPP(41, 0x1, 1, 1, 1)
|
||||
#define MPP41_TDM_RSTn MPP(41, 0x6, 0, 1, 1)
|
||||
#define MPP41_TDM_RSTn MPP(41, 0x6, 0, 0, 1)
|
||||
#define MPP41_UNUSED MPP(41, 0x0, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP42_GPIO MPP(42, 0x1, 1, 1, 1)
|
||||
#define MPP42_TDM_PCLK MPP(42, 0x6, 1, 1, 1)
|
||||
#define MPP42_TDM_PCLK MPP(42, 0x6, 0, 0, 1)
|
||||
#define MPP42_UNUSED MPP(42, 0x0, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP43_GPIO MPP(43, 0x1, 1, 1, 1)
|
||||
#define MPP43_TDM_FSYNC MPP(43, 0x6, 1, 1, 1)
|
||||
#define MPP43_TDM_FSYNC MPP(43, 0x6, 0, 0, 1)
|
||||
#define MPP43_UNUSED MPP(43, 0x0, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP44_GPIO MPP(44, 0x1, 1, 1, 1)
|
||||
#define MPP44_TDM_DRX MPP(44, 0x6, 1, 0, 1)
|
||||
#define MPP44_TDM_DRX MPP(44, 0x6, 0, 0, 1)
|
||||
#define MPP44_UNUSED MPP(44, 0x0, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP45_GPIO MPP(45, 0x1, 1, 1, 1)
|
||||
#define MPP45_SATA0_ACTn MPP(45, 0x3, 0, 1, 1)
|
||||
#define MPP45_TDM_DRX MPP(45, 0x6, 0, 1, 1)
|
||||
#define MPP45_SATA0_ACTn MPP(45, 0x3, 0, 0, 1)
|
||||
#define MPP45_TDM_DRX MPP(45, 0x6, 0, 0, 1)
|
||||
#define MPP45_UNUSED MPP(45, 0x0, 0, 0, 1)
|
||||
|
||||
|
||||
#define MPP46_GPIO MPP(46, 0x1, 1, 1, 1)
|
||||
#define MPP46_TDM_SCSn MPP(46, 0x6, 0, 1, 1)
|
||||
#define MPP46_TDM_SCSn MPP(46, 0x6, 0, 0, 1)
|
||||
#define MPP46_UNUSED MPP(46, 0x0, 0, 0, 1)
|
||||
|
||||
|
||||
|
|
@ -323,14 +323,14 @@
|
|||
|
||||
|
||||
#define MPP48_GPIO MPP(48, 0x1, 1, 1, 1)
|
||||
#define MPP48_SATA1_ACTn MPP(48, 0x3, 0, 1, 1)
|
||||
#define MPP48_SATA1_ACTn MPP(48, 0x3, 0, 0, 1)
|
||||
#define MPP48_UNUSED MPP(48, 0x2, 0, 0, 1)
|
||||
|
||||
|
||||
|
||||
#define MPP49_GPIO MPP(49, 0x1, 1, 1, 1)
|
||||
#define MPP49_SATA0_ACTn MPP(49, 0x3, 0, 1, 1)
|
||||
#define MPP49_M_BB MPP(49, 0x4, 1, 0, 1)
|
||||
#define MPP49_SATA0_ACTn MPP(49, 0x3, 0, 0, 1)
|
||||
#define MPP49_M_BB MPP(49, 0x4, 0, 0, 1)
|
||||
#define MPP49_UNUSED MPP(49, 0x2, 0, 0, 1)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -404,7 +404,7 @@ static int name##_set_rate(struct clk *clk, unsigned long rate) \
|
|||
reg = __raw_readl(CLKCTRL_BASE_ADDR + HW_CLKCTRL_##dr); \
|
||||
reg &= ~BM_CLKCTRL_##dr##_DIV; \
|
||||
reg |= div << BP_CLKCTRL_##dr##_DIV; \
|
||||
if (reg | (1 << clk->enable_shift)) { \
|
||||
if (reg & (1 << clk->enable_shift)) { \
|
||||
pr_err("%s: clock is gated\n", __func__); \
|
||||
return -EINVAL; \
|
||||
} \
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
*/
|
||||
#define cpu_is_mx23() ( \
|
||||
machine_is_mx23evk() || \
|
||||
machine_is_stmp378x() || \
|
||||
0)
|
||||
#define cpu_is_mx28() ( \
|
||||
machine_is_mx28evk() || \
|
||||
|
|
|
|||
|
|
@ -326,6 +326,7 @@ config MACH_OMAP4_PANDA
|
|||
config OMAP3_EMU
|
||||
bool "OMAP3 debugging peripherals"
|
||||
depends on ARCH_OMAP3
|
||||
select ARM_AMBA
|
||||
select OC_ETM
|
||||
help
|
||||
Say Y here to enable debugging hardware of omap3
|
||||
|
|
|
|||
|
|
@ -49,8 +49,9 @@
|
|||
#define ETH_KS8851_QUART 138
|
||||
#define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184
|
||||
#define OMAP4_SFH7741_ENABLE_GPIO 188
|
||||
#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */
|
||||
#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
|
||||
#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
|
||||
#define HDMI_GPIO_HPD 63 /* Hotplug detect */
|
||||
|
||||
static const int sdp4430_keymap[] = {
|
||||
KEY(0, 0, KEY_E),
|
||||
|
|
@ -578,12 +579,8 @@ static void __init omap_sfh7741prox_init(void)
|
|||
|
||||
static void sdp4430_hdmi_mux_init(void)
|
||||
{
|
||||
/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
|
||||
omap_mux_init_signal("hdmi_hpd",
|
||||
OMAP_PIN_INPUT_PULLUP);
|
||||
omap_mux_init_signal("hdmi_cec",
|
||||
OMAP_PIN_INPUT_PULLUP);
|
||||
/* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
|
||||
omap_mux_init_signal("hdmi_ddc_scl",
|
||||
OMAP_PIN_INPUT_PULLUP);
|
||||
omap_mux_init_signal("hdmi_ddc_sda",
|
||||
|
|
@ -591,8 +588,9 @@ static void sdp4430_hdmi_mux_init(void)
|
|||
}
|
||||
|
||||
static struct gpio sdp4430_hdmi_gpios[] = {
|
||||
{ HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd" },
|
||||
{ HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
|
||||
{ HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
|
||||
{ HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },
|
||||
};
|
||||
|
||||
static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
|
||||
|
|
@ -609,26 +607,21 @@ static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
|
|||
|
||||
static void sdp4430_panel_disable_hdmi(struct omap_dss_device *dssdev)
|
||||
{
|
||||
gpio_free(HDMI_GPIO_LS_OE);
|
||||
gpio_free(HDMI_GPIO_HPD);
|
||||
gpio_free_array(sdp4430_hdmi_gpios, ARRAY_SIZE(sdp4430_hdmi_gpios));
|
||||
}
|
||||
|
||||
static struct omap_dss_hdmi_data sdp4430_hdmi_data = {
|
||||
.hpd_gpio = HDMI_GPIO_HPD,
|
||||
};
|
||||
|
||||
static struct omap_dss_device sdp4430_hdmi_device = {
|
||||
.name = "hdmi",
|
||||
.driver_name = "hdmi_panel",
|
||||
.type = OMAP_DISPLAY_TYPE_HDMI,
|
||||
.clocks = {
|
||||
.dispc = {
|
||||
.dispc_fclk_src = OMAP_DSS_CLK_SRC_FCK,
|
||||
},
|
||||
.hdmi = {
|
||||
.regn = 15,
|
||||
.regm2 = 1,
|
||||
},
|
||||
},
|
||||
.platform_enable = sdp4430_panel_enable_hdmi,
|
||||
.platform_disable = sdp4430_panel_disable_hdmi,
|
||||
.channel = OMAP_DSS_CHANNEL_DIGIT,
|
||||
.data = &sdp4430_hdmi_data,
|
||||
};
|
||||
|
||||
static struct omap_dss_device *sdp4430_dss_devices[] = {
|
||||
|
|
@ -645,6 +638,10 @@ void omap_4430sdp_display_init(void)
|
|||
{
|
||||
sdp4430_hdmi_mux_init();
|
||||
omap_display_init(&sdp4430_dss_data);
|
||||
|
||||
omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
|
||||
omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
|
||||
omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OMAP_MUX
|
||||
|
|
|
|||
|
|
@ -52,8 +52,9 @@
|
|||
#define GPIO_HUB_NRESET 62
|
||||
#define GPIO_WIFI_PMENA 43
|
||||
#define GPIO_WIFI_IRQ 53
|
||||
#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */
|
||||
#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
|
||||
#define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
|
||||
#define HDMI_GPIO_HPD 63 /* Hotplug detect */
|
||||
|
||||
/* wl127x BT, FM, GPS connectivity chip */
|
||||
static int wl1271_gpios[] = {46, -1, -1};
|
||||
|
|
@ -614,12 +615,8 @@ int __init omap4_panda_dvi_init(void)
|
|||
|
||||
static void omap4_panda_hdmi_mux_init(void)
|
||||
{
|
||||
/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
|
||||
omap_mux_init_signal("hdmi_hpd",
|
||||
OMAP_PIN_INPUT_PULLUP);
|
||||
omap_mux_init_signal("hdmi_cec",
|
||||
OMAP_PIN_INPUT_PULLUP);
|
||||
/* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
|
||||
omap_mux_init_signal("hdmi_ddc_scl",
|
||||
OMAP_PIN_INPUT_PULLUP);
|
||||
omap_mux_init_signal("hdmi_ddc_sda",
|
||||
|
|
@ -627,8 +624,9 @@ static void omap4_panda_hdmi_mux_init(void)
|
|||
}
|
||||
|
||||
static struct gpio panda_hdmi_gpios[] = {
|
||||
{ HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd" },
|
||||
{ HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
|
||||
{ HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
|
||||
{ HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },
|
||||
};
|
||||
|
||||
static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)
|
||||
|
|
@ -645,10 +643,13 @@ static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)
|
|||
|
||||
static void omap4_panda_panel_disable_hdmi(struct omap_dss_device *dssdev)
|
||||
{
|
||||
gpio_free(HDMI_GPIO_LS_OE);
|
||||
gpio_free(HDMI_GPIO_HPD);
|
||||
gpio_free_array(panda_hdmi_gpios, ARRAY_SIZE(panda_hdmi_gpios));
|
||||
}
|
||||
|
||||
static struct omap_dss_hdmi_data omap4_panda_hdmi_data = {
|
||||
.hpd_gpio = HDMI_GPIO_HPD,
|
||||
};
|
||||
|
||||
static struct omap_dss_device omap4_panda_hdmi_device = {
|
||||
.name = "hdmi",
|
||||
.driver_name = "hdmi_panel",
|
||||
|
|
@ -656,6 +657,7 @@ static struct omap_dss_device omap4_panda_hdmi_device = {
|
|||
.platform_enable = omap4_panda_panel_enable_hdmi,
|
||||
.platform_disable = omap4_panda_panel_disable_hdmi,
|
||||
.channel = OMAP_DSS_CHANNEL_DIGIT,
|
||||
.data = &omap4_panda_hdmi_data,
|
||||
};
|
||||
|
||||
static struct omap_dss_device *omap4_panda_dss_devices[] = {
|
||||
|
|
@ -679,6 +681,10 @@ void omap4_panda_display_init(void)
|
|||
|
||||
omap4_panda_hdmi_mux_init();
|
||||
omap_display_init(&omap4_panda_dss_data);
|
||||
|
||||
omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
|
||||
omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
|
||||
omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
|
||||
}
|
||||
|
||||
static void __init omap4_panda_init(void)
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ static struct platform_device rx51_charger_device = {
|
|||
static void __init rx51_charger_init(void)
|
||||
{
|
||||
WARN_ON(gpio_request_one(RX51_USB_TRANSCEIVER_RST_GPIO,
|
||||
GPIOF_OUT_INIT_LOW, "isp1704_reset"));
|
||||
GPIOF_OUT_INIT_HIGH, "isp1704_reset"));
|
||||
|
||||
platform_device_register(&rx51_charger_device);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -528,7 +528,13 @@ int gpmc_cs_configure(int cs, int cmd, int wval)
|
|||
|
||||
case GPMC_CONFIG_DEV_SIZE:
|
||||
regval = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
|
||||
|
||||
/* clear 2 target bits */
|
||||
regval &= ~GPMC_CONFIG1_DEVICESIZE(3);
|
||||
|
||||
/* set the proper value */
|
||||
regval |= GPMC_CONFIG1_DEVICESIZE(wval);
|
||||
|
||||
gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, regval);
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ static irqreturn_t sr_interrupt(int irq, void *data)
|
|||
sr_write_reg(sr_info, ERRCONFIG_V1, status);
|
||||
} else if (sr_info->ip_type == SR_TYPE_V2) {
|
||||
/* Read the status bits */
|
||||
sr_read_reg(sr_info, IRQSTATUS);
|
||||
status = sr_read_reg(sr_info, IRQSTATUS);
|
||||
|
||||
/* Clear them by writing back */
|
||||
sr_write_reg(sr_info, IRQSTATUS, status);
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
#include <mach/hardware.h>
|
||||
#include <mach/orion5x.h>
|
||||
#include <plat/orion_nand.h>
|
||||
#include <plat/ehci-orion.h>
|
||||
#include <plat/time.h>
|
||||
#include <plat/common.h>
|
||||
#include "common.h"
|
||||
|
|
@ -72,7 +73,8 @@ void __init orion5x_map_io(void)
|
|||
void __init orion5x_ehci0_init(void)
|
||||
{
|
||||
orion_ehci_init(&orion5x_mbus_dram_info,
|
||||
ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL);
|
||||
ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL,
|
||||
EHCI_PHY_ORION);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -307,7 +307,7 @@ static inline void balloon3_mmc_init(void) {}
|
|||
/******************************************************************************
|
||||
* USB Gadget
|
||||
******************************************************************************/
|
||||
#if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE)
|
||||
#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE)
|
||||
static void balloon3_udc_command(int cmd)
|
||||
{
|
||||
if (cmd == PXA2XX_UDC_CMD_CONNECT)
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ static void __init colibri_pxa320_init_eth(void)
|
|||
static inline void __init colibri_pxa320_init_eth(void) {}
|
||||
#endif /* CONFIG_AX88796 */
|
||||
|
||||
#if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE)
|
||||
#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE)
|
||||
static struct gpio_vbus_mach_info colibri_pxa320_gpio_vbus_info = {
|
||||
.gpio_vbus = mfp_to_gpio(MFP_PIN_GPIO96),
|
||||
.gpio_pullup = -1,
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ static void __init gumstix_mmc_init(void)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_USB_GADGET_PXA25X
|
||||
#ifdef CONFIG_USB_PXA25X
|
||||
static struct gpio_vbus_mach_info gumstix_udc_info = {
|
||||
.gpio_vbus = GPIO_GUMSTIX_USB_GPIOn,
|
||||
.gpio_pullup = GPIO_GUMSTIX_USB_GPIOx,
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@ extern void __init palm27x_lcd_init(int power,
|
|||
static inline void palm27x_lcd_init(int power, struct pxafb_mode_info *mode) {}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_USB_GADGET_PXA27X) || \
|
||||
defined(CONFIG_USB_GADGET_PXA27X_MODULE)
|
||||
#if defined(CONFIG_USB_PXA27X) || \
|
||||
defined(CONFIG_USB_PXA27X_MODULE)
|
||||
extern void __init palm27x_udc_init(int vbus, int pullup,
|
||||
int vbus_inverted);
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -164,8 +164,8 @@ void __init palm27x_lcd_init(int power, struct pxafb_mode_info *mode)
|
|||
/******************************************************************************
|
||||
* USB Gadget
|
||||
******************************************************************************/
|
||||
#if defined(CONFIG_USB_GADGET_PXA27X) || \
|
||||
defined(CONFIG_USB_GADGET_PXA27X_MODULE)
|
||||
#if defined(CONFIG_USB_PXA27X) || \
|
||||
defined(CONFIG_USB_PXA27X_MODULE)
|
||||
static struct gpio_vbus_mach_info palm27x_udc_info = {
|
||||
.gpio_vbus_inverted = 1,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ static inline void palmtc_mkp_init(void) {}
|
|||
/******************************************************************************
|
||||
* UDC
|
||||
******************************************************************************/
|
||||
#if defined(CONFIG_USB_GADGET_PXA25X)||defined(CONFIG_USB_GADGET_PXA25X_MODULE)
|
||||
#if defined(CONFIG_USB_PXA25X)||defined(CONFIG_USB_PXA25X_MODULE)
|
||||
static struct gpio_vbus_mach_info palmtc_udc_info = {
|
||||
.gpio_vbus = GPIO_NR_PALMTC_USB_DETECT_N,
|
||||
.gpio_vbus_inverted = 1,
|
||||
|
|
|
|||
|
|
@ -343,7 +343,7 @@ static inline void vpac270_uhc_init(void) {}
|
|||
/******************************************************************************
|
||||
* USB Gadget
|
||||
******************************************************************************/
|
||||
#if defined(CONFIG_USB_GADGET_PXA27X)||defined(CONFIG_USB_GADGET_PXA27X_MODULE)
|
||||
#if defined(CONFIG_USB_PXA27X)||defined(CONFIG_USB_PXA27X_MODULE)
|
||||
static struct gpio_vbus_mach_info vpac270_gpio_vbus_info = {
|
||||
.gpio_vbus = GPIO41_VPAC270_UDC_DETECT,
|
||||
.gpio_pullup = -1,
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ config UX500_SOC_COMMON
|
|||
select HAS_MTU
|
||||
select ARM_ERRATA_753970
|
||||
select ARM_ERRATA_754322
|
||||
select ARM_ERRATA_764369
|
||||
|
||||
menu "Ux500 SoC"
|
||||
|
||||
|
|
|
|||
|
|
@ -99,7 +99,27 @@ static void ux500_l2x0_inv_all(void)
|
|||
ux500_cache_sync();
|
||||
}
|
||||
|
||||
static int ux500_l2x0_init(void)
|
||||
static int __init ux500_l2x0_unlock(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
/*
|
||||
* Unlock Data and Instruction Lock if locked. Ux500 U-Boot versions
|
||||
* apparently locks both caches before jumping to the kernel. The
|
||||
* l2x0 core will not touch the unlock registers if the l2x0 is
|
||||
* already enabled, so we do it right here instead. The PL310 has
|
||||
* 8 sets of registers, one per possible CPU.
|
||||
*/
|
||||
for (i = 0; i < 8; i++) {
|
||||
writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_D_BASE +
|
||||
i * L2X0_LOCKDOWN_STRIDE);
|
||||
writel_relaxed(0x0, l2x0_base + L2X0_LOCKDOWN_WAY_I_BASE +
|
||||
i * L2X0_LOCKDOWN_STRIDE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init ux500_l2x0_init(void)
|
||||
{
|
||||
if (cpu_is_u5500())
|
||||
l2x0_base = __io_address(U5500_L2CC_BASE);
|
||||
|
|
@ -108,6 +128,9 @@ static int ux500_l2x0_init(void)
|
|||
else
|
||||
ux500_unknown_soc();
|
||||
|
||||
/* Unlock before init */
|
||||
ux500_l2x0_unlock();
|
||||
|
||||
/* 64KB way size, 8 way associativity, force WA */
|
||||
l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff);
|
||||
|
||||
|
|
|
|||
|
|
@ -344,9 +344,7 @@ __v7_setup:
|
|||
mcreq p15, 0, r10, c15, c0, 1 @ write diagnostic register
|
||||
#endif
|
||||
#ifdef CONFIG_ARM_ERRATA_743622
|
||||
teq r6, #0x20 @ present in r2p0
|
||||
teqne r6, #0x21 @ present in r2p1
|
||||
teqne r6, #0x22 @ present in r2p2
|
||||
teq r5, #0x00200000 @ only present in r2p*
|
||||
mrceq p15, 0, r10, c15, c0, 1 @ read diagnostic register
|
||||
orreq r10, r10, #1 << 6 @ set bit #6
|
||||
mcreq p15, 0, r10, c15, c0, 1 @ write diagnostic register
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
|
|||
return oprofile_perf_init(ops);
|
||||
}
|
||||
|
||||
void __exit oprofile_arch_exit(void)
|
||||
void oprofile_arch_exit(void)
|
||||
{
|
||||
oprofile_perf_exit();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,11 +89,11 @@ typedef u64 iomux_v3_cfg_t;
|
|||
#define PAD_CTL_HYS (1 << 8)
|
||||
|
||||
#define PAD_CTL_PKE (1 << 7)
|
||||
#define PAD_CTL_PUE (1 << 6)
|
||||
#define PAD_CTL_PUS_100K_DOWN (0 << 4)
|
||||
#define PAD_CTL_PUS_47K_UP (1 << 4)
|
||||
#define PAD_CTL_PUS_100K_UP (2 << 4)
|
||||
#define PAD_CTL_PUS_22K_UP (3 << 4)
|
||||
#define PAD_CTL_PUE (1 << 6 | PAD_CTL_PKE)
|
||||
#define PAD_CTL_PUS_100K_DOWN (0 << 4 | PAD_CTL_PUE)
|
||||
#define PAD_CTL_PUS_47K_UP (1 << 4 | PAD_CTL_PUE)
|
||||
#define PAD_CTL_PUS_100K_UP (2 << 4 | PAD_CTL_PUE)
|
||||
#define PAD_CTL_PUS_22K_UP (3 << 4 | PAD_CTL_PUE)
|
||||
|
||||
#define PAD_CTL_ODE (1 << 3)
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,9 @@
|
|||
#define MX3_PWMSAR 0x0C /* PWM Sample Register */
|
||||
#define MX3_PWMPR 0x10 /* PWM Period Register */
|
||||
#define MX3_PWMCR_PRESCALER(x) (((x - 1) & 0xFFF) << 4)
|
||||
#define MX3_PWMCR_DOZEEN (1 << 24)
|
||||
#define MX3_PWMCR_WAITEN (1 << 23)
|
||||
#define MX3_PWMCR_DBGEN (1 << 22)
|
||||
#define MX3_PWMCR_CLKSRC_IPG_HIGH (2 << 16)
|
||||
#define MX3_PWMCR_CLKSRC_IPG (1 << 16)
|
||||
#define MX3_PWMCR_EN (1 << 0)
|
||||
|
|
@ -74,10 +77,21 @@ int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns)
|
|||
do_div(c, period_ns);
|
||||
duty_cycles = c;
|
||||
|
||||
/*
|
||||
* according to imx pwm RM, the real period value should be
|
||||
* PERIOD value in PWMPR plus 2.
|
||||
*/
|
||||
if (period_cycles > 2)
|
||||
period_cycles -= 2;
|
||||
else
|
||||
period_cycles = 0;
|
||||
|
||||
writel(duty_cycles, pwm->mmio_base + MX3_PWMSAR);
|
||||
writel(period_cycles, pwm->mmio_base + MX3_PWMPR);
|
||||
|
||||
cr = MX3_PWMCR_PRESCALER(prescale) | MX3_PWMCR_EN;
|
||||
cr = MX3_PWMCR_PRESCALER(prescale) |
|
||||
MX3_PWMCR_DOZEEN | MX3_PWMCR_WAITEN |
|
||||
MX3_PWMCR_DBGEN | MX3_PWMCR_EN;
|
||||
|
||||
if (cpu_is_mx25())
|
||||
cr |= MX3_PWMCR_CLKSRC_IPG;
|
||||
|
|
|
|||
|
|
@ -806,10 +806,7 @@ void __init orion_xor1_init(unsigned long mapbase_low,
|
|||
/*****************************************************************************
|
||||
* EHCI
|
||||
****************************************************************************/
|
||||
static struct orion_ehci_data orion_ehci_data = {
|
||||
.phy_version = EHCI_PHY_NA,
|
||||
};
|
||||
|
||||
static struct orion_ehci_data orion_ehci_data;
|
||||
static u64 ehci_dmamask = DMA_BIT_MASK(32);
|
||||
|
||||
|
||||
|
|
@ -830,9 +827,11 @@ static struct platform_device orion_ehci = {
|
|||
|
||||
void __init orion_ehci_init(struct mbus_dram_target_info *mbus_dram_info,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq)
|
||||
unsigned long irq,
|
||||
enum orion_ehci_phy_ver phy_version)
|
||||
{
|
||||
orion_ehci_data.dram = mbus_dram_info;
|
||||
orion_ehci_data.phy_version = phy_version;
|
||||
fill_resources(&orion_ehci, orion_ehci_resources, mapbase, SZ_4K - 1,
|
||||
irq);
|
||||
|
||||
|
|
|
|||
|
|
@ -95,7 +95,8 @@ void __init orion_xor1_init(unsigned long mapbase_low,
|
|||
|
||||
void __init orion_ehci_init(struct mbus_dram_target_info *mbus_dram_info,
|
||||
unsigned long mapbase,
|
||||
unsigned long irq);
|
||||
unsigned long irq,
|
||||
enum orion_ehci_phy_ver phy_version);
|
||||
|
||||
void __init orion_ehci_1_init(struct mbus_dram_target_info *mbus_dram_info,
|
||||
unsigned long mapbase,
|
||||
|
|
|
|||
|
|
@ -64,8 +64,7 @@ void __init orion_mpp_conf(unsigned int *mpp_list, unsigned int variant_mask,
|
|||
gpio_mode |= GPIO_INPUT_OK;
|
||||
if (*mpp_list & MPP_OUTPUT_MASK)
|
||||
gpio_mode |= GPIO_OUTPUT_OK;
|
||||
if (sel != 0)
|
||||
gpio_mode = 0;
|
||||
|
||||
orion_gpio_set_valid(num, gpio_mode);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1249,7 +1249,7 @@ static void s3c2410_dma_resume(void)
|
|||
struct s3c2410_dma_chan *cp = s3c2410_chans + dma_channels - 1;
|
||||
int channel;
|
||||
|
||||
for (channel = dma_channels - 1; channel >= 0; cp++, channel--)
|
||||
for (channel = dma_channels - 1; channel >= 0; cp--, channel--)
|
||||
s3c2410_dma_resume_chan(cp);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ config AVR32
|
|||
select HAVE_KPROBES
|
||||
select HAVE_GENERIC_HARDIRQS
|
||||
select GENERIC_IRQ_PROBE
|
||||
select GENERIC_ATOMIC64
|
||||
select HARDIRQS_SW_RESEND
|
||||
select GENERIC_IRQ_SHOW
|
||||
help
|
||||
|
|
|
|||
|
|
@ -107,15 +107,16 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
|
|||
return -EFAULT;
|
||||
|
||||
{
|
||||
register unsigned long r8 __asm ("r8") = 0;
|
||||
register unsigned long r8 __asm ("r8");
|
||||
unsigned long prev;
|
||||
__asm__ __volatile__(
|
||||
" mf;; \n"
|
||||
" mov ar.ccv=%3;; \n"
|
||||
"[1:] cmpxchg4.acq %0=[%1],%2,ar.ccv \n"
|
||||
" mov %0=r0 \n"
|
||||
" mov ar.ccv=%4;; \n"
|
||||
"[1:] cmpxchg4.acq %1=[%2],%3,ar.ccv \n"
|
||||
" .xdata4 \"__ex_table\", 1b-., 2f-. \n"
|
||||
"[2:]"
|
||||
: "=r" (prev)
|
||||
: "=r" (r8), "=r" (prev)
|
||||
: "r" (uaddr), "r" (newval),
|
||||
"rO" ((long) (unsigned) oldval)
|
||||
: "memory");
|
||||
|
|
|
|||
|
|
@ -429,22 +429,24 @@ static u32 __devinitdata pxm_flag[PXM_FLAG_LEN];
|
|||
static struct acpi_table_slit __initdata *slit_table;
|
||||
cpumask_t early_cpu_possible_map = CPU_MASK_NONE;
|
||||
|
||||
static int get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
|
||||
static int __init
|
||||
get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
|
||||
{
|
||||
int pxm;
|
||||
|
||||
pxm = pa->proximity_domain_lo;
|
||||
if (ia64_platform_is("sn2"))
|
||||
if (ia64_platform_is("sn2") || acpi_srat_revision >= 2)
|
||||
pxm += pa->proximity_domain_hi[0] << 8;
|
||||
return pxm;
|
||||
}
|
||||
|
||||
static int get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
|
||||
static int __init
|
||||
get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
|
||||
{
|
||||
int pxm;
|
||||
|
||||
pxm = ma->proximity_domain;
|
||||
if (!ia64_platform_is("sn2"))
|
||||
if (!ia64_platform_is("sn2") && acpi_srat_revision <= 1)
|
||||
pxm &= 0xff;
|
||||
|
||||
return pxm;
|
||||
|
|
|
|||
|
|
@ -950,6 +950,9 @@ int __init mac_platform_init(void)
|
|||
{
|
||||
u8 *swim_base;
|
||||
|
||||
if (!MACH_IS_MAC)
|
||||
return -ENODEV;
|
||||
|
||||
/*
|
||||
* Serial devices
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
#ifdef __powerpc64__
|
||||
|
||||
extern char _end[];
|
||||
extern char __end_interrupts[];
|
||||
|
||||
static inline int in_kernel_text(unsigned long addr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
#endif /* CONFIG_SPARSEMEM */
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
extern void create_section_mapping(unsigned long start, unsigned long end);
|
||||
extern int create_section_mapping(unsigned long start, unsigned long end);
|
||||
extern int remove_section_mapping(unsigned long start, unsigned long end);
|
||||
#ifdef CONFIG_NUMA
|
||||
extern int hot_add_scn_to_nid(unsigned long scn_addr);
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
extern unsigned int __start___lwsync_fixup, __stop___lwsync_fixup;
|
||||
extern void do_lwsync_fixups(unsigned long value, void *fixup_start,
|
||||
void *fixup_end);
|
||||
extern void do_final_fixups(void);
|
||||
|
||||
static inline void eieio(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -219,5 +219,7 @@ DECLARE_PER_CPU(struct cpu_usage, cpu_usage_array);
|
|||
extern void secondary_cpu_time_init(void);
|
||||
extern void iSeries_time_init_early(void);
|
||||
|
||||
extern void decrementer_check_overflow(void);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
#endif /* __POWERPC_TIME_H */
|
||||
|
|
|
|||
|
|
@ -170,16 +170,13 @@ notrace void arch_local_irq_restore(unsigned long en)
|
|||
*/
|
||||
local_paca->hard_enabled = en;
|
||||
|
||||
#ifndef CONFIG_BOOKE
|
||||
/* On server, re-trigger the decrementer if it went negative since
|
||||
* some processors only trigger on edge transitions of the sign bit.
|
||||
*
|
||||
* BookE has a level sensitive decrementer (latches in TSR) so we
|
||||
* don't need that
|
||||
/*
|
||||
* Trigger the decrementer if we have a pending event. Some processors
|
||||
* only trigger on edge transitions of the sign bit. We might also
|
||||
* have disabled interrupts long enough that the decrementer wrapped
|
||||
* to positive.
|
||||
*/
|
||||
if ((int)mfspr(SPRN_DEC) < 0)
|
||||
mtspr(SPRN_DEC, 1);
|
||||
#endif /* CONFIG_BOOKE */
|
||||
decrementer_check_overflow();
|
||||
|
||||
/*
|
||||
* Force the delivery of pending soft-disabled interrupts on PS3.
|
||||
|
|
|
|||
|
|
@ -131,7 +131,6 @@ static void kvm_patch_ins_b(u32 *inst, int addr)
|
|||
/* On relocatable kernels interrupts handlers and our code
|
||||
can be in different regions, so we don't patch them */
|
||||
|
||||
extern u32 __end_interrupts;
|
||||
if ((ulong)inst < (ulong)&__end_interrupts)
|
||||
return;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -865,6 +865,7 @@ static void power_pmu_start(struct perf_event *event, int ef_flags)
|
|||
{
|
||||
unsigned long flags;
|
||||
s64 left;
|
||||
unsigned long val;
|
||||
|
||||
if (!event->hw.idx || !event->hw.sample_period)
|
||||
return;
|
||||
|
|
@ -880,7 +881,12 @@ static void power_pmu_start(struct perf_event *event, int ef_flags)
|
|||
|
||||
event->hw.state = 0;
|
||||
left = local64_read(&event->hw.period_left);
|
||||
write_pmc(event->hw.idx, left);
|
||||
|
||||
val = 0;
|
||||
if (left < 0x80000000L)
|
||||
val = 0x80000000L - left;
|
||||
|
||||
write_pmc(event->hw.idx, val);
|
||||
|
||||
perf_event_update_userpage(event);
|
||||
perf_pmu_enable(event->pmu);
|
||||
|
|
|
|||
|
|
@ -107,6 +107,8 @@ notrace unsigned long __init early_init(unsigned long dt_ptr)
|
|||
PTRRELOC(&__start___lwsync_fixup),
|
||||
PTRRELOC(&__stop___lwsync_fixup));
|
||||
|
||||
do_final_fixups();
|
||||
|
||||
return KERNELBASE + offset;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -352,6 +352,7 @@ void __init setup_system(void)
|
|||
&__start___fw_ftr_fixup, &__stop___fw_ftr_fixup);
|
||||
do_lwsync_fixups(cur_cpu_spec->cpu_features,
|
||||
&__start___lwsync_fixup, &__stop___lwsync_fixup);
|
||||
do_final_fixups();
|
||||
|
||||
/*
|
||||
* Unflatten the device-tree passed by prom_init or kexec
|
||||
|
|
|
|||
|
|
@ -889,6 +889,15 @@ static void __init clocksource_init(void)
|
|||
clock->name, clock->mult, clock->shift);
|
||||
}
|
||||
|
||||
void decrementer_check_overflow(void)
|
||||
{
|
||||
u64 now = get_tb_or_rtc();
|
||||
struct decrementer_clock *decrementer = &__get_cpu_var(decrementers);
|
||||
|
||||
if (now >= decrementer->next_tb)
|
||||
set_dec(1);
|
||||
}
|
||||
|
||||
static int decrementer_set_next_event(unsigned long evt,
|
||||
struct clock_event_device *dev)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
#include <linux/init.h>
|
||||
#include <asm/cputable.h>
|
||||
#include <asm/code-patching.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/sections.h>
|
||||
|
||||
|
||||
struct fixup_entry {
|
||||
|
|
@ -128,6 +130,27 @@ void do_lwsync_fixups(unsigned long value, void *fixup_start, void *fixup_end)
|
|||
}
|
||||
}
|
||||
|
||||
void do_final_fixups(void)
|
||||
{
|
||||
#if defined(CONFIG_PPC64) && defined(CONFIG_RELOCATABLE)
|
||||
int *src, *dest;
|
||||
unsigned long length;
|
||||
|
||||
if (PHYSICAL_START == 0)
|
||||
return;
|
||||
|
||||
src = (int *)(KERNELBASE + PHYSICAL_START);
|
||||
dest = (int *)KERNELBASE;
|
||||
length = (__end_interrupts - _stext) / sizeof(int);
|
||||
|
||||
while (length--) {
|
||||
patch_instruction(dest, *src);
|
||||
src++;
|
||||
dest++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef CONFIG_FTR_FIXUP_SELFTEST
|
||||
|
||||
#define check(x) \
|
||||
|
|
|
|||
|
|
@ -16,16 +16,6 @@
|
|||
|
||||
#ifdef __HAVE_ARCH_PTE_SPECIAL
|
||||
|
||||
static inline void get_huge_page_tail(struct page *page)
|
||||
{
|
||||
/*
|
||||
* __split_huge_page_refcount() cannot run
|
||||
* from under us.
|
||||
*/
|
||||
VM_BUG_ON(atomic_read(&page->_count) < 0);
|
||||
atomic_inc(&page->_count);
|
||||
}
|
||||
|
||||
/*
|
||||
* The performance critical leaf functions are made noinline otherwise gcc
|
||||
* inlines everything into a single function which results in too much
|
||||
|
|
@ -57,8 +47,6 @@ static noinline int gup_pte_range(pmd_t pmd, unsigned long addr,
|
|||
put_page(page);
|
||||
return 0;
|
||||
}
|
||||
if (PageTail(page))
|
||||
get_huge_page_tail(page);
|
||||
pages[*nr] = page;
|
||||
(*nr)++;
|
||||
|
||||
|
|
|
|||
|
|
@ -534,11 +534,11 @@ static unsigned long __init htab_get_table_size(void)
|
|||
}
|
||||
|
||||
#ifdef CONFIG_MEMORY_HOTPLUG
|
||||
void create_section_mapping(unsigned long start, unsigned long end)
|
||||
int create_section_mapping(unsigned long start, unsigned long end)
|
||||
{
|
||||
BUG_ON(htab_bolt_mapping(start, end, __pa(start),
|
||||
return htab_bolt_mapping(start, end, __pa(start),
|
||||
pgprot_val(PAGE_KERNEL), mmu_linear_psize,
|
||||
mmu_kernel_ssize));
|
||||
mmu_kernel_ssize);
|
||||
}
|
||||
|
||||
int remove_section_mapping(unsigned long start, unsigned long end)
|
||||
|
|
|
|||
|
|
@ -390,7 +390,7 @@ static noinline int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long add
|
|||
{
|
||||
unsigned long mask;
|
||||
unsigned long pte_end;
|
||||
struct page *head, *page;
|
||||
struct page *head, *page, *tail;
|
||||
pte_t pte;
|
||||
int refs;
|
||||
|
||||
|
|
@ -413,6 +413,7 @@ static noinline int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long add
|
|||
head = pte_page(pte);
|
||||
|
||||
page = head + ((addr & (sz-1)) >> PAGE_SHIFT);
|
||||
tail = page;
|
||||
do {
|
||||
VM_BUG_ON(compound_head(page) != head);
|
||||
pages[*nr] = page;
|
||||
|
|
@ -428,10 +429,20 @@ static noinline int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long add
|
|||
|
||||
if (unlikely(pte_val(pte) != pte_val(*ptep))) {
|
||||
/* Could be optimized better */
|
||||
while (*nr) {
|
||||
put_page(page);
|
||||
(*nr)--;
|
||||
}
|
||||
*nr -= refs;
|
||||
while (refs--)
|
||||
put_page(head);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Any tail page need their mapcount reference taken before we
|
||||
* return.
|
||||
*/
|
||||
while (refs--) {
|
||||
if (PageTail(tail))
|
||||
get_huge_page_tail(tail);
|
||||
tail++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
|
|
|||
|
|
@ -123,7 +123,8 @@ int arch_add_memory(int nid, u64 start, u64 size)
|
|||
pgdata = NODE_DATA(nid);
|
||||
|
||||
start = (unsigned long)__va(start);
|
||||
create_section_mapping(start, start + size);
|
||||
if (create_section_mapping(start, start + size))
|
||||
return -EINVAL;
|
||||
|
||||
/* this should work for most non-highmem platforms */
|
||||
zone = pgdata->node_zones;
|
||||
|
|
|
|||
|
|
@ -136,8 +136,8 @@ int use_cop(unsigned long acop, struct mm_struct *mm)
|
|||
if (!mm || !acop)
|
||||
return -EINVAL;
|
||||
|
||||
/* We need to make sure mm_users doesn't change */
|
||||
down_read(&mm->mmap_sem);
|
||||
/* The page_table_lock ensures mm_users won't change under us */
|
||||
spin_lock(&mm->page_table_lock);
|
||||
spin_lock(mm->context.cop_lockp);
|
||||
|
||||
if (mm->context.cop_pid == COP_PID_NONE) {
|
||||
|
|
@ -164,7 +164,7 @@ int use_cop(unsigned long acop, struct mm_struct *mm)
|
|||
|
||||
out:
|
||||
spin_unlock(mm->context.cop_lockp);
|
||||
up_read(&mm->mmap_sem);
|
||||
spin_unlock(&mm->page_table_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
@ -185,8 +185,8 @@ void drop_cop(unsigned long acop, struct mm_struct *mm)
|
|||
if (WARN_ON_ONCE(!mm))
|
||||
return;
|
||||
|
||||
/* We need to make sure mm_users doesn't change */
|
||||
down_read(&mm->mmap_sem);
|
||||
/* The page_table_lock ensures mm_users won't change under us */
|
||||
spin_lock(&mm->page_table_lock);
|
||||
spin_lock(mm->context.cop_lockp);
|
||||
|
||||
mm->context.acop &= ~acop;
|
||||
|
|
@ -213,7 +213,7 @@ void drop_cop(unsigned long acop, struct mm_struct *mm)
|
|||
}
|
||||
|
||||
spin_unlock(mm->context.cop_lockp);
|
||||
up_read(&mm->mmap_sem);
|
||||
spin_unlock(&mm->page_table_lock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(drop_cop);
|
||||
|
||||
|
|
|
|||
|
|
@ -1214,11 +1214,12 @@ int hot_add_node_scn_to_nid(unsigned long scn_addr)
|
|||
break;
|
||||
}
|
||||
|
||||
of_node_put(memory);
|
||||
if (nid >= 0)
|
||||
break;
|
||||
}
|
||||
|
||||
of_node_put(memory);
|
||||
|
||||
return nid;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -414,7 +414,7 @@ static struct irqaction psurge_irqaction = {
|
|||
|
||||
static void __init smp_psurge_setup_cpu(int cpu_nr)
|
||||
{
|
||||
if (cpu_nr != 0)
|
||||
if (cpu_nr != 0 || !psurge_start)
|
||||
return;
|
||||
|
||||
/* reset the entry point so if we get another intr we won't
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ struct ps3_private {
|
|||
struct ps3_bmp bmp __attribute__ ((aligned (PS3_BMP_MINALIGN)));
|
||||
u64 ppe_id;
|
||||
u64 thread_id;
|
||||
unsigned long ipi_mask;
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU(struct ps3_private, ps3_private);
|
||||
|
|
@ -144,7 +145,11 @@ static void ps3_chip_unmask(struct irq_data *d)
|
|||
static void ps3_chip_eoi(struct irq_data *d)
|
||||
{
|
||||
const struct ps3_private *pd = irq_data_get_irq_chip_data(d);
|
||||
lv1_end_of_interrupt_ext(pd->ppe_id, pd->thread_id, d->irq);
|
||||
|
||||
/* non-IPIs are EOIed here. */
|
||||
|
||||
if (!test_bit(63 - d->irq, &pd->ipi_mask))
|
||||
lv1_end_of_interrupt_ext(pd->ppe_id, pd->thread_id, d->irq);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -691,6 +696,16 @@ void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq)
|
|||
cpu, virq, pd->bmp.ipi_debug_brk_mask);
|
||||
}
|
||||
|
||||
void __init ps3_register_ipi_irq(unsigned int cpu, unsigned int virq)
|
||||
{
|
||||
struct ps3_private *pd = &per_cpu(ps3_private, cpu);
|
||||
|
||||
set_bit(63 - virq, &pd->ipi_mask);
|
||||
|
||||
DBG("%s:%d: cpu %u, virq %u, ipi_mask %lxh\n", __func__, __LINE__,
|
||||
cpu, virq, pd->ipi_mask);
|
||||
}
|
||||
|
||||
static unsigned int ps3_get_irq(void)
|
||||
{
|
||||
struct ps3_private *pd = &__get_cpu_var(ps3_private);
|
||||
|
|
@ -720,6 +735,12 @@ static unsigned int ps3_get_irq(void)
|
|||
BUG();
|
||||
}
|
||||
#endif
|
||||
|
||||
/* IPIs are EOIed here. */
|
||||
|
||||
if (test_bit(63 - plug, &pd->ipi_mask))
|
||||
lv1_end_of_interrupt_ext(pd->ppe_id, pd->thread_id, plug);
|
||||
|
||||
return plug;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ void ps3_mm_shutdown(void);
|
|||
void ps3_init_IRQ(void);
|
||||
void ps3_shutdown_IRQ(int cpu);
|
||||
void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq);
|
||||
void __init ps3_register_ipi_irq(unsigned int cpu, unsigned int virq);
|
||||
|
||||
/* smp */
|
||||
|
||||
|
|
|
|||
|
|
@ -94,6 +94,8 @@ static void __init ps3_smp_setup_cpu(int cpu)
|
|||
|
||||
if (result)
|
||||
virqs[i] = NO_IRQ;
|
||||
else
|
||||
ps3_register_ipi_irq(cpu, virqs[i]);
|
||||
}
|
||||
|
||||
ps3_register_ipi_debug_brk(cpu, virqs[PPC_MSG_DEBUGGER_BREAK]);
|
||||
|
|
|
|||
|
|
@ -112,6 +112,7 @@ void dlpar_free_cc_nodes(struct device_node *dn)
|
|||
dlpar_free_one_cc_node(dn);
|
||||
}
|
||||
|
||||
#define COMPLETE 0
|
||||
#define NEXT_SIBLING 1
|
||||
#define NEXT_CHILD 2
|
||||
#define NEXT_PROPERTY 3
|
||||
|
|
@ -158,6 +159,9 @@ struct device_node *dlpar_configure_connector(u32 drc_index)
|
|||
spin_unlock(&rtas_data_buf_lock);
|
||||
|
||||
switch (rc) {
|
||||
case COMPLETE:
|
||||
break;
|
||||
|
||||
case NEXT_SIBLING:
|
||||
dn = dlpar_parse_cc_node(ccwa);
|
||||
if (!dn)
|
||||
|
|
|
|||
|
|
@ -1338,7 +1338,7 @@ static const struct file_operations proc_eeh_operations = {
|
|||
static int __init eeh_init_proc(void)
|
||||
{
|
||||
if (machine_is(pseries))
|
||||
proc_create("ppc64/eeh", 0, NULL, &proc_eeh_operations);
|
||||
proc_create("powerpc/eeh", 0, NULL, &proc_eeh_operations);
|
||||
return 0;
|
||||
}
|
||||
__initcall(eeh_init_proc);
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ static void probe_hcall_entry(void *ignored, unsigned long opcode, unsigned long
|
|||
if (opcode > MAX_HCALL_OPCODE)
|
||||
return;
|
||||
|
||||
h = &get_cpu_var(hcall_stats)[opcode / 4];
|
||||
h = &__get_cpu_var(hcall_stats)[opcode / 4];
|
||||
h->tb_start = mftb();
|
||||
h->purr_start = mfspr(SPRN_PURR);
|
||||
}
|
||||
|
|
@ -126,8 +126,6 @@ static void probe_hcall_exit(void *ignored, unsigned long opcode, unsigned long
|
|||
h->num_calls++;
|
||||
h->tb_total += mftb() - h->tb_start;
|
||||
h->purr_total += mfspr(SPRN_PURR) - h->purr_start;
|
||||
|
||||
put_cpu_var(hcall_stats);
|
||||
}
|
||||
|
||||
static int __init hcall_inst_init(void)
|
||||
|
|
|
|||
|
|
@ -745,6 +745,7 @@ void __trace_hcall_entry(unsigned long opcode, unsigned long *args)
|
|||
goto out;
|
||||
|
||||
(*depth)++;
|
||||
preempt_disable();
|
||||
trace_hcall_entry(opcode, args);
|
||||
(*depth)--;
|
||||
|
||||
|
|
@ -767,6 +768,7 @@ void __trace_hcall_exit(long opcode, unsigned long retval,
|
|||
|
||||
(*depth)++;
|
||||
trace_hcall_exit(opcode, retval, retbuf);
|
||||
preempt_enable();
|
||||
(*depth)--;
|
||||
|
||||
out:
|
||||
|
|
|
|||
|
|
@ -89,7 +89,6 @@ config S390
|
|||
select HAVE_GET_USER_PAGES_FAST
|
||||
select HAVE_ARCH_MUTEX_CPU_RELAX
|
||||
select HAVE_ARCH_JUMP_LABEL if !MARCH_G5
|
||||
select HAVE_RCU_TABLE_FREE if SMP
|
||||
select ARCH_INLINE_SPIN_TRYLOCK
|
||||
select ARCH_INLINE_SPIN_TRYLOCK_BH
|
||||
select ARCH_INLINE_SPIN_LOCK
|
||||
|
|
@ -228,6 +227,9 @@ config COMPAT
|
|||
config SYSVIPC_COMPAT
|
||||
def_bool y if COMPAT && SYSVIPC
|
||||
|
||||
config KEYS_COMPAT
|
||||
def_bool y if COMPAT && KEYS
|
||||
|
||||
config AUDIT_ARCH
|
||||
def_bool y
|
||||
|
||||
|
|
|
|||
|
|
@ -172,13 +172,6 @@ static inline int is_compat_task(void)
|
|||
return is_32bit_task();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline int is_compat_task(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static inline void __user *arch_compat_alloc_user_space(long len)
|
||||
|
|
|
|||
|
|
@ -22,10 +22,7 @@ void crst_table_free(struct mm_struct *, unsigned long *);
|
|||
|
||||
unsigned long *page_table_alloc(struct mm_struct *);
|
||||
void page_table_free(struct mm_struct *, unsigned long *);
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
void page_table_free_rcu(struct mmu_gather *, unsigned long *);
|
||||
void __tlb_remove_table(void *_table);
|
||||
#endif
|
||||
|
||||
static inline void clear_table(unsigned long *s, unsigned long val, size_t n)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -30,14 +30,10 @@
|
|||
|
||||
struct mmu_gather {
|
||||
struct mm_struct *mm;
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
struct mmu_table_batch *batch;
|
||||
#endif
|
||||
unsigned int fullmm;
|
||||
unsigned int need_flush;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
struct mmu_table_batch {
|
||||
struct rcu_head rcu;
|
||||
unsigned int nr;
|
||||
|
|
@ -49,7 +45,6 @@ struct mmu_table_batch {
|
|||
|
||||
extern void tlb_table_flush(struct mmu_gather *tlb);
|
||||
extern void tlb_remove_table(struct mmu_gather *tlb, void *table);
|
||||
#endif
|
||||
|
||||
static inline void tlb_gather_mmu(struct mmu_gather *tlb,
|
||||
struct mm_struct *mm,
|
||||
|
|
@ -57,29 +52,20 @@ static inline void tlb_gather_mmu(struct mmu_gather *tlb,
|
|||
{
|
||||
tlb->mm = mm;
|
||||
tlb->fullmm = full_mm_flush;
|
||||
tlb->need_flush = 0;
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
tlb->batch = NULL;
|
||||
#endif
|
||||
if (tlb->fullmm)
|
||||
__tlb_flush_mm(mm);
|
||||
}
|
||||
|
||||
static inline void tlb_flush_mmu(struct mmu_gather *tlb)
|
||||
{
|
||||
if (!tlb->need_flush)
|
||||
return;
|
||||
tlb->need_flush = 0;
|
||||
__tlb_flush_mm(tlb->mm);
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
tlb_table_flush(tlb);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void tlb_finish_mmu(struct mmu_gather *tlb,
|
||||
unsigned long start, unsigned long end)
|
||||
{
|
||||
tlb_flush_mmu(tlb);
|
||||
tlb_table_flush(tlb);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -105,10 +91,8 @@ static inline void tlb_remove_page(struct mmu_gather *tlb, struct page *page)
|
|||
static inline void pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
|
||||
unsigned long address)
|
||||
{
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
if (!tlb->fullmm)
|
||||
return page_table_free_rcu(tlb, (unsigned long *) pte);
|
||||
#endif
|
||||
page_table_free(tlb->mm, (unsigned long *) pte);
|
||||
}
|
||||
|
||||
|
|
@ -125,10 +109,8 @@ static inline void pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
|
|||
#ifdef __s390x__
|
||||
if (tlb->mm->context.asce_limit <= (1UL << 31))
|
||||
return;
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
if (!tlb->fullmm)
|
||||
return tlb_remove_table(tlb, pmd);
|
||||
#endif
|
||||
crst_table_free(tlb->mm, (unsigned long *) pmd);
|
||||
#endif
|
||||
}
|
||||
|
|
@ -146,10 +128,8 @@ static inline void pud_free_tlb(struct mmu_gather *tlb, pud_t *pud,
|
|||
#ifdef __s390x__
|
||||
if (tlb->mm->context.asce_limit <= (1UL << 42))
|
||||
return;
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
if (!tlb->fullmm)
|
||||
return tlb_remove_table(tlb, pud);
|
||||
#endif
|
||||
crst_table_free(tlb->mm, (unsigned long *) pud);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@
|
|||
#include <asm/irq.h>
|
||||
#include <asm/timer.h>
|
||||
#include <asm/nmi.h>
|
||||
#include <asm/compat.h>
|
||||
#include <asm/smp.h>
|
||||
#include "entry.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -20,8 +20,8 @@
|
|||
#include <linux/regset.h>
|
||||
#include <linux/tracehook.h>
|
||||
#include <linux/seccomp.h>
|
||||
#include <linux/compat.h>
|
||||
#include <trace/syscall.h>
|
||||
#include <asm/compat.h>
|
||||
#include <asm/segment.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/pgtable.h>
|
||||
|
|
@ -47,29 +47,31 @@ enum s390_regset {
|
|||
|
||||
void update_per_regs(struct task_struct *task)
|
||||
{
|
||||
static const struct per_regs per_single_step = {
|
||||
.control = PER_EVENT_IFETCH,
|
||||
.start = 0,
|
||||
.end = PSW_ADDR_INSN,
|
||||
};
|
||||
struct pt_regs *regs = task_pt_regs(task);
|
||||
struct thread_struct *thread = &task->thread;
|
||||
const struct per_regs *new;
|
||||
struct per_regs old;
|
||||
struct per_regs old, new;
|
||||
|
||||
/* TIF_SINGLE_STEP overrides the user specified PER registers. */
|
||||
new = test_tsk_thread_flag(task, TIF_SINGLE_STEP) ?
|
||||
&per_single_step : &thread->per_user;
|
||||
/* Copy user specified PER registers */
|
||||
new.control = thread->per_user.control;
|
||||
new.start = thread->per_user.start;
|
||||
new.end = thread->per_user.end;
|
||||
|
||||
/* merge TIF_SINGLE_STEP into user specified PER registers. */
|
||||
if (test_tsk_thread_flag(task, TIF_SINGLE_STEP)) {
|
||||
new.control |= PER_EVENT_IFETCH;
|
||||
new.start = 0;
|
||||
new.end = PSW_ADDR_INSN;
|
||||
}
|
||||
|
||||
/* Take care of the PER enablement bit in the PSW. */
|
||||
if (!(new->control & PER_EVENT_MASK)) {
|
||||
if (!(new.control & PER_EVENT_MASK)) {
|
||||
regs->psw.mask &= ~PSW_MASK_PER;
|
||||
return;
|
||||
}
|
||||
regs->psw.mask |= PSW_MASK_PER;
|
||||
__ctl_store(old, 9, 11);
|
||||
if (memcmp(new, &old, sizeof(struct per_regs)) != 0)
|
||||
__ctl_load(*new, 9, 11);
|
||||
if (memcmp(&new, &old, sizeof(struct per_regs)) != 0)
|
||||
__ctl_load(new, 9, 11);
|
||||
}
|
||||
|
||||
void user_enable_single_step(struct task_struct *task)
|
||||
|
|
@ -895,6 +897,14 @@ static int s390_last_break_get(struct task_struct *target,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int s390_last_break_set(struct task_struct *target,
|
||||
const struct user_regset *regset,
|
||||
unsigned int pos, unsigned int count,
|
||||
const void *kbuf, const void __user *ubuf)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static const struct user_regset s390_regsets[] = {
|
||||
|
|
@ -921,6 +931,7 @@ static const struct user_regset s390_regsets[] = {
|
|||
.size = sizeof(long),
|
||||
.align = sizeof(long),
|
||||
.get = s390_last_break_get,
|
||||
.set = s390_last_break_set,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
|
@ -1078,6 +1089,14 @@ static int s390_compat_last_break_get(struct task_struct *target,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int s390_compat_last_break_set(struct task_struct *target,
|
||||
const struct user_regset *regset,
|
||||
unsigned int pos, unsigned int count,
|
||||
const void *kbuf, const void __user *ubuf)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct user_regset s390_compat_regsets[] = {
|
||||
[REGSET_GENERAL] = {
|
||||
.core_note_type = NT_PRSTATUS,
|
||||
|
|
@ -1101,6 +1120,7 @@ static const struct user_regset s390_compat_regsets[] = {
|
|||
.size = sizeof(long),
|
||||
.align = sizeof(long),
|
||||
.get = s390_compat_last_break_get,
|
||||
.set = s390_compat_last_break_set,
|
||||
},
|
||||
[REGSET_GENERAL_EXTENDED] = {
|
||||
.core_note_type = NT_S390_HIGH_GPRS,
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#include <linux/reboot.h>
|
||||
#include <linux/topology.h>
|
||||
#include <linux/ftrace.h>
|
||||
#include <linux/compat.h>
|
||||
|
||||
#include <asm/ipl.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
|
|
|||
|
|
@ -301,11 +301,17 @@ int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu)
|
|||
struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
|
||||
unsigned int id)
|
||||
{
|
||||
struct kvm_vcpu *vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL);
|
||||
int rc = -ENOMEM;
|
||||
struct kvm_vcpu *vcpu;
|
||||
int rc = -EINVAL;
|
||||
|
||||
if (id >= KVM_MAX_VCPUS)
|
||||
goto out;
|
||||
|
||||
rc = -ENOMEM;
|
||||
|
||||
vcpu = kzalloc(sizeof(struct kvm_vcpu), GFP_KERNEL);
|
||||
if (!vcpu)
|
||||
goto out_nomem;
|
||||
goto out;
|
||||
|
||||
vcpu->arch.sie_block = (struct kvm_s390_sie_block *)
|
||||
get_zeroed_page(GFP_KERNEL);
|
||||
|
|
@ -341,7 +347,7 @@ struct kvm_vcpu *kvm_arch_vcpu_create(struct kvm *kvm,
|
|||
free_page((unsigned long)(vcpu->arch.sie_block));
|
||||
out_free_cpu:
|
||||
kfree(vcpu);
|
||||
out_nomem:
|
||||
out:
|
||||
return ERR_PTR(rc);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@
|
|||
#include <asm/pgtable.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/compat.h>
|
||||
#include "../kernel/entry.h"
|
||||
|
||||
#ifndef CONFIG_64BIT
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ static inline int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
|
|||
unsigned long end, int write, struct page **pages, int *nr)
|
||||
{
|
||||
unsigned long mask, result;
|
||||
struct page *head, *page;
|
||||
struct page *head, *page, *tail;
|
||||
int refs;
|
||||
|
||||
result = write ? 0 : _SEGMENT_ENTRY_RO;
|
||||
|
|
@ -64,6 +64,7 @@ static inline int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
|
|||
refs = 0;
|
||||
head = pmd_page(pmd);
|
||||
page = head + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
|
||||
tail = page;
|
||||
do {
|
||||
VM_BUG_ON(compound_head(page) != head);
|
||||
pages[*nr] = page;
|
||||
|
|
@ -81,6 +82,17 @@ static inline int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
|
|||
*nr -= refs;
|
||||
while (refs--)
|
||||
put_page(head);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Any tail page need their mapcount reference taken before we
|
||||
* return.
|
||||
*/
|
||||
while (refs--) {
|
||||
if (PageTail(tail))
|
||||
get_huge_page_tail(tail);
|
||||
tail++;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@
|
|||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/random.h>
|
||||
#include <linux/compat.h>
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/compat.h>
|
||||
|
||||
static unsigned long stack_maxrandom_size(void)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -243,8 +243,6 @@ void page_table_free(struct mm_struct *mm, unsigned long *table)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_RCU_TABLE_FREE
|
||||
|
||||
static void __page_table_free_rcu(void *table, unsigned bit)
|
||||
{
|
||||
struct page *page;
|
||||
|
|
@ -291,8 +289,9 @@ void page_table_free_rcu(struct mmu_gather *tlb, unsigned long *table)
|
|||
|
||||
void __tlb_remove_table(void *_table)
|
||||
{
|
||||
void *table = (void *)((unsigned long) _table & PAGE_MASK);
|
||||
unsigned type = (unsigned long) _table & ~PAGE_MASK;
|
||||
const unsigned long mask = (FRAG_MASK << 4) | FRAG_MASK;
|
||||
void *table = (void *)((unsigned long) _table & ~mask);
|
||||
unsigned type = (unsigned long) _table & mask;
|
||||
|
||||
if (type)
|
||||
__page_table_free_rcu(table, type);
|
||||
|
|
@ -300,7 +299,66 @@ void __tlb_remove_table(void *_table)
|
|||
free_pages((unsigned long) table, ALLOC_ORDER);
|
||||
}
|
||||
|
||||
#endif
|
||||
static void tlb_remove_table_smp_sync(void *arg)
|
||||
{
|
||||
/* Simply deliver the interrupt */
|
||||
}
|
||||
|
||||
static void tlb_remove_table_one(void *table)
|
||||
{
|
||||
/*
|
||||
* This isn't an RCU grace period and hence the page-tables cannot be
|
||||
* assumed to be actually RCU-freed.
|
||||
*
|
||||
* It is however sufficient for software page-table walkers that rely
|
||||
* on IRQ disabling. See the comment near struct mmu_table_batch.
|
||||
*/
|
||||
smp_call_function(tlb_remove_table_smp_sync, NULL, 1);
|
||||
__tlb_remove_table(table);
|
||||
}
|
||||
|
||||
static void tlb_remove_table_rcu(struct rcu_head *head)
|
||||
{
|
||||
struct mmu_table_batch *batch;
|
||||
int i;
|
||||
|
||||
batch = container_of(head, struct mmu_table_batch, rcu);
|
||||
|
||||
for (i = 0; i < batch->nr; i++)
|
||||
__tlb_remove_table(batch->tables[i]);
|
||||
|
||||
free_page((unsigned long)batch);
|
||||
}
|
||||
|
||||
void tlb_table_flush(struct mmu_gather *tlb)
|
||||
{
|
||||
struct mmu_table_batch **batch = &tlb->batch;
|
||||
|
||||
if (*batch) {
|
||||
__tlb_flush_mm(tlb->mm);
|
||||
call_rcu_sched(&(*batch)->rcu, tlb_remove_table_rcu);
|
||||
*batch = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void tlb_remove_table(struct mmu_gather *tlb, void *table)
|
||||
{
|
||||
struct mmu_table_batch **batch = &tlb->batch;
|
||||
|
||||
if (*batch == NULL) {
|
||||
*batch = (struct mmu_table_batch *)
|
||||
__get_free_page(GFP_NOWAIT | __GFP_NOWARN);
|
||||
if (*batch == NULL) {
|
||||
__tlb_flush_mm(tlb->mm);
|
||||
tlb_remove_table_one(table);
|
||||
return;
|
||||
}
|
||||
(*batch)->nr = 0;
|
||||
}
|
||||
(*batch)->tables[(*batch)->nr++] = table;
|
||||
if ((*batch)->nr == MAX_TABLE_BATCH)
|
||||
tlb_table_flush(tlb);
|
||||
}
|
||||
|
||||
/*
|
||||
* switch on pgstes for its userspace process (for kvm)
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ static ssize_t hwsampler_write(struct file *file, char const __user *buf,
|
|||
return -EINVAL;
|
||||
|
||||
retval = oprofilefs_ulong_from_user(&val, buf, count);
|
||||
if (retval)
|
||||
if (retval <= 0)
|
||||
return retval;
|
||||
|
||||
if (oprofile_started)
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@ ENTRY(handle_sys)
|
|||
sw r9, [r0, PT_EPC]
|
||||
|
||||
cmpi.c r27, __NR_syscalls # check syscall number
|
||||
bgtu illegal_syscall
|
||||
bgeu illegal_syscall
|
||||
|
||||
slli r8, r27, 2 # get syscall routine
|
||||
la r11, sys_call_table
|
||||
|
|
|
|||
|
|
@ -141,8 +141,13 @@ typedef struct page *pgtable_t;
|
|||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#ifdef CONFIG_UNCACHED_MAPPING
|
||||
#if defined(CONFIG_29BIT)
|
||||
#define UNCAC_ADDR(addr) P2SEGADDR(addr)
|
||||
#define CAC_ADDR(addr) P1SEGADDR(addr)
|
||||
#else
|
||||
#define UNCAC_ADDR(addr) ((addr) - PAGE_OFFSET + uncached_start)
|
||||
#define CAC_ADDR(addr) ((addr) - uncached_start + PAGE_OFFSET)
|
||||
#endif
|
||||
#else
|
||||
#define UNCAC_ADDR(addr) ((addr))
|
||||
#define CAC_ADDR(addr) ((addr))
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
|
|||
return oprofile_perf_init(ops);
|
||||
}
|
||||
|
||||
void __exit oprofile_arch_exit(void)
|
||||
void oprofile_arch_exit(void)
|
||||
{
|
||||
oprofile_perf_exit();
|
||||
kfree(sh_pmu_op_name);
|
||||
|
|
@ -60,5 +60,5 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
|
|||
ops->backtrace = sh_backtrace;
|
||||
return -ENODEV;
|
||||
}
|
||||
void __exit oprofile_arch_exit(void) {}
|
||||
void oprofile_arch_exit(void) {}
|
||||
#endif /* CONFIG_HW_PERF_EVENTS */
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ UTS_MACHINE := sparc
|
|||
|
||||
#KBUILD_CFLAGS += -g -pipe -fcall-used-g5 -fcall-used-g7
|
||||
KBUILD_CFLAGS += -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7
|
||||
KBUILD_AFLAGS += -m32
|
||||
KBUILD_AFLAGS += -m32 -Wa,-Av8
|
||||
|
||||
#LDFLAGS_vmlinux = -N -Ttext 0xf0004000
|
||||
# Since 2.5.40, the first stage is left not btfix-ed.
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user