Linux 4.8
-----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJX8Zc4AAoJEHm+PkMAQRiGQG8H/2Hd4IwJh75snGY5LAiWt6ra kGM/SobvLAMtcoxXCeHqf2bZrxa2Zz9tnEzhuLMGaf9a3l79xHa8YumK5KS1JPGV 6lZBvuPi8BIyT0cpYH000e5ehHfhP6pSGJKZ2EuLv43HcBeVZEGAf3/8jSAlNA15 bwFy2ZEkwJGThbnT6au0Y3s9h8LcNjtllu9hjfb+/9oNGvp8r4QhdVodIqIQ4cv6 SeUfv7Pn2LZDMCSaTP9bh2KaR4dwYZHFsVe75x2wND5Sfq7DVBBfFkAoV/RwJDTM gBc3PNnmzb/tix6ohOrSQnSiGsXv1uASxvHH3RD2zG6g7Aj9Eq/+Z7ZdPu2+o+U= =U+ef -----END PGP SIGNATURE----- Merge tag 'v4.8' into patchwork Linux 4.8 * tag 'v4.8': (1761 commits) Linux 4.8 ARM: 8618/1: decompressor: reset ttbcr fields to use TTBR0 on ARMv7 MIPS: CM: Fix mips_cm_max_vp_width for non-MT kernels on MT systems include/linux/property.h: fix typo/compile error ocfs2: fix deadlock on mmapped page in ocfs2_write_begin_nolock() mm: workingset: fix crash in shadow node shrinker caused by replace_page_cache_page() MAINTAINERS: Switch to kernel.org email address for Javi Merino x86/entry/64: Fix context tracking state warning when load_gs_index fails x86/boot: Initialize FPU and X86_FEATURE_ALWAYS even if we don't have CPUID x86/vdso: Fix building on big endian host x86/boot: Fix another __read_cr4() case on 486 sctp: fix the issue sctp_diag uses lock_sock in rcu_read_lock sctp: change to check peer prsctp_capable when using prsctp polices sctp: remove prsctp_param from sctp_chunk sctp: move sent_count to the memory hole in sctp_chunk tg3: Avoid NULL pointer dereference in tg3_io_error_detected() x86/init: Fix cr4_init_shadow() on CR4-less machines MIPS: Fix detection of unsupported highmem with cache aliases MIPS: Malta: Fix IOCU disable switch read for MIPS64 MIPS: Fix BUILD_ROLLBACK_PROLOGUE for microMIPS ...
This commit is contained in:
commit
9fce0c2265
4
.mailmap
4
.mailmap
|
@ -69,6 +69,7 @@ James Bottomley <jejb@mulgrave.(none)>
|
||||||
James Bottomley <jejb@titanic.il.steeleye.com>
|
James Bottomley <jejb@titanic.il.steeleye.com>
|
||||||
James E Wilson <wilson@specifix.com>
|
James E Wilson <wilson@specifix.com>
|
||||||
James Ketrenos <jketreno@io.(none)>
|
James Ketrenos <jketreno@io.(none)>
|
||||||
|
Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com>
|
||||||
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
|
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
|
||||||
Jean Tourrilhes <jt@hpl.hp.com>
|
Jean Tourrilhes <jt@hpl.hp.com>
|
||||||
Jeff Garzik <jgarzik@pretzel.yyz.us>
|
Jeff Garzik <jgarzik@pretzel.yyz.us>
|
||||||
|
@ -88,6 +89,7 @@ Kay Sievers <kay.sievers@vrfy.org>
|
||||||
Kenneth W Chen <kenneth.w.chen@intel.com>
|
Kenneth W Chen <kenneth.w.chen@intel.com>
|
||||||
Konstantin Khlebnikov <koct9i@gmail.com> <k.khlebnikov@samsung.com>
|
Konstantin Khlebnikov <koct9i@gmail.com> <k.khlebnikov@samsung.com>
|
||||||
Koushik <raghavendra.koushik@neterion.com>
|
Koushik <raghavendra.koushik@neterion.com>
|
||||||
|
Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski@samsung.com>
|
||||||
Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski.k@gmail.com>
|
Krzysztof Kozlowski <krzk@kernel.org> <k.kozlowski.k@gmail.com>
|
||||||
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
|
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
|
||||||
Leonid I Ananiev <leonid.i.ananiev@intel.com>
|
Leonid I Ananiev <leonid.i.ananiev@intel.com>
|
||||||
|
@ -158,6 +160,8 @@ Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
|
||||||
Viresh Kumar <vireshk@kernel.org> <viresh.kumar@st.com>
|
Viresh Kumar <vireshk@kernel.org> <viresh.kumar@st.com>
|
||||||
Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
|
Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
|
||||||
Viresh Kumar <vireshk@kernel.org> <viresh.kumar2@arm.com>
|
Viresh Kumar <vireshk@kernel.org> <viresh.kumar2@arm.com>
|
||||||
|
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@virtuozzo.com>
|
||||||
|
Vladimir Davydov <vdavydov.dev@gmail.com> <vdavydov@parallels.com>
|
||||||
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
|
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
|
||||||
Yusuke Goda <goda.yusuke@renesas.com>
|
Yusuke Goda <goda.yusuke@renesas.com>
|
||||||
Gustavo Padovan <gustavo@las.ic.unicamp.br>
|
Gustavo Padovan <gustavo@las.ic.unicamp.br>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Note: This documents additional properties of any device beyond what
|
# Note: This documents additional properties of any device beyond what
|
||||||
# is documented in Documentation/sysfs-rules.txt
|
# is documented in Documentation/sysfs-rules.txt
|
||||||
|
|
||||||
What: /sys/devices/*/of_path
|
What: /sys/devices/*/of_node
|
||||||
Date: February 2015
|
Date: February 2015
|
||||||
Contact: Device Tree mailing list <devicetree@vger.kernel.org>
|
Contact: Device Tree mailing list <devicetree@vger.kernel.org>
|
||||||
Description:
|
Description:
|
||||||
|
|
|
@ -94,14 +94,11 @@ has a requirements for a minimum number of vectors the driver can pass a
|
||||||
min_vecs argument set to this limit, and the PCI core will return -ENOSPC
|
min_vecs argument set to this limit, and the PCI core will return -ENOSPC
|
||||||
if it can't meet the minimum number of vectors.
|
if it can't meet the minimum number of vectors.
|
||||||
|
|
||||||
The flags argument should normally be set to 0, but can be used to pass the
|
The flags argument is used to specify which type of interrupt can be used
|
||||||
PCI_IRQ_NOMSI and PCI_IRQ_NOMSIX flag in case a device claims to support
|
by the device and the driver (PCI_IRQ_LEGACY, PCI_IRQ_MSI, PCI_IRQ_MSIX).
|
||||||
MSI or MSI-X, but the support is broken, or to pass PCI_IRQ_NOLEGACY in
|
A convenient short-hand (PCI_IRQ_ALL_TYPES) is also available to ask for
|
||||||
case the device does not support legacy interrupt lines.
|
any possible kind of interrupt. If the PCI_IRQ_AFFINITY flag is set,
|
||||||
|
pci_alloc_irq_vectors() will spread the interrupts around the available CPUs.
|
||||||
By default this function will spread the interrupts around the available
|
|
||||||
CPUs, but this feature can be disabled by passing the PCI_IRQ_NOAFFINITY
|
|
||||||
flag.
|
|
||||||
|
|
||||||
To get the Linux IRQ numbers passed to request_irq() and free_irq() and the
|
To get the Linux IRQ numbers passed to request_irq() and free_irq() and the
|
||||||
vectors, use the following function:
|
vectors, use the following function:
|
||||||
|
@ -131,7 +128,7 @@ larger than the number supported by the device it will automatically be
|
||||||
capped to the supported limit, so there is no need to query the number of
|
capped to the supported limit, so there is no need to query the number of
|
||||||
vectors supported beforehand:
|
vectors supported beforehand:
|
||||||
|
|
||||||
nvec = pci_alloc_irq_vectors(pdev, 1, nvec, 0);
|
nvec = pci_alloc_irq_vectors(pdev, 1, nvec, PCI_IRQ_ALL_TYPES)
|
||||||
if (nvec < 0)
|
if (nvec < 0)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
|
@ -140,7 +137,7 @@ interrupts it can request a particular number of interrupts by passing that
|
||||||
number to pci_alloc_irq_vectors() function as both 'min_vecs' and
|
number to pci_alloc_irq_vectors() function as both 'min_vecs' and
|
||||||
'max_vecs' parameters:
|
'max_vecs' parameters:
|
||||||
|
|
||||||
ret = pci_alloc_irq_vectors(pdev, nvec, nvec, 0);
|
ret = pci_alloc_irq_vectors(pdev, nvec, nvec, PCI_IRQ_ALL_TYPES);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
|
@ -148,15 +145,14 @@ The most notorious example of the request type described above is enabling
|
||||||
the single MSI mode for a device. It could be done by passing two 1s as
|
the single MSI mode for a device. It could be done by passing two 1s as
|
||||||
'min_vecs' and 'max_vecs':
|
'min_vecs' and 'max_vecs':
|
||||||
|
|
||||||
ret = pci_alloc_irq_vectors(pdev, 1, 1, 0);
|
ret = pci_alloc_irq_vectors(pdev, 1, 1, PCI_IRQ_ALL_TYPES);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
Some devices might not support using legacy line interrupts, in which case
|
Some devices might not support using legacy line interrupts, in which case
|
||||||
the PCI_IRQ_NOLEGACY flag can be used to fail the request if the platform
|
the driver can specify that only MSI or MSI-X is acceptable:
|
||||||
can't provide MSI or MSI-X interrupts:
|
|
||||||
|
|
||||||
nvec = pci_alloc_irq_vectors(pdev, 1, nvec, PCI_IRQ_NOLEGACY);
|
nvec = pci_alloc_irq_vectors(pdev, 1, nvec, PCI_IRQ_MSI | PCI_IRQ_MSIX);
|
||||||
if (nvec < 0)
|
if (nvec < 0)
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,6 @@ initialization with a pointer to a structure describing the driver
|
||||||
|
|
||||||
The ID table is an array of struct pci_device_id entries ending with an
|
The ID table is an array of struct pci_device_id entries ending with an
|
||||||
all-zero entry. Definitions with static const are generally preferred.
|
all-zero entry. Definitions with static const are generally preferred.
|
||||||
Use of the deprecated macro DEFINE_PCI_DEVICE_TABLE should be avoided.
|
|
||||||
|
|
||||||
Each entry consists of:
|
Each entry consists of:
|
||||||
|
|
||||||
|
|
|
@ -18,13 +18,17 @@ and config2 fields of the perf_event_attr structure. The "events"
|
||||||
directory provides configuration templates for all documented
|
directory provides configuration templates for all documented
|
||||||
events, that can be used with perf tool. For example "xp_valid_flit"
|
events, that can be used with perf tool. For example "xp_valid_flit"
|
||||||
is an equivalent of "type=0x8,event=0x4". Other parameters must be
|
is an equivalent of "type=0x8,event=0x4". Other parameters must be
|
||||||
explicitly specified. For events originating from device, "node"
|
explicitly specified.
|
||||||
defines its index. All crosspoint events require "xp" (index),
|
|
||||||
"port" (device port number) and "vc" (virtual channel ID) and
|
|
||||||
"dir" (direction). Watchpoints (special "event" value 0xfe) also
|
|
||||||
require comparator values ("cmp_l" and "cmp_h") and "mask", being
|
|
||||||
index of the comparator mask.
|
|
||||||
|
|
||||||
|
For events originating from device, "node" defines its index.
|
||||||
|
|
||||||
|
Crosspoint PMU events require "xp" (index), "bus" (bus number)
|
||||||
|
and "vc" (virtual channel ID).
|
||||||
|
|
||||||
|
Crosspoint watchpoint-based events (special "event" value 0xfe)
|
||||||
|
require "xp" and "vc" as as above plus "port" (device port index),
|
||||||
|
"dir" (transmit/receive direction), comparator values ("cmp_l"
|
||||||
|
and "cmp_h") and "mask", being index of the comparator mask.
|
||||||
Masks are defined separately from the event description
|
Masks are defined separately from the event description
|
||||||
(due to limited number of the config values) in the "cmp_mask"
|
(due to limited number of the config values) in the "cmp_mask"
|
||||||
directory, with first 8 configurable by user and additional
|
directory, with first 8 configurable by user and additional
|
||||||
|
|
|
@ -53,6 +53,7 @@ stable kernels.
|
||||||
| ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 |
|
| ARM | Cortex-A57 | #832075 | ARM64_ERRATUM_832075 |
|
||||||
| ARM | Cortex-A57 | #852523 | N/A |
|
| ARM | Cortex-A57 | #852523 | N/A |
|
||||||
| ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 |
|
| ARM | Cortex-A57 | #834220 | ARM64_ERRATUM_834220 |
|
||||||
|
| ARM | Cortex-A72 | #853709 | N/A |
|
||||||
| ARM | MMU-500 | #841119,#826419 | N/A |
|
| ARM | MMU-500 | #841119,#826419 | N/A |
|
||||||
| | | | |
|
| | | | |
|
||||||
| Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
|
| Cavium | ThunderX ITS | #22375, #24313 | CAVIUM_ERRATUM_22375 |
|
||||||
|
|
|
@ -14,6 +14,12 @@ add_random (RW)
|
||||||
This file allows to turn off the disk entropy contribution. Default
|
This file allows to turn off the disk entropy contribution. Default
|
||||||
value of this file is '1'(on).
|
value of this file is '1'(on).
|
||||||
|
|
||||||
|
dax (RO)
|
||||||
|
--------
|
||||||
|
This file indicates whether the device supports Direct Access (DAX),
|
||||||
|
used by CPU-addressable storage to bypass the pagecache. It shows '1'
|
||||||
|
if true, '0' if not.
|
||||||
|
|
||||||
discard_granularity (RO)
|
discard_granularity (RO)
|
||||||
-----------------------
|
-----------------------
|
||||||
This shows the size of internal allocation of the device in bytes, if
|
This shows the size of internal allocation of the device in bytes, if
|
||||||
|
@ -46,6 +52,12 @@ hw_sector_size (RO)
|
||||||
-------------------
|
-------------------
|
||||||
This is the hardware sector size of the device, in bytes.
|
This is the hardware sector size of the device, in bytes.
|
||||||
|
|
||||||
|
io_poll (RW)
|
||||||
|
------------
|
||||||
|
When read, this file shows the total number of block IO polls and how
|
||||||
|
many returned success. Writing '0' to this file will disable polling
|
||||||
|
for this device. Writing any non-zero value will enable this feature.
|
||||||
|
|
||||||
iostats (RW)
|
iostats (RW)
|
||||||
-------------
|
-------------
|
||||||
This file is used to control (on/off) the iostats accounting of the
|
This file is used to control (on/off) the iostats accounting of the
|
||||||
|
@ -151,5 +163,11 @@ device state. This means that it might not be safe to toggle the
|
||||||
setting from "write back" to "write through", since that will also
|
setting from "write back" to "write through", since that will also
|
||||||
eliminate cache flushes issued by the kernel.
|
eliminate cache flushes issued by the kernel.
|
||||||
|
|
||||||
|
write_same_max_bytes (RO)
|
||||||
|
-------------------------
|
||||||
|
This is the number of bytes the device can write in a single write-same
|
||||||
|
command. A value of '0' means write-same is not supported by this
|
||||||
|
device.
|
||||||
|
|
||||||
|
|
||||||
Jens Axboe <jens.axboe@oracle.com>, February 2009
|
Jens Axboe <jens.axboe@oracle.com>, February 2009
|
||||||
|
|
|
@ -103,7 +103,7 @@ Config Main Menu
|
||||||
Power management options (ACPI, APM) --->
|
Power management options (ACPI, APM) --->
|
||||||
CPU Frequency scaling --->
|
CPU Frequency scaling --->
|
||||||
[*] CPU Frequency scaling
|
[*] CPU Frequency scaling
|
||||||
<*> CPU frequency translation statistics
|
[*] CPU frequency translation statistics
|
||||||
[*] CPU frequency translation statistics details
|
[*] CPU frequency translation statistics details
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,11 @@ Required properties:
|
||||||
- vref-supply: The regulator supply ADC reference voltage.
|
- vref-supply: The regulator supply ADC reference voltage.
|
||||||
- #io-channel-cells: Should be 1, see ../iio-bindings.txt
|
- #io-channel-cells: Should be 1, see ../iio-bindings.txt
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- resets: Must contain an entry for each entry in reset-names if need support
|
||||||
|
this option. See ../reset/reset.txt for details.
|
||||||
|
- reset-names: Must include the name "saradc-apb".
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
saradc: saradc@2006c000 {
|
saradc: saradc@2006c000 {
|
||||||
compatible = "rockchip,saradc";
|
compatible = "rockchip,saradc";
|
||||||
|
@ -23,6 +28,8 @@ Example:
|
||||||
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
|
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
|
||||||
clock-names = "saradc", "apb_pclk";
|
clock-names = "saradc", "apb_pclk";
|
||||||
|
resets = <&cru SRST_SARADC>;
|
||||||
|
reset-names = "saradc-apb";
|
||||||
#io-channel-cells = <1>;
|
#io-channel-cells = <1>;
|
||||||
vref-supply = <&vcc18>;
|
vref-supply = <&vcc18>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,6 +13,7 @@ Required properties:
|
||||||
- touchscreen-size-y : See touchscreen.txt
|
- touchscreen-size-y : See touchscreen.txt
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
|
- firmware-name : File basename (string) for board specific firmware
|
||||||
- touchscreen-inverted-x : See touchscreen.txt
|
- touchscreen-inverted-x : See touchscreen.txt
|
||||||
- touchscreen-inverted-y : See touchscreen.txt
|
- touchscreen-inverted-y : See touchscreen.txt
|
||||||
- touchscreen-swapped-x-y : See touchscreen.txt
|
- touchscreen-swapped-x-y : See touchscreen.txt
|
||||||
|
|
|
@ -10,7 +10,7 @@ Required properties:
|
||||||
subsystem (mmcss) inside the FlashSS (available in STiH407 SoC
|
subsystem (mmcss) inside the FlashSS (available in STiH407 SoC
|
||||||
family).
|
family).
|
||||||
|
|
||||||
- clock-names: Should be "mmc".
|
- clock-names: Should be "mmc" and "icn". (NB: The latter is not compulsory)
|
||||||
See: Documentation/devicetree/bindings/resource-names.txt
|
See: Documentation/devicetree/bindings/resource-names.txt
|
||||||
- clocks: Phandle to the clock.
|
- clocks: Phandle to the clock.
|
||||||
See: Documentation/devicetree/bindings/clock/clock-bindings.txt
|
See: Documentation/devicetree/bindings/clock/clock-bindings.txt
|
||||||
|
|
|
@ -42,9 +42,6 @@ Optional properties:
|
||||||
- auto-flow-control: one way to enable automatic flow control support. The
|
- auto-flow-control: one way to enable automatic flow control support. The
|
||||||
driver is allowed to detect support for the capability even without this
|
driver is allowed to detect support for the capability even without this
|
||||||
property.
|
property.
|
||||||
- {rts,cts,dtr,dsr,rng,dcd}-gpios: specify a GPIO for RTS/CTS/DTR/DSR/RI/DCD
|
|
||||||
line respectively. It will use specified GPIO instead of the peripheral
|
|
||||||
function pin for the UART feature. If unsure, don't specify this property.
|
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
* fsl,ns16550:
|
* fsl,ns16550:
|
||||||
|
@ -66,19 +63,3 @@ Example:
|
||||||
interrupts = <10>;
|
interrupts = <10>;
|
||||||
reg-shift = <2>;
|
reg-shift = <2>;
|
||||||
};
|
};
|
||||||
|
|
||||||
Example for OMAP UART using GPIO-based modem control signals:
|
|
||||||
|
|
||||||
uart4: serial@49042000 {
|
|
||||||
compatible = "ti,omap3-uart";
|
|
||||||
reg = <0x49042000 0x400>;
|
|
||||||
interrupts = <80>;
|
|
||||||
ti,hwmods = "uart4";
|
|
||||||
clock-frequency = <48000000>;
|
|
||||||
cts-gpios = <&gpio3 5 GPIO_ACTIVE_LOW>;
|
|
||||||
rts-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>;
|
|
||||||
dtr-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
|
|
||||||
dsr-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
|
|
||||||
dcd-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
|
|
||||||
rng-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
|
|
||||||
};
|
|
||||||
|
|
|
@ -8,8 +8,6 @@ Required properties:
|
||||||
- interrupts: Interrupt number for McPDM
|
- interrupts: Interrupt number for McPDM
|
||||||
- interrupt-parent: The parent interrupt controller
|
- interrupt-parent: The parent interrupt controller
|
||||||
- ti,hwmods: Name of the hwmod associated to the McPDM
|
- ti,hwmods: Name of the hwmod associated to the McPDM
|
||||||
- clocks: phandle for the pdmclk provider, likely <&twl6040>
|
|
||||||
- clock-names: Must be "pdmclk"
|
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -21,11 +19,3 @@ mcpdm: mcpdm@40132000 {
|
||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
ti,hwmods = "mcpdm";
|
ti,hwmods = "mcpdm";
|
||||||
};
|
};
|
||||||
|
|
||||||
In board DTS file the pdmclk needs to be added:
|
|
||||||
|
|
||||||
&mcpdm {
|
|
||||||
clocks = <&twl6040>;
|
|
||||||
clock-names = "pdmclk";
|
|
||||||
status = "okay";
|
|
||||||
};
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ For more examples of cooling devices, refer to the example sections below.
|
||||||
Required properties:
|
Required properties:
|
||||||
- #cooling-cells: Used to provide cooling device specific information
|
- #cooling-cells: Used to provide cooling device specific information
|
||||||
Type: unsigned while referring to it. Must be at least 2, in order
|
Type: unsigned while referring to it. Must be at least 2, in order
|
||||||
Size: one cell to specify minimum and maximum cooling state used
|
Size: one cell to specify minimum and maximum cooling state used
|
||||||
in the reference. The first cell is the minimum
|
in the reference. The first cell is the minimum
|
||||||
cooling state requested and the second cell is
|
cooling state requested and the second cell is
|
||||||
the maximum cooling state requested in the reference.
|
the maximum cooling state requested in the reference.
|
||||||
|
@ -119,7 +119,7 @@ Required properties:
|
||||||
Optional property:
|
Optional property:
|
||||||
- contribution: The cooling contribution to the thermal zone of the
|
- contribution: The cooling contribution to the thermal zone of the
|
||||||
Type: unsigned referred cooling device at the referred trip point.
|
Type: unsigned referred cooling device at the referred trip point.
|
||||||
Size: one cell The contribution is a ratio of the sum
|
Size: one cell The contribution is a ratio of the sum
|
||||||
of all cooling contributions within a thermal zone.
|
of all cooling contributions within a thermal zone.
|
||||||
|
|
||||||
Note: Using the THERMAL_NO_LIMIT (-1UL) constant in the cooling-device phandle
|
Note: Using the THERMAL_NO_LIMIT (-1UL) constant in the cooling-device phandle
|
||||||
|
@ -145,7 +145,7 @@ Required properties:
|
||||||
Size: one cell
|
Size: one cell
|
||||||
|
|
||||||
- thermal-sensors: A list of thermal sensor phandles and sensor specifier
|
- thermal-sensors: A list of thermal sensor phandles and sensor specifier
|
||||||
Type: list of used while monitoring the thermal zone.
|
Type: list of used while monitoring the thermal zone.
|
||||||
phandles + sensor
|
phandles + sensor
|
||||||
specifier
|
specifier
|
||||||
|
|
||||||
|
@ -473,7 +473,7 @@ thermal-zones {
|
||||||
<&adc>; /* pcb north */
|
<&adc>; /* pcb north */
|
||||||
|
|
||||||
/* hotspot = 100 * bandgap - 120 * adc + 484 */
|
/* hotspot = 100 * bandgap - 120 * adc + 484 */
|
||||||
coefficients = <100 -120 484>;
|
coefficients = <100 -120 484>;
|
||||||
|
|
||||||
trips {
|
trips {
|
||||||
...
|
...
|
||||||
|
@ -502,7 +502,7 @@ from the ADC sensor. The binding would be then:
|
||||||
thermal-sensors = <&adc>;
|
thermal-sensors = <&adc>;
|
||||||
|
|
||||||
/* hotspot = 1 * adc + 6000 */
|
/* hotspot = 1 * adc + 6000 */
|
||||||
coefficients = <1 6000>;
|
coefficients = <1 6000>;
|
||||||
|
|
||||||
(d) - Board thermal
|
(d) - Board thermal
|
||||||
|
|
||||||
|
|
|
@ -183,12 +183,10 @@ The copy_up operation essentially creates a new, identical file and
|
||||||
moves it over to the old name. The new file may be on a different
|
moves it over to the old name. The new file may be on a different
|
||||||
filesystem, so both st_dev and st_ino of the file may change.
|
filesystem, so both st_dev and st_ino of the file may change.
|
||||||
|
|
||||||
Any open files referring to this inode will access the old data and
|
Any open files referring to this inode will access the old data.
|
||||||
metadata. Similarly any file locks obtained before copy_up will not
|
|
||||||
apply to the copied up file.
|
|
||||||
|
|
||||||
On a file opened with O_RDONLY fchmod(2), fchown(2), futimesat(2) and
|
Any file locks (and leases) obtained before copy_up will not apply
|
||||||
fsetxattr(2) will fail with EROFS.
|
to the copied up file.
|
||||||
|
|
||||||
If a file with multiple hard links is copied up, then this will
|
If a file with multiple hard links is copied up, then this will
|
||||||
"break" the link. Changes will not be propagated to other names
|
"break" the link. Changes will not be propagated to other names
|
||||||
|
|
|
@ -19,5 +19,5 @@ enhancements. It can monitor up to 4 voltages, 16 temperatures and
|
||||||
implemented in this driver.
|
implemented in this driver.
|
||||||
|
|
||||||
Specification of the chip can be found here:
|
Specification of the chip can be found here:
|
||||||
ftp:///pub/Mainboard-OEM-Sales/Services/Software&Tools/Linux_SystemMonitoring&Watchdog&GPIO/BMC-Teutates_Specification_V1.21.pdf
|
ftp://ftp.ts.fujitsu.com/pub/Mainboard-OEM-Sales/Services/Software&Tools/Linux_SystemMonitoring&Watchdog&GPIO/BMC-Teutates_Specification_V1.21.pdf
|
||||||
ftp:///pub/Mainboard-OEM-Sales/Services/Software&Tools/Linux_SystemMonitoring&Watchdog&GPIO/Fujitsu_mainboards-1-Sensors_HowTo-en-US.pdf
|
ftp://ftp.ts.fujitsu.com/pub/Mainboard-OEM-Sales/Services/Software&Tools/Linux_SystemMonitoring&Watchdog&GPIO/Fujitsu_mainboards-1-Sensors_HowTo-en-US.pdf
|
||||||
|
|
|
@ -145,6 +145,11 @@ If you want to add slave support to the bus driver:
|
||||||
|
|
||||||
* Catch the slave interrupts and send appropriate i2c_slave_events to the backend.
|
* Catch the slave interrupts and send appropriate i2c_slave_events to the backend.
|
||||||
|
|
||||||
|
Note that most hardware supports being master _and_ slave on the same bus. So,
|
||||||
|
if you extend a bus driver, please make sure that the driver supports that as
|
||||||
|
well. In almost all cases, slave support does not need to disable the master
|
||||||
|
functionality.
|
||||||
|
|
||||||
Check the i2c-rcar driver as an example.
|
Check the i2c-rcar driver as an example.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3036,6 +3036,10 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||||
PAGE_SIZE is used as alignment.
|
PAGE_SIZE is used as alignment.
|
||||||
PCI-PCI bridge can be specified, if resource
|
PCI-PCI bridge can be specified, if resource
|
||||||
windows need to be expanded.
|
windows need to be expanded.
|
||||||
|
To specify the alignment for several
|
||||||
|
instances of a device, the PCI vendor,
|
||||||
|
device, subvendor, and subdevice may be
|
||||||
|
specified, e.g., 4096@pci:8086:9c22:103c:198f
|
||||||
ecrc= Enable/disable PCIe ECRC (transaction layer
|
ecrc= Enable/disable PCIe ECRC (transaction layer
|
||||||
end-to-end CRC checking).
|
end-to-end CRC checking).
|
||||||
bios: Use BIOS/firmware settings. This is the
|
bios: Use BIOS/firmware settings. This is the
|
||||||
|
|
|
@ -149,7 +149,7 @@ logical address types are already defined will return with error ``EBUSY``.
|
||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Flags. No flags are defined yet, so set this to 0.
|
- Flags. See :ref:`cec-log-addrs-flags` for a list of available flags.
|
||||||
|
|
||||||
- .. row 7
|
- .. row 7
|
||||||
|
|
||||||
|
@ -206,6 +206,25 @@ logical address types are already defined will return with error ``EBUSY``.
|
||||||
give the CEC framework more information about the device type, even
|
give the CEC framework more information about the device type, even
|
||||||
though the framework won't use it directly in the CEC message.
|
though the framework won't use it directly in the CEC message.
|
||||||
|
|
||||||
|
.. _cec-log-addrs-flags:
|
||||||
|
|
||||||
|
.. flat-table:: Flags for struct cec_log_addrs
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 3 1 4
|
||||||
|
|
||||||
|
|
||||||
|
- .. _`CEC-LOG-ADDRS-FL-ALLOW-UNREG-FALLBACK`:
|
||||||
|
|
||||||
|
- ``CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK``
|
||||||
|
|
||||||
|
- 1
|
||||||
|
|
||||||
|
- By default if no logical address of the requested type can be claimed, then
|
||||||
|
it will go back to the unconfigured state. If this flag is set, then it will
|
||||||
|
fallback to the Unregistered logical address. Note that if the Unregistered
|
||||||
|
logical address was explicitly requested, then this flag has no effect.
|
||||||
|
|
||||||
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
|
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
|
||||||
|
|
||||||
.. _cec-versions:
|
.. _cec-versions:
|
||||||
|
|
|
@ -65,7 +65,8 @@ it is guaranteed that the state did change in between the two events.
|
||||||
|
|
||||||
- ``phys_addr``
|
- ``phys_addr``
|
||||||
|
|
||||||
- The current physical address.
|
- The current physical address. This is ``CEC_PHYS_ADDR_INVALID`` if no
|
||||||
|
valid physical address is set.
|
||||||
|
|
||||||
- .. row 2
|
- .. row 2
|
||||||
|
|
||||||
|
@ -73,13 +74,16 @@ it is guaranteed that the state did change in between the two events.
|
||||||
|
|
||||||
- ``log_addr_mask``
|
- ``log_addr_mask``
|
||||||
|
|
||||||
- The current set of claimed logical addresses.
|
- The current set of claimed logical addresses. This is 0 if no logical
|
||||||
|
addresses are claimed or if ``phys_addr`` is ``CEC_PHYS_ADDR_INVALID``.
|
||||||
|
If bit 15 is set (``1 << CEC_LOG_ADDR_UNREGISTERED``) then this device
|
||||||
|
has the unregistered logical address. In that case all other bits are 0.
|
||||||
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{1.0cm}|p{2.0cm}|p{14.5cm}|
|
|
||||||
|
|
||||||
.. c:type:: cec_event_lost_msgs
|
.. c:type:: cec_event_lost_msgs
|
||||||
|
|
||||||
|
.. tabularcolumns:: |p{1.0cm}|p{2.0cm}|p{14.5cm}|
|
||||||
|
|
||||||
.. flat-table:: struct cec_event_lost_msgs
|
.. flat-table:: struct cec_event_lost_msgs
|
||||||
:header-rows: 0
|
:header-rows: 0
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
|
@ -587,26 +587,6 @@ of DSA, would be the its port-based VLAN, used by the associated bridge device.
|
||||||
TODO
|
TODO
|
||||||
====
|
====
|
||||||
|
|
||||||
The platform device problem
|
|
||||||
---------------------------
|
|
||||||
DSA is currently implemented as a platform device driver which is far from ideal
|
|
||||||
as was discussed in this thread:
|
|
||||||
|
|
||||||
http://permalink.gmane.org/gmane.linux.network/329848
|
|
||||||
|
|
||||||
This basically prevents the device driver model to be properly used and applied,
|
|
||||||
and support non-MDIO, non-MMIO Ethernet connected switches.
|
|
||||||
|
|
||||||
Another problem with the platform device driver approach is that it prevents the
|
|
||||||
use of a modular switch drivers build due to a circular dependency, illustrated
|
|
||||||
here:
|
|
||||||
|
|
||||||
http://comments.gmane.org/gmane.linux.network/345803
|
|
||||||
|
|
||||||
Attempts of reworking this has been done here:
|
|
||||||
|
|
||||||
https://lwn.net/Articles/643149/
|
|
||||||
|
|
||||||
Making SWITCHDEV and DSA converge towards an unified codebase
|
Making SWITCHDEV and DSA converge towards an unified codebase
|
||||||
-------------------------------------------------------------
|
-------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -790,13 +790,12 @@ The kernel interface functions are as follows:
|
||||||
Data messages can have their contents extracted with the usual bunch of
|
Data messages can have their contents extracted with the usual bunch of
|
||||||
socket buffer manipulation functions. A data message can be determined to
|
socket buffer manipulation functions. A data message can be determined to
|
||||||
be the last one in a sequence with rxrpc_kernel_is_data_last(). When a
|
be the last one in a sequence with rxrpc_kernel_is_data_last(). When a
|
||||||
data message has been used up, rxrpc_kernel_data_delivered() should be
|
data message has been used up, rxrpc_kernel_data_consumed() should be
|
||||||
called on it..
|
called on it.
|
||||||
|
|
||||||
Non-data messages should be handled to rxrpc_kernel_free_skb() to dispose
|
Messages should be handled to rxrpc_kernel_free_skb() to dispose of. It
|
||||||
of. It is possible to get extra refs on all types of message for later
|
is possible to get extra refs on all types of message for later freeing,
|
||||||
freeing, but this may pin the state of a call until the message is finally
|
but this may pin the state of a call until the message is finally freed.
|
||||||
freed.
|
|
||||||
|
|
||||||
(*) Accept an incoming call.
|
(*) Accept an incoming call.
|
||||||
|
|
||||||
|
@ -821,12 +820,14 @@ The kernel interface functions are as follows:
|
||||||
Other errors may be returned if the call had been aborted (-ECONNABORTED)
|
Other errors may be returned if the call had been aborted (-ECONNABORTED)
|
||||||
or had timed out (-ETIME).
|
or had timed out (-ETIME).
|
||||||
|
|
||||||
(*) Record the delivery of a data message and free it.
|
(*) Record the delivery of a data message.
|
||||||
|
|
||||||
void rxrpc_kernel_data_delivered(struct sk_buff *skb);
|
void rxrpc_kernel_data_consumed(struct rxrpc_call *call,
|
||||||
|
struct sk_buff *skb);
|
||||||
|
|
||||||
This is used to record a data message as having been delivered and to
|
This is used to record a data message as having been consumed and to
|
||||||
update the ACK state for the call. The socket buffer will be freed.
|
update the ACK state for the call. The message must still be passed to
|
||||||
|
rxrpc_kernel_free_skb() for disposal by the caller.
|
||||||
|
|
||||||
(*) Free a message.
|
(*) Free a message.
|
||||||
|
|
||||||
|
|
|
@ -164,7 +164,32 @@ load n/2 modules more and try again.
|
||||||
Again, if you find the offending module(s), it(they) must be unloaded every time
|
Again, if you find the offending module(s), it(they) must be unloaded every time
|
||||||
before hibernation, and please report the problem with it(them).
|
before hibernation, and please report the problem with it(them).
|
||||||
|
|
||||||
c) Advanced debugging
|
c) Using the "test_resume" hibernation option
|
||||||
|
|
||||||
|
/sys/power/disk generally tells the kernel what to do after creating a
|
||||||
|
hibernation image. One of the available options is "test_resume" which
|
||||||
|
causes the just created image to be used for immediate restoration. Namely,
|
||||||
|
after doing:
|
||||||
|
|
||||||
|
# echo test_resume > /sys/power/disk
|
||||||
|
# echo disk > /sys/power/state
|
||||||
|
|
||||||
|
a hibernation image will be created and a resume from it will be triggered
|
||||||
|
immediately without involving the platform firmware in any way.
|
||||||
|
|
||||||
|
That test can be used to check if failures to resume from hibernation are
|
||||||
|
related to bad interactions with the platform firmware. That is, if the above
|
||||||
|
works every time, but resume from actual hibernation does not work or is
|
||||||
|
unreliable, the platform firmware may be responsible for the failures.
|
||||||
|
|
||||||
|
On architectures and platforms that support using different kernels to restore
|
||||||
|
hibernation images (that is, the kernel used to read the image from storage and
|
||||||
|
load it into memory is different from the one included in the image) or support
|
||||||
|
kernel address space randomization, it also can be used to check if failures
|
||||||
|
to resume may be related to the differences between the restore and image
|
||||||
|
kernels.
|
||||||
|
|
||||||
|
d) Advanced debugging
|
||||||
|
|
||||||
In case that hibernation does not work on your system even in the minimal
|
In case that hibernation does not work on your system even in the minimal
|
||||||
configuration and compiling more drivers as modules is not practical or some
|
configuration and compiling more drivers as modules is not practical or some
|
||||||
|
|
|
@ -1,75 +1,76 @@
|
||||||
Power Management Interface
|
Power Management Interface for System Sleep
|
||||||
|
|
||||||
|
Copyright (c) 2016 Intel Corp., Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||||
|
|
||||||
The power management subsystem provides a unified sysfs interface to
|
The power management subsystem provides userspace with a unified sysfs interface
|
||||||
userspace, regardless of what architecture or platform one is
|
for system sleep regardless of the underlying system architecture or platform.
|
||||||
running. The interface exists in /sys/power/ directory (assuming sysfs
|
The interface is located in the /sys/power/ directory (assuming that sysfs is
|
||||||
is mounted at /sys).
|
mounted at /sys).
|
||||||
|
|
||||||
/sys/power/state controls system power state. Reading from this file
|
/sys/power/state is the system sleep state control file.
|
||||||
returns what states are supported, which is hard-coded to 'freeze',
|
|
||||||
'standby' (Power-On Suspend), 'mem' (Suspend-to-RAM), and 'disk'
|
|
||||||
(Suspend-to-Disk).
|
|
||||||
|
|
||||||
Writing to this file one of those strings causes the system to
|
Reading from it returns a list of supported sleep states, encoded as:
|
||||||
transition into that state. Please see the file
|
|
||||||
Documentation/power/states.txt for a description of each of those
|
|
||||||
states.
|
|
||||||
|
|
||||||
|
'freeze' (Suspend-to-Idle)
|
||||||
|
'standby' (Power-On Suspend)
|
||||||
|
'mem' (Suspend-to-RAM)
|
||||||
|
'disk' (Suspend-to-Disk)
|
||||||
|
|
||||||
/sys/power/disk controls the operating mode of the suspend-to-disk
|
Suspend-to-Idle is always supported. Suspend-to-Disk is always supported
|
||||||
mechanism. Suspend-to-disk can be handled in several ways. We have a
|
too as long the kernel has been configured to support hibernation at all
|
||||||
few options for putting the system to sleep - using the platform driver
|
(ie. CONFIG_HIBERNATION is set in the kernel configuration file). Support
|
||||||
(e.g. ACPI or other suspend_ops), powering off the system or rebooting the
|
for Suspend-to-RAM and Power-On Suspend depends on the capabilities of the
|
||||||
system (for testing).
|
platform.
|
||||||
|
|
||||||
Additionally, /sys/power/disk can be used to turn on one of the two testing
|
If one of the strings listed in /sys/power/state is written to it, the system
|
||||||
modes of the suspend-to-disk mechanism: 'testproc' or 'test'. If the
|
will attempt to transition into the corresponding sleep state. Refer to
|
||||||
suspend-to-disk mechanism is in the 'testproc' mode, writing 'disk' to
|
Documentation/power/states.txt for a description of each of those states.
|
||||||
/sys/power/state will cause the kernel to disable nonboot CPUs and freeze
|
|
||||||
tasks, wait for 5 seconds, unfreeze tasks and enable nonboot CPUs. If it is
|
|
||||||
in the 'test' mode, writing 'disk' to /sys/power/state will cause the kernel
|
|
||||||
to disable nonboot CPUs and freeze tasks, shrink memory, suspend devices, wait
|
|
||||||
for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs. Then,
|
|
||||||
we are able to look in the log messages and work out, for example, which code
|
|
||||||
is being slow and which device drivers are misbehaving.
|
|
||||||
|
|
||||||
Reading from this file will display all supported modes and the currently
|
/sys/power/disk controls the operating mode of hibernation (Suspend-to-Disk).
|
||||||
selected one in brackets, for example
|
Specifically, it tells the kernel what to do after creating a hibernation image.
|
||||||
|
|
||||||
[shutdown] reboot test testproc
|
Reading from it returns a list of supported options encoded as:
|
||||||
|
|
||||||
Writing to this file will accept one of
|
'platform' (put the system into sleep using a platform-provided method)
|
||||||
|
'shutdown' (shut the system down)
|
||||||
|
'reboot' (reboot the system)
|
||||||
|
'suspend' (trigger a Suspend-to-RAM transition)
|
||||||
|
'test_resume' (resume-after-hibernation test mode)
|
||||||
|
|
||||||
'platform' (only if the platform supports it)
|
The currently selected option is printed in square brackets.
|
||||||
'shutdown'
|
|
||||||
'reboot'
|
|
||||||
'testproc'
|
|
||||||
'test'
|
|
||||||
|
|
||||||
/sys/power/image_size controls the size of the image created by
|
The 'platform' option is only available if the platform provides a special
|
||||||
the suspend-to-disk mechanism. It can be written a string
|
mechanism to put the system to sleep after creating a hibernation image (ACPI
|
||||||
representing a non-negative integer that will be used as an upper
|
does that, for example). The 'suspend' option is available if Suspend-to-RAM
|
||||||
limit of the image size, in bytes. The suspend-to-disk mechanism will
|
is supported. Refer to Documentation/power/basic_pm_debugging.txt for the
|
||||||
do its best to ensure the image size will not exceed that number. However,
|
description of the 'test_resume' option.
|
||||||
if this turns out to be impossible, it will try to suspend anyway using the
|
|
||||||
smallest image possible. In particular, if "0" is written to this file, the
|
|
||||||
suspend image will be as small as possible.
|
|
||||||
|
|
||||||
Reading from this file will display the current image size limit, which
|
To select an option, write the string representing it to /sys/power/disk.
|
||||||
is set to 2/5 of available RAM by default.
|
|
||||||
|
|
||||||
/sys/power/pm_trace controls the code which saves the last PM event point in
|
/sys/power/image_size controls the size of hibernation images.
|
||||||
the RTC across reboots, so that you can debug a machine that just hangs
|
|
||||||
during suspend (or more commonly, during resume). Namely, the RTC is only
|
|
||||||
used to save the last PM event point if this file contains '1'. Initially it
|
|
||||||
contains '0' which may be changed to '1' by writing a string representing a
|
|
||||||
nonzero integer into it.
|
|
||||||
|
|
||||||
To use this debugging feature you should attempt to suspend the machine, then
|
It can be written a string representing a non-negative integer that will be
|
||||||
reboot it and run
|
used as a best-effort upper limit of the image size, in bytes. The hibernation
|
||||||
|
core will do its best to ensure that the image size will not exceed that number.
|
||||||
|
However, if that turns out to be impossible to achieve, a hibernation image will
|
||||||
|
still be created and its size will be as small as possible. In particular,
|
||||||
|
writing '0' to this file will enforce hibernation images to be as small as
|
||||||
|
possible.
|
||||||
|
|
||||||
dmesg -s 1000000 | grep 'hash matches'
|
Reading from this file returns the current image size limit, which is set to
|
||||||
|
around 2/5 of available RAM by default.
|
||||||
|
|
||||||
CAUTION: Using it will cause your machine's real-time (CMOS) clock to be
|
/sys/power/pm_trace controls the PM trace mechanism saving the last suspend
|
||||||
set to a random invalid time after a resume.
|
or resume event point in the RTC across reboots.
|
||||||
|
|
||||||
|
It helps to debug hard lockups or reboots due to device driver failures that
|
||||||
|
occur during system suspend or resume (which is more common) more effectively.
|
||||||
|
|
||||||
|
If /sys/power/pm_trace contains '1', the fingerprint of each suspend/resume
|
||||||
|
event point in turn will be stored in the RTC memory (overwriting the actual
|
||||||
|
RTC information), so it will survive a system crash if one occurs right after
|
||||||
|
storing it and it can be used later to identify the driver that caused the crash
|
||||||
|
to happen (see Documentation/power/s2ram.txt for more information).
|
||||||
|
|
||||||
|
Initially it contains '0' which may be changed to '1' by writing a string
|
||||||
|
representing a nonzero integer into it.
|
||||||
|
|
|
@ -167,6 +167,8 @@ signal will be rolled back anyway.
|
||||||
For signals taken in non-TM or suspended mode, we use the
|
For signals taken in non-TM or suspended mode, we use the
|
||||||
normal/non-checkpointed stack pointer.
|
normal/non-checkpointed stack pointer.
|
||||||
|
|
||||||
|
Any transaction initiated inside a sighandler and suspended on return
|
||||||
|
from the sighandler to the kernel will get reclaimed and discarded.
|
||||||
|
|
||||||
Failure cause codes used by kernel
|
Failure cause codes used by kernel
|
||||||
==================================
|
==================================
|
||||||
|
|
|
@ -80,6 +80,10 @@ functionality of their platform when planning to use this driver:
|
||||||
|
|
||||||
III. Module parameters
|
III. Module parameters
|
||||||
|
|
||||||
|
- 'dma_timeout' - DMA transfer completion timeout (in msec, default value 3000).
|
||||||
|
This parameter set a maximum completion wait time for SYNC mode DMA
|
||||||
|
transfer requests and for RIO_WAIT_FOR_ASYNC ioctl requests.
|
||||||
|
|
||||||
- 'dbg_level' - This parameter allows to control amount of debug information
|
- 'dbg_level' - This parameter allows to control amount of debug information
|
||||||
generated by this device driver. This parameter is formed by set of
|
generated by this device driver. This parameter is formed by set of
|
||||||
bit masks that correspond to the specific functional blocks.
|
bit masks that correspond to the specific functional blocks.
|
||||||
|
|
81
MAINTAINERS
81
MAINTAINERS
|
@ -798,6 +798,7 @@ M: Laura Abbott <labbott@redhat.com>
|
||||||
M: Sumit Semwal <sumit.semwal@linaro.org>
|
M: Sumit Semwal <sumit.semwal@linaro.org>
|
||||||
L: devel@driverdev.osuosl.org
|
L: devel@driverdev.osuosl.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
F: Documentation/devicetree/bindings/staging/ion/
|
||||||
F: drivers/staging/android/ion
|
F: drivers/staging/android/ion
|
||||||
F: drivers/staging/android/uapi/ion.h
|
F: drivers/staging/android/uapi/ion.h
|
||||||
F: drivers/staging/android/uapi/ion_test.h
|
F: drivers/staging/android/uapi/ion_test.h
|
||||||
|
@ -881,6 +882,15 @@ S: Supported
|
||||||
F: drivers/gpu/drm/arc/
|
F: drivers/gpu/drm/arc/
|
||||||
F: Documentation/devicetree/bindings/display/snps,arcpgu.txt
|
F: Documentation/devicetree/bindings/display/snps,arcpgu.txt
|
||||||
|
|
||||||
|
ARM ARCHITECTED TIMER DRIVER
|
||||||
|
M: Mark Rutland <mark.rutland@arm.com>
|
||||||
|
M: Marc Zyngier <marc.zyngier@arm.com>
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
|
S: Maintained
|
||||||
|
F: arch/arm/include/asm/arch_timer.h
|
||||||
|
F: arch/arm64/include/asm/arch_timer.h
|
||||||
|
F: drivers/clocksource/arm_arch_timer.c
|
||||||
|
|
||||||
ARM HDLCD DRM DRIVER
|
ARM HDLCD DRM DRIVER
|
||||||
M: Liviu Dudau <liviu.dudau@arm.com>
|
M: Liviu Dudau <liviu.dudau@arm.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -1004,6 +1014,7 @@ N: meson
|
||||||
ARM/Annapurna Labs ALPINE ARCHITECTURE
|
ARM/Annapurna Labs ALPINE ARCHITECTURE
|
||||||
M: Tsahee Zidenberg <tsahee@annapurnalabs.com>
|
M: Tsahee Zidenberg <tsahee@annapurnalabs.com>
|
||||||
M: Antoine Tenart <antoine.tenart@free-electrons.com>
|
M: Antoine Tenart <antoine.tenart@free-electrons.com>
|
||||||
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-alpine/
|
F: arch/arm/mach-alpine/
|
||||||
F: arch/arm/boot/dts/alpine*
|
F: arch/arm/boot/dts/alpine*
|
||||||
|
@ -1613,7 +1624,8 @@ 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>
|
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
|
R: Javier Martinez Canillas <javier@osg.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
|
||||||
|
@ -1633,7 +1645,6 @@ F: drivers/*/*s3c64xx*
|
||||||
F: drivers/*/*s5pv210*
|
F: drivers/*/*s5pv210*
|
||||||
F: drivers/memory/samsung/*
|
F: drivers/memory/samsung/*
|
||||||
F: drivers/soc/samsung/*
|
F: drivers/soc/samsung/*
|
||||||
F: drivers/spi/spi-s3c*
|
|
||||||
F: Documentation/arm/Samsung/
|
F: Documentation/arm/Samsung/
|
||||||
F: Documentation/devicetree/bindings/arm/samsung/
|
F: Documentation/devicetree/bindings/arm/samsung/
|
||||||
F: Documentation/devicetree/bindings/sram/samsung-sram.txt
|
F: Documentation/devicetree/bindings/sram/samsung-sram.txt
|
||||||
|
@ -1813,6 +1824,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson.git
|
||||||
ARM/UNIPHIER ARCHITECTURE
|
ARM/UNIPHIER ARCHITECTURE
|
||||||
M: Masahiro Yamada <yamada.masahiro@socionext.com>
|
M: Masahiro Yamada <yamada.masahiro@socionext.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.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/boot/dts/uniphier*
|
F: arch/arm/boot/dts/uniphier*
|
||||||
F: arch/arm/include/asm/hardware/cache-uniphier.h
|
F: arch/arm/include/asm/hardware/cache-uniphier.h
|
||||||
|
@ -2466,7 +2478,7 @@ F: include/net/bluetooth/
|
||||||
BONDING DRIVER
|
BONDING DRIVER
|
||||||
M: Jay Vosburgh <j.vosburgh@gmail.com>
|
M: Jay Vosburgh <j.vosburgh@gmail.com>
|
||||||
M: Veaceslav Falico <vfalico@gmail.com>
|
M: Veaceslav Falico <vfalico@gmail.com>
|
||||||
M: Andy Gospodarek <gospo@cumulusnetworks.com>
|
M: Andy Gospodarek <andy@greyhouse.net>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
W: http://sourceforge.net/projects/bonding/
|
W: http://sourceforge.net/projects/bonding/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -2481,7 +2493,7 @@ S: Supported
|
||||||
F: kernel/bpf/
|
F: kernel/bpf/
|
||||||
|
|
||||||
BROADCOM B44 10/100 ETHERNET DRIVER
|
BROADCOM B44 10/100 ETHERNET DRIVER
|
||||||
M: Gary Zambrano <zambrano@broadcom.com>
|
M: Michael Chan <michael.chan@broadcom.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/broadcom/b44.*
|
F: drivers/net/ethernet/broadcom/b44.*
|
||||||
|
@ -3229,7 +3241,7 @@ F: kernel/cpuset.c
|
||||||
CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
|
CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
|
||||||
M: Johannes Weiner <hannes@cmpxchg.org>
|
M: Johannes Weiner <hannes@cmpxchg.org>
|
||||||
M: Michal Hocko <mhocko@kernel.org>
|
M: Michal Hocko <mhocko@kernel.org>
|
||||||
M: Vladimir Davydov <vdavydov@virtuozzo.com>
|
M: Vladimir Davydov <vdavydov.dev@gmail.com>
|
||||||
L: cgroups@vger.kernel.org
|
L: cgroups@vger.kernel.org
|
||||||
L: linux-mm@kvack.org
|
L: linux-mm@kvack.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -3250,7 +3262,7 @@ S: Maintained
|
||||||
F: drivers/net/wan/cosa*
|
F: drivers/net/wan/cosa*
|
||||||
|
|
||||||
CPMAC ETHERNET DRIVER
|
CPMAC ETHERNET DRIVER
|
||||||
M: Florian Fainelli <florian@openwrt.org>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/ti/cpmac.c
|
F: drivers/net/ethernet/ti/cpmac.c
|
||||||
|
@ -4516,6 +4528,12 @@ L: linux-edac@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/edac/sb_edac.c
|
F: drivers/edac/sb_edac.c
|
||||||
|
|
||||||
|
EDAC-SKYLAKE
|
||||||
|
M: Tony Luck <tony.luck@intel.com>
|
||||||
|
L: linux-edac@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/edac/skx_edac.c
|
||||||
|
|
||||||
EDAC-XGENE
|
EDAC-XGENE
|
||||||
APPLIED MICRO (APM) X-GENE SOC EDAC
|
APPLIED MICRO (APM) X-GENE SOC EDAC
|
||||||
M: Loc Ho <lho@apm.com>
|
M: Loc Ho <lho@apm.com>
|
||||||
|
@ -6093,7 +6111,7 @@ S: Supported
|
||||||
F: drivers/cpufreq/intel_pstate.c
|
F: drivers/cpufreq/intel_pstate.c
|
||||||
|
|
||||||
INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
|
INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
|
||||||
M: Maik Broemme <mbroemme@plusserver.de>
|
M: Maik Broemme <mbroemme@libmpq.org>
|
||||||
L: linux-fbdev@vger.kernel.org
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/fb/intelfb.txt
|
F: Documentation/fb/intelfb.txt
|
||||||
|
@ -7456,7 +7474,8 @@ F: Documentation/devicetree/bindings/sound/max9860.txt
|
||||||
F: sound/soc/codecs/max9860.*
|
F: sound/soc/codecs/max9860.*
|
||||||
|
|
||||||
MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
|
MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
|
||||||
M: Krzysztof Kozlowski <k.kozlowski@samsung.com>
|
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
|
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/power/max14577_charger.c
|
F: drivers/power/max14577_charger.c
|
||||||
|
@ -7472,7 +7491,8 @@ F: include/dt-bindings/*/*max77802.h
|
||||||
|
|
||||||
MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
|
MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
|
||||||
M: Chanwoo Choi <cw00.choi@samsung.com>
|
M: Chanwoo Choi <cw00.choi@samsung.com>
|
||||||
M: Krzysztof Kozlowski <k.kozlowski@samsung.com>
|
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
|
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/*/max14577*.c
|
F: drivers/*/max14577*.c
|
||||||
|
@ -7669,7 +7689,7 @@ L: linux-rdma@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: https://github.com/SoftRoCE/rxe-dev/wiki/rxe-dev:-Home
|
W: https://github.com/SoftRoCE/rxe-dev/wiki/rxe-dev:-Home
|
||||||
Q: http://patchwork.kernel.org/project/linux-rdma/list/
|
Q: http://patchwork.kernel.org/project/linux-rdma/list/
|
||||||
F: drivers/infiniband/hw/rxe/
|
F: drivers/infiniband/sw/rxe/
|
||||||
F: include/uapi/rdma/rdma_user_rxe.h
|
F: include/uapi/rdma/rdma_user_rxe.h
|
||||||
|
|
||||||
MEMBARRIER SUPPORT
|
MEMBARRIER SUPPORT
|
||||||
|
@ -8164,6 +8184,15 @@ S: Maintained
|
||||||
W: https://fedorahosted.org/dropwatch/
|
W: https://fedorahosted.org/dropwatch/
|
||||||
F: net/core/drop_monitor.c
|
F: net/core/drop_monitor.c
|
||||||
|
|
||||||
|
NETWORKING [DSA]
|
||||||
|
M: Andrew Lunn <andrew@lunn.ch>
|
||||||
|
M: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
|
||||||
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
|
S: Maintained
|
||||||
|
F: net/dsa/
|
||||||
|
F: include/net/dsa.h
|
||||||
|
F: drivers/net/dsa/
|
||||||
|
|
||||||
NETWORKING [GENERAL]
|
NETWORKING [GENERAL]
|
||||||
M: "David S. Miller" <davem@davemloft.net>
|
M: "David S. Miller" <davem@davemloft.net>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
|
@ -8739,7 +8768,7 @@ F: drivers/oprofile/
|
||||||
F: include/linux/oprofile.h
|
F: include/linux/oprofile.h
|
||||||
|
|
||||||
ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
|
ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
|
||||||
M: Mark Fasheh <mfasheh@suse.com>
|
M: Mark Fasheh <mfasheh@versity.com>
|
||||||
M: Joel Becker <jlbec@evilplan.org>
|
M: Joel Becker <jlbec@evilplan.org>
|
||||||
L: ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
|
L: ocfs2-devel@oss.oracle.com (moderated for non-subscribers)
|
||||||
W: http://ocfs2.wiki.kernel.org
|
W: http://ocfs2.wiki.kernel.org
|
||||||
|
@ -9253,7 +9282,7 @@ F: drivers/pinctrl/sh-pfc/
|
||||||
|
|
||||||
PIN CONTROLLER - SAMSUNG
|
PIN CONTROLLER - SAMSUNG
|
||||||
M: Tomasz Figa <tomasz.figa@gmail.com>
|
M: Tomasz Figa <tomasz.figa@gmail.com>
|
||||||
M: Krzysztof Kozlowski <k.kozlowski@samsung.com>
|
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
M: Sylwester Nawrocki <s.nawrocki@samsung.com>
|
M: Sylwester Nawrocki <s.nawrocki@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)
|
||||||
|
@ -10186,7 +10215,7 @@ S: Maintained
|
||||||
F: drivers/platform/x86/samsung-laptop.c
|
F: drivers/platform/x86/samsung-laptop.c
|
||||||
|
|
||||||
SAMSUNG AUDIO (ASoC) DRIVERS
|
SAMSUNG AUDIO (ASoC) DRIVERS
|
||||||
M: Krzysztof Kozlowski <k.kozlowski@samsung.com>
|
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
M: Sangbeom Kim <sbkim73@samsung.com>
|
M: Sangbeom Kim <sbkim73@samsung.com>
|
||||||
M: Sylwester Nawrocki <s.nawrocki@samsung.com>
|
M: Sylwester Nawrocki <s.nawrocki@samsung.com>
|
||||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||||
|
@ -10201,7 +10230,8 @@ F: drivers/video/fbdev/s3c-fb.c
|
||||||
|
|
||||||
SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
|
SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
|
||||||
M: Sangbeom Kim <sbkim73@samsung.com>
|
M: Sangbeom Kim <sbkim73@samsung.com>
|
||||||
M: Krzysztof Kozlowski <k.kozlowski@samsung.com>
|
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
|
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
L: linux-samsung-soc@vger.kernel.org
|
L: linux-samsung-soc@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
@ -10260,6 +10290,17 @@ S: Supported
|
||||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||||
F: drivers/clk/samsung/
|
F: drivers/clk/samsung/
|
||||||
|
|
||||||
|
SAMSUNG SPI DRIVERS
|
||||||
|
M: Kukjin Kim <kgene@kernel.org>
|
||||||
|
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||||
|
M: Andi Shyti <andi.shyti@samsung.com>
|
||||||
|
L: linux-spi@vger.kernel.org
|
||||||
|
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/spi/spi-samsung.txt
|
||||||
|
F: drivers/spi/spi-s3c*
|
||||||
|
F: include/linux/platform_data/spi-s3c64xx.h
|
||||||
|
|
||||||
SAMSUNG SXGBE DRIVERS
|
SAMSUNG SXGBE DRIVERS
|
||||||
M: Byungho An <bh74.an@samsung.com>
|
M: Byungho An <bh74.an@samsung.com>
|
||||||
M: Girish K S <ks.giri@samsung.com>
|
M: Girish K S <ks.giri@samsung.com>
|
||||||
|
@ -11246,12 +11287,8 @@ S: Odd Fixes
|
||||||
F: drivers/staging/vt665?/
|
F: drivers/staging/vt665?/
|
||||||
|
|
||||||
STAGING - WILC1000 WIFI DRIVER
|
STAGING - WILC1000 WIFI DRIVER
|
||||||
M: Johnny Kim <johnny.kim@atmel.com>
|
M: Aditya Shankar <aditya.shankar@microchip.com>
|
||||||
M: Austin Shin <austin.shin@atmel.com>
|
M: Ganesh Krishna <ganesh.krishna@microchip.com>
|
||||||
M: Chris Park <chris.park@atmel.com>
|
|
||||||
M: Tony Cho <tony.cho@atmel.com>
|
|
||||||
M: Glen Lee <glen.lee@atmel.com>
|
|
||||||
M: Leo Kim <leo.kim@atmel.com>
|
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/staging/wilc1000/
|
F: drivers/staging/wilc1000/
|
||||||
|
@ -11619,7 +11656,7 @@ F: Documentation/devicetree/bindings/thermal/
|
||||||
THERMAL/CPU_COOLING
|
THERMAL/CPU_COOLING
|
||||||
M: Amit Daniel Kachhap <amit.kachhap@gmail.com>
|
M: Amit Daniel Kachhap <amit.kachhap@gmail.com>
|
||||||
M: Viresh Kumar <viresh.kumar@linaro.org>
|
M: Viresh Kumar <viresh.kumar@linaro.org>
|
||||||
M: Javi Merino <javi.merino@arm.com>
|
M: Javi Merino <javi.merino@kernel.org>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/thermal/cpu-cooling-api.txt
|
F: Documentation/thermal/cpu-cooling-api.txt
|
||||||
|
@ -12580,7 +12617,7 @@ F: include/linux/if_*vlan.h
|
||||||
F: net/8021q/
|
F: net/8021q/
|
||||||
|
|
||||||
VLYNQ BUS
|
VLYNQ BUS
|
||||||
M: Florian Fainelli <florian@openwrt.org>
|
M: Florian Fainelli <f.fainelli@gmail.com>
|
||||||
L: openwrt-devel@lists.openwrt.org (subscribers-only)
|
L: openwrt-devel@lists.openwrt.org (subscribers-only)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/vlynq/vlynq.c
|
F: drivers/vlynq/vlynq.c
|
||||||
|
|
9
Makefile
9
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 4
|
VERSION = 4
|
||||||
PATCHLEVEL = 8
|
PATCHLEVEL = 8
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc1
|
EXTRAVERSION =
|
||||||
NAME = Psychotic Stoned Sheep
|
NAME = Psychotic Stoned Sheep
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -635,13 +635,6 @@ endif
|
||||||
# Tell gcc to never replace conditional load with a non-conditional one
|
# Tell gcc to never replace conditional load with a non-conditional one
|
||||||
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
KBUILD_CFLAGS += $(call cc-option,--param=allow-store-data-races=0)
|
||||||
|
|
||||||
PHONY += gcc-plugins
|
|
||||||
gcc-plugins: scripts_basic
|
|
||||||
ifdef CONFIG_GCC_PLUGINS
|
|
||||||
$(Q)$(MAKE) $(build)=scripts/gcc-plugins
|
|
||||||
endif
|
|
||||||
@:
|
|
||||||
|
|
||||||
include scripts/Makefile.gcc-plugins
|
include scripts/Makefile.gcc-plugins
|
||||||
|
|
||||||
ifdef CONFIG_READABLE_ASM
|
ifdef CONFIG_READABLE_ASM
|
||||||
|
|
20
arch/Kconfig
20
arch/Kconfig
|
@ -336,17 +336,6 @@ config HAVE_ARCH_SECCOMP_FILTER
|
||||||
results in the system call being skipped immediately.
|
results in the system call being skipped immediately.
|
||||||
- seccomp syscall wired up
|
- seccomp syscall wired up
|
||||||
|
|
||||||
For best performance, an arch should use seccomp_phase1 and
|
|
||||||
seccomp_phase2 directly. It should call seccomp_phase1 for all
|
|
||||||
syscalls if TIF_SECCOMP is set, but seccomp_phase1 does not
|
|
||||||
need to be called from a ptrace-safe context. It must then
|
|
||||||
call seccomp_phase2 if seccomp_phase1 returns anything other
|
|
||||||
than SECCOMP_PHASE1_OK or SECCOMP_PHASE1_SKIP.
|
|
||||||
|
|
||||||
As an additional optimization, an arch may provide seccomp_data
|
|
||||||
directly to seccomp_phase1; this avoids multiple calls
|
|
||||||
to the syscall_xyz helpers for every syscall.
|
|
||||||
|
|
||||||
config SECCOMP_FILTER
|
config SECCOMP_FILTER
|
||||||
def_bool y
|
def_bool y
|
||||||
depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
|
depends on HAVE_ARCH_SECCOMP_FILTER && SECCOMP && NET
|
||||||
|
@ -461,6 +450,15 @@ config CC_STACKPROTECTOR_STRONG
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
|
config HAVE_ARCH_WITHIN_STACK_FRAMES
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
An architecture should select this if it can walk the kernel stack
|
||||||
|
frames to determine if an object is part of either the arguments
|
||||||
|
or local variables (i.e. that it excludes saved return addresses,
|
||||||
|
and similar) by implementing an inline arch_within_stack_frames(),
|
||||||
|
which is used by CONFIG_HARDENED_USERCOPY.
|
||||||
|
|
||||||
config HAVE_CONTEXT_TRACKING
|
config HAVE_CONTEXT_TRACKING
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
@ -371,14 +371,6 @@ __copy_tofrom_user_nocheck(void *to, const void *from, long len)
|
||||||
return __cu_len;
|
return __cu_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline long
|
|
||||||
__copy_tofrom_user(void *to, const void *from, long len, const void __user *validate)
|
|
||||||
{
|
|
||||||
if (__access_ok((unsigned long)validate, len, get_fs()))
|
|
||||||
len = __copy_tofrom_user_nocheck(to, from, len);
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define __copy_to_user(to, from, n) \
|
#define __copy_to_user(to, from, n) \
|
||||||
({ \
|
({ \
|
||||||
__chk_user_ptr(to); \
|
__chk_user_ptr(to); \
|
||||||
|
@ -393,17 +385,22 @@ __copy_tofrom_user(void *to, const void *from, long len, const void __user *vali
|
||||||
#define __copy_to_user_inatomic __copy_to_user
|
#define __copy_to_user_inatomic __copy_to_user
|
||||||
#define __copy_from_user_inatomic __copy_from_user
|
#define __copy_from_user_inatomic __copy_from_user
|
||||||
|
|
||||||
|
|
||||||
extern inline long
|
extern inline long
|
||||||
copy_to_user(void __user *to, const void *from, long n)
|
copy_to_user(void __user *to, const void *from, long n)
|
||||||
{
|
{
|
||||||
return __copy_tofrom_user((__force void *)to, from, n, to);
|
if (likely(__access_ok((unsigned long)to, n, get_fs())))
|
||||||
|
n = __copy_tofrom_user_nocheck((__force void *)to, from, n);
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline long
|
extern inline long
|
||||||
copy_from_user(void *to, const void __user *from, long n)
|
copy_from_user(void *to, const void __user *from, long n)
|
||||||
{
|
{
|
||||||
return __copy_tofrom_user(to, (__force void *)from, n, from);
|
if (likely(__access_ok((unsigned long)from, n, get_fs())))
|
||||||
|
n = __copy_tofrom_user_nocheck(to, (__force void *)from, n);
|
||||||
|
else
|
||||||
|
memset(to, 0, n);
|
||||||
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void __do_clear_user(void);
|
extern void __do_clear_user(void);
|
||||||
|
|
|
@ -142,7 +142,7 @@
|
||||||
|
|
||||||
#ifdef CONFIG_ARC_CURR_IN_REG
|
#ifdef CONFIG_ARC_CURR_IN_REG
|
||||||
; Retrieve orig r25 and save it with rest of callee_regs
|
; Retrieve orig r25 and save it with rest of callee_regs
|
||||||
ld.as r12, [r12, PT_user_r25]
|
ld r12, [r12, PT_user_r25]
|
||||||
PUSH r12
|
PUSH r12
|
||||||
#else
|
#else
|
||||||
PUSH r25
|
PUSH r25
|
||||||
|
@ -198,7 +198,7 @@
|
||||||
|
|
||||||
; SP is back to start of pt_regs
|
; SP is back to start of pt_regs
|
||||||
#ifdef CONFIG_ARC_CURR_IN_REG
|
#ifdef CONFIG_ARC_CURR_IN_REG
|
||||||
st.as r12, [sp, PT_user_r25]
|
st r12, [sp, PT_user_r25]
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
|
@ -188,10 +188,10 @@ static inline int arch_irqs_disabled(void)
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro IRQ_ENABLE scratch
|
.macro IRQ_ENABLE scratch
|
||||||
|
TRACE_ASM_IRQ_ENABLE
|
||||||
lr \scratch, [status32]
|
lr \scratch, [status32]
|
||||||
or \scratch, \scratch, (STATUS_E1_MASK | STATUS_E2_MASK)
|
or \scratch, \scratch, (STATUS_E1_MASK | STATUS_E2_MASK)
|
||||||
flag \scratch
|
flag \scratch
|
||||||
TRACE_ASM_IRQ_ENABLE
|
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
|
@ -280,7 +280,7 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
|
||||||
|
|
||||||
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
|
#define pte_page(pte) pfn_to_page(pte_pfn(pte))
|
||||||
#define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot)
|
#define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot)
|
||||||
#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot)))
|
#define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
|
||||||
|
|
||||||
/* Don't use virt_to_pfn for macros below: could cause truncations for PAE40*/
|
/* Don't use virt_to_pfn for macros below: could cause truncations for PAE40*/
|
||||||
#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT)
|
#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT)
|
||||||
|
|
|
@ -83,7 +83,10 @@
|
||||||
"2: ;nop\n" \
|
"2: ;nop\n" \
|
||||||
" .section .fixup, \"ax\"\n" \
|
" .section .fixup, \"ax\"\n" \
|
||||||
" .align 4\n" \
|
" .align 4\n" \
|
||||||
"3: mov %0, %3\n" \
|
"3: # return -EFAULT\n" \
|
||||||
|
" mov %0, %3\n" \
|
||||||
|
" # zero out dst ptr\n" \
|
||||||
|
" mov %1, 0\n" \
|
||||||
" j 2b\n" \
|
" j 2b\n" \
|
||||||
" .previous\n" \
|
" .previous\n" \
|
||||||
" .section __ex_table, \"a\"\n" \
|
" .section __ex_table, \"a\"\n" \
|
||||||
|
@ -101,7 +104,11 @@
|
||||||
"2: ;nop\n" \
|
"2: ;nop\n" \
|
||||||
" .section .fixup, \"ax\"\n" \
|
" .section .fixup, \"ax\"\n" \
|
||||||
" .align 4\n" \
|
" .align 4\n" \
|
||||||
"3: mov %0, %3\n" \
|
"3: # return -EFAULT\n" \
|
||||||
|
" mov %0, %3\n" \
|
||||||
|
" # zero out dst ptr\n" \
|
||||||
|
" mov %1, 0\n" \
|
||||||
|
" mov %R1, 0\n" \
|
||||||
" j 2b\n" \
|
" j 2b\n" \
|
||||||
" .previous\n" \
|
" .previous\n" \
|
||||||
" .section __ex_table, \"a\"\n" \
|
" .section __ex_table, \"a\"\n" \
|
||||||
|
|
|
@ -13,8 +13,15 @@
|
||||||
|
|
||||||
/* Machine specific ELF Hdr flags */
|
/* Machine specific ELF Hdr flags */
|
||||||
#define EF_ARC_OSABI_MSK 0x00000f00
|
#define EF_ARC_OSABI_MSK 0x00000f00
|
||||||
#define EF_ARC_OSABI_ORIG 0x00000000 /* MUST be zero for back-compat */
|
|
||||||
#define EF_ARC_OSABI_CURRENT 0x00000300 /* v3 (no legacy syscalls) */
|
#define EF_ARC_OSABI_V3 0x00000300 /* v3 (no legacy syscalls) */
|
||||||
|
#define EF_ARC_OSABI_V4 0x00000400 /* v4 (64bit data any reg align) */
|
||||||
|
|
||||||
|
#if __GNUC__ < 6
|
||||||
|
#define EF_ARC_OSABI_CURRENT EF_ARC_OSABI_V3
|
||||||
|
#else
|
||||||
|
#define EF_ARC_OSABI_CURRENT EF_ARC_OSABI_V4
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef unsigned long elf_greg_t;
|
typedef unsigned long elf_greg_t;
|
||||||
typedef unsigned long elf_fpregset_t;
|
typedef unsigned long elf_fpregset_t;
|
||||||
|
|
|
@ -28,6 +28,7 @@ extern void __muldf3(void);
|
||||||
extern void __divdf3(void);
|
extern void __divdf3(void);
|
||||||
extern void __floatunsidf(void);
|
extern void __floatunsidf(void);
|
||||||
extern void __floatunsisf(void);
|
extern void __floatunsisf(void);
|
||||||
|
extern void __udivdi3(void);
|
||||||
|
|
||||||
EXPORT_SYMBOL(__ashldi3);
|
EXPORT_SYMBOL(__ashldi3);
|
||||||
EXPORT_SYMBOL(__ashrdi3);
|
EXPORT_SYMBOL(__ashrdi3);
|
||||||
|
@ -45,6 +46,7 @@ EXPORT_SYMBOL(__muldf3);
|
||||||
EXPORT_SYMBOL(__divdf3);
|
EXPORT_SYMBOL(__divdf3);
|
||||||
EXPORT_SYMBOL(__floatunsidf);
|
EXPORT_SYMBOL(__floatunsidf);
|
||||||
EXPORT_SYMBOL(__floatunsisf);
|
EXPORT_SYMBOL(__floatunsisf);
|
||||||
|
EXPORT_SYMBOL(__udivdi3);
|
||||||
|
|
||||||
/* ARC optimised assembler routines */
|
/* ARC optimised assembler routines */
|
||||||
EXPORT_SYMBOL(memset);
|
EXPORT_SYMBOL(memset);
|
||||||
|
|
|
@ -199,7 +199,7 @@ int elf_check_arch(const struct elf32_hdr *x)
|
||||||
}
|
}
|
||||||
|
|
||||||
eflags = x->e_flags;
|
eflags = x->e_flags;
|
||||||
if ((eflags & EF_ARC_OSABI_MSK) < EF_ARC_OSABI_CURRENT) {
|
if ((eflags & EF_ARC_OSABI_MSK) != EF_ARC_OSABI_CURRENT) {
|
||||||
pr_err("ABI mismatch - you need newer toolchain\n");
|
pr_err("ABI mismatch - you need newer toolchain\n");
|
||||||
force_sigsegv(SIGSEGV, current);
|
force_sigsegv(SIGSEGV, current);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -291,8 +291,10 @@ static char *arc_extn_mumbojumbo(int cpu_id, char *buf, int len)
|
||||||
cpu->dccm.base_addr, TO_KB(cpu->dccm.sz),
|
cpu->dccm.base_addr, TO_KB(cpu->dccm.sz),
|
||||||
cpu->iccm.base_addr, TO_KB(cpu->iccm.sz));
|
cpu->iccm.base_addr, TO_KB(cpu->iccm.sz));
|
||||||
|
|
||||||
n += scnprintf(buf + n, len - n,
|
n += scnprintf(buf + n, len - n, "OS ABI [v%d]\t: %s\n",
|
||||||
"OS ABI [v3]\t: no-legacy-syscalls\n");
|
EF_ARC_OSABI_CURRENT >> 8,
|
||||||
|
EF_ARC_OSABI_CURRENT == EF_ARC_OSABI_V3 ?
|
||||||
|
"no-legacy-syscalls" : "64-bit data any register aligned");
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
|
@ -921,6 +921,15 @@ void arc_cache_init(void)
|
||||||
|
|
||||||
printk(arc_cache_mumbojumbo(0, str, sizeof(str)));
|
printk(arc_cache_mumbojumbo(0, str, sizeof(str)));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Only master CPU needs to execute rest of function:
|
||||||
|
* - Assume SMP so all cores will have same cache config so
|
||||||
|
* any geomtry checks will be same for all
|
||||||
|
* - IOC setup / dma callbacks only need to be setup once
|
||||||
|
*/
|
||||||
|
if (cpu)
|
||||||
|
return;
|
||||||
|
|
||||||
if (IS_ENABLED(CONFIG_ARC_HAS_ICACHE)) {
|
if (IS_ENABLED(CONFIG_ARC_HAS_ICACHE)) {
|
||||||
struct cpuinfo_arc_cache *ic = &cpuinfo_arc700[cpu].icache;
|
struct cpuinfo_arc_cache *ic = &cpuinfo_arc700[cpu].icache;
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ void *kmap(struct page *page)
|
||||||
|
|
||||||
return kmap_high(page);
|
return kmap_high(page);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(kmap);
|
||||||
|
|
||||||
void *kmap_atomic(struct page *page)
|
void *kmap_atomic(struct page *page)
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,6 +35,7 @@ config ARM
|
||||||
select HARDIRQS_SW_RESEND
|
select HARDIRQS_SW_RESEND
|
||||||
select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT)
|
select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT)
|
||||||
select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
|
select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
|
||||||
|
select HAVE_ARCH_HARDENED_USERCOPY
|
||||||
select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU
|
select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU
|
||||||
select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU
|
select HAVE_ARCH_KGDB if !CPU_ENDIAN_BE32 && MMU
|
||||||
select HAVE_ARCH_MMAP_RND_BITS if MMU
|
select HAVE_ARCH_MMAP_RND_BITS if MMU
|
||||||
|
|
|
@ -260,12 +260,14 @@ machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
|
||||||
platdirs := $(patsubst %,arch/arm/plat-%/,$(sort $(plat-y)))
|
platdirs := $(patsubst %,arch/arm/plat-%/,$(sort $(plat-y)))
|
||||||
|
|
||||||
ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
|
ifneq ($(CONFIG_ARCH_MULTIPLATFORM),y)
|
||||||
|
ifneq ($(CONFIG_ARM_SINGLE_ARMV7M),y)
|
||||||
ifeq ($(KBUILD_SRC),)
|
ifeq ($(KBUILD_SRC),)
|
||||||
KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs))
|
KBUILD_CPPFLAGS += $(patsubst %,-I%include,$(machdirs) $(platdirs))
|
||||||
else
|
else
|
||||||
KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
|
KBUILD_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs) $(platdirs))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
export TEXT_OFFSET GZFLAGS MMUEXT
|
export TEXT_OFFSET GZFLAGS MMUEXT
|
||||||
|
|
||||||
|
|
|
@ -779,7 +779,7 @@ __armv7_mmu_cache_on:
|
||||||
orrne r0, r0, #1 @ MMU enabled
|
orrne r0, r0, #1 @ MMU enabled
|
||||||
movne r1, #0xfffffffd @ domain 0 = client
|
movne r1, #0xfffffffd @ domain 0 = client
|
||||||
bic r6, r6, #1 << 31 @ 32-bit translation system
|
bic r6, r6, #1 << 31 @ 32-bit translation system
|
||||||
bic r6, r6, #3 << 0 @ use only ttbr0
|
bic r6, r6, #(7 << 0) | (1 << 4) @ use only ttbr0
|
||||||
mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer
|
mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer
|
||||||
mcrne p15, 0, r1, c3, c0, 0 @ load domain access control
|
mcrne p15, 0, r1, c3, c0, 0 @ load domain access control
|
||||||
mcrne p15, 0, r6, c2, c0, 2 @ load ttb control
|
mcrne p15, 0, r6, c2, c0, 2 @ load ttb control
|
||||||
|
|
|
@ -226,7 +226,7 @@
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
elm_id = <&elm>;
|
ti,elm-id = <&elm>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,7 @@
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
elm_id = <&elm>;
|
ti,elm-id = <&elm>;
|
||||||
|
|
||||||
/* MTD partition table */
|
/* MTD partition table */
|
||||||
partition@0 {
|
partition@0 {
|
||||||
|
|
|
@ -197,7 +197,7 @@
|
||||||
gpmc,wr-access-ns = <30>;
|
gpmc,wr-access-ns = <30>;
|
||||||
gpmc,wr-data-mux-bus-ns = <0>;
|
gpmc,wr-data-mux-bus-ns = <0>;
|
||||||
|
|
||||||
elm_id = <&elm>;
|
ti,elm-id = <&elm>;
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
|
@ -70,13 +70,12 @@
|
||||||
* associativity as these may be erroneously set
|
* associativity as these may be erroneously set
|
||||||
* up by boot loader(s).
|
* up by boot loader(s).
|
||||||
*/
|
*/
|
||||||
cache-size = <1048576>; // 1MB
|
cache-size = <131072>; // 128KB
|
||||||
cache-sets = <4096>;
|
cache-sets = <512>;
|
||||||
cache-line-size = <32>;
|
cache-line-size = <32>;
|
||||||
arm,parity-disable;
|
arm,parity-disable;
|
||||||
arm,tag-latency = <1>;
|
arm,tag-latency = <1 1 1>;
|
||||||
arm,data-latency = <1 1>;
|
arm,data-latency = <1 1 1>;
|
||||||
arm,dirty-latency = <1>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
scu: scu@1f000000 {
|
scu: scu@1f000000 {
|
||||||
|
|
|
@ -390,12 +390,12 @@
|
||||||
|
|
||||||
port@0 {
|
port@0 {
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
label = "lan1";
|
label = "lan5";
|
||||||
};
|
};
|
||||||
|
|
||||||
port@1 {
|
port@1 {
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
label = "lan2";
|
label = "lan4";
|
||||||
};
|
};
|
||||||
|
|
||||||
port@2 {
|
port@2 {
|
||||||
|
@ -405,12 +405,12 @@
|
||||||
|
|
||||||
port@3 {
|
port@3 {
|
||||||
reg = <3>;
|
reg = <3>;
|
||||||
label = "lan4";
|
label = "lan2";
|
||||||
};
|
};
|
||||||
|
|
||||||
port@4 {
|
port@4 {
|
||||||
reg = <4>;
|
reg = <4>;
|
||||||
label = "lan5";
|
label = "lan1";
|
||||||
};
|
};
|
||||||
|
|
||||||
port@5 {
|
port@5 {
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
/ {
|
/ {
|
||||||
memory {
|
memory {
|
||||||
|
device_type = "memory";
|
||||||
reg = <0 0x10000000>;
|
reg = <0 0x10000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
#include <dt-bindings/clock/bcm2835.h>
|
#include <dt-bindings/clock/bcm2835.h>
|
||||||
#include <dt-bindings/clock/bcm2835-aux.h>
|
#include <dt-bindings/clock/bcm2835-aux.h>
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
#include "skeleton.dtsi"
|
|
||||||
|
|
||||||
/* This include file covers the common peripherals and configuration between
|
/* This include file covers the common peripherals and configuration between
|
||||||
* bcm2835 and bcm2836 implementations, leaving the CPU configuration to
|
* bcm2835 and bcm2836 implementations, leaving the CPU configuration to
|
||||||
|
@ -13,6 +12,8 @@
|
||||||
compatible = "brcm,bcm2835";
|
compatible = "brcm,bcm2835";
|
||||||
model = "BCM2835";
|
model = "BCM2835";
|
||||||
interrupt-parent = <&intc>;
|
interrupt-parent = <&intc>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
bootargs = "earlyprintk console=ttyAMA0";
|
bootargs = "earlyprintk console=ttyAMA0";
|
||||||
|
|
|
@ -447,14 +447,11 @@
|
||||||
samsung,dw-mshc-ciu-div = <3>;
|
samsung,dw-mshc-ciu-div = <3>;
|
||||||
samsung,dw-mshc-sdr-timing = <0 4>;
|
samsung,dw-mshc-sdr-timing = <0 4>;
|
||||||
samsung,dw-mshc-ddr-timing = <0 2>;
|
samsung,dw-mshc-ddr-timing = <0 2>;
|
||||||
samsung,dw-mshc-hs400-timing = <0 2>;
|
|
||||||
samsung,read-strobe-delay = <90>;
|
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_cd>;
|
pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_cd>;
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
cap-mmc-highspeed;
|
cap-mmc-highspeed;
|
||||||
mmc-hs200-1_8v;
|
mmc-hs200-1_8v;
|
||||||
mmc-hs400-1_8v;
|
|
||||||
vmmc-supply = <&ldo20_reg>;
|
vmmc-supply = <&ldo20_reg>;
|
||||||
vqmmc-supply = <&ldo11_reg>;
|
vqmmc-supply = <&ldo11_reg>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -243,7 +243,7 @@
|
||||||
clocks = <&clks IMX6QDL_CLK_SPDIF_GCLK>, <&clks IMX6QDL_CLK_OSC>,
|
clocks = <&clks IMX6QDL_CLK_SPDIF_GCLK>, <&clks IMX6QDL_CLK_OSC>,
|
||||||
<&clks IMX6QDL_CLK_SPDIF>, <&clks IMX6QDL_CLK_ASRC>,
|
<&clks IMX6QDL_CLK_SPDIF>, <&clks IMX6QDL_CLK_ASRC>,
|
||||||
<&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_ESAI_EXTAL>,
|
<&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_ESAI_EXTAL>,
|
||||||
<&clks IMX6QDL_CLK_IPG>, <&clks IMX6QDL_CLK_MLB>,
|
<&clks IMX6QDL_CLK_IPG>, <&clks IMX6QDL_CLK_DUMMY>,
|
||||||
<&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_SPBA>;
|
<&clks IMX6QDL_CLK_DUMMY>, <&clks IMX6QDL_CLK_SPBA>;
|
||||||
clock-names = "core", "rxtx0",
|
clock-names = "core", "rxtx0",
|
||||||
"rxtx1", "rxtx2",
|
"rxtx1", "rxtx2",
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
cd-gpios = <&gpio7 11 GPIO_ACTIVE_LOW>;
|
cd-gpios = <&gpio7 11 GPIO_ACTIVE_LOW>;
|
||||||
no-1-8-v;
|
no-1-8-v;
|
||||||
keep-power-in-suspend;
|
keep-power-in-suspend;
|
||||||
enable-sdio-wakup;
|
wakeup-source;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,7 @@
|
||||||
ti,y-min = /bits/ 16 <0>;
|
ti,y-min = /bits/ 16 <0>;
|
||||||
ti,y-max = /bits/ 16 <0>;
|
ti,y-max = /bits/ 16 <0>;
|
||||||
ti,pressure-max = /bits/ 16 <0>;
|
ti,pressure-max = /bits/ 16 <0>;
|
||||||
ti,x-plat-ohms = /bits/ 16 <400>;
|
ti,x-plate-ohms = /bits/ 16 <400>;
|
||||||
wakeup-source;
|
wakeup-source;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
syscon {
|
syscon {
|
||||||
compatible = "arm,integrator-ap-syscon";
|
compatible = "arm,integrator-ap-syscon", "syscon";
|
||||||
reg = <0x11000000 0x100>;
|
reg = <0x11000000 0x100>;
|
||||||
interrupt-parent = <&pic>;
|
interrupt-parent = <&pic>;
|
||||||
/* These are the logical module IRQs */
|
/* These are the logical module IRQs */
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
syscon {
|
syscon {
|
||||||
compatible = "arm,integrator-cp-syscon";
|
compatible = "arm,integrator-cp-syscon", "syscon";
|
||||||
reg = <0xcb000000 0x100>;
|
reg = <0xcb000000 0x100>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -70,14 +70,6 @@
|
||||||
cpu_on = <0x84000003>;
|
cpu_on = <0x84000003>;
|
||||||
};
|
};
|
||||||
|
|
||||||
psci {
|
|
||||||
compatible = "arm,psci";
|
|
||||||
method = "smc";
|
|
||||||
cpu_suspend = <0x84000001>;
|
|
||||||
cpu_off = <0x84000002>;
|
|
||||||
cpu_on = <0x84000003>;
|
|
||||||
};
|
|
||||||
|
|
||||||
soc {
|
soc {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
|
|
||||||
partition@e0000 {
|
partition@e0000 {
|
||||||
label = "u-boot environment";
|
label = "u-boot environment";
|
||||||
reg = <0xe0000 0x100000>;
|
reg = <0xe0000 0x20000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
partition@100000 {
|
partition@100000 {
|
||||||
|
|
|
@ -116,6 +116,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&pciec {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
&pcie0 {
|
&pcie0 {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
|
@ -35,10 +35,15 @@
|
||||||
ranges = <0 0 0x00000000 0x1000000>; /* CS0: 16MB for NAND */
|
ranges = <0 0 0x00000000 0x1000000>; /* CS0: 16MB for NAND */
|
||||||
|
|
||||||
nand@0,0 {
|
nand@0,0 {
|
||||||
linux,mtd-name = "micron,mt29f4g16abbda3w";
|
compatible = "ti,omap2-nand";
|
||||||
reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
|
reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
|
||||||
|
interrupt-parent = <&gpmc>;
|
||||||
|
interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
|
||||||
|
<1 IRQ_TYPE_NONE>; /* termcount */
|
||||||
|
linux,mtd-name = "micron,mt29f4g16abbda3w";
|
||||||
nand-bus-width = <16>;
|
nand-bus-width = <16>;
|
||||||
ti,nand-ecc-opt = "bch8";
|
ti,nand-ecc-opt = "bch8";
|
||||||
|
rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
|
||||||
gpmc,sync-clk-ps = <0>;
|
gpmc,sync-clk-ps = <0>;
|
||||||
gpmc,cs-on-ns = <0>;
|
gpmc,cs-on-ns = <0>;
|
||||||
gpmc,cs-rd-off-ns = <44>;
|
gpmc,cs-rd-off-ns = <44>;
|
||||||
|
@ -54,10 +59,6 @@
|
||||||
gpmc,wr-access-ns = <40>;
|
gpmc,wr-access-ns = <40>;
|
||||||
gpmc,wr-data-mux-bus-ns = <0>;
|
gpmc,wr-data-mux-bus-ns = <0>;
|
||||||
gpmc,device-width = <2>;
|
gpmc,device-width = <2>;
|
||||||
|
|
||||||
gpmc,page-burst-access-ns = <5>;
|
|
||||||
gpmc,cycle2cycle-delay-ns = <50>;
|
|
||||||
|
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
linux,mtd-name = "micron,mt29f4g16abbda3w";
|
linux,mtd-name = "micron,mt29f4g16abbda3w";
|
||||||
nand-bus-width = <16>;
|
nand-bus-width = <16>;
|
||||||
ti,nand-ecc-opt = "bch8";
|
ti,nand-ecc-opt = "bch8";
|
||||||
|
rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
|
||||||
gpmc,sync-clk-ps = <0>;
|
gpmc,sync-clk-ps = <0>;
|
||||||
gpmc,cs-on-ns = <0>;
|
gpmc,cs-on-ns = <0>;
|
||||||
gpmc,cs-rd-off-ns = <44>;
|
gpmc,cs-rd-off-ns = <44>;
|
||||||
|
|
|
@ -223,7 +223,9 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
&gpmc {
|
&gpmc {
|
||||||
ranges = <0 0 0x00000000 0x20000000>;
|
ranges = <0 0 0x30000000 0x1000000>, /* CS0 */
|
||||||
|
<4 0 0x2b000000 0x1000000>, /* CS4 */
|
||||||
|
<5 0 0x2c000000 0x1000000>; /* CS5 */
|
||||||
|
|
||||||
nand@0,0 {
|
nand@0,0 {
|
||||||
compatible = "ti,omap2-nand";
|
compatible = "ti,omap2-nand";
|
||||||
|
|
|
@ -55,8 +55,6 @@
|
||||||
#include "omap-gpmc-smsc9221.dtsi"
|
#include "omap-gpmc-smsc9221.dtsi"
|
||||||
|
|
||||||
&gpmc {
|
&gpmc {
|
||||||
ranges = <5 0 0x2c000000 0x1000000>; /* CS5 */
|
|
||||||
|
|
||||||
ethernet@gpmc {
|
ethernet@gpmc {
|
||||||
reg = <5 0 0xff>;
|
reg = <5 0 0xff>;
|
||||||
interrupt-parent = <&gpio6>;
|
interrupt-parent = <&gpio6>;
|
||||||
|
|
|
@ -27,8 +27,6 @@
|
||||||
#include "omap-gpmc-smsc9221.dtsi"
|
#include "omap-gpmc-smsc9221.dtsi"
|
||||||
|
|
||||||
&gpmc {
|
&gpmc {
|
||||||
ranges = <5 0 0x2c000000 0x1000000>; /* CS5 */
|
|
||||||
|
|
||||||
ethernet@gpmc {
|
ethernet@gpmc {
|
||||||
reg = <5 0 0xff>;
|
reg = <5 0 0xff>;
|
||||||
interrupt-parent = <&gpio6>;
|
interrupt-parent = <&gpio6>;
|
||||||
|
|
|
@ -15,9 +15,6 @@
|
||||||
#include "omap-gpmc-smsc9221.dtsi"
|
#include "omap-gpmc-smsc9221.dtsi"
|
||||||
|
|
||||||
&gpmc {
|
&gpmc {
|
||||||
ranges = <4 0 0x2b000000 0x1000000>, /* CS4 */
|
|
||||||
<5 0 0x2c000000 0x1000000>; /* CS5 */
|
|
||||||
|
|
||||||
smsc1: ethernet@gpmc {
|
smsc1: ethernet@gpmc {
|
||||||
reg = <5 0 0xff>;
|
reg = <5 0 0xff>;
|
||||||
interrupt-parent = <&gpio6>;
|
interrupt-parent = <&gpio6>;
|
||||||
|
|
|
@ -197,6 +197,8 @@
|
||||||
clock-names = "saradc", "apb_pclk";
|
clock-names = "saradc", "apb_pclk";
|
||||||
interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
#io-channel-cells = <1>;
|
#io-channel-cells = <1>;
|
||||||
|
resets = <&cru SRST_SARADC>;
|
||||||
|
reset-names = "saradc-apb";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -279,6 +279,8 @@
|
||||||
#io-channel-cells = <1>;
|
#io-channel-cells = <1>;
|
||||||
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
|
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
|
||||||
clock-names = "saradc", "apb_pclk";
|
clock-names = "saradc", "apb_pclk";
|
||||||
|
resets = <&cru SRST_SARADC>;
|
||||||
|
reset-names = "saradc-apb";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -399,6 +399,8 @@
|
||||||
#io-channel-cells = <1>;
|
#io-channel-cells = <1>;
|
||||||
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
|
clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
|
||||||
clock-names = "saradc", "apb_pclk";
|
clock-names = "saradc", "apb_pclk";
|
||||||
|
resets = <&cru SRST_SARADC>;
|
||||||
|
reset-names = "saradc-apb";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -550,8 +550,9 @@
|
||||||
interrupt-names = "mmcirq";
|
interrupt-names = "mmcirq";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_mmc0>;
|
pinctrl-0 = <&pinctrl_mmc0>;
|
||||||
clock-names = "mmc";
|
clock-names = "mmc", "icn";
|
||||||
clocks = <&clk_s_c0_flexgen CLK_MMC_0>;
|
clocks = <&clk_s_c0_flexgen CLK_MMC_0>,
|
||||||
|
<&clk_s_c0_flexgen CLK_RX_ICN_HVA>;
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
non-removable;
|
non-removable;
|
||||||
};
|
};
|
||||||
|
@ -565,8 +566,9 @@
|
||||||
interrupt-names = "mmcirq";
|
interrupt-names = "mmcirq";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_sd1>;
|
pinctrl-0 = <&pinctrl_sd1>;
|
||||||
clock-names = "mmc";
|
clock-names = "mmc", "icn";
|
||||||
clocks = <&clk_s_c0_flexgen CLK_MMC_1>;
|
clocks = <&clk_s_c0_flexgen CLK_MMC_1>,
|
||||||
|
<&clk_s_c0_flexgen CLK_RX_ICN_HVA>;
|
||||||
resets = <&softreset STIH407_MMC1_SOFTRESET>;
|
resets = <&softreset STIH407_MMC1_SOFTRESET>;
|
||||||
bus-width = <4>;
|
bus-width = <4>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -41,7 +41,8 @@
|
||||||
compatible = "st,st-ohci-300x";
|
compatible = "st,st-ohci-300x";
|
||||||
reg = <0x9a03c00 0x100>;
|
reg = <0x9a03c00 0x100>;
|
||||||
interrupts = <GIC_SPI 180 IRQ_TYPE_NONE>;
|
interrupts = <GIC_SPI 180 IRQ_TYPE_NONE>;
|
||||||
clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>;
|
clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>,
|
||||||
|
<&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>;
|
||||||
resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>,
|
resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>,
|
||||||
<&softreset STIH407_USB2_PORT0_SOFTRESET>;
|
<&softreset STIH407_USB2_PORT0_SOFTRESET>;
|
||||||
reset-names = "power", "softreset";
|
reset-names = "power", "softreset";
|
||||||
|
@ -57,7 +58,8 @@
|
||||||
interrupts = <GIC_SPI 151 IRQ_TYPE_NONE>;
|
interrupts = <GIC_SPI 151 IRQ_TYPE_NONE>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usb0>;
|
pinctrl-0 = <&pinctrl_usb0>;
|
||||||
clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>;
|
clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>,
|
||||||
|
<&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>;
|
||||||
resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>,
|
resets = <&powerdown STIH407_USB2_PORT0_POWERDOWN>,
|
||||||
<&softreset STIH407_USB2_PORT0_SOFTRESET>;
|
<&softreset STIH407_USB2_PORT0_SOFTRESET>;
|
||||||
reset-names = "power", "softreset";
|
reset-names = "power", "softreset";
|
||||||
|
@ -71,7 +73,8 @@
|
||||||
compatible = "st,st-ohci-300x";
|
compatible = "st,st-ohci-300x";
|
||||||
reg = <0x9a83c00 0x100>;
|
reg = <0x9a83c00 0x100>;
|
||||||
interrupts = <GIC_SPI 181 IRQ_TYPE_NONE>;
|
interrupts = <GIC_SPI 181 IRQ_TYPE_NONE>;
|
||||||
clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>;
|
clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>,
|
||||||
|
<&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>;
|
||||||
resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>,
|
resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>,
|
||||||
<&softreset STIH407_USB2_PORT1_SOFTRESET>;
|
<&softreset STIH407_USB2_PORT1_SOFTRESET>;
|
||||||
reset-names = "power", "softreset";
|
reset-names = "power", "softreset";
|
||||||
|
@ -87,7 +90,8 @@
|
||||||
interrupts = <GIC_SPI 153 IRQ_TYPE_NONE>;
|
interrupts = <GIC_SPI 153 IRQ_TYPE_NONE>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usb1>;
|
pinctrl-0 = <&pinctrl_usb1>;
|
||||||
clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>;
|
clocks = <&clk_s_c0_flexgen CLK_TX_ICN_DISP_0>,
|
||||||
|
<&clk_s_c0_flexgen CLK_RX_ICN_DISP_0>;
|
||||||
resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>,
|
resets = <&powerdown STIH407_USB2_PORT1_POWERDOWN>,
|
||||||
<&softreset STIH407_USB2_PORT1_SOFTRESET>;
|
<&softreset STIH407_USB2_PORT1_SOFTRESET>;
|
||||||
reset-names = "power", "softreset";
|
reset-names = "power", "softreset";
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
trips {
|
trips {
|
||||||
cpu_alert0: cpu_alert0 {
|
cpu_alert0: cpu_alert0 {
|
||||||
/* milliCelsius */
|
/* milliCelsius */
|
||||||
temperature = <850000>;
|
temperature = <85000>;
|
||||||
hysteresis = <2000>;
|
hysteresis = <2000>;
|
||||||
type = "passive";
|
type = "passive";
|
||||||
};
|
};
|
||||||
|
|
|
@ -897,7 +897,7 @@
|
||||||
palmas: tps65913@58 {
|
palmas: tps65913@58 {
|
||||||
compatible = "ti,palmas";
|
compatible = "ti,palmas";
|
||||||
reg = <0x58>;
|
reg = <0x58>;
|
||||||
interrupts = <0 86 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
|
|
@ -802,7 +802,7 @@
|
||||||
palmas: pmic@58 {
|
palmas: pmic@58 {
|
||||||
compatible = "ti,palmas";
|
compatible = "ti,palmas";
|
||||||
reg = <0x58>;
|
reg = <0x58>;
|
||||||
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
|
|
@ -63,7 +63,7 @@
|
||||||
palmas: pmic@58 {
|
palmas: pmic@58 {
|
||||||
compatible = "ti,palmas";
|
compatible = "ti,palmas";
|
||||||
reg = <0x58>;
|
reg = <0x58>;
|
||||||
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
||||||
#interrupt-cells = <2>;
|
#interrupt-cells = <2>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
|
|
|
@ -140,7 +140,7 @@ static struct locomo_dev_info locomo_devices[] = {
|
||||||
|
|
||||||
static void locomo_handler(struct irq_desc *desc)
|
static void locomo_handler(struct irq_desc *desc)
|
||||||
{
|
{
|
||||||
struct locomo *lchip = irq_desc_get_chip_data(desc);
|
struct locomo *lchip = irq_desc_get_handler_data(desc);
|
||||||
int req, i;
|
int req, i;
|
||||||
|
|
||||||
/* Acknowledge the parent IRQ */
|
/* Acknowledge the parent IRQ */
|
||||||
|
@ -200,8 +200,7 @@ static void locomo_setup_irq(struct locomo *lchip)
|
||||||
* Install handler for IRQ_LOCOMO_HW.
|
* Install handler for IRQ_LOCOMO_HW.
|
||||||
*/
|
*/
|
||||||
irq_set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING);
|
irq_set_irq_type(lchip->irq, IRQ_TYPE_EDGE_FALLING);
|
||||||
irq_set_chip_data(lchip->irq, lchip);
|
irq_set_chained_handler_and_data(lchip->irq, locomo_handler, lchip);
|
||||||
irq_set_chained_handler(lchip->irq, locomo_handler);
|
|
||||||
|
|
||||||
/* Install handlers for IRQ_LOCOMO_* */
|
/* Install handlers for IRQ_LOCOMO_* */
|
||||||
for ( ; irq <= lchip->irq_base + 3; irq++) {
|
for ( ; irq <= lchip->irq_base + 3; irq++) {
|
||||||
|
|
|
@ -472,8 +472,8 @@ static int sa1111_setup_irq(struct sa1111 *sachip, unsigned irq_base)
|
||||||
* specifies that S0ReadyInt and S1ReadyInt should be '1'.
|
* specifies that S0ReadyInt and S1ReadyInt should be '1'.
|
||||||
*/
|
*/
|
||||||
sa1111_writel(0, irqbase + SA1111_INTPOL0);
|
sa1111_writel(0, irqbase + SA1111_INTPOL0);
|
||||||
sa1111_writel(SA1111_IRQMASK_HI(IRQ_S0_READY_NINT) |
|
sa1111_writel(BIT(IRQ_S0_READY_NINT & 31) |
|
||||||
SA1111_IRQMASK_HI(IRQ_S1_READY_NINT),
|
BIT(IRQ_S1_READY_NINT & 31),
|
||||||
irqbase + SA1111_INTPOL1);
|
irqbase + SA1111_INTPOL1);
|
||||||
|
|
||||||
/* clear all IRQs */
|
/* clear all IRQs */
|
||||||
|
@ -754,7 +754,7 @@ static int __sa1111_probe(struct device *me, struct resource *mem, int irq)
|
||||||
if (sachip->irq != NO_IRQ) {
|
if (sachip->irq != NO_IRQ) {
|
||||||
ret = sa1111_setup_irq(sachip, pd->irq_base);
|
ret = sa1111_setup_irq(sachip, pd->irq_base);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_unmap;
|
goto err_clk;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_SA1100
|
#ifdef CONFIG_ARCH_SA1100
|
||||||
|
@ -799,6 +799,8 @@ static int __sa1111_probe(struct device *me, struct resource *mem, int irq)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_clk:
|
||||||
|
clk_disable(sachip->clk);
|
||||||
err_unmap:
|
err_unmap:
|
||||||
iounmap(sachip->base);
|
iounmap(sachip->base);
|
||||||
err_clk_unprep:
|
err_clk_unprep:
|
||||||
|
@ -869,9 +871,9 @@ struct sa1111_save_data {
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
|
|
||||||
static int sa1111_suspend(struct platform_device *dev, pm_message_t state)
|
static int sa1111_suspend_noirq(struct device *dev)
|
||||||
{
|
{
|
||||||
struct sa1111 *sachip = platform_get_drvdata(dev);
|
struct sa1111 *sachip = dev_get_drvdata(dev);
|
||||||
struct sa1111_save_data *save;
|
struct sa1111_save_data *save;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
|
@ -934,9 +936,9 @@ static int sa1111_suspend(struct platform_device *dev, pm_message_t state)
|
||||||
* restored by their respective drivers, and must be called
|
* restored by their respective drivers, and must be called
|
||||||
* via LDM after this function.
|
* via LDM after this function.
|
||||||
*/
|
*/
|
||||||
static int sa1111_resume(struct platform_device *dev)
|
static int sa1111_resume_noirq(struct device *dev)
|
||||||
{
|
{
|
||||||
struct sa1111 *sachip = platform_get_drvdata(dev);
|
struct sa1111 *sachip = dev_get_drvdata(dev);
|
||||||
struct sa1111_save_data *save;
|
struct sa1111_save_data *save;
|
||||||
unsigned long flags, id;
|
unsigned long flags, id;
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
|
@ -952,7 +954,7 @@ static int sa1111_resume(struct platform_device *dev)
|
||||||
id = sa1111_readl(sachip->base + SA1111_SKID);
|
id = sa1111_readl(sachip->base + SA1111_SKID);
|
||||||
if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
|
if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
|
||||||
__sa1111_remove(sachip);
|
__sa1111_remove(sachip);
|
||||||
platform_set_drvdata(dev, NULL);
|
dev_set_drvdata(dev, NULL);
|
||||||
kfree(save);
|
kfree(save);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1003,8 +1005,8 @@ static int sa1111_resume(struct platform_device *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define sa1111_suspend NULL
|
#define sa1111_suspend_noirq NULL
|
||||||
#define sa1111_resume NULL
|
#define sa1111_resume_noirq NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int sa1111_probe(struct platform_device *pdev)
|
static int sa1111_probe(struct platform_device *pdev)
|
||||||
|
@ -1017,7 +1019,7 @@ static int sa1111_probe(struct platform_device *pdev)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
irq = platform_get_irq(pdev, 0);
|
irq = platform_get_irq(pdev, 0);
|
||||||
if (irq < 0)
|
if (irq < 0)
|
||||||
return -ENXIO;
|
return irq;
|
||||||
|
|
||||||
return __sa1111_probe(&pdev->dev, mem, irq);
|
return __sa1111_probe(&pdev->dev, mem, irq);
|
||||||
}
|
}
|
||||||
|
@ -1038,6 +1040,11 @@ static int sa1111_remove(struct platform_device *pdev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct dev_pm_ops sa1111_pm_ops = {
|
||||||
|
.suspend_noirq = sa1111_suspend_noirq,
|
||||||
|
.resume_noirq = sa1111_resume_noirq,
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Not sure if this should be on the system bus or not yet.
|
* Not sure if this should be on the system bus or not yet.
|
||||||
* We really want some way to register a system device at
|
* We really want some way to register a system device at
|
||||||
|
@ -1050,10 +1057,9 @@ static int sa1111_remove(struct platform_device *pdev)
|
||||||
static struct platform_driver sa1111_device_driver = {
|
static struct platform_driver sa1111_device_driver = {
|
||||||
.probe = sa1111_probe,
|
.probe = sa1111_probe,
|
||||||
.remove = sa1111_remove,
|
.remove = sa1111_remove,
|
||||||
.suspend = sa1111_suspend,
|
|
||||||
.resume = sa1111_resume,
|
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "sa1111",
|
.name = "sa1111",
|
||||||
|
.pm = &sa1111_pm_ops,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ CONFIG_SERIAL_OF_PLATFORM=y
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
CONFIG_FIRMWARE_MEMMAP=y
|
CONFIG_FIRMWARE_MEMMAP=y
|
||||||
CONFIG_FANOTIFY=y
|
CONFIG_FANOTIFY=y
|
||||||
CONFIG_PRINTK_TIME=1
|
CONFIG_PRINTK_TIME=y
|
||||||
CONFIG_DYNAMIC_DEBUG=y
|
CONFIG_DYNAMIC_DEBUG=y
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_PAGE_POISONING=y
|
CONFIG_PAGE_POISONING=y
|
||||||
|
|
|
@ -59,7 +59,7 @@ CONFIG_SERIAL_OF_PLATFORM=y
|
||||||
# CONFIG_IOMMU_SUPPORT is not set
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
CONFIG_FIRMWARE_MEMMAP=y
|
CONFIG_FIRMWARE_MEMMAP=y
|
||||||
CONFIG_FANOTIFY=y
|
CONFIG_FANOTIFY=y
|
||||||
CONFIG_PRINTK_TIME=1
|
CONFIG_PRINTK_TIME=y
|
||||||
CONFIG_DYNAMIC_DEBUG=y
|
CONFIG_DYNAMIC_DEBUG=y
|
||||||
CONFIG_STRIP_ASM_SYMS=y
|
CONFIG_STRIP_ASM_SYMS=y
|
||||||
CONFIG_PAGE_POISONING=y
|
CONFIG_PAGE_POISONING=y
|
||||||
|
|
|
@ -161,6 +161,7 @@ CONFIG_USB_MON=y
|
||||||
CONFIG_USB_XHCI_HCD=y
|
CONFIG_USB_XHCI_HCD=y
|
||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
CONFIG_USB_DWC3=y
|
CONFIG_USB_DWC3=y
|
||||||
|
CONFIG_NOP_USB_XCEIV=y
|
||||||
CONFIG_KEYSTONE_USB_PHY=y
|
CONFIG_KEYSTONE_USB_PHY=y
|
||||||
CONFIG_NEW_LEDS=y
|
CONFIG_NEW_LEDS=y
|
||||||
CONFIG_LEDS_CLASS=y
|
CONFIG_LEDS_CLASS=y
|
||||||
|
|
|
@ -781,7 +781,7 @@ CONFIG_MXS_DMA=y
|
||||||
CONFIG_DMA_BCM2835=y
|
CONFIG_DMA_BCM2835=y
|
||||||
CONFIG_DMA_OMAP=y
|
CONFIG_DMA_OMAP=y
|
||||||
CONFIG_QCOM_BAM_DMA=y
|
CONFIG_QCOM_BAM_DMA=y
|
||||||
CONFIG_XILINX_VDMA=y
|
CONFIG_XILINX_DMA=y
|
||||||
CONFIG_DMA_SUN6I=y
|
CONFIG_DMA_SUN6I=y
|
||||||
CONFIG_STAGING=y
|
CONFIG_STAGING=y
|
||||||
CONFIG_SENSORS_ISL29018=y
|
CONFIG_SENSORS_ISL29018=y
|
||||||
|
|
|
@ -284,7 +284,7 @@ static int ctr_encrypt(struct blkcipher_desc *desc, struct scatterlist *dst,
|
||||||
err = blkcipher_walk_done(desc, &walk,
|
err = blkcipher_walk_done(desc, &walk,
|
||||||
walk.nbytes % AES_BLOCK_SIZE);
|
walk.nbytes % AES_BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
if (nbytes) {
|
if (walk.nbytes % AES_BLOCK_SIZE) {
|
||||||
u8 *tdst = walk.dst.virt.addr + blocks * AES_BLOCK_SIZE;
|
u8 *tdst = walk.dst.virt.addr + blocks * AES_BLOCK_SIZE;
|
||||||
u8 *tsrc = walk.src.virt.addr + blocks * AES_BLOCK_SIZE;
|
u8 *tsrc = walk.src.virt.addr + blocks * AES_BLOCK_SIZE;
|
||||||
u8 __aligned(8) tail[AES_BLOCK_SIZE];
|
u8 __aligned(8) tail[AES_BLOCK_SIZE];
|
||||||
|
|
|
@ -111,7 +111,7 @@ static inline dma_addr_t virt_to_dma(struct device *dev, void *addr)
|
||||||
/* The ARM override for dma_max_pfn() */
|
/* The ARM override for dma_max_pfn() */
|
||||||
static inline unsigned long dma_max_pfn(struct device *dev)
|
static inline unsigned long dma_max_pfn(struct device *dev)
|
||||||
{
|
{
|
||||||
return PHYS_PFN_OFFSET + dma_to_pfn(dev, *dev->dma_mask);
|
return dma_to_pfn(dev, *dev->dma_mask);
|
||||||
}
|
}
|
||||||
#define dma_max_pfn(dev) dma_max_pfn(dev)
|
#define dma_max_pfn(dev) dma_max_pfn(dev)
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
|
#define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
|
||||||
#define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE)
|
#define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE)
|
||||||
#define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
|
#define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
|
||||||
|
#define PMD_SECT_CACHE_MASK (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
|
||||||
#define PMD_SECT_NONSHARED_DEV (PMD_SECT_TEX(2))
|
#define PMD_SECT_NONSHARED_DEV (PMD_SECT_TEX(2))
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
#define PMD_SECT_WT (_AT(pmdval_t, 2) << 2) /* normal inner write-through */
|
#define PMD_SECT_WT (_AT(pmdval_t, 2) << 2) /* normal inner write-through */
|
||||||
#define PMD_SECT_WB (_AT(pmdval_t, 3) << 2) /* normal inner write-back */
|
#define PMD_SECT_WB (_AT(pmdval_t, 3) << 2) /* normal inner write-back */
|
||||||
#define PMD_SECT_WBWA (_AT(pmdval_t, 7) << 2) /* normal inner write-alloc */
|
#define PMD_SECT_WBWA (_AT(pmdval_t, 7) << 2) /* normal inner write-alloc */
|
||||||
|
#define PMD_SECT_CACHE_MASK (_AT(pmdval_t, 7) << 2)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* + Level 3 descriptor (PTE)
|
* + Level 3 descriptor (PTE)
|
||||||
|
|
|
@ -480,7 +480,10 @@ arm_copy_from_user(void *to, const void __user *from, unsigned long n);
|
||||||
static inline unsigned long __must_check
|
static inline unsigned long __must_check
|
||||||
__copy_from_user(void *to, const void __user *from, unsigned long n)
|
__copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||||
{
|
{
|
||||||
unsigned int __ua_flags = uaccess_save_and_enable();
|
unsigned int __ua_flags;
|
||||||
|
|
||||||
|
check_object_size(to, n, false);
|
||||||
|
__ua_flags = uaccess_save_and_enable();
|
||||||
n = arm_copy_from_user(to, from, n);
|
n = arm_copy_from_user(to, from, n);
|
||||||
uaccess_restore(__ua_flags);
|
uaccess_restore(__ua_flags);
|
||||||
return n;
|
return n;
|
||||||
|
@ -495,11 +498,15 @@ static inline unsigned long __must_check
|
||||||
__copy_to_user(void __user *to, const void *from, unsigned long n)
|
__copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||||
{
|
{
|
||||||
#ifndef CONFIG_UACCESS_WITH_MEMCPY
|
#ifndef CONFIG_UACCESS_WITH_MEMCPY
|
||||||
unsigned int __ua_flags = uaccess_save_and_enable();
|
unsigned int __ua_flags;
|
||||||
|
|
||||||
|
check_object_size(from, n, true);
|
||||||
|
__ua_flags = uaccess_save_and_enable();
|
||||||
n = arm_copy_to_user(to, from, n);
|
n = arm_copy_to_user(to, from, n);
|
||||||
uaccess_restore(__ua_flags);
|
uaccess_restore(__ua_flags);
|
||||||
return n;
|
return n;
|
||||||
#else
|
#else
|
||||||
|
check_object_size(from, n, true);
|
||||||
return arm_copy_to_user(to, from, n);
|
return arm_copy_to_user(to, from, n);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,6 +88,8 @@ void __init arm_dt_init_cpu_maps(void)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for_each_child_of_node(cpus, cpu) {
|
for_each_child_of_node(cpus, cpu) {
|
||||||
|
const __be32 *cell;
|
||||||
|
int prop_bytes;
|
||||||
u32 hwid;
|
u32 hwid;
|
||||||
|
|
||||||
if (of_node_cmp(cpu->type, "cpu"))
|
if (of_node_cmp(cpu->type, "cpu"))
|
||||||
|
@ -99,7 +101,8 @@ void __init arm_dt_init_cpu_maps(void)
|
||||||
* properties is considered invalid to build the
|
* properties is considered invalid to build the
|
||||||
* cpu_logical_map.
|
* cpu_logical_map.
|
||||||
*/
|
*/
|
||||||
if (of_property_read_u32(cpu, "reg", &hwid)) {
|
cell = of_get_property(cpu, "reg", &prop_bytes);
|
||||||
|
if (!cell || prop_bytes < sizeof(*cell)) {
|
||||||
pr_debug(" * %s missing reg property\n",
|
pr_debug(" * %s missing reg property\n",
|
||||||
cpu->full_name);
|
cpu->full_name);
|
||||||
of_node_put(cpu);
|
of_node_put(cpu);
|
||||||
|
@ -107,10 +110,15 @@ void __init arm_dt_init_cpu_maps(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 8 MSBs must be set to 0 in the DT since the reg property
|
* Bits n:24 must be set to 0 in the DT since the reg property
|
||||||
* defines the MPIDR[23:0].
|
* defines the MPIDR[23:0].
|
||||||
*/
|
*/
|
||||||
if (hwid & ~MPIDR_HWID_BITMASK) {
|
do {
|
||||||
|
hwid = be32_to_cpu(*cell++);
|
||||||
|
prop_bytes -= sizeof(*cell);
|
||||||
|
} while (!hwid && prop_bytes > 0);
|
||||||
|
|
||||||
|
if (prop_bytes || (hwid & ~MPIDR_HWID_BITMASK)) {
|
||||||
of_node_put(cpu);
|
of_node_put(cpu);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -295,6 +295,7 @@ __und_svc_fault:
|
||||||
bl __und_fault
|
bl __und_fault
|
||||||
|
|
||||||
__und_svc_finish:
|
__und_svc_finish:
|
||||||
|
get_thread_info tsk
|
||||||
ldr r5, [sp, #S_PSR] @ Get SVC cpsr
|
ldr r5, [sp, #S_PSR] @ Get SVC cpsr
|
||||||
svc_exit r5 @ return from exception
|
svc_exit r5 @ return from exception
|
||||||
UNWIND(.fnend )
|
UNWIND(.fnend )
|
||||||
|
|
|
@ -142,6 +142,19 @@ ARM_BE8(orr r7, r7, #(1 << 25)) @ HSCTLR.EE
|
||||||
and r7, #0x1f @ Preserve HPMN
|
and r7, #0x1f @ Preserve HPMN
|
||||||
mcr p15, 4, r7, c1, c1, 1 @ HDCR
|
mcr p15, 4, r7, c1, c1, 1 @ HDCR
|
||||||
|
|
||||||
|
@ Make sure NS-SVC is initialised appropriately
|
||||||
|
mrc p15, 0, r7, c1, c0, 0 @ SCTLR
|
||||||
|
orr r7, #(1 << 5) @ CP15 barriers enabled
|
||||||
|
bic r7, #(3 << 7) @ Clear SED/ITD for v8 (RES0 for v7)
|
||||||
|
bic r7, #(3 << 19) @ WXN and UWXN disabled
|
||||||
|
mcr p15, 0, r7, c1, c0, 0 @ SCTLR
|
||||||
|
|
||||||
|
mrc p15, 0, r7, c0, c0, 0 @ MIDR
|
||||||
|
mcr p15, 4, r7, c0, c0, 0 @ VPIDR
|
||||||
|
|
||||||
|
mrc p15, 0, r7, c0, c0, 5 @ MPIDR
|
||||||
|
mcr p15, 4, r7, c0, c0, 5 @ VMPIDR
|
||||||
|
|
||||||
#if !defined(ZIMAGE) && defined(CONFIG_ARM_ARCH_TIMER)
|
#if !defined(ZIMAGE) && defined(CONFIG_ARM_ARCH_TIMER)
|
||||||
@ make CNTP_* and CNTPCT accessible from PL1
|
@ make CNTP_* and CNTPCT accessible from PL1
|
||||||
mrc p15, 0, r7, c0, c1, 1 @ ID_PFR1
|
mrc p15, 0, r7, c0, c1, 1 @ ID_PFR1
|
||||||
|
|
|
@ -279,8 +279,12 @@ asmlinkage long sys_oabi_epoll_wait(int epfd,
|
||||||
mm_segment_t fs;
|
mm_segment_t fs;
|
||||||
long ret, err, i;
|
long ret, err, i;
|
||||||
|
|
||||||
if (maxevents <= 0 || maxevents > (INT_MAX/sizeof(struct epoll_event)))
|
if (maxevents <= 0 ||
|
||||||
|
maxevents > (INT_MAX/sizeof(*kbuf)) ||
|
||||||
|
maxevents > (INT_MAX/sizeof(*events)))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
if (!access_ok(VERIFY_WRITE, events, sizeof(*events) * maxevents))
|
||||||
|
return -EFAULT;
|
||||||
kbuf = kmalloc(sizeof(*kbuf) * maxevents, GFP_KERNEL);
|
kbuf = kmalloc(sizeof(*kbuf) * maxevents, GFP_KERNEL);
|
||||||
if (!kbuf)
|
if (!kbuf)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
@ -317,6 +321,8 @@ asmlinkage long sys_oabi_semtimedop(int semid,
|
||||||
|
|
||||||
if (nsops < 1 || nsops > SEMOPM)
|
if (nsops < 1 || nsops > SEMOPM)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
if (!access_ok(VERIFY_READ, tsops, sizeof(*tsops) * nsops))
|
||||||
|
return -EFAULT;
|
||||||
sops = kmalloc(sizeof(*sops) * nsops, GFP_KERNEL);
|
sops = kmalloc(sizeof(*sops) * nsops, GFP_KERNEL);
|
||||||
if (!sops)
|
if (!sops)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
|
@ -158,8 +158,6 @@ void kvm_arch_destroy_vm(struct kvm *kvm)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
kvm_free_stage2_pgd(kvm);
|
|
||||||
|
|
||||||
for (i = 0; i < KVM_MAX_VCPUS; ++i) {
|
for (i = 0; i < KVM_MAX_VCPUS; ++i) {
|
||||||
if (kvm->vcpus[i]) {
|
if (kvm->vcpus[i]) {
|
||||||
kvm_arch_vcpu_free(kvm->vcpus[i]);
|
kvm_arch_vcpu_free(kvm->vcpus[i]);
|
||||||
|
@ -1009,9 +1007,13 @@ long kvm_arch_vm_ioctl(struct file *filp,
|
||||||
|
|
||||||
switch (ioctl) {
|
switch (ioctl) {
|
||||||
case KVM_CREATE_IRQCHIP: {
|
case KVM_CREATE_IRQCHIP: {
|
||||||
|
int ret;
|
||||||
if (!vgic_present)
|
if (!vgic_present)
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
return kvm_vgic_create(kvm, KVM_DEV_TYPE_ARM_VGIC_V2);
|
mutex_lock(&kvm->lock);
|
||||||
|
ret = kvm_vgic_create(kvm, KVM_DEV_TYPE_ARM_VGIC_V2);
|
||||||
|
mutex_unlock(&kvm->lock);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
case KVM_ARM_SET_DEVICE_ADDR: {
|
case KVM_ARM_SET_DEVICE_ADDR: {
|
||||||
struct kvm_arm_device_addr dev_addr;
|
struct kvm_arm_device_addr dev_addr;
|
||||||
|
|
|
@ -1309,7 +1309,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
|
||||||
smp_rmb();
|
smp_rmb();
|
||||||
|
|
||||||
pfn = gfn_to_pfn_prot(kvm, gfn, write_fault, &writable);
|
pfn = gfn_to_pfn_prot(kvm, gfn, write_fault, &writable);
|
||||||
if (is_error_pfn(pfn))
|
if (is_error_noslot_pfn(pfn))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
|
|
||||||
if (kvm_is_device_pfn(pfn)) {
|
if (kvm_is_device_pfn(pfn)) {
|
||||||
|
@ -1714,7 +1714,8 @@ int kvm_mmu_init(void)
|
||||||
kern_hyp_va(PAGE_OFFSET), kern_hyp_va(~0UL));
|
kern_hyp_va(PAGE_OFFSET), kern_hyp_va(~0UL));
|
||||||
|
|
||||||
if (hyp_idmap_start >= kern_hyp_va(PAGE_OFFSET) &&
|
if (hyp_idmap_start >= kern_hyp_va(PAGE_OFFSET) &&
|
||||||
hyp_idmap_start < kern_hyp_va(~0UL)) {
|
hyp_idmap_start < kern_hyp_va(~0UL) &&
|
||||||
|
hyp_idmap_start != (unsigned long)__hyp_idmap_text_start) {
|
||||||
/*
|
/*
|
||||||
* The idmap page is intersecting with the VA space,
|
* The idmap page is intersecting with the VA space,
|
||||||
* it is not safe to continue further.
|
* it is not safe to continue further.
|
||||||
|
@ -1893,6 +1894,7 @@ void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots)
|
||||||
|
|
||||||
void kvm_arch_flush_shadow_all(struct kvm *kvm)
|
void kvm_arch_flush_shadow_all(struct kvm *kvm)
|
||||||
{
|
{
|
||||||
|
kvm_free_stage2_pgd(kvm);
|
||||||
}
|
}
|
||||||
|
|
||||||
void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
|
void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
menuconfig ARCH_CLPS711X
|
menuconfig ARCH_CLPS711X
|
||||||
bool "Cirrus Logic EP721x/EP731x-based"
|
bool "Cirrus Logic EP721x/EP731x-based"
|
||||||
depends on ARCH_MULTI_V4T
|
depends on ARCH_MULTI_V4T
|
||||||
select ARCH_REQUIRE_GPIOLIB
|
|
||||||
select AUTO_ZRELADDR
|
select AUTO_ZRELADDR
|
||||||
select CLKSRC_OF
|
select CLKSRC_OF
|
||||||
select CLPS711X_TIMER
|
select CLPS711X_TIMER
|
||||||
select COMMON_CLK
|
select COMMON_CLK
|
||||||
select CPU_ARM720T
|
select CPU_ARM720T
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
|
select GPIOLIB
|
||||||
select MFD_SYSCON
|
select MFD_SYSCON
|
||||||
select OF_IRQ
|
select OF_IRQ
|
||||||
select USE_OF
|
select USE_OF
|
||||||
|
|
|
@ -255,6 +255,12 @@ static int __init exynos_pmu_irq_init(struct device_node *node,
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Clear the OF_POPULATED flag set in of_irq_init so that
|
||||||
|
* later the Exynos PMU platform device won't be skipped.
|
||||||
|
*/
|
||||||
|
of_node_clear_flag(node, OF_POPULATED);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -271,6 +271,12 @@ static int __init imx_gpc_init(struct device_node *node,
|
||||||
for (i = 0; i < IMR_NUM; i++)
|
for (i = 0; i < IMR_NUM; i++)
|
||||||
writel_relaxed(~0, gpc_base + GPC_IMR1 + i * 4);
|
writel_relaxed(~0, gpc_base + GPC_IMR1 + i * 4);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Clear the OF_POPULATED flag set in of_irq_init so that
|
||||||
|
* later the GPC power domain driver will not be skipped.
|
||||||
|
*/
|
||||||
|
of_node_clear_flag(node, OF_POPULATED);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
IRQCHIP_DECLARE(imx_gpc, "fsl,imx6q-gpc", imx_gpc_init);
|
IRQCHIP_DECLARE(imx_gpc, "fsl,imx6q-gpc", imx_gpc_init);
|
||||||
|
|
|
@ -64,6 +64,7 @@ static void __init imx6ul_init_machine(void)
|
||||||
if (parent == NULL)
|
if (parent == NULL)
|
||||||
pr_warn("failed to initialize soc device\n");
|
pr_warn("failed to initialize soc device\n");
|
||||||
|
|
||||||
|
of_platform_default_populate(NULL, NULL, parent);
|
||||||
imx6ul_enet_init();
|
imx6ul_enet_init();
|
||||||
imx_anatop_init();
|
imx_anatop_init();
|
||||||
imx6ul_pm_init();
|
imx6ul_pm_init();
|
||||||
|
|
|
@ -295,7 +295,7 @@ int imx6_set_lpm(enum mxc_cpu_pwr_mode mode)
|
||||||
val &= ~BM_CLPCR_SBYOS;
|
val &= ~BM_CLPCR_SBYOS;
|
||||||
if (cpu_is_imx6sl())
|
if (cpu_is_imx6sl())
|
||||||
val |= BM_CLPCR_BYPASS_PMIC_READY;
|
val |= BM_CLPCR_BYPASS_PMIC_READY;
|
||||||
if (cpu_is_imx6sl() || cpu_is_imx6sx())
|
if (cpu_is_imx6sl() || cpu_is_imx6sx() || cpu_is_imx6ul())
|
||||||
val |= BM_CLPCR_BYP_MMDC_CH0_LPM_HS;
|
val |= BM_CLPCR_BYP_MMDC_CH0_LPM_HS;
|
||||||
else
|
else
|
||||||
val |= BM_CLPCR_BYP_MMDC_CH1_LPM_HS;
|
val |= BM_CLPCR_BYP_MMDC_CH1_LPM_HS;
|
||||||
|
@ -310,7 +310,7 @@ int imx6_set_lpm(enum mxc_cpu_pwr_mode mode)
|
||||||
val |= 0x3 << BP_CLPCR_STBY_COUNT;
|
val |= 0x3 << BP_CLPCR_STBY_COUNT;
|
||||||
val |= BM_CLPCR_VSTBY;
|
val |= BM_CLPCR_VSTBY;
|
||||||
val |= BM_CLPCR_SBYOS;
|
val |= BM_CLPCR_SBYOS;
|
||||||
if (cpu_is_imx6sl())
|
if (cpu_is_imx6sl() || cpu_is_imx6sx())
|
||||||
val |= BM_CLPCR_BYPASS_PMIC_READY;
|
val |= BM_CLPCR_BYPASS_PMIC_READY;
|
||||||
if (cpu_is_imx6sl() || cpu_is_imx6sx() || cpu_is_imx6ul())
|
if (cpu_is_imx6sl() || cpu_is_imx6sx() || cpu_is_imx6ul())
|
||||||
val |= BM_CLPCR_BYP_MMDC_CH0_LPM_HS;
|
val |= BM_CLPCR_BYP_MMDC_CH0_LPM_HS;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \
|
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/arch/arm/plat-orion/include
|
||||||
-I$(srctree)/arch/arm/plat-orion/include
|
|
||||||
|
|
||||||
AFLAGS_coherency_ll.o := -Wa,-march=armv7-a
|
AFLAGS_coherency_ll.o := -Wa,-march=armv7-a
|
||||||
CFLAGS_pmsu.o := -march=armv7-a
|
CFLAGS_pmsu.o := -march=armv7-a
|
||||||
|
|
|
@ -220,9 +220,6 @@ static int am33xx_cm_wait_module_ready(u8 part, s16 inst, u16 clkctrl_offs,
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
if (!clkctrl_offs)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
omap_test_timeout(_is_module_ready(inst, clkctrl_offs),
|
omap_test_timeout(_is_module_ready(inst, clkctrl_offs),
|
||||||
MAX_MODULE_READY_TIME, i);
|
MAX_MODULE_READY_TIME, i);
|
||||||
|
|
||||||
|
@ -246,9 +243,6 @@ static int am33xx_cm_wait_module_idle(u8 part, s16 inst, u16 clkctrl_offs,
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
if (!clkctrl_offs)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
omap_test_timeout((_clkctrl_idlest(inst, clkctrl_offs) ==
|
omap_test_timeout((_clkctrl_idlest(inst, clkctrl_offs) ==
|
||||||
CLKCTRL_IDLEST_DISABLED),
|
CLKCTRL_IDLEST_DISABLED),
|
||||||
MAX_MODULE_READY_TIME, i);
|
MAX_MODULE_READY_TIME, i);
|
||||||
|
|
|
@ -278,9 +278,6 @@ static int omap4_cminst_wait_module_ready(u8 part, s16 inst, u16 clkctrl_offs,
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
if (!clkctrl_offs)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
omap_test_timeout(_is_module_ready(part, inst, clkctrl_offs),
|
omap_test_timeout(_is_module_ready(part, inst, clkctrl_offs),
|
||||||
MAX_MODULE_READY_TIME, i);
|
MAX_MODULE_READY_TIME, i);
|
||||||
|
|
||||||
|
@ -304,9 +301,6 @@ static int omap4_cminst_wait_module_idle(u8 part, s16 inst, u16 clkctrl_offs,
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
if (!clkctrl_offs)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
omap_test_timeout((_clkctrl_idlest(part, inst, clkctrl_offs) ==
|
omap_test_timeout((_clkctrl_idlest(part, inst, clkctrl_offs) ==
|
||||||
CLKCTRL_IDLEST_DISABLED),
|
CLKCTRL_IDLEST_DISABLED),
|
||||||
MAX_MODULE_DISABLE_TIME, i);
|
MAX_MODULE_DISABLE_TIME, i);
|
||||||
|
|
|
@ -1053,6 +1053,10 @@ static int _omap4_wait_target_disable(struct omap_hwmod *oh)
|
||||||
if (oh->flags & HWMOD_NO_IDLEST)
|
if (oh->flags & HWMOD_NO_IDLEST)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!oh->prcm.omap4.clkctrl_offs &&
|
||||||
|
!(oh->prcm.omap4.flags & HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET))
|
||||||
|
return 0;
|
||||||
|
|
||||||
return omap_cm_wait_module_idle(oh->clkdm->prcm_partition,
|
return omap_cm_wait_module_idle(oh->clkdm->prcm_partition,
|
||||||
oh->clkdm->cm_inst,
|
oh->clkdm->cm_inst,
|
||||||
oh->prcm.omap4.clkctrl_offs, 0);
|
oh->prcm.omap4.clkctrl_offs, 0);
|
||||||
|
@ -2971,6 +2975,10 @@ static int _omap4_wait_target_ready(struct omap_hwmod *oh)
|
||||||
if (!_find_mpu_rt_port(oh))
|
if (!_find_mpu_rt_port(oh))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (!oh->prcm.omap4.clkctrl_offs &&
|
||||||
|
!(oh->prcm.omap4.flags & HWMOD_OMAP4_ZERO_CLKCTRL_OFFSET))
|
||||||
|
return 0;
|
||||||
|
|
||||||
/* XXX check module SIDLEMODE, hardreset status */
|
/* XXX check module SIDLEMODE, hardreset status */
|
||||||
|
|
||||||
return omap_cm_wait_module_ready(oh->clkdm->prcm_partition,
|
return omap_cm_wait_module_ready(oh->clkdm->prcm_partition,
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue