Merge 'master' into 'os-build'
This commit is contained in:
commit
ba6c7d299d
1
.mailmap
1
.mailmap
|
@ -100,6 +100,7 @@ Douglas Gilbert <dougg@torque.net>
|
||||||
Ed L. Cashin <ecashin@coraid.com>
|
Ed L. Cashin <ecashin@coraid.com>
|
||||||
Erik Kaneda <erik.kaneda@intel.com> <erik.schmauss@intel.com>
|
Erik Kaneda <erik.kaneda@intel.com> <erik.schmauss@intel.com>
|
||||||
Evgeniy Polyakov <johnpol@2ka.mipt.ru>
|
Evgeniy Polyakov <johnpol@2ka.mipt.ru>
|
||||||
|
Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> <ezequiel@collabora.com>
|
||||||
Felipe W Damasio <felipewd@terra.com.br>
|
Felipe W Damasio <felipewd@terra.com.br>
|
||||||
Felix Kuhling <fxkuehl@gmx.de>
|
Felix Kuhling <fxkuehl@gmx.de>
|
||||||
Felix Moeller <felix@derklecks.de>
|
Felix Moeller <felix@derklecks.de>
|
||||||
|
|
|
@ -42,6 +42,12 @@ Description: the CPU core ID of cpuX. Typically it is the hardware platform's
|
||||||
architecture and platform dependent.
|
architecture and platform dependent.
|
||||||
Values: integer
|
Values: integer
|
||||||
|
|
||||||
|
What: /sys/devices/system/cpu/cpuX/topology/cluster_id
|
||||||
|
Description: the cluster ID of cpuX. Typically it is the hardware platform's
|
||||||
|
identifier (rather than the kernel's). The actual value is
|
||||||
|
architecture and platform dependent.
|
||||||
|
Values: integer
|
||||||
|
|
||||||
What: /sys/devices/system/cpu/cpuX/topology/book_id
|
What: /sys/devices/system/cpu/cpuX/topology/book_id
|
||||||
Description: the book ID of cpuX. Typically it is the hardware platform's
|
Description: the book ID of cpuX. Typically it is the hardware platform's
|
||||||
identifier (rather than the kernel's). The actual value is
|
identifier (rather than the kernel's). The actual value is
|
||||||
|
@ -85,6 +91,15 @@ Description: human-readable list of CPUs within the same die.
|
||||||
The format is like 0-3, 8-11, 14,17.
|
The format is like 0-3, 8-11, 14,17.
|
||||||
Values: decimal list.
|
Values: decimal list.
|
||||||
|
|
||||||
|
What: /sys/devices/system/cpu/cpuX/topology/cluster_cpus
|
||||||
|
Description: internal kernel map of CPUs within the same cluster.
|
||||||
|
Values: hexadecimal bitmask.
|
||||||
|
|
||||||
|
What: /sys/devices/system/cpu/cpuX/topology/cluster_cpus_list
|
||||||
|
Description: human-readable list of CPUs within the same cluster.
|
||||||
|
The format is like 0-3, 8-11, 14,17.
|
||||||
|
Values: decimal list.
|
||||||
|
|
||||||
What: /sys/devices/system/cpu/cpuX/topology/book_siblings
|
What: /sys/devices/system/cpu/cpuX/topology/book_siblings
|
||||||
Description: internal kernel map of cpuX's hardware threads within the same
|
Description: internal kernel map of cpuX's hardware threads within the same
|
||||||
book_id. it's only used on s390.
|
book_id. it's only used on s390.
|
||||||
|
|
|
@ -202,49 +202,44 @@ newly arrived RCU callbacks against future grace periods:
|
||||||
1 static void rcu_prepare_for_idle(void)
|
1 static void rcu_prepare_for_idle(void)
|
||||||
2 {
|
2 {
|
||||||
3 bool needwake;
|
3 bool needwake;
|
||||||
4 struct rcu_data *rdp;
|
4 struct rcu_data *rdp = this_cpu_ptr(&rcu_data);
|
||||||
5 struct rcu_dynticks *rdtp = this_cpu_ptr(&rcu_dynticks);
|
5 struct rcu_node *rnp;
|
||||||
6 struct rcu_node *rnp;
|
6 int tne;
|
||||||
7 struct rcu_state *rsp;
|
7
|
||||||
8 int tne;
|
8 lockdep_assert_irqs_disabled();
|
||||||
9
|
9 if (rcu_rdp_is_offloaded(rdp))
|
||||||
10 if (IS_ENABLED(CONFIG_RCU_NOCB_CPU_ALL) ||
|
10 return;
|
||||||
11 rcu_is_nocb_cpu(smp_processor_id()))
|
11
|
||||||
12 return;
|
12 /* Handle nohz enablement switches conservatively. */
|
||||||
13 tne = READ_ONCE(tick_nohz_active);
|
13 tne = READ_ONCE(tick_nohz_active);
|
||||||
14 if (tne != rdtp->tick_nohz_enabled_snap) {
|
14 if (tne != rdp->tick_nohz_enabled_snap) {
|
||||||
15 if (rcu_cpu_has_callbacks(NULL))
|
15 if (!rcu_segcblist_empty(&rdp->cblist))
|
||||||
16 invoke_rcu_core();
|
16 invoke_rcu_core(); /* force nohz to see update. */
|
||||||
17 rdtp->tick_nohz_enabled_snap = tne;
|
17 rdp->tick_nohz_enabled_snap = tne;
|
||||||
18 return;
|
18 return;
|
||||||
19 }
|
19 }
|
||||||
20 if (!tne)
|
20 if (!tne)
|
||||||
21 return;
|
21 return;
|
||||||
22 if (rdtp->all_lazy &&
|
22
|
||||||
23 rdtp->nonlazy_posted != rdtp->nonlazy_posted_snap) {
|
23 /*
|
||||||
24 rdtp->all_lazy = false;
|
24 * If we have not yet accelerated this jiffy, accelerate all
|
||||||
25 rdtp->nonlazy_posted_snap = rdtp->nonlazy_posted;
|
25 * callbacks on this CPU.
|
||||||
26 invoke_rcu_core();
|
26 */
|
||||||
27 return;
|
27 if (rdp->last_accelerate == jiffies)
|
||||||
28 }
|
28 return;
|
||||||
29 if (rdtp->last_accelerate == jiffies)
|
29 rdp->last_accelerate = jiffies;
|
||||||
30 return;
|
30 if (rcu_segcblist_pend_cbs(&rdp->cblist)) {
|
||||||
31 rdtp->last_accelerate = jiffies;
|
31 rnp = rdp->mynode;
|
||||||
32 for_each_rcu_flavor(rsp) {
|
32 raw_spin_lock_rcu_node(rnp); /* irqs already disabled. */
|
||||||
33 rdp = this_cpu_ptr(rsp->rda);
|
33 needwake = rcu_accelerate_cbs(rnp, rdp);
|
||||||
34 if (rcu_segcblist_pend_cbs(&rdp->cblist))
|
34 raw_spin_unlock_rcu_node(rnp); /* irqs remain disabled. */
|
||||||
35 continue;
|
35 if (needwake)
|
||||||
36 rnp = rdp->mynode;
|
36 rcu_gp_kthread_wake();
|
||||||
37 raw_spin_lock_rcu_node(rnp);
|
37 }
|
||||||
38 needwake = rcu_accelerate_cbs(rsp, rnp, rdp);
|
38 }
|
||||||
39 raw_spin_unlock_rcu_node(rnp);
|
|
||||||
40 if (needwake)
|
|
||||||
41 rcu_gp_kthread_wake(rsp);
|
|
||||||
42 }
|
|
||||||
43 }
|
|
||||||
|
|
||||||
But the only part of ``rcu_prepare_for_idle()`` that really matters for
|
But the only part of ``rcu_prepare_for_idle()`` that really matters for
|
||||||
this discussion are lines 37–39. We will therefore abbreviate this
|
this discussion are lines 32–34. We will therefore abbreviate this
|
||||||
function as follows:
|
function as follows:
|
||||||
|
|
||||||
.. kernel-figure:: rcu_node-lock.svg
|
.. kernel-figure:: rcu_node-lock.svg
|
||||||
|
|
|
@ -96,6 +96,16 @@ warnings:
|
||||||
the ``rcu_.*timer wakeup didn't happen for`` console-log message,
|
the ``rcu_.*timer wakeup didn't happen for`` console-log message,
|
||||||
which will include additional debugging information.
|
which will include additional debugging information.
|
||||||
|
|
||||||
|
- A low-level kernel issue that either fails to invoke one of the
|
||||||
|
variants of rcu_user_enter(), rcu_user_exit(), rcu_idle_enter(),
|
||||||
|
rcu_idle_exit(), rcu_irq_enter(), or rcu_irq_exit() on the one
|
||||||
|
hand, or that invokes one of them too many times on the other.
|
||||||
|
Historically, the most frequent issue has been an omission
|
||||||
|
of either irq_enter() or irq_exit(), which in turn invoke
|
||||||
|
rcu_irq_enter() or rcu_irq_exit(), respectively. Building your
|
||||||
|
kernel with CONFIG_RCU_EQS_DEBUG=y can help track down these types
|
||||||
|
of issues, which sometimes arise in architecture-specific code.
|
||||||
|
|
||||||
- A bug in the RCU implementation.
|
- A bug in the RCU implementation.
|
||||||
|
|
||||||
- A hardware failure. This is quite unlikely, but has occurred
|
- A hardware failure. This is quite unlikely, but has occurred
|
||||||
|
|
|
@ -1016,6 +1016,8 @@ All time durations are in microseconds.
|
||||||
- nr_periods
|
- nr_periods
|
||||||
- nr_throttled
|
- nr_throttled
|
||||||
- throttled_usec
|
- throttled_usec
|
||||||
|
- nr_bursts
|
||||||
|
- burst_usec
|
||||||
|
|
||||||
cpu.weight
|
cpu.weight
|
||||||
A read-write single value file which exists on non-root
|
A read-write single value file which exists on non-root
|
||||||
|
@ -1047,6 +1049,12 @@ All time durations are in microseconds.
|
||||||
$PERIOD duration. "max" for $MAX indicates no limit. If only
|
$PERIOD duration. "max" for $MAX indicates no limit. If only
|
||||||
one number is written, $MAX is updated.
|
one number is written, $MAX is updated.
|
||||||
|
|
||||||
|
cpu.max.burst
|
||||||
|
A read-write single value file which exists on non-root
|
||||||
|
cgroups. The default is "0".
|
||||||
|
|
||||||
|
The burst in the range [0, $MAX].
|
||||||
|
|
||||||
cpu.pressure
|
cpu.pressure
|
||||||
A read-write nested-keyed file.
|
A read-write nested-keyed file.
|
||||||
|
|
||||||
|
|
|
@ -19,11 +19,13 @@ these macros in include/asm-XXX/topology.h::
|
||||||
|
|
||||||
#define topology_physical_package_id(cpu)
|
#define topology_physical_package_id(cpu)
|
||||||
#define topology_die_id(cpu)
|
#define topology_die_id(cpu)
|
||||||
|
#define topology_cluster_id(cpu)
|
||||||
#define topology_core_id(cpu)
|
#define topology_core_id(cpu)
|
||||||
#define topology_book_id(cpu)
|
#define topology_book_id(cpu)
|
||||||
#define topology_drawer_id(cpu)
|
#define topology_drawer_id(cpu)
|
||||||
#define topology_sibling_cpumask(cpu)
|
#define topology_sibling_cpumask(cpu)
|
||||||
#define topology_core_cpumask(cpu)
|
#define topology_core_cpumask(cpu)
|
||||||
|
#define topology_cluster_cpumask(cpu)
|
||||||
#define topology_die_cpumask(cpu)
|
#define topology_die_cpumask(cpu)
|
||||||
#define topology_book_cpumask(cpu)
|
#define topology_book_cpumask(cpu)
|
||||||
#define topology_drawer_cpumask(cpu)
|
#define topology_drawer_cpumask(cpu)
|
||||||
|
@ -39,10 +41,12 @@ not defined by include/asm-XXX/topology.h:
|
||||||
|
|
||||||
1) topology_physical_package_id: -1
|
1) topology_physical_package_id: -1
|
||||||
2) topology_die_id: -1
|
2) topology_die_id: -1
|
||||||
3) topology_core_id: 0
|
3) topology_cluster_id: -1
|
||||||
4) topology_sibling_cpumask: just the given CPU
|
4) topology_core_id: 0
|
||||||
5) topology_core_cpumask: just the given CPU
|
5) topology_sibling_cpumask: just the given CPU
|
||||||
6) topology_die_cpumask: just the given CPU
|
6) topology_core_cpumask: just the given CPU
|
||||||
|
7) topology_cluster_cpumask: just the given CPU
|
||||||
|
8) topology_die_cpumask: just the given CPU
|
||||||
|
|
||||||
For architectures that don't support books (CONFIG_SCHED_BOOK) there are no
|
For architectures that don't support books (CONFIG_SCHED_BOOK) there are no
|
||||||
default definitions for topology_book_id() and topology_book_cpumask().
|
default definitions for topology_book_id() and topology_book_cpumask().
|
||||||
|
|
|
@ -490,9 +490,8 @@ Spectre variant 2
|
||||||
|
|
||||||
Restricting indirect branch speculation on a user program will
|
Restricting indirect branch speculation on a user program will
|
||||||
also prevent the program from launching a variant 2 attack
|
also prevent the program from launching a variant 2 attack
|
||||||
on x86. All sand-boxed SECCOMP programs have indirect branch
|
on x86. Administrators can change that behavior via the kernel
|
||||||
speculation restricted by default. Administrators can change
|
command line and sysfs control files.
|
||||||
that behavior via the kernel command line and sysfs control files.
|
|
||||||
See :ref:`spectre_mitigation_control_command_line`.
|
See :ref:`spectre_mitigation_control_command_line`.
|
||||||
|
|
||||||
Programs that disable their indirect branch speculation will have
|
Programs that disable their indirect branch speculation will have
|
||||||
|
@ -594,61 +593,14 @@ kernel command line.
|
||||||
Not specifying this option is equivalent to
|
Not specifying this option is equivalent to
|
||||||
spectre_v2=auto.
|
spectre_v2=auto.
|
||||||
|
|
||||||
For user space mitigation:
|
|
||||||
|
|
||||||
spectre_v2_user=
|
|
||||||
|
|
||||||
[X86] Control mitigation of Spectre variant 2
|
|
||||||
(indirect branch speculation) vulnerability between
|
|
||||||
user space tasks
|
|
||||||
|
|
||||||
on
|
|
||||||
Unconditionally enable mitigations. Is
|
|
||||||
enforced by spectre_v2=on
|
|
||||||
|
|
||||||
off
|
|
||||||
Unconditionally disable mitigations. Is
|
|
||||||
enforced by spectre_v2=off
|
|
||||||
|
|
||||||
prctl
|
|
||||||
Indirect branch speculation is enabled,
|
|
||||||
but mitigation can be enabled via prctl
|
|
||||||
per thread. The mitigation control state
|
|
||||||
is inherited on fork.
|
|
||||||
|
|
||||||
prctl,ibpb
|
|
||||||
Like "prctl" above, but only STIBP is
|
|
||||||
controlled per thread. IBPB is issued
|
|
||||||
always when switching between different user
|
|
||||||
space processes.
|
|
||||||
|
|
||||||
seccomp
|
|
||||||
Same as "prctl" above, but all seccomp
|
|
||||||
threads will enable the mitigation unless
|
|
||||||
they explicitly opt out.
|
|
||||||
|
|
||||||
seccomp,ibpb
|
|
||||||
Like "seccomp" above, but only STIBP is
|
|
||||||
controlled per thread. IBPB is issued
|
|
||||||
always when switching between different
|
|
||||||
user space processes.
|
|
||||||
|
|
||||||
auto
|
|
||||||
Kernel selects the mitigation depending on
|
|
||||||
the available CPU features and vulnerability.
|
|
||||||
|
|
||||||
Default mitigation:
|
|
||||||
If CONFIG_SECCOMP=y then "seccomp", otherwise "prctl"
|
|
||||||
|
|
||||||
Not specifying this option is equivalent to
|
|
||||||
spectre_v2_user=auto.
|
|
||||||
|
|
||||||
In general the kernel by default selects
|
In general the kernel by default selects
|
||||||
reasonable mitigations for the current CPU. To
|
reasonable mitigations for the current CPU. To
|
||||||
disable Spectre variant 2 mitigations, boot with
|
disable Spectre variant 2 mitigations, boot with
|
||||||
spectre_v2=off. Spectre variant 1 mitigations
|
spectre_v2=off. Spectre variant 1 mitigations
|
||||||
cannot be disabled.
|
cannot be disabled.
|
||||||
|
|
||||||
|
For spectre_v2_user see :doc:`/admin-guide/kernel-parameters`.
|
||||||
|
|
||||||
Mitigation selection guide
|
Mitigation selection guide
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
@ -674,9 +626,8 @@ Mitigation selection guide
|
||||||
off by disabling their indirect branch speculation when they are run
|
off by disabling their indirect branch speculation when they are run
|
||||||
(See :ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
|
(See :ref:`Documentation/userspace-api/spec_ctrl.rst <set_spec_ctrl>`).
|
||||||
This prevents untrusted programs from polluting the branch target
|
This prevents untrusted programs from polluting the branch target
|
||||||
buffer. All programs running in SECCOMP sandboxes have indirect
|
buffer. This behavior can be changed via the kernel command line
|
||||||
branch speculation restricted by default. This behavior can be
|
and sysfs control files. See
|
||||||
changed via the kernel command line and sysfs control files. See
|
|
||||||
:ref:`spectre_mitigation_control_command_line`.
|
:ref:`spectre_mitigation_control_command_line`.
|
||||||
|
|
||||||
3. High security mode
|
3. High security mode
|
||||||
|
|
|
@ -5303,8 +5303,7 @@
|
||||||
auto - Kernel selects the mitigation depending on
|
auto - Kernel selects the mitigation depending on
|
||||||
the available CPU features and vulnerability.
|
the available CPU features and vulnerability.
|
||||||
|
|
||||||
Default mitigation:
|
Default mitigation: "prctl"
|
||||||
If CONFIG_SECCOMP=y then "seccomp", otherwise "prctl"
|
|
||||||
|
|
||||||
Not specifying this option is equivalent to
|
Not specifying this option is equivalent to
|
||||||
spectre_v2_user=auto.
|
spectre_v2_user=auto.
|
||||||
|
@ -5348,7 +5347,7 @@
|
||||||
will disable SSB unless they explicitly opt out.
|
will disable SSB unless they explicitly opt out.
|
||||||
|
|
||||||
Default mitigations:
|
Default mitigations:
|
||||||
X86: If CONFIG_SECCOMP=y "seccomp", otherwise "prctl"
|
X86: "prctl"
|
||||||
|
|
||||||
On powerpc the options are:
|
On powerpc the options are:
|
||||||
|
|
||||||
|
@ -5497,6 +5496,15 @@
|
||||||
stifb= [HW]
|
stifb= [HW]
|
||||||
Format: bpp:<bpp1>[:<bpp2>[:<bpp3>...]]
|
Format: bpp:<bpp1>[:<bpp2>[:<bpp3>...]]
|
||||||
|
|
||||||
|
strict_sas_size=
|
||||||
|
[X86]
|
||||||
|
Format: <bool>
|
||||||
|
Enable or disable strict sigaltstack size checks
|
||||||
|
against the required signal frame size which
|
||||||
|
depends on the supported FPU features. This can
|
||||||
|
be used to filter out binaries which have
|
||||||
|
not yet been made aware of AT_MINSIGSTKSZ.
|
||||||
|
|
||||||
sunrpc.min_resvport=
|
sunrpc.min_resvport=
|
||||||
sunrpc.max_resvport=
|
sunrpc.max_resvport=
|
||||||
[NFS,SUNRPC]
|
[NFS,SUNRPC]
|
||||||
|
|
|
@ -58,15 +58,20 @@ Camera sensor devices
|
||||||
============ ==========================================================
|
============ ==========================================================
|
||||||
Driver Name
|
Driver Name
|
||||||
============ ==========================================================
|
============ ==========================================================
|
||||||
|
ccs MIPI CCS compliant camera sensors (also SMIA++ and SMIA)
|
||||||
et8ek8 ET8EK8 camera sensor
|
et8ek8 ET8EK8 camera sensor
|
||||||
hi556 Hynix Hi-556 sensor
|
hi556 Hynix Hi-556 sensor
|
||||||
|
hi846 Hynix Hi-846 sensor
|
||||||
|
imx208 Sony IMX208 sensor
|
||||||
imx214 Sony IMX214 sensor
|
imx214 Sony IMX214 sensor
|
||||||
imx219 Sony IMX219 sensor
|
imx219 Sony IMX219 sensor
|
||||||
imx258 Sony IMX258 sensor
|
imx258 Sony IMX258 sensor
|
||||||
imx274 Sony IMX274 sensor
|
imx274 Sony IMX274 sensor
|
||||||
imx290 Sony IMX290 sensor
|
imx290 Sony IMX290 sensor
|
||||||
imx319 Sony IMX319 sensor
|
imx319 Sony IMX319 sensor
|
||||||
|
imx334 Sony IMX334 sensor
|
||||||
imx355 Sony IMX355 sensor
|
imx355 Sony IMX355 sensor
|
||||||
|
imx412 Sony IMX412 sensor
|
||||||
m5mols Fujitsu M-5MOLS 8MP sensor
|
m5mols Fujitsu M-5MOLS 8MP sensor
|
||||||
mt9m001 mt9m001
|
mt9m001 mt9m001
|
||||||
mt9m032 MT9M032 camera sensor
|
mt9m032 MT9M032 camera sensor
|
||||||
|
@ -79,6 +84,7 @@ mt9v032 Micron MT9V032 sensor
|
||||||
mt9v111 Aptina MT9V111 sensor
|
mt9v111 Aptina MT9V111 sensor
|
||||||
noon010pc30 Siliconfile NOON010PC30 sensor
|
noon010pc30 Siliconfile NOON010PC30 sensor
|
||||||
ov13858 OmniVision OV13858 sensor
|
ov13858 OmniVision OV13858 sensor
|
||||||
|
ov13b10 OmniVision OV13B10 sensor
|
||||||
ov2640 OmniVision OV2640 sensor
|
ov2640 OmniVision OV2640 sensor
|
||||||
ov2659 OmniVision OV2659 sensor
|
ov2659 OmniVision OV2659 sensor
|
||||||
ov2680 OmniVision OV2680 sensor
|
ov2680 OmniVision OV2680 sensor
|
||||||
|
@ -104,7 +110,6 @@ s5k4ecgx Samsung S5K4ECGX sensor
|
||||||
s5k5baf Samsung S5K5BAF sensor
|
s5k5baf Samsung S5K5BAF sensor
|
||||||
s5k6a3 Samsung S5K6A3 sensor
|
s5k6a3 Samsung S5K6A3 sensor
|
||||||
s5k6aa Samsung S5K6AAFX sensor
|
s5k6aa Samsung S5K6AAFX sensor
|
||||||
smiapp SMIA++/SMIA sensor
|
|
||||||
sr030pc30 Siliconfile SR030PC30 sensor
|
sr030pc30 Siliconfile SR030PC30 sensor
|
||||||
vs6624 ST VS6624 sensor
|
vs6624 ST VS6624 sensor
|
||||||
============ ==========================================================
|
============ ==========================================================
|
||||||
|
@ -138,6 +143,7 @@ Driver Name
|
||||||
ad5820 AD5820 lens voice coil
|
ad5820 AD5820 lens voice coil
|
||||||
ak7375 AK7375 lens voice coil
|
ak7375 AK7375 lens voice coil
|
||||||
dw9714 DW9714 lens voice coil
|
dw9714 DW9714 lens voice coil
|
||||||
|
dw9768 DW9768 lens voice coil
|
||||||
dw9807-vcm DW9807 lens voice coil
|
dw9807-vcm DW9807 lens voice coil
|
||||||
============ ==========================================================
|
============ ==========================================================
|
||||||
|
|
||||||
|
|
|
@ -155,6 +155,66 @@ the resolutions supported by the sensor.
|
||||||
[fmt:SBGGR10_1X10/800x600@1/30 field:none colorspace:srgb]
|
[fmt:SBGGR10_1X10/800x600@1/30 field:none colorspace:srgb]
|
||||||
-> "imx7-mipi-csis.0":0 [ENABLED]
|
-> "imx7-mipi-csis.0":0 [ENABLED]
|
||||||
|
|
||||||
|
i.MX6ULL-EVK with OV5640
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
On this platform a parallel OV5640 sensor is connected to the CSI port.
|
||||||
|
The following example configures a video capture pipeline with an output
|
||||||
|
of 640x480 and UYVY8_2X8 format:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
# Setup links
|
||||||
|
media-ctl -l "'ov5640 1-003c':0 -> 'csi':0[1]"
|
||||||
|
media-ctl -l "'csi':1 -> 'csi capture':0[1]"
|
||||||
|
|
||||||
|
# Configure pads for pipeline
|
||||||
|
media-ctl -v -V "'ov5640 1-003c':0 [fmt:UYVY8_2X8/640x480 field:none]"
|
||||||
|
|
||||||
|
After this streaming can start:
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
gst-launch-1.0 -v v4l2src device=/dev/video1 ! video/x-raw,format=UYVY,width=640,height=480 ! v4l2convert ! fbdevsink
|
||||||
|
|
||||||
|
.. code-block:: none
|
||||||
|
|
||||||
|
# media-ctl -p
|
||||||
|
Media controller API version 5.14.0
|
||||||
|
|
||||||
|
Media device information
|
||||||
|
------------------------
|
||||||
|
driver imx7-csi
|
||||||
|
model imx-media
|
||||||
|
serial
|
||||||
|
bus info
|
||||||
|
hw revision 0x0
|
||||||
|
driver version 5.14.0
|
||||||
|
|
||||||
|
Device topology
|
||||||
|
- entity 1: csi (2 pads, 2 links)
|
||||||
|
type V4L2 subdev subtype Unknown flags 0
|
||||||
|
device node name /dev/v4l-subdev0
|
||||||
|
pad0: Sink
|
||||||
|
[fmt:UYVY8_2X8/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
|
||||||
|
<- "ov5640 1-003c":0 [ENABLED,IMMUTABLE]
|
||||||
|
pad1: Source
|
||||||
|
[fmt:UYVY8_2X8/640x480 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
|
||||||
|
-> "csi capture":0 [ENABLED,IMMUTABLE]
|
||||||
|
|
||||||
|
- entity 4: csi capture (1 pad, 1 link)
|
||||||
|
type Node subtype V4L flags 0
|
||||||
|
device node name /dev/video1
|
||||||
|
pad0: Sink
|
||||||
|
<- "csi":1 [ENABLED,IMMUTABLE]
|
||||||
|
|
||||||
|
- entity 10: ov5640 1-003c (1 pad, 1 link)
|
||||||
|
type V4L2 subdev subtype Sensor flags 0
|
||||||
|
device node name /dev/v4l-subdev1
|
||||||
|
pad0: Source
|
||||||
|
[fmt:UYVY8_2X8/640x480@1/30 field:none colorspace:srgb xfer:srgb ycbcr:601 quantization:full-range]
|
||||||
|
-> "csi":0 [ENABLED,IMMUTABLE]
|
||||||
|
|
||||||
References
|
References
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|
|
@ -51,10 +51,11 @@ to userspace as a V4L2 sub-device node and has two pads:
|
||||||
.. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm}|
|
.. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm}|
|
||||||
|
|
||||||
.. flat-table::
|
.. flat-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
* - pad
|
* - Pad
|
||||||
- direction
|
- Direction
|
||||||
- purpose
|
- Purpose
|
||||||
|
|
||||||
* - 0
|
* - 0
|
||||||
- sink
|
- sink
|
||||||
|
@ -148,10 +149,11 @@ Each pipe has two sink pads and three source pads for the following purpose:
|
||||||
.. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm}|
|
.. tabularcolumns:: |p{0.8cm}|p{4.0cm}|p{4.0cm}|
|
||||||
|
|
||||||
.. flat-table::
|
.. flat-table::
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
* - pad
|
* - Pad
|
||||||
- direction
|
- Direction
|
||||||
- purpose
|
- Purpose
|
||||||
|
|
||||||
* - 0
|
* - 0
|
||||||
- sink
|
- sink
|
||||||
|
|
|
@ -159,7 +159,7 @@ whatever). Otherwise the device numbers can get confusing. The ivtv
|
||||||
Read-only
|
Read-only
|
||||||
|
|
||||||
The raw YUV video output from the current video input. The YUV format
|
The raw YUV video output from the current video input. The YUV format
|
||||||
is non-standard (V4L2_PIX_FMT_HM12).
|
is a 16x16 linear tiled NV12 format (V4L2_PIX_FMT_NV12_16L16)
|
||||||
|
|
||||||
Note that the YUV and PCM streams are not synchronized, so they are of
|
Note that the YUV and PCM streams are not synchronized, so they are of
|
||||||
limited use.
|
limited use.
|
||||||
|
|
|
@ -61,9 +61,10 @@ vimc-debayer:
|
||||||
* 1 Pad source
|
* 1 Pad source
|
||||||
|
|
||||||
vimc-scaler:
|
vimc-scaler:
|
||||||
Scale up the image by a factor of 3. E.g.: a 640x480 image becomes a
|
Re-size the image to meet the source pad resolution. E.g.: if the sync
|
||||||
1920x1440 image. (this value can be configured, see at
|
pad is configured to 360x480 and the source to 1280x720, the image will
|
||||||
`Module options`_).
|
be stretched to fit the source resolution. Works for any resolution
|
||||||
|
within the vimc limitations (even shrinking the image if necessary).
|
||||||
Exposes:
|
Exposes:
|
||||||
|
|
||||||
* 1 Pad sink
|
* 1 Pad sink
|
||||||
|
@ -75,16 +76,3 @@ vimc-capture:
|
||||||
|
|
||||||
* 1 Pad sink
|
* 1 Pad sink
|
||||||
* 1 Pad source
|
* 1 Pad source
|
||||||
|
|
||||||
|
|
||||||
Module options
|
|
||||||
--------------
|
|
||||||
|
|
||||||
Vimc has a module parameter to configure the driver.
|
|
||||||
|
|
||||||
* ``sca_mult=<unsigned int>``
|
|
||||||
|
|
||||||
Image size multiplier factor to be used to multiply both width and
|
|
||||||
height, so the image size will be ``sca_mult^2`` bigger than the
|
|
||||||
original one. Currently, only supports scaling up (the default value
|
|
||||||
is 3).
|
|
||||||
|
|
|
@ -340,6 +340,16 @@ Before jumping into the kernel, the following conditions must be met:
|
||||||
- SMCR_EL2.LEN must be initialised to the same value for all CPUs the
|
- SMCR_EL2.LEN must be initialised to the same value for all CPUs the
|
||||||
kernel will execute on.
|
kernel will execute on.
|
||||||
|
|
||||||
|
For CPUs with the Scalable Matrix Extension FA64 feature (FEAT_SME_FA64)
|
||||||
|
|
||||||
|
- If EL3 is present:
|
||||||
|
|
||||||
|
- SMCR_EL3.FA64 (bit 31) must be initialised to 0b1.
|
||||||
|
|
||||||
|
- If the kernel is entered at EL1 and EL2 is present:
|
||||||
|
|
||||||
|
- SMCR_EL2.FA64 (bit 31) must be initialised to 0b1.
|
||||||
|
|
||||||
The requirements described above for CPU mode, caches, MMUs, architected
|
The requirements described above for CPU mode, caches, MMUs, architected
|
||||||
timers, coherency and system registers apply to all CPUs. All CPUs must
|
timers, coherency and system registers apply to all CPUs. All CPUs must
|
||||||
enter the kernel in the same exception level. Where the values documented
|
enter the kernel in the same exception level. Where the values documented
|
||||||
|
|
|
@ -235,7 +235,15 @@ infrastructure:
|
||||||
| DPB | [3-0] | y |
|
| DPB | [3-0] | y |
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
|
|
||||||
6) ID_AA64MMFR2_EL1 - Memory model feature register 2
|
6) ID_AA64MMFR0_EL1 - Memory model feature register 0
|
||||||
|
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| Name | bits | visible |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
| ECV | [63-60] | y |
|
||||||
|
+------------------------------+---------+---------+
|
||||||
|
|
||||||
|
7) ID_AA64MMFR2_EL1 - Memory model feature register 2
|
||||||
|
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
| Name | bits | visible |
|
| Name | bits | visible |
|
||||||
|
@ -243,7 +251,7 @@ infrastructure:
|
||||||
| AT | [35-32] | y |
|
| AT | [35-32] | y |
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
|
|
||||||
7) ID_AA64ZFR0_EL1 - SVE feature ID register 0
|
8) ID_AA64ZFR0_EL1 - SVE feature ID register 0
|
||||||
|
|
||||||
+------------------------------+---------+---------+
|
+------------------------------+---------+---------+
|
||||||
| Name | bits | visible |
|
| Name | bits | visible |
|
||||||
|
|
|
@ -247,6 +247,10 @@ HWCAP2_MTE
|
||||||
Functionality implied by ID_AA64PFR1_EL1.MTE == 0b0010, as described
|
Functionality implied by ID_AA64PFR1_EL1.MTE == 0b0010, as described
|
||||||
by Documentation/arm64/memory-tagging-extension.rst.
|
by Documentation/arm64/memory-tagging-extension.rst.
|
||||||
|
|
||||||
|
HWCAP2_ECV
|
||||||
|
|
||||||
|
Functionality implied by ID_AA64MMFR0_EL1.ECV == 0b0001.
|
||||||
|
|
||||||
4. Unused AT_HWCAP bits
|
4. Unused AT_HWCAP bits
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
|
|
@ -92,12 +92,24 @@ stable kernels.
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| ARM | Cortex-A77 | #1508412 | ARM64_ERRATUM_1508412 |
|
| ARM | Cortex-A77 | #1508412 | ARM64_ERRATUM_1508412 |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| ARM | Cortex-A710 | #2119858 | ARM64_ERRATUM_2119858 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| ARM | Cortex-A710 | #2054223 | ARM64_ERRATUM_2054223 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| ARM | Cortex-A710 | #2224489 | ARM64_ERRATUM_2224489 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| ARM | Neoverse-N1 | #1188873,1418040| ARM64_ERRATUM_1418040 |
|
| ARM | Neoverse-N1 | #1188873,1418040| ARM64_ERRATUM_1418040 |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| ARM | Neoverse-N1 | #1349291 | N/A |
|
| ARM | Neoverse-N1 | #1349291 | N/A |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| ARM | Neoverse-N1 | #1542419 | ARM64_ERRATUM_1542419 |
|
| ARM | Neoverse-N1 | #1542419 | ARM64_ERRATUM_1542419 |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| ARM | Neoverse-N2 | #2139208 | ARM64_ERRATUM_2139208 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| ARM | Neoverse-N2 | #2067961 | ARM64_ERRATUM_2067961 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
| ARM | Neoverse-N2 | #2253138 | ARM64_ERRATUM_2253138 |
|
||||||
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
| ARM | MMU-500 | #841119,826419 | N/A |
|
| ARM | MMU-500 | #841119,826419 | N/A |
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
+----------------+-----------------+-----------------+-----------------------------+
|
+----------------+-----------------+-----------------+-----------------------------+
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
.. SPDX-License-Identifier: GPL-2.0
|
.. SPDX-License-Identifier: GPL-2.0
|
||||||
|
|
||||||
|
.. _inline_encryption:
|
||||||
|
|
||||||
=================
|
=================
|
||||||
Inline Encryption
|
Inline Encryption
|
||||||
=================
|
=================
|
||||||
|
@ -7,230 +9,269 @@ Inline Encryption
|
||||||
Background
|
Background
|
||||||
==========
|
==========
|
||||||
|
|
||||||
Inline encryption hardware sits logically between memory and the disk, and can
|
Inline encryption hardware sits logically between memory and disk, and can
|
||||||
en/decrypt data as it goes in/out of the disk. Inline encryption hardware has a
|
en/decrypt data as it goes in/out of the disk. For each I/O request, software
|
||||||
fixed number of "keyslots" - slots into which encryption contexts (i.e. the
|
can control exactly how the inline encryption hardware will en/decrypt the data
|
||||||
encryption key, encryption algorithm, data unit size) can be programmed by the
|
in terms of key, algorithm, data unit size (the granularity of en/decryption),
|
||||||
kernel at any time. Each request sent to the disk can be tagged with the index
|
and data unit number (a value that determines the initialization vector(s)).
|
||||||
of a keyslot (and also a data unit number to act as an encryption tweak), and
|
|
||||||
the inline encryption hardware will en/decrypt the data in the request with the
|
|
||||||
encryption context programmed into that keyslot. This is very different from
|
|
||||||
full disk encryption solutions like self encrypting drives/TCG OPAL/ATA
|
|
||||||
Security standards, since with inline encryption, any block on disk could be
|
|
||||||
encrypted with any encryption context the kernel chooses.
|
|
||||||
|
|
||||||
|
Some inline encryption hardware accepts all encryption parameters including raw
|
||||||
|
keys directly in low-level I/O requests. However, most inline encryption
|
||||||
|
hardware instead has a fixed number of "keyslots" and requires that the key,
|
||||||
|
algorithm, and data unit size first be programmed into a keyslot. Each
|
||||||
|
low-level I/O request then just contains a keyslot index and data unit number.
|
||||||
|
|
||||||
|
Note that inline encryption hardware is very different from traditional crypto
|
||||||
|
accelerators, which are supported through the kernel crypto API. Traditional
|
||||||
|
crypto accelerators operate on memory regions, whereas inline encryption
|
||||||
|
hardware operates on I/O requests. Thus, inline encryption hardware needs to be
|
||||||
|
managed by the block layer, not the kernel crypto API.
|
||||||
|
|
||||||
|
Inline encryption hardware is also very different from "self-encrypting drives",
|
||||||
|
such as those based on the TCG Opal or ATA Security standards. Self-encrypting
|
||||||
|
drives don't provide fine-grained control of encryption and provide no way to
|
||||||
|
verify the correctness of the resulting ciphertext. Inline encryption hardware
|
||||||
|
provides fine-grained control of encryption, including the choice of key and
|
||||||
|
initialization vector for each sector, and can be tested for correctness.
|
||||||
|
|
||||||
Objective
|
Objective
|
||||||
=========
|
=========
|
||||||
|
|
||||||
We want to support inline encryption (IE) in the kernel.
|
We want to support inline encryption in the kernel. To make testing easier, we
|
||||||
To allow for testing, we also want a crypto API fallback when actual
|
also want support for falling back to the kernel crypto API when actual inline
|
||||||
IE hardware is absent. We also want IE to work with layered devices
|
encryption hardware is absent. We also want inline encryption to work with
|
||||||
like dm and loopback (i.e. we want to be able to use the IE hardware
|
layered devices like device-mapper and loopback (i.e. we want to be able to use
|
||||||
of the underlying devices if present, or else fall back to crypto API
|
the inline encryption hardware of the underlying devices if present, or else
|
||||||
en/decryption).
|
fall back to crypto API en/decryption).
|
||||||
|
|
||||||
|
|
||||||
Constraints and notes
|
Constraints and notes
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
- IE hardware has a limited number of "keyslots" that can be programmed
|
- We need a way for upper layers (e.g. filesystems) to specify an encryption
|
||||||
with an encryption context (key, algorithm, data unit size, etc.) at any time.
|
context to use for en/decrypting a bio, and device drivers (e.g. UFSHCD) need
|
||||||
One can specify a keyslot in a data request made to the device, and the
|
to be able to use that encryption context when they process the request.
|
||||||
device will en/decrypt the data using the encryption context programmed into
|
Encryption contexts also introduce constraints on bio merging; the block layer
|
||||||
that specified keyslot. When possible, we want to make multiple requests with
|
needs to be aware of these constraints.
|
||||||
the same encryption context share the same keyslot.
|
|
||||||
|
|
||||||
- We need a way for upper layers like filesystems to specify an encryption
|
- Different inline encryption hardware has different supported algorithms,
|
||||||
context to use for en/decrypting a struct bio, and a device driver (like UFS)
|
supported data unit sizes, maximum data unit numbers, etc. We call these
|
||||||
needs to be able to use that encryption context when it processes the bio.
|
properties the "crypto capabilities". We need a way for device drivers to
|
||||||
|
advertise crypto capabilities to upper layers in a generic way.
|
||||||
|
|
||||||
- We need a way for device drivers to expose their inline encryption
|
- Inline encryption hardware usually (but not always) requires that keys be
|
||||||
capabilities in a unified way to the upper layers.
|
programmed into keyslots before being used. Since programming keyslots may be
|
||||||
|
slow and there may not be very many keyslots, we shouldn't just program the
|
||||||
|
key for every I/O request, but rather keep track of which keys are in the
|
||||||
|
keyslots and reuse an already-programmed keyslot when possible.
|
||||||
|
|
||||||
|
- Upper layers typically define a specific end-of-life for crypto keys, e.g.
|
||||||
|
when an encrypted directory is locked or when a crypto mapping is torn down.
|
||||||
|
At these times, keys are wiped from memory. We must provide a way for upper
|
||||||
|
layers to also evict keys from any keyslots they are present in.
|
||||||
|
|
||||||
Design
|
- When possible, device-mapper devices must be able to pass through the inline
|
||||||
======
|
encryption support of their underlying devices. However, it doesn't make
|
||||||
|
sense for device-mapper devices to have keyslots themselves.
|
||||||
|
|
||||||
We add a struct bio_crypt_ctx to struct bio that can
|
Basic design
|
||||||
represent an encryption context, because we need to be able to pass this
|
============
|
||||||
encryption context from the upper layers (like the fs layer) to the
|
|
||||||
device driver to act upon.
|
|
||||||
|
|
||||||
While IE hardware works on the notion of keyslots, the FS layer has no
|
We introduce ``struct blk_crypto_key`` to represent an inline encryption key and
|
||||||
knowledge of keyslots - it simply wants to specify an encryption context to
|
how it will be used. This includes the actual bytes of the key; the size of the
|
||||||
use while en/decrypting a bio.
|
key; the algorithm and data unit size the key will be used with; and the number
|
||||||
|
of bytes needed to represent the maximum data unit number the key will be used
|
||||||
|
with.
|
||||||
|
|
||||||
We introduce a keyslot manager (KSM) that handles the translation from
|
We introduce ``struct bio_crypt_ctx`` to represent an encryption context. It
|
||||||
encryption contexts specified by the FS to keyslots on the IE hardware.
|
contains a data unit number and a pointer to a blk_crypto_key. We add pointers
|
||||||
This KSM also serves as the way IE hardware can expose its capabilities to
|
to a bio_crypt_ctx to ``struct bio`` and ``struct request``; this allows users
|
||||||
upper layers. The generic mode of operation is: each device driver that wants
|
of the block layer (e.g. filesystems) to provide an encryption context when
|
||||||
to support IE will construct a KSM and set it up in its struct request_queue.
|
creating a bio and have it be passed down the stack for processing by the block
|
||||||
Upper layers that want to use IE on this device can then use this KSM in
|
layer and device drivers. Note that the encryption context doesn't explicitly
|
||||||
the device's struct request_queue to translate an encryption context into
|
say whether to encrypt or decrypt, as that is implicit from the direction of the
|
||||||
a keyslot. The presence of the KSM in the request queue shall be used to mean
|
bio; WRITE means encrypt, and READ means decrypt.
|
||||||
that the device supports IE.
|
|
||||||
|
|
||||||
The KSM uses refcounts to track which keyslots are idle (either they have no
|
We also introduce ``struct blk_crypto_profile`` to contain all generic inline
|
||||||
encryption context programmed, or there are no in-flight struct bios
|
encryption-related state for a particular inline encryption device. The
|
||||||
referencing that keyslot). When a new encryption context needs a keyslot, it
|
blk_crypto_profile serves as the way that drivers for inline encryption hardware
|
||||||
tries to find a keyslot that has already been programmed with the same
|
advertise their crypto capabilities and provide certain functions (e.g.,
|
||||||
encryption context, and if there is no such keyslot, it evicts the least
|
functions to program and evict keys) to upper layers. Each device driver that
|
||||||
recently used idle keyslot and programs the new encryption context into that
|
wants to support inline encryption will construct a blk_crypto_profile, then
|
||||||
one. If no idle keyslots are available, then the caller will sleep until there
|
associate it with the disk's request_queue.
|
||||||
is at least one.
|
|
||||||
|
|
||||||
|
The blk_crypto_profile also manages the hardware's keyslots, when applicable.
|
||||||
|
This happens in the block layer, so that users of the block layer can just
|
||||||
|
specify encryption contexts and don't need to know about keyslots at all, nor do
|
||||||
|
device drivers need to care about most details of keyslot management.
|
||||||
|
|
||||||
blk-mq changes, other block layer changes and blk-crypto-fallback
|
Specifically, for each keyslot, the block layer (via the blk_crypto_profile)
|
||||||
=================================================================
|
keeps track of which blk_crypto_key that keyslot contains (if any), and how many
|
||||||
|
in-flight I/O requests are using it. When the block layer creates a
|
||||||
|
``struct request`` for a bio that has an encryption context, it grabs a keyslot
|
||||||
|
that already contains the key if possible. Otherwise it waits for an idle
|
||||||
|
keyslot (a keyslot that isn't in-use by any I/O), then programs the key into the
|
||||||
|
least-recently-used idle keyslot using the function the device driver provided.
|
||||||
|
In both cases, the resulting keyslot is stored in the ``crypt_keyslot`` field of
|
||||||
|
the request, where it is then accessible to device drivers and is released after
|
||||||
|
the request completes.
|
||||||
|
|
||||||
We add a pointer to a ``bi_crypt_context`` and ``keyslot`` to
|
``struct request`` also contains a pointer to the original bio_crypt_ctx.
|
||||||
struct request. These will be referred to as the ``crypto fields``
|
Requests can be built from multiple bios, and the block layer must take the
|
||||||
for the request. This ``keyslot`` is the keyslot into which the
|
encryption context into account when trying to merge bios and requests. For two
|
||||||
``bi_crypt_context`` has been programmed in the KSM of the ``request_queue``
|
bios/requests to be merged, they must have compatible encryption contexts: both
|
||||||
that this request is being sent to.
|
unencrypted, or both encrypted with the same key and contiguous data unit
|
||||||
|
numbers. Only the encryption context for the first bio in a request is
|
||||||
|
retained, since the remaining bios have been verified to be merge-compatible
|
||||||
|
with the first bio.
|
||||||
|
|
||||||
We introduce ``block/blk-crypto-fallback.c``, which allows upper layers to remain
|
To make it possible for inline encryption to work with request_queue based
|
||||||
blissfully unaware of whether or not real inline encryption hardware is present
|
layered devices, when a request is cloned, its encryption context is cloned as
|
||||||
underneath. When a bio is submitted with a target ``request_queue`` that doesn't
|
well. When the cloned request is submitted, it is then processed as usual; this
|
||||||
support the encryption context specified with the bio, the block layer will
|
includes getting a keyslot from the clone's target device if needed.
|
||||||
en/decrypt the bio with the blk-crypto-fallback.
|
|
||||||
|
|
||||||
If the bio is a ``WRITE`` bio, a bounce bio is allocated, and the data in the bio
|
blk-crypto-fallback
|
||||||
is encrypted stored in the bounce bio - blk-mq will then proceed to process the
|
===================
|
||||||
bounce bio as if it were not encrypted at all (except when blk-integrity is
|
|
||||||
concerned). ``blk-crypto-fallback`` sets the bounce bio's ``bi_end_io`` to an
|
|
||||||
internal function that cleans up the bounce bio and ends the original bio.
|
|
||||||
|
|
||||||
If the bio is a ``READ`` bio, the bio's ``bi_end_io`` (and also ``bi_private``)
|
It is desirable for the inline encryption support of upper layers (e.g.
|
||||||
is saved and overwritten by ``blk-crypto-fallback`` to
|
filesystems) to be testable without real inline encryption hardware, and
|
||||||
``bio_crypto_fallback_decrypt_bio``. The bio's ``bi_crypt_context`` is also
|
likewise for the block layer's keyslot management logic. It is also desirable
|
||||||
overwritten with ``NULL``, so that to the rest of the stack, the bio looks
|
to allow upper layers to just always use inline encryption rather than have to
|
||||||
as if it was a regular bio that never had an encryption context specified.
|
implement encryption in multiple ways.
|
||||||
``bio_crypto_fallback_decrypt_bio`` will decrypt the bio, restore the original
|
|
||||||
``bi_end_io`` (and also ``bi_private``) and end the bio again.
|
|
||||||
|
|
||||||
Regardless of whether real inline encryption hardware is used or the
|
Therefore, we also introduce *blk-crypto-fallback*, which is an implementation
|
||||||
|
of inline encryption using the kernel crypto API. blk-crypto-fallback is built
|
||||||
|
into the block layer, so it works on any block device without any special setup.
|
||||||
|
Essentially, when a bio with an encryption context is submitted to a
|
||||||
|
request_queue that doesn't support that encryption context, the block layer will
|
||||||
|
handle en/decryption of the bio using blk-crypto-fallback.
|
||||||
|
|
||||||
|
For encryption, the data cannot be encrypted in-place, as callers usually rely
|
||||||
|
on it being unmodified. Instead, blk-crypto-fallback allocates bounce pages,
|
||||||
|
fills a new bio with those bounce pages, encrypts the data into those bounce
|
||||||
|
pages, and submits that "bounce" bio. When the bounce bio completes,
|
||||||
|
blk-crypto-fallback completes the original bio. If the original bio is too
|
||||||
|
large, multiple bounce bios may be required; see the code for details.
|
||||||
|
|
||||||
|
For decryption, blk-crypto-fallback "wraps" the bio's completion callback
|
||||||
|
(``bi_complete``) and private data (``bi_private``) with its own, unsets the
|
||||||
|
bio's encryption context, then submits the bio. If the read completes
|
||||||
|
successfully, blk-crypto-fallback restores the bio's original completion
|
||||||
|
callback and private data, then decrypts the bio's data in-place using the
|
||||||
|
kernel crypto API. Decryption happens from a workqueue, as it may sleep.
|
||||||
|
Afterwards, blk-crypto-fallback completes the bio.
|
||||||
|
|
||||||
|
In both cases, the bios that blk-crypto-fallback submits no longer have an
|
||||||
|
encryption context. Therefore, lower layers only see standard unencrypted I/O.
|
||||||
|
|
||||||
|
blk-crypto-fallback also defines its own blk_crypto_profile and has its own
|
||||||
|
"keyslots"; its keyslots contain ``struct crypto_skcipher`` objects. The reason
|
||||||
|
for this is twofold. First, it allows the keyslot management logic to be tested
|
||||||
|
without actual inline encryption hardware. Second, similar to actual inline
|
||||||
|
encryption hardware, the crypto API doesn't accept keys directly in requests but
|
||||||
|
rather requires that keys be set ahead of time, and setting keys can be
|
||||||
|
expensive; moreover, allocating a crypto_skcipher can't happen on the I/O path
|
||||||
|
at all due to the locks it takes. Therefore, the concept of keyslots still
|
||||||
|
makes sense for blk-crypto-fallback.
|
||||||
|
|
||||||
|
Note that regardless of whether real inline encryption hardware or
|
||||||
blk-crypto-fallback is used, the ciphertext written to disk (and hence the
|
blk-crypto-fallback is used, the ciphertext written to disk (and hence the
|
||||||
on-disk format of data) will be the same (assuming the hardware's implementation
|
on-disk format of data) will be the same (assuming that both the inline
|
||||||
of the algorithm being used adheres to spec and functions correctly).
|
encryption hardware's implementation and the kernel crypto API's implementation
|
||||||
|
of the algorithm being used adhere to spec and function correctly).
|
||||||
If a ``request queue``'s inline encryption hardware claimed to support the
|
|
||||||
encryption context specified with a bio, then it will not be handled by the
|
|
||||||
``blk-crypto-fallback``. We will eventually reach a point in blk-mq when a
|
|
||||||
struct request needs to be allocated for that bio. At that point,
|
|
||||||
blk-mq tries to program the encryption context into the ``request_queue``'s
|
|
||||||
keyslot_manager, and obtain a keyslot, which it stores in its newly added
|
|
||||||
``keyslot`` field. This keyslot is released when the request is completed.
|
|
||||||
|
|
||||||
When the first bio is added to a request, ``blk_crypto_rq_bio_prep`` is called,
|
|
||||||
which sets the request's ``crypt_ctx`` to a copy of the bio's
|
|
||||||
``bi_crypt_context``. bio_crypt_do_front_merge is called whenever a subsequent
|
|
||||||
bio is merged to the front of the request, which updates the ``crypt_ctx`` of
|
|
||||||
the request so that it matches the newly merged bio's ``bi_crypt_context``. In particular, the request keeps a copy of the ``bi_crypt_context`` of the first
|
|
||||||
bio in its bio-list (blk-mq needs to be careful to maintain this invariant
|
|
||||||
during bio and request merges).
|
|
||||||
|
|
||||||
To make it possible for inline encryption to work with request queue based
|
|
||||||
layered devices, when a request is cloned, its ``crypto fields`` are cloned as
|
|
||||||
well. When the cloned request is submitted, blk-mq programs the
|
|
||||||
``bi_crypt_context`` of the request into the clone's request_queue's keyslot
|
|
||||||
manager, and stores the returned keyslot in the clone's ``keyslot``.
|
|
||||||
|
|
||||||
|
blk-crypto-fallback is optional and is controlled by the
|
||||||
|
``CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK`` kernel configuration option.
|
||||||
|
|
||||||
API presented to users of the block layer
|
API presented to users of the block layer
|
||||||
=========================================
|
=========================================
|
||||||
|
|
||||||
``struct blk_crypto_key`` represents a crypto key (the raw key, size of the
|
``blk_crypto_config_supported()`` allows users to check ahead of time whether
|
||||||
key, the crypto algorithm to use, the data unit size to use, and the number of
|
inline encryption with particular crypto settings will work on a particular
|
||||||
bytes required to represent data unit numbers that will be specified with the
|
request_queue -- either via hardware or via blk-crypto-fallback. This function
|
||||||
``bi_crypt_context``).
|
takes in a ``struct blk_crypto_config`` which is like blk_crypto_key, but omits
|
||||||
|
the actual bytes of the key and instead just contains the algorithm, data unit
|
||||||
|
size, etc. This function can be useful if blk-crypto-fallback is disabled.
|
||||||
|
|
||||||
``blk_crypto_init_key`` allows upper layers to initialize such a
|
``blk_crypto_init_key()`` allows users to initialize a blk_crypto_key.
|
||||||
``blk_crypto_key``.
|
|
||||||
|
|
||||||
``bio_crypt_set_ctx`` should be called on any bio that a user of
|
Users must call ``blk_crypto_start_using_key()`` before actually starting to use
|
||||||
the block layer wants en/decrypted via inline encryption (or the
|
a blk_crypto_key on a request_queue (even if ``blk_crypto_config_supported()``
|
||||||
blk-crypto-fallback, if hardware support isn't available for the desired
|
was called earlier). This is needed to initialize blk-crypto-fallback if it
|
||||||
crypto configuration). This function takes the ``blk_crypto_key`` and the
|
will be needed. This must not be called from the data path, as this may have to
|
||||||
data unit number (DUN) to use when en/decrypting the bio.
|
allocate resources, which may deadlock in that case.
|
||||||
|
|
||||||
``blk_crypto_config_supported`` allows upper layers to query whether or not the
|
Next, to attach an encryption context to a bio, users should call
|
||||||
an encryption context passed to request queue can be handled by blk-crypto
|
``bio_crypt_set_ctx()``. This function allocates a bio_crypt_ctx and attaches
|
||||||
(either by real inline encryption hardware, or by the blk-crypto-fallback).
|
it to a bio, given the blk_crypto_key and the data unit number that will be used
|
||||||
This is useful e.g. when blk-crypto-fallback is disabled, and the upper layer
|
for en/decryption. Users don't need to worry about freeing the bio_crypt_ctx
|
||||||
wants to use an algorithm that may not supported by hardware - this function
|
later, as that happens automatically when the bio is freed or reset.
|
||||||
lets the upper layer know ahead of time that the algorithm isn't supported,
|
|
||||||
and the upper layer can fallback to something else if appropriate.
|
|
||||||
|
|
||||||
``blk_crypto_start_using_key`` - Upper layers must call this function on
|
Finally, when done using inline encryption with a blk_crypto_key on a
|
||||||
``blk_crypto_key`` and a ``request_queue`` before using the key with any bio
|
request_queue, users must call ``blk_crypto_evict_key()``. This ensures that
|
||||||
headed for that ``request_queue``. This function ensures that either the
|
the key is evicted from all keyslots it may be programmed into and unlinked from
|
||||||
hardware supports the key's crypto settings, or the crypto API fallback has
|
any kernel data structures it may be linked into.
|
||||||
transforms for the needed mode allocated and ready to go. Note that this
|
|
||||||
function may allocate an ``skcipher``, and must not be called from the data
|
|
||||||
path, since allocating ``skciphers`` from the data path can deadlock.
|
|
||||||
|
|
||||||
``blk_crypto_evict_key`` *must* be called by upper layers before a
|
In summary, for users of the block layer, the lifecycle of a blk_crypto_key is
|
||||||
``blk_crypto_key`` is freed. Further, it *must* only be called only once
|
as follows:
|
||||||
there are no more in-flight requests that use that ``blk_crypto_key``.
|
|
||||||
``blk_crypto_evict_key`` will ensure that a key is removed from any keyslots in
|
1. ``blk_crypto_config_supported()`` (optional)
|
||||||
inline encryption hardware that the key might have been programmed into (or the blk-crypto-fallback).
|
2. ``blk_crypto_init_key()``
|
||||||
|
3. ``blk_crypto_start_using_key()``
|
||||||
|
4. ``bio_crypt_set_ctx()`` (potentially many times)
|
||||||
|
5. ``blk_crypto_evict_key()`` (after all I/O has completed)
|
||||||
|
6. Zeroize the blk_crypto_key (this has no dedicated function)
|
||||||
|
|
||||||
|
If a blk_crypto_key is being used on multiple request_queues, then
|
||||||
|
``blk_crypto_config_supported()`` (if used), ``blk_crypto_start_using_key()``,
|
||||||
|
and ``blk_crypto_evict_key()`` must be called on each request_queue.
|
||||||
|
|
||||||
API presented to device drivers
|
API presented to device drivers
|
||||||
===============================
|
===============================
|
||||||
|
|
||||||
A :c:type:``struct blk_keyslot_manager`` should be set up by device drivers in
|
A device driver that wants to support inline encryption must set up a
|
||||||
the ``request_queue`` of the device. The device driver needs to call
|
blk_crypto_profile in the request_queue of its device. To do this, it first
|
||||||
``blk_ksm_init`` (or its resource-managed variant ``devm_blk_ksm_init``) on the
|
must call ``blk_crypto_profile_init()`` (or its resource-managed variant
|
||||||
``blk_keyslot_manager``, while specifying the number of keyslots supported by
|
``devm_blk_crypto_profile_init()``), providing the number of keyslots.
|
||||||
the hardware.
|
|
||||||
|
|
||||||
The device driver also needs to tell the KSM how to actually manipulate the
|
Next, it must advertise its crypto capabilities by setting fields in the
|
||||||
IE hardware in the device to do things like programming the crypto key into
|
blk_crypto_profile, e.g. ``modes_supported`` and ``max_dun_bytes_supported``.
|
||||||
the IE hardware into a particular keyslot. All this is achieved through the
|
|
||||||
struct blk_ksm_ll_ops field in the KSM that the device driver
|
|
||||||
must fill up after initing the ``blk_keyslot_manager``.
|
|
||||||
|
|
||||||
The KSM also handles runtime power management for the device when applicable
|
It then must set function pointers in the ``ll_ops`` field of the
|
||||||
(e.g. when it wants to program a crypto key into the IE hardware, the device
|
blk_crypto_profile to tell upper layers how to control the inline encryption
|
||||||
must be runtime powered on) - so the device driver must also set the ``dev``
|
hardware, e.g. how to program and evict keyslots. Most drivers will need to
|
||||||
field in the ksm to point to the `struct device` for the KSM to use for runtime
|
implement ``keyslot_program`` and ``keyslot_evict``. For details, see the
|
||||||
power management.
|
comments for ``struct blk_crypto_ll_ops``.
|
||||||
|
|
||||||
``blk_ksm_reprogram_all_keys`` can be called by device drivers if the device
|
Once the driver registers a blk_crypto_profile with a request_queue, I/O
|
||||||
needs each and every of its keyslots to be reprogrammed with the key it
|
requests the driver receives via that queue may have an encryption context. All
|
||||||
"should have" at the point in time when the function is called. This is useful
|
encryption contexts will be compatible with the crypto capabilities declared in
|
||||||
e.g. if a device loses all its keys on runtime power down/up.
|
the blk_crypto_profile, so drivers don't need to worry about handling
|
||||||
|
unsupported requests. Also, if a nonzero number of keyslots was declared in the
|
||||||
|
blk_crypto_profile, then all I/O requests that have an encryption context will
|
||||||
|
also have a keyslot which was already programmed with the appropriate key.
|
||||||
|
|
||||||
If the driver used ``blk_ksm_init`` instead of ``devm_blk_ksm_init``, then
|
If the driver implements runtime suspend and its blk_crypto_ll_ops don't work
|
||||||
``blk_ksm_destroy`` should be called to free up all resources used by a
|
while the device is runtime-suspended, then the driver must also set the ``dev``
|
||||||
``blk_keyslot_manager`` once it is no longer needed.
|
field of the blk_crypto_profile to point to the ``struct device`` that will be
|
||||||
|
resumed before any of the low-level operations are called.
|
||||||
|
|
||||||
|
If there are situations where the inline encryption hardware loses the contents
|
||||||
|
of its keyslots, e.g. device resets, the driver must handle reprogramming the
|
||||||
|
keyslots. To do this, the driver may call ``blk_crypto_reprogram_all_keys()``.
|
||||||
|
|
||||||
|
Finally, if the driver used ``blk_crypto_profile_init()`` instead of
|
||||||
|
``devm_blk_crypto_profile_init()``, then it is responsible for calling
|
||||||
|
``blk_crypto_profile_destroy()`` when the crypto profile is no longer needed.
|
||||||
|
|
||||||
Layered Devices
|
Layered Devices
|
||||||
===============
|
===============
|
||||||
|
|
||||||
Request queue based layered devices like dm-rq that wish to support IE need to
|
Request queue based layered devices like dm-rq that wish to support inline
|
||||||
create their own keyslot manager for their request queue, and expose whatever
|
encryption need to create their own blk_crypto_profile for their request_queue,
|
||||||
functionality they choose. When a layered device wants to pass a clone of that
|
and expose whatever functionality they choose. When a layered device wants to
|
||||||
request to another ``request_queue``, blk-crypto will initialize and prepare the
|
pass a clone of that request to another request_queue, blk-crypto will
|
||||||
clone as necessary - see ``blk_crypto_insert_cloned_request`` in
|
initialize and prepare the clone as necessary; see
|
||||||
``blk-crypto.c``.
|
``blk_crypto_insert_cloned_request()``.
|
||||||
|
|
||||||
|
|
||||||
Future Optimizations for layered devices
|
|
||||||
========================================
|
|
||||||
|
|
||||||
Creating a keyslot manager for a layered device uses up memory for each
|
|
||||||
keyslot, and in general, a layered device merely passes the request on to a
|
|
||||||
"child" device, so the keyslots in the layered device itself are completely
|
|
||||||
unused, and don't need any refcounting or keyslot programming. We can instead
|
|
||||||
define a new type of KSM; the "passthrough KSM", that layered devices can use
|
|
||||||
to advertise an unlimited number of keyslots, and support for any encryption
|
|
||||||
algorithms they choose, while not actually using any memory for each keyslot.
|
|
||||||
Another use case for the "passthrough KSM" is for IE devices that do not have a
|
|
||||||
limited number of keyslots.
|
|
||||||
|
|
||||||
|
|
||||||
Interaction between inline encryption and blk integrity
|
Interaction between inline encryption and blk integrity
|
||||||
=======================================================
|
=======================================================
|
||||||
|
@ -257,7 +298,7 @@ Because there isn't any real hardware yet, it seems prudent to assume that
|
||||||
hardware implementations might not implement both features together correctly,
|
hardware implementations might not implement both features together correctly,
|
||||||
and disallow the combination for now. Whenever a device supports integrity, the
|
and disallow the combination for now. Whenever a device supports integrity, the
|
||||||
kernel will pretend that the device does not support hardware inline encryption
|
kernel will pretend that the device does not support hardware inline encryption
|
||||||
(by essentially setting the keyslot manager in the request_queue of the device
|
(by setting the blk_crypto_profile in the request_queue of the device to NULL).
|
||||||
to NULL). When the crypto API fallback is enabled, this means that all bios with
|
When the crypto API fallback is enabled, this means that all bios with and
|
||||||
and encryption context will use the fallback, and IO will complete as usual.
|
encryption context will use the fallback, and IO will complete as usual. When
|
||||||
When the fallback is disabled, a bio with an encryption context will be failed.
|
the fallback is disabled, a bio with an encryption context will be failed.
|
||||||
|
|
|
@ -4,7 +4,7 @@ Queue sysfs files
|
||||||
|
|
||||||
This text file will detail the queue files that are located in the sysfs tree
|
This text file will detail the queue files that are located in the sysfs tree
|
||||||
for each block device. Note that stacked devices typically do not export
|
for each block device. Note that stacked devices typically do not export
|
||||||
any settings, since their queue merely functions are a remapping target.
|
any settings, since their queue merely functions as a remapping target.
|
||||||
These files are the ones found in the /sys/block/xxx/queue/ directory.
|
These files are the ones found in the /sys/block/xxx/queue/ directory.
|
||||||
|
|
||||||
Files denoted with a RO postfix are readonly and the RW postfix means
|
Files denoted with a RO postfix are readonly and the RW postfix means
|
||||||
|
@ -286,4 +286,35 @@ sequential zones of zoned block devices (devices with a zoned attributed
|
||||||
that reports "host-managed" or "host-aware"). This value is always 0 for
|
that reports "host-managed" or "host-aware"). This value is always 0 for
|
||||||
regular block devices.
|
regular block devices.
|
||||||
|
|
||||||
|
independent_access_ranges (RO)
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
The presence of this sub-directory of the /sys/block/xxx/queue/ directory
|
||||||
|
indicates that the device is capable of executing requests targeting
|
||||||
|
different sector ranges in parallel. For instance, single LUN multi-actuator
|
||||||
|
hard-disks will have an independent_access_ranges directory if the device
|
||||||
|
correctly advertizes the sector ranges of its actuators.
|
||||||
|
|
||||||
|
The independent_access_ranges directory contains one directory per access
|
||||||
|
range, with each range described using the sector (RO) attribute file to
|
||||||
|
indicate the first sector of the range and the nr_sectors (RO) attribute file
|
||||||
|
to indicate the total number of sectors in the range starting from the first
|
||||||
|
sector of the range. For example, a dual-actuator hard-disk will have the
|
||||||
|
following independent_access_ranges entries.::
|
||||||
|
|
||||||
|
$ tree /sys/block/<device>/queue/independent_access_ranges/
|
||||||
|
/sys/block/<device>/queue/independent_access_ranges/
|
||||||
|
|-- 0
|
||||||
|
| |-- nr_sectors
|
||||||
|
| `-- sector
|
||||||
|
`-- 1
|
||||||
|
|-- nr_sectors
|
||||||
|
`-- sector
|
||||||
|
|
||||||
|
The sector and nr_sectors attributes use 512B sector unit, regardless of
|
||||||
|
the actual block size of the device. Independent access ranges do not
|
||||||
|
overlap and include all sectors within the device capacity. The access
|
||||||
|
ranges are numbered in increasing order of the range start sector,
|
||||||
|
that is, the sector attribute of range 0 always has the value 0.
|
||||||
|
|
||||||
Jens Axboe <jens.axboe@oracle.com>, February 2009
|
Jens Axboe <jens.axboe@oracle.com>, February 2009
|
||||||
|
|
|
@ -907,6 +907,17 @@ commands can be identified by the underscores in their names.
|
||||||
specifies the slot for which the information is given. The special
|
specifies the slot for which the information is given. The special
|
||||||
value *CDSL_CURRENT* requests that information about the currently
|
value *CDSL_CURRENT* requests that information about the currently
|
||||||
selected slot be returned.
|
selected slot be returned.
|
||||||
|
`CDROM_TIMED_MEDIA_CHANGE`
|
||||||
|
Checks whether the disc has been changed since a user supplied time
|
||||||
|
and returns the time of the last disc change.
|
||||||
|
|
||||||
|
*arg* is a pointer to a *cdrom_timed_media_change_info* struct.
|
||||||
|
*arg->last_media_change* may be set by calling code to signal
|
||||||
|
the timestamp of the last known media change (by the caller).
|
||||||
|
Upon successful return, this ioctl call will set
|
||||||
|
*arg->last_media_change* to the latest media change timestamp (in ms)
|
||||||
|
known by the kernel/driver and set *arg->has_changed* to 1 if
|
||||||
|
that timestamp is more recent than the timestamp set by the caller.
|
||||||
`CDROM_DRIVE_STATUS`
|
`CDROM_DRIVE_STATUS`
|
||||||
Returns the status of the drive by a call to
|
Returns the status of the drive by a call to
|
||||||
*drive_status()*. Return values are defined in cdrom_drive_status_.
|
*drive_status()*. Return values are defined in cdrom_drive_status_.
|
||||||
|
|
|
@ -326,6 +326,12 @@ maps this page at its virtual address.
|
||||||
dirty. Again, see sparc64 for examples of how
|
dirty. Again, see sparc64 for examples of how
|
||||||
to deal with this.
|
to deal with this.
|
||||||
|
|
||||||
|
``void flush_dcache_folio(struct folio *folio)``
|
||||||
|
This function is called under the same circumstances as
|
||||||
|
flush_dcache_page(). It allows the architecture to
|
||||||
|
optimise for flushing the entire folio of pages instead
|
||||||
|
of flushing one page at a time.
|
||||||
|
|
||||||
``void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
|
``void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
|
||||||
unsigned long user_vaddr, void *dst, void *src, int len)``
|
unsigned long user_vaddr, void *dst, void *src, int len)``
|
||||||
``void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
|
``void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
|
||||||
|
|
|
@ -67,9 +67,6 @@ variety of methods:
|
||||||
deprecated
|
deprecated
|
||||||
- generic_handle_domain_irq() handles an interrupt described by a
|
- generic_handle_domain_irq() handles an interrupt described by a
|
||||||
domain and a hwirq number
|
domain and a hwirq number
|
||||||
- handle_domain_irq() does the same thing for root interrupt
|
|
||||||
controllers and deals with the set_irq_reg()/irq_enter() sequences
|
|
||||||
that most architecture requires
|
|
||||||
|
|
||||||
Note that irq domain lookups must happen in contexts that are
|
Note that irq domain lookups must happen in contexts that are
|
||||||
compatible with a RCU read-side critical section.
|
compatible with a RCU read-side critical section.
|
||||||
|
|
|
@ -95,6 +95,11 @@ More Memory Management Functions
|
||||||
.. kernel-doc:: mm/mempolicy.c
|
.. kernel-doc:: mm/mempolicy.c
|
||||||
.. kernel-doc:: include/linux/mm_types.h
|
.. kernel-doc:: include/linux/mm_types.h
|
||||||
:internal:
|
:internal:
|
||||||
|
.. kernel-doc:: include/linux/mm_inline.h
|
||||||
|
.. kernel-doc:: include/linux/page-flags.h
|
||||||
.. kernel-doc:: include/linux/mm.h
|
.. kernel-doc:: include/linux/mm.h
|
||||||
:internal:
|
:internal:
|
||||||
|
.. kernel-doc:: include/linux/page_ref.h
|
||||||
.. kernel-doc:: include/linux/mmzone.h
|
.. kernel-doc:: include/linux/mmzone.h
|
||||||
|
.. kernel-doc:: mm/util.c
|
||||||
|
:functions: folio_mapping
|
||||||
|
|
|
@ -69,6 +69,8 @@ the crypto engine via one of:
|
||||||
|
|
||||||
* crypto_transfer_hash_request_to_engine()
|
* crypto_transfer_hash_request_to_engine()
|
||||||
|
|
||||||
|
* crypto_transfer_kpp_request_to_engine()
|
||||||
|
|
||||||
* crypto_transfer_skcipher_request_to_engine()
|
* crypto_transfer_skcipher_request_to_engine()
|
||||||
|
|
||||||
At the end of the request process, a call to one of the following functions is needed:
|
At the end of the request process, a call to one of the following functions is needed:
|
||||||
|
@ -79,4 +81,6 @@ At the end of the request process, a call to one of the following functions is n
|
||||||
|
|
||||||
* crypto_finalize_hash_request()
|
* crypto_finalize_hash_request()
|
||||||
|
|
||||||
|
* crypto_finalize_kpp_request()
|
||||||
|
|
||||||
* crypto_finalize_skcipher_request()
|
* crypto_finalize_skcipher_request()
|
||||||
|
|
|
@ -194,14 +194,17 @@ additional boot parameters that allow disabling KASAN or controlling features:
|
||||||
|
|
||||||
- ``kasan=off`` or ``=on`` controls whether KASAN is enabled (default: ``on``).
|
- ``kasan=off`` or ``=on`` controls whether KASAN is enabled (default: ``on``).
|
||||||
|
|
||||||
- ``kasan.mode=sync`` or ``=async`` controls whether KASAN is configured in
|
- ``kasan.mode=sync``, ``=async`` or ``=asymm`` controls whether KASAN
|
||||||
synchronous or asynchronous mode of execution (default: ``sync``).
|
is configured in synchronous, asynchronous or asymmetric mode of
|
||||||
|
execution (default: ``sync``).
|
||||||
Synchronous mode: a bad access is detected immediately when a tag
|
Synchronous mode: a bad access is detected immediately when a tag
|
||||||
check fault occurs.
|
check fault occurs.
|
||||||
Asynchronous mode: a bad access detection is delayed. When a tag check
|
Asynchronous mode: a bad access detection is delayed. When a tag check
|
||||||
fault occurs, the information is stored in hardware (in the TFSR_EL1
|
fault occurs, the information is stored in hardware (in the TFSR_EL1
|
||||||
register for arm64). The kernel periodically checks the hardware and
|
register for arm64). The kernel periodically checks the hardware and
|
||||||
only reports tag faults during these checks.
|
only reports tag faults during these checks.
|
||||||
|
Asymmetric mode: a bad access is detected synchronously on reads and
|
||||||
|
asynchronously on writes.
|
||||||
|
|
||||||
- ``kasan.stacktrace=off`` or ``=on`` disables or enables alloc and free stack
|
- ``kasan.stacktrace=off`` or ``=on`` disables or enables alloc and free stack
|
||||||
traces collection (default: ``on``).
|
traces collection (default: ``on``).
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
Binding for Samsung S2M and S5M family clock generator block
|
|
||||||
============================================================
|
|
||||||
|
|
||||||
This is a part of device tree bindings for S2M and S5M family multi-function
|
|
||||||
devices.
|
|
||||||
More information can be found in bindings/mfd/sec-core.txt file.
|
|
||||||
|
|
||||||
The S2MPS11/13/15 and S5M8767 provide three(AP/CP/BT) buffered 32.768 kHz
|
|
||||||
outputs. The S2MPS14 provides two (AP/BT) buffered 32.768 KHz outputs.
|
|
||||||
|
|
||||||
To register these as clocks with common clock framework instantiate under
|
|
||||||
main device node a sub-node named "clocks".
|
|
||||||
|
|
||||||
It uses the common clock binding documented in:
|
|
||||||
- Documentation/devicetree/bindings/clock/clock-bindings.txt
|
|
||||||
|
|
||||||
|
|
||||||
Required properties of the "clocks" sub-node:
|
|
||||||
- #clock-cells: should be 1.
|
|
||||||
- compatible: Should be one of: "samsung,s2mps11-clk", "samsung,s2mps13-clk",
|
|
||||||
"samsung,s2mps14-clk", "samsung,s5m8767-clk"
|
|
||||||
The S2MPS15 uses the same compatible as S2MPS13, as both provides similar
|
|
||||||
clocks.
|
|
||||||
|
|
||||||
|
|
||||||
Each clock is assigned an identifier and client nodes use this identifier
|
|
||||||
to specify the clock which they consume.
|
|
||||||
Clock ID Devices
|
|
||||||
----------------------------------------------------------
|
|
||||||
32KhzAP 0 S2MPS11/13/14/15, S5M8767
|
|
||||||
32KhzCP 1 S2MPS11/13/15, S5M8767
|
|
||||||
32KhzBT 2 S2MPS11/13/14/15, S5M8767
|
|
||||||
|
|
||||||
Include dt-bindings/clock/samsung,s2mps11.h file to use preprocessor defines
|
|
||||||
in device tree sources.
|
|
||||||
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
s2mps11_pmic@66 {
|
|
||||||
compatible = "samsung,s2mps11-pmic";
|
|
||||||
reg = <0x66>;
|
|
||||||
|
|
||||||
s2m_osc: clocks {
|
|
||||||
compatible = "samsung,s2mps11-clk";
|
|
||||||
#clock-cells = <1>;
|
|
||||||
clock-output-names = "xx", "yy", "zz";
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/clock/samsung,s2mps11.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Samsung S2M and S5M family clock generator block
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is a part of device tree bindings for S2M and S5M family of Power
|
||||||
|
Management IC (PMIC).
|
||||||
|
|
||||||
|
The S2MPS11/13/15 and S5M8767 provide three(AP/CP/BT) buffered 32.768 kHz
|
||||||
|
outputs. The S2MPS14 provides two (AP/BT) buffered 32.768 KHz outputs.
|
||||||
|
|
||||||
|
All available clocks are defined as preprocessor macros in
|
||||||
|
dt-bindings/clock/samsung,s2mps11.h header.
|
||||||
|
|
||||||
|
See also Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml for
|
||||||
|
additional information and example.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- samsung,s2mps11-clk
|
||||||
|
- samsung,s2mps13-clk # S2MPS13 and S2MPS15
|
||||||
|
- samsung,s2mps14-clk
|
||||||
|
- samsung,s5m8767-clk
|
||||||
|
|
||||||
|
"#clock-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
clock-output-names:
|
||||||
|
minItems: 3
|
||||||
|
maxItems: 3
|
||||||
|
description: Names for AP, CP and BT clocks.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- "#clock-cells"
|
||||||
|
|
||||||
|
additionalProperties: false
|
|
@ -0,0 +1,47 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/crypto/intel,keembay-ocs-ecc.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Intel Keem Bay OCS ECC Device Tree Bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Daniele Alessandrelli <daniele.alessandrelli@intel.com>
|
||||||
|
- Prabhjot Khurana <prabhjot.khurana@intel.com>
|
||||||
|
|
||||||
|
description:
|
||||||
|
The Intel Keem Bay Offload and Crypto Subsystem (OCS) Elliptic Curve
|
||||||
|
Cryptography (ECC) device provides hardware acceleration for elliptic curve
|
||||||
|
cryptography using the NIST P-256 and NIST P-384 elliptic curves.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: intel,keembay-ocs-ecc
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
crypto@30001000 {
|
||||||
|
compatible = "intel,keembay-ocs-ecc";
|
||||||
|
reg = <0x30001000 0x1000>;
|
||||||
|
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&scmi_clk 95>;
|
||||||
|
};
|
|
@ -1,11 +0,0 @@
|
||||||
Bindings for Delta Electronics DPS-650-AB power supply
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible : "delta,dps650ab"
|
|
||||||
- reg : I2C address, one of 0x58, 0x59.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
dps650ab@58 {
|
|
||||||
compatible = "delta,dps650ab";
|
|
||||||
reg = <0x58>;
|
|
||||||
};
|
|
|
@ -1,12 +0,0 @@
|
||||||
Honeywell Humidicon HIH-6130 humidity/temperature sensor
|
|
||||||
--------------------------------------------------------
|
|
||||||
|
|
||||||
Requires node properties:
|
|
||||||
- compatible : "honeywell,hi6130"
|
|
||||||
- reg : the I2C address of the device. This is 0x27.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
hih6130@27 {
|
|
||||||
compatible = "honeywell,hih6130";
|
|
||||||
reg = <0x27>;
|
|
||||||
};
|
|
|
@ -1,26 +0,0 @@
|
||||||
Device-tree bindings for IBM Common Form Factor Power Supply Versions 1 and 2
|
|
||||||
-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible : Must be one of the following:
|
|
||||||
"ibm,cffps1"
|
|
||||||
"ibm,cffps2"
|
|
||||||
or "ibm,cffps" if the system
|
|
||||||
must support any version of the
|
|
||||||
power supply
|
|
||||||
- reg = < I2C bus address >; : Address of the power supply on the
|
|
||||||
I2C bus.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
i2c-bus@100 {
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
#interrupt-cells = <1>;
|
|
||||||
< more properties >
|
|
||||||
|
|
||||||
power-supply@68 {
|
|
||||||
compatible = "ibm,cffps1";
|
|
||||||
reg = <0x68>;
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: "http://devicetree.org/schemas/hwmon/iio-hwmon.yaml#"
|
||||||
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
|
title: ADC-attached Hardware Sensor Device Tree Bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Jonathan Cameron <jic23@kernel.org>
|
||||||
|
|
||||||
|
description: >
|
||||||
|
Bindings for hardware monitoring devices connected to ADC controllers
|
||||||
|
supporting the Industrial I/O bindings.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: iio-hwmon
|
||||||
|
|
||||||
|
io-channels:
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 8 # Should be enough
|
||||||
|
description: >
|
||||||
|
List of phandles to ADC channels to read the monitoring values
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- io-channels
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
iio-hwmon {
|
||||||
|
compatible = "iio-hwmon";
|
||||||
|
io-channels = <&adc 1>, <&adc 2>;
|
||||||
|
};
|
|
@ -1,46 +0,0 @@
|
||||||
Properties for Jedec JC-42.4 compatible temperature sensors
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: May include a device-specific string consisting of the
|
|
||||||
manufacturer and the name of the chip. A list of supported
|
|
||||||
chip names follows.
|
|
||||||
Must include "jedec,jc-42.4-temp" for any Jedec JC-42.4
|
|
||||||
compatible temperature sensor.
|
|
||||||
|
|
||||||
Supported chip names:
|
|
||||||
adi,adt7408
|
|
||||||
atmel,at30ts00
|
|
||||||
atmel,at30tse004
|
|
||||||
onnn,cat6095
|
|
||||||
onnn,cat34ts02
|
|
||||||
maxim,max6604
|
|
||||||
microchip,mcp9804
|
|
||||||
microchip,mcp9805
|
|
||||||
microchip,mcp9808
|
|
||||||
microchip,mcp98243
|
|
||||||
microchip,mcp98244
|
|
||||||
microchip,mcp9843
|
|
||||||
nxp,se97
|
|
||||||
nxp,se98
|
|
||||||
st,stts2002
|
|
||||||
st,stts2004
|
|
||||||
st,stts3000
|
|
||||||
st,stts424
|
|
||||||
st,stts424e
|
|
||||||
idt,tse2002
|
|
||||||
idt,tse2004
|
|
||||||
idt,ts3000
|
|
||||||
idt,ts3001
|
|
||||||
|
|
||||||
- reg: I2C address
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- smbus-timeout-disable: When set, the smbus timeout function will be disabled.
|
|
||||||
This is not supported on all chips.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
temp-sensor@1a {
|
|
||||||
compatible = "jedec,jc-42.4-temp";
|
|
||||||
reg = <0x1a>;
|
|
||||||
};
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/jedec,jc42.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Jedec JC-42.4 compatible temperature sensors
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Jean Delvare <jdelvare@suse.com>
|
||||||
|
- Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
select:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: jedec,jc-42.4-temp
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- const: jedec,jc-42.4-temp
|
||||||
|
- items:
|
||||||
|
- enum:
|
||||||
|
- adi,adt7408
|
||||||
|
- atmel,at30ts00
|
||||||
|
- atmel,at30tse004
|
||||||
|
- idt,tse2002
|
||||||
|
- idt,tse2004
|
||||||
|
- idt,ts3000
|
||||||
|
- idt,ts3001
|
||||||
|
- maxim,max6604
|
||||||
|
- microchip,mcp9804
|
||||||
|
- microchip,mcp9805
|
||||||
|
- microchip,mcp9808
|
||||||
|
- microchip,mcp98243
|
||||||
|
- microchip,mcp98244
|
||||||
|
- microchip,mcp9843
|
||||||
|
- nxp,se97
|
||||||
|
- nxp,se97b
|
||||||
|
- nxp,se98
|
||||||
|
- onnn,cat6095
|
||||||
|
- onnn,cat34ts02
|
||||||
|
- st,stts2002
|
||||||
|
- st,stts2004
|
||||||
|
- st,stts3000
|
||||||
|
- st,stts424
|
||||||
|
- st,stts424e
|
||||||
|
- const: jedec,jc-42.4-temp
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
smbus-timeout-disable:
|
||||||
|
description: |
|
||||||
|
When set, the smbus timeout function will be disabled. This is not
|
||||||
|
supported on all chips.
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
temp-sensor@1a {
|
||||||
|
compatible = "jedec,jc-42.4-temp";
|
||||||
|
reg = <0x1a>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,41 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/lltc,ltc4151.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: LTC4151 High Voltage I2C Current and Voltage Monitor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: lltc,ltc4151
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
shunt-resistor-micro-ohms:
|
||||||
|
description:
|
||||||
|
Shunt resistor value in micro-Ohms
|
||||||
|
default: 1000
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
sensor@6e {
|
||||||
|
compatible = "lltc,ltc4151";
|
||||||
|
reg = <0x6e>;
|
||||||
|
shunt-resistor-micro-ohms = <1500>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,22 +0,0 @@
|
||||||
* LM70/TMP121/LM71/LM74 thermometer.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: one of
|
|
||||||
"ti,lm70"
|
|
||||||
"ti,tmp121"
|
|
||||||
"ti,tmp122"
|
|
||||||
"ti,lm71"
|
|
||||||
"ti,lm74"
|
|
||||||
|
|
||||||
See Documentation/devicetree/bindings/spi/spi-bus.txt for more required and
|
|
||||||
optional properties.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
spi_master {
|
|
||||||
temperature-sensor@0 {
|
|
||||||
compatible = "ti,lm70";
|
|
||||||
reg = <0>;
|
|
||||||
spi-max-frequency = <1000000>;
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -1,51 +0,0 @@
|
||||||
* LM90 series thermometer.
|
|
||||||
|
|
||||||
Required node properties:
|
|
||||||
- compatible: manufacturer and chip name, one of
|
|
||||||
"adi,adm1032"
|
|
||||||
"adi,adt7461"
|
|
||||||
"adi,adt7461a"
|
|
||||||
"gmt,g781"
|
|
||||||
"national,lm90"
|
|
||||||
"national,lm86"
|
|
||||||
"national,lm89"
|
|
||||||
"national,lm99"
|
|
||||||
"dallas,max6646"
|
|
||||||
"dallas,max6647"
|
|
||||||
"dallas,max6649"
|
|
||||||
"dallas,max6657"
|
|
||||||
"dallas,max6658"
|
|
||||||
"dallas,max6659"
|
|
||||||
"dallas,max6680"
|
|
||||||
"dallas,max6681"
|
|
||||||
"dallas,max6695"
|
|
||||||
"dallas,max6696"
|
|
||||||
"onnn,nct1008"
|
|
||||||
"winbond,w83l771"
|
|
||||||
"nxp,sa56004"
|
|
||||||
"ti,tmp451"
|
|
||||||
|
|
||||||
- reg: I2C bus address of the device
|
|
||||||
|
|
||||||
- vcc-supply: vcc regulator for the supply voltage.
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- interrupts: Contains a single interrupt specifier which describes the
|
|
||||||
LM90 "-ALERT" pin output.
|
|
||||||
See interrupt-controller/interrupts.txt for the format.
|
|
||||||
|
|
||||||
- #thermal-sensor-cells: should be set to 1. See thermal/thermal-sensor.yaml
|
|
||||||
for details. See <include/dt-bindings/thermal/lm90.h> for the
|
|
||||||
definition of the local, remote and 2nd remote sensor index
|
|
||||||
constants.
|
|
||||||
|
|
||||||
Example LM90 node:
|
|
||||||
|
|
||||||
temp-sensor {
|
|
||||||
compatible = "onnn,nct1008";
|
|
||||||
reg = <0x4c>;
|
|
||||||
vcc-supply = <&palmas_ldo6_reg>;
|
|
||||||
interrupt-parent = <&gpio>;
|
|
||||||
interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_LOW>;
|
|
||||||
#thermal-sensor-cells = <1>;
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
LTC4151 High Voltage I2C Current and Voltage Monitor
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: Must be "lltc,ltc4151"
|
|
||||||
- reg: I2C address
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- shunt-resistor-micro-ohms
|
|
||||||
Shunt resistor value in micro-Ohms
|
|
||||||
Defaults to <1000> if unset.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
ltc4151@6e {
|
|
||||||
compatible = "lltc,ltc4151";
|
|
||||||
reg = <0x6e>;
|
|
||||||
shunt-resistor-micro-ohms = <1500>;
|
|
||||||
};
|
|
|
@ -1,21 +0,0 @@
|
||||||
mcp3021 properties
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: Must be one of the following:
|
|
||||||
- "microchip,mcp3021" for mcp3021
|
|
||||||
- "microchip,mcp3221" for mcp3221
|
|
||||||
- reg: I2C address
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
|
|
||||||
- reference-voltage-microvolt
|
|
||||||
Reference voltage in microvolt (uV)
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
mcp3021@4d {
|
|
||||||
compatible = "microchip,mcp3021";
|
|
||||||
reg = <0x4d>;
|
|
||||||
|
|
||||||
reference-voltage-microvolt = <4500000>; /* 4.5 V */
|
|
||||||
};
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/microchip,mcp3021.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Microchip MCP3021 A/D converter
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- microchip,mcp3021
|
||||||
|
- microchip,mcp3221
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reference-voltage-microvolt:
|
||||||
|
description:
|
||||||
|
VDD supply power and reference voltage
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
adc@4d {
|
||||||
|
compatible = "microchip,mcp3021";
|
||||||
|
reg = <0x4d>;
|
||||||
|
|
||||||
|
reference-voltage-microvolt = <4500000>; /* 4.5 V */
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,78 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/national,lm90.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: LM90 series thermometer
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Jean Delvare <jdelvare@suse.com>
|
||||||
|
- Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- adi,adm1032
|
||||||
|
- adi,adt7461
|
||||||
|
- adi,adt7461a
|
||||||
|
- dallas,max6646
|
||||||
|
- dallas,max6647
|
||||||
|
- dallas,max6649
|
||||||
|
- dallas,max6657
|
||||||
|
- dallas,max6658
|
||||||
|
- dallas,max6659
|
||||||
|
- dallas,max6680
|
||||||
|
- dallas,max6681
|
||||||
|
- dallas,max6695
|
||||||
|
- dallas,max6696
|
||||||
|
- gmt,g781
|
||||||
|
- national,lm86
|
||||||
|
- national,lm89
|
||||||
|
- national,lm90
|
||||||
|
- national,lm99
|
||||||
|
- nxp,sa56004
|
||||||
|
- onnn,nct1008
|
||||||
|
- ti,tmp451
|
||||||
|
- winbond,w83l771
|
||||||
|
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
items:
|
||||||
|
- description: |
|
||||||
|
Single interrupt specifier which describes the LM90 "-ALERT" pin
|
||||||
|
output.
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
"#thermal-sensor-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
vcc-supply:
|
||||||
|
description: phandle to the regulator that provides the +VCC supply
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/tegra-gpio.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
sensor@4c {
|
||||||
|
compatible = "onnn,nct1008";
|
||||||
|
reg = <0x4c>;
|
||||||
|
vcc-supply = <&palmas_ldo6_reg>;
|
||||||
|
interrupt-parent = <&gpio>;
|
||||||
|
interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
#thermal-sensor-cells = <1>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,141 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/ntc-thermistor.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: NTC thermistor temperature sensors
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Naveen Krishna Chatradhi <ch.naveen@samsung.com>
|
||||||
|
- Linus Walleij <linus.walleij@linaro.org>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
Thermistors with negative temperature coefficient (NTC) are resistors that
|
||||||
|
vary in resistance in an often non-linear way in relation to temperature.
|
||||||
|
The negative temperature coefficient means that the resistance decreases
|
||||||
|
as the temperature rises. Since the relationship between resistance and
|
||||||
|
temperature is non-linear, software drivers most often need to use a look
|
||||||
|
up table and interpolation to get from resistance to temperature.
|
||||||
|
|
||||||
|
When used in practice, a thermistor is often connected between ground, a
|
||||||
|
pull-up resistor or/and a pull-down resistor and a fixed voltage like this:
|
||||||
|
|
||||||
|
+ e.g. 5V = pull-up voltage (puv)
|
||||||
|
|
|
||||||
|
+-+
|
||||||
|
| |
|
||||||
|
| | Pull-up resistor
|
||||||
|
| | (puo)
|
||||||
|
+-+
|
||||||
|
|-------------------------o
|
||||||
|
+-+ | ^
|
||||||
|
| |/ |
|
||||||
|
| / |
|
||||||
|
|/| Thermistor | Measured voltage (mv)
|
||||||
|
/ | | "connected ground"
|
||||||
|
/| | |
|
||||||
|
+-+ |
|
||||||
|
|-------------------------o
|
||||||
|
+-+ ^
|
||||||
|
| | |
|
||||||
|
| | Pull-down resistor | Measured voltage (mv)
|
||||||
|
| | (pdo) | "connected positive"
|
||||||
|
+-+ |
|
||||||
|
| |
|
||||||
|
| v
|
||||||
|
+ GND GND
|
||||||
|
|
||||||
|
The arrangements of where we measure the voltage over the thermistor are
|
||||||
|
called "connected ground" and "connected positive" and shall be understood as
|
||||||
|
the cases when either pull-up or pull-down resistance is zero.
|
||||||
|
|
||||||
|
If the pull-up resistance is 0 one end of the thermistor is connected to the
|
||||||
|
positive voltage and we get the thermistor on top of a pull-down resistor
|
||||||
|
and we take the measure between the thermistor and the pull-down resistor.
|
||||||
|
|
||||||
|
Conversely if the pull-down resistance is zero, one end of the thermistor is
|
||||||
|
connected to ground and we get the thermistor under the pull-up resistor
|
||||||
|
and we take the measure between the pull-up resistor and the thermistor.
|
||||||
|
|
||||||
|
We can use both pull-up and pull-down resistors at the same time, and then
|
||||||
|
the figure illustrates where the voltage will be measured for the "connected
|
||||||
|
ground" and "connected positive" cases.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
$nodename:
|
||||||
|
pattern: "^thermistor(.*)?$"
|
||||||
|
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- const: epcos,b57330v2103
|
||||||
|
- const: epcos,b57891s0103
|
||||||
|
- const: murata,ncp15wb473
|
||||||
|
- const: murata,ncp18wb473
|
||||||
|
- const: murata,ncp21wb473
|
||||||
|
- const: murata,ncp03wb473
|
||||||
|
- const: murata,ncp15wl333
|
||||||
|
- const: murata,ncp03wf104
|
||||||
|
- const: murata,ncp15xh103
|
||||||
|
# Deprecated "ntp," compatible strings
|
||||||
|
- const: ntc,ncp15wb473
|
||||||
|
deprecated: true
|
||||||
|
- const: ntc,ncp18wb473
|
||||||
|
deprecated: true
|
||||||
|
- const: ntc,ncp21wb473
|
||||||
|
deprecated: true
|
||||||
|
- const: ntc,ncp03wb473
|
||||||
|
deprecated: true
|
||||||
|
- const: ntc,ncp15wl333
|
||||||
|
deprecated: true
|
||||||
|
|
||||||
|
"#thermal-sensor-cells":
|
||||||
|
description: Thermal sensor cells if used for thermal sensoring.
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
pullup-uv:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
description: Pull-up voltage in micro volts. Must always be specified.
|
||||||
|
|
||||||
|
pullup-ohm:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
description: Pull-up resistance in ohms. Must always be specified, even
|
||||||
|
if zero.
|
||||||
|
|
||||||
|
pulldown-ohm:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
description: Pull-down resistance in ohms. Must always be specified, even
|
||||||
|
if zero.
|
||||||
|
|
||||||
|
connected-positive:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||||||
|
description: Indicates how the thermistor is connected in series with
|
||||||
|
a pull-up and/or a pull-down resistor. See the description above for
|
||||||
|
an illustration. If this flag is NOT specified, the thermistor is assumed
|
||||||
|
to be connected-ground, which usually means a pull-down resistance of
|
||||||
|
zero but complex arrangements are possible.
|
||||||
|
|
||||||
|
# See /schemas/iio/adc/adc.yaml
|
||||||
|
io-channels:
|
||||||
|
maxItems: 1
|
||||||
|
description: IIO ADC channel to read the voltage over the resistor. Must
|
||||||
|
always be specified.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- pullup-uv
|
||||||
|
- pullup-ohm
|
||||||
|
- pulldown-ohm
|
||||||
|
- io-channels
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
thermistor0 {
|
||||||
|
compatible = "murata,ncp18wb473";
|
||||||
|
io-channels = <&gpadc 0x06>;
|
||||||
|
pullup-uv = <1800000>;
|
||||||
|
pullup-ohm = <220000>;
|
||||||
|
pulldown-ohm = <0>;
|
||||||
|
#thermal-sensor-cells = <0>;
|
||||||
|
};
|
|
@ -1,44 +0,0 @@
|
||||||
NTC Thermistor hwmon sensors
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
Requires node properties:
|
|
||||||
- "compatible" value : one of
|
|
||||||
"epcos,b57330v2103"
|
|
||||||
"epcos,b57891s0103"
|
|
||||||
"murata,ncp15wb473"
|
|
||||||
"murata,ncp18wb473"
|
|
||||||
"murata,ncp21wb473"
|
|
||||||
"murata,ncp03wb473"
|
|
||||||
"murata,ncp15wl333"
|
|
||||||
"murata,ncp03wf104"
|
|
||||||
"murata,ncp15xh103"
|
|
||||||
|
|
||||||
/* Usage of vendor name "ntc" is deprecated */
|
|
||||||
<DEPRECATED> "ntc,ncp15wb473"
|
|
||||||
<DEPRECATED> "ntc,ncp18wb473"
|
|
||||||
<DEPRECATED> "ntc,ncp21wb473"
|
|
||||||
<DEPRECATED> "ntc,ncp03wb473"
|
|
||||||
<DEPRECATED> "ntc,ncp15wl333"
|
|
||||||
|
|
||||||
- "pullup-uv" Pull up voltage in micro volts
|
|
||||||
- "pullup-ohm" Pull up resistor value in ohms
|
|
||||||
- "pulldown-ohm" Pull down resistor value in ohms
|
|
||||||
- "connected-positive" Always ON, If not specified.
|
|
||||||
Status change is possible.
|
|
||||||
- "io-channels" Channel node of ADC to be used for
|
|
||||||
conversion.
|
|
||||||
|
|
||||||
Optional node properties:
|
|
||||||
- "#thermal-sensor-cells" Used to expose itself to thermal fw.
|
|
||||||
|
|
||||||
Read more about iio bindings at
|
|
||||||
https://github.com/devicetree-org/dt-schema/blob/master/schemas/iio/
|
|
||||||
|
|
||||||
Example:
|
|
||||||
ncp15wb473@0 {
|
|
||||||
compatible = "murata,ncp15wb473";
|
|
||||||
pullup-uv = <1800000>;
|
|
||||||
pullup-ohm = <47000>;
|
|
||||||
pulldown-ohm = <0>;
|
|
||||||
io-channels = <&adc 3>;
|
|
||||||
};
|
|
|
@ -0,0 +1,145 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/nuvoton,nct7802.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Nuvoton NCT7802Y Hardware Monitoring IC
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The NCT7802Y is a hardware monitor IC which supports one on-die and up to
|
||||||
|
5 remote temperature sensors with SMBus interface.
|
||||||
|
|
||||||
|
Datasheets:
|
||||||
|
https://www.nuvoton.com/export/resource-files/Nuvoton_NCT7802Y_Datasheet_V12.pdf
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- nuvoton,nct7802
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
"#address-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
"#size-cells":
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^channel@[0-3]$":
|
||||||
|
type: object
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- 0 # Local Temperature Sensor ("LTD")
|
||||||
|
- 1 # Remote Temperature Sensor or Voltage Sensor 1 ("RTD1")
|
||||||
|
- 2 # Remote Temperature Sensor or Voltage Sensor 2 ("RTD2")
|
||||||
|
- 3 # Remote Temperature Sensor or Voltage Sensor 3 ("RTD3")
|
||||||
|
|
||||||
|
sensor-type:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- temperature
|
||||||
|
- voltage
|
||||||
|
|
||||||
|
temperature-mode:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- thermistor
|
||||||
|
- thermal-diode
|
||||||
|
|
||||||
|
required:
|
||||||
|
- reg
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
# For channels RTD1, RTD2 and RTD3, require sensor-type to be set.
|
||||||
|
# Otherwise (for all other channels), do not allow temperature-mode to be
|
||||||
|
# set.
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
then:
|
||||||
|
required:
|
||||||
|
- sensor-type
|
||||||
|
else:
|
||||||
|
not:
|
||||||
|
required:
|
||||||
|
- sensor-type
|
||||||
|
|
||||||
|
# For channels RTD1 and RTD2 and if sensor-type is "temperature", require
|
||||||
|
# temperature-mode to be set. Otherwise (for all other channels or
|
||||||
|
# sensor-type settings), do not allow temperature-mode to be set
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
sensor-type:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- temperature
|
||||||
|
then:
|
||||||
|
required:
|
||||||
|
- temperature-mode
|
||||||
|
else:
|
||||||
|
not:
|
||||||
|
required:
|
||||||
|
- temperature-mode
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
nct7802@28 {
|
||||||
|
compatible = "nuvoton,nct7802";
|
||||||
|
reg = <0x28>;
|
||||||
|
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
channel@0 { /* LTD */
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
channel@1 { /* RTD1 */
|
||||||
|
reg = <1>;
|
||||||
|
sensor-type = "voltage";
|
||||||
|
};
|
||||||
|
|
||||||
|
channel@2 { /* RTD2 */
|
||||||
|
reg = <2>;
|
||||||
|
sensor-type = "temperature";
|
||||||
|
temperature-mode = "thermal-diode";
|
||||||
|
};
|
||||||
|
|
||||||
|
channel@3 { /* RTD3 */
|
||||||
|
reg = <3>;
|
||||||
|
sensor-type = "temperature";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,54 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/pmbus/ti,lm25066.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: National Semiconductor/Texas Instruments LM250x6/LM506x power-management ICs
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Zev Weiss <zev@bewilderbeest.net>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The LM25066 family of power-management ICs (a.k.a. hot-swap
|
||||||
|
controllers or eFuses in various contexts) are PMBus devices that
|
||||||
|
offer temperature, current, voltage, and power monitoring.
|
||||||
|
|
||||||
|
Datasheet: https://www.ti.com/lit/ds/symlink/lm25066.pdf
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- ti,lm25056
|
||||||
|
- ti,lm25066
|
||||||
|
- ti,lm5064
|
||||||
|
- ti,lm5066
|
||||||
|
- ti,lm5066i
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
shunt-resistor-micro-ohms:
|
||||||
|
description:
|
||||||
|
Shunt (sense) resistor value in micro-Ohms
|
||||||
|
default: 1000
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
pmic@40 {
|
||||||
|
compatible = "ti,lm25066";
|
||||||
|
reg = <0x40>;
|
||||||
|
shunt-resistor-micro-ohms = <675>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,43 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/sensirion,sht15.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Sensirion SHT15 humidity and temperature sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: sensirion,sht15
|
||||||
|
|
||||||
|
clk-gpios:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
data-gpios:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vcc-supply:
|
||||||
|
description: regulator that drives the VCC pin
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- clk-gpios
|
||||||
|
- data-gpios
|
||||||
|
- vcc-supply
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
sensor {
|
||||||
|
compatible = "sensirion,sht15";
|
||||||
|
clk-gpios = <&gpio4 12 0>;
|
||||||
|
data-gpios = <&gpio4 13 0>;
|
||||||
|
vcc-supply = <®_sht15>;
|
||||||
|
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_sensor>;
|
||||||
|
};
|
|
@ -1,19 +0,0 @@
|
||||||
Sensirion SHT15 Humidity and Temperature Sensor
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
|
|
||||||
- "compatible": must be "sensirion,sht15".
|
|
||||||
- "data-gpios": GPIO connected to the data line.
|
|
||||||
- "clk-gpios": GPIO connected to the clock line.
|
|
||||||
- "vcc-supply": regulator that drives the VCC pin.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
sensor {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&pinctrl_sensor>;
|
|
||||||
compatible = "sensirion,sht15";
|
|
||||||
clk-gpios = <&gpio4 12 0>;
|
|
||||||
data-gpios = <&gpio4 13 0>;
|
|
||||||
vcc-supply = <®_sht15>;
|
|
||||||
};
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/ti,tmp102.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: TMP102 temperature sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- ti,tmp102
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
"#thermal-sensor-cells":
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
sensor@48 {
|
||||||
|
compatible = "ti,tmp102";
|
||||||
|
reg = <0x48>;
|
||||||
|
interrupt-parent = <&gpio7>;
|
||||||
|
interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
#thermal-sensor-cells = <1>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,50 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/ti,tmp108.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: TMP108 temperature sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- ti,tmp108
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
items:
|
||||||
|
- description: alert interrupt
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
"#thermal-sensor-cells":
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
sensor@48 {
|
||||||
|
compatible = "ti,tmp108";
|
||||||
|
reg = <0x48>;
|
||||||
|
interrupt-parent = <&gpio1>;
|
||||||
|
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&tmp_alrt>;
|
||||||
|
#thermal-sensor-cells = <0>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,110 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/hwmon/ti,tmp421.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: TMP42x/TMP44x temperature sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Guenter Roeck <linux@roeck-us.net>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
±1°C Remote and Local temperature sensor
|
||||||
|
https://www.ti.com/lit/ds/symlink/tmp422.pdf
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- ti,tmp421
|
||||||
|
- ti,tmp422
|
||||||
|
- ti,tmp423
|
||||||
|
- ti,tmp441
|
||||||
|
- ti,tmp442
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
'#address-cells':
|
||||||
|
const: 1
|
||||||
|
|
||||||
|
'#size-cells':
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
"^channel@([0-3])$":
|
||||||
|
type: object
|
||||||
|
description: |
|
||||||
|
Represents channels of the device and their specific configuration.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
reg:
|
||||||
|
description: |
|
||||||
|
The channel number. 0 is local channel, 1-3 are remote channels
|
||||||
|
items:
|
||||||
|
minimum: 0
|
||||||
|
maximum: 3
|
||||||
|
|
||||||
|
label:
|
||||||
|
description: |
|
||||||
|
A descriptive name for this channel, like "ambient" or "psu".
|
||||||
|
|
||||||
|
ti,n-factor:
|
||||||
|
description: |
|
||||||
|
The value (two's complement) to be programmed in the channel specific N correction register.
|
||||||
|
For remote channels only.
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
items:
|
||||||
|
minimum: 0
|
||||||
|
maximum: 255
|
||||||
|
|
||||||
|
required:
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
sensor@4c {
|
||||||
|
compatible = "ti,tmp422";
|
||||||
|
reg = <0x4c>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
sensor@4c {
|
||||||
|
compatible = "ti,tmp422";
|
||||||
|
reg = <0x4c>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
channel@0 {
|
||||||
|
reg = <0x0>;
|
||||||
|
ti,n-factor = <0x1>;
|
||||||
|
label = "local";
|
||||||
|
};
|
||||||
|
|
||||||
|
channel@1 {
|
||||||
|
reg = <0x1>;
|
||||||
|
ti,n-factor = <0x0>;
|
||||||
|
label = "somelabel";
|
||||||
|
};
|
||||||
|
|
||||||
|
channel@2 {
|
||||||
|
reg = <0x2>;
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,18 +0,0 @@
|
||||||
TMP108 temperature sensor
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
This device supports I2C only.
|
|
||||||
|
|
||||||
Requires node properties:
|
|
||||||
- compatible : "ti,tmp108"
|
|
||||||
- reg : the I2C address of the device. This is 0x48, 0x49, 0x4a, or 0x4b.
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- interrupts: Reference to the TMP108 alert interrupt.
|
|
||||||
- #thermal-sensor-cells: should be set to 0.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
tmp108@48 {
|
|
||||||
compatible = "ti,tmp108";
|
|
||||||
reg = <0x48>;
|
|
||||||
};
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/interrupt-controller/microchip,eic.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Microchip External Interrupt Controller
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Claudiu Beznea <claudiu.beznea@microchip.com>
|
||||||
|
|
||||||
|
description:
|
||||||
|
This interrupt controller is found in Microchip SoCs (SAMA7G5) and provides
|
||||||
|
support for handling up to 2 external interrupt lines.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- microchip,sama7g5-eic
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupt-controller: true
|
||||||
|
|
||||||
|
'#interrupt-cells':
|
||||||
|
const: 2
|
||||||
|
description:
|
||||||
|
The first cell is the input IRQ number (between 0 and 1), the second cell
|
||||||
|
is the trigger type as defined in interrupt.txt present in this directory.
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
description: |
|
||||||
|
Contains the GIC SPI IRQs mapped to the external interrupt lines. They
|
||||||
|
should be specified sequentially from output 0 to output 1.
|
||||||
|
minItems: 2
|
||||||
|
maxItems: 2
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
const: pclk
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupt-controller
|
||||||
|
- '#interrupt-cells'
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/clock/at91.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
|
||||||
|
eic: interrupt-controller@e1628000 {
|
||||||
|
compatible = "microchip,sama7g5-eic";
|
||||||
|
reg = <0xe1628000 0x100>;
|
||||||
|
interrupt-parent = <&gic>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&pmc PMC_TYPE_PERIPHERAL 37>;
|
||||||
|
clock-names = "pclk";
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
|
@ -27,6 +27,7 @@ properties:
|
||||||
- renesas,intc-ex-r8a774a1 # RZ/G2M
|
- renesas,intc-ex-r8a774a1 # RZ/G2M
|
||||||
- renesas,intc-ex-r8a774b1 # RZ/G2N
|
- renesas,intc-ex-r8a774b1 # RZ/G2N
|
||||||
- renesas,intc-ex-r8a774c0 # RZ/G2E
|
- renesas,intc-ex-r8a774c0 # RZ/G2E
|
||||||
|
- renesas,intc-ex-r8a774e1 # RZ/G2H
|
||||||
- renesas,intc-ex-r8a7795 # R-Car H3
|
- renesas,intc-ex-r8a7795 # R-Car H3
|
||||||
- renesas,intc-ex-r8a7796 # R-Car M3-W
|
- renesas,intc-ex-r8a7796 # R-Car M3-W
|
||||||
- renesas,intc-ex-r8a77961 # R-Car M3-W+
|
- renesas,intc-ex-r8a77961 # R-Car M3-W+
|
||||||
|
|
|
@ -9,6 +9,7 @@ Required properties:
|
||||||
- compatible : should be one of
|
- compatible : should be one of
|
||||||
"aspeed,ast2400-ibt-bmc"
|
"aspeed,ast2400-ibt-bmc"
|
||||||
"aspeed,ast2500-ibt-bmc"
|
"aspeed,ast2500-ibt-bmc"
|
||||||
|
"aspeed,ast2600-ibt-bmc"
|
||||||
- reg: physical address and size of the registers
|
- reg: physical address and size of the registers
|
||||||
|
|
||||||
Optional properties:
|
Optional properties:
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/ipmi/ipmi-ipmb.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: IPMI IPMB device bindings
|
||||||
|
|
||||||
|
description: IPMI IPMB device bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Corey Minyard <cminyard@mvista.com>
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- ipmi-ipmb
|
||||||
|
|
||||||
|
device_type:
|
||||||
|
items:
|
||||||
|
- const: "ipmi"
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
bmcaddr:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint8
|
||||||
|
description: The address of the BMC on the IPMB bus. Defaults to 0x20.
|
||||||
|
|
||||||
|
retry-time:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
description: |
|
||||||
|
Time between retries of sends, in milliseconds. Defaults to 250.
|
||||||
|
|
||||||
|
max-retries:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
description: Number of retries before a failure is declared. Defaults to 1.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
ipmi-ipmb@40 {
|
||||||
|
compatible = "ipmi-ipmb";
|
||||||
|
device_type = "ipmi";
|
||||||
|
reg = <0x40>;
|
||||||
|
bmcaddr = /bits/ 8 <0x20>;
|
||||||
|
retry-time = <250>;
|
||||||
|
max-retries = <1>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,77 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/mailbox/apple,mailbox.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Apple Mailbox Controller
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Hector Martin <marcan@marcan.st>
|
||||||
|
- Sven Peter <sven@svenpeter.dev>
|
||||||
|
|
||||||
|
description:
|
||||||
|
The Apple mailbox consists of two FIFOs used to exchange 64+32 bit
|
||||||
|
messages between the main CPU and a co-processor. Multiple instances
|
||||||
|
of this mailbox can be found on Apple SoCs.
|
||||||
|
One of the two FIFOs is used to send data to a co-processor while the other
|
||||||
|
FIFO is used for the other direction.
|
||||||
|
Various clients implement different IPC protocols based on these simple
|
||||||
|
messages and shared memory buffers.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
oneOf:
|
||||||
|
- description:
|
||||||
|
ASC mailboxes are the most common variant found on the M1 used
|
||||||
|
for example for the display controller, the system management
|
||||||
|
controller and the NVMe coprocessor.
|
||||||
|
items:
|
||||||
|
- const: apple,t8103-asc-mailbox
|
||||||
|
|
||||||
|
- description:
|
||||||
|
M3 mailboxes are an older variant with a slightly different MMIO
|
||||||
|
interface still found on the M1. It is used for the Thunderbolt
|
||||||
|
co-processors.
|
||||||
|
items:
|
||||||
|
- const: apple,t8103-m3-mailbox
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
items:
|
||||||
|
- description: send fifo is empty interrupt
|
||||||
|
- description: send fifo is not empty interrupt
|
||||||
|
- description: receive fifo is empty interrupt
|
||||||
|
- description: receive fifo is not empty interrupt
|
||||||
|
|
||||||
|
interrupt-names:
|
||||||
|
items:
|
||||||
|
- const: send-empty
|
||||||
|
- const: send-not-empty
|
||||||
|
- const: recv-empty
|
||||||
|
- const: recv-not-empty
|
||||||
|
|
||||||
|
"#mbox-cells":
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- interrupt-names
|
||||||
|
- "#mbox-cells"
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
mailbox@77408000 {
|
||||||
|
compatible = "apple,t8103-asc-mailbox";
|
||||||
|
reg = <0x77408000 0x4000>;
|
||||||
|
interrupts = <1 583 4>, <1 584 4>, <1 585 4>, <1 586 4>;
|
||||||
|
interrupt-names = "send-empty", "send-not-empty",
|
||||||
|
"recv-empty", "recv-not-empty";
|
||||||
|
#mbox-cells = <0>;
|
||||||
|
};
|
|
@ -28,6 +28,7 @@ properties:
|
||||||
- const: fsl,imx7ulp-mu
|
- const: fsl,imx7ulp-mu
|
||||||
- const: fsl,imx8ulp-mu
|
- const: fsl,imx8ulp-mu
|
||||||
- const: fsl,imx8-mu-scu
|
- const: fsl,imx8-mu-scu
|
||||||
|
- const: fsl,imx8ulp-mu-s4
|
||||||
- items:
|
- items:
|
||||||
- enum:
|
- enum:
|
||||||
- fsl,imx7s-mu
|
- fsl,imx7s-mu
|
||||||
|
|
|
@ -11,7 +11,7 @@ description:
|
||||||
platforms.
|
platforms.
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Sivaprakash Murugesan <sivaprak@codeaurora.org>
|
- Jassi Brar <jassisinghbrar@gmail.com>
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -24,6 +24,7 @@ properties:
|
||||||
- qcom,msm8994-apcs-kpss-global
|
- qcom,msm8994-apcs-kpss-global
|
||||||
- qcom,msm8996-apcs-hmss-global
|
- qcom,msm8996-apcs-hmss-global
|
||||||
- qcom,msm8998-apcs-hmss-global
|
- qcom,msm8998-apcs-hmss-global
|
||||||
|
- qcom,qcm2290-apcs-hmss-global
|
||||||
- qcom,qcs404-apcs-apps-global
|
- qcom,qcs404-apcs-apps-global
|
||||||
- qcom,sc7180-apss-shared
|
- qcom,sc7180-apss-shared
|
||||||
- qcom,sc8180x-apss-shared
|
- qcom,sc8180x-apss-shared
|
||||||
|
|
|
@ -4,23 +4,24 @@
|
||||||
$id: http://devicetree.org/schemas/media/i2c/adv7604.yaml#
|
$id: http://devicetree.org/schemas/media/i2c/adv7604.yaml#
|
||||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
title: Analog Devices ADV7604/11/12 video decoder with HDMI receiver
|
title: Analog Devices ADV7604/10/11/12 video decoder with HDMI receiver
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
- Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
||||||
|
|
||||||
description:
|
description:
|
||||||
The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
|
The ADV7604 and ADV7610/11/12 are multiformat video decoders with
|
||||||
HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
|
an integrated HDMI receiver. The ADV7604 has four multiplexed HDMI inputs
|
||||||
input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
|
and one analog input, and the ADV7610/11 have one HDMI input and no analog
|
||||||
similar to the 7611 but has 2 HDMI inputs.
|
input. The ADV7612 is similar to the ADV7610/11 but has 2 HDMI inputs.
|
||||||
|
|
||||||
These device tree bindings support the ADV7611/12 only at the moment.
|
These device tree bindings support the ADV7610/11/12 only at the moment.
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
items:
|
items:
|
||||||
- enum:
|
- enum:
|
||||||
|
- adi,adv7610
|
||||||
- adi,adv7611
|
- adi,adv7611
|
||||||
- adi,adv7612
|
- adi,adv7612
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,108 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/aptina,mt9p031.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Aptina 1/2.5-Inch 5Mp CMOS Digital Image Sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The Aptina MT9P031 is a 1/2.5-inch CMOS active pixel digital image sensor
|
||||||
|
with an active array size of 2592H x 1944V. It is programmable through a
|
||||||
|
simple two-wire serial interface.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- aptina,mt9p031
|
||||||
|
- aptina,mt9p031m
|
||||||
|
|
||||||
|
reg:
|
||||||
|
description: I2C device address
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vdd-supply:
|
||||||
|
description: Digital supply voltage, 1.8 V
|
||||||
|
|
||||||
|
vdd_io-supply:
|
||||||
|
description: I/O supply voltage, 1.8 or 2.8 V
|
||||||
|
|
||||||
|
vaa-supply:
|
||||||
|
description: Analog supply voltage, 2.8 V
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
maxItems: 1
|
||||||
|
description: Chip reset GPIO
|
||||||
|
|
||||||
|
port:
|
||||||
|
$ref: /schemas/graph.yaml#/$defs/port-base
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
endpoint:
|
||||||
|
$ref: /schemas/media/video-interfaces.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
input-clock-frequency:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
minimum: 6000000
|
||||||
|
maximum: 96000000
|
||||||
|
description: Input clock frequency
|
||||||
|
|
||||||
|
pixel-clock-frequency:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
maximum: 96000000
|
||||||
|
description: Target pixel clock frequency
|
||||||
|
|
||||||
|
pclk-sample:
|
||||||
|
default: 0
|
||||||
|
|
||||||
|
required:
|
||||||
|
- input-clock-frequency
|
||||||
|
- pixel-clock-frequency
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- vdd-supply
|
||||||
|
- vdd_io-supply
|
||||||
|
- vaa-supply
|
||||||
|
- port
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c0 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
mt9p031@5d {
|
||||||
|
compatible = "aptina,mt9p031";
|
||||||
|
reg = <0x5d>;
|
||||||
|
reset-gpios = <&gpio_sensor 0 0>;
|
||||||
|
|
||||||
|
clocks = <&sensor_clk>;
|
||||||
|
|
||||||
|
vdd-supply = <®_vdd>;
|
||||||
|
vdd_io-supply = <®_vdd_io>;
|
||||||
|
vaa-supply = <®_vaa>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
mt9p031_1: endpoint {
|
||||||
|
input-clock-frequency = <6000000>;
|
||||||
|
pixel-clock-frequency = <96000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
|
@ -0,0 +1,120 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/i2c/hynix,hi846.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: SK Hynix Hi-846 1/4" 8M Pixel MIPI CSI-2 sensor
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Martin Kepplinger <martin.kepplinger@puri.sm>
|
||||||
|
|
||||||
|
description: |-
|
||||||
|
The Hi-846 is a raw image sensor with an MIPI CSI-2 image data
|
||||||
|
interface and CCI (I2C compatible) control bus. The output format
|
||||||
|
is raw Bayer.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: hynix,hi846
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
items:
|
||||||
|
- description: Reference to the mclk clock.
|
||||||
|
|
||||||
|
assigned-clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
assigned-clock-rates:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
reset-gpios:
|
||||||
|
description: Reference to the GPIO connected to the RESETB pin. Active low.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
shutdown-gpios:
|
||||||
|
description: Reference to the GPIO connected to the XSHUTDOWN pin. Active low.
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
vddio-supply:
|
||||||
|
description: Definition of the regulator used for the VDDIO power supply.
|
||||||
|
|
||||||
|
vdda-supply:
|
||||||
|
description: Definition of the regulator used for the VDDA power supply.
|
||||||
|
|
||||||
|
vddd-supply:
|
||||||
|
description: Definition of the regulator used for the VDDD power supply.
|
||||||
|
|
||||||
|
port:
|
||||||
|
$ref: /schemas/graph.yaml#/properties/port
|
||||||
|
|
||||||
|
properties:
|
||||||
|
endpoint:
|
||||||
|
$ref: /schemas/media/video-interfaces.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
data-lanes:
|
||||||
|
oneOf:
|
||||||
|
- items:
|
||||||
|
- const: 1
|
||||||
|
- const: 2
|
||||||
|
- const: 3
|
||||||
|
- const: 4
|
||||||
|
- items:
|
||||||
|
- const: 1
|
||||||
|
- const: 2
|
||||||
|
|
||||||
|
required:
|
||||||
|
- data-lanes
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- assigned-clocks
|
||||||
|
- assigned-clock-rates
|
||||||
|
- vddio-supply
|
||||||
|
- vdda-supply
|
||||||
|
- vddd-supply
|
||||||
|
- port
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
hi846: camera@20 {
|
||||||
|
compatible = "hynix,hi846";
|
||||||
|
reg = <0x20>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&pinctrl_csi1>;
|
||||||
|
clocks = <&clk 0>;
|
||||||
|
assigned-clocks = <&clk 0>;
|
||||||
|
assigned-clock-rates = <25000000>;
|
||||||
|
vdda-supply = <®_camera_vdda>;
|
||||||
|
vddd-supply = <®_camera_vddd>;
|
||||||
|
vddio-supply = <®_camera_vddio>;
|
||||||
|
reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
|
||||||
|
shutdown-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
camera_out: endpoint {
|
||||||
|
remote-endpoint = <&csi1_ep1>;
|
||||||
|
link-frequencies = /bits/ 64
|
||||||
|
<80000000 200000000>;
|
||||||
|
data-lanes = <1 2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
|
@ -1,40 +0,0 @@
|
||||||
* Aptina 1/2.5-Inch 5Mp CMOS Digital Image Sensor
|
|
||||||
|
|
||||||
The Aptina MT9P031 is a 1/2.5-inch CMOS active pixel digital image sensor with
|
|
||||||
an active array size of 2592H x 1944V. It is programmable through a simple
|
|
||||||
two-wire serial interface.
|
|
||||||
|
|
||||||
Required Properties:
|
|
||||||
- compatible: value should be either one among the following
|
|
||||||
(a) "aptina,mt9p031" for mt9p031 sensor
|
|
||||||
(b) "aptina,mt9p031m" for mt9p031m sensor
|
|
||||||
|
|
||||||
- input-clock-frequency: Input clock frequency.
|
|
||||||
|
|
||||||
- pixel-clock-frequency: Pixel clock frequency.
|
|
||||||
|
|
||||||
Optional Properties:
|
|
||||||
- reset-gpios: Chip reset GPIO
|
|
||||||
|
|
||||||
For further reading on port node refer to
|
|
||||||
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
i2c0@1c22000 {
|
|
||||||
...
|
|
||||||
...
|
|
||||||
mt9p031@5d {
|
|
||||||
compatible = "aptina,mt9p031";
|
|
||||||
reg = <0x5d>;
|
|
||||||
reset-gpios = <&gpio3 30 0>;
|
|
||||||
|
|
||||||
port {
|
|
||||||
mt9p031_1: endpoint {
|
|
||||||
input-clock-frequency = <6000000>;
|
|
||||||
pixel-clock-frequency = <96000000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
...
|
|
||||||
};
|
|
|
@ -10,6 +10,8 @@ Required properties:
|
||||||
"mediatek,mt8183-vcodec-enc" for MT8183 encoder.
|
"mediatek,mt8183-vcodec-enc" for MT8183 encoder.
|
||||||
"mediatek,mt8173-vcodec-dec" for MT8173 decoder.
|
"mediatek,mt8173-vcodec-dec" for MT8173 decoder.
|
||||||
"mediatek,mt8192-vcodec-enc" for MT8192 encoder.
|
"mediatek,mt8192-vcodec-enc" for MT8192 encoder.
|
||||||
|
"mediatek,mt8183-vcodec-dec" for MT8183 decoder.
|
||||||
|
"mediatek,mt8195-vcodec-enc" for MT8195 encoder.
|
||||||
- reg : Physical base address of the video codec registers and length of
|
- reg : Physical base address of the video codec registers and length of
|
||||||
memory mapped region.
|
memory mapped region.
|
||||||
- interrupts : interrupt number to the cpu.
|
- interrupts : interrupt number to the cpu.
|
||||||
|
|
|
@ -0,0 +1,162 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: "http://devicetree.org/schemas/media/qcom,sc7280-venus.yaml#"
|
||||||
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
|
title: Qualcomm Venus video encode and decode accelerators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Stanimir Varbanov <stanimir.varbanov@linaro.org>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The Venus Iris2 IP is a video encode and decode accelerator present
|
||||||
|
on Qualcomm platforms
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: qcom,sc7280-venus
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
minItems: 2
|
||||||
|
maxItems: 3
|
||||||
|
|
||||||
|
power-domain-names:
|
||||||
|
minItems: 2
|
||||||
|
maxItems: 3
|
||||||
|
items:
|
||||||
|
- const: venus
|
||||||
|
- const: vcodec0
|
||||||
|
- const: cx
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 5
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: core
|
||||||
|
- const: bus
|
||||||
|
- const: iface
|
||||||
|
- const: vcodec_core
|
||||||
|
- const: vcodec_bus
|
||||||
|
|
||||||
|
iommus:
|
||||||
|
maxItems: 2
|
||||||
|
|
||||||
|
memory-region:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interconnects:
|
||||||
|
maxItems: 2
|
||||||
|
|
||||||
|
interconnect-names:
|
||||||
|
items:
|
||||||
|
- const: cpu-cfg
|
||||||
|
- const: video-mem
|
||||||
|
|
||||||
|
video-decoder:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: venus-decoder
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
video-encoder:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: venus-encoder
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
video-firmware:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
description: |
|
||||||
|
Firmware subnode is needed when the platform does not
|
||||||
|
have TrustZone.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
iommus:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- iommus
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- power-domains
|
||||||
|
- power-domain-names
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- iommus
|
||||||
|
- memory-region
|
||||||
|
- video-decoder
|
||||||
|
- video-encoder
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
#include <dt-bindings/clock/qcom,videocc-sc7280.h>
|
||||||
|
#include <dt-bindings/interconnect/qcom,sc7280.h>
|
||||||
|
#include <dt-bindings/power/qcom-rpmpd.h>
|
||||||
|
|
||||||
|
venus: video-codec@aa00000 {
|
||||||
|
compatible = "qcom,sc7280-venus";
|
||||||
|
reg = <0x0aa00000 0xd0600>;
|
||||||
|
interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
|
||||||
|
clocks = <&videocc VIDEO_CC_MVSC_CORE_CLK>,
|
||||||
|
<&videocc VIDEO_CC_MVSC_CTL_AXI_CLK>,
|
||||||
|
<&videocc VIDEO_CC_VENUS_AHB_CLK>,
|
||||||
|
<&videocc VIDEO_CC_MVS0_CORE_CLK>,
|
||||||
|
<&videocc VIDEO_CC_MVS0_AXI_CLK>;
|
||||||
|
clock-names = "core", "bus", "iface",
|
||||||
|
"vcodec_core", "vcodec_bus";
|
||||||
|
|
||||||
|
power-domains = <&videocc MVSC_GDSC>,
|
||||||
|
<&videocc MVS0_GDSC>,
|
||||||
|
<&rpmhpd SC7280_CX>;
|
||||||
|
power-domain-names = "venus", "vcodec0", "cx";
|
||||||
|
|
||||||
|
interconnects = <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_VENUS_CFG 0>,
|
||||||
|
<&mmss_noc MASTER_VIDEO_P0 0 &mc_virt SLAVE_EBI1 0>;
|
||||||
|
interconnect-names = "cpu-cfg", "video-mem";
|
||||||
|
|
||||||
|
iommus = <&apps_smmu 0x2180 0x20>,
|
||||||
|
<&apps_smmu 0x2184 0x20>;
|
||||||
|
|
||||||
|
memory-region = <&video_mem>;
|
||||||
|
|
||||||
|
video-decoder {
|
||||||
|
compatible = "venus-decoder";
|
||||||
|
};
|
||||||
|
|
||||||
|
video-encoder {
|
||||||
|
compatible = "venus-encoder";
|
||||||
|
};
|
||||||
|
|
||||||
|
video-firmware {
|
||||||
|
iommus = <&apps_smmu 0x21a2 0x0>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,186 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||||
|
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: "http://devicetree.org/schemas/media/qcom,sdm660-venus.yaml#"
|
||||||
|
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||||
|
|
||||||
|
title: Qualcomm Venus video encode and decode accelerators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Stanimir Varbanov <stanimir.varbanov@linaro.org>
|
||||||
|
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The Venus IP is a video encode and decode accelerator present
|
||||||
|
on Qualcomm platforms
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: qcom,sdm660-venus
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 4
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: core
|
||||||
|
- const: iface
|
||||||
|
- const: bus
|
||||||
|
- const: bus_throttle
|
||||||
|
|
||||||
|
interconnects:
|
||||||
|
maxItems: 2
|
||||||
|
|
||||||
|
interconnect-names:
|
||||||
|
items:
|
||||||
|
- const: cpu-cfg
|
||||||
|
- const: video-mem
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
iommus:
|
||||||
|
maxItems: 20
|
||||||
|
|
||||||
|
memory-region:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
video-decoder:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: venus-decoder
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: vcodec0_core
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- power-domains
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
video-encoder:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: venus-encoder
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clock-names:
|
||||||
|
items:
|
||||||
|
- const: vcodec0_core
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- power-domains
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
video-firmware:
|
||||||
|
type: object
|
||||||
|
|
||||||
|
description: |
|
||||||
|
Firmware subnode is needed when the platform does not
|
||||||
|
have TrustZone.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
iommus:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- iommus
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- clocks
|
||||||
|
- clock-names
|
||||||
|
- interrupts
|
||||||
|
- iommus
|
||||||
|
- memory-region
|
||||||
|
- power-domains
|
||||||
|
- video-decoder
|
||||||
|
- video-encoder
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/clock/qcom,mmcc-sdm660.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
|
||||||
|
video-codec@cc00000 {
|
||||||
|
compatible = "qcom,sdm660-venus";
|
||||||
|
reg = <0x0cc00000 0xff000>;
|
||||||
|
clocks = <&mmcc VIDEO_CORE_CLK>,
|
||||||
|
<&mmcc VIDEO_AHB_CLK>,
|
||||||
|
<&mmcc VIDEO_AXI_CLK>,
|
||||||
|
<&mmcc THROTTLE_VIDEO_AXI_CLK>;
|
||||||
|
clock-names = "core", "iface", "bus", "bus_throttle";
|
||||||
|
interconnects = <&gnoc 0 &mnoc 13>,
|
||||||
|
<&mnoc 4 &bimc 5>;
|
||||||
|
interconnect-names = "cpu-cfg", "video-mem";
|
||||||
|
interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
iommus = <&mmss_smmu 0x400>,
|
||||||
|
<&mmss_smmu 0x401>,
|
||||||
|
<&mmss_smmu 0x40a>,
|
||||||
|
<&mmss_smmu 0x407>,
|
||||||
|
<&mmss_smmu 0x40e>,
|
||||||
|
<&mmss_smmu 0x40f>,
|
||||||
|
<&mmss_smmu 0x408>,
|
||||||
|
<&mmss_smmu 0x409>,
|
||||||
|
<&mmss_smmu 0x40b>,
|
||||||
|
<&mmss_smmu 0x40c>,
|
||||||
|
<&mmss_smmu 0x40d>,
|
||||||
|
<&mmss_smmu 0x410>,
|
||||||
|
<&mmss_smmu 0x421>,
|
||||||
|
<&mmss_smmu 0x428>,
|
||||||
|
<&mmss_smmu 0x429>,
|
||||||
|
<&mmss_smmu 0x42b>,
|
||||||
|
<&mmss_smmu 0x42c>,
|
||||||
|
<&mmss_smmu 0x42d>,
|
||||||
|
<&mmss_smmu 0x411>,
|
||||||
|
<&mmss_smmu 0x431>;
|
||||||
|
memory-region = <&venus_region>;
|
||||||
|
power-domains = <&mmcc VENUS_GDSC>;
|
||||||
|
|
||||||
|
video-decoder {
|
||||||
|
compatible = "venus-decoder";
|
||||||
|
clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
|
||||||
|
clock-names = "vcodec0_core";
|
||||||
|
power-domains = <&mmcc VENUS_CORE0_GDSC>;
|
||||||
|
};
|
||||||
|
|
||||||
|
video-encoder {
|
||||||
|
compatible = "venus-encoder";
|
||||||
|
clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
|
||||||
|
clock-names = "vcodec0_core";
|
||||||
|
power-domains = <&mmcc VENUS_CORE0_GDSC>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -30,6 +30,7 @@ properties:
|
||||||
- renesas,r8a77970-csi2 # R-Car V3M
|
- renesas,r8a77970-csi2 # R-Car V3M
|
||||||
- renesas,r8a77980-csi2 # R-Car V3H
|
- renesas,r8a77980-csi2 # R-Car V3H
|
||||||
- renesas,r8a77990-csi2 # R-Car E3
|
- renesas,r8a77990-csi2 # R-Car E3
|
||||||
|
- renesas,r8a779a0-csi2 # R-Car V3U
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
Renesas R-Car Image Renderer (Distortion Correction Engine)
|
|
||||||
-----------------------------------------------------------
|
|
||||||
|
|
||||||
The image renderer, or the distortion correction engine, is a drawing processor
|
|
||||||
with a simple instruction system capable of referencing video capture data or
|
|
||||||
data in an external memory as 2D texture data and performing texture mapping
|
|
||||||
and drawing with respect to any shape that is split into triangular objects.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
|
|
||||||
- compatible: "renesas,<soctype>-imr-lx4", "renesas,imr-lx4" as a fallback for
|
|
||||||
the image renderer light extended 4 (IMR-LX4) found in the R-Car gen3 SoCs,
|
|
||||||
where the examples with <soctype> are:
|
|
||||||
- "renesas,r8a7795-imr-lx4" for R-Car H3,
|
|
||||||
- "renesas,r8a7796-imr-lx4" for R-Car M3-W.
|
|
||||||
- reg: offset and length of the register block;
|
|
||||||
- interrupts: single interrupt specifier;
|
|
||||||
- clocks: single clock phandle/specifier pair;
|
|
||||||
- power-domains: power domain phandle/specifier pair;
|
|
||||||
- resets: reset phandle/specifier pair.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
imr-lx4@fe860000 {
|
|
||||||
compatible = "renesas,r8a7795-imr-lx4", "renesas,imr-lx4";
|
|
||||||
reg = <0 0xfe860000 0 0x2000>;
|
|
||||||
interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
clocks = <&cpg CPG_MOD 823>;
|
|
||||||
power-domains = <&sysc R8A7795_PD_A3VC>;
|
|
||||||
resets = <&cpg 823>;
|
|
||||||
};
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/media/renesas,imr.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Renesas R-Car Image Renderer (Distortion Correction Engine)
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Sergei Shtylyov <sergei.shtylyov@gmail.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The image renderer, or the distortion correction engine, is a drawing
|
||||||
|
processor with a simple instruction system capable of referencing video
|
||||||
|
capture data or data in an external memory as 2D texture data and performing
|
||||||
|
texture mapping and drawing with respect to any shape that is split into
|
||||||
|
triangular objects.
|
||||||
|
|
||||||
|
The image renderer light extended 4 (IMR-LX4) is found in R-Car Gen3 SoCs.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
items:
|
||||||
|
- enum:
|
||||||
|
- renesas,r8a7795-imr-lx4 # R-Car H3
|
||||||
|
- renesas,r8a7796-imr-lx4 # R-Car M3-W
|
||||||
|
- const: renesas,imr-lx4 # R-Car Gen3
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
clocks:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
resets:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- interrupts
|
||||||
|
- clocks
|
||||||
|
- power-domains
|
||||||
|
- resets
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/clock/r8a7795-cpg-mssr.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
#include <dt-bindings/power/r8a7795-sysc.h>
|
||||||
|
|
||||||
|
imr-lx4@fe860000 {
|
||||||
|
compatible = "renesas,r8a7795-imr-lx4", "renesas,imr-lx4";
|
||||||
|
reg = <0xfe860000 0x2000>;
|
||||||
|
interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
clocks = <&cpg CPG_MOD 823>;
|
||||||
|
power-domains = <&sysc R8A7795_PD_A3VC>;
|
||||||
|
resets = <&cpg 823>;
|
||||||
|
};
|
|
@ -15,13 +15,22 @@ description: |
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
const: rockchip,rk3399-cif-isp
|
enum:
|
||||||
|
- rockchip,px30-cif-isp
|
||||||
|
- rockchip,rk3399-cif-isp
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
||||||
interrupts:
|
interrupts:
|
||||||
maxItems: 1
|
minItems: 1
|
||||||
|
maxItems: 3
|
||||||
|
|
||||||
|
interrupt-names:
|
||||||
|
items:
|
||||||
|
- const: isp
|
||||||
|
- const: mi
|
||||||
|
- const: mipi
|
||||||
|
|
||||||
clocks:
|
clocks:
|
||||||
minItems: 3
|
minItems: 3
|
||||||
|
@ -41,7 +50,7 @@ properties:
|
||||||
- const: aclk
|
- const: aclk
|
||||||
- const: hclk
|
- const: hclk
|
||||||
# only for isp1
|
# only for isp1
|
||||||
- const: pclk_isp
|
- const: pclk
|
||||||
|
|
||||||
iommus:
|
iommus:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
@ -90,19 +99,29 @@ required:
|
||||||
- power-domains
|
- power-domains
|
||||||
- ports
|
- ports
|
||||||
|
|
||||||
if:
|
allOf:
|
||||||
properties:
|
- if:
|
||||||
compatible:
|
properties:
|
||||||
contains:
|
compatible:
|
||||||
const: rockchip,rk3399-cif-isp
|
contains:
|
||||||
then:
|
const: rockchip,rk3399-cif-isp
|
||||||
properties:
|
then:
|
||||||
clocks:
|
properties:
|
||||||
minItems: 3
|
clocks:
|
||||||
maxItems: 4
|
minItems: 3
|
||||||
clock-names:
|
maxItems: 4
|
||||||
minItems: 3
|
clock-names:
|
||||||
maxItems: 4
|
minItems: 3
|
||||||
|
maxItems: 4
|
||||||
|
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: rockchip,px30-cif-isp
|
||||||
|
then:
|
||||||
|
required:
|
||||||
|
- interrupt-names
|
||||||
|
|
||||||
additionalProperties: false
|
additionalProperties: false
|
||||||
|
|
||||||
|
@ -183,3 +202,66 @@ examples:
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
- |
|
||||||
|
|
||||||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||||
|
#include <dt-bindings/power/px30-power.h>
|
||||||
|
|
||||||
|
parent1: parent {
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
|
||||||
|
isp: isp@ff4a0000 {
|
||||||
|
compatible = "rockchip,px30-cif-isp";
|
||||||
|
reg = <0x0 0xff4a0000 0x0 0x8000>;
|
||||||
|
interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
|
<GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
interrupt-names = "isp", "mi", "mipi";
|
||||||
|
clocks = <&cru SCLK_ISP0>,
|
||||||
|
<&cru ACLK_ISP0_WRAPPER>,
|
||||||
|
<&cru HCLK_ISP0_WRAPPER>,
|
||||||
|
<&cru PCLK_ISP1_WRAPPER>;
|
||||||
|
clock-names = "isp", "aclk", "hclk", "pclk";
|
||||||
|
iommus = <&isp_mmu>;
|
||||||
|
phys = <&csi_dphy>;
|
||||||
|
phy-names = "dphy";
|
||||||
|
power-domains = <&power PX30_PD_VI>;
|
||||||
|
|
||||||
|
ports {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
port@0 {
|
||||||
|
reg = <0>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
mipi_in_ucam1: endpoint@0 {
|
||||||
|
reg = <0>;
|
||||||
|
remote-endpoint = <&ucam1_out>;
|
||||||
|
data-lanes = <1 2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
i2c2: i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
ov5695: camera@36 {
|
||||||
|
compatible = "ovti,ov5647";
|
||||||
|
reg = <0x36>;
|
||||||
|
clocks = <&cru SCLK_CIF_OUT>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
ucam1_out: endpoint {
|
||||||
|
remote-endpoint = <&mipi_in_ucam1>;
|
||||||
|
data-lanes = <1 2>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -88,6 +88,12 @@ properties:
|
||||||
description:
|
description:
|
||||||
For this device it is strongly suggested to include
|
For this device it is strongly suggested to include
|
||||||
arasan,soc-ctl-syscon.
|
arasan,soc-ctl-syscon.
|
||||||
|
- items:
|
||||||
|
- const: intel,thunderbay-sdhci-5.1 # Intel Thunder Bay eMMC PHY
|
||||||
|
- const: arasan,sdhci-5.1
|
||||||
|
description:
|
||||||
|
For this device it is strongly suggested to include
|
||||||
|
clock-output-names and '#clock-cells'.
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
@ -153,7 +159,6 @@ properties:
|
||||||
The MIO bank number in which the command and data lines are configured.
|
The MIO bank number in which the command and data lines are configured.
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
clock-output-names: [ '#clock-cells' ]
|
|
||||||
'#clock-cells': [ clock-output-names ]
|
'#clock-cells': [ clock-output-names ]
|
||||||
|
|
||||||
required:
|
required:
|
||||||
|
@ -301,3 +306,22 @@ examples:
|
||||||
<&scmi_clk KEEM_BAY_PSS_SD0>;
|
<&scmi_clk KEEM_BAY_PSS_SD0>;
|
||||||
arasan,soc-ctl-syscon = <&sd0_phy_syscon>;
|
arasan,soc-ctl-syscon = <&sd0_phy_syscon>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
- |
|
||||||
|
#define EMMC_XIN_CLK
|
||||||
|
#define EMMC_AXI_CLK
|
||||||
|
#define TBH_PSS_EMMC_RST_N
|
||||||
|
mmc@80420000 {
|
||||||
|
compatible = "intel,thunderbay-sdhci-5.1", "arasan,sdhci-5.1";
|
||||||
|
interrupts = <GIC_SPI 714 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
reg = <0x80420000 0x400>;
|
||||||
|
clocks = <&scmi_clk EMMC_XIN_CLK>,
|
||||||
|
<&scmi_clk EMMC_AXI_CLK>;
|
||||||
|
clock-names = "clk_xin", "clk_ahb";
|
||||||
|
phys = <&emmc_phy>;
|
||||||
|
phy-names = "phy_arasan";
|
||||||
|
assigned-clocks = <&scmi_clk EMMC_XIN_CLK>;
|
||||||
|
clock-output-names = "emmc_cardclock";
|
||||||
|
resets = <&rst_pss1 TBH_PSS_EMMC_RST_N>;
|
||||||
|
#clock-cells = <0x0>;
|
||||||
|
};
|
||||||
|
|
|
@ -17,6 +17,7 @@ properties:
|
||||||
compatible:
|
compatible:
|
||||||
items:
|
items:
|
||||||
- enum:
|
- enum:
|
||||||
|
- microchip,mpfs-sd4hc
|
||||||
- socionext,uniphier-sd4hc
|
- socionext,uniphier-sd4hc
|
||||||
- const: cdns,sd4hc
|
- const: cdns,sd4hc
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ properties:
|
||||||
- fsl,imx6ull-usdhc
|
- fsl,imx6ull-usdhc
|
||||||
- fsl,imx7d-usdhc
|
- fsl,imx7d-usdhc
|
||||||
- fsl,imx7ulp-usdhc
|
- fsl,imx7ulp-usdhc
|
||||||
|
- nxp,s32g2-usdhc
|
||||||
- items:
|
- items:
|
||||||
- enum:
|
- enum:
|
||||||
- fsl,imx8mm-usdhc
|
- fsl,imx8mm-usdhc
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
mmc-card / eMMC bindings
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
This documents describes the devicetree bindings for a mmc-host controller
|
|
||||||
child node describing a mmc-card / an eMMC, see "Use of Function subnodes"
|
|
||||||
in mmc.txt
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
-compatible : Must be "mmc-card"
|
|
||||||
-reg : Must be <0>
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
-broken-hpi : Use this to indicate that the mmc-card has a broken hpi
|
|
||||||
implementation, and that hpi should not be used
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
&mmc2 {
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&mmc2_pins_a>;
|
|
||||||
vmmc-supply = <®_vcc3v3>;
|
|
||||||
bus-width = <8>;
|
|
||||||
non-removable;
|
|
||||||
|
|
||||||
mmccard: mmccard@0 {
|
|
||||||
reg = <0>;
|
|
||||||
compatible = "mmc-card";
|
|
||||||
broken-hpi;
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/mmc/mmc-card.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: MMC Card / eMMC Generic Device Tree Bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Ulf Hansson <ulf.hansson@linaro.org>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This documents describes the devicetree bindings for a mmc-host controller
|
||||||
|
child node describing a mmc-card / an eMMC.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: mmc-card
|
||||||
|
|
||||||
|
reg:
|
||||||
|
const: 0
|
||||||
|
|
||||||
|
broken-hpi:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||||||
|
description:
|
||||||
|
Use this to indicate that the mmc-card has a broken hpi
|
||||||
|
implementation, and that hpi should not be used.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
mmc {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
card@0 {
|
||||||
|
compatible = "mmc-card";
|
||||||
|
reg = <0>;
|
||||||
|
broken-hpi;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
|
@ -333,12 +333,6 @@ patternProperties:
|
||||||
subnode describes. A value of 0 denotes the memory SD
|
subnode describes. A value of 0 denotes the memory SD
|
||||||
function, values from 1 to 7 denote the SDIO functions.
|
function, values from 1 to 7 denote the SDIO functions.
|
||||||
|
|
||||||
broken-hpi:
|
|
||||||
$ref: /schemas/types.yaml#/definitions/flag
|
|
||||||
description:
|
|
||||||
Use this to indicate that the mmc-card has a broken hpi
|
|
||||||
implementation, and that hpi should not be used.
|
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- reg
|
- reg
|
||||||
|
|
||||||
|
|
|
@ -119,6 +119,18 @@ properties:
|
||||||
If present, HS400 command responses are sampled on rising edges.
|
If present, HS400 command responses are sampled on rising edges.
|
||||||
If not present, HS400 command responses are sampled on falling edges.
|
If not present, HS400 command responses are sampled on falling edges.
|
||||||
|
|
||||||
|
mediatek,hs400-ds-dly3:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
description:
|
||||||
|
Gear of the third delay line for DS for input data latch in data
|
||||||
|
pad macro, there are 32 stages from 0 to 31.
|
||||||
|
For different corner IC, the time is different about one step, it is
|
||||||
|
about 100ps.
|
||||||
|
The value is confirmed by doing scan and calibration to find a best
|
||||||
|
value with corner IC and it is valid only for HS400 mode.
|
||||||
|
minimum: 0
|
||||||
|
maximum: 31
|
||||||
|
|
||||||
mediatek,latch-ck:
|
mediatek,latch-ck:
|
||||||
$ref: /schemas/types.yaml#/definitions/uint32
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -13,6 +13,7 @@ Required properties:
|
||||||
string is added to support this change - "qcom,sdhci-msm-v5".
|
string is added to support this change - "qcom,sdhci-msm-v5".
|
||||||
full compatible strings with SoC and version:
|
full compatible strings with SoC and version:
|
||||||
"qcom,apq8084-sdhci", "qcom,sdhci-msm-v4"
|
"qcom,apq8084-sdhci", "qcom,sdhci-msm-v4"
|
||||||
|
"qcom,msm8226-sdhci", "qcom,sdhci-msm-v4"
|
||||||
"qcom,msm8974-sdhci", "qcom,sdhci-msm-v4"
|
"qcom,msm8974-sdhci", "qcom,sdhci-msm-v4"
|
||||||
"qcom,msm8916-sdhci", "qcom,sdhci-msm-v4"
|
"qcom,msm8916-sdhci", "qcom,sdhci-msm-v4"
|
||||||
"qcom,msm8992-sdhci", "qcom,sdhci-msm-v4"
|
"qcom,msm8992-sdhci", "qcom,sdhci-msm-v4"
|
||||||
|
|
|
@ -5,7 +5,11 @@ Refer to mmc.txt for standard MMC bindings.
|
||||||
For UHS devices which require tuning, the device tree should have a "cpu_thermal" node which maps to the appropriate thermal zone. This is used to get the temperature of the zone during tuning.
|
For UHS devices which require tuning, the device tree should have a "cpu_thermal" node which maps to the appropriate thermal zone. This is used to get the temperature of the zone during tuning.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: Should be "ti,dra7-sdhci" for DRA7 and DRA72 controllers
|
- compatible: Should be "ti,omap2430-sdhci" for omap2430 controllers
|
||||||
|
Should be "ti,omap3-sdhci" for omap3 controllers
|
||||||
|
Should be "ti,omap4-sdhci" for omap4 and ti81 controllers
|
||||||
|
Should be "ti,omap5-sdhci" for omap5 controllers
|
||||||
|
Should be "ti,dra7-sdhci" for DRA7 and DRA72 controllers
|
||||||
Should be "ti,k2g-sdhci" for K2G
|
Should be "ti,k2g-sdhci" for K2G
|
||||||
Should be "ti,am335-sdhci" for am335x controllers
|
Should be "ti,am335-sdhci" for am335x controllers
|
||||||
Should be "ti,am437-sdhci" for am437x controllers
|
Should be "ti,am437-sdhci" for am437x controllers
|
||||||
|
@ -24,6 +28,9 @@ Optional properties:
|
||||||
DMA specifiers listed in dmas. The string naming is to be "tx"
|
DMA specifiers listed in dmas. The string naming is to be "tx"
|
||||||
and "rx" for TX and RX DMA requests, respectively.
|
and "rx" for TX and RX DMA requests, respectively.
|
||||||
|
|
||||||
|
Deprecated properties:
|
||||||
|
- ti,non-removable: Compatible with the generic non-removable property
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
mmc1: mmc@4809c000 {
|
mmc1: mmc@4809c000 {
|
||||||
compatible = "ti,dra7-sdhci";
|
compatible = "ti,dra7-sdhci";
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
Maxim MAX8952 voltage regulator
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: must be equal to "maxim,max8952"
|
|
||||||
- reg: I2C slave address, usually 0x60
|
|
||||||
- max8952,dvs-mode-microvolt: array of 4 integer values defining DVS voltages
|
|
||||||
in microvolts. All values must be from range <770000, 1400000>
|
|
||||||
- any required generic properties defined in regulator.txt
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- max8952,vid-gpios: array of two GPIO pins used for DVS voltage selection
|
|
||||||
- max8952,en-gpio: GPIO used to control enable status of regulator
|
|
||||||
- max8952,default-mode: index of default DVS voltage, from <0, 3> range
|
|
||||||
- max8952,sync-freq: sync frequency, must be one of following values:
|
|
||||||
- 0: 26 MHz
|
|
||||||
- 1: 13 MHz
|
|
||||||
- 2: 19.2 MHz
|
|
||||||
Defaults to 26 MHz if not specified.
|
|
||||||
- max8952,ramp-speed: voltage ramp speed, must be one of following values:
|
|
||||||
- 0: 32mV/us
|
|
||||||
- 1: 16mV/us
|
|
||||||
- 2: 8mV/us
|
|
||||||
- 3: 4mV/us
|
|
||||||
- 4: 2mV/us
|
|
||||||
- 5: 1mV/us
|
|
||||||
- 6: 0.5mV/us
|
|
||||||
- 7: 0.25mV/us
|
|
||||||
Defaults to 32mV/us if not specified.
|
|
||||||
- any available generic properties defined in regulator.txt
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
vdd_arm_reg: pmic@60 {
|
|
||||||
compatible = "maxim,max8952";
|
|
||||||
reg = <0x60>;
|
|
||||||
|
|
||||||
/* max8952-specific properties */
|
|
||||||
max8952,vid-gpios = <&gpx0 3 0>, <&gpx0 4 0>;
|
|
||||||
max8952,en-gpio = <&gpx0 1 0>;
|
|
||||||
max8952,default-mode = <0>;
|
|
||||||
max8952,dvs-mode-microvolt = <1250000>, <1200000>,
|
|
||||||
<1050000>, <950000>;
|
|
||||||
max8952,sync-freq = <0>;
|
|
||||||
max8952,ramp-speed = <0>;
|
|
||||||
|
|
||||||
/* generic regulator properties */
|
|
||||||
regulator-name = "vdd_arm";
|
|
||||||
regulator-min-microvolt = <770000>;
|
|
||||||
regulator-max-microvolt = <1400000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
};
|
|
|
@ -1,52 +0,0 @@
|
||||||
* Maxim MAX8973 Voltage Regulator
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
|
|
||||||
- compatible: must be one of following:
|
|
||||||
"maxim,max8973"
|
|
||||||
"maxim,max77621".
|
|
||||||
- reg: the i2c slave address of the regulator. It should be 0x1b.
|
|
||||||
|
|
||||||
Any standard regulator properties can be used to configure the single max8973
|
|
||||||
DCDC.
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
|
|
||||||
-maxim,externally-enable: boolean, externally control the regulator output
|
|
||||||
enable/disable.
|
|
||||||
-maxim,enable-gpio: GPIO for enable control. If the valid GPIO is provided
|
|
||||||
then externally enable control will be considered.
|
|
||||||
-maxim,dvs-gpio: GPIO which is connected to DVS pin of device.
|
|
||||||
-maxim,dvs-default-state: Default state of GPIO during initialisation.
|
|
||||||
1 for HIGH and 0 for LOW.
|
|
||||||
-maxim,enable-remote-sense: boolean, enable reote sense.
|
|
||||||
-maxim,enable-falling-slew-rate: boolean, enable falling slew rate.
|
|
||||||
-maxim,enable-active-discharge: boolean: enable active discharge.
|
|
||||||
-maxim,enable-frequency-shift: boolean, enable 9% frequency shift.
|
|
||||||
-maxim,enable-bias-control: boolean, enable bias control. By enabling this
|
|
||||||
startup delay can be reduce to 20us from 220us.
|
|
||||||
-maxim,enable-etr: boolean, enable Enhanced Transient Response.
|
|
||||||
-maxim,enable-high-etr-sensitivity: boolean, Enhanced transient response
|
|
||||||
circuit is enabled and set for high sensitivity. If this
|
|
||||||
property is available then etr will be enable default.
|
|
||||||
|
|
||||||
Enhanced transient response (ETR) will affect the configuration of CKADV.
|
|
||||||
|
|
||||||
-junction-warn-millicelsius: u32, junction warning temperature threshold
|
|
||||||
in millicelsius. If die temperature crosses this level then
|
|
||||||
device generates the warning interrupts.
|
|
||||||
|
|
||||||
Please note that thermal functionality is only supported on MAX77621. The
|
|
||||||
supported threshold warning temperature for MAX77621 are 120 degC and 140 degC.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
max8973@1b {
|
|
||||||
compatible = "maxim,max8973";
|
|
||||||
reg = <0x1b>;
|
|
||||||
|
|
||||||
regulator-min-microvolt = <935000>;
|
|
||||||
regulator-max-microvolt = <1200000>;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
|
@ -1,145 +0,0 @@
|
||||||
* Maxim MAX8997 Voltage and Current Regulator
|
|
||||||
|
|
||||||
The Maxim MAX8997 is a multi-function device which includes voltage and
|
|
||||||
current regulators, rtc, charger controller and other sub-blocks. It is
|
|
||||||
interfaced to the host controller using a i2c interface. Each sub-block is
|
|
||||||
addressed by the host system using different i2c slave address. This document
|
|
||||||
describes the bindings for 'pmic' sub-block of max8997.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: Should be "maxim,max8997-pmic".
|
|
||||||
- reg: Specifies the i2c slave address of the pmic block. It should be 0x66.
|
|
||||||
|
|
||||||
- max8997,pmic-buck1-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
|
|
||||||
units for buck1 when changing voltage using gpio dvs. Refer to [1] below
|
|
||||||
for additional information.
|
|
||||||
|
|
||||||
- max8997,pmic-buck2-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
|
|
||||||
units for buck2 when changing voltage using gpio dvs. Refer to [1] below
|
|
||||||
for additional information.
|
|
||||||
|
|
||||||
- max8997,pmic-buck5-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
|
|
||||||
units for buck5 when changing voltage using gpio dvs. Refer to [1] below
|
|
||||||
for additional information.
|
|
||||||
|
|
||||||
[1] If none of the 'max8997,pmic-buck[1/2/5]-uses-gpio-dvs' optional
|
|
||||||
property is specified, the 'max8997,pmic-buck[1/2/5]-dvs-voltage'
|
|
||||||
property should specify atleast one voltage level (which would be a
|
|
||||||
safe operating voltage).
|
|
||||||
|
|
||||||
If either of the 'max8997,pmic-buck[1/2/5]-uses-gpio-dvs' optional
|
|
||||||
property is specified, then all the eight voltage values for the
|
|
||||||
'max8997,pmic-buck[1/2/5]-dvs-voltage' should be specified.
|
|
||||||
|
|
||||||
Optional properties:
|
|
||||||
- interrupts: Interrupt specifiers for two interrupt sources.
|
|
||||||
- First interrupt specifier is for 'irq1' interrupt.
|
|
||||||
- Second interrupt specifier is for 'alert' interrupt.
|
|
||||||
- charger-supply: regulator node for charging current.
|
|
||||||
- max8997,pmic-buck1-uses-gpio-dvs: 'buck1' can be controlled by gpio dvs.
|
|
||||||
- max8997,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs.
|
|
||||||
- max8997,pmic-buck5-uses-gpio-dvs: 'buck5' can be controlled by gpio dvs.
|
|
||||||
|
|
||||||
Additional properties required if either of the optional properties are used:
|
|
||||||
- max8997,pmic-ignore-gpiodvs-side-effect: When GPIO-DVS mode is used for
|
|
||||||
multiple bucks, changing the voltage value of one of the bucks may affect
|
|
||||||
that of another buck, which is the side effect of the change (set_voltage).
|
|
||||||
Use this property to ignore such side effects and change the voltage.
|
|
||||||
|
|
||||||
- max8997,pmic-buck125-default-dvs-idx: Default voltage setting selected from
|
|
||||||
the possible 8 options selectable by the dvs gpios. The value of this
|
|
||||||
property should be between 0 and 7. If not specified or if out of range, the
|
|
||||||
default value of this property is set to 0.
|
|
||||||
|
|
||||||
- max8997,pmic-buck125-dvs-gpios: GPIO specifiers for three host gpio's used
|
|
||||||
for dvs. The format of the gpio specifier depends in the gpio controller.
|
|
||||||
|
|
||||||
Regulators: The regulators of max8997 that have to be instantiated should be
|
|
||||||
included in a sub-node named 'regulators'. Regulator nodes included in this
|
|
||||||
sub-node should be of the format as listed below.
|
|
||||||
|
|
||||||
regulator_name {
|
|
||||||
standard regulator bindings here
|
|
||||||
};
|
|
||||||
|
|
||||||
The following are the names of the regulators that the max8997 pmic block
|
|
||||||
supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
|
|
||||||
as per the datasheet of max8997.
|
|
||||||
|
|
||||||
- LDOn
|
|
||||||
- valid values for n are 1 to 18 and 21
|
|
||||||
- Example: LDO0, LD01, LDO2, LDO21
|
|
||||||
- BUCKn
|
|
||||||
- valid values for n are 1 to 7.
|
|
||||||
- Example: BUCK1, BUCK2, BUCK3, BUCK7
|
|
||||||
|
|
||||||
- ENVICHG: Battery Charging Current Monitor Output. This is a fixed
|
|
||||||
voltage type regulator
|
|
||||||
|
|
||||||
- ESAFEOUT1: (ldo19)
|
|
||||||
- ESAFEOUT2: (ld020)
|
|
||||||
|
|
||||||
- CHARGER_CV: main battery charger voltage control
|
|
||||||
- CHARGER: main battery charger current control
|
|
||||||
- CHARGER_TOPOFF: end of charge current threshold level
|
|
||||||
|
|
||||||
The bindings inside the regulator nodes use the standard regulator bindings
|
|
||||||
which are documented elsewhere.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
max8997_pmic@66 {
|
|
||||||
compatible = "maxim,max8997-pmic";
|
|
||||||
interrupt-parent = <&wakeup_eint>;
|
|
||||||
reg = <0x66>;
|
|
||||||
interrupts = <4 0>, <3 0>;
|
|
||||||
|
|
||||||
max8997,pmic-buck1-uses-gpio-dvs;
|
|
||||||
max8997,pmic-buck2-uses-gpio-dvs;
|
|
||||||
max8997,pmic-buck5-uses-gpio-dvs;
|
|
||||||
|
|
||||||
max8997,pmic-ignore-gpiodvs-side-effect;
|
|
||||||
max8997,pmic-buck125-default-dvs-idx = <0>;
|
|
||||||
|
|
||||||
max8997,pmic-buck125-dvs-gpios = <&gpx0 0 1 0 0>, /* SET1 */
|
|
||||||
<&gpx0 1 1 0 0>, /* SET2 */
|
|
||||||
<&gpx0 2 1 0 0>; /* SET3 */
|
|
||||||
|
|
||||||
max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
|
|
||||||
<1250000>, <1200000>,
|
|
||||||
<1150000>, <1100000>,
|
|
||||||
<1000000>, <950000>;
|
|
||||||
|
|
||||||
max8997,pmic-buck2-dvs-voltage = <1100000>, <1100000>,
|
|
||||||
<1100000>, <1100000>,
|
|
||||||
<1000000>, <1000000>,
|
|
||||||
<1000000>, <1000000>;
|
|
||||||
|
|
||||||
max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
|
|
||||||
<1200000>, <1200000>,
|
|
||||||
<1200000>, <1200000>,
|
|
||||||
<1200000>, <1200000>;
|
|
||||||
|
|
||||||
regulators {
|
|
||||||
ldo1_reg: LDO1 {
|
|
||||||
regulator-name = "VDD_ABB_3.3V";
|
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ldo2_reg: LDO2 {
|
|
||||||
regulator-name = "VDD_ALIVE_1.1V";
|
|
||||||
regulator-min-microvolt = <1100000>;
|
|
||||||
regulator-max-microvolt = <1100000>;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
buck1_reg: BUCK1 {
|
|
||||||
regulator-name = "VDD_ARM_1.2V";
|
|
||||||
regulator-min-microvolt = <950000>;
|
|
||||||
regulator-max-microvolt = <1350000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -0,0 +1,109 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/maxim,max8952.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Maxim MAX8952 voltage regulator
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: regulator.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: maxim,max8952
|
||||||
|
|
||||||
|
max8952,default-mode:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
enum: [0, 1, 2, 3]
|
||||||
|
description: |
|
||||||
|
index of default DVS voltage
|
||||||
|
|
||||||
|
max8952,dvs-mode-microvolt:
|
||||||
|
minItems: 4
|
||||||
|
maxItems: 4
|
||||||
|
items:
|
||||||
|
minimum: 770000
|
||||||
|
maximum: 1400000
|
||||||
|
description: |
|
||||||
|
Array of 4 integer values defining DVS voltages in microvolts. All values
|
||||||
|
must be from range <770000, 1400000>.
|
||||||
|
|
||||||
|
max8952,en-gpio:
|
||||||
|
maxItems: 1
|
||||||
|
description: |
|
||||||
|
GPIO used to control enable status of regulator
|
||||||
|
|
||||||
|
max8952,ramp-speed:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
enum: [0, 1, 2, 3, 4, 5, 6, 7]
|
||||||
|
default: 0
|
||||||
|
description: |
|
||||||
|
Voltage ramp speed, values map to:
|
||||||
|
- 0: 32mV/us
|
||||||
|
- 1: 16mV/us
|
||||||
|
- 2: 8mV/us
|
||||||
|
- 3: 4mV/us
|
||||||
|
- 4: 2mV/us
|
||||||
|
- 5: 1mV/us
|
||||||
|
- 6: 0.5mV/us
|
||||||
|
- 7: 0.25mV/us
|
||||||
|
Defaults to 32mV/us if not specified.
|
||||||
|
|
||||||
|
max8952,sync-freq:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
enum: [0, 1, 2]
|
||||||
|
default: 0
|
||||||
|
description: |
|
||||||
|
Sync frequency, values map to:
|
||||||
|
- 0: 26 MHz
|
||||||
|
- 1: 13 MHz
|
||||||
|
- 2: 19.2 MHz
|
||||||
|
Defaults to 26 MHz if not specified.
|
||||||
|
|
||||||
|
max8952,vid-gpios:
|
||||||
|
minItems: 2
|
||||||
|
maxItems: 2
|
||||||
|
description: |
|
||||||
|
Array of two GPIO pins used for DVS voltage selection
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- max8952,dvs-mode-microvolt
|
||||||
|
- reg
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
pmic@60 {
|
||||||
|
compatible = "maxim,max8952";
|
||||||
|
reg = <0x60>;
|
||||||
|
|
||||||
|
max8952,vid-gpios = <&gpx0 3 GPIO_ACTIVE_HIGH>,
|
||||||
|
<&gpx0 4 GPIO_ACTIVE_HIGH>;
|
||||||
|
max8952,default-mode = <0>;
|
||||||
|
max8952,dvs-mode-microvolt = <1250000>, <1200000>,
|
||||||
|
<1050000>, <950000>;
|
||||||
|
max8952,sync-freq = <0>;
|
||||||
|
max8952,ramp-speed = <0>;
|
||||||
|
|
||||||
|
regulator-name = "VARM_1.2V_C210";
|
||||||
|
regulator-min-microvolt = <770000>;
|
||||||
|
regulator-max-microvolt = <1400000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,139 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/maxim,max8973.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Maxim MAX8973/MAX77621 voltage regulator
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: regulator.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
enum:
|
||||||
|
- maxim,max8973
|
||||||
|
- maxim,max77621
|
||||||
|
|
||||||
|
junction-warn-millicelsius:
|
||||||
|
description: |
|
||||||
|
Junction warning temperature threshold in millicelsius. If die
|
||||||
|
temperature crosses this level then device generates the warning
|
||||||
|
interrupts.
|
||||||
|
Please note that thermal functionality is only supported on MAX77621. The
|
||||||
|
supported threshold warning temperature for MAX77621 are 120 degC and 140
|
||||||
|
degC.
|
||||||
|
|
||||||
|
maxim,dvs-gpio:
|
||||||
|
maxItems: 1
|
||||||
|
description: |
|
||||||
|
GPIO which is connected to DVS pin of device.
|
||||||
|
|
||||||
|
maxim,dvs-default-state:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
enum: [0, 1]
|
||||||
|
description: |
|
||||||
|
Default state of GPIO during initialisation.
|
||||||
|
1 for HIGH and 0 for LOW.
|
||||||
|
|
||||||
|
maxim,externally-enable:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Externally control the regulator output enable/disable.
|
||||||
|
|
||||||
|
maxim,enable-gpio:
|
||||||
|
maxItems: 1
|
||||||
|
description: |
|
||||||
|
GPIO for enable control. If the valid GPIO is provided then externally
|
||||||
|
enable control will be considered.
|
||||||
|
|
||||||
|
maxim,enable-remote-sense:
|
||||||
|
type: boolean
|
||||||
|
description: Enable remote sense.
|
||||||
|
|
||||||
|
maxim,enable-falling-slew-rate:
|
||||||
|
type: boolean
|
||||||
|
description: Enable falling slew rate.
|
||||||
|
|
||||||
|
maxim,enable-active-discharge:
|
||||||
|
type: boolean
|
||||||
|
description: Eable active discharge.
|
||||||
|
|
||||||
|
maxim,enable-frequency-shift:
|
||||||
|
type: boolean
|
||||||
|
description: Enable 9% frequency shift.
|
||||||
|
|
||||||
|
maxim,enable-bias-control:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Enable bias control which can reduce the startup delay to 20us from 220us.
|
||||||
|
|
||||||
|
maxim,enable-etr:
|
||||||
|
type: boolean
|
||||||
|
description: Enable Enhanced Transient Response.
|
||||||
|
|
||||||
|
maxim,enable-high-etr-sensitivity:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
Enhanced transient response circuit is enabled and set for high
|
||||||
|
sensitivity. If this property is available then etr will be enable
|
||||||
|
default.
|
||||||
|
Enhanced transient response (ETR) will affect the configuration of CKADV.
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
regulator@1b {
|
||||||
|
compatible = "maxim,max8973";
|
||||||
|
reg = <0x1b>;
|
||||||
|
|
||||||
|
regulator-min-microvolt = <935000>;
|
||||||
|
regulator-max-microvolt = <1200000>;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/tegra-gpio.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
regulator@1b {
|
||||||
|
compatible = "maxim,max77621";
|
||||||
|
reg = <0x1b>;
|
||||||
|
interrupt-parent = <&gpio>;
|
||||||
|
interrupts = <TEGRA_GPIO(Y, 1) IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-min-microvolt = <800000>;
|
||||||
|
regulator-max-microvolt = <1231250>;
|
||||||
|
regulator-name = "PPVAR_CPU";
|
||||||
|
regulator-ramp-delay = <12500>;
|
||||||
|
maxim,dvs-default-state = <1>;
|
||||||
|
maxim,enable-active-discharge;
|
||||||
|
maxim,enable-bias-control;
|
||||||
|
maxim,enable-etr;
|
||||||
|
maxim,enable-gpio = <&pmic 5 GPIO_ACTIVE_HIGH>;
|
||||||
|
maxim,externally-enable;
|
||||||
|
};
|
||||||
|
};
|
|
@ -0,0 +1,445 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/maxim,max8997.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Maxim MAX8997 Power Management IC
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
The Maxim MAX8997 is a Power Management IC which includes voltage and current
|
||||||
|
regulators, charger controller with fuel gauge, RTC, clock outputs, haptic
|
||||||
|
motor driver, flash LED driver and Micro-USB Interface Controller.
|
||||||
|
|
||||||
|
The binding here is not complete and describes only regulator and charger
|
||||||
|
controller parts.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: maxim,max8997-pmic
|
||||||
|
|
||||||
|
charger-supply:
|
||||||
|
description: |
|
||||||
|
Regulator node for charging current.
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
items:
|
||||||
|
- description: irq1 interrupt
|
||||||
|
- description: alert interrupt
|
||||||
|
|
||||||
|
max8997,pmic-buck1-dvs-voltage:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 8
|
||||||
|
description: |
|
||||||
|
A set of 8 voltage values in micro-volt (uV) units for buck1 when
|
||||||
|
changing voltage using GPIO DVS.
|
||||||
|
If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
|
||||||
|
specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
|
||||||
|
specify at least one voltage level (which would be a safe operating
|
||||||
|
voltage).
|
||||||
|
|
||||||
|
max8997,pmic-buck2-dvs-voltage:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 8
|
||||||
|
description: |
|
||||||
|
A set of 8 voltage values in micro-volt (uV) units for buck2 when
|
||||||
|
changing voltage using GPIO DVS.
|
||||||
|
If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
|
||||||
|
specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
|
||||||
|
specify at least one voltage level (which would be a safe operating
|
||||||
|
voltage).
|
||||||
|
|
||||||
|
max8997,pmic-buck5-dvs-voltage:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 8
|
||||||
|
description: |
|
||||||
|
A set of 8 voltage values in micro-volt (uV) units for buck5 when
|
||||||
|
changing voltage using GPIO DVS.
|
||||||
|
If none of max8997,pmic-buck[1/2/5]-uses-gpio-dvs optional property is
|
||||||
|
specified, the max8997,pmic-buck[1/2/5]-dvs-voltage property should
|
||||||
|
specify at least one voltage level (which would be a safe operating
|
||||||
|
voltage).
|
||||||
|
|
||||||
|
max8997,pmic-buck1-uses-gpio-dvs:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
buck1 can be controlled by GPIO DVS.
|
||||||
|
|
||||||
|
max8997,pmic-buck2-uses-gpio-dvs:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
buck2 can be controlled by GPIO DVS.
|
||||||
|
|
||||||
|
max8997,pmic-buck5-uses-gpio-dvs:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
buck5 can be controlled by GPIO DVS.
|
||||||
|
|
||||||
|
max8997,pmic-buck125-default-dvs-idx:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
minimum: 0
|
||||||
|
maximum: 7
|
||||||
|
default: 0
|
||||||
|
description: |
|
||||||
|
Default voltage setting selected from the possible 8 options selectable
|
||||||
|
by the dvs gpios. The value of this property should be between 0 and 7.
|
||||||
|
If not specified or if out of range, the default value of this property
|
||||||
|
is set to 0.
|
||||||
|
|
||||||
|
max8997,pmic-buck125-dvs-gpios:
|
||||||
|
minItems: 3
|
||||||
|
maxItems: 3
|
||||||
|
description: |
|
||||||
|
GPIO specifiers for three host gpio's used for DVS.
|
||||||
|
|
||||||
|
max8997,pmic-ignore-gpiodvs-side-effect:
|
||||||
|
type: boolean
|
||||||
|
description: |
|
||||||
|
When GPIO-DVS mode is used for multiple bucks, changing the voltage value
|
||||||
|
of one of the bucks may affect that of another buck, which is the side
|
||||||
|
effect of the change (set_voltage). Use this property to ignore such
|
||||||
|
side effects and change the voltage.
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
regulators:
|
||||||
|
type: object
|
||||||
|
description:
|
||||||
|
List of child nodes that specify the regulators.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
# 1-18 and 21 LDOs
|
||||||
|
"^LDO([1-9]|1[0-8]|21)$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description:
|
||||||
|
Properties for single LDO regulator.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
# 7 bucks
|
||||||
|
"^BUCK[1-7]$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
"^EN32KHZ_[AC]P$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description:
|
||||||
|
32768 Hz clock output (modelled as regulator)
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
regulator-always-on: true
|
||||||
|
regulator-boot-on: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
properties:
|
||||||
|
CHARGER:
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description: main battery charger current control
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
CHARGER_CV:
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description: main battery charger voltage control
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
CHARGER_TOPOFF:
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description: end of charge current threshold level
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
ENVICHG:
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description: |
|
||||||
|
Battery Charging Current Monitor Output. This is a fixed voltage type
|
||||||
|
regulator
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
ESAFEOUT1:
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description: LDO19
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
ESAFEOUT2:
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
description: LDO20
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-name: true
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- max8997,pmic-buck1-dvs-voltage
|
||||||
|
- max8997,pmic-buck2-dvs-voltage
|
||||||
|
- max8997,pmic-buck5-dvs-voltage
|
||||||
|
- reg
|
||||||
|
- regulators
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
max8997,pmic-buck1-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
|
||||||
|
max8997,pmic-buck2-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
|
||||||
|
max8997,pmic-buck5-uses-gpio-dvs: [ 'max8997,pmic-buck125-dvs-gpios' ]
|
||||||
|
|
||||||
|
additionalProperties: false
|
||||||
|
|
||||||
|
if:
|
||||||
|
anyOf:
|
||||||
|
- required:
|
||||||
|
- max8997,pmic-buck1-uses-gpio-dvs
|
||||||
|
- required:
|
||||||
|
- max8997,pmic-buck2-uses-gpio-dvs
|
||||||
|
- required:
|
||||||
|
- max8997,pmic-buck5-uses-gpio-dvs
|
||||||
|
then:
|
||||||
|
properties:
|
||||||
|
max8997,pmic-buck1-dvs-voltage:
|
||||||
|
minItems: 8
|
||||||
|
maxItems: 8
|
||||||
|
max8997,pmic-buck2-dvs-voltage:
|
||||||
|
minItems: 8
|
||||||
|
maxItems: 8
|
||||||
|
max8997,pmic-buck5-dvs-voltage:
|
||||||
|
minItems: 8
|
||||||
|
maxItems: 8
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
pmic@66 {
|
||||||
|
compatible = "maxim,max8997-pmic";
|
||||||
|
reg = <0x66>;
|
||||||
|
|
||||||
|
interrupts-extended = <&gpx0 7 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<&gpx2 3 IRQ_TYPE_EDGE_FALLING>;
|
||||||
|
|
||||||
|
max8997,pmic-buck1-uses-gpio-dvs;
|
||||||
|
max8997,pmic-buck2-uses-gpio-dvs;
|
||||||
|
max8997,pmic-buck5-uses-gpio-dvs;
|
||||||
|
|
||||||
|
max8997,pmic-ignore-gpiodvs-side-effect;
|
||||||
|
max8997,pmic-buck125-default-dvs-idx = <0>;
|
||||||
|
|
||||||
|
max8997,pmic-buck125-dvs-gpios = <&gpx0 5 GPIO_ACTIVE_HIGH>,
|
||||||
|
<&gpx0 6 GPIO_ACTIVE_HIGH>,
|
||||||
|
<&gpl0 0 GPIO_ACTIVE_HIGH>;
|
||||||
|
|
||||||
|
max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
|
||||||
|
<1250000>, <1200000>,
|
||||||
|
<1150000>, <1100000>,
|
||||||
|
<1000000>, <950000>;
|
||||||
|
|
||||||
|
max8997,pmic-buck2-dvs-voltage = <1100000>, <1000000>,
|
||||||
|
<950000>, <900000>,
|
||||||
|
<1100000>, <1000000>,
|
||||||
|
<950000>, <900000>;
|
||||||
|
|
||||||
|
max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
|
||||||
|
<1200000>, <1200000>,
|
||||||
|
<1200000>, <1200000>,
|
||||||
|
<1200000>, <1200000>;
|
||||||
|
|
||||||
|
pinctrl-0 = <&max8997_irq>, <&otg_gp>, <&usb_sel>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
|
||||||
|
charger-supply = <&charger_reg>;
|
||||||
|
|
||||||
|
regulators {
|
||||||
|
LDO1 {
|
||||||
|
regulator-name = "VADC_3.3V_C210";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
LDO2 {
|
||||||
|
regulator-name = "VALIVE_1.1V_C210";
|
||||||
|
regulator-min-microvolt = <1100000>;
|
||||||
|
regulator-max-microvolt = <1100000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
BUCK1 {
|
||||||
|
regulator-name = "VARM_1.2V_C210";
|
||||||
|
regulator-min-microvolt = <65000>;
|
||||||
|
regulator-max-microvolt = <2225000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
BUCK7 {
|
||||||
|
regulator-name = "VCC_SUB_2.0V";
|
||||||
|
regulator-min-microvolt = <2000000>;
|
||||||
|
regulator-max-microvolt = <2000000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
ESAFEOUT1 {
|
||||||
|
regulator-name = "SAFEOUT1";
|
||||||
|
};
|
||||||
|
|
||||||
|
ESAFEOUT2 {
|
||||||
|
regulator-name = "SAFEOUT2";
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
EN32KHZ_AP {
|
||||||
|
regulator-name = "EN32KHZ_AP";
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
EN32KHZ_CP {
|
||||||
|
regulator-name = "EN32KHZ_CP";
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
CHARGER {
|
||||||
|
regulator-name = "CHARGER";
|
||||||
|
regulator-min-microamp = <200000>;
|
||||||
|
regulator-max-microamp = <950000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
CHARGER_CV {
|
||||||
|
regulator-name = "CHARGER_CV";
|
||||||
|
regulator-min-microvolt = <4200000>;
|
||||||
|
regulator-max-microvolt = <4200000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
CHARGER_TOPOFF {
|
||||||
|
regulator-name = "CHARGER_TOPOFF";
|
||||||
|
regulator-min-microamp = <200000>;
|
||||||
|
regulator-max-microamp = <200000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
- |
|
||||||
|
#include <dt-bindings/interrupt-controller/irq.h>
|
||||||
|
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
pmic@66 {
|
||||||
|
compatible = "maxim,max8997-pmic";
|
||||||
|
reg = <0x66>;
|
||||||
|
|
||||||
|
interrupt-parent = <&gpx0>;
|
||||||
|
interrupts = <4 IRQ_TYPE_LEVEL_LOW>,
|
||||||
|
<3 IRQ_TYPE_EDGE_FALLING>;
|
||||||
|
pinctrl-names = "default";
|
||||||
|
pinctrl-0 = <&max8997_irq>;
|
||||||
|
|
||||||
|
max8997,pmic-buck1-dvs-voltage = <1350000>;
|
||||||
|
max8997,pmic-buck2-dvs-voltage = <1100000>;
|
||||||
|
max8997,pmic-buck5-dvs-voltage = <1200000>;
|
||||||
|
|
||||||
|
regulators {
|
||||||
|
LDO1 {
|
||||||
|
regulator-name = "VDD_ABB_3.3V";
|
||||||
|
regulator-min-microvolt = <3300000>;
|
||||||
|
regulator-max-microvolt = <3300000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
BUCK1 {
|
||||||
|
regulator-name = "VDD_ARM_1.2V";
|
||||||
|
regulator-min-microvolt = <950000>;
|
||||||
|
regulator-max-microvolt = <1350000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
EN32KHZ_AP {
|
||||||
|
regulator-name = "EN32KHZ_AP";
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -35,6 +35,7 @@ description: |
|
||||||
PMIC. Supported regulator node names are
|
PMIC. Supported regulator node names are
|
||||||
For PM6150, smps1 - smps5, ldo1 - ldo19
|
For PM6150, smps1 - smps5, ldo1 - ldo19
|
||||||
For PM6150L, smps1 - smps8, ldo1 - ldo11, bob
|
For PM6150L, smps1 - smps8, ldo1 - ldo11, bob
|
||||||
|
For PM6350, smps1 - smps5, ldo1 - ldo22
|
||||||
For PM7325, smps1 - smps8, ldo1 - ldo19
|
For PM7325, smps1 - smps8, ldo1 - ldo19
|
||||||
For PM8005, smps1 - smps4
|
For PM8005, smps1 - smps4
|
||||||
For PM8009, smps1 - smps2, ldo1 - ldo7
|
For PM8009, smps1 - smps2, ldo1 - ldo7
|
||||||
|
@ -52,6 +53,7 @@ properties:
|
||||||
enum:
|
enum:
|
||||||
- qcom,pm6150-rpmh-regulators
|
- qcom,pm6150-rpmh-regulators
|
||||||
- qcom,pm6150l-rpmh-regulators
|
- qcom,pm6150l-rpmh-regulators
|
||||||
|
- qcom,pm6350-rpmh-regulators
|
||||||
- qcom,pm7325-rpmh-regulators
|
- qcom,pm7325-rpmh-regulators
|
||||||
- qcom,pm8005-rpmh-regulators
|
- qcom,pm8005-rpmh-regulators
|
||||||
- qcom,pm8009-rpmh-regulators
|
- qcom,pm8009-rpmh-regulators
|
||||||
|
|
|
@ -65,6 +65,9 @@ description:
|
||||||
For pms405, s1, s2, s3, s4, s5, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
|
For pms405, s1, s2, s3, s4, s5, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
|
||||||
l12, l13
|
l12, l13
|
||||||
|
|
||||||
|
For pm2250, s1, s2, s3, s4, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
|
||||||
|
l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22
|
||||||
|
|
||||||
maintainers:
|
maintainers:
|
||||||
- Kathiravan T <kathirav@codeaurora.org>
|
- Kathiravan T <kathirav@codeaurora.org>
|
||||||
|
|
||||||
|
@ -86,6 +89,7 @@ properties:
|
||||||
- qcom,rpm-pmi8994-regulators
|
- qcom,rpm-pmi8994-regulators
|
||||||
- qcom,rpm-pmi8998-regulators
|
- qcom,rpm-pmi8998-regulators
|
||||||
- qcom,rpm-pms405-regulators
|
- qcom,rpm-pms405-regulators
|
||||||
|
- qcom,rpm-pm2250-regulators
|
||||||
|
|
||||||
patternProperties:
|
patternProperties:
|
||||||
".*-supply$":
|
".*-supply$":
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
Binding for Samsung S2MPA01 regulator block
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
This is a part of device tree bindings for S2M family multi-function devices.
|
|
||||||
More information can be found in bindings/mfd/sec-core.txt file.
|
|
||||||
|
|
||||||
The S2MPA01 device provide buck and LDO regulators.
|
|
||||||
|
|
||||||
To register these with regulator framework instantiate under main device node
|
|
||||||
a sub-node named "regulators" with more sub-nodes for each regulator using the
|
|
||||||
common regulator binding documented in:
|
|
||||||
- Documentation/devicetree/bindings/regulator/regulator.txt
|
|
||||||
|
|
||||||
|
|
||||||
Names of regulators supported by S2MPA01 device:
|
|
||||||
- LDOn
|
|
||||||
- valid values for n are 1 to 26
|
|
||||||
- Example: LDO1, LD02, LDO26
|
|
||||||
- BUCKn
|
|
||||||
- valid values for n are 1 to 10.
|
|
||||||
- Example: BUCK1, BUCK2, BUCK9
|
|
||||||
Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
|
|
||||||
as per the datasheet of device.
|
|
||||||
|
|
||||||
|
|
||||||
Optional properties of buck regulator nodes under "regulators" sub-node:
|
|
||||||
- regulator-ramp-delay: ramp delay in uV/us. May be 6250, 12500
|
|
||||||
(default), 25000, or 50000. May be 0 for disabling the ramp delay on
|
|
||||||
BUCK{1,2,3,4}.
|
|
||||||
|
|
||||||
In the absence of the regulator-ramp-delay property, the default ramp
|
|
||||||
delay will be used.
|
|
||||||
|
|
||||||
Note: Some bucks share the ramp rate setting i.e. same ramp value
|
|
||||||
will be set for a particular group of bucks so provide the same
|
|
||||||
regulator-ramp-delay value for them.
|
|
||||||
Groups sharing ramp rate:
|
|
||||||
- buck{1,6},
|
|
||||||
- buck{2,4},
|
|
||||||
- buck{8,9,10}.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
s2mpa01_pmic@66 {
|
|
||||||
compatible = "samsung,s2mpa01-pmic";
|
|
||||||
reg = <0x66>;
|
|
||||||
|
|
||||||
regulators {
|
|
||||||
ldo1_reg: LDO1 {
|
|
||||||
regulator-name = "VDD_ALIVE";
|
|
||||||
regulator-min-microvolt = <1000000>;
|
|
||||||
regulator-max-microvolt = <1000000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ldo2_reg: LDO2 {
|
|
||||||
regulator-name = "VDDQ_MMC2";
|
|
||||||
regulator-min-microvolt = <2800000>;
|
|
||||||
regulator-max-microvolt = <2800000>;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
buck1_reg: BUCK1 {
|
|
||||||
regulator-name = "vdd_mif";
|
|
||||||
regulator-min-microvolt = <950000>;
|
|
||||||
regulator-max-microvolt = <1350000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
buck2_reg: BUCK2 {
|
|
||||||
regulator-name = "vdd_arm";
|
|
||||||
regulator-min-microvolt = <950000>;
|
|
||||||
regulator-max-microvolt = <1350000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-ramp-delay = <50000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/samsung,s2mpa01.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Samsung S2MPA01 Power Management IC regulators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is a part of device tree bindings for S2M and S5M family of Power
|
||||||
|
Management IC (PMIC).
|
||||||
|
|
||||||
|
The S2MPA01 provides buck and LDO regulators.
|
||||||
|
|
||||||
|
See also Documentation/devicetree/bindings/mfd/samsung,s2mpa01.yaml for
|
||||||
|
additional information and example.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
# 26 LDOs
|
||||||
|
"^LDO([1-9]|1[0-9]|2[0-6])$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single LDO regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
# 10 bucks
|
||||||
|
"^BUCK([1-9]|10)$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
regulator-ramp-delay:
|
||||||
|
enum: [0, 6250, 12500, 25000, 50000]
|
||||||
|
default: 12500
|
||||||
|
description: |
|
||||||
|
May be 0 for disabling the ramp delay on BUCK{1,2,3,4}.
|
||||||
|
|
||||||
|
In the absence of the regulator-ramp-delay property, the default ramp
|
||||||
|
delay will be used.
|
||||||
|
|
||||||
|
Note: Some bucks share the ramp rate setting i.e. same ramp value
|
||||||
|
will be set for a particular group of bucks so provide the same
|
||||||
|
regulator-ramp-delay value for them.
|
||||||
|
Groups sharing ramp rate:
|
||||||
|
* buck{1,6},
|
||||||
|
* buck{2,4},
|
||||||
|
* buck{8,9,10}.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
additionalProperties: false
|
|
@ -1,102 +0,0 @@
|
||||||
Binding for Samsung S2M family regulator block
|
|
||||||
==============================================
|
|
||||||
|
|
||||||
This is a part of device tree bindings for S2M family multi-function devices.
|
|
||||||
More information can be found in bindings/mfd/sec-core.txt file.
|
|
||||||
|
|
||||||
The S2MPS11/13/14/15 and S2MPU02 devices provide buck and LDO regulators.
|
|
||||||
|
|
||||||
To register these with regulator framework instantiate under main device node
|
|
||||||
a sub-node named "regulators" with more sub-nodes for each regulator using the
|
|
||||||
common regulator binding documented in:
|
|
||||||
- Documentation/devicetree/bindings/regulator/regulator.txt
|
|
||||||
|
|
||||||
|
|
||||||
Names of regulators supported by different devices:
|
|
||||||
- LDOn
|
|
||||||
- valid values for n are:
|
|
||||||
- S2MPS11: 1 to 38
|
|
||||||
- S2MPS13: 1 to 40
|
|
||||||
- S2MPS14: 1 to 25
|
|
||||||
- S2MPS15: 1 to 27
|
|
||||||
- S2MPU02: 1 to 28
|
|
||||||
- Example: LDO1, LDO2, LDO28
|
|
||||||
- BUCKn
|
|
||||||
- valid values for n are:
|
|
||||||
- S2MPS11: 1 to 10
|
|
||||||
- S2MPS13: 1 to 10
|
|
||||||
- S2MPS14: 1 to 5
|
|
||||||
- S2MPS15: 1 to 10
|
|
||||||
- S2MPU02: 1 to 7
|
|
||||||
- Example: BUCK1, BUCK2, BUCK9
|
|
||||||
Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
|
|
||||||
as per the datasheet of device.
|
|
||||||
|
|
||||||
|
|
||||||
Optional properties of the nodes under "regulators" sub-node:
|
|
||||||
- regulator-ramp-delay: ramp delay in uV/us. May be 6250, 12500,
|
|
||||||
25000 (default) or 50000.
|
|
||||||
|
|
||||||
Additionally S2MPS11 supports disabling ramp delay for BUCK{2,3,4,6}
|
|
||||||
by setting it to <0>.
|
|
||||||
|
|
||||||
Note: On S2MPS11 some bucks share the ramp rate setting i.e. same ramp value
|
|
||||||
will be set for a particular group of bucks so provide the same
|
|
||||||
regulator-ramp-delay value for them.
|
|
||||||
Groups sharing ramp rate:
|
|
||||||
- buck{1,6},
|
|
||||||
- buck{3,4},
|
|
||||||
- buck{7,8,10}.
|
|
||||||
|
|
||||||
- samsung,ext-control-gpios: On S2MPS14 the LDO10, LDO11 and LDO12 can be
|
|
||||||
configured to external control over GPIO. To turn this feature on this
|
|
||||||
property must be added to the regulator sub-node:
|
|
||||||
- samsung,ext-control-gpios: GPIO specifier for one GPIO
|
|
||||||
controlling this regulator (enable/disable)
|
|
||||||
Example:
|
|
||||||
LDO12 {
|
|
||||||
regulator-name = "V_EMMC_2.8V";
|
|
||||||
regulator-min-microvolt = <2800000>;
|
|
||||||
regulator-max-microvolt = <2800000>;
|
|
||||||
samsung,ext-control-gpios = <&gpk0 2 0>;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
s2mps11_pmic@66 {
|
|
||||||
compatible = "samsung,s2mps11-pmic";
|
|
||||||
reg = <0x66>;
|
|
||||||
|
|
||||||
regulators {
|
|
||||||
ldo1_reg: LDO1 {
|
|
||||||
regulator-name = "VDD_ABB_3.3V";
|
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ldo2_reg: LDO2 {
|
|
||||||
regulator-name = "VDD_ALIVE_1.1V";
|
|
||||||
regulator-min-microvolt = <1100000>;
|
|
||||||
regulator-max-microvolt = <1100000>;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
buck1_reg: BUCK1 {
|
|
||||||
regulator-name = "vdd_mif";
|
|
||||||
regulator-min-microvolt = <950000>;
|
|
||||||
regulator-max-microvolt = <1350000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
buck2_reg: BUCK2 {
|
|
||||||
regulator-name = "vdd_arm";
|
|
||||||
regulator-min-microvolt = <950000>;
|
|
||||||
regulator-max-microvolt = <1350000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-ramp-delay = <50000>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/samsung,s2mps11.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Samsung S2MPS11 Power Management IC regulators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is a part of device tree bindings for S2M and S5M family of Power
|
||||||
|
Management IC (PMIC).
|
||||||
|
|
||||||
|
The S2MPS11 provides buck and LDO regulators.
|
||||||
|
|
||||||
|
See also Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml for
|
||||||
|
additional information and example.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
# 38 LDOs
|
||||||
|
"^LDO([1-9]|[1-2][0-9]|3[0-8])$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single LDO regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
# 10 bucks
|
||||||
|
"^BUCK([1-9]|10)$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
additionalProperties: false
|
|
@ -0,0 +1,44 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/samsung,s2mps13.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Samsung S2MPS13 Power Management IC regulators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is a part of device tree bindings for S2M and S5M family of Power
|
||||||
|
Management IC (PMIC).
|
||||||
|
|
||||||
|
The S2MPS13 provides buck and LDO regulators.
|
||||||
|
|
||||||
|
See also Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml for
|
||||||
|
additional information and example.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
# 40 LDOs
|
||||||
|
"^LDO([1-9]|[1-3][0-9]|40)$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single LDO regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
# 10 bucks
|
||||||
|
"^BUCK([1-9]|10)$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
additionalProperties: false
|
|
@ -0,0 +1,44 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/samsung,s2mps14.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Samsung S2MPS14 Power Management IC regulators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is a part of device tree bindings for S2M and S5M family of Power
|
||||||
|
Management IC (PMIC).
|
||||||
|
|
||||||
|
The S2MPS14 provides buck and LDO regulators.
|
||||||
|
|
||||||
|
See also Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml for
|
||||||
|
additional information and example.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
# 25 LDOs
|
||||||
|
"^LDO([1-9]|[1][0-9]|2[0-5])$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single LDO regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
# 5 bucks
|
||||||
|
"^BUCK[1-5]$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
additionalProperties: false
|
|
@ -0,0 +1,44 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/samsung,s2mps15.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Samsung S2MPS15 Power Management IC regulators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is a part of device tree bindings for S2M and S5M family of Power
|
||||||
|
Management IC (PMIC).
|
||||||
|
|
||||||
|
The S2MPS15 provides buck and LDO regulators.
|
||||||
|
|
||||||
|
See also Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml for
|
||||||
|
additional information and example.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
# 27 LDOs
|
||||||
|
"^LDO([1-9]|[1][0-9]|2[0-7])$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single LDO regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
# 10 bucks
|
||||||
|
"^BUCK([1-9]|10)$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
additionalProperties: false
|
|
@ -0,0 +1,44 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/samsung,s2mpu02.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Samsung S2MPU02 Power Management IC regulators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is a part of device tree bindings for S2M and S5M family of Power
|
||||||
|
Management IC (PMIC).
|
||||||
|
|
||||||
|
The S2MPU02 provides buck and LDO regulators.
|
||||||
|
|
||||||
|
See also Documentation/devicetree/bindings/mfd/samsung,s2mps11.yaml for
|
||||||
|
additional information and example.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
# 28 LDOs
|
||||||
|
"^LDO([1-9]|1[0-9]|2[0-8])$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single LDO regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
# 7 bucks
|
||||||
|
"^BUCK[1-7]$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
additionalProperties: false
|
|
@ -1,145 +0,0 @@
|
||||||
Binding for Samsung S5M8767 regulator block
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
This is a part of device tree bindings for S5M family multi-function devices.
|
|
||||||
More information can be found in bindings/mfd/sec-core.txt file.
|
|
||||||
|
|
||||||
The S5M8767 device provide buck and LDO regulators.
|
|
||||||
|
|
||||||
To register these with regulator framework instantiate under main device node
|
|
||||||
a sub-node named "regulators" with more sub-nodes for each regulator using the
|
|
||||||
common regulator binding documented in:
|
|
||||||
- Documentation/devicetree/bindings/regulator/regulator.txt
|
|
||||||
|
|
||||||
|
|
||||||
Required properties of the main device node (the parent!):
|
|
||||||
- s5m8767,pmic-buck2-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
|
|
||||||
units for buck2 when changing voltage using gpio dvs. Refer to [1] below
|
|
||||||
for additional information.
|
|
||||||
|
|
||||||
- s5m8767,pmic-buck3-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
|
|
||||||
units for buck3 when changing voltage using gpio dvs. Refer to [1] below
|
|
||||||
for additional information.
|
|
||||||
|
|
||||||
- s5m8767,pmic-buck4-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
|
|
||||||
units for buck4 when changing voltage using gpio dvs. Refer to [1] below
|
|
||||||
for additional information.
|
|
||||||
|
|
||||||
- s5m8767,pmic-buck-ds-gpios: GPIO specifiers for three host gpio's used
|
|
||||||
for selecting GPIO DVS lines. It is one-to-one mapped to dvs gpio lines.
|
|
||||||
|
|
||||||
[1] If none of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional
|
|
||||||
property is specified, the 's5m8767,pmic-buck[2/3/4]-dvs-voltage'
|
|
||||||
property should specify atleast one voltage level (which would be a
|
|
||||||
safe operating voltage).
|
|
||||||
|
|
||||||
If either of the 's5m8767,pmic-buck[2/3/4]-uses-gpio-dvs' optional
|
|
||||||
property is specified, then all the eight voltage values for the
|
|
||||||
's5m8767,pmic-buck[2/3/4]-dvs-voltage' should be specified.
|
|
||||||
|
|
||||||
Optional properties of the main device node (the parent!):
|
|
||||||
- s5m8767,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs.
|
|
||||||
- s5m8767,pmic-buck3-uses-gpio-dvs: 'buck3' can be controlled by gpio dvs.
|
|
||||||
- s5m8767,pmic-buck4-uses-gpio-dvs: 'buck4' can be controlled by gpio dvs.
|
|
||||||
|
|
||||||
Additional properties required if either of the optional properties are used:
|
|
||||||
|
|
||||||
- s5m8767,pmic-buck234-default-dvs-idx: Default voltage setting selected from
|
|
||||||
the possible 8 options selectable by the dvs gpios. The value of this
|
|
||||||
property should be between 0 and 7. If not specified or if out of range, the
|
|
||||||
default value of this property is set to 0.
|
|
||||||
|
|
||||||
- s5m8767,pmic-buck-dvs-gpios: GPIO specifiers for three host gpio's used
|
|
||||||
for dvs. The format of the gpio specifier depends in the gpio controller.
|
|
||||||
|
|
||||||
|
|
||||||
Names of regulators supported by S5M8767 device:
|
|
||||||
- LDOn
|
|
||||||
- valid values for n are 1 to 28
|
|
||||||
- Example: LDO1, LDO2, LDO28
|
|
||||||
- BUCKn
|
|
||||||
- valid values for n are 1 to 9.
|
|
||||||
- Example: BUCK1, BUCK2, BUCK9
|
|
||||||
Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
|
|
||||||
as per the datasheet of device.
|
|
||||||
|
|
||||||
|
|
||||||
Optional properties of the nodes under "regulators" sub-node:
|
|
||||||
- op_mode: describes the different operating modes of the LDO's with
|
|
||||||
power mode change in SOC. The different possible values are,
|
|
||||||
0 - always off mode
|
|
||||||
1 - on in normal mode
|
|
||||||
2 - low power mode
|
|
||||||
3 - suspend mode
|
|
||||||
- s5m8767,pmic-ext-control-gpios: (optional) GPIO specifier for one
|
|
||||||
GPIO controlling this regulator
|
|
||||||
(enable/disable); This is valid only
|
|
||||||
for buck9.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
s5m8767_pmic@66 {
|
|
||||||
compatible = "samsung,s5m8767-pmic";
|
|
||||||
reg = <0x66>;
|
|
||||||
|
|
||||||
s5m8767,pmic-buck2-uses-gpio-dvs;
|
|
||||||
s5m8767,pmic-buck3-uses-gpio-dvs;
|
|
||||||
s5m8767,pmic-buck4-uses-gpio-dvs;
|
|
||||||
|
|
||||||
s5m8767,pmic-buck-default-dvs-idx = <0>;
|
|
||||||
|
|
||||||
s5m8767,pmic-buck-dvs-gpios = <&gpx0 0 0>, /* DVS1 */
|
|
||||||
<&gpx0 1 0>, /* DVS2 */
|
|
||||||
<&gpx0 2 0>; /* DVS3 */
|
|
||||||
|
|
||||||
s5m8767,pmic-buck-ds-gpios = <&gpx2 3 0>, /* SET1 */
|
|
||||||
<&gpx2 4 0>, /* SET2 */
|
|
||||||
<&gpx2 5 0>; /* SET3 */
|
|
||||||
|
|
||||||
s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>,
|
|
||||||
<1250000>, <1200000>,
|
|
||||||
<1150000>, <1100000>,
|
|
||||||
<1000000>, <950000>;
|
|
||||||
|
|
||||||
s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>,
|
|
||||||
<1100000>, <1100000>,
|
|
||||||
<1000000>, <1000000>,
|
|
||||||
<1000000>, <1000000>;
|
|
||||||
|
|
||||||
s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>,
|
|
||||||
<1200000>, <1200000>,
|
|
||||||
<1200000>, <1200000>,
|
|
||||||
<1200000>, <1200000>;
|
|
||||||
|
|
||||||
regulators {
|
|
||||||
ldo1_reg: LDO1 {
|
|
||||||
regulator-name = "VDD_ABB_3.3V";
|
|
||||||
regulator-min-microvolt = <3300000>;
|
|
||||||
regulator-max-microvolt = <3300000>;
|
|
||||||
op_mode = <1>; /* Normal Mode */
|
|
||||||
};
|
|
||||||
|
|
||||||
ldo2_reg: LDO2 {
|
|
||||||
regulator-name = "VDD_ALIVE_1.1V";
|
|
||||||
regulator-min-microvolt = <1100000>;
|
|
||||||
regulator-max-microvolt = <1100000>;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
buck1_reg: BUCK1 {
|
|
||||||
regulator-name = "VDD_MIF_1.2V";
|
|
||||||
regulator-min-microvolt = <950000>;
|
|
||||||
regulator-max-microvolt = <1350000>;
|
|
||||||
regulator-always-on;
|
|
||||||
regulator-boot-on;
|
|
||||||
};
|
|
||||||
|
|
||||||
vemmc_reg: BUCK9 {
|
|
||||||
regulator-name = "VMEM_VDD_2.8V";
|
|
||||||
regulator-min-microvolt = <2800000>;
|
|
||||||
regulator-max-microvolt = <2800000>;
|
|
||||||
op_mode = <3>; /* Standby Mode */
|
|
||||||
s5m8767,pmic-ext-control-gpios = <&gpk0 2 0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/samsung,s5m8767.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Samsung S5M8767 Power Management IC regulators
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||||
|
|
||||||
|
description: |
|
||||||
|
This is a part of device tree bindings for S2M and S5M family of Power
|
||||||
|
Management IC (PMIC).
|
||||||
|
|
||||||
|
The S5M8767 provides buck and LDO regulators.
|
||||||
|
|
||||||
|
See also Documentation/devicetree/bindings/mfd/samsung,s5m8767.yaml for
|
||||||
|
additional information and example.
|
||||||
|
|
||||||
|
patternProperties:
|
||||||
|
# 28 LDOs
|
||||||
|
"^LDO([1-9]|1[0-9]|2[0-8])$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single LDO regulator.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
op_mode:
|
||||||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||||||
|
enum: [0, 1, 2, 3]
|
||||||
|
default: 1
|
||||||
|
description: |
|
||||||
|
Describes the different operating modes of the LDO's with power mode
|
||||||
|
change in SOC. The different possible values are:
|
||||||
|
0 - always off mode
|
||||||
|
1 - on in normal mode
|
||||||
|
2 - low power mode
|
||||||
|
3 - suspend mode
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
# 8 bucks
|
||||||
|
"^BUCK[1-8]$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
# 9 buck
|
||||||
|
"^BUCK9$":
|
||||||
|
type: object
|
||||||
|
$ref: regulator.yaml#
|
||||||
|
unevaluatedProperties: false
|
||||||
|
description:
|
||||||
|
Properties for single BUCK regulator.
|
||||||
|
|
||||||
|
properties:
|
||||||
|
s5m8767,pmic-ext-control-gpios:
|
||||||
|
maxItems: 1
|
||||||
|
description: |
|
||||||
|
GPIO specifier for one GPIO controlling this regulator on/off.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- regulator-name
|
||||||
|
|
||||||
|
additionalProperties: false
|
|
@ -0,0 +1,52 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/regulator/silergy,sy8106a.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Silergy SY8106A Voltage Regulator Device Tree Bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Ondrej Jirman <megous@megous.com>
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: regulator.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: silergy,sy8106a
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
silergy,fixed-microvolt:
|
||||||
|
description: >
|
||||||
|
The voltage when I2C regulating is disabled (set by external resistor
|
||||||
|
like a fixed voltage)
|
||||||
|
|
||||||
|
required:
|
||||||
|
- compatible
|
||||||
|
- reg
|
||||||
|
- silergy,fixed-microvolt
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
i2c {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
regulator@65 {
|
||||||
|
compatible = "silergy,sy8106a";
|
||||||
|
reg = <0x65>;
|
||||||
|
regulator-name = "sy8106a-vdd";
|
||||||
|
silergy,fixed-microvolt = <1200000>;
|
||||||
|
regulator-min-microvolt = <1000000>;
|
||||||
|
regulator-max-microvolt = <1400000>;
|
||||||
|
regulator-boot-on;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
...
|
|
@ -27,6 +27,7 @@ properties:
|
||||||
- socionext,uniphier-pxs2-usb3-regulator
|
- socionext,uniphier-pxs2-usb3-regulator
|
||||||
- socionext,uniphier-ld20-usb3-regulator
|
- socionext,uniphier-ld20-usb3-regulator
|
||||||
- socionext,uniphier-pxs3-usb3-regulator
|
- socionext,uniphier-pxs3-usb3-regulator
|
||||||
|
- socionext,uniphier-nx1-usb3-regulator
|
||||||
|
|
||||||
reg:
|
reg:
|
||||||
maxItems: 1
|
maxItems: 1
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
SY8106A Voltage regulator
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: Must be "silergy,sy8106a"
|
|
||||||
- reg: I2C slave address - must be <0x65>
|
|
||||||
- silergy,fixed-microvolt - the voltage when I2C regulating is disabled (set
|
|
||||||
by external resistor like a fixed voltage)
|
|
||||||
|
|
||||||
Any property defined as part of the core regulator binding, defined in
|
|
||||||
./regulator.txt, can also be used.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
|
|
||||||
sy8106a {
|
|
||||||
compatible = "silergy,sy8106a";
|
|
||||||
reg = <0x65>;
|
|
||||||
regulator-name = "sy8106a-vdd";
|
|
||||||
silergy,fixed-microvolt = <1200000>;
|
|
||||||
regulator-min-microvolt = <1000000>;
|
|
||||||
regulator-max-microvolt = <1400000>;
|
|
||||||
regulator-boot-on;
|
|
||||||
regulator-always-on;
|
|
||||||
};
|
|
|
@ -11,6 +11,14 @@ maintainers:
|
||||||
|
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: spi-controller.yaml#
|
- $ref: spi-controller.yaml#
|
||||||
|
- if:
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
contains:
|
||||||
|
const: xlnx,versal-ospi-1.0
|
||||||
|
then:
|
||||||
|
required:
|
||||||
|
- power-domains
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
compatible:
|
compatible:
|
||||||
|
@ -20,6 +28,7 @@ properties:
|
||||||
- ti,k2g-qspi
|
- ti,k2g-qspi
|
||||||
- ti,am654-ospi
|
- ti,am654-ospi
|
||||||
- intel,lgm-qspi
|
- intel,lgm-qspi
|
||||||
|
- xlnx,versal-ospi-1.0
|
||||||
- const: cdns,qspi-nor
|
- const: cdns,qspi-nor
|
||||||
- const: cdns,qspi-nor
|
- const: cdns,qspi-nor
|
||||||
|
|
||||||
|
@ -65,6 +74,9 @@ properties:
|
||||||
data rather than the QSPI clock. Make sure that QSPI return clock
|
data rather than the QSPI clock. Make sure that QSPI return clock
|
||||||
is populated on the board before using this property.
|
is populated on the board before using this property.
|
||||||
|
|
||||||
|
power-domains:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
resets:
|
resets:
|
||||||
maxItems: 2
|
maxItems: 2
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue