mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
Merge 5d30bcacd9 ("Merge tag '9p-for-5.7-2' of git://github.com/martinetd/linux") into android-mainline
Baby steps on the way to 5.7-rc1 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I89095a90046a14eab189aab257a75b3dfdb5b1db
This commit is contained in:
@@ -2573,13 +2573,22 @@
|
||||
For details see: Documentation/admin-guide/hw-vuln/mds.rst
|
||||
|
||||
mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory
|
||||
Amount of memory to be used when the kernel is not able
|
||||
to see the whole system memory or for test.
|
||||
Amount of memory to be used in cases as follows:
|
||||
|
||||
1 for test;
|
||||
2 when the kernel is not able to see the whole system memory;
|
||||
3 memory that lies after 'mem=' boundary is excluded from
|
||||
the hypervisor, then assigned to KVM guests.
|
||||
|
||||
[X86] Work as limiting max address. Use together
|
||||
with memmap= to avoid physical address space collisions.
|
||||
Without memmap= PCI devices could be placed at addresses
|
||||
belonging to unused RAM.
|
||||
|
||||
Note that this only takes effects during boot time since
|
||||
in above case 3, memory may need be hot added after boot
|
||||
if system memory of hypervisor is not sufficient.
|
||||
|
||||
mem=nopentium [BUGS=X86-32] Disable usage of 4MB pages for kernel
|
||||
memory.
|
||||
|
||||
|
||||
@@ -310,6 +310,11 @@ thp_fault_fallback
|
||||
is incremented if a page fault fails to allocate
|
||||
a huge page and instead falls back to using small pages.
|
||||
|
||||
thp_fault_fallback_charge
|
||||
is incremented if a page fault fails to charge a huge page and
|
||||
instead falls back to using small pages even though the
|
||||
allocation was successful.
|
||||
|
||||
thp_collapse_alloc_failed
|
||||
is incremented if khugepaged found a range
|
||||
of pages that should be collapsed into one huge page but failed
|
||||
@@ -319,6 +324,15 @@ thp_file_alloc
|
||||
is incremented every time a file huge page is successfully
|
||||
allocated.
|
||||
|
||||
thp_file_fallback
|
||||
is incremented if a file huge page is attempted to be allocated
|
||||
but fails and instead falls back to using small pages.
|
||||
|
||||
thp_file_fallback_charge
|
||||
is incremented if a file huge page cannot be charged and instead
|
||||
falls back to using small pages even though the allocation was
|
||||
successful.
|
||||
|
||||
thp_file_mapped
|
||||
is incremented every time a file huge page is mapped into
|
||||
user address space.
|
||||
|
||||
@@ -108,6 +108,57 @@ UFFDIO_COPY. They're atomic as in guaranteeing that nothing can see an
|
||||
half copied page since it'll keep userfaulting until the copy has
|
||||
finished.
|
||||
|
||||
Notes:
|
||||
|
||||
- If you requested UFFDIO_REGISTER_MODE_MISSING when registering then
|
||||
you must provide some kind of page in your thread after reading from
|
||||
the uffd. You must provide either UFFDIO_COPY or UFFDIO_ZEROPAGE.
|
||||
The normal behavior of the OS automatically providing a zero page on
|
||||
an annonymous mmaping is not in place.
|
||||
|
||||
- None of the page-delivering ioctls default to the range that you
|
||||
registered with. You must fill in all fields for the appropriate
|
||||
ioctl struct including the range.
|
||||
|
||||
- You get the address of the access that triggered the missing page
|
||||
event out of a struct uffd_msg that you read in the thread from the
|
||||
uffd. You can supply as many pages as you want with UFFDIO_COPY or
|
||||
UFFDIO_ZEROPAGE. Keep in mind that unless you used DONTWAKE then
|
||||
the first of any of those IOCTLs wakes up the faulting thread.
|
||||
|
||||
- Be sure to test for all errors including (pollfd[0].revents &
|
||||
POLLERR). This can happen, e.g. when ranges supplied were
|
||||
incorrect.
|
||||
|
||||
Write Protect Notifications
|
||||
---------------------------
|
||||
|
||||
This is equivalent to (but faster than) using mprotect and a SIGSEGV
|
||||
signal handler.
|
||||
|
||||
Firstly you need to register a range with UFFDIO_REGISTER_MODE_WP.
|
||||
Instead of using mprotect(2) you use ioctl(uffd, UFFDIO_WRITEPROTECT,
|
||||
struct *uffdio_writeprotect) while mode = UFFDIO_WRITEPROTECT_MODE_WP
|
||||
in the struct passed in. The range does not default to and does not
|
||||
have to be identical to the range you registered with. You can write
|
||||
protect as many ranges as you like (inside the registered range).
|
||||
Then, in the thread reading from uffd the struct will have
|
||||
msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP set. Now you send
|
||||
ioctl(uffd, UFFDIO_WRITEPROTECT, struct *uffdio_writeprotect) again
|
||||
while pagefault.mode does not have UFFDIO_WRITEPROTECT_MODE_WP set.
|
||||
This wakes up the thread which will continue to run with writes. This
|
||||
allows you to do the bookkeeping about the write in the uffd reading
|
||||
thread before the ioctl.
|
||||
|
||||
If you registered with both UFFDIO_REGISTER_MODE_MISSING and
|
||||
UFFDIO_REGISTER_MODE_WP then you need to think about the sequence in
|
||||
which you supply a page and undo write protect. Note that there is a
|
||||
difference between writes into a WP area and into a !WP area. The
|
||||
former will have UFFD_PAGEFAULT_FLAG_WP set, the latter
|
||||
UFFD_PAGEFAULT_FLAG_WRITE. The latter did not fail on protection but
|
||||
you still need to supply a page when UFFDIO_REGISTER_MODE_MISSING was
|
||||
used.
|
||||
|
||||
QEMU/KVM
|
||||
========
|
||||
|
||||
|
||||
@@ -166,6 +166,17 @@ Required properties:
|
||||
followed by "fsl,imx-sc-key";
|
||||
- linux,keycodes: See Documentation/devicetree/bindings/input/input.yaml
|
||||
|
||||
Thermal bindings based on SCU Message Protocol
|
||||
------------------------------------------------------------
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be :
|
||||
"fsl,imx8qxp-sc-thermal"
|
||||
followed by "fsl,imx-sc-thermal";
|
||||
|
||||
- #thermal-sensor-cells: See Documentation/devicetree/bindings/thermal/thermal.txt
|
||||
for a description.
|
||||
|
||||
Example (imx8qxp):
|
||||
-------------
|
||||
aliases {
|
||||
@@ -238,6 +249,11 @@ firmware {
|
||||
compatible = "fsl,imx8qxp-sc-wdt", "fsl,imx-sc-wdt";
|
||||
timeout-sec = <60>;
|
||||
};
|
||||
|
||||
tsens: thermal-sensor {
|
||||
compatible = "fsl,imx8qxp-sc-thermal", "fsl,imx-sc-thermal";
|
||||
#thermal-sensor-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -21,15 +21,6 @@ properties:
|
||||
- {}
|
||||
- const: panel-dpi
|
||||
|
||||
data-mapping:
|
||||
enum:
|
||||
- rgb24
|
||||
- rgb565
|
||||
- bgr666
|
||||
description: |
|
||||
Describes the media format, how the display panel is connected
|
||||
to the display interface.
|
||||
|
||||
backlight: true
|
||||
enable-gpios: true
|
||||
height-mm: true
|
||||
@@ -52,7 +43,6 @@ examples:
|
||||
compatible = "osddisplays,osd057T0559-34ts", "panel-dpi";
|
||||
label = "osddisplay";
|
||||
power-supply = <&vcc_supply>;
|
||||
data-mapping = "rgb565";
|
||||
backlight = <&backlight>;
|
||||
|
||||
port {
|
||||
|
||||
@@ -65,7 +65,7 @@ properties:
|
||||
ports:
|
||||
type: object
|
||||
description:
|
||||
Ports as described in Documentation/devictree/bindings/graph.txt
|
||||
Ports as described in Documentation/devicetree/bindings/graph.txt
|
||||
properties:
|
||||
"#address-cells":
|
||||
const: 1
|
||||
@@ -121,7 +121,7 @@ examples:
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
||||
|
||||
dss: dss@04a00000 {
|
||||
dss: dss@4a00000 {
|
||||
compatible = "ti,am65x-dss";
|
||||
reg = <0x0 0x04a00000 0x0 0x1000>, /* common */
|
||||
<0x0 0x04a02000 0x0 0x1000>, /* vidl1 */
|
||||
|
||||
@@ -98,7 +98,7 @@ properties:
|
||||
ports:
|
||||
type: object
|
||||
description:
|
||||
Ports as described in Documentation/devictree/bindings/graph.txt
|
||||
Ports as described in Documentation/devicetree/bindings/graph.txt
|
||||
properties:
|
||||
"#address-cells":
|
||||
const: 1
|
||||
@@ -154,7 +154,7 @@ examples:
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
||||
|
||||
dss: dss@04a00000 {
|
||||
dss: dss@4a00000 {
|
||||
compatible = "ti,j721e-dss";
|
||||
reg = <0x00 0x04a00000 0x00 0x10000>, /* common_m */
|
||||
<0x00 0x04a10000 0x00 0x10000>, /* common_s0*/
|
||||
|
||||
@@ -56,7 +56,7 @@ properties:
|
||||
port:
|
||||
type: object
|
||||
description:
|
||||
Port as described in Documentation/devictree/bindings/graph.txt.
|
||||
Port as described in Documentation/devicetree/bindings/graph.txt.
|
||||
The DSS DPI output port node
|
||||
|
||||
max-memory-bandwidth:
|
||||
@@ -81,7 +81,7 @@ examples:
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
dss: dss@02540000 {
|
||||
dss: dss@2540000 {
|
||||
compatible = "ti,k2g-dss";
|
||||
reg = <0x02540000 0x400>,
|
||||
<0x02550000 0x1000>,
|
||||
|
||||
132
Documentation/devicetree/bindings/input/iqs62x-keys.yaml
Normal file
132
Documentation/devicetree/bindings/input/iqs62x-keys.yaml
Normal file
@@ -0,0 +1,132 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/input/iqs62x-keys.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Azoteq IQS620A/621/622/624/625 Keys and Switches
|
||||
|
||||
maintainers:
|
||||
- Jeff LaBundy <jeff@labundy.com>
|
||||
|
||||
description: |
|
||||
The Azoteq IQS620A, IQS621, IQS622, IQS624 and IQS625 multi-function sensors
|
||||
feature a variety of self-capacitive, mutual-inductive and Hall-effect sens-
|
||||
ing capabilities that can facilitate a variety of contactless key and switch
|
||||
applications.
|
||||
|
||||
These functions are collectively represented by a "keys" child node from the
|
||||
parent MFD driver. See Documentation/devicetree/bindings/mfd/iqs62x.yaml for
|
||||
further details and examples. Sensor hardware configuration (self-capacitive
|
||||
vs. mutual-inductive, etc.) is selected based on the device's firmware.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- azoteq,iqs620a-keys
|
||||
- azoteq,iqs621-keys
|
||||
- azoteq,iqs622-keys
|
||||
- azoteq,iqs624-keys
|
||||
- azoteq,iqs625-keys
|
||||
|
||||
linux,keycodes:
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
- minItems: 1
|
||||
maxItems: 16
|
||||
description: |
|
||||
Specifies the numeric keycodes associated with each available touch or
|
||||
proximity event according to the following table. An 'x' indicates the
|
||||
event is supported for a given device. Specify 0 for unused events.
|
||||
|
||||
-------------------------------------------------------------------------
|
||||
| # | Event | IQS620A | IQS621 | IQS622 | IQS624 | IQS625 |
|
||||
-------------------------------------------------------------------------
|
||||
| 0 | CH0 Touch | x | x | x | x | x |
|
||||
| | Antenna 1 Touch* | x | | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 1 | CH0 Proximity | x | x | x | x | x |
|
||||
| | Antenna 1 Prox.* | x | | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 2 | CH1 Touch | x | x | x | x | x |
|
||||
| | Ant. 1 Deep Touch* | x | | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 3 | CH1 Proximity | x | x | x | x | x |
|
||||
-------------------------------------------------------------------------
|
||||
| 4 | CH2 Touch | x | | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 5 | CH2 Proximity | x | | | | |
|
||||
| | Antenna 2 Prox.* | x | | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 6 | Metal (+) Touch** | x | x | | | |
|
||||
| | Ant. 2 Deep Touch* | x | | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 7 | Metal (+) Prox.** | x | x | | | |
|
||||
| | Antenna 2 Touch* | x | | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 8 | Metal (-) Touch** | x | x | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 9 | Metal (-) Prox.** | x | x | | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 10 | SAR Active*** | x | | x | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 11 | SAR Quick Rel.*** | x | | x | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 12 | SAR Movement*** | x | | x | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 13 | SAR Filter Halt*** | x | | x | | |
|
||||
-------------------------------------------------------------------------
|
||||
| 14 | Wheel Up | | | | x | |
|
||||
-------------------------------------------------------------------------
|
||||
| 15 | Wheel Down | | | | x | |
|
||||
-------------------------------------------------------------------------
|
||||
* Two-channel SAR. Replaces CH0-2 plus metal touch and proximity events
|
||||
if enabled via firmware.
|
||||
** "+" and "-" refer to the polarity of a channel's delta (LTA - counts),
|
||||
where "LTA" is defined as the channel's long-term average.
|
||||
*** One-channel SAR. Replaces CH0-2 touch and proximity events if enabled
|
||||
via firmware.
|
||||
|
||||
patternProperties:
|
||||
"^hall-switch-(north|south)$":
|
||||
type: object
|
||||
description:
|
||||
Represents north/south-field Hall-effect sensor touch or proximity
|
||||
events. Note that north/south-field orientation is reversed on the
|
||||
IQS620AXzCSR device due to its flip-chip package.
|
||||
|
||||
properties:
|
||||
linux,code:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: Numeric switch code associated with the event.
|
||||
|
||||
azoteq,use-prox:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description:
|
||||
If present, specifies that Hall-effect sensor reporting should
|
||||
use the device's wide-range proximity threshold instead of its
|
||||
close-range touch threshold (default).
|
||||
|
||||
required:
|
||||
- linux,code
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- azoteq,iqs624-keys
|
||||
- azoteq,iqs625-keys
|
||||
then:
|
||||
patternProperties:
|
||||
"^hall-switch-(north|south)$": false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- linux,keycodes
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
...
|
||||
@@ -1,77 +0,0 @@
|
||||
FocalTech EDT-FT5x06 Polytouch driver
|
||||
=====================================
|
||||
|
||||
There are 5 variants of the chip for various touch panel sizes
|
||||
FT5206GE1 2.8" .. 3.8"
|
||||
FT5306DE4 4.3" .. 7"
|
||||
FT5406EE8 7" .. 8.9"
|
||||
FT5506EEG 7" .. 8.9"
|
||||
FT5726NEI 5.7” .. 11.6"
|
||||
|
||||
The software interface is identical for all those chips, so that
|
||||
currently there is no need for the driver to distinguish between the
|
||||
different chips. Nevertheless distinct compatible strings are used so
|
||||
that a distinction can be added if necessary without changing the DT
|
||||
bindings.
|
||||
|
||||
|
||||
Required properties:
|
||||
- compatible: "edt,edt-ft5206"
|
||||
or: "edt,edt-ft5306"
|
||||
or: "edt,edt-ft5406"
|
||||
or: "edt,edt-ft5506"
|
||||
or: "evervision,ev-ft5726"
|
||||
or: "focaltech,ft6236"
|
||||
|
||||
- reg: I2C slave address of the chip (0x38)
|
||||
- interrupts: interrupt specification for the touchdetect
|
||||
interrupt
|
||||
|
||||
Optional properties:
|
||||
- reset-gpios: GPIO specification for the RESET input
|
||||
- wake-gpios: GPIO specification for the WAKE input
|
||||
- vcc-supply: Regulator that supplies the touchscreen
|
||||
|
||||
- pinctrl-names: should be "default"
|
||||
- pinctrl-0: a phandle pointing to the pin settings for the
|
||||
control gpios
|
||||
|
||||
- wakeup-source: If present the device will act as wakeup-source
|
||||
|
||||
- threshold: allows setting the "click"-threshold in the range
|
||||
from 0 to 80.
|
||||
|
||||
- gain: allows setting the sensitivity in the range from 0 to
|
||||
31. Note that lower values indicate higher
|
||||
sensitivity.
|
||||
|
||||
- offset: allows setting the edge compensation in the range from
|
||||
0 to 31.
|
||||
|
||||
- offset-x: Same as offset, but applies only to the horizontal position.
|
||||
Range from 0 to 80, only supported by evervision,ev-ft5726
|
||||
devices.
|
||||
|
||||
- offset-y: Same as offset, but applies only to the vertical position.
|
||||
Range from 0 to 80, only supported by evervision,ev-ft5726
|
||||
devices.
|
||||
|
||||
- touchscreen-size-x : See touchscreen.txt
|
||||
- touchscreen-size-y : See touchscreen.txt
|
||||
- touchscreen-fuzz-x : See touchscreen.txt
|
||||
- touchscreen-fuzz-y : See touchscreen.txt
|
||||
- touchscreen-inverted-x : See touchscreen.txt
|
||||
- touchscreen-inverted-y : See touchscreen.txt
|
||||
- touchscreen-swapped-x-y : See touchscreen.txt
|
||||
|
||||
Example:
|
||||
polytouch: edt-ft5x06@38 {
|
||||
compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
|
||||
reg = <0x38>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&edt_ft5x06_pins>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
|
||||
reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
|
||||
wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
@@ -0,0 +1,125 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/input/touchscreen/edt-ft5x06.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: FocalTech EDT-FT5x06 Polytouch Bindings
|
||||
|
||||
description: |
|
||||
There are 5 variants of the chip for various touch panel sizes
|
||||
FT5206GE1 2.8" .. 3.8"
|
||||
FT5306DE4 4.3" .. 7"
|
||||
FT5406EE8 7" .. 8.9"
|
||||
FT5506EEG 7" .. 8.9"
|
||||
FT5726NEI 5.7” .. 11.6"
|
||||
|
||||
maintainers:
|
||||
- Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
|
||||
allOf:
|
||||
- $ref: touchscreen.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- evervision,ev-ft5726
|
||||
|
||||
then:
|
||||
properties:
|
||||
offset-x: true
|
||||
offset-y: true
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- edt,edt-ft5206
|
||||
- edt,edt-ft5306
|
||||
- edt,edt-ft5406
|
||||
- edt,edt-ft5506
|
||||
- evervision,ev-ft5726
|
||||
- focaltech,ft6236
|
||||
|
||||
reg:
|
||||
const: 0x38
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
reset-gpios:
|
||||
maxItems: 1
|
||||
|
||||
wake-gpios:
|
||||
maxItems: 1
|
||||
|
||||
wakeup-source: true
|
||||
|
||||
vcc-supply:
|
||||
maxItems: 1
|
||||
|
||||
gain:
|
||||
description: Allows setting the sensitivity in the range from 0 to 31.
|
||||
Note that lower values indicate higher sensitivity.
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
- minimum: 0
|
||||
- maximum: 31
|
||||
|
||||
offset:
|
||||
description: Allows setting the edge compensation in the range from 0 to 31.
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
- minimum: 0
|
||||
- maximum: 31
|
||||
|
||||
offset-x:
|
||||
description: Same as offset, but applies only to the horizontal position.
|
||||
Range from 0 to 80, only supported by evervision,ev-ft5726 devices.
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
- minimum: 0
|
||||
- maximum: 80
|
||||
|
||||
offset-y:
|
||||
description: Same as offset, but applies only to the vertical position.
|
||||
Range from 0 to 80, only supported by evervision,ev-ft5726 devices.
|
||||
allOf:
|
||||
- $ref: /schemas/types.yaml#/definitions/uint32
|
||||
- minimum: 0
|
||||
- maximum: 80
|
||||
|
||||
touchscreen-size-x: true
|
||||
touchscreen-size-y: true
|
||||
touchscreen-fuzz-x: true
|
||||
touchscreen-fuzz-y: true
|
||||
touchscreen-inverted-x: true
|
||||
touchscreen-inverted-y: true
|
||||
touchscreen-swapped-x-y: true
|
||||
interrupt-controller: true
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
i2c@00000000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
edt-ft5x06@38 {
|
||||
compatible = "edt,edt-ft5406";
|
||||
reg = <0x38>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
|
||||
reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
|
||||
wake-gpios = <&gpio4 9 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
||||
@@ -21,6 +21,8 @@ properties:
|
||||
- goodix,gt911
|
||||
- goodix,gt9110
|
||||
- goodix,gt912
|
||||
- goodix,gt9147
|
||||
- goodix,gt917s
|
||||
- goodix,gt927
|
||||
- goodix,gt9271
|
||||
- goodix,gt928
|
||||
|
||||
179
Documentation/devicetree/bindings/mfd/iqs62x.yaml
Normal file
179
Documentation/devicetree/bindings/mfd/iqs62x.yaml
Normal file
@@ -0,0 +1,179 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/iqs62x.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Azoteq IQS620A/621/622/624/625 Multi-Function Sensors
|
||||
|
||||
maintainers:
|
||||
- Jeff LaBundy <jeff@labundy.com>
|
||||
|
||||
description: |
|
||||
The Azoteq IQS620A, IQS621, IQS622, IQS624 and IQS625 multi-function sensors
|
||||
integrate multiple sensing technologies in a single package.
|
||||
|
||||
Link to datasheets: https://www.azoteq.com/
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- azoteq,iqs620a
|
||||
- azoteq,iqs621
|
||||
- azoteq,iqs622
|
||||
- azoteq,iqs624
|
||||
- azoteq,iqs625
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
firmware-name:
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
description:
|
||||
Specifies the name of the calibration and configuration file selected by
|
||||
the driver. If this property is omitted, the name is chosen based on the
|
||||
device name with ".bin" as the extension (e.g. iqs620a.bin for IQS620A).
|
||||
|
||||
keys:
|
||||
$ref: ../input/iqs62x-keys.yaml
|
||||
|
||||
pwm:
|
||||
$ref: ../pwm/iqs620a-pwm.yaml
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
/*
|
||||
* Dual capacitive buttons with proximity-activated function, unipolar lid
|
||||
* switch and panel-mounted LED.
|
||||
*/
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
iqs620a@44 {
|
||||
compatible = "azoteq,iqs620a";
|
||||
reg = <0x44>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
keys {
|
||||
compatible = "azoteq,iqs620a-keys";
|
||||
|
||||
linux,keycodes = <KEY_SELECT>,
|
||||
<KEY_MENU>,
|
||||
<KEY_OK>,
|
||||
<KEY_MENU>;
|
||||
|
||||
hall-switch-south {
|
||||
linux,code = <SW_LID>;
|
||||
azoteq,use-prox;
|
||||
};
|
||||
};
|
||||
|
||||
iqs620a_pwm: pwm {
|
||||
compatible = "azoteq,iqs620a-pwm";
|
||||
#pwm-cells = <2>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pwmleds {
|
||||
compatible = "pwm-leds";
|
||||
|
||||
panel {
|
||||
pwms = <&iqs620a_pwm 0 1000000>;
|
||||
max-brightness = <255>;
|
||||
};
|
||||
};
|
||||
|
||||
- |
|
||||
/* Single inductive button with bipolar dock/tablet-mode switch. */
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
iqs620a@44 {
|
||||
compatible = "azoteq,iqs620a";
|
||||
reg = <0x44>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
firmware-name = "iqs620a_coil.bin";
|
||||
|
||||
keys {
|
||||
compatible = "azoteq,iqs620a-keys";
|
||||
|
||||
linux,keycodes = <0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<KEY_MUTE>;
|
||||
|
||||
hall-switch-north {
|
||||
linux,code = <SW_DOCK>;
|
||||
};
|
||||
|
||||
hall-switch-south {
|
||||
linux,code = <SW_TABLET_MODE>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
- |
|
||||
/* Dual capacitive buttons with volume knob. */
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
iqs624@44 {
|
||||
compatible = "azoteq,iqs624";
|
||||
reg = <0x44>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
keys {
|
||||
compatible = "azoteq,iqs624-keys";
|
||||
|
||||
linux,keycodes = <BTN_0>,
|
||||
<0>,
|
||||
<BTN_1>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<0>,
|
||||
<KEY_VOLUMEUP>,
|
||||
<KEY_VOLUMEDOWN>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
...
|
||||
@@ -15,6 +15,8 @@ Required properties:
|
||||
- reg: the I2C slave address of the device
|
||||
|
||||
Optional properties:
|
||||
- interrupts: interrupt mapping for IRQ
|
||||
See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
|
||||
- system-power-controller:
|
||||
See Documentation/devicetree/bindings/power/power-controller.txt
|
||||
|
||||
@@ -32,6 +34,8 @@ Example:
|
||||
pmic@32 {
|
||||
compatible = "ricoh,rn5t618";
|
||||
reg = <0x32>;
|
||||
interrupt-parent = <&gpio5>;
|
||||
interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
|
||||
system-power-controller;
|
||||
|
||||
regulators {
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
* ROHM BD71837 and BD71847 Power Management Integrated Circuit bindings
|
||||
|
||||
BD71837MWV and BD71847MWV are programmable Power Management ICs for powering
|
||||
single-core, dual-core, and quad-core SoCs such as NXP-i.MX 8M. They are
|
||||
optimized for low BOM cost and compact solution footprint. BD71837MWV
|
||||
integrates 8 Buck regulators and 7 LDOs. BD71847MWV contains 6 Buck regulators
|
||||
and 6 LDOs.
|
||||
|
||||
Datasheet for BD71837 is available at:
|
||||
https://www.rohm.com/datasheet/BD71837MWV/bd71837mwv-e
|
||||
Datasheet for BD71847 is available at:
|
||||
https://www.rohm.com/datasheet/BD71847AMWV/bd71847amwv-e
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "rohm,bd71837" for bd71837
|
||||
"rohm,bd71847" for bd71847.
|
||||
- reg : I2C slave address.
|
||||
- interrupt-parent : Phandle to the parent interrupt controller.
|
||||
- interrupts : The interrupt line the device is connected to.
|
||||
- clocks : The parent clock connected to PMIC. If this is missing
|
||||
32768 KHz clock is assumed.
|
||||
- #clock-cells : Should be 0.
|
||||
- regulators: : List of child nodes that specify the regulators.
|
||||
Please see ../regulator/rohm,bd71837-regulator.txt
|
||||
|
||||
Optional properties:
|
||||
- clock-output-names : Should contain name for output clock.
|
||||
- rohm,reset-snvs-powered : Transfer BD718x7 to SNVS state at reset.
|
||||
|
||||
The BD718x7 supports two different HW states as reset target states. States
|
||||
are called as SNVS and READY. At READY state all the PMIC power outputs go
|
||||
down and OTP is reload. At the SNVS state all other logic and external
|
||||
devices apart from the SNVS power domain are shut off. Please refer to NXP
|
||||
i.MX8 documentation for further information regarding SNVS state. When a
|
||||
reset is done via SNVS state the PMIC OTP data is not reload. This causes
|
||||
power outputs that have been under SW control to stay down when reset has
|
||||
switched power state to SNVS. If reset is done via READY state the power
|
||||
outputs will be returned to HW control by OTP loading. Thus the reset
|
||||
target state is set to READY by default. If SNVS state is used the boot
|
||||
crucial regulators must have the regulator-always-on and regulator-boot-on
|
||||
properties set in regulator node.
|
||||
|
||||
- rohm,short-press-ms : Short press duration in milliseconds
|
||||
- rohm,long-press-ms : Long press duration in milliseconds
|
||||
|
||||
Configure the "short press" and "long press" timers for the power button.
|
||||
Values are rounded to what hardware supports (500ms multiple for short and
|
||||
1000ms multiple for long). If these properties are not present the existing
|
||||
configuration (from bootloader or OTP) is not touched.
|
||||
|
||||
Example:
|
||||
|
||||
/* external oscillator node */
|
||||
osc: oscillator {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <1>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "osc";
|
||||
};
|
||||
|
||||
pmic: pmic@4b {
|
||||
compatible = "rohm,bd71837";
|
||||
reg = <0x4b>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <29 GPIO_ACTIVE_LOW>;
|
||||
interrupt-names = "irq";
|
||||
#clock-cells = <0>;
|
||||
clocks = <&osc 0>;
|
||||
clock-output-names = "bd71837-32k-out";
|
||||
rohm,reset-snvs-powered;
|
||||
|
||||
regulators {
|
||||
buck1: BUCK1 {
|
||||
regulator-name = "buck1";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
};
|
||||
// [...]
|
||||
};
|
||||
};
|
||||
|
||||
/* Clock consumer node */
|
||||
rtc@0 {
|
||||
compatible = "company,my-rtc";
|
||||
clock-names = "my-clock";
|
||||
clocks = <&pmic>;
|
||||
};
|
||||
236
Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml
Normal file
236
Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml
Normal file
@@ -0,0 +1,236 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/rohm,bd71837-pmic.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ROHM BD71837 Power Management Integrated Circuit bindings
|
||||
|
||||
maintainers:
|
||||
- Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
|
||||
|
||||
description: |
|
||||
BD71837MWV is programmable Power Management ICs for powering single-core,
|
||||
dual-core, and quad-core SoCs such as NXP-i.MX 8M. It is optimized for low
|
||||
BOM cost and compact solution footprint. BD71837MWV integrates 8 Buck
|
||||
regulators and 7 LDOs.
|
||||
Datasheet for BD71837 is available at
|
||||
https://www.rohm.com/products/power-management/power-management-ic-for-system/industrial-consumer-applications/nxp-imx/bd71837amwv-product
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: rohm,bd71837
|
||||
|
||||
reg:
|
||||
description:
|
||||
I2C slave address.
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
"#clock-cells":
|
||||
const: 0
|
||||
|
||||
# The BD718x7 supports two different HW states as reset target states. States
|
||||
# are called as SNVS and READY. At READY state all the PMIC power outputs go
|
||||
# down and OTP is reload. At the SNVS state all other logic and external
|
||||
# devices apart from the SNVS power domain are shut off. Please refer to NXP
|
||||
# i.MX8 documentation for further information regarding SNVS state. When a
|
||||
# reset is done via SNVS state the PMIC OTP data is not reload. This causes
|
||||
# power outputs that have been under SW control to stay down when reset has
|
||||
# switched power state to SNVS. If reset is done via READY state the power
|
||||
# outputs will be returned to HW control by OTP loading. Thus the reset
|
||||
# target state is set to READY by default. If SNVS state is used the boot
|
||||
# crucial regulators must have the regulator-always-on and regulator-boot-on
|
||||
# properties set in regulator node.
|
||||
|
||||
rohm,reset-snvs-powered:
|
||||
description: |
|
||||
Transfer PMIC to SNVS state at reset
|
||||
type: boolean
|
||||
|
||||
# Configure the "short press" and "long press" timers for the power button.
|
||||
# Values are rounded to what hardware supports
|
||||
# Short-press:
|
||||
# Shortest being 10ms, next 500ms and then multiple of 500ms up to 7,5s
|
||||
# Long-press:
|
||||
# Shortest being 10ms, next 1000ms and then multiple of 1000ms up to 15s
|
||||
# If these properties are not present the existing configuration (from
|
||||
# bootloader or OTP) is not touched.
|
||||
|
||||
rohm,short-press-ms:
|
||||
description:
|
||||
Short press duration in milliseconds
|
||||
enum:
|
||||
- 10
|
||||
- 500
|
||||
- 1000
|
||||
- 1500
|
||||
- 2000
|
||||
- 2500
|
||||
- 3000
|
||||
- 3500
|
||||
- 4000
|
||||
- 4500
|
||||
- 5000
|
||||
- 5500
|
||||
- 6000
|
||||
- 6500
|
||||
- 7000
|
||||
|
||||
rohm,long-press-ms:
|
||||
description:
|
||||
Long press duration in milliseconds
|
||||
enum:
|
||||
- 10
|
||||
- 1000
|
||||
- 2000
|
||||
- 3000
|
||||
- 4000
|
||||
- 5000
|
||||
- 6000
|
||||
- 7000
|
||||
- 8000
|
||||
- 9000
|
||||
- 10000
|
||||
- 11000
|
||||
- 12000
|
||||
- 13000
|
||||
- 14000
|
||||
|
||||
regulators:
|
||||
$ref: ../regulator/rohm,bd71837-regulator.yaml
|
||||
description:
|
||||
List of child nodes that specify the regulators.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- "#clock-cells"
|
||||
- regulators
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
i2c {
|
||||
pmic: pmic@4b {
|
||||
compatible = "rohm,bd71837";
|
||||
reg = <0x4b>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
|
||||
#clock-cells = <0>;
|
||||
clocks = <&osc 0>;
|
||||
rohm,reset-snvs-powered;
|
||||
rohm,short-press-ms = <10>;
|
||||
rohm,long-press-ms = <2000>;
|
||||
|
||||
regulators {
|
||||
buck1: BUCK1 {
|
||||
regulator-name = "buck1";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <900000>;
|
||||
rohm,dvs-idle-voltage = <850000>;
|
||||
rohm,dvs-suspend-voltage = <800000>;
|
||||
};
|
||||
buck2: BUCK2 {
|
||||
regulator-name = "buck2";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
rohm,dvs-idle-voltage = <900000>;
|
||||
};
|
||||
buck3: BUCK3 {
|
||||
regulator-name = "buck3";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
};
|
||||
buck4: BUCK4 {
|
||||
regulator-name = "buck4";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
};
|
||||
buck5: BUCK5 {
|
||||
regulator-name = "buck5";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck6: BUCK6 {
|
||||
regulator-name = "buck6";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck7: BUCK7 {
|
||||
regulator-name = "buck7";
|
||||
regulator-min-microvolt = <1605000>;
|
||||
regulator-max-microvolt = <1995000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck8: BUCK8 {
|
||||
regulator-name = "buck8";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
};
|
||||
|
||||
ldo1: LDO1 {
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ldo2: LDO2 {
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ldo3: LDO3 {
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo4: LDO4 {
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
ldo5: LDO5 {
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo6: LDO6 {
|
||||
regulator-name = "ldo6";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
ldo7_reg: LDO7 {
|
||||
regulator-name = "ldo7";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
222
Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml
Normal file
222
Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml
Normal file
@@ -0,0 +1,222 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/rohm,bd71847-pmic.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ROHM BD71847 and BD71850 Power Management Integrated Circuit bindings
|
||||
|
||||
maintainers:
|
||||
- Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
|
||||
|
||||
description: |
|
||||
BD71847AMWV and BD71850MWV are programmable Power Management ICs for powering
|
||||
single-core, dual-core, and quad-core SoCs such as NXP-i.MX 8M. It is
|
||||
optimized for low BOM cost and compact solution footprint. BD71847MWV and
|
||||
BD71850MWV integrate 6 Buck regulators and 6 LDOs.
|
||||
Datasheets are available at
|
||||
https://www.rohm.com/products/power-management/power-management-ic-for-system/industrial-consumer-applications/nxp-imx/bd71847amwv-product
|
||||
https://www.rohm.com/products/power-management/power-management-ic-for-system/industrial-consumer-applications/nxp-imx/bd71850mwv-product
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- rohm,bd71847
|
||||
- rohm,bd71850
|
||||
|
||||
reg:
|
||||
description:
|
||||
I2C slave address.
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
"#clock-cells":
|
||||
const: 0
|
||||
|
||||
# The BD71847 abd BD71850 support two different HW states as reset target
|
||||
# states. States are called as SNVS and READY. At READY state all the PMIC
|
||||
# power outputs go down and OTP is reload. At the SNVS state all other logic
|
||||
# and external devices apart from the SNVS power domain are shut off. Please
|
||||
# refer to NXP i.MX8 documentation for further information regarding SNVS
|
||||
# state. When a reset is done via SNVS state the PMIC OTP data is not reload.
|
||||
# This causes power outputs that have been under SW control to stay down when
|
||||
# reset has switched power state to SNVS. If reset is done via READY state the
|
||||
# power outputs will be returned to HW control by OTP loading. Thus the reset
|
||||
# target state is set to READY by default. If SNVS state is used the boot
|
||||
# crucial regulators must have the regulator-always-on and regulator-boot-on
|
||||
# properties set in regulator node.
|
||||
|
||||
rohm,reset-snvs-powered:
|
||||
description:
|
||||
Transfer PMIC to SNVS state at reset.
|
||||
type: boolean
|
||||
|
||||
# Configure the "short press" and "long press" timers for the power button.
|
||||
# Values are rounded to what hardware supports
|
||||
# Short-press:
|
||||
# Shortest being 10ms, next 500ms and then multiple of 500ms up to 7,5s
|
||||
# Long-press:
|
||||
# Shortest being 10ms, next 1000ms and then multiple of 1000ms up to 15s
|
||||
# If these properties are not present the existing # configuration (from
|
||||
# bootloader or OTP) is not touched.
|
||||
|
||||
rohm,short-press-ms:
|
||||
description:
|
||||
Short press duration in milliseconds
|
||||
enum:
|
||||
- 10
|
||||
- 500
|
||||
- 1000
|
||||
- 1500
|
||||
- 2000
|
||||
- 2500
|
||||
- 3000
|
||||
- 3500
|
||||
- 4000
|
||||
- 4500
|
||||
- 5000
|
||||
- 5500
|
||||
- 6000
|
||||
- 6500
|
||||
- 7000
|
||||
- 7500
|
||||
|
||||
rohm,long-press-ms:
|
||||
description:
|
||||
Long press duration in milliseconds
|
||||
enum:
|
||||
- 10
|
||||
- 1000
|
||||
- 2000
|
||||
- 3000
|
||||
- 4000
|
||||
- 5000
|
||||
- 6000
|
||||
- 7000
|
||||
- 8000
|
||||
- 9000
|
||||
- 10000
|
||||
- 11000
|
||||
- 12000
|
||||
- 13000
|
||||
- 14000
|
||||
- 15000
|
||||
|
||||
regulators:
|
||||
$ref: ../regulator/rohm,bd71847-regulator.yaml
|
||||
description:
|
||||
List of child nodes that specify the regulators.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- "#clock-cells"
|
||||
- regulators
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
i2c {
|
||||
pmic: pmic@4b {
|
||||
compatible = "rohm,bd71847";
|
||||
reg = <0x4b>;
|
||||
interrupt-parent = <&gpio1>;
|
||||
interrupts = <29 IRQ_TYPE_LEVEL_LOW>;
|
||||
#clock-cells = <0>;
|
||||
clocks = <&osc 0>;
|
||||
rohm,reset-snvs-powered;
|
||||
rohm,short-press-ms = <10>;
|
||||
rohm,long-press-ms = <2000>;
|
||||
|
||||
regulators {
|
||||
buck1: BUCK1 {
|
||||
regulator-name = "buck1";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <900000>;
|
||||
rohm,dvs-idle-voltage = <850000>;
|
||||
rohm,dvs-suspend-voltage = <800000>;
|
||||
};
|
||||
buck2: BUCK2 {
|
||||
regulator-name = "buck2";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
rohm,dvs-idle-voltage = <900000>;
|
||||
};
|
||||
buck3: BUCK3 {
|
||||
regulator-name = "buck3";
|
||||
regulator-min-microvolt = <550000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck4: BUCK4 {
|
||||
regulator-name = "buck4";
|
||||
regulator-min-microvolt = <2600000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck5: BUCK5 {
|
||||
regulator-name = "buck5";
|
||||
regulator-min-microvolt = <1605000>;
|
||||
regulator-max-microvolt = <1995000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck8: BUCK6 {
|
||||
regulator-name = "buck6";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
};
|
||||
|
||||
ldo1: LDO1 {
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <1600000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ldo2: LDO2 {
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ldo3: LDO3 {
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo4: LDO4 {
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
ldo5: LDO5 {
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo6: LDO6 {
|
||||
regulator-name = "ldo6";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -39,6 +39,8 @@ properties:
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
wakeup-source: true
|
||||
|
||||
pwm:
|
||||
type: object
|
||||
|
||||
@@ -81,6 +83,16 @@ patternProperties:
|
||||
required:
|
||||
- compatible
|
||||
|
||||
timer:
|
||||
type: object
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: st,stm32-lptimer-timer
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
required:
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
@@ -115,6 +127,10 @@ examples:
|
||||
counter {
|
||||
compatible = "st,stm32-lptimer-counter";
|
||||
};
|
||||
|
||||
timer {
|
||||
compatible = "st,stm32-lptimer-timer";
|
||||
};
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
32
Documentation/devicetree/bindings/pwm/iqs620a-pwm.yaml
Normal file
32
Documentation/devicetree/bindings/pwm/iqs620a-pwm.yaml
Normal file
@@ -0,0 +1,32 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pwm/iqs620a-pwm.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Azoteq IQS620A PWM Generator
|
||||
|
||||
maintainers:
|
||||
- Jeff LaBundy <jeff@labundy.com>
|
||||
|
||||
description: |
|
||||
The Azoteq IQS620A multi-function sensor generates a fixed-frequency PWM
|
||||
output represented by a "pwm" child node from the parent MFD driver. See
|
||||
Documentation/devicetree/bindings/mfd/iqs62x.yaml for further details as
|
||||
well as an example.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- azoteq,iqs620a-pwm
|
||||
|
||||
"#pwm-cells":
|
||||
const: 2
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- "#pwm-cells"
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
...
|
||||
@@ -1,162 +0,0 @@
|
||||
ROHM BD71837 and BD71847 Power Management Integrated Circuit regulator bindings
|
||||
|
||||
Required properties:
|
||||
- regulator-name: should be "buck1", ..., "buck8" and "ldo1", ..., "ldo7" for
|
||||
BD71837. For BD71847 names should be "buck1", ..., "buck6"
|
||||
and "ldo1", ..., "ldo6"
|
||||
|
||||
List of regulators provided by this controller. BD71837 regulators node
|
||||
should be sub node of the BD71837 MFD node. See BD71837 MFD bindings at
|
||||
Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.txt
|
||||
Regulator nodes should be named to BUCK_<number> and LDO_<number>. The
|
||||
definition for each of these nodes is defined using the standard
|
||||
binding for regulators at
|
||||
Documentation/devicetree/bindings/regulator/regulator.txt.
|
||||
Note that if BD71837 starts at RUN state you probably want to use
|
||||
regulator-boot-on at least for BUCK6 and BUCK7 so that those are not
|
||||
disabled by driver at startup. LDO5 and LDO6 are supplied by those and
|
||||
if they are disabled at startup the voltage monitoring for LDO5/LDO6 will
|
||||
cause PMIC to reset.
|
||||
|
||||
The valid names for BD71837 regulator nodes are:
|
||||
BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6, BUCK7, BUCK8
|
||||
LDO1, LDO2, LDO3, LDO4, LDO5, LDO6, LDO7
|
||||
|
||||
The valid names for BD71847 regulator nodes are:
|
||||
BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6
|
||||
LDO1, LDO2, LDO3, LDO4, LDO5, LDO6
|
||||
|
||||
Optional properties:
|
||||
- rohm,dvs-run-voltage : PMIC default "RUN" state voltage in uV.
|
||||
See below table for bucks which support this.
|
||||
- rohm,dvs-idle-voltage : PMIC default "IDLE" state voltage in uV.
|
||||
See below table for bucks which support this.
|
||||
- rohm,dvs-suspend-voltage : PMIC default "SUSPEND" state voltage in uV.
|
||||
See below table for bucks which support this.
|
||||
- Any optional property defined in bindings/regulator/regulator.txt
|
||||
|
||||
Supported default DVS states:
|
||||
|
||||
BD71837:
|
||||
buck | dvs-run-voltage | dvs-idle-voltage | dvs-suspend-voltage
|
||||
-----------------------------------------------------------------------------
|
||||
1 | supported | supported | supported
|
||||
----------------------------------------------------------------------------
|
||||
2 | supported | supported | not supported
|
||||
----------------------------------------------------------------------------
|
||||
3 | supported | not supported | not supported
|
||||
----------------------------------------------------------------------------
|
||||
4 | supported | not supported | not supported
|
||||
----------------------------------------------------------------------------
|
||||
rest | not supported | not supported | not supported
|
||||
|
||||
BD71847:
|
||||
buck | dvs-run-voltage | dvs-idle-voltage | dvs-suspend-voltage
|
||||
-----------------------------------------------------------------------------
|
||||
1 | supported | supported | supported
|
||||
----------------------------------------------------------------------------
|
||||
2 | supported | supported | not supported
|
||||
----------------------------------------------------------------------------
|
||||
rest | not supported | not supported | not supported
|
||||
|
||||
Example:
|
||||
regulators {
|
||||
buck1: BUCK1 {
|
||||
regulator-name = "buck1";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <900000>;
|
||||
rohm,dvs-idle-voltage = <850000>;
|
||||
rohm,dvs-suspend-voltage = <800000>;
|
||||
};
|
||||
buck2: BUCK2 {
|
||||
regulator-name = "buck2";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-ramp-delay = <1250>;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
rohm,dvs-idle-voltage = <900000>;
|
||||
};
|
||||
buck3: BUCK3 {
|
||||
regulator-name = "buck3";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
};
|
||||
buck4: BUCK4 {
|
||||
regulator-name = "buck4";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-boot-on;
|
||||
rohm,dvs-run-voltage = <1000000>;
|
||||
};
|
||||
buck5: BUCK5 {
|
||||
regulator-name = "buck5";
|
||||
regulator-min-microvolt = <700000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck6: BUCK6 {
|
||||
regulator-name = "buck6";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck7: BUCK7 {
|
||||
regulator-name = "buck7";
|
||||
regulator-min-microvolt = <1605000>;
|
||||
regulator-max-microvolt = <1995000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
buck8: BUCK8 {
|
||||
regulator-name = "buck8";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
};
|
||||
|
||||
ldo1: LDO1 {
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ldo2: LDO2 {
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
ldo3: LDO3 {
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo4: LDO4 {
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
ldo5: LDO5 {
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
ldo6: LDO6 {
|
||||
regulator-name = "ldo6";
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
};
|
||||
ldo7_reg: LDO7 {
|
||||
regulator-name = "ldo7";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/rohm,bd71837-regulator.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ROHM BD71837 Power Management Integrated Circuit regulators
|
||||
|
||||
maintainers:
|
||||
- Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
|
||||
|
||||
description: |
|
||||
List of regulators provided by this controller. BD71837 regulators node
|
||||
should be sub node of the BD71837 MFD node. See BD71837 MFD bindings at
|
||||
Documentation/devicetree/bindings/mfd/rohm,bd71837-pmic.yaml
|
||||
Regulator nodes should be named to BUCK_<number> and LDO_<number>. The
|
||||
definition for each of these nodes is defined using the standard
|
||||
binding for regulators at
|
||||
Documentation/devicetree/bindings/regulator/regulator.txt.
|
||||
Note that if BD71837 starts at RUN state you probably want to use
|
||||
regulator-boot-on at least for BUCK6 and BUCK7 so that those are not
|
||||
disabled by driver at startup. LDO5 and LDO6 are supplied by those and
|
||||
if they are disabled at startup the voltage monitoring for LDO5/LDO6 will
|
||||
cause PMIC to reset.
|
||||
|
||||
#The valid names for BD71837 regulator nodes are:
|
||||
#BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6, BUCK7, BUCK8
|
||||
#LDO1, LDO2, LDO3, LDO4, LDO5, LDO6, LDO7
|
||||
|
||||
patternProperties:
|
||||
"^LDO[1-7]$":
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: regulator.yaml#
|
||||
description:
|
||||
Properties for single LDO regulator.
|
||||
|
||||
properties:
|
||||
regulator-name:
|
||||
pattern: "^ldo[1-7]$"
|
||||
description:
|
||||
should be "ldo1", ..., "ldo7"
|
||||
|
||||
"^BUCK[1-8]$":
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: regulator.yaml#
|
||||
description:
|
||||
Properties for single BUCK regulator.
|
||||
|
||||
properties:
|
||||
regulator-name:
|
||||
pattern: "^buck[1-8]$"
|
||||
description:
|
||||
should be "buck1", ..., "buck8"
|
||||
|
||||
rohm,dvs-run-voltage:
|
||||
allOf:
|
||||
- $ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
- minimum: 0
|
||||
maximum: 1300000
|
||||
description:
|
||||
PMIC default "RUN" state voltage in uV. See below table for
|
||||
bucks which support this. 0 means disabled.
|
||||
|
||||
rohm,dvs-idle-voltage:
|
||||
allOf:
|
||||
- $ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
- minimum: 0
|
||||
maximum: 1300000
|
||||
description:
|
||||
PMIC default "IDLE" state voltage in uV. See below table for
|
||||
bucks which support this. 0 means disabled.
|
||||
|
||||
rohm,dvs-suspend-voltage:
|
||||
allOf:
|
||||
- $ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
- minimum: 0
|
||||
maximum: 1300000
|
||||
description:
|
||||
PMIC default "SUSPEND" state voltage in uV. See below table for
|
||||
bucks which support this. 0 means disabled.
|
||||
|
||||
# Supported default DVS states:
|
||||
#
|
||||
# BD71837:
|
||||
# buck | dvs-run-voltage | dvs-idle-voltage | dvs-suspend-voltage
|
||||
# ----------------------------------------------------------------
|
||||
# 1 | supported | supported | supported
|
||||
# ----------------------------------------------------------------
|
||||
# 2 | supported | supported | not supported
|
||||
# ----------------------------------------------------------------
|
||||
# 3 | supported | not supported | not supported
|
||||
# ----------------------------------------------------------------
|
||||
# 4 | supported | not supported | not supported
|
||||
# ----------------------------------------------------------------
|
||||
# rest | not supported | not supported | not supported
|
||||
|
||||
|
||||
required:
|
||||
- regulator-name
|
||||
additionalProperties: false
|
||||
additionalProperties: false
|
||||
@@ -0,0 +1,97 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/rohm,bd71847-regulator.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ROHM BD71847 and BD71850 Power Management Integrated Circuit regulators
|
||||
|
||||
maintainers:
|
||||
- Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
|
||||
|
||||
description: |
|
||||
List of regulators provided by this controller. BD71847 regulators node
|
||||
should be sub node of the BD71847 MFD node. See BD71847 MFD bindings at
|
||||
Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml
|
||||
Regulator nodes should be named to BUCK_<number> and LDO_<number>. The
|
||||
definition for each of these nodes is defined using the standard
|
||||
binding for regulators at
|
||||
Documentation/devicetree/bindings/regulator/regulator.txt.
|
||||
Note that if BD71847 starts at RUN state you probably want to use
|
||||
regulator-boot-on at least for BUCK5. LDO6 is supplied by it and it must
|
||||
not be disabled by driver at startup. If BUCK5 is disabled at startup the
|
||||
voltage monitoring for LDO5/LDO6 can cause PMIC to reset.
|
||||
|
||||
#The valid names for BD71847 regulator nodes are:
|
||||
#BUCK1, BUCK2, BUCK3, BUCK4, BUCK5, BUCK6
|
||||
#LDO1, LDO2, LDO3, LDO4, LDO5, LDO6
|
||||
|
||||
patternProperties:
|
||||
"^LDO[1-6]$":
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: regulator.yaml#
|
||||
description:
|
||||
Properties for single LDO regulator.
|
||||
|
||||
properties:
|
||||
regulator-name:
|
||||
pattern: "^ldo[1-6]$"
|
||||
description:
|
||||
should be "ldo1", ..., "ldo6"
|
||||
|
||||
"^BUCK[1-6]$":
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: regulator.yaml#
|
||||
description:
|
||||
Properties for single BUCK regulator.
|
||||
|
||||
properties:
|
||||
regulator-name:
|
||||
pattern: "^buck[1-6]$"
|
||||
description:
|
||||
should be "buck1", ..., "buck6"
|
||||
|
||||
rohm,dvs-run-voltage:
|
||||
allOf:
|
||||
- $ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
- minimum: 0
|
||||
maximum: 1300000
|
||||
description:
|
||||
PMIC default "RUN" state voltage in uV. See below table for
|
||||
bucks which support this. 0 means disabled.
|
||||
|
||||
rohm,dvs-idle-voltage:
|
||||
allOf:
|
||||
- $ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
- minimum: 0
|
||||
maximum: 1300000
|
||||
description:
|
||||
PMIC default "IDLE" state voltage in uV. See below table for
|
||||
bucks which support this. 0 means disabled.
|
||||
|
||||
rohm,dvs-suspend-voltage:
|
||||
allOf:
|
||||
- $ref: "/schemas/types.yaml#/definitions/uint32"
|
||||
- minimum: 0
|
||||
maximum: 1300000
|
||||
description:
|
||||
PMIC default "SUSPEND" state voltage in uV. See below table for
|
||||
bucks which support this. 0 means disabled.
|
||||
|
||||
# Supported default DVS states:
|
||||
#
|
||||
# BD71847:
|
||||
# buck | dvs-run-voltage | dvs-idle-voltage | dvs-suspend-voltage
|
||||
# ----------------------------------------------------------------
|
||||
# 1 | supported | supported | supported
|
||||
# ----------------------------------------------------------------
|
||||
# 2 | supported | supported | not supported
|
||||
# ----------------------------------------------------------------
|
||||
# rest | not supported | not supported | not supported
|
||||
|
||||
required:
|
||||
- regulator-name
|
||||
additionalProperties: false
|
||||
additionalProperties: false
|
||||
15
Documentation/devicetree/bindings/thermal/imx8mm-thermal.txt
Normal file
15
Documentation/devicetree/bindings/thermal/imx8mm-thermal.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
* Thermal Monitoring Unit (TMU) on Freescale i.MX8MM SoC
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be "fsl,imx8mm-tmu" or "fsl,imx8mp-tmu".
|
||||
- reg : Address range of TMU registers.
|
||||
- clocks : TMU's clock source.
|
||||
- #thermal-sensor-cells : Should be 0 or 1. See ./thermal.txt for a description.
|
||||
|
||||
Example:
|
||||
tmu: tmu@30260000 {
|
||||
compatible = "fsl,imx8mm-tmu";
|
||||
reg = <0x30260000 0x10000>;
|
||||
clocks = <&clk IMX8MM_CLK_TMU_ROOT>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
@@ -38,11 +38,11 @@ properties:
|
||||
- enum:
|
||||
- qcom,msm8996-tsens
|
||||
- qcom,msm8998-tsens
|
||||
- qcom,sc7180-tsens
|
||||
- qcom,sdm845-tsens
|
||||
- const: qcom,tsens-v2
|
||||
|
||||
reg:
|
||||
maxItems: 2
|
||||
items:
|
||||
- description: TM registers
|
||||
- description: SROT registers
|
||||
|
||||
@@ -11,6 +11,7 @@ Required properties:
|
||||
- "renesas,r8a774b1-thermal" (RZ/G2N)
|
||||
- "renesas,r8a7795-thermal" (R-Car H3)
|
||||
- "renesas,r8a7796-thermal" (R-Car M3-W)
|
||||
- "renesas,r8a77961-thermal" (R-Car M3-W+)
|
||||
- "renesas,r8a77965-thermal" (R-Car M3-N)
|
||||
- "renesas,r8a77980-thermal" (R-Car V3H)
|
||||
- reg : Address ranges of the thermal registers. Each sensor
|
||||
|
||||
107
Documentation/devicetree/bindings/thermal/sprd-thermal.yaml
Normal file
107
Documentation/devicetree/bindings/thermal/sprd-thermal.yaml
Normal file
@@ -0,0 +1,107 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/thermal/sprd-thermal.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Spreadtrum thermal sensor controller bindings
|
||||
|
||||
maintainers:
|
||||
- Orson Zhai <orsonzhai@gmail.com>
|
||||
- Baolin Wang <baolin.wang7@gmail.com>
|
||||
- Chunyan Zhang <zhang.lyra@gmail.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: sprd,ums512-thermal
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: enable
|
||||
|
||||
nvmem-cells:
|
||||
maxItems: 2
|
||||
description:
|
||||
Reference to nvmem nodes for the calibration data.
|
||||
|
||||
nvmem-cell-names:
|
||||
items:
|
||||
- const: thm_sign_cal
|
||||
- const: thm_ratio_cal
|
||||
|
||||
"#thermal-sensor-cells":
|
||||
const: 1
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
patternProperties:
|
||||
"^([a-z]*-)?sensor(-section)?@[0-9]+$":
|
||||
type: object
|
||||
description:
|
||||
Represent one thermal sensor.
|
||||
|
||||
properties:
|
||||
reg:
|
||||
description: Specify the sensor id.
|
||||
maxItems: 1
|
||||
|
||||
nvmem-cells:
|
||||
maxItems: 1
|
||||
description:
|
||||
Reference to an nvmem node for the calibration data.
|
||||
|
||||
nvmem-cell-names:
|
||||
const: sen_delta_cal
|
||||
|
||||
required:
|
||||
- reg
|
||||
- nvmem-cells
|
||||
- nvmem-cell-names
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- nvmem-cells
|
||||
- nvmem-cell-names
|
||||
- "#thermal-sensor-cells"
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
|
||||
examples:
|
||||
- |
|
||||
ap_thm0: thermal@32200000 {
|
||||
compatible = "sprd,ums512-thermal";
|
||||
reg = <0 0x32200000 0 0x10000>;
|
||||
clock-names = "enable";
|
||||
clocks = <&aonapb_gate 32>;
|
||||
#thermal-sensor-cells = <1>;
|
||||
nvmem-cells = <&thm0_sign>, <&thm0_ratio>;
|
||||
nvmem-cell-names = "thm_sign_cal", "thm_ratio_cal";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
prometheus-sensor@0 {
|
||||
reg = <0>;
|
||||
nvmem-cells = <&thm0_sen0>;
|
||||
nvmem-cell-names = "sen_delta_cal";
|
||||
};
|
||||
|
||||
ank-sensor@1 {
|
||||
reg = <1>;
|
||||
nvmem-cells = <&thm0_sen1>;
|
||||
nvmem-cell-names = "sen_delta_cal";
|
||||
};
|
||||
};
|
||||
...
|
||||
@@ -142,11 +142,11 @@ Required properties:
|
||||
- trips: A sub-node which is a container of only trip point nodes
|
||||
Type: sub-node required to describe the thermal zone.
|
||||
|
||||
Optional property:
|
||||
- cooling-maps: A sub-node which is a container of only cooling device
|
||||
Type: sub-node map nodes, used to describe the relation between trips
|
||||
and cooling devices.
|
||||
|
||||
Optional property:
|
||||
- coefficients: An array of integers (one signed cell) containing
|
||||
Type: array coefficients to compose a linear relation between
|
||||
Elem size: one cell the sensors listed in the thermal-sensors property.
|
||||
|
||||
65
Documentation/devicetree/bindings/watchdog/ti,rti-wdt.yaml
Normal file
65
Documentation/devicetree/bindings/watchdog/ti,rti-wdt.yaml
Normal file
@@ -0,0 +1,65 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/watchdog/ti,rti-wdt.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Texas Instruments K3 SoC Watchdog Timer
|
||||
|
||||
maintainers:
|
||||
- Tero Kristo <t-kristo@ti.com>
|
||||
|
||||
description:
|
||||
The TI K3 SoC watchdog timer is implemented via the RTI (Real Time
|
||||
Interrupt) IP module. This timer adds a support for windowed watchdog
|
||||
mode, which will signal an error if it is pinged outside the watchdog
|
||||
time window, meaning either too early or too late. The error signal
|
||||
generated can be routed to either interrupt a safety controller or
|
||||
to directly reset the SoC.
|
||||
|
||||
allOf:
|
||||
- $ref: "watchdog.yaml#"
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- ti,j7-rti-wdt
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
assigned-clocks:
|
||||
maxItems: 1
|
||||
|
||||
assigned-clocks-parents:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- power-domains
|
||||
|
||||
examples:
|
||||
- |
|
||||
/*
|
||||
* RTI WDT in main domain on J721e SoC. Assigned clocks are used to
|
||||
* select the source clock for the watchdog, forcing it to tick with
|
||||
* a 32kHz clock in this case.
|
||||
*/
|
||||
#include <dt-bindings/soc/ti,sci_pm_domain.h>
|
||||
|
||||
watchdog0: rti@2200000 {
|
||||
compatible = "ti,rti-wdt";
|
||||
reg = <0x0 0x2200000 0x0 0x100>;
|
||||
clocks = <&k3_clks 252 1>;
|
||||
power-domains = <&k3_pds 252 TI_SCI_PD_EXCLUSIVE>;
|
||||
assigned-clocks = <&k3_clks 252 1>;
|
||||
assigned-clock-parents = <&k3_clks 252 5>;
|
||||
};
|
||||
@@ -105,8 +105,8 @@ and this variation will modulate the cooling effect.
|
||||
idle <-------------->
|
||||
running
|
||||
|
||||
<----------------------------->
|
||||
duty cycle 33%
|
||||
<--------------------->
|
||||
duty cycle 33%
|
||||
|
||||
|
||||
^
|
||||
|
||||
@@ -158,6 +158,16 @@ Options
|
||||
/sys/fs/9p/caches. (applies only to cache=fscache)
|
||||
============= ===============================================================
|
||||
|
||||
Behavior
|
||||
========
|
||||
|
||||
This section aims at describing 9p 'quirks' that can be different
|
||||
from a local filesystem behaviors.
|
||||
|
||||
- Setting O_NONBLOCK on a file will make client reads return as early
|
||||
as the server returns some data instead of trying to fill the read
|
||||
buffer with the requested amount of bytes or end of file is reached.
|
||||
|
||||
Resources
|
||||
=========
|
||||
|
||||
|
||||
@@ -107,17 +107,17 @@ Mount Options
|
||||
address its connection to the monitor originates from.
|
||||
|
||||
wsize=X
|
||||
Specify the maximum write size in bytes. Default: 16 MB.
|
||||
Specify the maximum write size in bytes. Default: 64 MB.
|
||||
|
||||
rsize=X
|
||||
Specify the maximum read size in bytes. Default: 16 MB.
|
||||
Specify the maximum read size in bytes. Default: 64 MB.
|
||||
|
||||
rasize=X
|
||||
Specify the maximum readahead size in bytes. Default: 8 MB.
|
||||
|
||||
mount_timeout=X
|
||||
Specify the timeout value for mount (in seconds), in the case
|
||||
of a non-responsive Ceph file system. The default is 30
|
||||
of a non-responsive Ceph file system. The default is 60
|
||||
seconds.
|
||||
|
||||
caps_max=X
|
||||
|
||||
@@ -40,13 +40,46 @@ On 64bit systems, even if all overlay layers are not on the same
|
||||
underlying filesystem, the same compliant behavior could be achieved
|
||||
with the "xino" feature. The "xino" feature composes a unique object
|
||||
identifier from the real object st_ino and an underlying fsid index.
|
||||
|
||||
If all underlying filesystems support NFS file handles and export file
|
||||
handles with 32bit inode number encoding (e.g. ext4), overlay filesystem
|
||||
will use the high inode number bits for fsid. Even when the underlying
|
||||
filesystem uses 64bit inode numbers, users can still enable the "xino"
|
||||
feature with the "-o xino=on" overlay mount option. That is useful for the
|
||||
case of underlying filesystems like xfs and tmpfs, which use 64bit inode
|
||||
numbers, but are very unlikely to use the high inode number bit.
|
||||
numbers, but are very unlikely to use the high inode number bits. In case
|
||||
the underlying inode number does overflow into the high xino bits, overlay
|
||||
filesystem will fall back to the non xino behavior for that inode.
|
||||
|
||||
The following table summarizes what can be expected in different overlay
|
||||
configurations.
|
||||
|
||||
Inode properties
|
||||
````````````````
|
||||
|
||||
+--------------+------------+------------+-----------------+----------------+
|
||||
|Configuration | Persistent | Uniform | st_ino == d_ino | d_ino == i_ino |
|
||||
| | st_ino | st_dev | | [*] |
|
||||
+==============+=====+======+=====+======+========+========+========+=======+
|
||||
| | dir | !dir | dir | !dir | dir + !dir | dir | !dir |
|
||||
+--------------+-----+------+-----+------+--------+--------+--------+-------+
|
||||
| All layers | Y | Y | Y | Y | Y | Y | Y | Y |
|
||||
| on same fs | | | | | | | | |
|
||||
+--------------+-----+------+-----+------+--------+--------+--------+-------+
|
||||
| Layers not | N | Y | Y | N | N | Y | N | Y |
|
||||
| on same fs, | | | | | | | | |
|
||||
| xino=off | | | | | | | | |
|
||||
+--------------+-----+------+-----+------+--------+--------+--------+-------+
|
||||
| xino=on/auto | Y | Y | Y | Y | Y | Y | Y | Y |
|
||||
| | | | | | | | | |
|
||||
+--------------+-----+------+-----+------+--------+--------+--------+-------+
|
||||
| xino=on/auto,| N | Y | Y | N | N | Y | N | Y |
|
||||
| ino overflow | | | | | | | | |
|
||||
+--------------+-----+------+-----+------+--------+--------+--------+-------+
|
||||
|
||||
[*] nfsd v3 readdirplus verifies d_ino == i_ino. i_ino is exposed via several
|
||||
/proc files, such as /proc/locks and /proc/self/fdinfo/<fd> of an inotify
|
||||
file descriptor.
|
||||
|
||||
|
||||
Upper and Lower
|
||||
@@ -271,6 +304,50 @@ overlay filesystem (though an operation on the name of the file such as
|
||||
rename or unlink will of course be noticed and handled).
|
||||
|
||||
|
||||
Permission model
|
||||
----------------
|
||||
|
||||
Permission checking in the overlay filesystem follows these principles:
|
||||
|
||||
1) permission check SHOULD return the same result before and after copy up
|
||||
|
||||
2) task creating the overlay mount MUST NOT gain additional privileges
|
||||
|
||||
3) non-mounting task MAY gain additional privileges through the overlay,
|
||||
compared to direct access on underlying lower or upper filesystems
|
||||
|
||||
This is achieved by performing two permission checks on each access
|
||||
|
||||
a) check if current task is allowed access based on local DAC (owner,
|
||||
group, mode and posix acl), as well as MAC checks
|
||||
|
||||
b) check if mounting task would be allowed real operation on lower or
|
||||
upper layer based on underlying filesystem permissions, again including
|
||||
MAC checks
|
||||
|
||||
Check (a) ensures consistency (1) since owner, group, mode and posix acls
|
||||
are copied up. On the other hand it can result in server enforced
|
||||
permissions (used by NFS, for example) being ignored (3).
|
||||
|
||||
Check (b) ensures that no task gains permissions to underlying layers that
|
||||
the mounting task does not have (2). This also means that it is possible
|
||||
to create setups where the consistency rule (1) does not hold; normally,
|
||||
however, the mounting task will have sufficient privileges to perform all
|
||||
operations.
|
||||
|
||||
Another way to demonstrate this model is drawing parallels between
|
||||
|
||||
mount -t overlay overlay -olowerdir=/lower,upperdir=/upper,... /merged
|
||||
|
||||
and
|
||||
|
||||
cp -a /lower /upper
|
||||
mount --bind /upper /merged
|
||||
|
||||
The resulting access permissions should be the same. The difference is in
|
||||
the time of copy (on-demand vs. up-front).
|
||||
|
||||
|
||||
Multiple lower layers
|
||||
---------------------
|
||||
|
||||
@@ -406,7 +483,8 @@ guarantee that the values of st_ino and st_dev returned by stat(2) and the
|
||||
value of d_ino returned by readdir(3) will act like on a normal filesystem.
|
||||
E.g. the value of st_dev may be different for two objects in the same
|
||||
overlay filesystem and the value of st_ino for directory objects may not be
|
||||
persistent and could change even while the overlay filesystem is mounted.
|
||||
persistent and could change even while the overlay filesystem is mounted, as
|
||||
summarized in the `Inode properties`_ table above.
|
||||
|
||||
|
||||
Changes to underlying filesystems
|
||||
|
||||
40
Documentation/vm/free_page_reporting.rst
Normal file
40
Documentation/vm/free_page_reporting.rst
Normal file
@@ -0,0 +1,40 @@
|
||||
.. _free_page_reporting:
|
||||
|
||||
=====================
|
||||
Free Page Reporting
|
||||
=====================
|
||||
|
||||
Free page reporting is an API by which a device can register to receive
|
||||
lists of pages that are currently unused by the system. This is useful in
|
||||
the case of virtualization where a guest is then able to use this data to
|
||||
notify the hypervisor that it is no longer using certain pages in memory.
|
||||
|
||||
For the driver, typically a balloon driver, to use of this functionality
|
||||
it will allocate and initialize a page_reporting_dev_info structure. The
|
||||
field within the structure it will populate is the "report" function
|
||||
pointer used to process the scatterlist. It must also guarantee that it can
|
||||
handle at least PAGE_REPORTING_CAPACITY worth of scatterlist entries per
|
||||
call to the function. A call to page_reporting_register will register the
|
||||
page reporting interface with the reporting framework assuming no other
|
||||
page reporting devices are already registered.
|
||||
|
||||
Once registered the page reporting API will begin reporting batches of
|
||||
pages to the driver. The API will start reporting pages 2 seconds after
|
||||
the interface is registered and will continue to do so 2 seconds after any
|
||||
page of a sufficiently high order is freed.
|
||||
|
||||
Pages reported will be stored in the scatterlist passed to the reporting
|
||||
function with the final entry having the end bit set in entry nent - 1.
|
||||
While pages are being processed by the report function they will not be
|
||||
accessible to the allocator. Once the report function has been completed
|
||||
the pages will be returned to the free area from which they were obtained.
|
||||
|
||||
Prior to removing a driver that is making use of free page reporting it
|
||||
is necessary to call page_reporting_unregister to have the
|
||||
page_reporting_dev_info structure that is currently in use by free page
|
||||
reporting removed. Doing this will prevent further reports from being
|
||||
issued via the interface. If another driver or the same driver is
|
||||
registered it is possible for it to resume where the previous driver had
|
||||
left off in terms of reporting free pages.
|
||||
|
||||
Alexander Duyck, Dec 04, 2019
|
||||
@@ -35,9 +35,11 @@ Zswap evicts pages from compressed cache on an LRU basis to the backing swap
|
||||
device when the compressed pool reaches its size limit. This requirement had
|
||||
been identified in prior community discussions.
|
||||
|
||||
Zswap is disabled by default but can be enabled at boot time by setting
|
||||
the ``enabled`` attribute to 1 at boot time. ie: ``zswap.enabled=1``. Zswap
|
||||
can also be enabled and disabled at runtime using the sysfs interface.
|
||||
Whether Zswap is enabled at the boot time depends on whether
|
||||
the ``CONFIG_ZSWAP_DEFAULT_ON`` Kconfig option is enabled or not.
|
||||
This setting can then be overridden by providing the kernel command line
|
||||
``zswap.enabled=`` option, for example ``zswap.enabled=0``.
|
||||
Zswap can also be enabled and disabled at runtime using the sysfs interface.
|
||||
An example command to enable zswap at runtime, assuming sysfs is mounted
|
||||
at ``/sys``, is::
|
||||
|
||||
@@ -64,9 +66,10 @@ allocation in zpool is not directly accessible by address. Rather, a handle is
|
||||
returned by the allocation routine and that handle must be mapped before being
|
||||
accessed. The compressed memory pool grows on demand and shrinks as compressed
|
||||
pages are freed. The pool is not preallocated. By default, a zpool
|
||||
of type zbud is created, but it can be selected at boot time by
|
||||
setting the ``zpool`` attribute, e.g. ``zswap.zpool=zbud``. It can
|
||||
also be changed at runtime using the sysfs ``zpool`` attribute, e.g.::
|
||||
of type selected in ``CONFIG_ZSWAP_ZPOOL_DEFAULT`` Kconfig option is created,
|
||||
but it can be overridden at boot time by setting the ``zpool`` attribute,
|
||||
e.g. ``zswap.zpool=zbud``. It can also be changed at runtime using the sysfs
|
||||
``zpool`` attribute, e.g.::
|
||||
|
||||
echo zbud > /sys/module/zswap/parameters/zpool
|
||||
|
||||
@@ -97,8 +100,9 @@ controlled policy:
|
||||
* max_pool_percent - The maximum percentage of memory that the compressed
|
||||
pool can occupy.
|
||||
|
||||
The default compressor is lzo, but it can be selected at boot time by
|
||||
setting the ``compressor`` attribute, e.g. ``zswap.compressor=lzo``.
|
||||
The default compressor is selected in ``CONFIG_ZSWAP_COMPRESSOR_DEFAULT``
|
||||
Kconfig option, but it can be overridden at boot time by setting the
|
||||
``compressor`` attribute, e.g. ``zswap.compressor=lzo``.
|
||||
It can also be changed at runtime using the sysfs "compressor"
|
||||
attribute, e.g.::
|
||||
|
||||
|
||||
42
MAINTAINERS
42
MAINTAINERS
@@ -77,21 +77,13 @@ Tips for patch submitters
|
||||
|
||||
8. Happy hacking.
|
||||
|
||||
Descriptions of section entries
|
||||
-------------------------------
|
||||
Descriptions of section entries and preferred order
|
||||
---------------------------------------------------
|
||||
|
||||
M: *Mail* patches to: FullName <address@domain>
|
||||
R: Designated *Reviewer*: FullName <address@domain>
|
||||
These reviewers should be CCed on patches.
|
||||
L: *Mailing list* that is relevant to this area
|
||||
W: *Web-page* with status/info
|
||||
B: URI for where to file *bugs*. A web-page with detailed bug
|
||||
filing info, a direct bug tracker link, or a mailto: URI.
|
||||
C: URI for *chat* protocol, server and channel where developers
|
||||
usually hang out, for example irc://server/channel.
|
||||
Q: *Patchwork* web based patch tracking system site
|
||||
T: *SCM* tree type and location.
|
||||
Type is one of: git, hg, quilt, stgit, topgit
|
||||
S: *Status*, one of the following:
|
||||
Supported: Someone is actually paid to look after this.
|
||||
Maintained: Someone actually looks after it.
|
||||
@@ -102,30 +94,39 @@ Descriptions of section entries
|
||||
Obsolete: Old code. Something tagged obsolete generally means
|
||||
it has been replaced by a better system and you
|
||||
should be using that.
|
||||
W: *Web-page* with status/info
|
||||
Q: *Patchwork* web based patch tracking system site
|
||||
B: URI for where to file *bugs*. A web-page with detailed bug
|
||||
filing info, a direct bug tracker link, or a mailto: URI.
|
||||
C: URI for *chat* protocol, server and channel where developers
|
||||
usually hang out, for example irc://server/channel.
|
||||
P: Subsystem Profile document for more details submitting
|
||||
patches to the given subsystem. This is either an in-tree file,
|
||||
or a URI. See Documentation/maintainer/maintainer-entry-profile.rst
|
||||
for details.
|
||||
T: *SCM* tree type and location.
|
||||
Type is one of: git, hg, quilt, stgit, topgit
|
||||
F: *Files* and directories wildcard patterns.
|
||||
A trailing slash includes all files and subdirectory files.
|
||||
F: drivers/net/ all files in and below drivers/net
|
||||
F: drivers/net/* all files in drivers/net, but not below
|
||||
F: */net/* all files in "any top level directory"/net
|
||||
One pattern per line. Multiple F: lines acceptable.
|
||||
N: Files and directories *Regex* patterns.
|
||||
N: [^a-z]tegra all files whose path contains the word tegra
|
||||
One pattern per line. Multiple N: lines acceptable.
|
||||
scripts/get_maintainer.pl has different behavior for files that
|
||||
match F: pattern and matches of N: patterns. By default,
|
||||
get_maintainer will not look at git log history when an F: pattern
|
||||
match occurs. When an N: match occurs, git log history is used
|
||||
to also notify the people that have git commit signatures.
|
||||
X: *Excluded* files and directories that are NOT maintained, same
|
||||
rules as F:. Files exclusions are tested before file matches.
|
||||
Can be useful for excluding a specific subdirectory, for instance:
|
||||
F: net/
|
||||
X: net/ipv6/
|
||||
matches all files in and below net excluding net/ipv6/
|
||||
N: Files and directories *Regex* patterns.
|
||||
N: [^a-z]tegra all files whose path contains tegra
|
||||
(not including files like integrator)
|
||||
One pattern per line. Multiple N: lines acceptable.
|
||||
scripts/get_maintainer.pl has different behavior for files that
|
||||
match F: pattern and matches of N: patterns. By default,
|
||||
get_maintainer will not look at git log history when an F: pattern
|
||||
match occurs. When an N: match occurs, git log history is used
|
||||
to also notify the people that have git commit signatures.
|
||||
K: *Content regex* (perl extended) pattern match in a patch or file.
|
||||
For instance:
|
||||
K: of_get_profile
|
||||
@@ -1443,6 +1444,7 @@ M: Will Deacon <will@kernel.org>
|
||||
R: Robin Murphy <robin.murphy@arm.com>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/iommu/arm,smmu*
|
||||
F: drivers/iommu/arm-smmu*
|
||||
F: drivers/iommu/io-pgtable-arm.c
|
||||
F: drivers/iommu/io-pgtable-arm-v7s.c
|
||||
@@ -9668,6 +9670,7 @@ F: drivers/acpi/nfit/*
|
||||
F: include/linux/nd.h
|
||||
F: include/linux/libnvdimm.h
|
||||
F: include/uapi/linux/ndctl.h
|
||||
F: tools/testing/nvdimm/
|
||||
|
||||
LICENSES and SPDX stuff
|
||||
M: Thomas Gleixner <tglx@linutronix.de>
|
||||
@@ -17875,10 +17878,12 @@ L: virtualization@lists.linux-foundation.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/virtio/
|
||||
F: drivers/virtio/
|
||||
F: drivers/vdpa/
|
||||
F: tools/virtio/
|
||||
F: drivers/net/virtio_net.c
|
||||
F: drivers/block/virtio_blk.c
|
||||
F: include/linux/virtio*.h
|
||||
F: include/linux/vdpa.h
|
||||
F: include/uapi/linux/virtio_*.h
|
||||
F: drivers/crypto/virtio/
|
||||
F: mm/balloon_compaction.c
|
||||
@@ -17946,6 +17951,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git
|
||||
S: Maintained
|
||||
F: drivers/vhost/
|
||||
F: include/uapi/linux/vhost.h
|
||||
F: include/linux/vhost_iotlb.h
|
||||
|
||||
VIRTIO INPUT DRIVER
|
||||
M: Gerd Hoffmann <kraxel@redhat.com>
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
|
||||
#include <asm/smp.h>
|
||||
|
||||
struct bootmem_data_t; /* stupid forward decl. */
|
||||
|
||||
/*
|
||||
* Following are macros that are specific to this numa platform.
|
||||
*/
|
||||
|
||||
@@ -32,5 +32,5 @@ grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#define __NR_syscalls\t%s\n" "${nxt}"
|
||||
printf "#endif\n"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
printf "#endif /* %s */\n" "${fileguard}"
|
||||
) > "$out"
|
||||
|
||||
@@ -312,7 +312,6 @@ static struct pwm_lookup cm_x300_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data cm_x300_backlight_data = {
|
||||
.max_brightness = 100,
|
||||
.dft_brightness = 100,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device cm_x300_backlight_device = {
|
||||
|
||||
@@ -202,7 +202,6 @@ static struct pwm_lookup income_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data income_backlight_data = {
|
||||
.max_brightness = 0x3ff,
|
||||
.dft_brightness = 0x1ff,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device income_backlight = {
|
||||
|
||||
@@ -563,13 +563,20 @@ static void corgi_bl_kick_battery(void)
|
||||
}
|
||||
}
|
||||
|
||||
static struct gpiod_lookup_table corgi_lcdcon_gpio_table = {
|
||||
.dev_id = "spi1.1",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", CORGI_GPIO_BACKLIGHT_CONT,
|
||||
"BL_CONT", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
|
||||
static struct corgi_lcd_platform_data corgi_lcdcon_info = {
|
||||
.init_mode = CORGI_LCD_MODE_VGA,
|
||||
.max_intensity = 0x2f,
|
||||
.default_intensity = 0x1f,
|
||||
.limit_mask = 0x0b,
|
||||
.gpio_backlight_cont = CORGI_GPIO_BACKLIGHT_CONT,
|
||||
.gpio_backlight_on = -1,
|
||||
.kick_battery = corgi_bl_kick_battery,
|
||||
};
|
||||
|
||||
@@ -609,6 +616,7 @@ static struct spi_board_info corgi_spi_devices[] = {
|
||||
static void __init corgi_init_spi(void)
|
||||
{
|
||||
pxa2xx_set_spi_info(1, &corgi_spi_info);
|
||||
gpiod_add_lookup_table(&corgi_lcdcon_gpio_table);
|
||||
spi_register_board_info(ARRAY_AND_SIZE(corgi_spi_devices));
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -55,7 +55,6 @@ static struct pwm_lookup ezx_pwm_lookup[] __maybe_unused = {
|
||||
static struct platform_pwm_backlight_data ezx_backlight_data = {
|
||||
.max_brightness = 1023,
|
||||
.dft_brightness = 1023,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device ezx_backlight_device = {
|
||||
|
||||
@@ -556,7 +556,6 @@ static struct platform_device hx4700_lcd = {
|
||||
static struct platform_pwm_backlight_data backlight_data = {
|
||||
.max_brightness = 200,
|
||||
.dft_brightness = 100,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device backlight = {
|
||||
|
||||
@@ -277,7 +277,6 @@ static struct pwm_lookup lpd270_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data lpd270_backlight_data = {
|
||||
.max_brightness = 1,
|
||||
.dft_brightness = 1,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device lpd270_backlight_device = {
|
||||
|
||||
@@ -401,7 +401,6 @@ static void magician_backlight_exit(struct device *dev)
|
||||
static struct platform_pwm_backlight_data backlight_data = {
|
||||
.max_brightness = 272,
|
||||
.dft_brightness = 100,
|
||||
.enable_gpio = -1,
|
||||
.init = magician_backlight_init,
|
||||
.notify = magician_backlight_notify,
|
||||
.exit = magician_backlight_exit,
|
||||
|
||||
@@ -256,7 +256,6 @@ static struct pwm_lookup mainstone_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data mainstone_backlight_data = {
|
||||
.max_brightness = 1023,
|
||||
.dft_brightness = 1023,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device mainstone_backlight_device = {
|
||||
|
||||
@@ -176,7 +176,6 @@ static struct pwm_lookup mioa701_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data mioa701_backlight_data = {
|
||||
.max_brightness = 100,
|
||||
.dft_brightness = 50,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -318,7 +318,6 @@ static void palm27x_backlight_exit(struct device *dev)
|
||||
static struct platform_pwm_backlight_data palm27x_backlight_data = {
|
||||
.max_brightness = 0xfe,
|
||||
.dft_brightness = 0x7e,
|
||||
.enable_gpio = -1,
|
||||
.init = palm27x_backlight_init,
|
||||
.notify = palm27x_backlight_notify,
|
||||
.exit = palm27x_backlight_exit,
|
||||
|
||||
@@ -174,6 +174,15 @@ static inline void palmtc_keys_init(void) {}
|
||||
* Backlight
|
||||
******************************************************************************/
|
||||
#if defined(CONFIG_BACKLIGHT_PWM) || defined(CONFIG_BACKLIGHT_PWM_MODULE)
|
||||
|
||||
static struct gpiod_lookup_table palmtc_pwm_bl_gpio_table = {
|
||||
.dev_id = "pwm-backlight.0",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", GPIO_NR_PALMTC_BL_POWER,
|
||||
"enable", GPIO_ACTIVE_HIGH),
|
||||
},
|
||||
};
|
||||
|
||||
static struct pwm_lookup palmtc_pwm_lookup[] = {
|
||||
PWM_LOOKUP("pxa25x-pwm.1", 0, "pwm-backlight.0", NULL, PALMTC_PERIOD_NS,
|
||||
PWM_POLARITY_NORMAL),
|
||||
@@ -182,7 +191,6 @@ static struct pwm_lookup palmtc_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data palmtc_backlight_data = {
|
||||
.max_brightness = PALMTC_MAX_INTENSITY,
|
||||
.dft_brightness = PALMTC_MAX_INTENSITY,
|
||||
.enable_gpio = GPIO_NR_PALMTC_BL_POWER,
|
||||
};
|
||||
|
||||
static struct platform_device palmtc_backlight = {
|
||||
@@ -195,6 +203,7 @@ static struct platform_device palmtc_backlight = {
|
||||
|
||||
static void __init palmtc_pwm_init(void)
|
||||
{
|
||||
gpiod_add_lookup_table(&palmtc_pwm_bl_gpio_table);
|
||||
pwm_add_table(palmtc_pwm_lookup, ARRAY_SIZE(palmtc_pwm_lookup));
|
||||
platform_device_register(&palmtc_backlight);
|
||||
}
|
||||
|
||||
@@ -175,7 +175,6 @@ static void palmte2_backlight_exit(struct device *dev)
|
||||
static struct platform_pwm_backlight_data palmte2_backlight_data = {
|
||||
.max_brightness = PALMTE2_MAX_INTENSITY,
|
||||
.dft_brightness = PALMTE2_MAX_INTENSITY,
|
||||
.enable_gpio = -1,
|
||||
.init = palmte2_backlight_init,
|
||||
.notify = palmte2_backlight_notify,
|
||||
.exit = palmte2_backlight_exit,
|
||||
|
||||
@@ -154,7 +154,6 @@ static struct pwm_lookup pcm990_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data pcm990_backlight_data = {
|
||||
.max_brightness = 1023,
|
||||
.dft_brightness = 1023,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device pcm990_backlight_device = {
|
||||
|
||||
@@ -525,13 +525,33 @@ static void spitz_bl_kick_battery(void)
|
||||
}
|
||||
}
|
||||
|
||||
static struct gpiod_lookup_table spitz_lcdcon_gpio_table = {
|
||||
.dev_id = "spi2.1",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", SPITZ_GPIO_BACKLIGHT_CONT,
|
||||
"BL_CONT", GPIO_ACTIVE_LOW),
|
||||
GPIO_LOOKUP("gpio-pxa", SPITZ_GPIO_BACKLIGHT_ON,
|
||||
"BL_ON", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
|
||||
static struct gpiod_lookup_table akita_lcdcon_gpio_table = {
|
||||
.dev_id = "spi2.1",
|
||||
.table = {
|
||||
GPIO_LOOKUP("gpio-pxa", AKITA_GPIO_BACKLIGHT_CONT,
|
||||
"BL_CONT", GPIO_ACTIVE_LOW),
|
||||
GPIO_LOOKUP("gpio-pxa", AKITA_GPIO_BACKLIGHT_ON,
|
||||
"BL_ON", GPIO_ACTIVE_HIGH),
|
||||
{ },
|
||||
},
|
||||
};
|
||||
|
||||
static struct corgi_lcd_platform_data spitz_lcdcon_info = {
|
||||
.init_mode = CORGI_LCD_MODE_VGA,
|
||||
.max_intensity = 0x2f,
|
||||
.default_intensity = 0x1f,
|
||||
.limit_mask = 0x0b,
|
||||
.gpio_backlight_cont = SPITZ_GPIO_BACKLIGHT_CONT,
|
||||
.gpio_backlight_on = SPITZ_GPIO_BACKLIGHT_ON,
|
||||
.kick_battery = spitz_bl_kick_battery,
|
||||
};
|
||||
|
||||
@@ -574,12 +594,10 @@ static struct pxa2xx_spi_controller spitz_spi_info = {
|
||||
|
||||
static void __init spitz_spi_init(void)
|
||||
{
|
||||
struct corgi_lcd_platform_data *lcd_data = &spitz_lcdcon_info;
|
||||
|
||||
if (machine_is_akita()) {
|
||||
lcd_data->gpio_backlight_cont = AKITA_GPIO_BACKLIGHT_CONT;
|
||||
lcd_data->gpio_backlight_on = AKITA_GPIO_BACKLIGHT_ON;
|
||||
}
|
||||
if (machine_is_akita())
|
||||
gpiod_add_lookup_table(&akita_lcdcon_gpio_table);
|
||||
else
|
||||
gpiod_add_lookup_table(&spitz_lcdcon_gpio_table);
|
||||
|
||||
pxa2xx_set_spi_info(2, &spitz_spi_info);
|
||||
spi_register_board_info(ARRAY_AND_SIZE(spitz_spi_devices));
|
||||
|
||||
@@ -178,13 +178,11 @@ static struct platform_pwm_backlight_data tavorevb_backlight_data[] = {
|
||||
/* primary backlight */
|
||||
.max_brightness = 100,
|
||||
.dft_brightness = 100,
|
||||
.enable_gpio = -1,
|
||||
},
|
||||
[1] = {
|
||||
/* secondary backlight */
|
||||
.max_brightness = 100,
|
||||
.dft_brightness = 100,
|
||||
.enable_gpio = -1,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -404,7 +404,6 @@ static void viper_backlight_exit(struct device *dev)
|
||||
static struct platform_pwm_backlight_data viper_backlight_data = {
|
||||
.max_brightness = 100,
|
||||
.dft_brightness = 100,
|
||||
.enable_gpio = -1,
|
||||
.init = viper_backlight_init,
|
||||
.notify = viper_backlight_notify,
|
||||
.exit = viper_backlight_exit,
|
||||
|
||||
@@ -210,13 +210,11 @@ static struct platform_pwm_backlight_data z2_backlight_data[] = {
|
||||
/* Keypad Backlight */
|
||||
.max_brightness = 1023,
|
||||
.dft_brightness = 0,
|
||||
.enable_gpio = -1,
|
||||
},
|
||||
[1] = {
|
||||
/* LCD Backlight */
|
||||
.max_brightness = 1023,
|
||||
.dft_brightness = 512,
|
||||
.enable_gpio = -1,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -117,7 +117,6 @@ static struct pwm_lookup zylonite_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data zylonite_backlight_data = {
|
||||
.max_brightness = 100,
|
||||
.dft_brightness = 100,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device zylonite_backlight_device = {
|
||||
|
||||
@@ -516,7 +516,6 @@ static void h1940_backlight_exit(struct device *dev)
|
||||
static struct platform_pwm_backlight_data backlight_data = {
|
||||
.max_brightness = 100,
|
||||
.dft_brightness = 50,
|
||||
.enable_gpio = -1,
|
||||
.init = h1940_backlight_init,
|
||||
.notify = h1940_backlight_notify,
|
||||
.exit = h1940_backlight_exit,
|
||||
|
||||
@@ -534,7 +534,6 @@ static int rx1950_backlight_notify(struct device *dev, int brightness)
|
||||
static struct platform_pwm_backlight_data rx1950_backlight_data = {
|
||||
.max_brightness = 24,
|
||||
.dft_brightness = 4,
|
||||
.enable_gpio = -1,
|
||||
.init = rx1950_backlight_init,
|
||||
.notify = rx1950_backlight_notify,
|
||||
.exit = rx1950_backlight_exit,
|
||||
|
||||
@@ -65,7 +65,6 @@ static struct samsung_bl_drvdata samsung_dfl_bl_data __initdata = {
|
||||
.plat_data = {
|
||||
.max_brightness = 255,
|
||||
.dft_brightness = 255,
|
||||
.enable_gpio = -1,
|
||||
.init = samsung_bl_init,
|
||||
.exit = samsung_bl_exit,
|
||||
},
|
||||
@@ -111,8 +110,6 @@ void __init samsung_bl_set(struct samsung_bl_gpio_info *gpio_info,
|
||||
samsung_bl_data->dft_brightness = bl_data->dft_brightness;
|
||||
if (bl_data->lth_brightness)
|
||||
samsung_bl_data->lth_brightness = bl_data->lth_brightness;
|
||||
if (bl_data->enable_gpio >= 0)
|
||||
samsung_bl_data->enable_gpio = bl_data->enable_gpio;
|
||||
if (bl_data->init)
|
||||
samsung_bl_data->init = bl_data->init;
|
||||
if (bl_data->notify)
|
||||
|
||||
@@ -114,7 +114,6 @@ static struct pwm_lookup crag6410_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data crag6410_backlight_data = {
|
||||
.max_brightness = 1000,
|
||||
.dft_brightness = 600,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct platform_device crag6410_backlight_device = {
|
||||
|
||||
@@ -115,7 +115,6 @@ static void hmt_bl_exit(struct device *dev)
|
||||
static struct platform_pwm_backlight_data hmt_backlight_data = {
|
||||
.max_brightness = 100 * 256,
|
||||
.dft_brightness = 40 * 256,
|
||||
.enable_gpio = -1,
|
||||
.init = hmt_bl_init,
|
||||
.notify = hmt_bl_notify,
|
||||
.exit = hmt_bl_exit,
|
||||
|
||||
@@ -150,7 +150,6 @@ static int smartq_bl_init(struct device *dev)
|
||||
static struct platform_pwm_backlight_data smartq_backlight_data = {
|
||||
.max_brightness = 1000,
|
||||
.dft_brightness = 600,
|
||||
.enable_gpio = -1,
|
||||
.init = smartq_bl_init,
|
||||
};
|
||||
|
||||
|
||||
@@ -623,7 +623,7 @@ static struct pwm_lookup smdk6410_pwm_lookup[] = {
|
||||
};
|
||||
|
||||
static struct platform_pwm_backlight_data smdk6410_bl_data = {
|
||||
.enable_gpio = -1,
|
||||
/* Intentionally blank */
|
||||
};
|
||||
|
||||
static struct dwc2_hsotg_plat smdk6410_hsotg_pdata;
|
||||
|
||||
@@ -64,6 +64,4 @@ config KVM_ARM_PMU
|
||||
config KVM_INDIRECT_VECTORS
|
||||
def_bool KVM && (HARDEN_BRANCH_PREDICTOR || HARDEN_EL2_VECTORS)
|
||||
|
||||
source "drivers/vhost/Kconfig"
|
||||
|
||||
endif # VIRTUALIZATION
|
||||
|
||||
@@ -141,7 +141,7 @@ good_area:
|
||||
if (!(vma->vm_flags & VM_WRITE))
|
||||
goto bad_area;
|
||||
} else {
|
||||
if (!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
|
||||
if (unlikely(!vma_is_accessible(vma)))
|
||||
goto bad_area;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,5 +32,5 @@ grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#define __NR_syscalls\t%s\n" "${nxt}"
|
||||
printf "#endif\n"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
printf "#endif /* %s */\n" "${fileguard}"
|
||||
) > "$out"
|
||||
|
||||
@@ -54,6 +54,8 @@ SECTIONS {
|
||||
CPUIDLE_TEXT
|
||||
LOCK_TEXT
|
||||
KPROBES_TEXT
|
||||
IRQENTRY_TEXT
|
||||
SOFTIRQENTRY_TEXT
|
||||
*(.gnu.linkonce.t*)
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ good_area:
|
||||
case 1: /* read, present */
|
||||
goto acc_err;
|
||||
case 0: /* read, not present */
|
||||
if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE)))
|
||||
if (unlikely(!vma_is_accessible(vma)))
|
||||
goto acc_err;
|
||||
}
|
||||
|
||||
|
||||
@@ -32,5 +32,5 @@ grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#define __NR_syscalls\t%s\n" "${nxt}"
|
||||
printf "#endif\n"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
printf "#endif /* %s */\n" "${fileguard}"
|
||||
) > "$out"
|
||||
|
||||
@@ -32,6 +32,5 @@ grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#define __NR_syscalls\t%s\n" "${nxt}"
|
||||
printf "#endif\n"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */\n" "${fileguard}"
|
||||
) > "$out"
|
||||
|
||||
@@ -72,6 +72,4 @@ config KVM_MIPS_DEBUG_COP0_COUNTERS
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
source "drivers/vhost/Kconfig"
|
||||
|
||||
endif # VIRTUALIZATION
|
||||
|
||||
@@ -142,7 +142,7 @@ good_area:
|
||||
goto bad_area;
|
||||
}
|
||||
} else {
|
||||
if (!(vma->vm_flags & (VM_READ | VM_WRITE | VM_EXEC)))
|
||||
if (unlikely(!vma_is_accessible(vma)))
|
||||
goto bad_area;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ SECTIONS
|
||||
LOCK_TEXT
|
||||
KPROBES_TEXT
|
||||
IRQENTRY_TEXT
|
||||
SOFTIRQENTRY_TEXT
|
||||
*(.fixup)
|
||||
}
|
||||
|
||||
|
||||
@@ -32,5 +32,5 @@ grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#define __NR_syscalls\t%s\n" "${nxt}"
|
||||
printf "#endif\n"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
printf "#endif /* %s */\n" "${fileguard}"
|
||||
) > "$out"
|
||||
|
||||
@@ -122,6 +122,7 @@ config PPC
|
||||
select ARCH_HAS_GCOV_PROFILE_ALL
|
||||
select ARCH_HAS_KCOV
|
||||
select ARCH_HAS_HUGEPD if HUGETLB_PAGE
|
||||
select ARCH_HAS_MEMREMAP_COMPAT_ALIGN
|
||||
select ARCH_HAS_MMIOWB if PPC64
|
||||
select ARCH_HAS_PHYS_TO_DMA
|
||||
select ARCH_HAS_PMEM_API
|
||||
|
||||
@@ -32,6 +32,5 @@ grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#define __NR_syscalls\t%s\n" "${nxt}"
|
||||
printf "#endif\n"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */\n" "${fileguard}"
|
||||
) > "$out"
|
||||
|
||||
@@ -204,6 +204,4 @@ config KVM_XIVE
|
||||
default y
|
||||
depends on KVM_XICS && PPC_XIVE_NATIVE && KVM_BOOK3S_HV_POSSIBLE
|
||||
|
||||
source "drivers/vhost/Kconfig"
|
||||
|
||||
endif # VIRTUALIZATION
|
||||
|
||||
@@ -422,7 +422,7 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,
|
||||
break;
|
||||
}
|
||||
} else if (vma && hva >= vma->vm_start &&
|
||||
(vma->vm_flags & VM_HUGETLB)) {
|
||||
is_vm_hugetlb_page(vma)) {
|
||||
unsigned long psize = vma_kernel_pagesize(vma);
|
||||
|
||||
tsize = (gtlbe->mas1 & MAS1_TSIZE_MASK) >>
|
||||
|
||||
@@ -314,7 +314,7 @@ static bool access_error(bool is_write, bool is_exec,
|
||||
return false;
|
||||
}
|
||||
|
||||
if (unlikely(!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE))))
|
||||
if (unlikely(!vma_is_accessible(vma)))
|
||||
return true;
|
||||
/*
|
||||
* We should ideally do the vma pkey access check here. But in the
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/mmzone.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <asm/io-workarounds.h>
|
||||
|
||||
@@ -97,3 +98,23 @@ void __iomem *do_ioremap(phys_addr_t pa, phys_addr_t offset, unsigned long size,
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ZONE_DEVICE
|
||||
/*
|
||||
* Override the generic version in mm/memremap.c.
|
||||
*
|
||||
* With hash translation, the direct-map range is mapped with just one
|
||||
* page size selected by htab_init_page_sizes(). Consult
|
||||
* mmu_psize_defs[] to determine the minimum page size alignment.
|
||||
*/
|
||||
unsigned long memremap_compat_align(void)
|
||||
{
|
||||
unsigned int shift = mmu_psize_defs[mmu_linear_psize].shift;
|
||||
|
||||
if (radix_enabled())
|
||||
return SUBSECTION_SIZE;
|
||||
return max(SUBSECTION_SIZE, 1UL << shift);
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(memremap_compat_align);
|
||||
#endif
|
||||
|
||||
@@ -231,16 +231,10 @@ static int memtrace_online(void)
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* If kernel isn't compiled with the auto online option
|
||||
* we need to online the memory ourselves.
|
||||
*/
|
||||
if (!memhp_auto_online) {
|
||||
lock_device_hotplug();
|
||||
walk_memory_blocks(ent->start, ent->size, NULL,
|
||||
online_mem_block);
|
||||
unlock_device_hotplug();
|
||||
}
|
||||
lock_device_hotplug();
|
||||
walk_memory_blocks(ent->start, ent->size, NULL,
|
||||
online_mem_block);
|
||||
unlock_device_hotplug();
|
||||
|
||||
/*
|
||||
* Memory was added successfully so clean up references to it
|
||||
|
||||
@@ -286,25 +286,6 @@ static int papr_scm_ndctl(struct nvdimm_bus_descriptor *nd_desc,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int papr_scm_node(int node)
|
||||
{
|
||||
int min_dist = INT_MAX, dist;
|
||||
int nid, min_node;
|
||||
|
||||
if ((node == NUMA_NO_NODE) || node_online(node))
|
||||
return node;
|
||||
|
||||
min_node = first_online_node;
|
||||
for_each_online_node(nid) {
|
||||
dist = node_distance(node, nid);
|
||||
if (dist < min_dist) {
|
||||
min_dist = dist;
|
||||
min_node = nid;
|
||||
}
|
||||
}
|
||||
return min_node;
|
||||
}
|
||||
|
||||
static int papr_scm_nvdimm_init(struct papr_scm_priv *p)
|
||||
{
|
||||
struct device *dev = &p->pdev->dev;
|
||||
@@ -329,7 +310,7 @@ static int papr_scm_nvdimm_init(struct papr_scm_priv *p)
|
||||
}
|
||||
|
||||
dimm_flags = 0;
|
||||
set_bit(NDD_ALIASING, &dimm_flags);
|
||||
set_bit(NDD_LABELING, &dimm_flags);
|
||||
|
||||
p->nvdimm = nvdimm_create(p->bus, p, NULL, dimm_flags,
|
||||
PAPR_SCM_DIMM_CMD_MASK, 0, NULL);
|
||||
@@ -350,7 +331,7 @@ static int papr_scm_nvdimm_init(struct papr_scm_priv *p)
|
||||
|
||||
memset(&ndr_desc, 0, sizeof(ndr_desc));
|
||||
target_nid = dev_to_node(&p->pdev->dev);
|
||||
online_nid = papr_scm_node(target_nid);
|
||||
online_nid = numa_map_to_online_node(target_nid);
|
||||
ndr_desc.numa_node = online_nid;
|
||||
ndr_desc.target_node = target_nid;
|
||||
ndr_desc.res = &p->res;
|
||||
@@ -362,8 +343,10 @@ static int papr_scm_nvdimm_init(struct papr_scm_priv *p)
|
||||
|
||||
if (p->is_volatile)
|
||||
p->region = nvdimm_volatile_region_create(p->bus, &ndr_desc);
|
||||
else
|
||||
else {
|
||||
set_bit(ND_REGION_PERSIST_MEMCTRL, &ndr_desc.flags);
|
||||
p->region = nvdimm_pmem_region_create(p->bus, &ndr_desc);
|
||||
}
|
||||
if (!p->region) {
|
||||
dev_err(dev, "Error registering region %pR from %pOF\n",
|
||||
ndr_desc.res, p->dn);
|
||||
|
||||
@@ -55,8 +55,4 @@ config KVM_S390_UCONTROL
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
# OK, it's a little counter-intuitive to do this, but it puts it neatly under
|
||||
# the virtualization menu.
|
||||
source "drivers/vhost/Kconfig"
|
||||
|
||||
endif # VIRTUALIZATION
|
||||
|
||||
@@ -1202,6 +1202,7 @@ static int vsie_run(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
|
||||
scb_s->iprcc = PGM_ADDRESSING;
|
||||
scb_s->pgmilc = 4;
|
||||
scb_s->gpsw.addr = __rewind_psw(scb_s->gpsw, 4);
|
||||
rc = 1;
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -787,14 +787,18 @@ static void gmap_call_notifier(struct gmap *gmap, unsigned long start,
|
||||
static inline unsigned long *gmap_table_walk(struct gmap *gmap,
|
||||
unsigned long gaddr, int level)
|
||||
{
|
||||
const int asce_type = gmap->asce & _ASCE_TYPE_MASK;
|
||||
unsigned long *table;
|
||||
|
||||
if ((gmap->asce & _ASCE_TYPE_MASK) + 4 < (level * 4))
|
||||
return NULL;
|
||||
if (gmap_is_shadow(gmap) && gmap->removed)
|
||||
return NULL;
|
||||
if (gaddr & (-1UL << (31 + ((gmap->asce & _ASCE_TYPE_MASK) >> 2)*11)))
|
||||
|
||||
if (asce_type != _ASCE_TYPE_REGION1 &&
|
||||
gaddr & (-1UL << (31 + (asce_type >> 2) * 11)))
|
||||
return NULL;
|
||||
|
||||
table = gmap->table;
|
||||
switch (gmap->asce & _ASCE_TYPE_MASK) {
|
||||
case _ASCE_TYPE_REGION1:
|
||||
@@ -1840,6 +1844,7 @@ int gmap_shadow_r3t(struct gmap *sg, unsigned long saddr, unsigned long r3t,
|
||||
goto out_free;
|
||||
} else if (*table & _REGION_ENTRY_ORIGIN) {
|
||||
rc = -EAGAIN; /* Race with shadow */
|
||||
goto out_free;
|
||||
}
|
||||
crst_table_init(s_r3t, _REGION3_ENTRY_EMPTY);
|
||||
/* mark as invalid as long as the parent table is not protected */
|
||||
|
||||
@@ -32,5 +32,5 @@ grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#define __NR_syscalls\t%s\n" "${nxt}"
|
||||
printf "#endif\n"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
printf "#endif /* %s */\n" "${fileguard}"
|
||||
) > "$out"
|
||||
|
||||
@@ -355,7 +355,7 @@ static inline int access_error(int error_code, struct vm_area_struct *vma)
|
||||
return 1;
|
||||
|
||||
/* read, not present: */
|
||||
if (unlikely(!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE))))
|
||||
if (unlikely(!vma_is_accessible(vma)))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -32,5 +32,5 @@ grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
|
||||
printf "#define __NR_syscalls\t%s\n" "${nxt}"
|
||||
printf "#endif\n"
|
||||
printf "\n"
|
||||
printf "#endif /* %s */" "${fileguard}"
|
||||
printf "#endif /* %s */\n" "${fileguard}"
|
||||
) > "$out"
|
||||
|
||||
@@ -4,10 +4,6 @@
|
||||
|
||||
#define BUILD_VDSO32
|
||||
|
||||
#ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
#undef CONFIG_OPTIMIZE_INLINING
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SPARC64
|
||||
|
||||
/*
|
||||
|
||||
@@ -55,7 +55,6 @@ static struct pwm_lookup nb0916_pwm_lookup[] = {
|
||||
static struct platform_pwm_backlight_data nb0916_backlight_data = {
|
||||
.max_brightness = 100,
|
||||
.dft_brightness = 100,
|
||||
.enable_gpio = -1,
|
||||
};
|
||||
|
||||
static struct gpio_keys_button nb0916_gpio_keys[] = {
|
||||
|
||||
@@ -151,6 +151,7 @@ config X86
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE
|
||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD if X86_64
|
||||
select HAVE_ARCH_USERFAULTFD_WP if USERFAULTFD
|
||||
select HAVE_ARCH_VMAP_STACK if X86_64
|
||||
select HAVE_ARCH_WITHIN_STACK_FRAMES
|
||||
select HAVE_ASM_MODVERSIONS
|
||||
@@ -1662,6 +1663,7 @@ config X86_PMEM_LEGACY
|
||||
depends on PHYS_ADDR_T_64BIT
|
||||
depends on BLK_DEV
|
||||
select X86_PMEM_LEGACY_DEVICE
|
||||
select NUMA_KEEP_MEMINFO if NUMA
|
||||
select LIBNVDIMM
|
||||
help
|
||||
Treat memory marked using the non-standard e820 type of 12 as used
|
||||
|
||||
@@ -285,7 +285,6 @@ CONFIG_EARLY_PRINTK_DBGP=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_DEBUG_RODATA_TEST is not set
|
||||
CONFIG_DEBUG_BOOT_PARAMS=y
|
||||
CONFIG_OPTIMIZE_INLINING=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITY_NETWORK=y
|
||||
CONFIG_SECURITY_SELINUX=y
|
||||
|
||||
@@ -282,7 +282,6 @@ CONFIG_EARLY_PRINTK_DBGP=y
|
||||
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||
# CONFIG_DEBUG_RODATA_TEST is not set
|
||||
CONFIG_DEBUG_BOOT_PARAMS=y
|
||||
CONFIG_OPTIMIZE_INLINING=y
|
||||
CONFIG_UNWINDER_ORC=y
|
||||
CONFIG_SECURITY=y
|
||||
CONFIG_SECURITY_NETWORK=y
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#define BUILD_VDSO32
|
||||
|
||||
#ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
#undef CONFIG_OPTIMIZE_INLINING
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_X86_64
|
||||
|
||||
/*
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include <asm/x86_init.h>
|
||||
#include <asm/fpu/xstate.h>
|
||||
#include <asm/fpu/api.h>
|
||||
#include <asm-generic/pgtable_uffd.h>
|
||||
|
||||
extern pgd_t early_top_pgt[PTRS_PER_PGD];
|
||||
int __init __early_make_pgtable(unsigned long address, pmdval_t pmd);
|
||||
@@ -313,6 +314,23 @@ static inline pte_t pte_clear_flags(pte_t pte, pteval_t clear)
|
||||
return native_make_pte(v & ~clear);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_ARCH_USERFAULTFD_WP
|
||||
static inline int pte_uffd_wp(pte_t pte)
|
||||
{
|
||||
return pte_flags(pte) & _PAGE_UFFD_WP;
|
||||
}
|
||||
|
||||
static inline pte_t pte_mkuffd_wp(pte_t pte)
|
||||
{
|
||||
return pte_set_flags(pte, _PAGE_UFFD_WP);
|
||||
}
|
||||
|
||||
static inline pte_t pte_clear_uffd_wp(pte_t pte)
|
||||
{
|
||||
return pte_clear_flags(pte, _PAGE_UFFD_WP);
|
||||
}
|
||||
#endif /* CONFIG_HAVE_ARCH_USERFAULTFD_WP */
|
||||
|
||||
static inline pte_t pte_mkclean(pte_t pte)
|
||||
{
|
||||
return pte_clear_flags(pte, _PAGE_DIRTY);
|
||||
@@ -392,6 +410,23 @@ static inline pmd_t pmd_clear_flags(pmd_t pmd, pmdval_t clear)
|
||||
return native_make_pmd(v & ~clear);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HAVE_ARCH_USERFAULTFD_WP
|
||||
static inline int pmd_uffd_wp(pmd_t pmd)
|
||||
{
|
||||
return pmd_flags(pmd) & _PAGE_UFFD_WP;
|
||||
}
|
||||
|
||||
static inline pmd_t pmd_mkuffd_wp(pmd_t pmd)
|
||||
{
|
||||
return pmd_set_flags(pmd, _PAGE_UFFD_WP);
|
||||
}
|
||||
|
||||
static inline pmd_t pmd_clear_uffd_wp(pmd_t pmd)
|
||||
{
|
||||
return pmd_clear_flags(pmd, _PAGE_UFFD_WP);
|
||||
}
|
||||
#endif /* CONFIG_HAVE_ARCH_USERFAULTFD_WP */
|
||||
|
||||
static inline pmd_t pmd_mkold(pmd_t pmd)
|
||||
{
|
||||
return pmd_clear_flags(pmd, _PAGE_ACCESSED);
|
||||
@@ -1374,6 +1409,38 @@ static inline pmd_t pmd_swp_clear_soft_dirty(pmd_t pmd)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HAVE_ARCH_USERFAULTFD_WP
|
||||
static inline pte_t pte_swp_mkuffd_wp(pte_t pte)
|
||||
{
|
||||
return pte_set_flags(pte, _PAGE_SWP_UFFD_WP);
|
||||
}
|
||||
|
||||
static inline int pte_swp_uffd_wp(pte_t pte)
|
||||
{
|
||||
return pte_flags(pte) & _PAGE_SWP_UFFD_WP;
|
||||
}
|
||||
|
||||
static inline pte_t pte_swp_clear_uffd_wp(pte_t pte)
|
||||
{
|
||||
return pte_clear_flags(pte, _PAGE_SWP_UFFD_WP);
|
||||
}
|
||||
|
||||
static inline pmd_t pmd_swp_mkuffd_wp(pmd_t pmd)
|
||||
{
|
||||
return pmd_set_flags(pmd, _PAGE_SWP_UFFD_WP);
|
||||
}
|
||||
|
||||
static inline int pmd_swp_uffd_wp(pmd_t pmd)
|
||||
{
|
||||
return pmd_flags(pmd) & _PAGE_SWP_UFFD_WP;
|
||||
}
|
||||
|
||||
static inline pmd_t pmd_swp_clear_uffd_wp(pmd_t pmd)
|
||||
{
|
||||
return pmd_clear_flags(pmd, _PAGE_SWP_UFFD_WP);
|
||||
}
|
||||
#endif /* CONFIG_HAVE_ARCH_USERFAULTFD_WP */
|
||||
|
||||
#define PKRU_AD_BIT 0x1
|
||||
#define PKRU_WD_BIT 0x2
|
||||
#define PKRU_BITS_PER_PKEY 2
|
||||
|
||||
@@ -189,7 +189,7 @@ extern void sync_global_pgds(unsigned long start, unsigned long end);
|
||||
*
|
||||
* | ... | 11| 10| 9|8|7|6|5| 4| 3|2| 1|0| <- bit number
|
||||
* | ... |SW3|SW2|SW1|G|L|D|A|CD|WT|U| W|P| <- bit names
|
||||
* | TYPE (59-63) | ~OFFSET (9-58) |0|0|X|X| X| X|X|SD|0| <- swp entry
|
||||
* | TYPE (59-63) | ~OFFSET (9-58) |0|0|X|X| X| X|F|SD|0| <- swp entry
|
||||
*
|
||||
* G (8) is aliased and used as a PROT_NONE indicator for
|
||||
* !present ptes. We need to start storing swap entries above
|
||||
@@ -197,9 +197,15 @@ extern void sync_global_pgds(unsigned long start, unsigned long end);
|
||||
* erratum where they can be incorrectly set by hardware on
|
||||
* non-present PTEs.
|
||||
*
|
||||
* SD Bits 1-4 are not used in non-present format and available for
|
||||
* special use described below:
|
||||
*
|
||||
* SD (1) in swp entry is used to store soft dirty bit, which helps us
|
||||
* remember soft dirty over page migration
|
||||
*
|
||||
* F (2) in swp entry is used to record when a pagetable is
|
||||
* writeprotected by userfaultfd WP support.
|
||||
*
|
||||
* Bit 7 in swp entry should be 0 because pmd_present checks not only P,
|
||||
* but also L and G.
|
||||
*
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#define _PAGE_BIT_SPECIAL _PAGE_BIT_SOFTW1
|
||||
#define _PAGE_BIT_CPA_TEST _PAGE_BIT_SOFTW1
|
||||
#define _PAGE_BIT_UFFD_WP _PAGE_BIT_SOFTW2 /* userfaultfd wrprotected */
|
||||
#define _PAGE_BIT_SOFT_DIRTY _PAGE_BIT_SOFTW3 /* software dirty tracking */
|
||||
#define _PAGE_BIT_DEVMAP _PAGE_BIT_SOFTW4
|
||||
|
||||
@@ -100,6 +101,14 @@
|
||||
#define _PAGE_SWP_SOFT_DIRTY (_AT(pteval_t, 0))
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HAVE_ARCH_USERFAULTFD_WP
|
||||
#define _PAGE_UFFD_WP (_AT(pteval_t, 1) << _PAGE_BIT_UFFD_WP)
|
||||
#define _PAGE_SWP_UFFD_WP _PAGE_USER
|
||||
#else
|
||||
#define _PAGE_UFFD_WP (_AT(pteval_t, 0))
|
||||
#define _PAGE_SWP_UFFD_WP (_AT(pteval_t, 0))
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE)
|
||||
#define _PAGE_NX (_AT(pteval_t, 1) << _PAGE_BIT_NX)
|
||||
#define _PAGE_DEVMAP (_AT(u64, 1) << _PAGE_BIT_DEVMAP)
|
||||
@@ -118,7 +127,8 @@
|
||||
*/
|
||||
#define _PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \
|
||||
_PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY | \
|
||||
_PAGE_SOFT_DIRTY | _PAGE_DEVMAP | _PAGE_ENC)
|
||||
_PAGE_SOFT_DIRTY | _PAGE_DEVMAP | _PAGE_ENC | \
|
||||
_PAGE_UFFD_WP)
|
||||
#define _HPAGE_CHG_MASK (_PAGE_CHG_MASK | _PAGE_PSE)
|
||||
|
||||
/*
|
||||
|
||||
@@ -107,8 +107,4 @@ config KVM_MMU_AUDIT
|
||||
This option adds a R/W kVM module parameter 'mmu_audit', which allows
|
||||
auditing of KVM MMU events at runtime.
|
||||
|
||||
# OK, it's a little counter-intuitive to do this, but it puts it neatly under
|
||||
# the virtualization menu.
|
||||
source "drivers/vhost/Kconfig"
|
||||
|
||||
endif # VIRTUALIZATION
|
||||
|
||||
@@ -14,7 +14,7 @@ kvm-y += x86.o emulate.o i8259.o irq.o lapic.o \
|
||||
hyperv.o debugfs.o mmu/mmu.o mmu/page_track.o
|
||||
|
||||
kvm-intel-y += vmx/vmx.o vmx/vmenter.o vmx/pmu_intel.o vmx/vmcs12.o vmx/evmcs.o vmx/nested.o
|
||||
kvm-amd-y += svm.o pmu_amd.o
|
||||
kvm-amd-y += svm/svm.o svm/vmenter.o svm/pmu.o svm/nested.o svm/avic.o svm/sev.o
|
||||
|
||||
obj-$(CONFIG_KVM) += kvm.o
|
||||
obj-$(CONFIG_KVM_INTEL) += kvm-intel.o
|
||||
|
||||
@@ -59,9 +59,6 @@
|
||||
#define MAX_APIC_VECTOR 256
|
||||
#define APIC_VECTORS_PER_REG 32
|
||||
|
||||
#define APIC_BROADCAST 0xFF
|
||||
#define X2APIC_BROADCAST 0xFFFFFFFFul
|
||||
|
||||
static bool lapic_timer_advance_dynamic __read_mostly;
|
||||
#define LAPIC_TIMER_ADVANCE_ADJUST_MIN 100 /* clock cycles */
|
||||
#define LAPIC_TIMER_ADVANCE_ADJUST_MAX 10000 /* clock cycles */
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
#define APIC_BUS_CYCLE_NS 1
|
||||
#define APIC_BUS_FREQUENCY (1000000000ULL / APIC_BUS_CYCLE_NS)
|
||||
|
||||
#define APIC_BROADCAST 0xFF
|
||||
#define X2APIC_BROADCAST 0xFFFFFFFFul
|
||||
|
||||
enum lapic_mode {
|
||||
LAPIC_MODE_DISABLED = 0,
|
||||
LAPIC_MODE_INVALID = X2APIC_ENABLE,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user