Merge branches 'arm/rockchip', 'arm/exynos', 'arm/smmu', 'x86/vt-d', 'x86/amd', 'default-domains' and 'core' into next
This commit is contained in:
commit
5ffde2f671
1078 changed files with 15528 additions and 8703 deletions
7
CREDITS
7
CREDITS
|
@ -3709,6 +3709,13 @@ N: Dirk Verworner
|
||||||
D: Co-author of German book ``Linux-Kernel-Programmierung''
|
D: Co-author of German book ``Linux-Kernel-Programmierung''
|
||||||
D: Co-founder of Berlin Linux User Group
|
D: Co-founder of Berlin Linux User Group
|
||||||
|
|
||||||
|
N: Andrew Victor
|
||||||
|
E: linux@maxim.org.za
|
||||||
|
W: http://maxim.org.za/at91_26.html
|
||||||
|
D: First maintainer of Atmel ARM-based SoC, aka AT91
|
||||||
|
D: Introduced support for at91rm9200, the first chip of AT91 family
|
||||||
|
S: South Africa
|
||||||
|
|
||||||
N: Riku Voipio
|
N: Riku Voipio
|
||||||
E: riku.voipio@iki.fi
|
E: riku.voipio@iki.fi
|
||||||
D: Author of PCA9532 LED and Fintek f75375s hwmon driver
|
D: Author of PCA9532 LED and Fintek f75375s hwmon driver
|
||||||
|
|
|
@ -162,7 +162,7 @@ Description: Discover CPUs in the same CPU frequency coordination domain
|
||||||
What: /sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1}
|
What: /sys/devices/system/cpu/cpu*/cache/index3/cache_disable_{0,1}
|
||||||
Date: August 2008
|
Date: August 2008
|
||||||
KernelVersion: 2.6.27
|
KernelVersion: 2.6.27
|
||||||
Contact: discuss@x86-64.org
|
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||||
Description: Disable L3 cache indices
|
Description: Disable L3 cache indices
|
||||||
|
|
||||||
These files exist in every CPU's cache/index3 directory. Each
|
These files exist in every CPU's cache/index3 directory. Each
|
||||||
|
|
|
@ -505,7 +505,10 @@ at module load time (for a module) with:
|
||||||
|
|
||||||
The addresses are normal I2C addresses. The adapter is the string
|
The addresses are normal I2C addresses. The adapter is the string
|
||||||
name of the adapter, as shown in /sys/class/i2c-adapter/i2c-<n>/name.
|
name of the adapter, as shown in /sys/class/i2c-adapter/i2c-<n>/name.
|
||||||
It is *NOT* i2c-<n> itself.
|
It is *NOT* i2c-<n> itself. Also, the comparison is done ignoring
|
||||||
|
spaces, so if the name is "This is an I2C chip" you can say
|
||||||
|
adapter_name=ThisisanI2cchip. This is because it's hard to pass in
|
||||||
|
spaces in kernel parameters.
|
||||||
|
|
||||||
The debug flags are bit flags for each BMC found, they are:
|
The debug flags are bit flags for each BMC found, they are:
|
||||||
IPMI messages: 1, driver state: 2, timing: 4, I2C probe: 8
|
IPMI messages: 1, driver state: 2, timing: 4, I2C probe: 8
|
||||||
|
|
|
@ -253,7 +253,7 @@ input driver:
|
||||||
GPIO support
|
GPIO support
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
ACPI 5 introduced two new resources to describe GPIO connections: GpioIo
|
ACPI 5 introduced two new resources to describe GPIO connections: GpioIo
|
||||||
and GpioInt. These resources are used be used to pass GPIO numbers used by
|
and GpioInt. These resources can be used to pass GPIO numbers used by
|
||||||
the device to the driver. ACPI 5.1 extended this with _DSD (Device
|
the device to the driver. ACPI 5.1 extended this with _DSD (Device
|
||||||
Specific Data) which made it possible to name the GPIOs among other things.
|
Specific Data) which made it possible to name the GPIOs among other things.
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
_DSD Device Properties Related to GPIO
|
_DSD Device Properties Related to GPIO
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
With the release of ACPI 5.1 and the _DSD configuration objecte names
|
With the release of ACPI 5.1, the _DSD configuration object finally
|
||||||
can finally be given to GPIOs (and other things as well) returned by
|
allows names to be given to GPIOs (and other things as well) returned
|
||||||
_CRS. Previously, we were only able to use an integer index to find
|
by _CRS. Previously, we were only able to use an integer index to find
|
||||||
the corresponding GPIO, which is pretty error prone (it depends on
|
the corresponding GPIO, which is pretty error prone (it depends on
|
||||||
the _CRS output ordering, for example).
|
the _CRS output ordering, for example).
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ provided by Arteris.
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
|
- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
|
||||||
Should be "ti,omap4-l3-noc" for OMAP4 family
|
Should be "ti,omap4-l3-noc" for OMAP4 family
|
||||||
|
Should be "ti,omap5-l3-noc" for OMAP5 family
|
||||||
Should be "ti,dra7-l3-noc" for DRA7 family
|
Should be "ti,dra7-l3-noc" for DRA7 family
|
||||||
Should be "ti,am4372-l3-noc" for AM43 family
|
Should be "ti,am4372-l3-noc" for AM43 family
|
||||||
- reg: Contains L3 register address range for each noc domain.
|
- reg: Contains L3 register address range for each noc domain.
|
||||||
|
|
|
@ -17,7 +17,8 @@ Required properties:
|
||||||
- #clock-cells: from common clock binding; shall be set to 1.
|
- #clock-cells: from common clock binding; shall be set to 1.
|
||||||
- clocks: from common clock binding; list of parent clock
|
- clocks: from common clock binding; list of parent clock
|
||||||
handles, shall be xtal reference clock or xtal and clkin for
|
handles, shall be xtal reference clock or xtal and clkin for
|
||||||
si5351c only.
|
si5351c only. Corresponding clock input names are "xtal" and
|
||||||
|
"clkin" respectively.
|
||||||
- #address-cells: shall be set to 1.
|
- #address-cells: shall be set to 1.
|
||||||
- #size-cells: shall be set to 0.
|
- #size-cells: shall be set to 0.
|
||||||
|
|
||||||
|
@ -71,6 +72,7 @@ i2c-master-node {
|
||||||
|
|
||||||
/* connect xtal input to 25MHz reference */
|
/* connect xtal input to 25MHz reference */
|
||||||
clocks = <&ref25>;
|
clocks = <&ref25>;
|
||||||
|
clock-names = "xtal";
|
||||||
|
|
||||||
/* connect xtal input as source of pll0 and pll1 */
|
/* connect xtal input as source of pll0 and pll1 */
|
||||||
silabs,pll-source = <0 0>, <1 0>;
|
silabs,pll-source = <0 0>, <1 0>;
|
||||||
|
|
|
@ -38,7 +38,7 @@ dma_apbx: dma-apbx@80024000 {
|
||||||
80 81 68 69
|
80 81 68 69
|
||||||
70 71 72 73
|
70 71 72 73
|
||||||
74 75 76 77>;
|
74 75 76 77>;
|
||||||
interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
|
interrupt-names = "auart4-rx", "auart4-tx", "spdif-tx", "empty",
|
||||||
"saif0", "saif1", "i2c0", "i2c1",
|
"saif0", "saif1", "i2c0", "i2c1",
|
||||||
"auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
|
"auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
|
||||||
"auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
|
"auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
|
||||||
|
|
|
@ -32,8 +32,8 @@ Example:
|
||||||
touchscreen-fuzz-x = <4>;
|
touchscreen-fuzz-x = <4>;
|
||||||
touchscreen-fuzz-y = <7>;
|
touchscreen-fuzz-y = <7>;
|
||||||
touchscreen-fuzz-pressure = <2>;
|
touchscreen-fuzz-pressure = <2>;
|
||||||
touchscreen-max-x = <4096>;
|
touchscreen-size-x = <4096>;
|
||||||
touchscreen-max-y = <4096>;
|
touchscreen-size-y = <4096>;
|
||||||
touchscreen-max-pressure = <2048>;
|
touchscreen-max-pressure = <2048>;
|
||||||
|
|
||||||
ti,x-plate-ohms = <280>;
|
ti,x-plate-ohms = <280>;
|
||||||
|
|
37
Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt
Normal file
37
Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
* ARM SMMUv3 Architecture Implementation
|
||||||
|
|
||||||
|
The SMMUv3 architecture is a significant deparature from previous
|
||||||
|
revisions, replacing the MMIO register interface with in-memory command
|
||||||
|
and event queues and adding support for the ATS and PRI components of
|
||||||
|
the PCIe specification.
|
||||||
|
|
||||||
|
** SMMUv3 required properties:
|
||||||
|
|
||||||
|
- compatible : Should include:
|
||||||
|
|
||||||
|
* "arm,smmu-v3" for any SMMUv3 compliant
|
||||||
|
implementation. This entry should be last in the
|
||||||
|
compatible list.
|
||||||
|
|
||||||
|
- reg : Base address and size of the SMMU.
|
||||||
|
|
||||||
|
- interrupts : Non-secure interrupt list describing the wired
|
||||||
|
interrupt sources corresponding to entries in
|
||||||
|
interrupt-names. If no wired interrupts are
|
||||||
|
present then this property may be omitted.
|
||||||
|
|
||||||
|
- interrupt-names : When the interrupts property is present, should
|
||||||
|
include the following:
|
||||||
|
* "eventq" - Event Queue not empty
|
||||||
|
* "priq" - PRI Queue not empty
|
||||||
|
* "cmdq-sync" - CMD_SYNC complete
|
||||||
|
* "gerror" - Global Error activated
|
||||||
|
|
||||||
|
** SMMUv3 optional properties:
|
||||||
|
|
||||||
|
- dma-coherent : Present if DMA operations made by the SMMU (page
|
||||||
|
table walks, stream table accesses etc) are cache
|
||||||
|
coherent with the CPU.
|
||||||
|
|
||||||
|
NOTE: this only applies to the SMMU itself, not
|
||||||
|
masters connected upstream of the SMMU.
|
|
@ -8,8 +8,8 @@ Required properties:
|
||||||
is not Linux-only, but in case of Linux, see the "m25p_ids"
|
is not Linux-only, but in case of Linux, see the "m25p_ids"
|
||||||
table in drivers/mtd/devices/m25p80.c for the list of supported
|
table in drivers/mtd/devices/m25p80.c for the list of supported
|
||||||
chips.
|
chips.
|
||||||
Must also include "nor-jedec" for any SPI NOR flash that can be
|
Must also include "jedec,spi-nor" for any SPI NOR flash that can
|
||||||
identified by the JEDEC READ ID opcode (0x9F).
|
be identified by the JEDEC READ ID opcode (0x9F).
|
||||||
- reg : Chip-Select number
|
- reg : Chip-Select number
|
||||||
- spi-max-frequency : Maximum frequency of the SPI bus the chip can operate at
|
- spi-max-frequency : Maximum frequency of the SPI bus the chip can operate at
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ Example:
|
||||||
flash: m25p80@0 {
|
flash: m25p80@0 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
compatible = "spansion,m25p80", "nor-jedec";
|
compatible = "spansion,m25p80", "jedec,spi-nor";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
spi-max-frequency = <40000000>;
|
spi-max-frequency = <40000000>;
|
||||||
m25p,fast-read;
|
m25p,fast-read;
|
|
@ -3,7 +3,8 @@
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: Should be "cdns,[<chip>-]{emac}"
|
- compatible: Should be "cdns,[<chip>-]{emac}"
|
||||||
Use "cdns,at91rm9200-emac" Atmel at91rm9200 SoC.
|
Use "cdns,at91rm9200-emac" Atmel at91rm9200 SoC.
|
||||||
or the generic form: "cdns,emac".
|
Use "cdns,zynq-gem" Xilinx Zynq-7xxx SoC.
|
||||||
|
Or the generic form: "cdns,emac".
|
||||||
- reg: Address and length of the register set for the device
|
- reg: Address and length of the register set for the device
|
||||||
- interrupts: Should contain macb interrupt
|
- interrupts: Should contain macb interrupt
|
||||||
- phy-mode: see ethernet.txt file in the same directory.
|
- phy-mode: see ethernet.txt file in the same directory.
|
||||||
|
|
30
Documentation/devicetree/bindings/rtc/abracon,abx80x.txt
Normal file
30
Documentation/devicetree/bindings/rtc/abracon,abx80x.txt
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
Abracon ABX80X I2C ultra low power RTC/Alarm chip
|
||||||
|
|
||||||
|
The Abracon ABX80X family consist of the ab0801, ab0803, ab0804, ab0805, ab1801,
|
||||||
|
ab1803, ab1804 and ab1805. The ab0805 is the superset of ab080x and the ab1805
|
||||||
|
is the superset of ab180x.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- "compatible": should one of:
|
||||||
|
"abracon,abx80x"
|
||||||
|
"abracon,ab0801"
|
||||||
|
"abracon,ab0803"
|
||||||
|
"abracon,ab0804"
|
||||||
|
"abracon,ab0805"
|
||||||
|
"abracon,ab1801"
|
||||||
|
"abracon,ab1803"
|
||||||
|
"abracon,ab1804"
|
||||||
|
"abracon,ab1805"
|
||||||
|
Using "abracon,abx80x" will enable chip autodetection.
|
||||||
|
- "reg": I2C bus address of the device
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
|
||||||
|
The abx804 and abx805 have a trickle charger that is able to charge the
|
||||||
|
connected battery or supercap. Both the following properties have to be defined
|
||||||
|
and valid to enable charging:
|
||||||
|
|
||||||
|
- "abracon,tc-diode": should be "standard" (0.6V) or "schottky" (0.3V)
|
||||||
|
- "abracon,tc-resistor": should be <0>, <3>, <6> or <11>. 0 disables the output
|
||||||
|
resistor, the other values are in ohm.
|
|
@ -15,10 +15,8 @@ Optional properties:
|
||||||
- phys: phandle + phy specifier pair
|
- phys: phandle + phy specifier pair
|
||||||
- phy-names: must be "usb"
|
- phy-names: must be "usb"
|
||||||
- dmas: Must contain a list of references to DMA specifiers.
|
- dmas: Must contain a list of references to DMA specifiers.
|
||||||
- dma-names : Must contain a list of DMA names:
|
- dma-names : named "ch%d", where %d is the channel number ranging from zero
|
||||||
- tx0 ... tx<n>
|
to the number of channels (DnFIFOs) minus one.
|
||||||
- rx0 ... rx<n>
|
|
||||||
- This <n> means DnFIFO in USBHS module.
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
usbhs: usb@e6590000 {
|
usbhs: usb@e6590000 {
|
||||||
|
|
|
@ -20,7 +20,7 @@ Supported chips:
|
||||||
Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp432.html
|
Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp432.html
|
||||||
* Texas Instruments TMP435
|
* Texas Instruments TMP435
|
||||||
Prefix: 'tmp435'
|
Prefix: 'tmp435'
|
||||||
Addresses scanned: I2C 0x37, 0x48 - 0x4f
|
Addresses scanned: I2C 0x48 - 0x4f
|
||||||
Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp435.html
|
Datasheet: http://focus.ti.com/docs/prod/folders/print/tmp435.html
|
||||||
|
|
||||||
Authors:
|
Authors:
|
||||||
|
|
|
@ -9,7 +9,9 @@ a fast and comprehensive solution for finding use-after-free and out-of-bounds
|
||||||
bugs.
|
bugs.
|
||||||
|
|
||||||
KASan uses compile-time instrumentation for checking every memory access,
|
KASan uses compile-time instrumentation for checking every memory access,
|
||||||
therefore you will need a certain version of GCC > 4.9.2
|
therefore you will need a gcc version of 4.9.2 or later. KASan could detect out
|
||||||
|
of bounds accesses to stack or global variables, but only if gcc 5.0 or later was
|
||||||
|
used to built the kernel.
|
||||||
|
|
||||||
Currently KASan is supported only for x86_64 architecture and requires that the
|
Currently KASan is supported only for x86_64 architecture and requires that the
|
||||||
kernel be built with the SLUB allocator.
|
kernel be built with the SLUB allocator.
|
||||||
|
@ -23,8 +25,8 @@ To enable KASAN configure kernel with:
|
||||||
|
|
||||||
and choose between CONFIG_KASAN_OUTLINE and CONFIG_KASAN_INLINE. Outline/inline
|
and choose between CONFIG_KASAN_OUTLINE and CONFIG_KASAN_INLINE. Outline/inline
|
||||||
is compiler instrumentation types. The former produces smaller binary the
|
is compiler instrumentation types. The former produces smaller binary the
|
||||||
latter is 1.1 - 2 times faster. Inline instrumentation requires GCC 5.0 or
|
latter is 1.1 - 2 times faster. Inline instrumentation requires a gcc version
|
||||||
latter.
|
of 5.0 or later.
|
||||||
|
|
||||||
Currently KASAN works only with the SLUB memory allocator.
|
Currently KASAN works only with the SLUB memory allocator.
|
||||||
For better bug detection and nicer report, enable CONFIG_STACKTRACE and put
|
For better bug detection and nicer report, enable CONFIG_STACKTRACE and put
|
||||||
|
|
|
@ -1481,6 +1481,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||||
By default, super page will be supported if Intel IOMMU
|
By default, super page will be supported if Intel IOMMU
|
||||||
has the capability. With this option, super page will
|
has the capability. With this option, super page will
|
||||||
not be supported.
|
not be supported.
|
||||||
|
ecs_off [Default Off]
|
||||||
|
By default, extended context tables will be supported if
|
||||||
|
the hardware advertises that it has support both for the
|
||||||
|
extended tables themselves, and also PASID support. With
|
||||||
|
this option set, extended tables will not be used even
|
||||||
|
on hardware which claims to support them.
|
||||||
|
|
||||||
intel_idle.max_cstate= [KNL,HW,ACPI,X86]
|
intel_idle.max_cstate= [KNL,HW,ACPI,X86]
|
||||||
0 disables intel_idle and fall back on acpi_idle.
|
0 disables intel_idle and fall back on acpi_idle.
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
files/UDP-Lite-HOWTO.txt
|
files/UDP-Lite-HOWTO.txt
|
||||||
|
|
||||||
o The Wireshark UDP-Lite WiKi (with capture files):
|
o The Wireshark UDP-Lite WiKi (with capture files):
|
||||||
http://wiki.wireshark.org/Lightweight_User_Datagram_Protocol
|
https://wiki.wireshark.org/Lightweight_User_Datagram_Protocol
|
||||||
|
|
||||||
o The Protocol Spec, RFC 3828, http://www.ietf.org/rfc/rfc3828.txt
|
o The Protocol Spec, RFC 3828, http://www.ietf.org/rfc/rfc3828.txt
|
||||||
|
|
||||||
|
|
|
@ -198,6 +198,9 @@ TTY_IO_ERROR If set, causes all subsequent userspace read/write
|
||||||
|
|
||||||
TTY_OTHER_CLOSED Device is a pty and the other side has closed.
|
TTY_OTHER_CLOSED Device is a pty and the other side has closed.
|
||||||
|
|
||||||
|
TTY_OTHER_DONE Device is a pty and the other side has closed and
|
||||||
|
all pending input processing has been completed.
|
||||||
|
|
||||||
TTY_NO_WRITE_SPLIT Prevent driver from splitting up writes into
|
TTY_NO_WRITE_SPLIT Prevent driver from splitting up writes into
|
||||||
smaller chunks.
|
smaller chunks.
|
||||||
|
|
||||||
|
|
|
@ -15,8 +15,7 @@ Contents:
|
||||||
a) Discovering and configuring TCMU uio devices
|
a) Discovering and configuring TCMU uio devices
|
||||||
b) Waiting for events on the device(s)
|
b) Waiting for events on the device(s)
|
||||||
c) Managing the command ring
|
c) Managing the command ring
|
||||||
3) Command filtering and pass_level
|
3) A final note
|
||||||
4) A final note
|
|
||||||
|
|
||||||
|
|
||||||
TCM Userspace Design
|
TCM Userspace Design
|
||||||
|
@ -324,7 +323,7 @@ int handle_device_events(int fd, void *map)
|
||||||
/* Process events from cmd ring until we catch up with cmd_head */
|
/* Process events from cmd ring until we catch up with cmd_head */
|
||||||
while (ent != (void *)mb + mb->cmdr_off + mb->cmd_head) {
|
while (ent != (void *)mb + mb->cmdr_off + mb->cmd_head) {
|
||||||
|
|
||||||
if (tcmu_hdr_get_op(&ent->hdr) == TCMU_OP_CMD) {
|
if (tcmu_hdr_get_op(ent->hdr.len_op) == TCMU_OP_CMD) {
|
||||||
uint8_t *cdb = (void *)mb + ent->req.cdb_off;
|
uint8_t *cdb = (void *)mb + ent->req.cdb_off;
|
||||||
bool success = true;
|
bool success = true;
|
||||||
|
|
||||||
|
@ -339,8 +338,12 @@ int handle_device_events(int fd, void *map)
|
||||||
ent->rsp.scsi_status = SCSI_CHECK_CONDITION;
|
ent->rsp.scsi_status = SCSI_CHECK_CONDITION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (tcmu_hdr_get_op(ent->hdr.len_op) != TCMU_OP_PAD) {
|
||||||
|
/* Tell the kernel we didn't handle unknown opcodes */
|
||||||
|
ent->hdr.uflags |= TCMU_UFLAG_UNKNOWN_OP;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
/* Do nothing for PAD entries */
|
/* Do nothing for PAD entries except update cmd_tail */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update cmd_tail */
|
/* update cmd_tail */
|
||||||
|
@ -360,28 +363,6 @@ int handle_device_events(int fd, void *map)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Command filtering and pass_level
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
TCMU supports a "pass_level" option with valid values of 0 or 1. When
|
|
||||||
the value is 0 (the default), nearly all SCSI commands received for
|
|
||||||
the device are passed through to the handler. This allows maximum
|
|
||||||
flexibility but increases the amount of code required by the handler,
|
|
||||||
to support all mandatory SCSI commands. If pass_level is set to 1,
|
|
||||||
then only IO-related commands are presented, and the rest are handled
|
|
||||||
by LIO's in-kernel command emulation. The commands presented at level
|
|
||||||
1 include all versions of:
|
|
||||||
|
|
||||||
READ
|
|
||||||
WRITE
|
|
||||||
WRITE_VERIFY
|
|
||||||
XDWRITEREAD
|
|
||||||
WRITE_SAME
|
|
||||||
COMPARE_AND_WRITE
|
|
||||||
SYNCHRONIZE_CACHE
|
|
||||||
UNMAP
|
|
||||||
|
|
||||||
|
|
||||||
A final note
|
A final note
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
|
|
@ -169,6 +169,10 @@ Shadow pages contain the following information:
|
||||||
Contains the value of cr4.smep && !cr0.wp for which the page is valid
|
Contains the value of cr4.smep && !cr0.wp for which the page is valid
|
||||||
(pages for which this is true are different from other pages; see the
|
(pages for which this is true are different from other pages; see the
|
||||||
treatment of cr0.wp=0 below).
|
treatment of cr0.wp=0 below).
|
||||||
|
role.smap_andnot_wp:
|
||||||
|
Contains the value of cr4.smap && !cr0.wp for which the page is valid
|
||||||
|
(pages for which this is true are different from other pages; see the
|
||||||
|
treatment of cr0.wp=0 below).
|
||||||
gfn:
|
gfn:
|
||||||
Either the guest page table containing the translations shadowed by this
|
Either the guest page table containing the translations shadowed by this
|
||||||
page, or the base page frame for linear translations. See role.direct.
|
page, or the base page frame for linear translations. See role.direct.
|
||||||
|
@ -344,10 +348,16 @@ on fault type:
|
||||||
|
|
||||||
(user write faults generate a #PF)
|
(user write faults generate a #PF)
|
||||||
|
|
||||||
In the first case there is an additional complication if CR4.SMEP is
|
In the first case there are two additional complications:
|
||||||
enabled: since we've turned the page into a kernel page, the kernel may now
|
- if CR4.SMEP is enabled: since we've turned the page into a kernel page,
|
||||||
execute it. We handle this by also setting spte.nx. If we get a user
|
the kernel may now execute it. We handle this by also setting spte.nx.
|
||||||
fetch or read fault, we'll change spte.u=1 and spte.nx=gpte.nx back.
|
If we get a user fetch or read fault, we'll change spte.u=1 and
|
||||||
|
spte.nx=gpte.nx back.
|
||||||
|
- if CR4.SMAP is disabled: since the page has been changed to a kernel
|
||||||
|
page, it can not be reused when CR4.SMAP is enabled. We set
|
||||||
|
CR4.SMAP && !CR0.WP into shadow page's role to avoid this case. Note,
|
||||||
|
here we do not care the case that CR4.SMAP is enabled since KVM will
|
||||||
|
directly inject #PF to guest due to failed permission check.
|
||||||
|
|
||||||
To prevent an spte that was converted into a kernel page with cr0.wp=0
|
To prevent an spte that was converted into a kernel page with cr0.wp=0
|
||||||
from being written by the kernel after cr0.wp has changed to 1, we make
|
from being written by the kernel after cr0.wp has changed to 1, we make
|
||||||
|
|
106
MAINTAINERS
106
MAINTAINERS
|
@ -51,9 +51,9 @@ trivial patch so apply some common sense.
|
||||||
or does something very odd once a month document it.
|
or does something very odd once a month document it.
|
||||||
|
|
||||||
PLEASE remember that submissions must be made under the terms
|
PLEASE remember that submissions must be made under the terms
|
||||||
of the OSDL certificate of contribution and should include a
|
of the Linux Foundation certificate of contribution and should
|
||||||
Signed-off-by: line. The current version of this "Developer's
|
include a Signed-off-by: line. The current version of this
|
||||||
Certificate of Origin" (DCO) is listed in the file
|
"Developer's Certificate of Origin" (DCO) is listed in the file
|
||||||
Documentation/SubmittingPatches.
|
Documentation/SubmittingPatches.
|
||||||
|
|
||||||
6. Make sure you have the right to send any changes you make. If you
|
6. Make sure you have the right to send any changes you make. If you
|
||||||
|
@ -892,11 +892,10 @@ S: Maintained
|
||||||
F: arch/arm/mach-alpine/
|
F: arch/arm/mach-alpine/
|
||||||
|
|
||||||
ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES
|
ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES
|
||||||
M: Andrew Victor <linux@maxim.org.za>
|
|
||||||
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
||||||
|
M: Alexandre Belloni <alexandre.belloni@free-electrons.com>
|
||||||
M: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
|
M: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
W: http://maxim.org.za/at91_26.html
|
|
||||||
W: http://www.linux4sam.org
|
W: http://www.linux4sam.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/arm/mach-at91/
|
F: arch/arm/mach-at91/
|
||||||
|
@ -975,7 +974,7 @@ S: Maintained
|
||||||
ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
|
ARM/CORTINA SYSTEMS GEMINI ARM ARCHITECTURE
|
||||||
M: Hans Ulli Kroll <ulli.kroll@googlemail.com>
|
M: Hans Ulli Kroll <ulli.kroll@googlemail.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
T: git git://git.berlios.de/gemini-board
|
T: git git://github.com/ulli-kroll/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-gemini/
|
F: arch/arm/mach-gemini/
|
||||||
|
|
||||||
|
@ -990,6 +989,12 @@ F: drivers/clocksource/timer-prima2.c
|
||||||
F: drivers/clocksource/timer-atlas7.c
|
F: drivers/clocksource/timer-atlas7.c
|
||||||
N: [^a-z]sirf
|
N: [^a-z]sirf
|
||||||
|
|
||||||
|
ARM/CONEXANT DIGICOLOR MACHINE SUPPORT
|
||||||
|
M: Baruch Siach <baruch@tkos.co.il>
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
S: Maintained
|
||||||
|
N: digicolor
|
||||||
|
|
||||||
ARM/EBSA110 MACHINE SUPPORT
|
ARM/EBSA110 MACHINE SUPPORT
|
||||||
M: Russell King <linux@arm.linux.org.uk>
|
M: Russell King <linux@arm.linux.org.uk>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
@ -1188,7 +1193,7 @@ ARM/MAGICIAN MACHINE SUPPORT
|
||||||
M: Philipp Zabel <philipp.zabel@gmail.com>
|
M: Philipp Zabel <philipp.zabel@gmail.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
ARM/Marvell Armada 370 and Armada XP SOC support
|
ARM/Marvell Kirkwood and Armada 370, 375, 38x, XP SOC support
|
||||||
M: Jason Cooper <jason@lakedaemon.net>
|
M: Jason Cooper <jason@lakedaemon.net>
|
||||||
M: Andrew Lunn <andrew@lunn.ch>
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
M: Gregory Clement <gregory.clement@free-electrons.com>
|
M: Gregory Clement <gregory.clement@free-electrons.com>
|
||||||
|
@ -1197,12 +1202,17 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-mvebu/
|
F: arch/arm/mach-mvebu/
|
||||||
F: drivers/rtc/rtc-armada38x.c
|
F: drivers/rtc/rtc-armada38x.c
|
||||||
|
F: arch/arm/boot/dts/armada*
|
||||||
|
F: arch/arm/boot/dts/kirkwood*
|
||||||
|
|
||||||
|
|
||||||
ARM/Marvell Berlin SoC support
|
ARM/Marvell Berlin SoC support
|
||||||
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-berlin/
|
F: arch/arm/mach-berlin/
|
||||||
|
F: arch/arm/boot/dts/berlin*
|
||||||
|
|
||||||
|
|
||||||
ARM/Marvell Dove/MV78xx0/Orion SOC support
|
ARM/Marvell Dove/MV78xx0/Orion SOC support
|
||||||
M: Jason Cooper <jason@lakedaemon.net>
|
M: Jason Cooper <jason@lakedaemon.net>
|
||||||
|
@ -1215,6 +1225,9 @@ F: arch/arm/mach-dove/
|
||||||
F: arch/arm/mach-mv78xx0/
|
F: arch/arm/mach-mv78xx0/
|
||||||
F: arch/arm/mach-orion5x/
|
F: arch/arm/mach-orion5x/
|
||||||
F: arch/arm/plat-orion/
|
F: arch/arm/plat-orion/
|
||||||
|
F: arch/arm/boot/dts/dove*
|
||||||
|
F: arch/arm/boot/dts/orion5x*
|
||||||
|
|
||||||
|
|
||||||
ARM/Orion SoC/Technologic Systems TS-78xx platform support
|
ARM/Orion SoC/Technologic Systems TS-78xx platform support
|
||||||
M: Alexander Clouter <alex@digriz.org.uk>
|
M: Alexander Clouter <alex@digriz.org.uk>
|
||||||
|
@ -1366,6 +1379,7 @@ N: rockchip
|
||||||
|
|
||||||
ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
|
ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
|
||||||
M: Kukjin Kim <kgene@kernel.org>
|
M: Kukjin Kim <kgene@kernel.org>
|
||||||
|
M: Krzysztof Kozlowski <k.kozlowski@samsung.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -1439,9 +1453,10 @@ ARM/SOCFPGA ARCHITECTURE
|
||||||
M: Dinh Nguyen <dinguyen@opensource.altera.com>
|
M: Dinh Nguyen <dinguyen@opensource.altera.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-socfpga/
|
F: arch/arm/mach-socfpga/
|
||||||
|
F: arch/arm/boot/dts/socfpga*
|
||||||
|
F: arch/arm/configs/socfpga_defconfig
|
||||||
W: http://www.rocketboards.org
|
W: http://www.rocketboards.org
|
||||||
T: git://git.rocketboards.org/linux-socfpga.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux.git
|
||||||
T: git://git.rocketboards.org/linux-socfpga-next.git
|
|
||||||
|
|
||||||
ARM/SOCFPGA CLOCK FRAMEWORK SUPPORT
|
ARM/SOCFPGA CLOCK FRAMEWORK SUPPORT
|
||||||
M: Dinh Nguyen <dinguyen@opensource.altera.com>
|
M: Dinh Nguyen <dinguyen@opensource.altera.com>
|
||||||
|
@ -1619,11 +1634,12 @@ F: drivers/i2c/busses/i2c-cadence.c
|
||||||
F: drivers/mmc/host/sdhci-of-arasan.c
|
F: drivers/mmc/host/sdhci-of-arasan.c
|
||||||
F: drivers/edac/synopsys_edac.c
|
F: drivers/edac/synopsys_edac.c
|
||||||
|
|
||||||
ARM SMMU DRIVER
|
ARM SMMU DRIVERS
|
||||||
M: Will Deacon <will.deacon@arm.com>
|
M: Will Deacon <will.deacon@arm.com>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/iommu/arm-smmu.c
|
F: drivers/iommu/arm-smmu.c
|
||||||
|
F: drivers/iommu/arm-smmu-v3.c
|
||||||
F: drivers/iommu/io-pgtable-arm.c
|
F: drivers/iommu/io-pgtable-arm.c
|
||||||
|
|
||||||
ARM64 PORT (AARCH64 ARCHITECTURE)
|
ARM64 PORT (AARCH64 ARCHITECTURE)
|
||||||
|
@ -1929,7 +1945,7 @@ S: Maintained
|
||||||
F: drivers/net/wireless/b43legacy/
|
F: drivers/net/wireless/b43legacy/
|
||||||
|
|
||||||
BACKLIGHT CLASS/SUBSYSTEM
|
BACKLIGHT CLASS/SUBSYSTEM
|
||||||
M: Jingoo Han <jg1.han@samsung.com>
|
M: Jingoo Han <jingoohan1@gmail.com>
|
||||||
M: Lee Jones <lee.jones@linaro.org>
|
M: Lee Jones <lee.jones@linaro.org>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/backlight/
|
F: drivers/video/backlight/
|
||||||
|
@ -2116,8 +2132,9 @@ S: Supported
|
||||||
F: drivers/net/ethernet/broadcom/bnx2x/
|
F: drivers/net/ethernet/broadcom/bnx2x/
|
||||||
|
|
||||||
BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
|
BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
|
||||||
M: Christian Daudt <bcm@fixthebug.org>
|
|
||||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
|
M: Ray Jui <rjui@broadcom.com>
|
||||||
|
M: Scott Branden <sbranden@broadcom.com>
|
||||||
L: bcm-kernel-feedback-list@broadcom.com
|
L: bcm-kernel-feedback-list@broadcom.com
|
||||||
T: git git://github.com/broadcom/mach-bcm
|
T: git git://github.com/broadcom/mach-bcm
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -2168,7 +2185,6 @@ S: Maintained
|
||||||
F: drivers/usb/gadget/udc/bcm63xx_udc.*
|
F: drivers/usb/gadget/udc/bcm63xx_udc.*
|
||||||
|
|
||||||
BROADCOM BCM7XXX ARM ARCHITECTURE
|
BROADCOM BCM7XXX ARM ARCHITECTURE
|
||||||
M: Marc Carino <marc.ceeeee@gmail.com>
|
|
||||||
M: Brian Norris <computersforpeace@gmail.com>
|
M: Brian Norris <computersforpeace@gmail.com>
|
||||||
M: Gregory Fong <gregory.0xf0@gmail.com>
|
M: Gregory Fong <gregory.0xf0@gmail.com>
|
||||||
M: Florian Fainelli <f.fainelli@gmail.com>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
|
@ -2412,7 +2428,6 @@ L: linux-security-module@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: include/linux/capability.h
|
F: include/linux/capability.h
|
||||||
F: include/uapi/linux/capability.h
|
F: include/uapi/linux/capability.h
|
||||||
F: security/capability.c
|
|
||||||
F: security/commoncap.c
|
F: security/commoncap.c
|
||||||
F: kernel/capability.c
|
F: kernel/capability.c
|
||||||
|
|
||||||
|
@ -3810,10 +3825,11 @@ M: David Woodhouse <dwmw2@infradead.org>
|
||||||
L: linux-embedded@vger.kernel.org
|
L: linux-embedded@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
EMULEX LPFC FC SCSI DRIVER
|
EMULEX/AVAGO LPFC FC/FCOE SCSI DRIVER
|
||||||
M: James Smart <james.smart@emulex.com>
|
M: James Smart <james.smart@avagotech.com>
|
||||||
|
M: Dick Kennedy <dick.kennedy@avagotech.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
W: http://sourceforge.net/projects/lpfcxxxx
|
W: http://www.avagotech.com
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/scsi/lpfc/
|
F: drivers/scsi/lpfc/
|
||||||
|
|
||||||
|
@ -3912,7 +3928,7 @@ F: drivers/extcon/
|
||||||
F: Documentation/extcon/
|
F: Documentation/extcon/
|
||||||
|
|
||||||
EXYNOS DP DRIVER
|
EXYNOS DP DRIVER
|
||||||
M: Jingoo Han <jg1.han@samsung.com>
|
M: Jingoo Han <jingoohan1@gmail.com>
|
||||||
L: dri-devel@lists.freedesktop.org
|
L: dri-devel@lists.freedesktop.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/gpu/drm/exynos/exynos_dp*
|
F: drivers/gpu/drm/exynos/exynos_dp*
|
||||||
|
@ -4371,11 +4387,10 @@ F: fs/gfs2/
|
||||||
F: include/uapi/linux/gfs2_ondisk.h
|
F: include/uapi/linux/gfs2_ondisk.h
|
||||||
|
|
||||||
GIGASET ISDN DRIVERS
|
GIGASET ISDN DRIVERS
|
||||||
M: Hansjoerg Lipp <hjlipp@web.de>
|
M: Paul Bolle <pebolle@tiscali.nl>
|
||||||
M: Tilman Schmidt <tilman@imap.cc>
|
|
||||||
L: gigaset307x-common@lists.sourceforge.net
|
L: gigaset307x-common@lists.sourceforge.net
|
||||||
W: http://gigaset307x.sourceforge.net/
|
W: http://gigaset307x.sourceforge.net/
|
||||||
S: Maintained
|
S: Odd Fixes
|
||||||
F: Documentation/isdn/README.gigaset
|
F: Documentation/isdn/README.gigaset
|
||||||
F: drivers/isdn/gigaset/
|
F: drivers/isdn/gigaset/
|
||||||
F: include/uapi/linux/gigaset_dev.h
|
F: include/uapi/linux/gigaset_dev.h
|
||||||
|
@ -4522,7 +4537,7 @@ M: Jean Delvare <jdelvare@suse.de>
|
||||||
M: Guenter Roeck <linux@roeck-us.net>
|
M: Guenter Roeck <linux@roeck-us.net>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
W: http://www.lm-sensors.org/
|
W: http://www.lm-sensors.org/
|
||||||
T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-hwmon/
|
T: quilt http://jdelvare.nerim.net/devel/linux/jdelvare-hwmon/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/hwmon/
|
F: Documentation/hwmon/
|
||||||
|
@ -5042,17 +5057,19 @@ S: Orphan
|
||||||
F: drivers/video/fbdev/imsttfb.c
|
F: drivers/video/fbdev/imsttfb.c
|
||||||
|
|
||||||
INFINIBAND SUBSYSTEM
|
INFINIBAND SUBSYSTEM
|
||||||
M: Roland Dreier <roland@kernel.org>
|
M: Doug Ledford <dledford@redhat.com>
|
||||||
M: Sean Hefty <sean.hefty@intel.com>
|
M: Sean Hefty <sean.hefty@intel.com>
|
||||||
M: Hal Rosenstock <hal.rosenstock@gmail.com>
|
M: Hal Rosenstock <hal.rosenstock@gmail.com>
|
||||||
L: linux-rdma@vger.kernel.org
|
L: linux-rdma@vger.kernel.org
|
||||||
W: http://www.openfabrics.org/
|
W: http://www.openfabrics.org/
|
||||||
Q: http://patchwork.kernel.org/project/linux-rdma/list/
|
Q: http://patchwork.kernel.org/project/linux-rdma/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/dledford/rdma.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/infiniband/
|
F: Documentation/infiniband/
|
||||||
F: drivers/infiniband/
|
F: drivers/infiniband/
|
||||||
F: include/uapi/linux/if_infiniband.h
|
F: include/uapi/linux/if_infiniband.h
|
||||||
|
F: include/uapi/rdma/
|
||||||
|
F: include/rdma/
|
||||||
|
|
||||||
INOTIFY
|
INOTIFY
|
||||||
M: John McCutchan <john@johnmccutchan.com>
|
M: John McCutchan <john@johnmccutchan.com>
|
||||||
|
@ -5805,6 +5822,7 @@ F: drivers/scsi/53c700*
|
||||||
LED SUBSYSTEM
|
LED SUBSYSTEM
|
||||||
M: Bryan Wu <cooloney@gmail.com>
|
M: Bryan Wu <cooloney@gmail.com>
|
||||||
M: Richard Purdie <rpurdie@rpsys.net>
|
M: Richard Purdie <rpurdie@rpsys.net>
|
||||||
|
M: Jacek Anaszewski <j.anaszewski@samsung.com>
|
||||||
L: linux-leds@vger.kernel.org
|
L: linux-leds@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -6950,6 +6968,17 @@ T: git git://git.rocketboards.org/linux-socfpga-next.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/nios2/
|
F: arch/nios2/
|
||||||
|
|
||||||
|
NOKIA N900 POWER SUPPLY DRIVERS
|
||||||
|
M: Pali Rohár <pali.rohar@gmail.com>
|
||||||
|
S: Maintained
|
||||||
|
F: include/linux/power/bq2415x_charger.h
|
||||||
|
F: include/linux/power/bq27x00_battery.h
|
||||||
|
F: include/linux/power/isp1704_charger.h
|
||||||
|
F: drivers/power/bq2415x_charger.c
|
||||||
|
F: drivers/power/bq27x00_battery.c
|
||||||
|
F: drivers/power/isp1704_charger.c
|
||||||
|
F: drivers/power/rx51_battery.c
|
||||||
|
|
||||||
NTB DRIVER
|
NTB DRIVER
|
||||||
M: Jon Mason <jdmason@kudzu.us>
|
M: Jon Mason <jdmason@kudzu.us>
|
||||||
M: Dave Jiang <dave.jiang@intel.com>
|
M: Dave Jiang <dave.jiang@intel.com>
|
||||||
|
@ -7538,7 +7567,7 @@ S: Maintained
|
||||||
F: drivers/pci/host/*rcar*
|
F: drivers/pci/host/*rcar*
|
||||||
|
|
||||||
PCI DRIVER FOR SAMSUNG EXYNOS
|
PCI DRIVER FOR SAMSUNG EXYNOS
|
||||||
M: Jingoo Han <jg1.han@samsung.com>
|
M: Jingoo Han <jingoohan1@gmail.com>
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||||
|
@ -7546,7 +7575,8 @@ S: Maintained
|
||||||
F: drivers/pci/host/pci-exynos.c
|
F: drivers/pci/host/pci-exynos.c
|
||||||
|
|
||||||
PCI DRIVER FOR SYNOPSIS DESIGNWARE
|
PCI DRIVER FOR SYNOPSIS DESIGNWARE
|
||||||
M: Jingoo Han <jg1.han@samsung.com>
|
M: Jingoo Han <jingoohan1@gmail.com>
|
||||||
|
M: Pratyush Anand <pratyush.anand@gmail.com>
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/pci/host/*designware*
|
F: drivers/pci/host/*designware*
|
||||||
|
@ -7560,8 +7590,9 @@ F: Documentation/devicetree/bindings/pci/host-generic-pci.txt
|
||||||
F: drivers/pci/host/pci-host-generic.c
|
F: drivers/pci/host/pci-host-generic.c
|
||||||
|
|
||||||
PCIE DRIVER FOR ST SPEAR13XX
|
PCIE DRIVER FOR ST SPEAR13XX
|
||||||
|
M: Pratyush Anand <pratyush.anand@gmail.com>
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
S: Orphan
|
S: Maintained
|
||||||
F: drivers/pci/host/*spear*
|
F: drivers/pci/host/*spear*
|
||||||
|
|
||||||
PCMCIA SUBSYSTEM
|
PCMCIA SUBSYSTEM
|
||||||
|
@ -8502,7 +8533,7 @@ S: Supported
|
||||||
F: sound/soc/samsung/
|
F: sound/soc/samsung/
|
||||||
|
|
||||||
SAMSUNG FRAMEBUFFER DRIVER
|
SAMSUNG FRAMEBUFFER DRIVER
|
||||||
M: Jingoo Han <jg1.han@samsung.com>
|
M: Jingoo Han <jingoohan1@gmail.com>
|
||||||
L: linux-fbdev@vger.kernel.org
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/fbdev/s3c-fb.c
|
F: drivers/video/fbdev/s3c-fb.c
|
||||||
|
@ -8801,16 +8832,19 @@ F: drivers/misc/phantom.c
|
||||||
F: include/uapi/linux/phantom.h
|
F: include/uapi/linux/phantom.h
|
||||||
|
|
||||||
SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
|
SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
|
||||||
M: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
|
M: Jayamohan Kallickal <jayamohan.kallickal@avagotech.com>
|
||||||
|
M: Minh Tran <minh.tran@avagotech.com>
|
||||||
|
M: John Soni Jose <sony.john-n@avagotech.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
W: http://www.emulex.com
|
W: http://www.avagotech.com
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/scsi/be2iscsi/
|
F: drivers/scsi/be2iscsi/
|
||||||
|
|
||||||
SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
|
Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER
|
||||||
M: Sathya Perla <sathya.perla@emulex.com>
|
M: Sathya Perla <sathya.perla@avagotech.com>
|
||||||
M: Subbu Seetharaman <subbu.seetharaman@emulex.com>
|
M: Ajit Khaparde <ajit.khaparde@avagotech.com>
|
||||||
M: Ajit Khaparde <ajit.khaparde@emulex.com>
|
M: Padmanabh Ratnakar <padmanabh.ratnakar@avagotech.com>
|
||||||
|
M: Sriharsha Basavapatna <sriharsha.basavapatna@avagotech.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
W: http://www.emulex.com
|
W: http://www.emulex.com
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -10556,8 +10590,7 @@ F: drivers/virtio/virtio_input.c
|
||||||
F: include/uapi/linux/virtio_input.h
|
F: include/uapi/linux/virtio_input.h
|
||||||
|
|
||||||
VIA RHINE NETWORK DRIVER
|
VIA RHINE NETWORK DRIVER
|
||||||
M: Roger Luethi <rl@hellgate.ch>
|
S: Orphan
|
||||||
S: Maintained
|
|
||||||
F: drivers/net/ethernet/via/via-rhine.c
|
F: drivers/net/ethernet/via/via-rhine.c
|
||||||
|
|
||||||
VIA SD/MMC CARD CONTROLLER DRIVER
|
VIA SD/MMC CARD CONTROLLER DRIVER
|
||||||
|
@ -11037,6 +11070,7 @@ F: drivers/media/pci/zoran/
|
||||||
ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER
|
ZRAM COMPRESSED RAM BLOCK DEVICE DRVIER
|
||||||
M: Minchan Kim <minchan@kernel.org>
|
M: Minchan Kim <minchan@kernel.org>
|
||||||
M: Nitin Gupta <ngupta@vflare.org>
|
M: Nitin Gupta <ngupta@vflare.org>
|
||||||
|
R: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/block/zram/
|
F: drivers/block/zram/
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 1
|
PATCHLEVEL = 1
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc8
|
||||||
NAME = Hurr durr I'ma sheep
|
NAME = Hurr durr I'ma sheep
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
|
@ -14,6 +14,9 @@ targets := vmlinux.gz vmlinux \
|
||||||
tools/bootpzh bootloader bootpheader bootpzheader
|
tools/bootpzh bootloader bootpheader bootpzheader
|
||||||
OBJSTRIP := $(obj)/tools/objstrip
|
OBJSTRIP := $(obj)/tools/objstrip
|
||||||
|
|
||||||
|
HOSTCFLAGS := -Wall -I$(objtree)/usr/include
|
||||||
|
BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj)
|
||||||
|
|
||||||
# SRM bootable image. Copy to offset 512 of a partition.
|
# SRM bootable image. Copy to offset 512 of a partition.
|
||||||
$(obj)/bootimage: $(addprefix $(obj)/tools/,mkbb lxboot bootlx) $(obj)/vmlinux.nh
|
$(obj)/bootimage: $(addprefix $(obj)/tools/,mkbb lxboot bootlx) $(obj)/vmlinux.nh
|
||||||
( cat $(obj)/tools/lxboot $(obj)/tools/bootlx $(obj)/vmlinux.nh ) > $@
|
( cat $(obj)/tools/lxboot $(obj)/tools/bootlx $(obj)/vmlinux.nh ) > $@
|
||||||
|
@ -96,13 +99,14 @@ $(obj)/tools/bootph: $(obj)/bootpheader $(OBJSTRIP) FORCE
|
||||||
$(obj)/tools/bootpzh: $(obj)/bootpzheader $(OBJSTRIP) FORCE
|
$(obj)/tools/bootpzh: $(obj)/bootpzheader $(OBJSTRIP) FORCE
|
||||||
$(call if_changed,objstrip)
|
$(call if_changed,objstrip)
|
||||||
|
|
||||||
LDFLAGS_bootloader := -static -uvsprintf -T #-N -relax
|
LDFLAGS_bootloader := -static -T # -N -relax
|
||||||
LDFLAGS_bootpheader := -static -uvsprintf -T #-N -relax
|
LDFLAGS_bootloader := -static -T # -N -relax
|
||||||
LDFLAGS_bootpzheader := -static -uvsprintf -T #-N -relax
|
LDFLAGS_bootpheader := -static -T # -N -relax
|
||||||
|
LDFLAGS_bootpzheader := -static -T # -N -relax
|
||||||
|
|
||||||
OBJ_bootlx := $(obj)/head.o $(obj)/main.o
|
OBJ_bootlx := $(obj)/head.o $(obj)/stdio.o $(obj)/main.o
|
||||||
OBJ_bootph := $(obj)/head.o $(obj)/bootp.o
|
OBJ_bootph := $(obj)/head.o $(obj)/stdio.o $(obj)/bootp.o
|
||||||
OBJ_bootpzh := $(obj)/head.o $(obj)/bootpz.o $(obj)/misc.o
|
OBJ_bootpzh := $(obj)/head.o $(obj)/stdio.o $(obj)/bootpz.o $(obj)/misc.o
|
||||||
|
|
||||||
$(obj)/bootloader: $(obj)/bootloader.lds $(OBJ_bootlx) $(LIBS_Y) FORCE
|
$(obj)/bootloader: $(obj)/bootloader.lds $(OBJ_bootlx) $(LIBS_Y) FORCE
|
||||||
$(call if_changed,ld)
|
$(call if_changed,ld)
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
#include "ksize.h"
|
#include "ksize.h"
|
||||||
|
|
||||||
extern int vsprintf(char *, const char *, va_list);
|
|
||||||
extern unsigned long switch_to_osf_pal(unsigned long nr,
|
extern unsigned long switch_to_osf_pal(unsigned long nr,
|
||||||
struct pcb_struct * pcb_va, struct pcb_struct * pcb_pa,
|
struct pcb_struct * pcb_va, struct pcb_struct * pcb_pa,
|
||||||
unsigned long *vptb);
|
unsigned long *vptb);
|
||||||
|
|
306
arch/alpha/boot/stdio.c
Normal file
306
arch/alpha/boot/stdio.c
Normal file
|
@ -0,0 +1,306 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) Paul Mackerras 1997.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version
|
||||||
|
* 2 of the License, or (at your option) any later version.
|
||||||
|
*/
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
size_t strnlen(const char * s, size_t count)
|
||||||
|
{
|
||||||
|
const char *sc;
|
||||||
|
|
||||||
|
for (sc = s; count-- && *sc != '\0'; ++sc)
|
||||||
|
/* nothing */;
|
||||||
|
return sc - s;
|
||||||
|
}
|
||||||
|
|
||||||
|
# define do_div(n, base) ({ \
|
||||||
|
unsigned int __base = (base); \
|
||||||
|
unsigned int __rem; \
|
||||||
|
__rem = ((unsigned long long)(n)) % __base; \
|
||||||
|
(n) = ((unsigned long long)(n)) / __base; \
|
||||||
|
__rem; \
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
static int skip_atoi(const char **s)
|
||||||
|
{
|
||||||
|
int i, c;
|
||||||
|
|
||||||
|
for (i = 0; '0' <= (c = **s) && c <= '9'; ++*s)
|
||||||
|
i = i*10 + c - '0';
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define ZEROPAD 1 /* pad with zero */
|
||||||
|
#define SIGN 2 /* unsigned/signed long */
|
||||||
|
#define PLUS 4 /* show plus */
|
||||||
|
#define SPACE 8 /* space if plus */
|
||||||
|
#define LEFT 16 /* left justified */
|
||||||
|
#define SPECIAL 32 /* 0x */
|
||||||
|
#define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */
|
||||||
|
|
||||||
|
static char * number(char * str, unsigned long long num, int base, int size, int precision, int type)
|
||||||
|
{
|
||||||
|
char c,sign,tmp[66];
|
||||||
|
const char *digits="0123456789abcdefghijklmnopqrstuvwxyz";
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (type & LARGE)
|
||||||
|
digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
if (type & LEFT)
|
||||||
|
type &= ~ZEROPAD;
|
||||||
|
if (base < 2 || base > 36)
|
||||||
|
return 0;
|
||||||
|
c = (type & ZEROPAD) ? '0' : ' ';
|
||||||
|
sign = 0;
|
||||||
|
if (type & SIGN) {
|
||||||
|
if ((signed long long)num < 0) {
|
||||||
|
sign = '-';
|
||||||
|
num = - (signed long long)num;
|
||||||
|
size--;
|
||||||
|
} else if (type & PLUS) {
|
||||||
|
sign = '+';
|
||||||
|
size--;
|
||||||
|
} else if (type & SPACE) {
|
||||||
|
sign = ' ';
|
||||||
|
size--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (type & SPECIAL) {
|
||||||
|
if (base == 16)
|
||||||
|
size -= 2;
|
||||||
|
else if (base == 8)
|
||||||
|
size--;
|
||||||
|
}
|
||||||
|
i = 0;
|
||||||
|
if (num == 0)
|
||||||
|
tmp[i++]='0';
|
||||||
|
else while (num != 0) {
|
||||||
|
tmp[i++] = digits[do_div(num, base)];
|
||||||
|
}
|
||||||
|
if (i > precision)
|
||||||
|
precision = i;
|
||||||
|
size -= precision;
|
||||||
|
if (!(type&(ZEROPAD+LEFT)))
|
||||||
|
while(size-->0)
|
||||||
|
*str++ = ' ';
|
||||||
|
if (sign)
|
||||||
|
*str++ = sign;
|
||||||
|
if (type & SPECIAL) {
|
||||||
|
if (base==8)
|
||||||
|
*str++ = '0';
|
||||||
|
else if (base==16) {
|
||||||
|
*str++ = '0';
|
||||||
|
*str++ = digits[33];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!(type & LEFT))
|
||||||
|
while (size-- > 0)
|
||||||
|
*str++ = c;
|
||||||
|
while (i < precision--)
|
||||||
|
*str++ = '0';
|
||||||
|
while (i-- > 0)
|
||||||
|
*str++ = tmp[i];
|
||||||
|
while (size-- > 0)
|
||||||
|
*str++ = ' ';
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
int vsprintf(char *buf, const char *fmt, va_list args)
|
||||||
|
{
|
||||||
|
int len;
|
||||||
|
unsigned long long num;
|
||||||
|
int i, base;
|
||||||
|
char * str;
|
||||||
|
const char *s;
|
||||||
|
|
||||||
|
int flags; /* flags to number() */
|
||||||
|
|
||||||
|
int field_width; /* width of output field */
|
||||||
|
int precision; /* min. # of digits for integers; max
|
||||||
|
number of chars for from string */
|
||||||
|
int qualifier; /* 'h', 'l', or 'L' for integer fields */
|
||||||
|
/* 'z' support added 23/7/1999 S.H. */
|
||||||
|
/* 'z' changed to 'Z' --davidm 1/25/99 */
|
||||||
|
|
||||||
|
|
||||||
|
for (str=buf ; *fmt ; ++fmt) {
|
||||||
|
if (*fmt != '%') {
|
||||||
|
*str++ = *fmt;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* process flags */
|
||||||
|
flags = 0;
|
||||||
|
repeat:
|
||||||
|
++fmt; /* this also skips first '%' */
|
||||||
|
switch (*fmt) {
|
||||||
|
case '-': flags |= LEFT; goto repeat;
|
||||||
|
case '+': flags |= PLUS; goto repeat;
|
||||||
|
case ' ': flags |= SPACE; goto repeat;
|
||||||
|
case '#': flags |= SPECIAL; goto repeat;
|
||||||
|
case '0': flags |= ZEROPAD; goto repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get field width */
|
||||||
|
field_width = -1;
|
||||||
|
if ('0' <= *fmt && *fmt <= '9')
|
||||||
|
field_width = skip_atoi(&fmt);
|
||||||
|
else if (*fmt == '*') {
|
||||||
|
++fmt;
|
||||||
|
/* it's the next argument */
|
||||||
|
field_width = va_arg(args, int);
|
||||||
|
if (field_width < 0) {
|
||||||
|
field_width = -field_width;
|
||||||
|
flags |= LEFT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get the precision */
|
||||||
|
precision = -1;
|
||||||
|
if (*fmt == '.') {
|
||||||
|
++fmt;
|
||||||
|
if ('0' <= *fmt && *fmt <= '9')
|
||||||
|
precision = skip_atoi(&fmt);
|
||||||
|
else if (*fmt == '*') {
|
||||||
|
++fmt;
|
||||||
|
/* it's the next argument */
|
||||||
|
precision = va_arg(args, int);
|
||||||
|
}
|
||||||
|
if (precision < 0)
|
||||||
|
precision = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get the conversion qualifier */
|
||||||
|
qualifier = -1;
|
||||||
|
if (*fmt == 'l' && *(fmt + 1) == 'l') {
|
||||||
|
qualifier = 'q';
|
||||||
|
fmt += 2;
|
||||||
|
} else if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L'
|
||||||
|
|| *fmt == 'Z') {
|
||||||
|
qualifier = *fmt;
|
||||||
|
++fmt;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* default base */
|
||||||
|
base = 10;
|
||||||
|
|
||||||
|
switch (*fmt) {
|
||||||
|
case 'c':
|
||||||
|
if (!(flags & LEFT))
|
||||||
|
while (--field_width > 0)
|
||||||
|
*str++ = ' ';
|
||||||
|
*str++ = (unsigned char) va_arg(args, int);
|
||||||
|
while (--field_width > 0)
|
||||||
|
*str++ = ' ';
|
||||||
|
continue;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
s = va_arg(args, char *);
|
||||||
|
if (!s)
|
||||||
|
s = "<NULL>";
|
||||||
|
|
||||||
|
len = strnlen(s, precision);
|
||||||
|
|
||||||
|
if (!(flags & LEFT))
|
||||||
|
while (len < field_width--)
|
||||||
|
*str++ = ' ';
|
||||||
|
for (i = 0; i < len; ++i)
|
||||||
|
*str++ = *s++;
|
||||||
|
while (len < field_width--)
|
||||||
|
*str++ = ' ';
|
||||||
|
continue;
|
||||||
|
|
||||||
|
case 'p':
|
||||||
|
if (field_width == -1) {
|
||||||
|
field_width = 2*sizeof(void *);
|
||||||
|
flags |= ZEROPAD;
|
||||||
|
}
|
||||||
|
str = number(str,
|
||||||
|
(unsigned long) va_arg(args, void *), 16,
|
||||||
|
field_width, precision, flags);
|
||||||
|
continue;
|
||||||
|
|
||||||
|
|
||||||
|
case 'n':
|
||||||
|
if (qualifier == 'l') {
|
||||||
|
long * ip = va_arg(args, long *);
|
||||||
|
*ip = (str - buf);
|
||||||
|
} else if (qualifier == 'Z') {
|
||||||
|
size_t * ip = va_arg(args, size_t *);
|
||||||
|
*ip = (str - buf);
|
||||||
|
} else {
|
||||||
|
int * ip = va_arg(args, int *);
|
||||||
|
*ip = (str - buf);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
|
||||||
|
case '%':
|
||||||
|
*str++ = '%';
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* integer number formats - set up the flags and "break" */
|
||||||
|
case 'o':
|
||||||
|
base = 8;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'X':
|
||||||
|
flags |= LARGE;
|
||||||
|
case 'x':
|
||||||
|
base = 16;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
case 'i':
|
||||||
|
flags |= SIGN;
|
||||||
|
case 'u':
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
*str++ = '%';
|
||||||
|
if (*fmt)
|
||||||
|
*str++ = *fmt;
|
||||||
|
else
|
||||||
|
--fmt;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (qualifier == 'l') {
|
||||||
|
num = va_arg(args, unsigned long);
|
||||||
|
if (flags & SIGN)
|
||||||
|
num = (signed long) num;
|
||||||
|
} else if (qualifier == 'q') {
|
||||||
|
num = va_arg(args, unsigned long long);
|
||||||
|
if (flags & SIGN)
|
||||||
|
num = (signed long long) num;
|
||||||
|
} else if (qualifier == 'Z') {
|
||||||
|
num = va_arg(args, size_t);
|
||||||
|
} else if (qualifier == 'h') {
|
||||||
|
num = (unsigned short) va_arg(args, int);
|
||||||
|
if (flags & SIGN)
|
||||||
|
num = (signed short) num;
|
||||||
|
} else {
|
||||||
|
num = va_arg(args, unsigned int);
|
||||||
|
if (flags & SIGN)
|
||||||
|
num = (signed int) num;
|
||||||
|
}
|
||||||
|
str = number(str, num, base, field_width, precision, flags);
|
||||||
|
}
|
||||||
|
*str = '\0';
|
||||||
|
return str-buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
int sprintf(char * buf, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
va_start(args, fmt);
|
||||||
|
i=vsprintf(buf,fmt,args);
|
||||||
|
va_end(args);
|
||||||
|
return i;
|
||||||
|
}
|
|
@ -27,6 +27,9 @@
|
||||||
#include <linux/param.h>
|
#include <linux/param.h>
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
# include <linux/elf.h>
|
# include <linux/elf.h>
|
||||||
|
# define elfhdr elf64_hdr
|
||||||
|
# define elf_phdr elf64_phdr
|
||||||
|
# define elf_check_arch(x) ((x)->e_machine == EM_ALPHA)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* bootfile size must be multiple of BLOCK_SIZE: */
|
/* bootfile size must be multiple of BLOCK_SIZE: */
|
||||||
|
|
|
@ -2,6 +2,5 @@
|
||||||
#define _ALPHA_TYPES_H
|
#define _ALPHA_TYPES_H
|
||||||
|
|
||||||
#include <asm-generic/int-ll64.h>
|
#include <asm-generic/int-ll64.h>
|
||||||
#include <uapi/asm/types.h>
|
|
||||||
|
|
||||||
#endif /* _ALPHA_TYPES_H */
|
#endif /* _ALPHA_TYPES_H */
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include <uapi/asm/unistd.h>
|
#include <uapi/asm/unistd.h>
|
||||||
|
|
||||||
#define NR_SYSCALLS 511
|
#define NR_SYSCALLS 514
|
||||||
|
|
||||||
#define __ARCH_WANT_OLD_READDIR
|
#define __ARCH_WANT_OLD_READDIR
|
||||||
#define __ARCH_WANT_STAT64
|
#define __ARCH_WANT_STAT64
|
||||||
|
|
|
@ -472,5 +472,8 @@
|
||||||
#define __NR_sched_setattr 508
|
#define __NR_sched_setattr 508
|
||||||
#define __NR_sched_getattr 509
|
#define __NR_sched_getattr 509
|
||||||
#define __NR_renameat2 510
|
#define __NR_renameat2 510
|
||||||
|
#define __NR_getrandom 511
|
||||||
|
#define __NR_memfd_create 512
|
||||||
|
#define __NR_execveat 513
|
||||||
|
|
||||||
#endif /* _UAPI_ALPHA_UNISTD_H */
|
#endif /* _UAPI_ALPHA_UNISTD_H */
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
* Error handling code supporting Alpha systems
|
* Error handling code supporting Alpha systems
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
|
|
|
@ -1019,14 +1019,13 @@ SYSCALL_DEFINE2(osf_settimeofday, struct timeval32 __user *, tv,
|
||||||
if (tv) {
|
if (tv) {
|
||||||
if (get_tv32((struct timeval *)&kts, tv))
|
if (get_tv32((struct timeval *)&kts, tv))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
kts.tv_nsec *= 1000;
|
||||||
}
|
}
|
||||||
if (tz) {
|
if (tz) {
|
||||||
if (copy_from_user(&ktz, tz, sizeof(*tz)))
|
if (copy_from_user(&ktz, tz, sizeof(*tz)))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
kts.tv_nsec *= 1000;
|
|
||||||
|
|
||||||
return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
|
return do_sys_settimeofday(tv ? &kts : NULL, tz ? &ktz : NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -236,12 +236,11 @@ release_thread(struct task_struct *dead_task)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy an alpha thread..
|
* Copy architecture-specific thread state
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
copy_thread(unsigned long clone_flags, unsigned long usp,
|
copy_thread(unsigned long clone_flags, unsigned long usp,
|
||||||
unsigned long arg,
|
unsigned long kthread_arg,
|
||||||
struct task_struct *p)
|
struct task_struct *p)
|
||||||
{
|
{
|
||||||
extern void ret_from_fork(void);
|
extern void ret_from_fork(void);
|
||||||
|
@ -262,7 +261,7 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
|
||||||
sizeof(struct switch_stack) + sizeof(struct pt_regs));
|
sizeof(struct switch_stack) + sizeof(struct pt_regs));
|
||||||
childstack->r26 = (unsigned long) ret_from_kernel_thread;
|
childstack->r26 = (unsigned long) ret_from_kernel_thread;
|
||||||
childstack->r9 = usp; /* function */
|
childstack->r9 = usp; /* function */
|
||||||
childstack->r10 = arg;
|
childstack->r10 = kthread_arg;
|
||||||
childregs->hae = alpha_mv.hae_cache,
|
childregs->hae = alpha_mv.hae_cache,
|
||||||
childti->pcb.usp = 0;
|
childti->pcb.usp = 0;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -63,7 +63,6 @@ static struct {
|
||||||
enum ipi_message_type {
|
enum ipi_message_type {
|
||||||
IPI_RESCHEDULE,
|
IPI_RESCHEDULE,
|
||||||
IPI_CALL_FUNC,
|
IPI_CALL_FUNC,
|
||||||
IPI_CALL_FUNC_SINGLE,
|
|
||||||
IPI_CPU_STOP,
|
IPI_CPU_STOP,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -506,7 +505,6 @@ setup_profiling_timer(unsigned int multiplier)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
send_ipi_message(const struct cpumask *to_whom, enum ipi_message_type operation)
|
send_ipi_message(const struct cpumask *to_whom, enum ipi_message_type operation)
|
||||||
{
|
{
|
||||||
|
@ -552,10 +550,6 @@ handle_ipi(struct pt_regs *regs)
|
||||||
generic_smp_call_function_interrupt();
|
generic_smp_call_function_interrupt();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IPI_CALL_FUNC_SINGLE:
|
|
||||||
generic_smp_call_function_single_interrupt();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IPI_CPU_STOP:
|
case IPI_CPU_STOP:
|
||||||
halt();
|
halt();
|
||||||
|
|
||||||
|
@ -606,7 +600,7 @@ void arch_send_call_function_ipi_mask(const struct cpumask *mask)
|
||||||
|
|
||||||
void arch_send_call_function_single_ipi(int cpu)
|
void arch_send_call_function_single_ipi(int cpu)
|
||||||
{
|
{
|
||||||
send_ipi_message(cpumask_of(cpu), IPI_CALL_FUNC_SINGLE);
|
send_ipi_message(cpumask_of(cpu), IPI_CALL_FUNC);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -237,8 +237,7 @@ srmcons_init(void)
|
||||||
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
device_initcall(srmcons_init);
|
||||||
module_init(srmcons_init);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -331,7 +331,7 @@ marvel_map_irq(const struct pci_dev *cdev, u8 slot, u8 pin)
|
||||||
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &intline);
|
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &intline);
|
||||||
irq = intline;
|
irq = intline;
|
||||||
|
|
||||||
msi_loc = pci_find_capability(dev, PCI_CAP_ID_MSI);
|
msi_loc = dev->msi_cap;
|
||||||
msg_ctl = 0;
|
msg_ctl = 0;
|
||||||
if (msi_loc)
|
if (msi_loc)
|
||||||
pci_read_config_word(dev, msi_loc + PCI_MSI_FLAGS, &msg_ctl);
|
pci_read_config_word(dev, msi_loc + PCI_MSI_FLAGS, &msg_ctl);
|
||||||
|
|
|
@ -529,6 +529,9 @@ sys_call_table:
|
||||||
.quad sys_sched_setattr
|
.quad sys_sched_setattr
|
||||||
.quad sys_sched_getattr
|
.quad sys_sched_getattr
|
||||||
.quad sys_renameat2 /* 510 */
|
.quad sys_renameat2 /* 510 */
|
||||||
|
.quad sys_getrandom
|
||||||
|
.quad sys_memfd_create
|
||||||
|
.quad sys_execveat
|
||||||
|
|
||||||
.size sys_call_table, . - sys_call_table
|
.size sys_call_table, . - sys_call_table
|
||||||
.type sys_call_table, @object
|
.type sys_call_table, @object
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
#include <linux/tty.h>
|
#include <linux/tty.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/kallsyms.h>
|
#include <linux/kallsyms.h>
|
||||||
#include <linux/ratelimit.h>
|
#include <linux/ratelimit.h>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/oprofile.h>
|
#include <linux/oprofile.h>
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/oprofile.h>
|
#include <linux/oprofile.h>
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/oprofile.h>
|
#include <linux/oprofile.h>
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/oprofile.h>
|
#include <linux/oprofile.h>
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
|
|
||||||
|
|
|
@ -2,19 +2,6 @@ menu "Kernel hacking"
|
||||||
|
|
||||||
source "lib/Kconfig.debug"
|
source "lib/Kconfig.debug"
|
||||||
|
|
||||||
config EARLY_PRINTK
|
|
||||||
bool "Early printk" if EMBEDDED
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Write kernel log output directly into the VGA buffer or to a serial
|
|
||||||
port.
|
|
||||||
|
|
||||||
This is useful for kernel debugging when your machine crashes very
|
|
||||||
early before the console code is initialized. For normal operation
|
|
||||||
it is not recommended because it looks ugly and doesn't cooperate
|
|
||||||
with klogd/syslogd or the X server. You should normally N here,
|
|
||||||
unless you want to debug such a crash.
|
|
||||||
|
|
||||||
config 16KSTACKS
|
config 16KSTACKS
|
||||||
bool "Use 16Kb for kernel stacks instead of 8Kb"
|
bool "Use 16Kb for kernel stacks instead of 8Kb"
|
||||||
help
|
help
|
||||||
|
|
|
@ -99,7 +99,7 @@ static inline void atomic_##op(int i, atomic_t *v) \
|
||||||
atomic_ops_unlock(flags); \
|
atomic_ops_unlock(flags); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ATOMIC_OP_RETURN(op, c_op) \
|
#define ATOMIC_OP_RETURN(op, c_op, asm_op) \
|
||||||
static inline int atomic_##op##_return(int i, atomic_t *v) \
|
static inline int atomic_##op##_return(int i, atomic_t *v) \
|
||||||
{ \
|
{ \
|
||||||
unsigned long flags; \
|
unsigned long flags; \
|
||||||
|
|
|
@ -266,7 +266,7 @@ static inline void __cache_line_loop(unsigned long paddr, unsigned long vaddr,
|
||||||
* Machine specific helpers for Entire D-Cache or Per Line ops
|
* Machine specific helpers for Entire D-Cache or Per Line ops
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static unsigned int __before_dc_op(const int op)
|
static inline unsigned int __before_dc_op(const int op)
|
||||||
{
|
{
|
||||||
unsigned int reg = reg;
|
unsigned int reg = reg;
|
||||||
|
|
||||||
|
@ -284,7 +284,7 @@ static unsigned int __before_dc_op(const int op)
|
||||||
return reg;
|
return reg;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __after_dc_op(const int op, unsigned int reg)
|
static inline void __after_dc_op(const int op, unsigned int reg)
|
||||||
{
|
{
|
||||||
if (op & OP_FLUSH) /* flush / flush-n-inv both wait */
|
if (op & OP_FLUSH) /* flush / flush-n-inv both wait */
|
||||||
while (read_aux_reg(ARC_REG_DC_CTRL) & DC_CTRL_FLUSH_STATUS);
|
while (read_aux_reg(ARC_REG_DC_CTRL) & DC_CTRL_FLUSH_STATUS);
|
||||||
|
|
|
@ -223,7 +223,7 @@ dtb-$(CONFIG_SOC_IMX25) += \
|
||||||
imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dtb \
|
imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dtb \
|
||||||
imx25-karo-tx25.dtb \
|
imx25-karo-tx25.dtb \
|
||||||
imx25-pdk.dtb
|
imx25-pdk.dtb
|
||||||
dtb-$(CONFIG_SOC_IMX31) += \
|
dtb-$(CONFIG_SOC_IMX27) += \
|
||||||
imx27-apf27.dtb \
|
imx27-apf27.dtb \
|
||||||
imx27-apf27dev.dtb \
|
imx27-apf27dev.dtb \
|
||||||
imx27-eukrea-mbimxsd27-baseboard.dtb \
|
imx27-eukrea-mbimxsd27-baseboard.dtb \
|
||||||
|
|
|
@ -223,6 +223,25 @@
|
||||||
/include/ "tps65217.dtsi"
|
/include/ "tps65217.dtsi"
|
||||||
|
|
||||||
&tps {
|
&tps {
|
||||||
|
/*
|
||||||
|
* Configure pmic to enter OFF-state instead of SLEEP-state ("RTC-only
|
||||||
|
* mode") at poweroff. Most BeagleBone versions do not support RTC-only
|
||||||
|
* mode and risk hardware damage if this mode is entered.
|
||||||
|
*
|
||||||
|
* For details, see linux-omap mailing list May 2015 thread
|
||||||
|
* [PATCH] ARM: dts: am335x-bone* enable pmic-shutdown-controller
|
||||||
|
* In particular, messages:
|
||||||
|
* http://www.spinics.net/lists/linux-omap/msg118585.html
|
||||||
|
* http://www.spinics.net/lists/linux-omap/msg118615.html
|
||||||
|
*
|
||||||
|
* You can override this later with
|
||||||
|
* &tps { /delete-property/ ti,pmic-shutdown-controller; }
|
||||||
|
* if you want to use RTC-only mode and made sure you are not affected
|
||||||
|
* by the hardware problems. (Tip: double-check by performing a current
|
||||||
|
* measurement after shutdown: it should be less than 1 mA.)
|
||||||
|
*/
|
||||||
|
ti,pmic-shutdown-controller;
|
||||||
|
|
||||||
regulators {
|
regulators {
|
||||||
dcdc1_reg: regulator@0 {
|
dcdc1_reg: regulator@0 {
|
||||||
regulator-name = "vdds_dpr";
|
regulator-name = "vdds_dpr";
|
||||||
|
|
|
@ -80,7 +80,3 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&rtc {
|
|
||||||
system-power-controller;
|
|
||||||
};
|
|
||||||
|
|
|
@ -654,7 +654,7 @@
|
||||||
wlcore: wlcore@2 {
|
wlcore: wlcore@2 {
|
||||||
compatible = "ti,wl1271";
|
compatible = "ti,wl1271";
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
interrupt-parent = <&gpio1>;
|
interrupt-parent = <&gpio0>;
|
||||||
interrupts = <31 IRQ_TYPE_LEVEL_HIGH>; /* gpio 31 */
|
interrupts = <31 IRQ_TYPE_LEVEL_HIGH>; /* gpio 31 */
|
||||||
ref-clock-frequency = <38400000>;
|
ref-clock-frequency = <38400000>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "ti,am35xx-gate-clock";
|
compatible = "ti,am35xx-gate-clock";
|
||||||
clocks = <&ipss_ick>;
|
clocks = <&ipss_ick>;
|
||||||
reg = <0x059c>;
|
reg = <0x032c>;
|
||||||
ti,bit-shift = <1>;
|
ti,bit-shift = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "ti,gate-clock";
|
compatible = "ti,gate-clock";
|
||||||
clocks = <&rmii_ck>;
|
clocks = <&rmii_ck>;
|
||||||
reg = <0x059c>;
|
reg = <0x032c>;
|
||||||
ti,bit-shift = <9>;
|
ti,bit-shift = <9>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "ti,am35xx-gate-clock";
|
compatible = "ti,am35xx-gate-clock";
|
||||||
clocks = <&ipss_ick>;
|
clocks = <&ipss_ick>;
|
||||||
reg = <0x059c>;
|
reg = <0x032c>;
|
||||||
ti,bit-shift = <2>;
|
ti,bit-shift = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "ti,gate-clock";
|
compatible = "ti,gate-clock";
|
||||||
clocks = <&pclk_ck>;
|
clocks = <&pclk_ck>;
|
||||||
reg = <0x059c>;
|
reg = <0x032c>;
|
||||||
ti,bit-shift = <10>;
|
ti,bit-shift = <10>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "ti,am35xx-gate-clock";
|
compatible = "ti,am35xx-gate-clock";
|
||||||
clocks = <&ipss_ick>;
|
clocks = <&ipss_ick>;
|
||||||
reg = <0x059c>;
|
reg = <0x032c>;
|
||||||
ti,bit-shift = <0>;
|
ti,bit-shift = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "ti,gate-clock";
|
compatible = "ti,gate-clock";
|
||||||
clocks = <&sys_ck>;
|
clocks = <&sys_ck>;
|
||||||
reg = <0x059c>;
|
reg = <0x032c>;
|
||||||
ti,bit-shift = <8>;
|
ti,bit-shift = <8>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
compatible = "ti,am35xx-gate-clock";
|
compatible = "ti,am35xx-gate-clock";
|
||||||
clocks = <&sys_ck>;
|
clocks = <&sys_ck>;
|
||||||
reg = <0x059c>;
|
reg = <0x032c>;
|
||||||
ti,bit-shift = <3>;
|
ti,bit-shift = <3>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
pinctrl-0 = <&matrix_keypad_pins>;
|
pinctrl-0 = <&matrix_keypad_pins>;
|
||||||
|
|
||||||
debounce-delay-ms = <5>;
|
debounce-delay-ms = <5>;
|
||||||
col-scan-delay-us = <1500>;
|
col-scan-delay-us = <5>;
|
||||||
|
|
||||||
row-gpios = <&gpio5 5 GPIO_ACTIVE_HIGH /* Bank5, pin5 */
|
row-gpios = <&gpio5 5 GPIO_ACTIVE_HIGH /* Bank5, pin5 */
|
||||||
&gpio5 6 GPIO_ACTIVE_HIGH>; /* Bank5, pin6 */
|
&gpio5 6 GPIO_ACTIVE_HIGH>; /* Bank5, pin6 */
|
||||||
|
@ -473,7 +473,7 @@
|
||||||
interrupt-parent = <&gpio0>;
|
interrupt-parent = <&gpio0>;
|
||||||
interrupts = <31 0>;
|
interrupts = <31 0>;
|
||||||
|
|
||||||
wake-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
|
reset-gpios = <&gpio1 28 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
touchscreen-size-x = <480>;
|
touchscreen-size-x = <480>;
|
||||||
touchscreen-size-y = <272>;
|
touchscreen-size-y = <272>;
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
aliases {
|
aliases {
|
||||||
rtc0 = &mcp_rtc;
|
rtc0 = &mcp_rtc;
|
||||||
rtc1 = &tps659038_rtc;
|
rtc1 = &tps659038_rtc;
|
||||||
|
rtc2 = &rtc;
|
||||||
};
|
};
|
||||||
|
|
||||||
memory {
|
memory {
|
||||||
|
@ -83,7 +84,7 @@
|
||||||
gpio_fan: gpio_fan {
|
gpio_fan: gpio_fan {
|
||||||
/* Based on 5v 500mA AFB02505HHB */
|
/* Based on 5v 500mA AFB02505HHB */
|
||||||
compatible = "gpio-fan";
|
compatible = "gpio-fan";
|
||||||
gpios = <&tps659038_gpio 1 GPIO_ACTIVE_HIGH>;
|
gpios = <&tps659038_gpio 2 GPIO_ACTIVE_HIGH>;
|
||||||
gpio-fan,speed-map = <0 0>,
|
gpio-fan,speed-map = <0 0>,
|
||||||
<13000 1>;
|
<13000 1>;
|
||||||
#cooling-cells = <2>;
|
#cooling-cells = <2>;
|
||||||
|
@ -130,8 +131,8 @@
|
||||||
|
|
||||||
uart3_pins_default: uart3_pins_default {
|
uart3_pins_default: uart3_pins_default {
|
||||||
pinctrl-single,pins = <
|
pinctrl-single,pins = <
|
||||||
0x248 (PIN_INPUT_SLEW | MUX_MODE0) /* uart3_rxd.rxd */
|
0x3f8 (PIN_INPUT_SLEW | MUX_MODE2) /* uart2_ctsn.uart3_rxd */
|
||||||
0x24c (PIN_INPUT_SLEW | MUX_MODE0) /* uart3_txd.txd */
|
0x3fc (PIN_INPUT_SLEW | MUX_MODE1) /* uart2_rtsn.uart3_txd */
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -455,7 +456,7 @@
|
||||||
mcp_rtc: rtc@6f {
|
mcp_rtc: rtc@6f {
|
||||||
compatible = "microchip,mcp7941x";
|
compatible = "microchip,mcp7941x";
|
||||||
reg = <0x6f>;
|
reg = <0x6f>;
|
||||||
interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_LOW>; /* IRQ_SYS_1N */
|
interrupts = <GIC_SPI 2 IRQ_TYPE_EDGE_RISING>; /* IRQ_SYS_1N */
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&mcp79410_pins_default>;
|
pinctrl-0 = <&mcp79410_pins_default>;
|
||||||
|
@ -478,7 +479,7 @@
|
||||||
&uart3 {
|
&uart3 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts-extended = <&crossbar_mpu GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<&dra7_pmx_core 0x248>;
|
<&dra7_pmx_core 0x3f8>;
|
||||||
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&uart3_pins_default>;
|
pinctrl-0 = <&uart3_pins_default>;
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
mainpll: mainpll {
|
mainpll: mainpll {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <2000000000>;
|
clock-frequency = <1000000000>;
|
||||||
};
|
};
|
||||||
/* 25 MHz reference crystal */
|
/* 25 MHz reference crystal */
|
||||||
refclk: oscillator {
|
refclk: oscillator {
|
||||||
|
|
|
@ -585,7 +585,7 @@
|
||||||
mainpll: mainpll {
|
mainpll: mainpll {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <2000000000>;
|
clock-frequency = <1000000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 25 MHz reference crystal */
|
/* 25 MHz reference crystal */
|
||||||
|
|
|
@ -502,7 +502,7 @@
|
||||||
mainpll: mainpll {
|
mainpll: mainpll {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <2000000000>;
|
clock-frequency = <1000000000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -95,6 +95,11 @@
|
||||||
|
|
||||||
internal-regs {
|
internal-regs {
|
||||||
|
|
||||||
|
rtc@10300 {
|
||||||
|
/* No crystal connected to the internal RTC */
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
|
||||||
/* J10: VCC, NC, RX, NC, TX, GND */
|
/* J10: VCC, NC, RX, NC, TX, GND */
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
|
@ -105,6 +105,10 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
internal-regs {
|
internal-regs {
|
||||||
|
rtc@10300 {
|
||||||
|
/* No crystal connected to the internal RTC */
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
serial@12000 {
|
serial@12000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -382,7 +382,7 @@
|
||||||
ti,hwmods = "usb_otg_hs";
|
ti,hwmods = "usb_otg_hs";
|
||||||
|
|
||||||
usb0: usb@47401000 {
|
usb0: usb@47401000 {
|
||||||
compatible = "ti,musb-am33xx";
|
compatible = "ti,musb-dm816";
|
||||||
reg = <0x47401400 0x400
|
reg = <0x47401400 0x400
|
||||||
0x47401000 0x200>;
|
0x47401000 0x200>;
|
||||||
reg-names = "mc", "control";
|
reg-names = "mc", "control";
|
||||||
|
@ -422,7 +422,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
usb1: usb@47401800 {
|
usb1: usb@47401800 {
|
||||||
compatible = "ti,musb-am33xx";
|
compatible = "ti,musb-dm816";
|
||||||
reg = <0x47401c00 0x400
|
reg = <0x47401c00 0x400
|
||||||
0x47401800 0x200>;
|
0x47401800 0x200>;
|
||||||
reg-names = "mc", "control";
|
reg-names = "mc", "control";
|
||||||
|
|
|
@ -87,6 +87,7 @@
|
||||||
|
|
||||||
/* connect xtal input to 25MHz reference */
|
/* connect xtal input to 25MHz reference */
|
||||||
clocks = <&ref25>;
|
clocks = <&ref25>;
|
||||||
|
clock-names = "xtal";
|
||||||
|
|
||||||
/* connect xtal input as source of pll0 and pll1 */
|
/* connect xtal input as source of pll0 and pll1 */
|
||||||
silabs,pll-source = <0 0>, <1 0>;
|
silabs,pll-source = <0 0>, <1 0>;
|
||||||
|
|
|
@ -911,7 +911,7 @@
|
||||||
ti,clock-cycles = <16>;
|
ti,clock-cycles = <16>;
|
||||||
|
|
||||||
reg = <0x4ae07ddc 0x4>, <0x4ae07de0 0x4>,
|
reg = <0x4ae07ddc 0x4>, <0x4ae07de0 0x4>,
|
||||||
<0x4ae06014 0x4>, <0x4a003b20 0x8>,
|
<0x4ae06014 0x4>, <0x4a003b20 0xc>,
|
||||||
<0x4ae0c158 0x4>;
|
<0x4ae0c158 0x4>;
|
||||||
reg-names = "setup-address", "control-address",
|
reg-names = "setup-address", "control-address",
|
||||||
"int-address", "efuse-address",
|
"int-address", "efuse-address",
|
||||||
|
@ -944,7 +944,7 @@
|
||||||
ti,clock-cycles = <16>;
|
ti,clock-cycles = <16>;
|
||||||
|
|
||||||
reg = <0x4ae07e34 0x4>, <0x4ae07e24 0x4>,
|
reg = <0x4ae07e34 0x4>, <0x4ae07e24 0x4>,
|
||||||
<0x4ae06010 0x4>, <0x4a0025cc 0x8>,
|
<0x4ae06010 0x4>, <0x4a0025cc 0xc>,
|
||||||
<0x4a002470 0x4>;
|
<0x4a002470 0x4>;
|
||||||
reg-names = "setup-address", "control-address",
|
reg-names = "setup-address", "control-address",
|
||||||
"int-address", "efuse-address",
|
"int-address", "efuse-address",
|
||||||
|
@ -977,7 +977,7 @@
|
||||||
ti,clock-cycles = <16>;
|
ti,clock-cycles = <16>;
|
||||||
|
|
||||||
reg = <0x4ae07e30 0x4>, <0x4ae07e20 0x4>,
|
reg = <0x4ae07e30 0x4>, <0x4ae07e20 0x4>,
|
||||||
<0x4ae06010 0x4>, <0x4a0025e0 0x8>,
|
<0x4ae06010 0x4>, <0x4a0025e0 0xc>,
|
||||||
<0x4a00246c 0x4>;
|
<0x4a00246c 0x4>;
|
||||||
reg-names = "setup-address", "control-address",
|
reg-names = "setup-address", "control-address",
|
||||||
"int-address", "efuse-address",
|
"int-address", "efuse-address",
|
||||||
|
@ -1010,7 +1010,7 @@
|
||||||
ti,clock-cycles = <16>;
|
ti,clock-cycles = <16>;
|
||||||
|
|
||||||
reg = <0x4ae07de4 0x4>, <0x4ae07de8 0x4>,
|
reg = <0x4ae07de4 0x4>, <0x4ae07de8 0x4>,
|
||||||
<0x4ae06010 0x4>, <0x4a003b08 0x8>,
|
<0x4ae06010 0x4>, <0x4a003b08 0xc>,
|
||||||
<0x4ae0c154 0x4>;
|
<0x4ae0c154 0x4>;
|
||||||
reg-names = "setup-address", "control-address",
|
reg-names = "setup-address", "control-address",
|
||||||
"int-address", "efuse-address",
|
"int-address", "efuse-address",
|
||||||
|
@ -1203,7 +1203,7 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
rtc@48838000 {
|
rtc: rtc@48838000 {
|
||||||
compatible = "ti,am3352-rtc";
|
compatible = "ti,am3352-rtc";
|
||||||
reg = <0x48838000 0x100>;
|
reg = <0x48838000 0x100>;
|
||||||
interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include <dt-bindings/sound/samsung-i2s.h>
|
#include <dt-bindings/sound/samsung-i2s.h>
|
||||||
#include <dt-bindings/input/input.h>
|
#include <dt-bindings/input/input.h>
|
||||||
|
#include <dt-bindings/clock/maxim,max77686.h>
|
||||||
#include "exynos4412.dtsi"
|
#include "exynos4412.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
@ -105,6 +106,8 @@
|
||||||
|
|
||||||
rtc@10070000 {
|
rtc@10070000 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
|
||||||
|
clock-names = "rtc", "rtc_src";
|
||||||
};
|
};
|
||||||
|
|
||||||
g2d@10800000 {
|
g2d@10800000 {
|
||||||
|
|
|
@ -736,7 +736,7 @@
|
||||||
|
|
||||||
display-timings {
|
display-timings {
|
||||||
timing-0 {
|
timing-0 {
|
||||||
clock-frequency = <0>;
|
clock-frequency = <57153600>;
|
||||||
hactive = <720>;
|
hactive = <720>;
|
||||||
vactive = <1280>;
|
vactive = <1280>;
|
||||||
hfront-porch = <5>;
|
hfront-porch = <5>;
|
||||||
|
|
|
@ -567,6 +567,7 @@
|
||||||
num-slots = <1>;
|
num-slots = <1>;
|
||||||
broken-cd;
|
broken-cd;
|
||||||
cap-sdio-irq;
|
cap-sdio-irq;
|
||||||
|
keep-power-in-suspend;
|
||||||
card-detect-delay = <200>;
|
card-detect-delay = <200>;
|
||||||
samsung,dw-mshc-ciu-div = <3>;
|
samsung,dw-mshc-ciu-div = <3>;
|
||||||
samsung,dw-mshc-sdr-timing = <2 3>;
|
samsung,dw-mshc-sdr-timing = <2 3>;
|
||||||
|
|
|
@ -711,6 +711,7 @@
|
||||||
num-slots = <1>;
|
num-slots = <1>;
|
||||||
broken-cd;
|
broken-cd;
|
||||||
cap-sdio-irq;
|
cap-sdio-irq;
|
||||||
|
keep-power-in-suspend;
|
||||||
card-detect-delay = <200>;
|
card-detect-delay = <200>;
|
||||||
clock-frequency = <400000000>;
|
clock-frequency = <400000000>;
|
||||||
samsung,dw-mshc-ciu-div = <1>;
|
samsung,dw-mshc-ciu-div = <1>;
|
||||||
|
|
|
@ -28,7 +28,7 @@ trips {
|
||||||
type = "active";
|
type = "active";
|
||||||
};
|
};
|
||||||
cpu-crit-0 {
|
cpu-crit-0 {
|
||||||
temperature = <1200000>; /* millicelsius */
|
temperature = <120000>; /* millicelsius */
|
||||||
hysteresis = <0>; /* millicelsius */
|
hysteresis = <0>; /* millicelsius */
|
||||||
type = "critical";
|
type = "critical";
|
||||||
};
|
};
|
||||||
|
|
|
@ -536,6 +536,7 @@
|
||||||
clock-names = "dp";
|
clock-names = "dp";
|
||||||
phys = <&dp_phy>;
|
phys = <&dp_phy>;
|
||||||
phy-names = "dp";
|
phy-names = "dp";
|
||||||
|
power-domains = <&disp_pd>;
|
||||||
};
|
};
|
||||||
|
|
||||||
mipi_phy: video-phy@10040714 {
|
mipi_phy: video-phy@10040714 {
|
||||||
|
|
|
@ -18,7 +18,7 @@ trips {
|
||||||
type = "active";
|
type = "active";
|
||||||
};
|
};
|
||||||
cpu-crit-0 {
|
cpu-crit-0 {
|
||||||
temperature = <1050000>; /* millicelsius */
|
temperature = <105000>; /* millicelsius */
|
||||||
hysteresis = <0>; /* millicelsius */
|
hysteresis = <0>; /* millicelsius */
|
||||||
type = "critical";
|
type = "critical";
|
||||||
};
|
};
|
||||||
|
|
|
@ -674,6 +674,7 @@
|
||||||
num-slots = <1>;
|
num-slots = <1>;
|
||||||
broken-cd;
|
broken-cd;
|
||||||
cap-sdio-irq;
|
cap-sdio-irq;
|
||||||
|
keep-power-in-suspend;
|
||||||
card-detect-delay = <200>;
|
card-detect-delay = <200>;
|
||||||
clock-frequency = <400000000>;
|
clock-frequency = <400000000>;
|
||||||
samsung,dw-mshc-ciu-div = <1>;
|
samsung,dw-mshc-ciu-div = <1>;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/dts-v1/;
|
/dts-v1/;
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include "imx23.dtsi"
|
#include "imx23.dtsi"
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
|
@ -93,6 +94,7 @@
|
||||||
|
|
||||||
ahb@80080000 {
|
ahb@80080000 {
|
||||||
usb0: usb@80080000 {
|
usb0: usb@80080000 {
|
||||||
|
dr_mode = "host";
|
||||||
vbus-supply = <®_usb0_vbus>;
|
vbus-supply = <®_usb0_vbus>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -122,7 +124,7 @@
|
||||||
|
|
||||||
user {
|
user {
|
||||||
label = "green";
|
label = "green";
|
||||||
gpios = <&gpio2 1 1>;
|
gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -428,6 +428,7 @@
|
||||||
|
|
||||||
pwm4: pwm@53fc8000 {
|
pwm4: pwm@53fc8000 {
|
||||||
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
||||||
|
#pwm-cells = <2>;
|
||||||
reg = <0x53fc8000 0x4000>;
|
reg = <0x53fc8000 0x4000>;
|
||||||
clocks = <&clks 108>, <&clks 52>;
|
clocks = <&clks 108>, <&clks 52>;
|
||||||
clock-names = "ipg", "per";
|
clock-names = "ipg", "per";
|
||||||
|
|
|
@ -533,7 +533,7 @@
|
||||||
|
|
||||||
fec: ethernet@1002b000 {
|
fec: ethernet@1002b000 {
|
||||||
compatible = "fsl,imx27-fec";
|
compatible = "fsl,imx27-fec";
|
||||||
reg = <0x1002b000 0x4000>;
|
reg = <0x1002b000 0x1000>;
|
||||||
interrupts = <50>;
|
interrupts = <50>;
|
||||||
clocks = <&clks IMX27_CLK_FEC_IPG_GATE>,
|
clocks = <&clks IMX27_CLK_FEC_IPG_GATE>,
|
||||||
<&clks IMX27_CLK_FEC_AHB_GATE>;
|
<&clks IMX27_CLK_FEC_AHB_GATE>;
|
||||||
|
|
|
@ -913,7 +913,7 @@
|
||||||
80 81 68 69
|
80 81 68 69
|
||||||
70 71 72 73
|
70 71 72 73
|
||||||
74 75 76 77>;
|
74 75 76 77>;
|
||||||
interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
|
interrupt-names = "auart4-rx", "auart4-tx", "spdif-tx", "empty",
|
||||||
"saif0", "saif1", "i2c0", "i2c1",
|
"saif0", "saif1", "i2c0", "i2c1",
|
||||||
"auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
|
"auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
|
||||||
"auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
|
"auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
gpio = <&gpio4 15 0>;
|
gpio = <&gpio4 15 0>;
|
||||||
|
enable-active-high;
|
||||||
};
|
};
|
||||||
|
|
||||||
reg_usb_h1_vbus: regulator@1 {
|
reg_usb_h1_vbus: regulator@1 {
|
||||||
|
@ -40,6 +41,7 @@
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
gpio = <&gpio1 0 0>;
|
gpio = <&gpio1 0 0>;
|
||||||
|
enable-active-high;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -185,7 +185,6 @@
|
||||||
&i2c3 {
|
&i2c3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_i2c3>;
|
pinctrl-0 = <&pinctrl_i2c3>;
|
||||||
pinctrl-assert-gpios = <&gpio5 4 GPIO_ACTIVE_HIGH>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
max7310_a: gpio@30 {
|
max7310_a: gpio@30 {
|
||||||
|
|
|
@ -110,6 +110,8 @@
|
||||||
nand@0,0 {
|
nand@0,0 {
|
||||||
reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
|
reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
|
||||||
nand-bus-width = <16>;
|
nand-bus-width = <16>;
|
||||||
|
gpmc,device-width = <2>;
|
||||||
|
ti,nand-ecc-opt = "sw";
|
||||||
|
|
||||||
gpmc,sync-clk-ps = <0>;
|
gpmc,sync-clk-ps = <0>;
|
||||||
gpmc,cs-on-ns = <0>;
|
gpmc,cs-on-ns = <0>;
|
||||||
|
|
|
@ -498,6 +498,8 @@
|
||||||
DRVDD-supply = <&vmmc2>;
|
DRVDD-supply = <&vmmc2>;
|
||||||
IOVDD-supply = <&vio>;
|
IOVDD-supply = <&vio>;
|
||||||
DVDD-supply = <&vio>;
|
DVDD-supply = <&vio>;
|
||||||
|
|
||||||
|
ai3x-micbias-vg = <1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
tlv320aic3x_aux: tlv320aic3x@19 {
|
tlv320aic3x_aux: tlv320aic3x@19 {
|
||||||
|
@ -509,6 +511,8 @@
|
||||||
DRVDD-supply = <&vmmc2>;
|
DRVDD-supply = <&vmmc2>;
|
||||||
IOVDD-supply = <&vio>;
|
IOVDD-supply = <&vio>;
|
||||||
DVDD-supply = <&vio>;
|
DVDD-supply = <&vio>;
|
||||||
|
|
||||||
|
ai3x-micbias-vg = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
tsl2563: tsl2563@29 {
|
tsl2563: tsl2563@29 {
|
||||||
|
@ -828,8 +832,8 @@
|
||||||
touchscreen-fuzz-x = <4>;
|
touchscreen-fuzz-x = <4>;
|
||||||
touchscreen-fuzz-y = <7>;
|
touchscreen-fuzz-y = <7>;
|
||||||
touchscreen-fuzz-pressure = <2>;
|
touchscreen-fuzz-pressure = <2>;
|
||||||
touchscreen-max-x = <4096>;
|
touchscreen-size-x = <4096>;
|
||||||
touchscreen-max-y = <4096>;
|
touchscreen-size-y = <4096>;
|
||||||
touchscreen-max-pressure = <2048>;
|
touchscreen-max-pressure = <2048>;
|
||||||
|
|
||||||
ti,x-plate-ohms = <280>;
|
ti,x-plate-ohms = <280>;
|
||||||
|
|
|
@ -456,6 +456,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
mmu_isp: mmu@480bd400 {
|
mmu_isp: mmu@480bd400 {
|
||||||
|
#iommu-cells = <0>;
|
||||||
compatible = "ti,omap2-iommu";
|
compatible = "ti,omap2-iommu";
|
||||||
reg = <0x480bd400 0x80>;
|
reg = <0x480bd400 0x80>;
|
||||||
interrupts = <24>;
|
interrupts = <24>;
|
||||||
|
@ -464,6 +465,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
mmu_iva: mmu@5d000000 {
|
mmu_iva: mmu@5d000000 {
|
||||||
|
#iommu-cells = <0>;
|
||||||
compatible = "ti,omap2-iommu";
|
compatible = "ti,omap2-iommu";
|
||||||
reg = <0x5d000000 0x80>;
|
reg = <0x5d000000 0x80>;
|
||||||
interrupts = <28>;
|
interrupts = <28>;
|
||||||
|
|
|
@ -128,7 +128,7 @@
|
||||||
* hierarchy.
|
* hierarchy.
|
||||||
*/
|
*/
|
||||||
ocp {
|
ocp {
|
||||||
compatible = "ti,omap4-l3-noc", "simple-bus";
|
compatible = "ti,omap5-l3-noc", "simple-bus";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges;
|
ranges;
|
||||||
|
|
|
@ -545,7 +545,7 @@
|
||||||
compatible = "adi,adv7511w";
|
compatible = "adi,adv7511w";
|
||||||
reg = <0x39>;
|
reg = <0x39>;
|
||||||
interrupt-parent = <&gpio3>;
|
interrupt-parent = <&gpio3>;
|
||||||
interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
|
interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
adi,input-depth = <8>;
|
adi,input-depth = <8>;
|
||||||
adi,input-colorspace = "rgb";
|
adi,input-colorspace = "rgb";
|
||||||
|
|
|
@ -1017,23 +1017,6 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
vmmci: regulator-gpio {
|
|
||||||
compatible = "regulator-gpio";
|
|
||||||
|
|
||||||
regulator-min-microvolt = <1800000>;
|
|
||||||
regulator-max-microvolt = <2900000>;
|
|
||||||
regulator-name = "mmci-reg";
|
|
||||||
regulator-type = "voltage";
|
|
||||||
|
|
||||||
startup-delay-us = <100>;
|
|
||||||
enable-active-high;
|
|
||||||
|
|
||||||
states = <1800000 0x1
|
|
||||||
2900000 0x0>;
|
|
||||||
|
|
||||||
status = "disabled";
|
|
||||||
};
|
|
||||||
|
|
||||||
mcde@a0350000 {
|
mcde@a0350000 {
|
||||||
compatible = "stericsson,mcde";
|
compatible = "stericsson,mcde";
|
||||||
reg = <0xa0350000 0x1000>, /* MCDE */
|
reg = <0xa0350000 0x1000>, /* MCDE */
|
||||||
|
|
|
@ -111,6 +111,21 @@
|
||||||
pinctrl-1 = <&i2c3_sleep_mode>;
|
pinctrl-1 = <&i2c3_sleep_mode>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vmmci: regulator-gpio {
|
||||||
|
compatible = "regulator-gpio";
|
||||||
|
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <2900000>;
|
||||||
|
regulator-name = "mmci-reg";
|
||||||
|
regulator-type = "voltage";
|
||||||
|
|
||||||
|
startup-delay-us = <100>;
|
||||||
|
enable-active-high;
|
||||||
|
|
||||||
|
states = <1800000 0x1
|
||||||
|
2900000 0x0>;
|
||||||
|
};
|
||||||
|
|
||||||
// External Micro SD slot
|
// External Micro SD slot
|
||||||
sdi0_per1@80126000 {
|
sdi0_per1@80126000 {
|
||||||
arm,primecell-periphid = <0x10480180>;
|
arm,primecell-periphid = <0x10480180>;
|
||||||
|
|
|
@ -146,8 +146,21 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
vmmci: regulator-gpio {
|
vmmci: regulator-gpio {
|
||||||
|
compatible = "regulator-gpio";
|
||||||
|
|
||||||
gpios = <&gpio7 4 0x4>;
|
gpios = <&gpio7 4 0x4>;
|
||||||
enable-gpio = <&gpio6 25 0x4>;
|
enable-gpio = <&gpio6 25 0x4>;
|
||||||
|
|
||||||
|
regulator-min-microvolt = <1800000>;
|
||||||
|
regulator-max-microvolt = <2900000>;
|
||||||
|
regulator-name = "mmci-reg";
|
||||||
|
regulator-type = "voltage";
|
||||||
|
|
||||||
|
startup-delay-us = <100>;
|
||||||
|
enable-active-high;
|
||||||
|
|
||||||
|
states = <1800000 0x1
|
||||||
|
2900000 0x0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
// External Micro SD slot
|
// External Micro SD slot
|
||||||
|
|
|
@ -826,7 +826,7 @@
|
||||||
<&tegra_car TEGRA124_CLK_PLL_U>,
|
<&tegra_car TEGRA124_CLK_PLL_U>,
|
||||||
<&tegra_car TEGRA124_CLK_USBD>;
|
<&tegra_car TEGRA124_CLK_USBD>;
|
||||||
clock-names = "reg", "pll_u", "utmi-pads";
|
clock-names = "reg", "pll_u", "utmi-pads";
|
||||||
resets = <&tegra_car 59>, <&tegra_car 22>;
|
resets = <&tegra_car 22>, <&tegra_car 22>;
|
||||||
reset-names = "usb", "utmi-pads";
|
reset-names = "usb", "utmi-pads";
|
||||||
nvidia,hssync-start-delay = <0>;
|
nvidia,hssync-start-delay = <0>;
|
||||||
nvidia,idle-wait-delay = <17>;
|
nvidia,idle-wait-delay = <17>;
|
||||||
|
@ -838,6 +838,7 @@
|
||||||
nvidia,hssquelch-level = <2>;
|
nvidia,hssquelch-level = <2>;
|
||||||
nvidia,hsdiscon-level = <5>;
|
nvidia,hsdiscon-level = <5>;
|
||||||
nvidia,xcvr-hsslew = <12>;
|
nvidia,xcvr-hsslew = <12>;
|
||||||
|
nvidia,has-utmi-pad-registers;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -862,7 +863,7 @@
|
||||||
<&tegra_car TEGRA124_CLK_PLL_U>,
|
<&tegra_car TEGRA124_CLK_PLL_U>,
|
||||||
<&tegra_car TEGRA124_CLK_USBD>;
|
<&tegra_car TEGRA124_CLK_USBD>;
|
||||||
clock-names = "reg", "pll_u", "utmi-pads";
|
clock-names = "reg", "pll_u", "utmi-pads";
|
||||||
resets = <&tegra_car 22>, <&tegra_car 22>;
|
resets = <&tegra_car 58>, <&tegra_car 22>;
|
||||||
reset-names = "usb", "utmi-pads";
|
reset-names = "usb", "utmi-pads";
|
||||||
nvidia,hssync-start-delay = <0>;
|
nvidia,hssync-start-delay = <0>;
|
||||||
nvidia,idle-wait-delay = <17>;
|
nvidia,idle-wait-delay = <17>;
|
||||||
|
@ -874,7 +875,6 @@
|
||||||
nvidia,hssquelch-level = <2>;
|
nvidia,hssquelch-level = <2>;
|
||||||
nvidia,hsdiscon-level = <5>;
|
nvidia,hsdiscon-level = <5>;
|
||||||
nvidia,xcvr-hsslew = <12>;
|
nvidia,xcvr-hsslew = <12>;
|
||||||
nvidia,has-utmi-pad-registers;
|
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -899,7 +899,7 @@
|
||||||
<&tegra_car TEGRA124_CLK_PLL_U>,
|
<&tegra_car TEGRA124_CLK_PLL_U>,
|
||||||
<&tegra_car TEGRA124_CLK_USBD>;
|
<&tegra_car TEGRA124_CLK_USBD>;
|
||||||
clock-names = "reg", "pll_u", "utmi-pads";
|
clock-names = "reg", "pll_u", "utmi-pads";
|
||||||
resets = <&tegra_car 58>, <&tegra_car 22>;
|
resets = <&tegra_car 59>, <&tegra_car 22>;
|
||||||
reset-names = "usb", "utmi-pads";
|
reset-names = "usb", "utmi-pads";
|
||||||
nvidia,hssync-start-delay = <0>;
|
nvidia,hssync-start-delay = <0>;
|
||||||
nvidia,idle-wait-delay = <17>;
|
nvidia,idle-wait-delay = <17>;
|
||||||
|
|
|
@ -191,6 +191,7 @@
|
||||||
compatible = "arm,cortex-a15-pmu";
|
compatible = "arm,cortex-a15-pmu";
|
||||||
interrupts = <0 68 4>,
|
interrupts = <0 68 4>,
|
||||||
<0 69 4>;
|
<0 69 4>;
|
||||||
|
interrupt-affinity = <&cpu0>, <&cpu1>;
|
||||||
};
|
};
|
||||||
|
|
||||||
oscclk6a: oscclk6a {
|
oscclk6a: oscclk6a {
|
||||||
|
|
|
@ -33,28 +33,28 @@
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
cpu@0 {
|
A9_0: cpu@0 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
next-level-cache = <&L2>;
|
next-level-cache = <&L2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@1 {
|
A9_1: cpu@1 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
next-level-cache = <&L2>;
|
next-level-cache = <&L2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@2 {
|
A9_2: cpu@2 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <2>;
|
reg = <2>;
|
||||||
next-level-cache = <&L2>;
|
next-level-cache = <&L2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
cpu@3 {
|
A9_3: cpu@3 {
|
||||||
device_type = "cpu";
|
device_type = "cpu";
|
||||||
compatible = "arm,cortex-a9";
|
compatible = "arm,cortex-a9";
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
|
@ -170,6 +170,7 @@
|
||||||
compatible = "arm,pl310-cache";
|
compatible = "arm,pl310-cache";
|
||||||
reg = <0x1e00a000 0x1000>;
|
reg = <0x1e00a000 0x1000>;
|
||||||
interrupts = <0 43 4>;
|
interrupts = <0 43 4>;
|
||||||
|
cache-unified;
|
||||||
cache-level = <2>;
|
cache-level = <2>;
|
||||||
arm,data-latency = <1 1 1>;
|
arm,data-latency = <1 1 1>;
|
||||||
arm,tag-latency = <1 1 1>;
|
arm,tag-latency = <1 1 1>;
|
||||||
|
@ -181,6 +182,8 @@
|
||||||
<0 61 4>,
|
<0 61 4>,
|
||||||
<0 62 4>,
|
<0 62 4>,
|
||||||
<0 63 4>;
|
<0 63 4>;
|
||||||
|
interrupt-affinity = <&A9_0>, <&A9_1>, <&A9_2>, <&A9_3>;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
dcc {
|
dcc {
|
||||||
|
|
|
@ -193,7 +193,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gem0: ethernet@e000b000 {
|
gem0: ethernet@e000b000 {
|
||||||
compatible = "cdns,gem";
|
compatible = "cdns,zynq-gem";
|
||||||
reg = <0xe000b000 0x1000>;
|
reg = <0xe000b000 0x1000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
interrupts = <0 22 4>;
|
interrupts = <0 22 4>;
|
||||||
|
@ -204,7 +204,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
gem1: ethernet@e000c000 {
|
gem1: ethernet@e000c000 {
|
||||||
compatible = "cdns,gem";
|
compatible = "cdns,zynq-gem";
|
||||||
reg = <0xe000c000 0x1000>;
|
reg = <0xe000c000 0x1000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
interrupts = <0 45 4>;
|
interrupts = <0 45 4>;
|
||||||
|
|
|
@ -39,11 +39,14 @@ CONFIG_ARCH_HIP04=y
|
||||||
CONFIG_ARCH_KEYSTONE=y
|
CONFIG_ARCH_KEYSTONE=y
|
||||||
CONFIG_ARCH_MESON=y
|
CONFIG_ARCH_MESON=y
|
||||||
CONFIG_ARCH_MXC=y
|
CONFIG_ARCH_MXC=y
|
||||||
|
CONFIG_SOC_IMX50=y
|
||||||
CONFIG_SOC_IMX51=y
|
CONFIG_SOC_IMX51=y
|
||||||
CONFIG_SOC_IMX53=y
|
CONFIG_SOC_IMX53=y
|
||||||
CONFIG_SOC_IMX6Q=y
|
CONFIG_SOC_IMX6Q=y
|
||||||
CONFIG_SOC_IMX6SL=y
|
CONFIG_SOC_IMX6SL=y
|
||||||
|
CONFIG_SOC_IMX6SX=y
|
||||||
CONFIG_SOC_VF610=y
|
CONFIG_SOC_VF610=y
|
||||||
|
CONFIG_SOC_LS1021A=y
|
||||||
CONFIG_ARCH_OMAP3=y
|
CONFIG_ARCH_OMAP3=y
|
||||||
CONFIG_ARCH_OMAP4=y
|
CONFIG_ARCH_OMAP4=y
|
||||||
CONFIG_SOC_OMAP5=y
|
CONFIG_SOC_OMAP5=y
|
||||||
|
@ -426,7 +429,7 @@ CONFIG_USB_EHCI_EXYNOS=y
|
||||||
CONFIG_USB_EHCI_TEGRA=y
|
CONFIG_USB_EHCI_TEGRA=y
|
||||||
CONFIG_USB_EHCI_HCD_STI=y
|
CONFIG_USB_EHCI_HCD_STI=y
|
||||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||||
CONFIG_USB_ISP1760_HCD=y
|
CONFIG_USB_ISP1760=y
|
||||||
CONFIG_USB_OHCI_HCD=y
|
CONFIG_USB_OHCI_HCD=y
|
||||||
CONFIG_USB_OHCI_HCD_STI=y
|
CONFIG_USB_OHCI_HCD_STI=y
|
||||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||||
|
|
|
@ -393,7 +393,7 @@ CONFIG_TI_EDMA=y
|
||||||
CONFIG_DMA_OMAP=y
|
CONFIG_DMA_OMAP=y
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
CONFIG_EXTCON=m
|
CONFIG_EXTCON=m
|
||||||
CONFIG_EXTCON_GPIO=m
|
CONFIG_EXTCON_USB_GPIO=m
|
||||||
CONFIG_EXTCON_PALMAS=m
|
CONFIG_EXTCON_PALMAS=m
|
||||||
CONFIG_TI_EMIF=m
|
CONFIG_TI_EMIF=m
|
||||||
CONFIG_PWM=y
|
CONFIG_PWM=y
|
||||||
|
|
|
@ -25,7 +25,7 @@ struct dma_iommu_mapping {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dma_iommu_mapping *
|
struct dma_iommu_mapping *
|
||||||
arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, size_t size);
|
arm_iommu_create_mapping(struct bus_type *bus, dma_addr_t base, u64 size);
|
||||||
|
|
||||||
void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
|
void arm_iommu_release_mapping(struct dma_iommu_mapping *mapping);
|
||||||
|
|
||||||
|
|
|
@ -110,5 +110,6 @@ static inline bool set_phys_to_machine(unsigned long pfn, unsigned long mfn)
|
||||||
bool xen_arch_need_swiotlb(struct device *dev,
|
bool xen_arch_need_swiotlb(struct device *dev,
|
||||||
unsigned long pfn,
|
unsigned long pfn,
|
||||||
unsigned long mfn);
|
unsigned long mfn);
|
||||||
|
unsigned long xen_get_swiotlb_free_pages(unsigned int order);
|
||||||
|
|
||||||
#endif /* _ASM_ARM_XEN_PAGE_H */
|
#endif /* _ASM_ARM_XEN_PAGE_H */
|
||||||
|
|
|
@ -33,7 +33,9 @@ ret_fast_syscall:
|
||||||
UNWIND(.fnstart )
|
UNWIND(.fnstart )
|
||||||
UNWIND(.cantunwind )
|
UNWIND(.cantunwind )
|
||||||
disable_irq @ disable interrupts
|
disable_irq @ disable interrupts
|
||||||
ldr r1, [tsk, #TI_FLAGS]
|
ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
|
||||||
|
tst r1, #_TIF_SYSCALL_WORK
|
||||||
|
bne __sys_trace_return
|
||||||
tst r1, #_TIF_WORK_MASK
|
tst r1, #_TIF_WORK_MASK
|
||||||
bne fast_work_pending
|
bne fast_work_pending
|
||||||
asm_trace_hardirqs_on
|
asm_trace_hardirqs_on
|
||||||
|
|
|
@ -303,9 +303,15 @@ static int probe_current_pmu(struct arm_pmu *pmu)
|
||||||
|
|
||||||
static int of_pmu_irq_cfg(struct platform_device *pdev)
|
static int of_pmu_irq_cfg(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
int i;
|
int i, irq;
|
||||||
int *irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL);
|
int *irqs;
|
||||||
|
|
||||||
|
/* Don't bother with PPIs; they're already affine */
|
||||||
|
irq = platform_get_irq(pdev, 0);
|
||||||
|
if (irq >= 0 && irq_is_percpu(irq))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
irqs = kcalloc(pdev->num_resources, sizeof(*irqs), GFP_KERNEL);
|
||||||
if (!irqs)
|
if (!irqs)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -317,7 +323,7 @@ static int of_pmu_irq_cfg(struct platform_device *pdev)
|
||||||
i);
|
i);
|
||||||
if (!dn) {
|
if (!dn) {
|
||||||
pr_warn("Failed to parse %s/interrupt-affinity[%d]\n",
|
pr_warn("Failed to parse %s/interrupt-affinity[%d]\n",
|
||||||
of_node_full_name(dn), i);
|
of_node_full_name(pdev->dev.of_node), i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -159,6 +159,8 @@ extern void exynos_enter_aftr(void);
|
||||||
|
|
||||||
extern struct cpuidle_exynos_data cpuidle_coupled_exynos_data;
|
extern struct cpuidle_exynos_data cpuidle_coupled_exynos_data;
|
||||||
|
|
||||||
|
extern void exynos_set_delayed_reset_assertion(bool enable);
|
||||||
|
|
||||||
extern void s5p_init_cpu(void __iomem *cpuid_addr);
|
extern void s5p_init_cpu(void __iomem *cpuid_addr);
|
||||||
extern unsigned int samsung_rev(void);
|
extern unsigned int samsung_rev(void);
|
||||||
extern void __iomem *cpu_boot_reg_base(void);
|
extern void __iomem *cpu_boot_reg_base(void);
|
||||||
|
|
|
@ -166,6 +166,33 @@ static void __init exynos_init_io(void)
|
||||||
exynos_map_io();
|
exynos_map_io();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set or clear the USE_DELAYED_RESET_ASSERTION option. Used by smp code
|
||||||
|
* and suspend.
|
||||||
|
*
|
||||||
|
* This is necessary only on Exynos4 SoCs. When system is running
|
||||||
|
* USE_DELAYED_RESET_ASSERTION should be set so the ARM CLK clock down
|
||||||
|
* feature could properly detect global idle state when secondary CPU is
|
||||||
|
* powered down.
|
||||||
|
*
|
||||||
|
* However this should not be set when such system is going into suspend.
|
||||||
|
*/
|
||||||
|
void exynos_set_delayed_reset_assertion(bool enable)
|
||||||
|
{
|
||||||
|
if (of_machine_is_compatible("samsung,exynos4")) {
|
||||||
|
unsigned int tmp, core_id;
|
||||||
|
|
||||||
|
for (core_id = 0; core_id < num_possible_cpus(); core_id++) {
|
||||||
|
tmp = pmu_raw_readl(EXYNOS_ARM_CORE_OPTION(core_id));
|
||||||
|
if (enable)
|
||||||
|
tmp |= S5P_USE_DELAYED_RESET_ASSERTION;
|
||||||
|
else
|
||||||
|
tmp &= ~(S5P_USE_DELAYED_RESET_ASSERTION);
|
||||||
|
pmu_raw_writel(tmp, EXYNOS_ARM_CORE_OPTION(core_id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Apparently, these SoCs are not able to wake-up from suspend using
|
* Apparently, these SoCs are not able to wake-up from suspend using
|
||||||
* the PMU. Too bad. Should they suddenly become capable of such a
|
* the PMU. Too bad. Should they suddenly become capable of such a
|
||||||
|
|
|
@ -34,30 +34,6 @@
|
||||||
|
|
||||||
extern void exynos4_secondary_startup(void);
|
extern void exynos4_secondary_startup(void);
|
||||||
|
|
||||||
/*
|
|
||||||
* Set or clear the USE_DELAYED_RESET_ASSERTION option, set on Exynos4 SoCs
|
|
||||||
* during hot-(un)plugging CPUx.
|
|
||||||
*
|
|
||||||
* The feature can be cleared safely during first boot of secondary CPU.
|
|
||||||
*
|
|
||||||
* Exynos4 SoCs require setting USE_DELAYED_RESET_ASSERTION during powering
|
|
||||||
* down a CPU so the CPU idle clock down feature could properly detect global
|
|
||||||
* idle state when CPUx is off.
|
|
||||||
*/
|
|
||||||
static void exynos_set_delayed_reset_assertion(u32 core_id, bool enable)
|
|
||||||
{
|
|
||||||
if (soc_is_exynos4()) {
|
|
||||||
unsigned int tmp;
|
|
||||||
|
|
||||||
tmp = pmu_raw_readl(EXYNOS_ARM_CORE_OPTION(core_id));
|
|
||||||
if (enable)
|
|
||||||
tmp |= S5P_USE_DELAYED_RESET_ASSERTION;
|
|
||||||
else
|
|
||||||
tmp &= ~(S5P_USE_DELAYED_RESET_ASSERTION);
|
|
||||||
pmu_raw_writel(tmp, EXYNOS_ARM_CORE_OPTION(core_id));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_HOTPLUG_CPU
|
#ifdef CONFIG_HOTPLUG_CPU
|
||||||
static inline void cpu_leave_lowpower(u32 core_id)
|
static inline void cpu_leave_lowpower(u32 core_id)
|
||||||
{
|
{
|
||||||
|
@ -73,8 +49,6 @@ static inline void cpu_leave_lowpower(u32 core_id)
|
||||||
: "=&r" (v)
|
: "=&r" (v)
|
||||||
: "Ir" (CR_C), "Ir" (0x40)
|
: "Ir" (CR_C), "Ir" (0x40)
|
||||||
: "cc");
|
: "cc");
|
||||||
|
|
||||||
exynos_set_delayed_reset_assertion(core_id, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
|
static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
|
||||||
|
@ -87,14 +61,6 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
|
||||||
/* Turn the CPU off on next WFI instruction. */
|
/* Turn the CPU off on next WFI instruction. */
|
||||||
exynos_cpu_power_down(core_id);
|
exynos_cpu_power_down(core_id);
|
||||||
|
|
||||||
/*
|
|
||||||
* Exynos4 SoCs require setting
|
|
||||||
* USE_DELAYED_RESET_ASSERTION so the CPU idle
|
|
||||||
* clock down feature could properly detect
|
|
||||||
* global idle state when CPUx is off.
|
|
||||||
*/
|
|
||||||
exynos_set_delayed_reset_assertion(core_id, true);
|
|
||||||
|
|
||||||
wfi();
|
wfi();
|
||||||
|
|
||||||
if (pen_release == core_id) {
|
if (pen_release == core_id) {
|
||||||
|
@ -371,9 +337,6 @@ static int exynos_boot_secondary(unsigned int cpu, struct task_struct *idle)
|
||||||
udelay(10);
|
udelay(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* No harm if this is called during first boot of secondary CPU */
|
|
||||||
exynos_set_delayed_reset_assertion(core_id, false);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* now the secondary core is starting up let it run its
|
* now the secondary core is starting up let it run its
|
||||||
* calibrations, then wait for it to finish
|
* calibrations, then wait for it to finish
|
||||||
|
@ -420,6 +383,8 @@ static void __init exynos_smp_prepare_cpus(unsigned int max_cpus)
|
||||||
|
|
||||||
exynos_sysram_init();
|
exynos_sysram_init();
|
||||||
|
|
||||||
|
exynos_set_delayed_reset_assertion(true);
|
||||||
|
|
||||||
if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9)
|
if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9)
|
||||||
scu_enable(scu_base_addr());
|
scu_enable(scu_base_addr());
|
||||||
|
|
||||||
|
|
|
@ -188,7 +188,7 @@ no_clk:
|
||||||
args.np = np;
|
args.np = np;
|
||||||
args.args_count = 0;
|
args.args_count = 0;
|
||||||
child_domain = of_genpd_get_from_provider(&args);
|
child_domain = of_genpd_get_from_provider(&args);
|
||||||
if (!child_domain)
|
if (IS_ERR(child_domain))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (of_parse_phandle_with_args(np, "power-domains",
|
if (of_parse_phandle_with_args(np, "power-domains",
|
||||||
|
@ -196,7 +196,7 @@ no_clk:
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
parent_domain = of_genpd_get_from_provider(&args);
|
parent_domain = of_genpd_get_from_provider(&args);
|
||||||
if (!parent_domain)
|
if (IS_ERR(parent_domain))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pm_genpd_add_subdomain(parent_domain, child_domain))
|
if (pm_genpd_add_subdomain(parent_domain, child_domain))
|
||||||
|
|
|
@ -87,8 +87,8 @@ static unsigned int exynos_pmu_spare3;
|
||||||
static u32 exynos_irqwake_intmask = 0xffffffff;
|
static u32 exynos_irqwake_intmask = 0xffffffff;
|
||||||
|
|
||||||
static const struct exynos_wkup_irq exynos3250_wkup_irq[] = {
|
static const struct exynos_wkup_irq exynos3250_wkup_irq[] = {
|
||||||
{ 105, BIT(1) }, /* RTC alarm */
|
{ 73, BIT(1) }, /* RTC alarm */
|
||||||
{ 106, BIT(2) }, /* RTC tick */
|
{ 74, BIT(2) }, /* RTC tick */
|
||||||
{ /* sentinel */ },
|
{ /* sentinel */ },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -342,6 +342,8 @@ static void exynos_pm_enter_sleep_mode(void)
|
||||||
|
|
||||||
static void exynos_pm_prepare(void)
|
static void exynos_pm_prepare(void)
|
||||||
{
|
{
|
||||||
|
exynos_set_delayed_reset_assertion(false);
|
||||||
|
|
||||||
/* Set wake-up mask registers */
|
/* Set wake-up mask registers */
|
||||||
exynos_pm_set_wakeup_mask();
|
exynos_pm_set_wakeup_mask();
|
||||||
|
|
||||||
|
@ -482,6 +484,7 @@ early_wakeup:
|
||||||
|
|
||||||
/* Clear SLEEP mode set in INFORM1 */
|
/* Clear SLEEP mode set in INFORM1 */
|
||||||
pmu_raw_writel(0x0, S5P_INFORM1);
|
pmu_raw_writel(0x0, S5P_INFORM1);
|
||||||
|
exynos_set_delayed_reset_assertion(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void exynos3250_pm_resume(void)
|
static void exynos3250_pm_resume(void)
|
||||||
|
@ -723,8 +726,10 @@ void __init exynos_pm_init(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (WARN_ON(!of_find_property(np, "interrupt-controller", NULL)))
|
if (WARN_ON(!of_find_property(np, "interrupt-controller", NULL))) {
|
||||||
pr_warn("Outdated DT detected, suspend/resume will NOT work\n");
|
pr_warn("Outdated DT detected, suspend/resume will NOT work\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
pm_data = (const struct exynos_pm_data *) match->data;
|
pm_data = (const struct exynos_pm_data *) match->data;
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
#ifndef __GEMINI_COMMON_H__
|
#ifndef __GEMINI_COMMON_H__
|
||||||
#define __GEMINI_COMMON_H__
|
#define __GEMINI_COMMON_H__
|
||||||
|
|
||||||
|
#include <linux/reboot.h>
|
||||||
|
|
||||||
struct mtd_partition;
|
struct mtd_partition;
|
||||||
|
|
||||||
extern void gemini_map_io(void);
|
extern void gemini_map_io(void);
|
||||||
|
@ -26,6 +28,6 @@ extern int platform_register_pflash(unsigned int size,
|
||||||
struct mtd_partition *parts,
|
struct mtd_partition *parts,
|
||||||
unsigned int nr_parts);
|
unsigned int nr_parts);
|
||||||
|
|
||||||
extern void gemini_restart(char mode, const char *cmd);
|
extern void gemini_restart(enum reboot_mode mode, const char *cmd);
|
||||||
|
|
||||||
#endif /* __GEMINI_COMMON_H__ */
|
#endif /* __GEMINI_COMMON_H__ */
|
||||||
|
|
|
@ -14,7 +14,9 @@
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <mach/global_reg.h>
|
#include <mach/global_reg.h>
|
||||||
|
|
||||||
void gemini_restart(char mode, const char *cmd)
|
#include "common.h"
|
||||||
|
|
||||||
|
void gemini_restart(enum reboot_mode mode, const char *cmd)
|
||||||
{
|
{
|
||||||
__raw_writel(RESET_GLOBAL | RESET_CPU1,
|
__raw_writel(RESET_GLOBAL | RESET_CPU1,
|
||||||
IO_ADDRESS(GEMINI_GLOBAL_BASE) + GLOBAL_RESET);
|
IO_ADDRESS(GEMINI_GLOBAL_BASE) + GLOBAL_RESET);
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue