mirror of https://gitee.com/openkylin/linux.git
ASoC: Fixes for v3.9
A few more fixes here and there, including quite a few nasty driver specific ones, but nothing that has a major general impact. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJRUawIAAoJELSic+t+oim9RqsP/RGgUqjX68ewq4Ub9BbhsYGa Xz4dCN6LACQVXvgNlMhR/TypaJ+vJ3xjlgb/WXNDRYPnEoffoqzDhZOwIaJH8rPR wGvZGs+UZNuPeIwZ3TF3o0Ct3XYPzzPZPmLnZKL+ZWVgggbHgqGJmkK7smB1koNU ppnqhPaid6DIlTcSP3jHsUCxcahtCUDUMNPqIzQx7k1QquucUXvs7HWWXaboqyh3 aci3NtDtaMJwM/qheBz0rxv0bk7FrtrukSdN0muSKmcd2Fy8VuwZWIXdB467gXUs I46ZEOxV2XM+/Tq7HfzLiTu35cgCwXv3z7ayr6Z5ZXjn8B1FnDmqanh3XaawwKbr Bx53x1X1ga83ms61z+S9QOZ8K74EcJcL6wE77QxsnuaOkgHZYdoZNC7u8i5+cHhN Lr9ymozK52dH1uJo0/kWvYmK/3SFeHDOMVGiBVVeRQw81PKEPrPZid7veL10UUoG WX224U1HeuH+0+3scFkaomd4mzhPoj//seIM+806OF4dzsiTLHC7SFU4i3HY23Fx OH9LJUGvr3FygNqgbdsuO3jEu5N5lXn6zY/Dumi7dLga75vtn0llhXqgM6ec1CLF jvlHN5UUN8hnxam4SBme5AcX2+rUbEXjD8VA82Y2NOtRWbkiYI5KYINj+SKR0lt+ uRfo30zqYhhaUwmCfXcI =rovv -----END PGP SIGNATURE----- Merge tag 'asoc-fix-v3.9-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus ASoC: Fixes for v3.9 A few more fixes here and there, including quite a few nasty driver specific ones, but nothing that has a major general impact.
This commit is contained in:
commit
ea019fdf1a
14
CREDITS
14
CREDITS
|
@ -953,11 +953,11 @@ S: Blacksburg, Virginia 24061
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
N: Randy Dunlap
|
N: Randy Dunlap
|
||||||
E: rdunlap@xenotime.net
|
E: rdunlap@infradead.org
|
||||||
W: http://www.xenotime.net/linux/linux.html
|
W: http://www.infradead.org/~rdunlap/
|
||||||
W: http://www.linux-usb.org
|
|
||||||
D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers
|
D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers
|
||||||
D: x86 SMP, ACPI, bootflag hacking
|
D: x86 SMP, ACPI, bootflag hacking
|
||||||
|
D: documentation, builds
|
||||||
S: (ask for current address)
|
S: (ask for current address)
|
||||||
S: USA
|
S: USA
|
||||||
|
|
||||||
|
@ -1510,6 +1510,14 @@ D: Natsemi ethernet
|
||||||
D: Cobalt Networks (x86) support
|
D: Cobalt Networks (x86) support
|
||||||
D: This-and-That
|
D: This-and-That
|
||||||
|
|
||||||
|
N: Mark M. Hoffman
|
||||||
|
E: mhoffman@lightlink.com
|
||||||
|
D: asb100, lm93 and smsc47b397 hardware monitoring drivers
|
||||||
|
D: hwmon subsystem core
|
||||||
|
D: hwmon subsystem maintainer
|
||||||
|
D: i2c-sis96x and i2c-stub SMBus drivers
|
||||||
|
S: USA
|
||||||
|
|
||||||
N: Dirk Hohndel
|
N: Dirk Hohndel
|
||||||
E: hohndel@suse.de
|
E: hohndel@suse.de
|
||||||
D: The XFree86[tm] Project
|
D: The XFree86[tm] Project
|
||||||
|
|
|
@ -60,8 +60,7 @@ own source tree. For example:
|
||||||
"dontdiff" is a list of files which are generated by the kernel during
|
"dontdiff" is a list of files which are generated by the kernel during
|
||||||
the build process, and should be ignored in any diff(1)-generated
|
the build process, and should be ignored in any diff(1)-generated
|
||||||
patch. The "dontdiff" file is included in the kernel tree in
|
patch. The "dontdiff" file is included in the kernel tree in
|
||||||
2.6.12 and later. For earlier kernel versions, you can get it
|
2.6.12 and later.
|
||||||
from <http://www.xenotime.net/linux/doc/dontdiff>.
|
|
||||||
|
|
||||||
Make sure your patch does not include any extra files which do not
|
Make sure your patch does not include any extra files which do not
|
||||||
belong in a patch submission. Make sure to review your patch -after-
|
belong in a patch submission. Make sure to review your patch -after-
|
||||||
|
|
|
@ -30,6 +30,7 @@ The target is named "raid" and it accepts the following parameters:
|
||||||
raid10 Various RAID10 inspired algorithms chosen by additional params
|
raid10 Various RAID10 inspired algorithms chosen by additional params
|
||||||
- RAID10: Striped Mirrors (aka 'Striping on top of mirrors')
|
- RAID10: Striped Mirrors (aka 'Striping on top of mirrors')
|
||||||
- RAID1E: Integrated Adjacent Stripe Mirroring
|
- RAID1E: Integrated Adjacent Stripe Mirroring
|
||||||
|
- RAID1E: Integrated Offset Stripe Mirroring
|
||||||
- and other similar RAID10 variants
|
- and other similar RAID10 variants
|
||||||
|
|
||||||
Reference: Chapter 4 of
|
Reference: Chapter 4 of
|
||||||
|
@ -64,15 +65,15 @@ The target is named "raid" and it accepts the following parameters:
|
||||||
synchronisation state for each region.
|
synchronisation state for each region.
|
||||||
|
|
||||||
[raid10_copies <# copies>]
|
[raid10_copies <# copies>]
|
||||||
[raid10_format near]
|
[raid10_format <near|far|offset>]
|
||||||
These two options are used to alter the default layout of
|
These two options are used to alter the default layout of
|
||||||
a RAID10 configuration. The number of copies is can be
|
a RAID10 configuration. The number of copies is can be
|
||||||
specified, but the default is 2. There are other variations
|
specified, but the default is 2. There are also three
|
||||||
to how the copies are laid down - the default and only current
|
variations to how the copies are laid down - the default
|
||||||
option is "near". Near copies are what most people think of
|
is "near". Near copies are what most people think of with
|
||||||
with respect to mirroring. If these options are left
|
respect to mirroring. If these options are left unspecified,
|
||||||
unspecified, or 'raid10_copies 2' and/or 'raid10_format near'
|
or 'raid10_copies 2' and/or 'raid10_format near' are given,
|
||||||
are given, then the layouts for 2, 3 and 4 devices are:
|
then the layouts for 2, 3 and 4 devices are:
|
||||||
2 drives 3 drives 4 drives
|
2 drives 3 drives 4 drives
|
||||||
-------- ---------- --------------
|
-------- ---------- --------------
|
||||||
A1 A1 A1 A1 A2 A1 A1 A2 A2
|
A1 A1 A1 A1 A2 A1 A1 A2 A2
|
||||||
|
@ -85,6 +86,33 @@ The target is named "raid" and it accepts the following parameters:
|
||||||
3-device layout is what might be called a 'RAID1E - Integrated
|
3-device layout is what might be called a 'RAID1E - Integrated
|
||||||
Adjacent Stripe Mirroring'.
|
Adjacent Stripe Mirroring'.
|
||||||
|
|
||||||
|
If 'raid10_copies 2' and 'raid10_format far', then the layouts
|
||||||
|
for 2, 3 and 4 devices are:
|
||||||
|
2 drives 3 drives 4 drives
|
||||||
|
-------- -------------- --------------------
|
||||||
|
A1 A2 A1 A2 A3 A1 A2 A3 A4
|
||||||
|
A3 A4 A4 A5 A6 A5 A6 A7 A8
|
||||||
|
A5 A6 A7 A8 A9 A9 A10 A11 A12
|
||||||
|
.. .. .. .. .. .. .. .. ..
|
||||||
|
A2 A1 A3 A1 A2 A2 A1 A4 A3
|
||||||
|
A4 A3 A6 A4 A5 A6 A5 A8 A7
|
||||||
|
A6 A5 A9 A7 A8 A10 A9 A12 A11
|
||||||
|
.. .. .. .. .. .. .. .. ..
|
||||||
|
|
||||||
|
If 'raid10_copies 2' and 'raid10_format offset', then the
|
||||||
|
layouts for 2, 3 and 4 devices are:
|
||||||
|
2 drives 3 drives 4 drives
|
||||||
|
-------- ------------ -----------------
|
||||||
|
A1 A2 A1 A2 A3 A1 A2 A3 A4
|
||||||
|
A2 A1 A3 A1 A2 A2 A1 A4 A3
|
||||||
|
A3 A4 A4 A5 A6 A5 A6 A7 A8
|
||||||
|
A4 A3 A6 A4 A5 A6 A5 A8 A7
|
||||||
|
A5 A6 A7 A8 A9 A9 A10 A11 A12
|
||||||
|
A6 A5 A9 A7 A8 A10 A9 A12 A11
|
||||||
|
.. .. .. .. .. .. .. .. ..
|
||||||
|
Here we see layouts closely akin to 'RAID1E - Integrated
|
||||||
|
Offset Stripe Mirroring'.
|
||||||
|
|
||||||
<#raid_devs>: The number of devices composing the array.
|
<#raid_devs>: The number of devices composing the array.
|
||||||
Each device consists of two entries. The first is the device
|
Each device consists of two entries. The first is the device
|
||||||
containing the metadata (if any); the second is the one containing the
|
containing the metadata (if any); the second is the one containing the
|
||||||
|
@ -142,3 +170,5 @@ Version History
|
||||||
1.3.0 Added support for RAID 10
|
1.3.0 Added support for RAID 10
|
||||||
1.3.1 Allow device replacement/rebuild for RAID 10
|
1.3.1 Allow device replacement/rebuild for RAID 10
|
||||||
1.3.2 Fix/improve redundancy checking for RAID10
|
1.3.2 Fix/improve redundancy checking for RAID10
|
||||||
|
1.4.0 Non-functional change. Removes arg from mapping function.
|
||||||
|
1.4.1 Add RAID10 "far" and "offset" algorithm support.
|
||||||
|
|
|
@ -13,9 +13,6 @@ Required parent device properties:
|
||||||
4 = active high level-sensitive
|
4 = active high level-sensitive
|
||||||
8 = active low level-sensitive
|
8 = active low level-sensitive
|
||||||
|
|
||||||
Optional parent device properties:
|
|
||||||
- reg : contains the PRCMU mailbox address for the AB8500 i2c port
|
|
||||||
|
|
||||||
The AB8500 consists of a large and varied group of sub-devices:
|
The AB8500 consists of a large and varied group of sub-devices:
|
||||||
|
|
||||||
Device IRQ Names Supply Names Description
|
Device IRQ Names Supply Names Description
|
||||||
|
@ -86,9 +83,8 @@ Non-standard child device properties:
|
||||||
- stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic
|
- stericsson,amic2-bias-vamic1 : Analoge Mic wishes to use a non-standard Vamic
|
||||||
- stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580)
|
- stericsson,earpeice-cmv : Earpeice voltage (only: 950 | 1100 | 1270 | 1580)
|
||||||
|
|
||||||
ab8500@5 {
|
ab8500 {
|
||||||
compatible = "stericsson,ab8500";
|
compatible = "stericsson,ab8500";
|
||||||
reg = <5>; /* mailbox 5 is i2c */
|
|
||||||
interrupts = <0 40 0x4>;
|
interrupts = <0 40 0x4>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
|
|
|
@ -11,6 +11,9 @@ Required properties:
|
||||||
- "nvidia,tegra20-uart"
|
- "nvidia,tegra20-uart"
|
||||||
- "nxp,lpc3220-uart"
|
- "nxp,lpc3220-uart"
|
||||||
- "ibm,qpace-nwp-serial"
|
- "ibm,qpace-nwp-serial"
|
||||||
|
- "altr,16550-FIFO32"
|
||||||
|
- "altr,16550-FIFO64"
|
||||||
|
- "altr,16550-FIFO128"
|
||||||
- "serial" if the port type is unknown.
|
- "serial" if the port type is unknown.
|
||||||
- reg : offset and length of the register set for the device.
|
- reg : offset and length of the register set for the device.
|
||||||
- interrupts : should contain uart interrupt.
|
- interrupts : should contain uart interrupt.
|
||||||
|
|
|
@ -15,7 +15,7 @@ Supported chips:
|
||||||
Addresses scanned: -
|
Addresses scanned: -
|
||||||
Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1276.pdf
|
Datasheet: www.analog.com/static/imported-files/data_sheets/ADM1276.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -4,9 +4,14 @@ Kernel driver adt7410
|
||||||
Supported chips:
|
Supported chips:
|
||||||
* Analog Devices ADT7410
|
* Analog Devices ADT7410
|
||||||
Prefix: 'adt7410'
|
Prefix: 'adt7410'
|
||||||
Addresses scanned: I2C 0x48 - 0x4B
|
Addresses scanned: None
|
||||||
Datasheet: Publicly available at the Analog Devices website
|
Datasheet: Publicly available at the Analog Devices website
|
||||||
http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf
|
http://www.analog.com/static/imported-files/data_sheets/ADT7410.pdf
|
||||||
|
* Analog Devices ADT7420
|
||||||
|
Prefix: 'adt7420'
|
||||||
|
Addresses scanned: None
|
||||||
|
Datasheet: Publicly available at the Analog Devices website
|
||||||
|
http://www.analog.com/static/imported-files/data_sheets/ADT7420.pdf
|
||||||
|
|
||||||
Author: Hartmut Knaack <knaack.h@gmx.de>
|
Author: Hartmut Knaack <knaack.h@gmx.de>
|
||||||
|
|
||||||
|
@ -27,6 +32,10 @@ value per second or even justget one sample on demand for power saving.
|
||||||
Besides, it can completely power down its ADC, if power management is
|
Besides, it can completely power down its ADC, if power management is
|
||||||
required.
|
required.
|
||||||
|
|
||||||
|
The ADT7420 is register compatible, the only differences being the package,
|
||||||
|
a slightly narrower operating temperature range (-40°C to +150°C), and a
|
||||||
|
better accuracy (0.25°C instead of 0.50°C.)
|
||||||
|
|
||||||
Configuration Notes
|
Configuration Notes
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ Supported chips:
|
||||||
Addresses scanned: I2C 0x18 - 0x1f
|
Addresses scanned: I2C 0x18 - 0x1f
|
||||||
|
|
||||||
Author:
|
Author:
|
||||||
Guenter Roeck <guenter.roeck@ericsson.com>
|
Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -8,7 +8,7 @@ Supported devices:
|
||||||
Documentation:
|
Documentation:
|
||||||
http://www.lineagepower.com/oem/pdf/CPLI2C.pdf
|
http://www.lineagepower.com/oem/pdf/CPLI2C.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -19,7 +19,7 @@ Supported chips:
|
||||||
Datasheet:
|
Datasheet:
|
||||||
http://www.national.com/pf/LM/LM5066.html
|
http://www.national.com/pf/LM/LM5066.html
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -23,7 +23,7 @@ Supported chips:
|
||||||
Datasheet: Publicly available at the Maxim website
|
Datasheet: Publicly available at the Maxim website
|
||||||
http://www.maxim-ic.com/
|
http://www.maxim-ic.com/
|
||||||
* Microchip (TelCom) TCN75
|
* Microchip (TelCom) TCN75
|
||||||
Prefix: 'lm75'
|
Prefix: 'tcn75'
|
||||||
Addresses scanned: none
|
Addresses scanned: none
|
||||||
Datasheet: Publicly available at the Microchip website
|
Datasheet: Publicly available at the Microchip website
|
||||||
http://www.microchip.com/
|
http://www.microchip.com/
|
||||||
|
|
|
@ -5,13 +5,13 @@ Supported chips:
|
||||||
* Linear Technology LTC2978
|
* Linear Technology LTC2978
|
||||||
Prefix: 'ltc2978'
|
Prefix: 'ltc2978'
|
||||||
Addresses scanned: -
|
Addresses scanned: -
|
||||||
Datasheet: http://cds.linear.com/docs/Datasheet/2978fa.pdf
|
Datasheet: http://www.linear.com/product/ltc2978
|
||||||
* Linear Technology LTC3880
|
* Linear Technology LTC3880
|
||||||
Prefix: 'ltc3880'
|
Prefix: 'ltc3880'
|
||||||
Addresses scanned: -
|
Addresses scanned: -
|
||||||
Datasheet: http://cds.linear.com/docs/Datasheet/3880f.pdf
|
Datasheet: http://www.linear.com/product/ltc3880
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -8,7 +8,7 @@ Supported chips:
|
||||||
Datasheet:
|
Datasheet:
|
||||||
http://cds.linear.com/docs/Datasheet/42612fb.pdf
|
http://cds.linear.com/docs/Datasheet/42612fb.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -7,7 +7,7 @@ Supported chips:
|
||||||
Addresses scanned: -
|
Addresses scanned: -
|
||||||
Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf
|
Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX16064.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -24,7 +24,7 @@ Supported chips:
|
||||||
http://datasheets.maxim-ic.com/en/ds/MAX16070-MAX16071.pdf
|
http://datasheets.maxim-ic.com/en/ds/MAX16070-MAX16071.pdf
|
||||||
|
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -27,7 +27,7 @@ Supported chips:
|
||||||
Addresses scanned: -
|
Addresses scanned: -
|
||||||
Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX34461.pdf
|
Datasheet: http://datasheets.maximintegrated.com/en/ds/MAX34461.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -7,7 +7,7 @@ Supported chips:
|
||||||
Addresses scanned: -
|
Addresses scanned: -
|
||||||
Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX8688.pdf
|
Datasheet: http://datasheets.maxim-ic.com/en/ds/MAX8688.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -34,7 +34,7 @@ Supported chips:
|
||||||
Addresses scanned: -
|
Addresses scanned: -
|
||||||
Datasheet: n.a.
|
Datasheet: n.a.
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -29,7 +29,7 @@ Supported chips:
|
||||||
http://www.summitmicro.com/prod_select/summary/SMM766/SMM766_2086.pdf
|
http://www.summitmicro.com/prod_select/summary/SMM766/SMM766_2086.pdf
|
||||||
http://www.summitmicro.com/prod_select/summary/SMM766B/SMM766B_2122.pdf
|
http://www.summitmicro.com/prod_select/summary/SMM766B/SMM766B_2122.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Module Parameters
|
Module Parameters
|
||||||
|
|
|
@ -11,7 +11,7 @@ Supported chips:
|
||||||
http://focus.ti.com/lit/ds/symlink/ucd9090.pdf
|
http://focus.ti.com/lit/ds/symlink/ucd9090.pdf
|
||||||
http://focus.ti.com/lit/ds/symlink/ucd90910.pdf
|
http://focus.ti.com/lit/ds/symlink/ucd90910.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -15,7 +15,7 @@ Supported chips:
|
||||||
http://focus.ti.com/lit/ds/symlink/ucd9246.pdf
|
http://focus.ti.com/lit/ds/symlink/ucd9246.pdf
|
||||||
http://focus.ti.com/lit/ds/symlink/ucd9248.pdf
|
http://focus.ti.com/lit/ds/symlink/ucd9248.pdf
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -54,7 +54,7 @@ http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146401
|
||||||
http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146256
|
http://archive.ericsson.net/service/internet/picov/get?DocNo=28701-EN/LZT146256
|
||||||
|
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -5,7 +5,7 @@ Supported adapters:
|
||||||
Documentation:
|
Documentation:
|
||||||
http://www.diolan.com/i2c/u2c12.html
|
http://www.diolan.com/i2c/u2c12.html
|
||||||
|
|
||||||
Author: Guenter Roeck <guenter.roeck@ericsson.com>
|
Author: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
|
|
|
@ -3,10 +3,26 @@ ALPS Touchpad Protocol
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
------------
|
------------
|
||||||
|
Currently the ALPS touchpad driver supports five protocol versions in use by
|
||||||
|
ALPS touchpads, called versions 1, 2, 3, 4 and 5.
|
||||||
|
|
||||||
Currently the ALPS touchpad driver supports four protocol versions in use by
|
Since roughly mid-2010 several new ALPS touchpads have been released and
|
||||||
ALPS touchpads, called versions 1, 2, 3, and 4. Information about the various
|
integrated into a variety of laptops and netbooks. These new touchpads
|
||||||
protocol versions is contained in the following sections.
|
have enough behavior differences that the alps_model_data definition
|
||||||
|
table, describing the properties of the different versions, is no longer
|
||||||
|
adequate. The design choices were to re-define the alps_model_data
|
||||||
|
table, with the risk of regression testing existing devices, or isolate
|
||||||
|
the new devices outside of the alps_model_data table. The latter design
|
||||||
|
choice was made. The new touchpad signatures are named: "Rushmore",
|
||||||
|
"Pinnacle", and "Dolphin", which you will see in the alps.c code.
|
||||||
|
For the purposes of this document, this group of ALPS touchpads will
|
||||||
|
generically be called "new ALPS touchpads".
|
||||||
|
|
||||||
|
We experimented with probing the ACPI interface _HID (Hardware ID)/_CID
|
||||||
|
(Compatibility ID) definition as a way to uniquely identify the
|
||||||
|
different ALPS variants but there did not appear to be a 1:1 mapping.
|
||||||
|
In fact, it appeared to be an m:n mapping between the _HID and actual
|
||||||
|
hardware type.
|
||||||
|
|
||||||
Detection
|
Detection
|
||||||
---------
|
---------
|
||||||
|
@ -20,9 +36,13 @@ If the E6 report is successful, the touchpad model is identified using the "E7
|
||||||
report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is
|
report" sequence: E8-E7-E7-E7-E9. The response is the model signature and is
|
||||||
matched against known models in the alps_model_data_array.
|
matched against known models in the alps_model_data_array.
|
||||||
|
|
||||||
With protocol versions 3 and 4, the E7 report model signature is always
|
For older touchpads supporting protocol versions 3 and 4, the E7 report
|
||||||
73-02-64. To differentiate between these versions, the response from the
|
model signature is always 73-02-64. To differentiate between these
|
||||||
"Enter Command Mode" sequence must be inspected as described below.
|
versions, the response from the "Enter Command Mode" sequence must be
|
||||||
|
inspected as described below.
|
||||||
|
|
||||||
|
The new ALPS touchpads have an E7 signature of 73-03-50 or 73-03-0A but
|
||||||
|
seem to be better differentiated by the EC Command Mode response.
|
||||||
|
|
||||||
Command Mode
|
Command Mode
|
||||||
------------
|
------------
|
||||||
|
@ -47,6 +67,14 @@ address of the register being read, and the third contains the value of the
|
||||||
register. Registers are written by writing the value one nibble at a time
|
register. Registers are written by writing the value one nibble at a time
|
||||||
using the same encoding used for addresses.
|
using the same encoding used for addresses.
|
||||||
|
|
||||||
|
For the new ALPS touchpads, the EC command is used to enter command
|
||||||
|
mode. The response in the new ALPS touchpads is significantly different,
|
||||||
|
and more important in determining the behavior. This code has been
|
||||||
|
separated from the original alps_model_data table and put in the
|
||||||
|
alps_identify function. For example, there seem to be two hardware init
|
||||||
|
sequences for the "Dolphin" touchpads as determined by the second byte
|
||||||
|
of the EC response.
|
||||||
|
|
||||||
Packet Format
|
Packet Format
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
@ -187,3 +215,28 @@ There are several things worth noting here.
|
||||||
well.
|
well.
|
||||||
|
|
||||||
So far no v4 devices with tracksticks have been encountered.
|
So far no v4 devices with tracksticks have been encountered.
|
||||||
|
|
||||||
|
ALPS Absolute Mode - Protocol Version 5
|
||||||
|
---------------------------------------
|
||||||
|
This is basically Protocol Version 3 but with different logic for packet
|
||||||
|
decode. It uses the same alps_process_touchpad_packet_v3 call with a
|
||||||
|
specialized decode_fields function pointer to correctly interpret the
|
||||||
|
packets. This appears to only be used by the Dolphin devices.
|
||||||
|
|
||||||
|
For single-touch, the 6-byte packet format is:
|
||||||
|
|
||||||
|
byte 0: 1 1 0 0 1 0 0 0
|
||||||
|
byte 1: 0 x6 x5 x4 x3 x2 x1 x0
|
||||||
|
byte 2: 0 y6 y5 y4 y3 y2 y1 y0
|
||||||
|
byte 3: 0 M R L 1 m r l
|
||||||
|
byte 4: y10 y9 y8 y7 x10 x9 x8 x7
|
||||||
|
byte 5: 0 z6 z5 z4 z3 z2 z1 z0
|
||||||
|
|
||||||
|
For mt, the format is:
|
||||||
|
|
||||||
|
byte 0: 1 1 1 n3 1 n2 n1 x24
|
||||||
|
byte 1: 1 y7 y6 y5 y4 y3 y2 y1
|
||||||
|
byte 2: ? x2 x1 y12 y11 y10 y9 y8
|
||||||
|
byte 3: 0 x23 x22 x21 x20 x19 x18 x17
|
||||||
|
byte 4: 0 x9 x8 x7 x6 x5 x4 x3
|
||||||
|
byte 5: 0 x16 x15 x14 x13 x12 x11 x10
|
||||||
|
|
|
@ -105,6 +105,83 @@ Copyright (C) 1999-2000 Maxim Krasnyansky <max_mk@yahoo.com>
|
||||||
Proto [2 bytes]
|
Proto [2 bytes]
|
||||||
Raw protocol(IP, IPv6, etc) frame.
|
Raw protocol(IP, IPv6, etc) frame.
|
||||||
|
|
||||||
|
3.3 Multiqueue tuntap interface:
|
||||||
|
|
||||||
|
From version 3.8, Linux supports multiqueue tuntap which can uses multiple
|
||||||
|
file descriptors (queues) to parallelize packets sending or receiving. The
|
||||||
|
device allocation is the same as before, and if user wants to create multiple
|
||||||
|
queues, TUNSETIFF with the same device name must be called many times with
|
||||||
|
IFF_MULTI_QUEUE flag.
|
||||||
|
|
||||||
|
char *dev should be the name of the device, queues is the number of queues to
|
||||||
|
be created, fds is used to store and return the file descriptors (queues)
|
||||||
|
created to the caller. Each file descriptor were served as the interface of a
|
||||||
|
queue which could be accessed by userspace.
|
||||||
|
|
||||||
|
#include <linux/if.h>
|
||||||
|
#include <linux/if_tun.h>
|
||||||
|
|
||||||
|
int tun_alloc_mq(char *dev, int queues, int *fds)
|
||||||
|
{
|
||||||
|
struct ifreq ifr;
|
||||||
|
int fd, err, i;
|
||||||
|
|
||||||
|
if (!dev)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
memset(&ifr, 0, sizeof(ifr));
|
||||||
|
/* Flags: IFF_TUN - TUN device (no Ethernet headers)
|
||||||
|
* IFF_TAP - TAP device
|
||||||
|
*
|
||||||
|
* IFF_NO_PI - Do not provide packet information
|
||||||
|
* IFF_MULTI_QUEUE - Create a queue of multiqueue device
|
||||||
|
*/
|
||||||
|
ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_MULTI_QUEUE;
|
||||||
|
strcpy(ifr.ifr_name, dev);
|
||||||
|
|
||||||
|
for (i = 0; i < queues; i++) {
|
||||||
|
if ((fd = open("/dev/net/tun", O_RDWR)) < 0)
|
||||||
|
goto err;
|
||||||
|
err = ioctl(fd, TUNSETIFF, (void *)&ifr);
|
||||||
|
if (err) {
|
||||||
|
close(fd);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
fds[i] = fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
err:
|
||||||
|
for (--i; i >= 0; i--)
|
||||||
|
close(fds[i]);
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
A new ioctl(TUNSETQUEUE) were introduced to enable or disable a queue. When
|
||||||
|
calling it with IFF_DETACH_QUEUE flag, the queue were disabled. And when
|
||||||
|
calling it with IFF_ATTACH_QUEUE flag, the queue were enabled. The queue were
|
||||||
|
enabled by default after it was created through TUNSETIFF.
|
||||||
|
|
||||||
|
fd is the file descriptor (queue) that we want to enable or disable, when
|
||||||
|
enable is true we enable it, otherwise we disable it
|
||||||
|
|
||||||
|
#include <linux/if.h>
|
||||||
|
#include <linux/if_tun.h>
|
||||||
|
|
||||||
|
int tun_set_queue(int fd, int enable)
|
||||||
|
{
|
||||||
|
struct ifreq ifr;
|
||||||
|
|
||||||
|
memset(&ifr, 0, sizeof(ifr));
|
||||||
|
|
||||||
|
if (enable)
|
||||||
|
ifr.ifr_flags = IFF_ATTACH_QUEUE;
|
||||||
|
else
|
||||||
|
ifr.ifr_flags = IFF_DETACH_QUEUE;
|
||||||
|
|
||||||
|
return ioctl(fd, TUNSETQUEUE, (void *)&ifr);
|
||||||
|
}
|
||||||
|
|
||||||
Universal TUN/TAP device driver Frequently Asked Question.
|
Universal TUN/TAP device driver Frequently Asked Question.
|
||||||
|
|
||||||
1. What platforms are supported by TUN/TAP driver ?
|
1. What platforms are supported by TUN/TAP driver ?
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
*=============*
|
Operating Performance Points (OPP) Library
|
||||||
* OPP Library *
|
==========================================
|
||||||
*=============*
|
|
||||||
|
|
||||||
(C) 2009-2010 Nishanth Menon <nm@ti.com>, Texas Instruments Incorporated
|
(C) 2009-2010 Nishanth Menon <nm@ti.com>, Texas Instruments Incorporated
|
||||||
|
|
||||||
|
@ -16,15 +15,31 @@ Contents
|
||||||
|
|
||||||
1. Introduction
|
1. Introduction
|
||||||
===============
|
===============
|
||||||
|
1.1 What is an Operating Performance Point (OPP)?
|
||||||
|
|
||||||
Complex SoCs of today consists of a multiple sub-modules working in conjunction.
|
Complex SoCs of today consists of a multiple sub-modules working in conjunction.
|
||||||
In an operational system executing varied use cases, not all modules in the SoC
|
In an operational system executing varied use cases, not all modules in the SoC
|
||||||
need to function at their highest performing frequency all the time. To
|
need to function at their highest performing frequency all the time. To
|
||||||
facilitate this, sub-modules in a SoC are grouped into domains, allowing some
|
facilitate this, sub-modules in a SoC are grouped into domains, allowing some
|
||||||
domains to run at lower voltage and frequency while other domains are loaded
|
domains to run at lower voltage and frequency while other domains run at
|
||||||
more. The set of discrete tuples consisting of frequency and voltage pairs that
|
voltage/frequency pairs that are higher.
|
||||||
|
|
||||||
|
The set of discrete tuples consisting of frequency and voltage pairs that
|
||||||
the device will support per domain are called Operating Performance Points or
|
the device will support per domain are called Operating Performance Points or
|
||||||
OPPs.
|
OPPs.
|
||||||
|
|
||||||
|
As an example:
|
||||||
|
Let us consider an MPU device which supports the following:
|
||||||
|
{300MHz at minimum voltage of 1V}, {800MHz at minimum voltage of 1.2V},
|
||||||
|
{1GHz at minimum voltage of 1.3V}
|
||||||
|
|
||||||
|
We can represent these as three OPPs as the following {Hz, uV} tuples:
|
||||||
|
{300000000, 1000000}
|
||||||
|
{800000000, 1200000}
|
||||||
|
{1000000000, 1300000}
|
||||||
|
|
||||||
|
1.2 Operating Performance Points Library
|
||||||
|
|
||||||
OPP library provides a set of helper functions to organize and query the OPP
|
OPP library provides a set of helper functions to organize and query the OPP
|
||||||
information. The library is located in drivers/base/power/opp.c and the header
|
information. The library is located in drivers/base/power/opp.c and the header
|
||||||
is located in include/linux/opp.h. OPP library can be enabled by enabling
|
is located in include/linux/opp.h. OPP library can be enabled by enabling
|
||||||
|
|
|
@ -170,5 +170,5 @@ Reminder: sizeof() result is of type size_t.
|
||||||
Thank you for your cooperation and attention.
|
Thank you for your cooperation and attention.
|
||||||
|
|
||||||
|
|
||||||
By Randy Dunlap <rdunlap@xenotime.net> and
|
By Randy Dunlap <rdunlap@infradead.org> and
|
||||||
Andrew Murray <amurray@mpc-data.co.uk>
|
Andrew Murray <amurray@mpc-data.co.uk>
|
||||||
|
|
|
@ -1873,7 +1873,7 @@ feature:
|
||||||
|
|
||||||
status\input | 0 | 1 | else |
|
status\input | 0 | 1 | else |
|
||||||
--------------+------------+------------+------------+
|
--------------+------------+------------+------------+
|
||||||
not allocated |(do nothing)| alloc+swap | EINVAL |
|
not allocated |(do nothing)| alloc+swap |(do nothing)|
|
||||||
--------------+------------+------------+------------+
|
--------------+------------+------------+------------+
|
||||||
allocated | free | swap | clear |
|
allocated | free | swap | clear |
|
||||||
--------------+------------+------------+------------+
|
--------------+------------+------------+------------+
|
||||||
|
|
78
MAINTAINERS
78
MAINTAINERS
|
@ -114,12 +114,6 @@ Maintainers List (try to look for most precise areas first)
|
||||||
|
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
3C505 NETWORK DRIVER
|
|
||||||
M: Philip Blundell <philb@gnu.org>
|
|
||||||
L: netdev@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/net/ethernet/i825xx/3c505*
|
|
||||||
|
|
||||||
3C59X NETWORK DRIVER
|
3C59X NETWORK DRIVER
|
||||||
M: Steffen Klassert <klassert@mathematik.tu-chemnitz.de>
|
M: Steffen Klassert <klassert@mathematik.tu-chemnitz.de>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
@ -1344,12 +1338,6 @@ S: Maintained
|
||||||
F: drivers/platform/x86/asus*.c
|
F: drivers/platform/x86/asus*.c
|
||||||
F: drivers/platform/x86/eeepc*.c
|
F: drivers/platform/x86/eeepc*.c
|
||||||
|
|
||||||
ASUS ASB100 HARDWARE MONITOR DRIVER
|
|
||||||
M: "Mark M. Hoffman" <mhoffman@lightlink.com>
|
|
||||||
L: lm-sensors@lm-sensors.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/hwmon/asb100.c
|
|
||||||
|
|
||||||
ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API
|
ASYNCHRONOUS TRANSFERS/TRANSFORMS (IOAT) API
|
||||||
M: Dan Williams <djbw@fb.com>
|
M: Dan Williams <djbw@fb.com>
|
||||||
W: http://sourceforge.net/projects/xscaleiop
|
W: http://sourceforge.net/projects/xscaleiop
|
||||||
|
@ -1473,6 +1461,12 @@ F: drivers/dma/at_hdmac.c
|
||||||
F: drivers/dma/at_hdmac_regs.h
|
F: drivers/dma/at_hdmac_regs.h
|
||||||
F: include/linux/platform_data/dma-atmel.h
|
F: include/linux/platform_data/dma-atmel.h
|
||||||
|
|
||||||
|
ATMEL I2C DRIVER
|
||||||
|
M: Ludovic Desroches <ludovic.desroches@atmel.com>
|
||||||
|
L: linux-i2c@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: drivers/i2c/busses/i2c-at91.c
|
||||||
|
|
||||||
ATMEL ISI DRIVER
|
ATMEL ISI DRIVER
|
||||||
M: Josh Wu <josh.wu@atmel.com>
|
M: Josh Wu <josh.wu@atmel.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
|
@ -2361,12 +2355,6 @@ W: http://www.arm.linux.org.uk/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/cyber2000fb.*
|
F: drivers/video/cyber2000fb.*
|
||||||
|
|
||||||
CYCLADES 2X SYNC CARD DRIVER
|
|
||||||
M: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
|
||||||
W: http://oops.ghostprotocols.net:81/blog
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/net/wan/cycx*
|
|
||||||
|
|
||||||
CYCLADES ASYNC MUX DRIVER
|
CYCLADES ASYNC MUX DRIVER
|
||||||
W: http://www.cyclades.com/
|
W: http://www.cyclades.com/
|
||||||
S: Orphan
|
S: Orphan
|
||||||
|
@ -2641,7 +2629,7 @@ F: include/uapi/drm/
|
||||||
|
|
||||||
INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
|
INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
|
||||||
M: Daniel Vetter <daniel.vetter@ffwll.ch>
|
M: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||||
L: intel-gfx@lists.freedesktop.org (subscribers-only)
|
L: intel-gfx@lists.freedesktop.org
|
||||||
L: dri-devel@lists.freedesktop.org
|
L: dri-devel@lists.freedesktop.org
|
||||||
T: git git://people.freedesktop.org/~danvet/drm-intel
|
T: git git://people.freedesktop.org/~danvet/drm-intel
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -3067,12 +3055,6 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/kristoffer/linux-hpc.git
|
||||||
F: drivers/video/s1d13xxxfb.c
|
F: drivers/video/s1d13xxxfb.c
|
||||||
F: include/video/s1d13xxxfb.h
|
F: include/video/s1d13xxxfb.h
|
||||||
|
|
||||||
ETHEREXPRESS-16 NETWORK DRIVER
|
|
||||||
M: Philip Blundell <philb@gnu.org>
|
|
||||||
L: netdev@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/net/ethernet/i825xx/eexpress.*
|
|
||||||
|
|
||||||
ETHERNET BRIDGE
|
ETHERNET BRIDGE
|
||||||
M: Stephen Hemminger <stephen@networkplumber.org>
|
M: Stephen Hemminger <stephen@networkplumber.org>
|
||||||
L: bridge@lists.linux-foundation.org
|
L: bridge@lists.linux-foundation.org
|
||||||
|
@ -3869,7 +3851,7 @@ F: drivers/i2c/busses/i2c-ismt.c
|
||||||
F: Documentation/i2c/busses/i2c-ismt
|
F: Documentation/i2c/busses/i2c-ismt
|
||||||
|
|
||||||
I2C/SMBUS STUB DRIVER
|
I2C/SMBUS STUB DRIVER
|
||||||
M: "Mark M. Hoffman" <mhoffman@lightlink.com>
|
M: Jean Delvare <khali@linux-fr.org>
|
||||||
L: linux-i2c@vger.kernel.org
|
L: linux-i2c@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/i2c/i2c-stub.c
|
F: drivers/i2c/i2c-stub.c
|
||||||
|
@ -4023,6 +4005,22 @@ M: Stanislaw Gruszka <stf_xl@wp.pl>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/usb/atm/ueagle-atm.c
|
F: drivers/usb/atm/ueagle-atm.c
|
||||||
|
|
||||||
|
INA209 HARDWARE MONITOR DRIVER
|
||||||
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
L: lm-sensors@lm-sensors.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/hwmon/ina209
|
||||||
|
F: Documentation/devicetree/bindings/i2c/ina209.txt
|
||||||
|
F: drivers/hwmon/ina209.c
|
||||||
|
|
||||||
|
INA2XX HARDWARE MONITOR DRIVER
|
||||||
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
L: lm-sensors@lm-sensors.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/hwmon/ina2xx
|
||||||
|
F: drivers/hwmon/ina2xx.c
|
||||||
|
F: include/linux/platform_data/ina2xx.h
|
||||||
|
|
||||||
INDUSTRY PACK SUBSYSTEM (IPACK)
|
INDUSTRY PACK SUBSYSTEM (IPACK)
|
||||||
M: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
|
M: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
|
||||||
M: Jens Taprogge <jens.taprogge@taprogge.org>
|
M: Jens Taprogge <jens.taprogge@taprogge.org>
|
||||||
|
@ -5116,6 +5114,15 @@ S: Maintained
|
||||||
F: Documentation/hwmon/max6650
|
F: Documentation/hwmon/max6650
|
||||||
F: drivers/hwmon/max6650.c
|
F: drivers/hwmon/max6650.c
|
||||||
|
|
||||||
|
MAX6697 HARDWARE MONITOR DRIVER
|
||||||
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
|
L: lm-sensors@lm-sensors.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/hwmon/max6697
|
||||||
|
F: Documentation/devicetree/bindings/i2c/max6697.txt
|
||||||
|
F: drivers/hwmon/max6697.c
|
||||||
|
F: include/linux/platform_data/max6697.h
|
||||||
|
|
||||||
MAXIRADIO FM RADIO RECEIVER DRIVER
|
MAXIRADIO FM RADIO RECEIVER DRIVER
|
||||||
M: Hans Verkuil <hverkuil@xs4all.nl>
|
M: Hans Verkuil <hverkuil@xs4all.nl>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
|
@ -5640,6 +5647,14 @@ S: Maintained
|
||||||
F: drivers/video/riva/
|
F: drivers/video/riva/
|
||||||
F: drivers/video/nvidia/
|
F: drivers/video/nvidia/
|
||||||
|
|
||||||
|
NVM EXPRESS DRIVER
|
||||||
|
M: Matthew Wilcox <willy@linux.intel.com>
|
||||||
|
L: linux-nvme@lists.infradead.org
|
||||||
|
T: git git://git.infradead.org/users/willy/linux-nvme.git
|
||||||
|
S: Supported
|
||||||
|
F: drivers/block/nvme.c
|
||||||
|
F: include/linux/nvme.h
|
||||||
|
|
||||||
OMAP SUPPORT
|
OMAP SUPPORT
|
||||||
M: Tony Lindgren <tony@atomide.com>
|
M: Tony Lindgren <tony@atomide.com>
|
||||||
L: linux-omap@vger.kernel.org
|
L: linux-omap@vger.kernel.org
|
||||||
|
@ -6430,6 +6445,8 @@ F: Documentation/networking/LICENSE.qla3xxx
|
||||||
F: drivers/net/ethernet/qlogic/qla3xxx.*
|
F: drivers/net/ethernet/qlogic/qla3xxx.*
|
||||||
|
|
||||||
QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
|
QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
|
||||||
|
M: Rajesh Borundia <rajesh.borundia@qlogic.com>
|
||||||
|
M: Shahed Shaikh <shahed.shaikh@qlogic.com>
|
||||||
M: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
|
M: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
|
||||||
M: Sony Chacko <sony.chacko@qlogic.com>
|
M: Sony Chacko <sony.chacko@qlogic.com>
|
||||||
M: linux-driver@qlogic.com
|
M: linux-driver@qlogic.com
|
||||||
|
@ -7189,13 +7206,6 @@ L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/sis/sis900.*
|
F: drivers/net/ethernet/sis/sis900.*
|
||||||
|
|
||||||
SIS 96X I2C/SMBUS DRIVER
|
|
||||||
M: "Mark M. Hoffman" <mhoffman@lightlink.com>
|
|
||||||
L: linux-i2c@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: Documentation/i2c/busses/i2c-sis96x
|
|
||||||
F: drivers/i2c/busses/i2c-sis96x.c
|
|
||||||
|
|
||||||
SIS FRAMEBUFFER DRIVER
|
SIS FRAMEBUFFER DRIVER
|
||||||
M: Thomas Winischhofer <thomas@winischhofer.net>
|
M: Thomas Winischhofer <thomas@winischhofer.net>
|
||||||
W: http://www.winischhofer.net/linuxsisvga.shtml
|
W: http://www.winischhofer.net/linuxsisvga.shtml
|
||||||
|
@ -7273,7 +7283,7 @@ F: Documentation/hwmon/sch5627
|
||||||
F: drivers/hwmon/sch5627.c
|
F: drivers/hwmon/sch5627.c
|
||||||
|
|
||||||
SMSC47B397 HARDWARE MONITOR DRIVER
|
SMSC47B397 HARDWARE MONITOR DRIVER
|
||||||
M: "Mark M. Hoffman" <mhoffman@lightlink.com>
|
M: Jean Delvare <khali@linux-fr.org>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/smsc47b397
|
F: Documentation/hwmon/smsc47b397
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 3
|
VERSION = 3
|
||||||
PATCHLEVEL = 9
|
PATCHLEVEL = 9
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc1
|
EXTRAVERSION = -rc4
|
||||||
NAME = Unicycling Gorilla
|
NAME = Unicycling Gorilla
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -319,13 +319,6 @@ config ARCH_WANT_OLD_COMPAT_IPC
|
||||||
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
|
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config HAVE_VIRT_TO_BUS
|
|
||||||
bool
|
|
||||||
help
|
|
||||||
An architecture should select this if it implements the
|
|
||||||
deprecated interface virt_to_bus(). All new architectures
|
|
||||||
should probably not select this.
|
|
||||||
|
|
||||||
config HAVE_ARCH_SECCOMP_FILTER
|
config HAVE_ARCH_SECCOMP_FILTER
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
@ -9,7 +9,7 @@ config ALPHA
|
||||||
select HAVE_PERF_EVENTS
|
select HAVE_PERF_EVENTS
|
||||||
select HAVE_DMA_ATTRS
|
select HAVE_DMA_ATTRS
|
||||||
select HAVE_GENERIC_HARDIRQS
|
select HAVE_GENERIC_HARDIRQS
|
||||||
select HAVE_VIRT_TO_BUS
|
select VIRT_TO_BUS
|
||||||
select GENERIC_IRQ_PROBE
|
select GENERIC_IRQ_PROBE
|
||||||
select AUTO_IRQ_AFFINITY if SMP
|
select AUTO_IRQ_AFFINITY if SMP
|
||||||
select GENERIC_IRQ_SHOW
|
select GENERIC_IRQ_SHOW
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
* initial bootloader stuff..
|
* initial bootloader stuff..
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <asm/pal.h>
|
||||||
|
|
||||||
.set noreorder
|
.set noreorder
|
||||||
.globl __start
|
.globl __start
|
||||||
|
|
|
@ -49,7 +49,6 @@ config ARM
|
||||||
select HAVE_REGS_AND_STACK_ACCESS_API
|
select HAVE_REGS_AND_STACK_ACCESS_API
|
||||||
select HAVE_SYSCALL_TRACEPOINTS
|
select HAVE_SYSCALL_TRACEPOINTS
|
||||||
select HAVE_UID16
|
select HAVE_UID16
|
||||||
select HAVE_VIRT_TO_BUS
|
|
||||||
select KTIME_SCALAR
|
select KTIME_SCALAR
|
||||||
select PERF_USE_VMALLOC
|
select PERF_USE_VMALLOC
|
||||||
select RTC_LIB
|
select RTC_LIB
|
||||||
|
@ -556,7 +555,6 @@ config ARCH_IXP4XX
|
||||||
config ARCH_DOVE
|
config ARCH_DOVE
|
||||||
bool "Marvell Dove"
|
bool "Marvell Dove"
|
||||||
select ARCH_REQUIRE_GPIOLIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
select COMMON_CLK_DOVE
|
|
||||||
select CPU_V7
|
select CPU_V7
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
select MIGHT_HAVE_PCI
|
select MIGHT_HAVE_PCI
|
||||||
|
@ -744,6 +742,7 @@ config ARCH_RPC
|
||||||
select NEED_MACH_IO_H
|
select NEED_MACH_IO_H
|
||||||
select NEED_MACH_MEMORY_H
|
select NEED_MACH_MEMORY_H
|
||||||
select NO_IOPORT
|
select NO_IOPORT
|
||||||
|
select VIRT_TO_BUS
|
||||||
help
|
help
|
||||||
On the Acorn Risc-PC, Linux can support the internal IDE disk and
|
On the Acorn Risc-PC, Linux can support the internal IDE disk and
|
||||||
CD-ROM interface, serial and parallel port, and the floppy drive.
|
CD-ROM interface, serial and parallel port, and the floppy drive.
|
||||||
|
@ -879,6 +878,7 @@ config ARCH_SHARK
|
||||||
select ISA_DMA
|
select ISA_DMA
|
||||||
select NEED_MACH_MEMORY_H
|
select NEED_MACH_MEMORY_H
|
||||||
select PCI
|
select PCI
|
||||||
|
select VIRT_TO_BUS
|
||||||
select ZONE_DMA
|
select ZONE_DMA
|
||||||
help
|
help
|
||||||
Support for the StrongARM based Digital DNARD machine, also known
|
Support for the StrongARM based Digital DNARD machine, also known
|
||||||
|
@ -1006,12 +1006,12 @@ config ARCH_MULTI_V4_V5
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config ARCH_MULTI_V6
|
config ARCH_MULTI_V6
|
||||||
bool "ARMv6 based platforms (ARM11, Scorpion, ...)"
|
bool "ARMv6 based platforms (ARM11)"
|
||||||
select ARCH_MULTI_V6_V7
|
select ARCH_MULTI_V6_V7
|
||||||
select CPU_V6
|
select CPU_V6
|
||||||
|
|
||||||
config ARCH_MULTI_V7
|
config ARCH_MULTI_V7
|
||||||
bool "ARMv7 based platforms (Cortex-A, PJ4, Krait)"
|
bool "ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)"
|
||||||
default y
|
default y
|
||||||
select ARCH_MULTI_V6_V7
|
select ARCH_MULTI_V6_V7
|
||||||
select ARCH_VEXPRESS
|
select ARCH_VEXPRESS
|
||||||
|
@ -1462,10 +1462,6 @@ config ISA_DMA
|
||||||
bool
|
bool
|
||||||
select ISA_DMA_API
|
select ISA_DMA_API
|
||||||
|
|
||||||
config ARCH_NO_VIRT_TO_BUS
|
|
||||||
def_bool y
|
|
||||||
depends on !ARCH_RPC && !ARCH_NETWINDER && !ARCH_SHARK
|
|
||||||
|
|
||||||
# Select ISA DMA interface
|
# Select ISA DMA interface
|
||||||
config ISA_DMA_API
|
config ISA_DMA_API
|
||||||
bool
|
bool
|
||||||
|
@ -1657,13 +1653,16 @@ config LOCAL_TIMERS
|
||||||
accounting to be spread across the timer interval, preventing a
|
accounting to be spread across the timer interval, preventing a
|
||||||
"thundering herd" at every timer tick.
|
"thundering herd" at every timer tick.
|
||||||
|
|
||||||
|
# The GPIO number here must be sorted by descending number. In case of
|
||||||
|
# a multiplatform kernel, we just want the highest value required by the
|
||||||
|
# selected platforms.
|
||||||
config ARCH_NR_GPIO
|
config ARCH_NR_GPIO
|
||||||
int
|
int
|
||||||
default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
|
default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
|
||||||
default 355 if ARCH_U8500
|
|
||||||
default 264 if MACH_H4700
|
|
||||||
default 512 if SOC_OMAP5
|
default 512 if SOC_OMAP5
|
||||||
|
default 355 if ARCH_U8500
|
||||||
default 288 if ARCH_VT8500 || ARCH_SUNXI
|
default 288 if ARCH_VT8500 || ARCH_SUNXI
|
||||||
|
default 264 if MACH_H4700
|
||||||
default 0
|
default 0
|
||||||
help
|
help
|
||||||
Maximum number of GPIOs in the system.
|
Maximum number of GPIOs in the system.
|
||||||
|
@ -1887,8 +1886,9 @@ config XEN_DOM0
|
||||||
|
|
||||||
config XEN
|
config XEN
|
||||||
bool "Xen guest support on ARM (EXPERIMENTAL)"
|
bool "Xen guest support on ARM (EXPERIMENTAL)"
|
||||||
depends on ARM && OF
|
depends on ARM && AEABI && OF
|
||||||
depends on CPU_V7 && !CPU_V6
|
depends on CPU_V7 && !CPU_V6
|
||||||
|
depends on !GENERIC_ATOMIC64
|
||||||
help
|
help
|
||||||
Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
|
Say Y if you want to run Linux in a Virtual Machine on Xen on ARM.
|
||||||
|
|
||||||
|
|
|
@ -492,7 +492,7 @@ config DEBUG_IMX_UART_PORT
|
||||||
DEBUG_IMX31_UART || \
|
DEBUG_IMX31_UART || \
|
||||||
DEBUG_IMX35_UART || \
|
DEBUG_IMX35_UART || \
|
||||||
DEBUG_IMX51_UART || \
|
DEBUG_IMX51_UART || \
|
||||||
DEBUG_IMX50_IMX53_UART || \
|
DEBUG_IMX53_UART || \
|
||||||
DEBUG_IMX6Q_UART
|
DEBUG_IMX6Q_UART
|
||||||
default 1
|
default 1
|
||||||
help
|
help
|
||||||
|
|
|
@ -115,4 +115,4 @@ i:
|
||||||
$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
|
$(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
|
||||||
$(obj)/Image System.map "$(INSTALL_PATH)"
|
$(obj)/Image System.map "$(INSTALL_PATH)"
|
||||||
|
|
||||||
subdir- := bootp compressed
|
subdir- := bootp compressed dts
|
||||||
|
|
|
@ -120,7 +120,7 @@ ORIG_CFLAGS := $(KBUILD_CFLAGS)
|
||||||
KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
|
KBUILD_CFLAGS = $(subst -pg, , $(ORIG_CFLAGS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ccflags-y := -fpic -fno-builtin -I$(obj)
|
ccflags-y := -fpic -mno-single-pic-base -fno-builtin -I$(obj)
|
||||||
asflags-y := -Wa,-march=all -DZIMAGE
|
asflags-y := -Wa,-march=all -DZIMAGE
|
||||||
|
|
||||||
# Supply kernel BSS size to the decompressor via a linker symbol.
|
# Supply kernel BSS size to the decompressor via a linker symbol.
|
||||||
|
|
|
@ -64,5 +64,13 @@ mvsdio@d00d4000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
/* No CD or WP GPIOs */
|
/* No CD or WP GPIOs */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
usb@d0050000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
usb@d0051000 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,7 +31,6 @@ cpu@0 {
|
||||||
mpic: interrupt-controller@d0020000 {
|
mpic: interrupt-controller@d0020000 {
|
||||||
compatible = "marvell,mpic";
|
compatible = "marvell,mpic";
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
};
|
};
|
||||||
|
@ -54,7 +53,7 @@ serial@d0012000 {
|
||||||
reg = <0xd0012000 0x100>;
|
reg = <0xd0012000 0x100>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
interrupts = <41>;
|
interrupts = <41>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <1>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
serial@d0012100 {
|
serial@d0012100 {
|
||||||
|
@ -62,7 +61,7 @@ serial@d0012100 {
|
||||||
reg = <0xd0012100 0x100>;
|
reg = <0xd0012100 0x100>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
interrupts = <42>;
|
interrupts = <42>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <1>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ serial@d0012200 {
|
||||||
reg = <0xd0012200 0x100>;
|
reg = <0xd0012200 0x100>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
interrupts = <43>;
|
interrupts = <43>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <1>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
serial@d0012300 {
|
serial@d0012300 {
|
||||||
|
@ -54,7 +54,7 @@ serial@d0012300 {
|
||||||
reg = <0xd0012300 0x100>;
|
reg = <0xd0012300 0x100>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
interrupts = <44>;
|
interrupts = <44>;
|
||||||
reg-io-width = <4>;
|
reg-io-width = <1>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -238,8 +238,32 @@ pinctrl_uart1: uart1-0 {
|
||||||
nand {
|
nand {
|
||||||
pinctrl_nand: nand-0 {
|
pinctrl_nand: nand-0 {
|
||||||
atmel,pins =
|
atmel,pins =
|
||||||
<3 4 0x0 0x1 /* PD5 gpio RDY pin pull_up */
|
<3 0 0x1 0x0 /* PD0 periph A Read Enable */
|
||||||
3 5 0x0 0x1>; /* PD4 gpio enable pin pull_up */
|
3 1 0x1 0x0 /* PD1 periph A Write Enable */
|
||||||
|
3 2 0x1 0x0 /* PD2 periph A Address Latch Enable */
|
||||||
|
3 3 0x1 0x0 /* PD3 periph A Command Latch Enable */
|
||||||
|
3 4 0x0 0x1 /* PD4 gpio Chip Enable pin pull_up */
|
||||||
|
3 5 0x0 0x1 /* PD5 gpio RDY/BUSY pin pull_up */
|
||||||
|
3 6 0x1 0x0 /* PD6 periph A Data bit 0 */
|
||||||
|
3 7 0x1 0x0 /* PD7 periph A Data bit 1 */
|
||||||
|
3 8 0x1 0x0 /* PD8 periph A Data bit 2 */
|
||||||
|
3 9 0x1 0x0 /* PD9 periph A Data bit 3 */
|
||||||
|
3 10 0x1 0x0 /* PD10 periph A Data bit 4 */
|
||||||
|
3 11 0x1 0x0 /* PD11 periph A Data bit 5 */
|
||||||
|
3 12 0x1 0x0 /* PD12 periph A Data bit 6 */
|
||||||
|
3 13 0x1 0x0>; /* PD13 periph A Data bit 7 */
|
||||||
|
};
|
||||||
|
|
||||||
|
pinctrl_nand_16bits: nand_16bits-0 {
|
||||||
|
atmel,pins =
|
||||||
|
<3 14 0x1 0x0 /* PD14 periph A Data bit 8 */
|
||||||
|
3 15 0x1 0x0 /* PD15 periph A Data bit 9 */
|
||||||
|
3 16 0x1 0x0 /* PD16 periph A Data bit 10 */
|
||||||
|
3 17 0x1 0x0 /* PD17 periph A Data bit 11 */
|
||||||
|
3 18 0x1 0x0 /* PD18 periph A Data bit 12 */
|
||||||
|
3 19 0x1 0x0 /* PD19 periph A Data bit 13 */
|
||||||
|
3 20 0x1 0x0 /* PD20 periph A Data bit 14 */
|
||||||
|
3 21 0x1 0x0>; /* PD21 periph A Data bit 15 */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ clk_i2c: i2c {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <150000000>;
|
clock-frequency = <250000000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -319,9 +319,8 @@ db8500_esram34_ret_reg: db8500_esram34_ret {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ab8500@5 {
|
ab8500 {
|
||||||
compatible = "stericsson,ab8500";
|
compatible = "stericsson,ab8500";
|
||||||
reg = <5>; /* mailbox 5 is i2c */
|
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
interrupts = <0 40 0x4>;
|
interrupts = <0 40 0x4>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
|
|
@ -197,6 +197,11 @@ sata0: sata@a0000 {
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
rtc@d8500 {
|
||||||
|
compatible = "marvell,orion-rtc";
|
||||||
|
reg = <0xd8500 0x20>;
|
||||||
|
};
|
||||||
|
|
||||||
crypto: crypto@30000 {
|
crypto: crypto@30000 {
|
||||||
compatible = "marvell,orion-crypto";
|
compatible = "marvell,orion-crypto";
|
||||||
reg = <0x30000 0x10000>,
|
reg = <0x30000 0x10000>,
|
||||||
|
|
|
@ -275,18 +275,27 @@ pdma0: pdma@12680000 {
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
reg = <0x12680000 0x1000>;
|
reg = <0x12680000 0x1000>;
|
||||||
interrupts = <0 35 0>;
|
interrupts = <0 35 0>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
#dma-channels = <8>;
|
||||||
|
#dma-requests = <32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pdma1: pdma@12690000 {
|
pdma1: pdma@12690000 {
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
reg = <0x12690000 0x1000>;
|
reg = <0x12690000 0x1000>;
|
||||||
interrupts = <0 36 0>;
|
interrupts = <0 36 0>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
#dma-channels = <8>;
|
||||||
|
#dma-requests = <32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mdma1: mdma@12850000 {
|
mdma1: mdma@12850000 {
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
reg = <0x12850000 0x1000>;
|
reg = <0x12850000 0x1000>;
|
||||||
interrupts = <0 34 0>;
|
interrupts = <0 34 0>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
#dma-channels = <8>;
|
||||||
|
#dma-requests = <1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -142,12 +142,18 @@ pdma0: pdma@121A0000 {
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
reg = <0x120000 0x1000>;
|
reg = <0x120000 0x1000>;
|
||||||
interrupts = <0 34 0>;
|
interrupts = <0 34 0>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
#dma-channels = <8>;
|
||||||
|
#dma-requests = <32>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pdma1: pdma@121B0000 {
|
pdma1: pdma@121B0000 {
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
reg = <0x121000 0x1000>;
|
reg = <0x121000 0x1000>;
|
||||||
interrupts = <0 35 0>;
|
interrupts = <0 35 0>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
#dma-channels = <8>;
|
||||||
|
#dma-requests = <32>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -221,7 +221,7 @@ db8500_esram34_ret_reg: db8500_esram34_ret {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ab8500@5 {
|
ab8500 {
|
||||||
ab8500-regulators {
|
ab8500-regulators {
|
||||||
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
||||||
regulator-name = "V-DISPLAY";
|
regulator-name = "V-DISPLAY";
|
||||||
|
|
|
@ -158,7 +158,7 @@ db8500_esram34_ret_reg: db8500_esram34_ret {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ab8500@5 {
|
ab8500 {
|
||||||
ab8500-regulators {
|
ab8500-regulators {
|
||||||
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
||||||
regulator-name = "V-DISPLAY";
|
regulator-name = "V-DISPLAY";
|
||||||
|
|
|
@ -42,10 +42,9 @@ pinctrl_disp1_1: disp1-grp1 {
|
||||||
fsl,pins = <689 0x10000 /* DISP1_DRDY */
|
fsl,pins = <689 0x10000 /* DISP1_DRDY */
|
||||||
482 0x10000 /* DISP1_HSYNC */
|
482 0x10000 /* DISP1_HSYNC */
|
||||||
489 0x10000 /* DISP1_VSYNC */
|
489 0x10000 /* DISP1_VSYNC */
|
||||||
684 0x10000 /* DISP1_DAT_0 */
|
|
||||||
515 0x10000 /* DISP1_DAT_22 */
|
515 0x10000 /* DISP1_DAT_22 */
|
||||||
523 0x10000 /* DISP1_DAT_23 */
|
523 0x10000 /* DISP1_DAT_23 */
|
||||||
543 0x10000 /* DISP1_DAT_21 */
|
545 0x10000 /* DISP1_DAT_21 */
|
||||||
553 0x10000 /* DISP1_DAT_20 */
|
553 0x10000 /* DISP1_DAT_20 */
|
||||||
558 0x10000 /* DISP1_DAT_19 */
|
558 0x10000 /* DISP1_DAT_19 */
|
||||||
564 0x10000 /* DISP1_DAT_18 */
|
564 0x10000 /* DISP1_DAT_18 */
|
||||||
|
|
|
@ -42,12 +42,10 @@ orange-usb {
|
||||||
|
|
||||||
ocp@f1000000 {
|
ocp@f1000000 {
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <166666667>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12100 {
|
serial@12100 {
|
||||||
clock-frequency = <166666667>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -50,7 +50,6 @@ lm75: lm75@48 {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -37,7 +37,6 @@ pmx_led_orange: pmx-led-orange {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,6 @@ pmx_led_wifi_ap: pmx-led-wifi-ap {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,6 @@ pmx_led_orange: pmx-led_orange {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,6 @@ pmx_button_usb_copy: pmx-button-usb-copy {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,6 @@ lm63: lm63@4c {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,6 @@ lm63: lm63@4c {
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,6 @@ pmx_i2c_gpio_scl: pmx-gpio-scl {
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,6 @@ memory {
|
||||||
|
|
||||||
ocp@f1000000 {
|
ocp@f1000000 {
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <166666667>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,7 +13,6 @@ memory {
|
||||||
|
|
||||||
ocp@f1000000 {
|
ocp@f1000000 {
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -90,7 +90,6 @@ eeprom@57 {
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@ pmx_ns2_sata1: pmx-ns2-sata1 {
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <166666667>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -117,7 +117,6 @@ pmx_pwr_off: pmx-pwr-off {
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,10 @@ chosen {
|
||||||
|
|
||||||
ocp@f1000000 {
|
ocp@f1000000 {
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12100 {
|
serial@12100 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,6 @@ pmx_led_wifi_yellow: pmx-led-wifi-yellow {
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
clock-frequency = <200000000>;
|
|
||||||
status = "ok";
|
status = "ok";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ gpio0: gpio@10100 {
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
interrupts = <35>, <36>, <37>, <38>;
|
interrupts = <35>, <36>, <37>, <38>;
|
||||||
|
clocks = <&gate_clk 7>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio1: gpio@10140 {
|
gpio1: gpio@10140 {
|
||||||
|
@ -49,6 +50,7 @@ gpio1: gpio@10140 {
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
interrupts = <39>, <40>, <41>;
|
interrupts = <39>, <40>, <41>;
|
||||||
|
clocks = <&gate_clk 7>;
|
||||||
};
|
};
|
||||||
|
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
|
@ -57,7 +59,6 @@ serial@12000 {
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
interrupts = <33>;
|
interrupts = <33>;
|
||||||
clocks = <&gate_clk 7>;
|
clocks = <&gate_clk 7>;
|
||||||
/* set clock-frequency in board dts */
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -67,7 +68,6 @@ serial@12100 {
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
interrupts = <34>;
|
interrupts = <34>;
|
||||||
clocks = <&gate_clk 7>;
|
clocks = <&gate_clk 7>;
|
||||||
/* set clock-frequency in board dts */
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,6 +75,7 @@ rtc@10300 {
|
||||||
compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc";
|
compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc";
|
||||||
reg = <0x10300 0x20>;
|
reg = <0x10300 0x20>;
|
||||||
interrupts = <53>;
|
interrupts = <53>;
|
||||||
|
clocks = <&gate_clk 7>;
|
||||||
};
|
};
|
||||||
|
|
||||||
spi@10600 {
|
spi@10600 {
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
model = "LaCie Ethernet Disk mini V2";
|
model = "LaCie Ethernet Disk mini V2";
|
||||||
compatible = "lacie,ethernet-disk-mini-v2", "marvell-orion5x-88f5182", "marvell,orion5x";
|
compatible = "lacie,ethernet-disk-mini-v2", "marvell,orion5x-88f5182", "marvell,orion5x";
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
reg = <0x00000000 0x4000000>; /* 64 MB */
|
reg = <0x00000000 0x4000000>; /* 64 MB */
|
||||||
|
|
|
@ -298,7 +298,7 @@ db8500_esram34_ret_reg: db8500_esram34_ret {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ab8500@5 {
|
ab8500 {
|
||||||
ab8500-regulators {
|
ab8500-regulators {
|
||||||
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
||||||
regulator-name = "V-DISPLAY";
|
regulator-name = "V-DISPLAY";
|
||||||
|
|
|
@ -75,6 +75,9 @@ pdma: pdma@ffe01000 {
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
reg = <0xffe01000 0x1000>;
|
reg = <0xffe01000 0x1000>;
|
||||||
interrupts = <0 180 4>;
|
interrupts = <0 180 4>;
|
||||||
|
#dma-cells = <1>;
|
||||||
|
#dma-channels = <8>;
|
||||||
|
#dma-requests = <32>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,7 @@ timer@50004600 {
|
||||||
compatible = "arm,cortex-a9-twd-timer";
|
compatible = "arm,cortex-a9-twd-timer";
|
||||||
reg = <0x50040600 0x20>;
|
reg = <0x50040600 0x20>;
|
||||||
interrupts = <1 13 0x304>;
|
interrupts = <1 13 0x304>;
|
||||||
|
clocks = <&tegra_car 132>;
|
||||||
};
|
};
|
||||||
|
|
||||||
intc: interrupt-controller {
|
intc: interrupt-controller {
|
||||||
|
|
|
@ -119,6 +119,7 @@ timer@50004600 {
|
||||||
compatible = "arm,cortex-a9-twd-timer";
|
compatible = "arm,cortex-a9-twd-timer";
|
||||||
reg = <0x50040600 0x20>;
|
reg = <0x50040600 0x20>;
|
||||||
interrupts = <1 13 0xf04>;
|
interrupts = <1 13 0xf04>;
|
||||||
|
clocks = <&tegra_car 214>;
|
||||||
};
|
};
|
||||||
|
|
||||||
intc: interrupt-controller {
|
intc: interrupt-controller {
|
||||||
|
|
|
@ -116,6 +116,7 @@ CONFIG_SND_SOC=y
|
||||||
CONFIG_SND_MXS_SOC=y
|
CONFIG_SND_MXS_SOC=y
|
||||||
CONFIG_SND_SOC_MXS_SGTL5000=y
|
CONFIG_SND_SOC_MXS_SGTL5000=y
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
CONFIG_USB_CHIPIDEA=y
|
CONFIG_USB_CHIPIDEA=y
|
||||||
CONFIG_USB_CHIPIDEA_HOST=y
|
CONFIG_USB_CHIPIDEA_HOST=y
|
||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
|
|
|
@ -126,6 +126,8 @@ CONFIG_INPUT_MISC=y
|
||||||
CONFIG_INPUT_TWL4030_PWRBUTTON=y
|
CONFIG_INPUT_TWL4030_PWRBUTTON=y
|
||||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||||
# CONFIG_LEGACY_PTYS is not set
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
|
CONFIG_SERIAL_8250=y
|
||||||
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
CONFIG_SERIAL_8250_NR_UARTS=32
|
CONFIG_SERIAL_8250_NR_UARTS=32
|
||||||
CONFIG_SERIAL_8250_EXTENDED=y
|
CONFIG_SERIAL_8250_EXTENDED=y
|
||||||
CONFIG_SERIAL_8250_MANY_PORTS=y
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
|
|
|
@ -5,15 +5,15 @@
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
#ifdef CONFIG_CPU_HAS_ASID
|
#ifdef CONFIG_CPU_HAS_ASID
|
||||||
u64 id;
|
atomic64_t id;
|
||||||
#endif
|
#endif
|
||||||
unsigned int vmalloc_seq;
|
unsigned int vmalloc_seq;
|
||||||
} mm_context_t;
|
} mm_context_t;
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_HAS_ASID
|
#ifdef CONFIG_CPU_HAS_ASID
|
||||||
#define ASID_BITS 8
|
#define ASID_BITS 8
|
||||||
#define ASID_MASK ((~0ULL) << ASID_BITS)
|
#define ASID_MASK ((~0ULL) << ASID_BITS)
|
||||||
#define ASID(mm) ((mm)->context.id & ~ASID_MASK)
|
#define ASID(mm) ((mm)->context.id.counter & ~ASID_MASK)
|
||||||
#else
|
#else
|
||||||
#define ASID(mm) (0)
|
#define ASID(mm) (0)
|
||||||
#endif
|
#endif
|
||||||
|
@ -26,7 +26,7 @@ typedef struct {
|
||||||
* modified for 2.6 by Hyok S. Choi <hyok.choi@samsung.com>
|
* modified for 2.6 by Hyok S. Choi <hyok.choi@samsung.com>
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned long end_brk;
|
unsigned long end_brk;
|
||||||
} mm_context_t;
|
} mm_context_t;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,7 +25,7 @@ void __check_vmalloc_seq(struct mm_struct *mm);
|
||||||
#ifdef CONFIG_CPU_HAS_ASID
|
#ifdef CONFIG_CPU_HAS_ASID
|
||||||
|
|
||||||
void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk);
|
void check_and_switch_context(struct mm_struct *mm, struct task_struct *tsk);
|
||||||
#define init_new_context(tsk,mm) ({ mm->context.id = 0; })
|
#define init_new_context(tsk,mm) ({ atomic64_set(&mm->context.id, 0); 0; })
|
||||||
|
|
||||||
#else /* !CONFIG_CPU_HAS_ASID */
|
#else /* !CONFIG_CPU_HAS_ASID */
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,13 @@
|
||||||
#define TLB_V6_D_ASID (1 << 17)
|
#define TLB_V6_D_ASID (1 << 17)
|
||||||
#define TLB_V6_I_ASID (1 << 18)
|
#define TLB_V6_I_ASID (1 << 18)
|
||||||
|
|
||||||
|
#define TLB_V6_BP (1 << 19)
|
||||||
|
|
||||||
/* Unified Inner Shareable TLB operations (ARMv7 MP extensions) */
|
/* Unified Inner Shareable TLB operations (ARMv7 MP extensions) */
|
||||||
#define TLB_V7_UIS_PAGE (1 << 19)
|
#define TLB_V7_UIS_PAGE (1 << 20)
|
||||||
#define TLB_V7_UIS_FULL (1 << 20)
|
#define TLB_V7_UIS_FULL (1 << 21)
|
||||||
#define TLB_V7_UIS_ASID (1 << 21)
|
#define TLB_V7_UIS_ASID (1 << 22)
|
||||||
|
#define TLB_V7_UIS_BP (1 << 23)
|
||||||
|
|
||||||
#define TLB_BARRIER (1 << 28)
|
#define TLB_BARRIER (1 << 28)
|
||||||
#define TLB_L2CLEAN_FR (1 << 29) /* Feroceon */
|
#define TLB_L2CLEAN_FR (1 << 29) /* Feroceon */
|
||||||
|
@ -150,7 +153,8 @@
|
||||||
#define v6wbi_tlb_flags (TLB_WB | TLB_DCLEAN | TLB_BARRIER | \
|
#define v6wbi_tlb_flags (TLB_WB | TLB_DCLEAN | TLB_BARRIER | \
|
||||||
TLB_V6_I_FULL | TLB_V6_D_FULL | \
|
TLB_V6_I_FULL | TLB_V6_D_FULL | \
|
||||||
TLB_V6_I_PAGE | TLB_V6_D_PAGE | \
|
TLB_V6_I_PAGE | TLB_V6_D_PAGE | \
|
||||||
TLB_V6_I_ASID | TLB_V6_D_ASID)
|
TLB_V6_I_ASID | TLB_V6_D_ASID | \
|
||||||
|
TLB_V6_BP)
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_TLB_V6
|
#ifdef CONFIG_CPU_TLB_V6
|
||||||
# define v6wbi_possible_flags v6wbi_tlb_flags
|
# define v6wbi_possible_flags v6wbi_tlb_flags
|
||||||
|
@ -166,9 +170,11 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define v7wbi_tlb_flags_smp (TLB_WB | TLB_DCLEAN | TLB_BARRIER | \
|
#define v7wbi_tlb_flags_smp (TLB_WB | TLB_DCLEAN | TLB_BARRIER | \
|
||||||
TLB_V7_UIS_FULL | TLB_V7_UIS_PAGE | TLB_V7_UIS_ASID)
|
TLB_V7_UIS_FULL | TLB_V7_UIS_PAGE | \
|
||||||
|
TLB_V7_UIS_ASID | TLB_V7_UIS_BP)
|
||||||
#define v7wbi_tlb_flags_up (TLB_WB | TLB_DCLEAN | TLB_BARRIER | \
|
#define v7wbi_tlb_flags_up (TLB_WB | TLB_DCLEAN | TLB_BARRIER | \
|
||||||
TLB_V6_U_FULL | TLB_V6_U_PAGE | TLB_V6_U_ASID)
|
TLB_V6_U_FULL | TLB_V6_U_PAGE | \
|
||||||
|
TLB_V6_U_ASID | TLB_V6_BP)
|
||||||
|
|
||||||
#ifdef CONFIG_CPU_TLB_V7
|
#ifdef CONFIG_CPU_TLB_V7
|
||||||
|
|
||||||
|
@ -430,6 +436,20 @@ static inline void local_flush_tlb_kernel_page(unsigned long kaddr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void local_flush_bp_all(void)
|
||||||
|
{
|
||||||
|
const int zero = 0;
|
||||||
|
const unsigned int __tlb_flag = __cpu_tlb_flags;
|
||||||
|
|
||||||
|
if (tlb_flag(TLB_V7_UIS_BP))
|
||||||
|
asm("mcr p15, 0, %0, c7, c1, 6" : : "r" (zero));
|
||||||
|
else if (tlb_flag(TLB_V6_BP))
|
||||||
|
asm("mcr p15, 0, %0, c7, c5, 6" : : "r" (zero));
|
||||||
|
|
||||||
|
if (tlb_flag(TLB_BARRIER))
|
||||||
|
isb();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* flush_pmd_entry
|
* flush_pmd_entry
|
||||||
*
|
*
|
||||||
|
@ -480,6 +500,7 @@ static inline void clean_pmd_entry(void *pmd)
|
||||||
#define flush_tlb_kernel_page local_flush_tlb_kernel_page
|
#define flush_tlb_kernel_page local_flush_tlb_kernel_page
|
||||||
#define flush_tlb_range local_flush_tlb_range
|
#define flush_tlb_range local_flush_tlb_range
|
||||||
#define flush_tlb_kernel_range local_flush_tlb_kernel_range
|
#define flush_tlb_kernel_range local_flush_tlb_kernel_range
|
||||||
|
#define flush_bp_all local_flush_bp_all
|
||||||
#else
|
#else
|
||||||
extern void flush_tlb_all(void);
|
extern void flush_tlb_all(void);
|
||||||
extern void flush_tlb_mm(struct mm_struct *mm);
|
extern void flush_tlb_mm(struct mm_struct *mm);
|
||||||
|
@ -487,6 +508,7 @@ extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr);
|
||||||
extern void flush_tlb_kernel_page(unsigned long kaddr);
|
extern void flush_tlb_kernel_page(unsigned long kaddr);
|
||||||
extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
|
extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
|
||||||
extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
|
extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
|
||||||
|
extern void flush_bp_all(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define _ASM_ARM_XEN_EVENTS_H
|
#define _ASM_ARM_XEN_EVENTS_H
|
||||||
|
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
|
#include <asm/atomic.h>
|
||||||
|
|
||||||
enum ipi_vector {
|
enum ipi_vector {
|
||||||
XEN_PLACEHOLDER_VECTOR,
|
XEN_PLACEHOLDER_VECTOR,
|
||||||
|
@ -15,26 +16,8 @@ static inline int xen_irqs_disabled(struct pt_regs *regs)
|
||||||
return raw_irqs_disabled_flags(regs->ARM_cpsr);
|
return raw_irqs_disabled_flags(regs->ARM_cpsr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
#define xchg_xen_ulong(ptr, val) atomic64_xchg(container_of((ptr), \
|
||||||
* We cannot use xchg because it does not support 8-byte
|
atomic64_t, \
|
||||||
* values. However it is safe to use {ldr,dtd}exd directly because all
|
counter), (val))
|
||||||
* platforms which Xen can run on support those instructions.
|
|
||||||
*/
|
|
||||||
static inline xen_ulong_t xchg_xen_ulong(xen_ulong_t *ptr, xen_ulong_t val)
|
|
||||||
{
|
|
||||||
xen_ulong_t oldval;
|
|
||||||
unsigned int tmp;
|
|
||||||
|
|
||||||
wmb();
|
|
||||||
asm volatile("@ xchg_xen_ulong\n"
|
|
||||||
"1: ldrexd %0, %H0, [%3]\n"
|
|
||||||
" strexd %1, %2, %H2, [%3]\n"
|
|
||||||
" teq %1, #0\n"
|
|
||||||
" bne 1b"
|
|
||||||
: "=&r" (oldval), "=&r" (tmp)
|
|
||||||
: "r" (val), "r" (ptr)
|
|
||||||
: "memory", "cc");
|
|
||||||
return oldval;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* _ASM_ARM_XEN_EVENTS_H */
|
#endif /* _ASM_ARM_XEN_EVENTS_H */
|
||||||
|
|
|
@ -404,7 +404,7 @@
|
||||||
#define __NR_setns (__NR_SYSCALL_BASE+375)
|
#define __NR_setns (__NR_SYSCALL_BASE+375)
|
||||||
#define __NR_process_vm_readv (__NR_SYSCALL_BASE+376)
|
#define __NR_process_vm_readv (__NR_SYSCALL_BASE+376)
|
||||||
#define __NR_process_vm_writev (__NR_SYSCALL_BASE+377)
|
#define __NR_process_vm_writev (__NR_SYSCALL_BASE+377)
|
||||||
/* 378 for kcmp */
|
#define __NR_kcmp (__NR_SYSCALL_BASE+378)
|
||||||
#define __NR_finit_module (__NR_SYSCALL_BASE+379)
|
#define __NR_finit_module (__NR_SYSCALL_BASE+379)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -110,7 +110,7 @@ int main(void)
|
||||||
BLANK();
|
BLANK();
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_CPU_HAS_ASID
|
#ifdef CONFIG_CPU_HAS_ASID
|
||||||
DEFINE(MM_CONTEXT_ID, offsetof(struct mm_struct, context.id));
|
DEFINE(MM_CONTEXT_ID, offsetof(struct mm_struct, context.id.counter));
|
||||||
BLANK();
|
BLANK();
|
||||||
#endif
|
#endif
|
||||||
DEFINE(VMA_VM_MM, offsetof(struct vm_area_struct, vm_mm));
|
DEFINE(VMA_VM_MM, offsetof(struct vm_area_struct, vm_mm));
|
||||||
|
|
|
@ -387,7 +387,7 @@
|
||||||
/* 375 */ CALL(sys_setns)
|
/* 375 */ CALL(sys_setns)
|
||||||
CALL(sys_process_vm_readv)
|
CALL(sys_process_vm_readv)
|
||||||
CALL(sys_process_vm_writev)
|
CALL(sys_process_vm_writev)
|
||||||
CALL(sys_ni_syscall) /* reserved for sys_kcmp */
|
CALL(sys_kcmp)
|
||||||
CALL(sys_finit_module)
|
CALL(sys_finit_module)
|
||||||
#ifndef syscalls_counted
|
#ifndef syscalls_counted
|
||||||
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
||||||
|
|
|
@ -184,13 +184,22 @@ __create_page_tables:
|
||||||
orr r3, r3, #3 @ PGD block type
|
orr r3, r3, #3 @ PGD block type
|
||||||
mov r6, #4 @ PTRS_PER_PGD
|
mov r6, #4 @ PTRS_PER_PGD
|
||||||
mov r7, #1 << (55 - 32) @ L_PGD_SWAPPER
|
mov r7, #1 << (55 - 32) @ L_PGD_SWAPPER
|
||||||
1: str r3, [r0], #4 @ set bottom PGD entry bits
|
1:
|
||||||
|
#ifdef CONFIG_CPU_ENDIAN_BE8
|
||||||
str r7, [r0], #4 @ set top PGD entry bits
|
str r7, [r0], #4 @ set top PGD entry bits
|
||||||
|
str r3, [r0], #4 @ set bottom PGD entry bits
|
||||||
|
#else
|
||||||
|
str r3, [r0], #4 @ set bottom PGD entry bits
|
||||||
|
str r7, [r0], #4 @ set top PGD entry bits
|
||||||
|
#endif
|
||||||
add r3, r3, #0x1000 @ next PMD table
|
add r3, r3, #0x1000 @ next PMD table
|
||||||
subs r6, r6, #1
|
subs r6, r6, #1
|
||||||
bne 1b
|
bne 1b
|
||||||
|
|
||||||
add r4, r4, #0x1000 @ point to the PMD tables
|
add r4, r4, #0x1000 @ point to the PMD tables
|
||||||
|
#ifdef CONFIG_CPU_ENDIAN_BE8
|
||||||
|
add r4, r4, #4 @ we only write the bottom word
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ldr r7, [r10, #PROCINFO_MM_MMUFLAGS] @ mm_mmuflags
|
ldr r7, [r10, #PROCINFO_MM_MMUFLAGS] @ mm_mmuflags
|
||||||
|
@ -258,6 +267,11 @@ __create_page_tables:
|
||||||
addne r6, r6, #1 << SECTION_SHIFT
|
addne r6, r6, #1 << SECTION_SHIFT
|
||||||
strne r6, [r3]
|
strne r6, [r3]
|
||||||
|
|
||||||
|
#if defined(CONFIG_LPAE) && defined(CONFIG_CPU_ENDIAN_BE8)
|
||||||
|
sub r4, r4, #4 @ Fixup page table pointer
|
||||||
|
@ for 64-bit descriptors
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_LL
|
#ifdef CONFIG_DEBUG_LL
|
||||||
#if !defined(CONFIG_DEBUG_ICEDCC) && !defined(CONFIG_DEBUG_SEMIHOSTING)
|
#if !defined(CONFIG_DEBUG_ICEDCC) && !defined(CONFIG_DEBUG_SEMIHOSTING)
|
||||||
/*
|
/*
|
||||||
|
@ -276,12 +290,16 @@ __create_page_tables:
|
||||||
orr r3, r7, r3, lsl #SECTION_SHIFT
|
orr r3, r7, r3, lsl #SECTION_SHIFT
|
||||||
#ifdef CONFIG_ARM_LPAE
|
#ifdef CONFIG_ARM_LPAE
|
||||||
mov r7, #1 << (54 - 32) @ XN
|
mov r7, #1 << (54 - 32) @ XN
|
||||||
|
#ifdef CONFIG_CPU_ENDIAN_BE8
|
||||||
|
str r7, [r0], #4
|
||||||
|
str r3, [r0], #4
|
||||||
|
#else
|
||||||
|
str r3, [r0], #4
|
||||||
|
str r7, [r0], #4
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
orr r3, r3, #PMD_SECT_XN
|
orr r3, r3, #PMD_SECT_XN
|
||||||
#endif
|
|
||||||
str r3, [r0], #4
|
str r3, [r0], #4
|
||||||
#ifdef CONFIG_ARM_LPAE
|
|
||||||
str r7, [r0], #4
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else /* CONFIG_DEBUG_ICEDCC || CONFIG_DEBUG_SEMIHOSTING */
|
#else /* CONFIG_DEBUG_ICEDCC || CONFIG_DEBUG_SEMIHOSTING */
|
||||||
|
|
|
@ -1023,7 +1023,7 @@ static void reset_ctrl_regs(void *unused)
|
||||||
static int __cpuinit dbg_reset_notify(struct notifier_block *self,
|
static int __cpuinit dbg_reset_notify(struct notifier_block *self,
|
||||||
unsigned long action, void *cpu)
|
unsigned long action, void *cpu)
|
||||||
{
|
{
|
||||||
if (action == CPU_ONLINE)
|
if ((action & ~CPU_TASKS_FROZEN) == CPU_ONLINE)
|
||||||
smp_call_function_single((int)cpu, reset_ctrl_regs, NULL, 1);
|
smp_call_function_single((int)cpu, reset_ctrl_regs, NULL, 1);
|
||||||
|
|
||||||
return NOTIFY_OK;
|
return NOTIFY_OK;
|
||||||
|
|
|
@ -400,7 +400,7 @@ __hw_perf_event_init(struct perf_event *event)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (event->group_leader != event) {
|
if (event->group_leader != event) {
|
||||||
if (validate_group(event) != 0);
|
if (validate_group(event) != 0)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -484,7 +484,7 @@ const struct dev_pm_ops armpmu_dev_pm_ops = {
|
||||||
SET_RUNTIME_PM_OPS(armpmu_runtime_suspend, armpmu_runtime_resume, NULL)
|
SET_RUNTIME_PM_OPS(armpmu_runtime_suspend, armpmu_runtime_resume, NULL)
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init armpmu_init(struct arm_pmu *armpmu)
|
static void armpmu_init(struct arm_pmu *armpmu)
|
||||||
{
|
{
|
||||||
atomic_set(&armpmu->active_events, 0);
|
atomic_set(&armpmu->active_events, 0);
|
||||||
mutex_init(&armpmu->reserve_mutex);
|
mutex_init(&armpmu->reserve_mutex);
|
||||||
|
|
|
@ -774,7 +774,7 @@ static const unsigned armv7_a7_perf_cache_map[PERF_COUNT_HW_CACHE_MAX]
|
||||||
/*
|
/*
|
||||||
* PMXEVTYPER: Event selection reg
|
* PMXEVTYPER: Event selection reg
|
||||||
*/
|
*/
|
||||||
#define ARMV7_EVTYPE_MASK 0xc00000ff /* Mask for writable bits */
|
#define ARMV7_EVTYPE_MASK 0xc80000ff /* Mask for writable bits */
|
||||||
#define ARMV7_EVTYPE_EVENT 0xff /* Mask for EVENT bits */
|
#define ARMV7_EVTYPE_EVENT 0xff /* Mask for EVENT bits */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -285,6 +285,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
|
||||||
* switch away from it before attempting any exclusive accesses.
|
* switch away from it before attempting any exclusive accesses.
|
||||||
*/
|
*/
|
||||||
cpu_switch_mm(mm->pgd, mm);
|
cpu_switch_mm(mm->pgd, mm);
|
||||||
|
local_flush_bp_all();
|
||||||
enter_lazy_tlb(mm, current);
|
enter_lazy_tlb(mm, current);
|
||||||
local_flush_tlb_all();
|
local_flush_tlb_all();
|
||||||
|
|
||||||
|
@ -479,7 +480,7 @@ static void __cpuinit broadcast_timer_setup(struct clock_event_device *evt)
|
||||||
evt->features = CLOCK_EVT_FEAT_ONESHOT |
|
evt->features = CLOCK_EVT_FEAT_ONESHOT |
|
||||||
CLOCK_EVT_FEAT_PERIODIC |
|
CLOCK_EVT_FEAT_PERIODIC |
|
||||||
CLOCK_EVT_FEAT_DUMMY;
|
CLOCK_EVT_FEAT_DUMMY;
|
||||||
evt->rating = 400;
|
evt->rating = 100;
|
||||||
evt->mult = 1;
|
evt->mult = 1;
|
||||||
evt->set_mode = broadcast_timer_set_mode;
|
evt->set_mode = broadcast_timer_set_mode;
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,11 @@ static inline void ipi_flush_tlb_kernel_range(void *arg)
|
||||||
local_flush_tlb_kernel_range(ta->ta_start, ta->ta_end);
|
local_flush_tlb_kernel_range(ta->ta_start, ta->ta_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void ipi_flush_bp_all(void *ignored)
|
||||||
|
{
|
||||||
|
local_flush_bp_all();
|
||||||
|
}
|
||||||
|
|
||||||
void flush_tlb_all(void)
|
void flush_tlb_all(void)
|
||||||
{
|
{
|
||||||
if (tlb_ops_need_broadcast())
|
if (tlb_ops_need_broadcast())
|
||||||
|
@ -127,3 +132,10 @@ void flush_tlb_kernel_range(unsigned long start, unsigned long end)
|
||||||
local_flush_tlb_kernel_range(start, end);
|
local_flush_tlb_kernel_range(start, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void flush_bp_all(void)
|
||||||
|
{
|
||||||
|
if (tlb_ops_need_broadcast())
|
||||||
|
on_each_cpu(ipi_flush_bp_all, NULL, 1);
|
||||||
|
else
|
||||||
|
local_flush_bp_all();
|
||||||
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <linux/of_irq.h>
|
#include <linux/of_irq.h>
|
||||||
#include <linux/of_address.h>
|
#include <linux/of_address.h>
|
||||||
|
|
||||||
|
#include <asm/smp_plat.h>
|
||||||
#include <asm/smp_twd.h>
|
#include <asm/smp_twd.h>
|
||||||
#include <asm/localtimer.h>
|
#include <asm/localtimer.h>
|
||||||
|
|
||||||
|
@ -373,6 +374,9 @@ void __init twd_local_timer_of_register(void)
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
|
if (!is_smp() || !setup_max_cpus)
|
||||||
|
return;
|
||||||
|
|
||||||
np = of_find_matching_node(NULL, twd_of_match);
|
np = of_find_matching_node(NULL, twd_of_match);
|
||||||
if (!np)
|
if (!np)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -68,6 +68,7 @@ int cpu_suspend(unsigned long arg, int (*fn)(unsigned long))
|
||||||
ret = __cpu_suspend(arg, fn);
|
ret = __cpu_suspend(arg, fn);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
cpu_switch_mm(mm->pgd, mm);
|
cpu_switch_mm(mm->pgd, mm);
|
||||||
|
local_flush_bp_all();
|
||||||
local_flush_tlb_all();
|
local_flush_tlb_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,27 +14,15 @@
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 5
|
.align 5
|
||||||
.word 0
|
|
||||||
|
|
||||||
1: subs r2, r2, #4 @ 1 do we have enough
|
|
||||||
blt 5f @ 1 bytes to align with?
|
|
||||||
cmp r3, #2 @ 1
|
|
||||||
strltb r1, [r0], #1 @ 1
|
|
||||||
strleb r1, [r0], #1 @ 1
|
|
||||||
strb r1, [r0], #1 @ 1
|
|
||||||
add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
|
|
||||||
/*
|
|
||||||
* The pointer is now aligned and the length is adjusted. Try doing the
|
|
||||||
* memset again.
|
|
||||||
*/
|
|
||||||
|
|
||||||
ENTRY(memset)
|
ENTRY(memset)
|
||||||
ands r3, r0, #3 @ 1 unaligned?
|
ands r3, r0, #3 @ 1 unaligned?
|
||||||
bne 1b @ 1
|
mov ip, r0 @ preserve r0 as return value
|
||||||
|
bne 6f @ 1
|
||||||
/*
|
/*
|
||||||
* we know that the pointer in r0 is aligned to a word boundary.
|
* we know that the pointer in ip is aligned to a word boundary.
|
||||||
*/
|
*/
|
||||||
orr r1, r1, r1, lsl #8
|
1: orr r1, r1, r1, lsl #8
|
||||||
orr r1, r1, r1, lsl #16
|
orr r1, r1, r1, lsl #16
|
||||||
mov r3, r1
|
mov r3, r1
|
||||||
cmp r2, #16
|
cmp r2, #16
|
||||||
|
@ -43,29 +31,28 @@ ENTRY(memset)
|
||||||
#if ! CALGN(1)+0
|
#if ! CALGN(1)+0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We need an extra register for this loop - save the return address and
|
* We need 2 extra registers for this loop - use r8 and the LR
|
||||||
* use the LR
|
|
||||||
*/
|
*/
|
||||||
str lr, [sp, #-4]!
|
stmfd sp!, {r8, lr}
|
||||||
mov ip, r1
|
mov r8, r1
|
||||||
mov lr, r1
|
mov lr, r1
|
||||||
|
|
||||||
2: subs r2, r2, #64
|
2: subs r2, r2, #64
|
||||||
stmgeia r0!, {r1, r3, ip, lr} @ 64 bytes at a time.
|
stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time.
|
||||||
stmgeia r0!, {r1, r3, ip, lr}
|
stmgeia ip!, {r1, r3, r8, lr}
|
||||||
stmgeia r0!, {r1, r3, ip, lr}
|
stmgeia ip!, {r1, r3, r8, lr}
|
||||||
stmgeia r0!, {r1, r3, ip, lr}
|
stmgeia ip!, {r1, r3, r8, lr}
|
||||||
bgt 2b
|
bgt 2b
|
||||||
ldmeqfd sp!, {pc} @ Now <64 bytes to go.
|
ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go.
|
||||||
/*
|
/*
|
||||||
* No need to correct the count; we're only testing bits from now on
|
* No need to correct the count; we're only testing bits from now on
|
||||||
*/
|
*/
|
||||||
tst r2, #32
|
tst r2, #32
|
||||||
stmneia r0!, {r1, r3, ip, lr}
|
stmneia ip!, {r1, r3, r8, lr}
|
||||||
stmneia r0!, {r1, r3, ip, lr}
|
stmneia ip!, {r1, r3, r8, lr}
|
||||||
tst r2, #16
|
tst r2, #16
|
||||||
stmneia r0!, {r1, r3, ip, lr}
|
stmneia ip!, {r1, r3, r8, lr}
|
||||||
ldr lr, [sp], #4
|
ldmfd sp!, {r8, lr}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
@ -74,54 +61,63 @@ ENTRY(memset)
|
||||||
* whole cache lines at once.
|
* whole cache lines at once.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
stmfd sp!, {r4-r7, lr}
|
stmfd sp!, {r4-r8, lr}
|
||||||
mov r4, r1
|
mov r4, r1
|
||||||
mov r5, r1
|
mov r5, r1
|
||||||
mov r6, r1
|
mov r6, r1
|
||||||
mov r7, r1
|
mov r7, r1
|
||||||
mov ip, r1
|
mov r8, r1
|
||||||
mov lr, r1
|
mov lr, r1
|
||||||
|
|
||||||
cmp r2, #96
|
cmp r2, #96
|
||||||
tstgt r0, #31
|
tstgt ip, #31
|
||||||
ble 3f
|
ble 3f
|
||||||
|
|
||||||
and ip, r0, #31
|
and r8, ip, #31
|
||||||
rsb ip, ip, #32
|
rsb r8, r8, #32
|
||||||
sub r2, r2, ip
|
sub r2, r2, r8
|
||||||
movs ip, ip, lsl #(32 - 4)
|
movs r8, r8, lsl #(32 - 4)
|
||||||
stmcsia r0!, {r4, r5, r6, r7}
|
stmcsia ip!, {r4, r5, r6, r7}
|
||||||
stmmiia r0!, {r4, r5}
|
stmmiia ip!, {r4, r5}
|
||||||
tst ip, #(1 << 30)
|
tst r8, #(1 << 30)
|
||||||
mov ip, r1
|
mov r8, r1
|
||||||
strne r1, [r0], #4
|
strne r1, [ip], #4
|
||||||
|
|
||||||
3: subs r2, r2, #64
|
3: subs r2, r2, #64
|
||||||
stmgeia r0!, {r1, r3-r7, ip, lr}
|
stmgeia ip!, {r1, r3-r8, lr}
|
||||||
stmgeia r0!, {r1, r3-r7, ip, lr}
|
stmgeia ip!, {r1, r3-r8, lr}
|
||||||
bgt 3b
|
bgt 3b
|
||||||
ldmeqfd sp!, {r4-r7, pc}
|
ldmeqfd sp!, {r4-r8, pc}
|
||||||
|
|
||||||
tst r2, #32
|
tst r2, #32
|
||||||
stmneia r0!, {r1, r3-r7, ip, lr}
|
stmneia ip!, {r1, r3-r8, lr}
|
||||||
tst r2, #16
|
tst r2, #16
|
||||||
stmneia r0!, {r4-r7}
|
stmneia ip!, {r4-r7}
|
||||||
ldmfd sp!, {r4-r7, lr}
|
ldmfd sp!, {r4-r8, lr}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
4: tst r2, #8
|
4: tst r2, #8
|
||||||
stmneia r0!, {r1, r3}
|
stmneia ip!, {r1, r3}
|
||||||
tst r2, #4
|
tst r2, #4
|
||||||
strne r1, [r0], #4
|
strne r1, [ip], #4
|
||||||
/*
|
/*
|
||||||
* When we get here, we've got less than 4 bytes to zero. We
|
* When we get here, we've got less than 4 bytes to zero. We
|
||||||
* may have an unaligned pointer as well.
|
* may have an unaligned pointer as well.
|
||||||
*/
|
*/
|
||||||
5: tst r2, #2
|
5: tst r2, #2
|
||||||
strneb r1, [r0], #1
|
strneb r1, [ip], #1
|
||||||
strneb r1, [r0], #1
|
strneb r1, [ip], #1
|
||||||
tst r2, #1
|
tst r2, #1
|
||||||
strneb r1, [r0], #1
|
strneb r1, [ip], #1
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
|
6: subs r2, r2, #4 @ 1 do we have enough
|
||||||
|
blt 5b @ 1 bytes to align with?
|
||||||
|
cmp r3, #2 @ 1
|
||||||
|
strltb r1, [ip], #1 @ 1
|
||||||
|
strleb r1, [ip], #1 @ 1
|
||||||
|
strb r1, [ip], #1 @ 1
|
||||||
|
add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
|
||||||
|
b 1b
|
||||||
ENDPROC(memset)
|
ENDPROC(memset)
|
||||||
|
|
|
@ -176,6 +176,7 @@ static struct w1_gpio_platform_data w1_gpio_pdata = {
|
||||||
/* If you choose to use a pin other than PB16 it needs to be 3.3V */
|
/* If you choose to use a pin other than PB16 it needs to be 3.3V */
|
||||||
.pin = AT91_PIN_PB16,
|
.pin = AT91_PIN_PB16,
|
||||||
.is_open_drain = 1,
|
.is_open_drain = 1,
|
||||||
|
.ext_pullup_enable_pin = -EINVAL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device w1_device = {
|
static struct platform_device w1_device = {
|
||||||
|
|
|
@ -188,6 +188,7 @@ static struct spi_board_info portuxg20_spi_devices[] = {
|
||||||
static struct w1_gpio_platform_data w1_gpio_pdata = {
|
static struct w1_gpio_platform_data w1_gpio_pdata = {
|
||||||
.pin = AT91_PIN_PA29,
|
.pin = AT91_PIN_PA29,
|
||||||
.is_open_drain = 1,
|
.is_open_drain = 1,
|
||||||
|
.ext_pullup_enable_pin = -EINVAL,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device w1_device = {
|
static struct platform_device w1_device = {
|
||||||
|
|
|
@ -209,6 +209,14 @@ extern int at91_get_gpio_value(unsigned pin);
|
||||||
extern void at91_gpio_suspend(void);
|
extern void at91_gpio_suspend(void);
|
||||||
extern void at91_gpio_resume(void);
|
extern void at91_gpio_resume(void);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PINCTRL_AT91
|
||||||
|
extern void at91_pinctrl_gpio_suspend(void);
|
||||||
|
extern void at91_pinctrl_gpio_resume(void);
|
||||||
|
#else
|
||||||
|
static inline void at91_pinctrl_gpio_suspend(void) {}
|
||||||
|
static inline void at91_pinctrl_gpio_resume(void) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -92,23 +92,21 @@ static int at91_aic_set_wake(struct irq_data *d, unsigned value)
|
||||||
|
|
||||||
void at91_irq_suspend(void)
|
void at91_irq_suspend(void)
|
||||||
{
|
{
|
||||||
int i = 0, bit;
|
int bit = -1;
|
||||||
|
|
||||||
if (has_aic5()) {
|
if (has_aic5()) {
|
||||||
/* disable enabled irqs */
|
/* disable enabled irqs */
|
||||||
while ((bit = find_next_bit(backups, n_irqs, i)) < n_irqs) {
|
while ((bit = find_next_bit(backups, n_irqs, bit + 1)) < n_irqs) {
|
||||||
at91_aic_write(AT91_AIC5_SSR,
|
at91_aic_write(AT91_AIC5_SSR,
|
||||||
bit & AT91_AIC5_INTSEL_MSK);
|
bit & AT91_AIC5_INTSEL_MSK);
|
||||||
at91_aic_write(AT91_AIC5_IDCR, 1);
|
at91_aic_write(AT91_AIC5_IDCR, 1);
|
||||||
i = bit;
|
|
||||||
}
|
}
|
||||||
/* enable wakeup irqs */
|
/* enable wakeup irqs */
|
||||||
i = 0;
|
bit = -1;
|
||||||
while ((bit = find_next_bit(wakeups, n_irqs, i)) < n_irqs) {
|
while ((bit = find_next_bit(wakeups, n_irqs, bit + 1)) < n_irqs) {
|
||||||
at91_aic_write(AT91_AIC5_SSR,
|
at91_aic_write(AT91_AIC5_SSR,
|
||||||
bit & AT91_AIC5_INTSEL_MSK);
|
bit & AT91_AIC5_INTSEL_MSK);
|
||||||
at91_aic_write(AT91_AIC5_IECR, 1);
|
at91_aic_write(AT91_AIC5_IECR, 1);
|
||||||
i = bit;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
at91_aic_write(AT91_AIC_IDCR, *backups);
|
at91_aic_write(AT91_AIC_IDCR, *backups);
|
||||||
|
@ -118,23 +116,21 @@ void at91_irq_suspend(void)
|
||||||
|
|
||||||
void at91_irq_resume(void)
|
void at91_irq_resume(void)
|
||||||
{
|
{
|
||||||
int i = 0, bit;
|
int bit = -1;
|
||||||
|
|
||||||
if (has_aic5()) {
|
if (has_aic5()) {
|
||||||
/* disable wakeup irqs */
|
/* disable wakeup irqs */
|
||||||
while ((bit = find_next_bit(wakeups, n_irqs, i)) < n_irqs) {
|
while ((bit = find_next_bit(wakeups, n_irqs, bit + 1)) < n_irqs) {
|
||||||
at91_aic_write(AT91_AIC5_SSR,
|
at91_aic_write(AT91_AIC5_SSR,
|
||||||
bit & AT91_AIC5_INTSEL_MSK);
|
bit & AT91_AIC5_INTSEL_MSK);
|
||||||
at91_aic_write(AT91_AIC5_IDCR, 1);
|
at91_aic_write(AT91_AIC5_IDCR, 1);
|
||||||
i = bit;
|
|
||||||
}
|
}
|
||||||
/* enable irqs disabled for suspend */
|
/* enable irqs disabled for suspend */
|
||||||
i = 0;
|
bit = -1;
|
||||||
while ((bit = find_next_bit(backups, n_irqs, i)) < n_irqs) {
|
while ((bit = find_next_bit(backups, n_irqs, bit + 1)) < n_irqs) {
|
||||||
at91_aic_write(AT91_AIC5_SSR,
|
at91_aic_write(AT91_AIC5_SSR,
|
||||||
bit & AT91_AIC5_INTSEL_MSK);
|
bit & AT91_AIC5_INTSEL_MSK);
|
||||||
at91_aic_write(AT91_AIC5_IECR, 1);
|
at91_aic_write(AT91_AIC5_IECR, 1);
|
||||||
i = bit;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
at91_aic_write(AT91_AIC_IDCR, *wakeups);
|
at91_aic_write(AT91_AIC_IDCR, *wakeups);
|
||||||
|
|
|
@ -201,7 +201,10 @@ extern u32 at91_slow_clock_sz;
|
||||||
|
|
||||||
static int at91_pm_enter(suspend_state_t state)
|
static int at91_pm_enter(suspend_state_t state)
|
||||||
{
|
{
|
||||||
at91_gpio_suspend();
|
if (of_have_populated_dt())
|
||||||
|
at91_pinctrl_gpio_suspend();
|
||||||
|
else
|
||||||
|
at91_gpio_suspend();
|
||||||
at91_irq_suspend();
|
at91_irq_suspend();
|
||||||
|
|
||||||
pr_debug("AT91: PM - wake mask %08x, pm state %d\n",
|
pr_debug("AT91: PM - wake mask %08x, pm state %d\n",
|
||||||
|
@ -286,7 +289,10 @@ static int at91_pm_enter(suspend_state_t state)
|
||||||
error:
|
error:
|
||||||
target_state = PM_SUSPEND_ON;
|
target_state = PM_SUSPEND_ON;
|
||||||
at91_irq_resume();
|
at91_irq_resume();
|
||||||
at91_gpio_resume();
|
if (of_have_populated_dt())
|
||||||
|
at91_pinctrl_gpio_resume();
|
||||||
|
else
|
||||||
|
at91_gpio_resume();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -743,6 +743,9 @@ EXPORT_SYMBOL(edma_free_channel);
|
||||||
*/
|
*/
|
||||||
int edma_alloc_slot(unsigned ctlr, int slot)
|
int edma_alloc_slot(unsigned ctlr, int slot)
|
||||||
{
|
{
|
||||||
|
if (!edma_cc[ctlr])
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
if (slot >= 0)
|
if (slot >= 0)
|
||||||
slot = EDMA_CHAN_SLOT(slot);
|
slot = EDMA_CHAN_SLOT(slot);
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,7 @@ config ARCH_NETWINDER
|
||||||
select ISA
|
select ISA
|
||||||
select ISA_DMA
|
select ISA_DMA
|
||||||
select PCI
|
select PCI
|
||||||
|
select VIRT_TO_BUS
|
||||||
help
|
help
|
||||||
Say Y here if you intend to run this kernel on the Rebel.COM
|
Say Y here if you intend to run this kernel on the Rebel.COM
|
||||||
NetWinder. Information about this machine can be found at:
|
NetWinder. Information about this machine can be found at:
|
||||||
|
|
|
@ -264,6 +264,7 @@ int __init mx35_clocks_init(void)
|
||||||
clk_prepare_enable(clk[gpio3_gate]);
|
clk_prepare_enable(clk[gpio3_gate]);
|
||||||
clk_prepare_enable(clk[iim_gate]);
|
clk_prepare_enable(clk[iim_gate]);
|
||||||
clk_prepare_enable(clk[emi_gate]);
|
clk_prepare_enable(clk[emi_gate]);
|
||||||
|
clk_prepare_enable(clk[max_gate]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SCC is needed to boot via mmc after a watchdog reset. The clock code
|
* SCC is needed to boot via mmc after a watchdog reset. The clock code
|
||||||
|
|
|
@ -172,7 +172,7 @@ static struct clk *clk[clk_max];
|
||||||
static struct clk_onecell_data clk_data;
|
static struct clk_onecell_data clk_data;
|
||||||
|
|
||||||
static enum mx6q_clks const clks_init_on[] __initconst = {
|
static enum mx6q_clks const clks_init_on[] __initconst = {
|
||||||
mmdc_ch0_axi, rom,
|
mmdc_ch0_axi, rom, pll1_sys,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct clk_div_table clk_enet_ref_table[] = {
|
static struct clk_div_table clk_enet_ref_table[] = {
|
||||||
|
|
|
@ -26,16 +26,16 @@ ENDPROC(v7_secondary_startup)
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
/*
|
/*
|
||||||
* The following code is located into the .data section. This is to
|
* The following code must assume it is running from physical address
|
||||||
* allow phys_l2x0_saved_regs to be accessed with a relative load
|
* where absolute virtual addresses to the data section have to be
|
||||||
* as we are running on physical address here.
|
* turned into relative ones.
|
||||||
*/
|
*/
|
||||||
.data
|
|
||||||
.align
|
|
||||||
|
|
||||||
#ifdef CONFIG_CACHE_L2X0
|
#ifdef CONFIG_CACHE_L2X0
|
||||||
.macro pl310_resume
|
.macro pl310_resume
|
||||||
ldr r2, phys_l2x0_saved_regs
|
adr r0, l2x0_saved_regs_offset
|
||||||
|
ldr r2, [r0]
|
||||||
|
add r2, r2, r0
|
||||||
ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0
|
ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0
|
||||||
ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value
|
ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value
|
||||||
str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl
|
str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl
|
||||||
|
@ -43,9 +43,9 @@ ENDPROC(v7_secondary_startup)
|
||||||
str r1, [r0, #L2X0_CTRL] @ re-enable L2
|
str r1, [r0, #L2X0_CTRL] @ re-enable L2
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.globl phys_l2x0_saved_regs
|
l2x0_saved_regs_offset:
|
||||||
phys_l2x0_saved_regs:
|
.word l2x0_saved_regs - .
|
||||||
.long 0
|
|
||||||
#else
|
#else
|
||||||
.macro pl310_resume
|
.macro pl310_resume
|
||||||
.endm
|
.endm
|
||||||
|
|
|
@ -27,6 +27,11 @@ static const char * const imx25_dt_board_compat[] __initconst = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void __init imx25_timer_init(void)
|
||||||
|
{
|
||||||
|
mx25_clocks_init_dt();
|
||||||
|
}
|
||||||
|
|
||||||
DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
|
DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)")
|
||||||
.map_io = mx25_map_io,
|
.map_io = mx25_map_io,
|
||||||
.init_early = imx25_init_early,
|
.init_early = imx25_init_early,
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue