mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-29 17:23:36 +00:00
Merge wireless into wireless-next
Resolve several conflicts, mostly between changes/fixes in wireless and the locking rework in wireless-next. One of the conflicts actually shows a bug in wireless that we'll want to fix separately. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Kalle Valo <kvalo@kernel.org>
This commit is contained in:
commit
7d6904bf26
61
Documentation/ABI/testing/debugfs-driver-qat
Normal file
61
Documentation/ABI/testing/debugfs-driver-qat
Normal file
@ -0,0 +1,61 @@
|
||||
What: /sys/kernel/debug/qat_<device>_<BDF>/qat/fw_counters
|
||||
Date: November 2023
|
||||
KernelVersion: 6.6
|
||||
Contact: qat-linux@intel.com
|
||||
Description: (RO) Read returns the number of requests sent to the FW and the number of responses
|
||||
received from the FW for each Acceleration Engine
|
||||
Reported firmware counters::
|
||||
|
||||
<N>: Number of requests sent from Acceleration Engine N to FW and responses
|
||||
Acceleration Engine N received from FW
|
||||
|
||||
What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/config
|
||||
Date: November 2023
|
||||
KernelVersion: 6.6
|
||||
Contact: qat-linux@intel.com
|
||||
Description: (RW) Read returns value of the Heartbeat update period.
|
||||
Write to the file changes this period value.
|
||||
|
||||
This period should reflect planned polling interval of device
|
||||
health status. High frequency Heartbeat monitoring wastes CPU cycles
|
||||
but minimizes the customer’s system downtime. Also, if there are
|
||||
large service requests that take some time to complete, high frequency
|
||||
Heartbeat monitoring could result in false reports of unresponsiveness
|
||||
and in those cases, period needs to be increased.
|
||||
|
||||
This parameter is effective only for c3xxx, c62x, dh895xcc devices.
|
||||
4xxx has this value internally fixed to 200ms.
|
||||
|
||||
Default value is set to 500. Minimal allowed value is 200.
|
||||
All values are expressed in milliseconds.
|
||||
|
||||
What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/queries_failed
|
||||
Date: November 2023
|
||||
KernelVersion: 6.6
|
||||
Contact: qat-linux@intel.com
|
||||
Description: (RO) Read returns the number of times the device became unresponsive.
|
||||
|
||||
Attribute returns value of the counter which is incremented when
|
||||
status query results negative.
|
||||
|
||||
What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/queries_sent
|
||||
Date: November 2023
|
||||
KernelVersion: 6.6
|
||||
Contact: qat-linux@intel.com
|
||||
Description: (RO) Read returns the number of times the control process checked
|
||||
if the device is responsive.
|
||||
|
||||
Attribute returns value of the counter which is incremented on
|
||||
every status query.
|
||||
|
||||
What: /sys/kernel/debug/qat_<device>_<BDF>/heartbeat/status
|
||||
Date: November 2023
|
||||
KernelVersion: 6.6
|
||||
Contact: qat-linux@intel.com
|
||||
Description: (RO) Read returns the device health status.
|
||||
|
||||
Returns 0 when device is healthy or -1 when is unresponsive
|
||||
or the query failed to send.
|
||||
|
||||
The driver does not monitor for Heartbeat. It is left for a user
|
||||
to poll the status periodically.
|
@ -556,6 +556,7 @@ Description: Control Symmetric Multi Threading (SMT)
|
||||
================ =========================================
|
||||
"on" SMT is enabled
|
||||
"off" SMT is disabled
|
||||
"<N>" SMT is enabled with N threads per core.
|
||||
"forceoff" SMT is force disabled. Cannot be changed.
|
||||
"notsupported" SMT is not supported by the CPU
|
||||
"notimplemented" SMT runtime toggling is not
|
||||
|
@ -85,3 +85,21 @@ Description:
|
||||
Possible values:
|
||||
0: Not enforced
|
||||
1: Enforced
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/bootloader_version
|
||||
Date: June 2023
|
||||
KernelVersion: 6.4
|
||||
Contact: mario.limonciello@amd.com
|
||||
Description:
|
||||
The /sys/bus/pci/devices/<BDF>/bootloader_version
|
||||
file reports the firmware version of the AMD AGESA
|
||||
bootloader.
|
||||
|
||||
What: /sys/bus/pci/devices/<BDF>/tee_version
|
||||
Date: June 2023
|
||||
KernelVersion: 6.4
|
||||
Contact: mario.limonciello@amd.com
|
||||
Description:
|
||||
The /sys/bus/pci/devices/<BDF>/tee_version
|
||||
file reports the firmware version of the AMD Trusted
|
||||
Execution Environment (TEE).
|
||||
|
@ -1,4 +1,5 @@
|
||||
What: /sys/bus/platform/devices/GGL0001:*/BINF.2
|
||||
/sys/bus/platform/devices/GOOG0016:*/BINF.2
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -10,6 +11,7 @@ Description:
|
||||
== ===============================
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/BINF.3
|
||||
/sys/bus/platform/devices/GOOG0016:*/BINF.3
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -23,6 +25,7 @@ Description:
|
||||
== =====================================
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/CHSW
|
||||
/sys/bus/platform/devices/GOOG0016:*/CHSW
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -38,6 +41,7 @@ Description:
|
||||
==== ===========================================
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/FMAP
|
||||
/sys/bus/platform/devices/GOOG0016:*/FMAP
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -45,6 +49,7 @@ Description:
|
||||
processor firmware flashmap.
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/FRID
|
||||
/sys/bus/platform/devices/GOOG0016:*/FRID
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -52,6 +57,7 @@ Description:
|
||||
main processor firmware.
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/FWID
|
||||
/sys/bus/platform/devices/GOOG0016:*/FWID
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -59,6 +65,7 @@ Description:
|
||||
main processor firmware.
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/GPIO.X/GPIO.0
|
||||
/sys/bus/platform/devices/GOOG0016:*/GPIO.X/GPIO.0
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -73,6 +80,7 @@ Description:
|
||||
=========== ==================================
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/GPIO.X/GPIO.1
|
||||
/sys/bus/platform/devices/GOOG0016:*/GPIO.X/GPIO.1
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -84,6 +92,7 @@ Description:
|
||||
== =======================
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/GPIO.X/GPIO.2
|
||||
/sys/bus/platform/devices/GOOG0016:*/GPIO.X/GPIO.2
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -91,18 +100,21 @@ Description:
|
||||
controller.
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/GPIO.X/GPIO.3
|
||||
/sys/bus/platform/devices/GOOG0016:*/GPIO.X/GPIO.3
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
Returns name of the GPIO controller.
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/HWID
|
||||
/sys/bus/platform/devices/GOOG0016:*/HWID
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
Returns hardware ID for the Chromebook.
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/MECK
|
||||
/sys/bus/platform/devices/GOOG0016:*/MECK
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -113,6 +125,7 @@ Description:
|
||||
present, or if the firmware was unable to read the extended registers, this buffer size can be zero.
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/VBNV.0
|
||||
/sys/bus/platform/devices/GOOG0016:*/VBNV.0
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -122,6 +135,7 @@ Description:
|
||||
clock data).
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/VBNV.1
|
||||
/sys/bus/platform/devices/GOOG0016:*/VBNV.1
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
@ -129,9 +143,10 @@ Description:
|
||||
storage block.
|
||||
|
||||
What: /sys/bus/platform/devices/GGL0001:*/VDAT
|
||||
/sys/bus/platform/devices/GOOG0016:*/VDAT
|
||||
Date: May 2022
|
||||
KernelVersion: 5.19
|
||||
Description:
|
||||
Returns the verified boot data block shared between the
|
||||
firmware verification step and the kernel verification step
|
||||
(binary).
|
||||
(hex dump).
|
||||
|
12
Documentation/ABI/testing/sysfs-platform-power-on-reason
Normal file
12
Documentation/ABI/testing/sysfs-platform-power-on-reason
Normal file
@ -0,0 +1,12 @@
|
||||
What: /sys/devices/platform/.../power_on_reason
|
||||
Date: June 2023
|
||||
KernelVersion: 6.5
|
||||
Contact: Kamel Bouhara <kamel.bouhara@bootlin.com>
|
||||
Description: Shows system power on reason. The following strings/reasons can
|
||||
be read (the list can be extended):
|
||||
"regular power-up", "RTC wakeup", "watchdog timeout",
|
||||
"software reset", "reset button action", "CPU clock failure",
|
||||
"crystal oscillator failure", "brown-out reset",
|
||||
"unknown reason".
|
||||
|
||||
The file is read only.
|
@ -10,7 +10,7 @@ misuses of the RCU API, most notably using one of the rcu_dereference()
|
||||
family to access an RCU-protected pointer without the proper protection.
|
||||
When such misuse is detected, an lockdep-RCU splat is emitted.
|
||||
|
||||
The usual cause of a lockdep-RCU slat is someone accessing an
|
||||
The usual cause of a lockdep-RCU splat is someone accessing an
|
||||
RCU-protected data structure without either (1) being in the right kind of
|
||||
RCU read-side critical section or (2) holding the right update-side lock.
|
||||
This problem can therefore be serious: it might result in random memory
|
||||
|
@ -18,7 +18,16 @@ to solve following problem.
|
||||
|
||||
Without 'nulls', a typical RCU linked list managing objects which are
|
||||
allocated with SLAB_TYPESAFE_BY_RCU kmem_cache can use the following
|
||||
algorithms:
|
||||
algorithms. Following examples assume 'obj' is a pointer to such
|
||||
objects, which is having below type.
|
||||
|
||||
::
|
||||
|
||||
struct object {
|
||||
struct hlist_node obj_node;
|
||||
atomic_t refcnt;
|
||||
unsigned int key;
|
||||
};
|
||||
|
||||
1) Lookup algorithm
|
||||
-------------------
|
||||
@ -26,11 +35,13 @@ algorithms:
|
||||
::
|
||||
|
||||
begin:
|
||||
rcu_read_lock()
|
||||
rcu_read_lock();
|
||||
obj = lockless_lookup(key);
|
||||
if (obj) {
|
||||
if (!try_get_ref(obj)) // might fail for free objects
|
||||
if (!try_get_ref(obj)) { // might fail for free objects
|
||||
rcu_read_unlock();
|
||||
goto begin;
|
||||
}
|
||||
/*
|
||||
* Because a writer could delete object, and a writer could
|
||||
* reuse these object before the RCU grace period, we
|
||||
@ -54,7 +65,7 @@ but a version with an additional memory barrier (smp_rmb())
|
||||
struct hlist_node *node, *next;
|
||||
for (pos = rcu_dereference((head)->first);
|
||||
pos && ({ next = pos->next; smp_rmb(); prefetch(next); 1; }) &&
|
||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
|
||||
({ obj = hlist_entry(pos, typeof(*obj), obj_node); 1; });
|
||||
pos = rcu_dereference(next))
|
||||
if (obj->key == key)
|
||||
return obj;
|
||||
@ -66,10 +77,10 @@ And note the traditional hlist_for_each_entry_rcu() misses this smp_rmb()::
|
||||
struct hlist_node *node;
|
||||
for (pos = rcu_dereference((head)->first);
|
||||
pos && ({ prefetch(pos->next); 1; }) &&
|
||||
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });
|
||||
({ obj = hlist_entry(pos, typeof(*obj), obj_node); 1; });
|
||||
pos = rcu_dereference(pos->next))
|
||||
if (obj->key == key)
|
||||
return obj;
|
||||
if (obj->key == key)
|
||||
return obj;
|
||||
return NULL;
|
||||
|
||||
Quoting Corey Minyard::
|
||||
@ -86,7 +97,7 @@ Quoting Corey Minyard::
|
||||
2) Insertion algorithm
|
||||
----------------------
|
||||
|
||||
We need to make sure a reader cannot read the new 'obj->obj_next' value
|
||||
We need to make sure a reader cannot read the new 'obj->obj_node.next' value
|
||||
and previous value of 'obj->key'. Otherwise, an item could be deleted
|
||||
from a chain, and inserted into another chain. If new chain was empty
|
||||
before the move, 'next' pointer is NULL, and lockless reader can not
|
||||
@ -129,8 +140,7 @@ very very fast (before the end of RCU grace period)
|
||||
Avoiding extra smp_rmb()
|
||||
========================
|
||||
|
||||
With hlist_nulls we can avoid extra smp_rmb() in lockless_lookup()
|
||||
and extra _release() in insert function.
|
||||
With hlist_nulls we can avoid extra smp_rmb() in lockless_lookup().
|
||||
|
||||
For example, if we choose to store the slot number as the 'nulls'
|
||||
end-of-list marker for each slot of the hash table, we can detect
|
||||
@ -142,6 +152,9 @@ the beginning. If the object was moved to the same chain,
|
||||
then the reader doesn't care: It might occasionally
|
||||
scan the list again without harm.
|
||||
|
||||
Note that using hlist_nulls means the type of 'obj_node' field of
|
||||
'struct object' becomes 'struct hlist_nulls_node'.
|
||||
|
||||
|
||||
1) lookup algorithm
|
||||
-------------------
|
||||
@ -151,7 +164,7 @@ scan the list again without harm.
|
||||
head = &table[slot];
|
||||
begin:
|
||||
rcu_read_lock();
|
||||
hlist_nulls_for_each_entry_rcu(obj, node, head, member) {
|
||||
hlist_nulls_for_each_entry_rcu(obj, node, head, obj_node) {
|
||||
if (obj->key == key) {
|
||||
if (!try_get_ref(obj)) { // might fail for free objects
|
||||
rcu_read_unlock();
|
||||
@ -182,6 +195,9 @@ scan the list again without harm.
|
||||
2) Insert algorithm
|
||||
-------------------
|
||||
|
||||
Same to the above one, but uses hlist_nulls_add_head_rcu() instead of
|
||||
hlist_add_head_rcu().
|
||||
|
||||
::
|
||||
|
||||
/*
|
||||
|
@ -553,7 +553,7 @@
|
||||
others).
|
||||
|
||||
ccw_timeout_log [S390]
|
||||
See Documentation/s390/common_io.rst for details.
|
||||
See Documentation/arch/s390/common_io.rst for details.
|
||||
|
||||
cgroup_disable= [KNL] Disable a particular controller or optional feature
|
||||
Format: {name of the controller(s) or feature(s) to disable}
|
||||
@ -598,7 +598,7 @@
|
||||
Setting checkreqprot to 1 is deprecated.
|
||||
|
||||
cio_ignore= [S390]
|
||||
See Documentation/s390/common_io.rst for details.
|
||||
See Documentation/arch/s390/common_io.rst for details.
|
||||
|
||||
clearcpuid=X[,X...] [X86]
|
||||
Disable CPUID feature X for the kernel. See
|
||||
@ -2938,6 +2938,10 @@
|
||||
locktorture.torture_type= [KNL]
|
||||
Specify the locking implementation to test.
|
||||
|
||||
locktorture.writer_fifo= [KNL]
|
||||
Run the write-side locktorture kthreads at
|
||||
sched_set_fifo() real-time priority.
|
||||
|
||||
locktorture.verbose= [KNL]
|
||||
Enable additional printk() statements.
|
||||
|
||||
@ -4949,6 +4953,15 @@
|
||||
test until boot completes in order to avoid
|
||||
interference.
|
||||
|
||||
rcuscale.kfree_by_call_rcu= [KNL]
|
||||
In kernels built with CONFIG_RCU_LAZY=y, test
|
||||
call_rcu() instead of kfree_rcu().
|
||||
|
||||
rcuscale.kfree_mult= [KNL]
|
||||
Instead of allocating an object of size kfree_obj,
|
||||
allocate one of kfree_mult * sizeof(kfree_obj).
|
||||
Defaults to 1.
|
||||
|
||||
rcuscale.kfree_rcu_test= [KNL]
|
||||
Set to measure performance of kfree_rcu() flooding.
|
||||
|
||||
@ -4974,6 +4987,12 @@
|
||||
Number of loops doing rcuscale.kfree_alloc_num number
|
||||
of allocations and frees.
|
||||
|
||||
rcuscale.minruntime= [KNL]
|
||||
Set the minimum test run time in seconds. This
|
||||
does not affect the data-collection interval,
|
||||
but instead allows better measurement of things
|
||||
like CPU consumption.
|
||||
|
||||
rcuscale.nreaders= [KNL]
|
||||
Set number of RCU readers. The value -1 selects
|
||||
N, where N is the number of CPUs. A value
|
||||
@ -4988,7 +5007,7 @@
|
||||
the same as for rcuscale.nreaders.
|
||||
N, where N is the number of CPUs
|
||||
|
||||
rcuscale.perf_type= [KNL]
|
||||
rcuscale.scale_type= [KNL]
|
||||
Specify the RCU implementation to test.
|
||||
|
||||
rcuscale.shutdown= [KNL]
|
||||
@ -5004,6 +5023,11 @@
|
||||
in microseconds. The default of zero says
|
||||
no holdoff.
|
||||
|
||||
rcuscale.writer_holdoff_jiffies= [KNL]
|
||||
Additional write-side holdoff between grace
|
||||
periods, but in jiffies. The default of zero
|
||||
says no holdoff.
|
||||
|
||||
rcutorture.fqs_duration= [KNL]
|
||||
Set duration of force_quiescent_state bursts
|
||||
in microseconds.
|
||||
@ -5285,6 +5309,13 @@
|
||||
number avoids disturbing real-time workloads,
|
||||
but lengthens grace periods.
|
||||
|
||||
rcupdate.rcu_task_lazy_lim= [KNL]
|
||||
Number of callbacks on a given CPU that will
|
||||
cancel laziness on that CPU. Use -1 to disable
|
||||
cancellation of laziness, but be advised that
|
||||
doing so increases the danger of OOM due to
|
||||
callback flooding.
|
||||
|
||||
rcupdate.rcu_task_stall_info= [KNL]
|
||||
Set initial timeout in jiffies for RCU task stall
|
||||
informational messages, which give some indication
|
||||
@ -5314,6 +5345,29 @@
|
||||
A change in value does not take effect until
|
||||
the beginning of the next grace period.
|
||||
|
||||
rcupdate.rcu_tasks_lazy_ms= [KNL]
|
||||
Set timeout in milliseconds RCU Tasks asynchronous
|
||||
callback batching for call_rcu_tasks().
|
||||
A negative value will take the default. A value
|
||||
of zero will disable batching. Batching is
|
||||
always disabled for synchronize_rcu_tasks().
|
||||
|
||||
rcupdate.rcu_tasks_rude_lazy_ms= [KNL]
|
||||
Set timeout in milliseconds RCU Tasks
|
||||
Rude asynchronous callback batching for
|
||||
call_rcu_tasks_rude(). A negative value
|
||||
will take the default. A value of zero will
|
||||
disable batching. Batching is always disabled
|
||||
for synchronize_rcu_tasks_rude().
|
||||
|
||||
rcupdate.rcu_tasks_trace_lazy_ms= [KNL]
|
||||
Set timeout in milliseconds RCU Tasks
|
||||
Trace asynchronous callback batching for
|
||||
call_rcu_tasks_trace(). A negative value
|
||||
will take the default. A value of zero will
|
||||
disable batching. Batching is always disabled
|
||||
for synchronize_rcu_tasks_trace().
|
||||
|
||||
rcupdate.rcu_self_test= [KNL]
|
||||
Run the RCU early boot self tests
|
||||
|
||||
@ -5522,6 +5576,10 @@
|
||||
Useful for devices that are detected asynchronously
|
||||
(e.g. USB and MMC devices).
|
||||
|
||||
rootwait= [KNL] Maximum time (in seconds) to wait for root device
|
||||
to show up before attempting to mount the root
|
||||
filesystem.
|
||||
|
||||
rproc_mem=nn[KMG][@address]
|
||||
[KNL,ARM,CMA] Remoteproc physical memory block.
|
||||
Memory area to be used by remote processor image,
|
||||
@ -6275,10 +6333,6 @@
|
||||
-1: disable all critical trip points in all thermal zones
|
||||
<degrees C>: override all critical trip points
|
||||
|
||||
thermal.nocrt= [HW,ACPI]
|
||||
Set to disable actions on ACPI thermal zone
|
||||
critical and hot trip points.
|
||||
|
||||
thermal.off= [HW,ACPI]
|
||||
1: disable ACPI thermal control
|
||||
|
||||
@ -6340,6 +6394,13 @@
|
||||
This will guarantee that all the other pcrs
|
||||
are saved.
|
||||
|
||||
tpm_tis.interrupts= [HW,TPM]
|
||||
Enable interrupts for the MMIO based physical layer
|
||||
for the FIFO interface. By default it is set to false
|
||||
(0). For more information about TPM hardware interfaces
|
||||
defined by Trusted Computing Group (TCG) see
|
||||
https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/
|
||||
|
||||
tp_printk [FTRACE]
|
||||
Have the tracepoints sent to printk as well as the
|
||||
tracing ring buffer. This is useful for early boot up
|
||||
|
@ -63,6 +63,14 @@ stable kernels.
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #1902691 | ARM64_ERRATUM_1902691 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2051678 | ARM64_ERRATUM_2051678 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2077057 | ARM64_ERRATUM_2077057 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2441009 | ARM64_ERRATUM_2441009 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2658417 | ARM64_ERRATUM_2658417 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A53 | #826319 | ARM64_ERRATUM_826319 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A53 | #827319 | ARM64_ERRATUM_827319 |
|
||||
@ -109,14 +117,6 @@ stable kernels.
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A77 | #1508412 | ARM64_ERRATUM_1508412 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2051678 | ARM64_ERRATUM_2051678 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2077057 | ARM64_ERRATUM_2077057 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2441009 | ARM64_ERRATUM_2441009 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A510 | #2658417 | ARM64_ERRATUM_2658417 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A710 | #2119858 | ARM64_ERRATUM_2119858 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| ARM | Cortex-A710 | #2054223 | ARM64_ERRATUM_2054223 |
|
||||
@ -198,6 +198,9 @@ stable kernels.
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Hisilicon | Hip08 SMMU PMCG | #162001800 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Hisilicon | Hip08 SMMU PMCG | #162001900 | N/A |
|
||||
| | Hip09 SMMU PMCG | | |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | Kryo/Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
|
@ -322,7 +322,7 @@ The regset data starts with struct user_za_header, containing:
|
||||
VL is supported.
|
||||
|
||||
* The size and layout of the payload depends on the header fields. The
|
||||
SME_PT_ZA_*() macros are provided to facilitate access to the data.
|
||||
ZA_PT_ZA*() macros are provided to facilitate access to the data.
|
||||
|
||||
* In either case, for SETREGSET it is permissible to omit the payload, in which
|
||||
case the vector length and flags are changed and PSTATE.ZA is set to 0
|
||||
|
@ -21,7 +21,7 @@ implementation.
|
||||
parisc/index
|
||||
../powerpc/index
|
||||
../riscv/index
|
||||
../s390/index
|
||||
s390/index
|
||||
sh/index
|
||||
sparc/index
|
||||
x86/index
|
||||
|
@ -116,7 +116,7 @@ Here are the installation steps in detail:
|
||||
as a 3270, not a 3215.
|
||||
|
||||
5. Run the 3270 configuration script config3270. It is
|
||||
distributed in this same directory, Documentation/s390, as
|
||||
distributed in this same directory, Documentation/arch/s390, as
|
||||
config3270.sh. Inspect the output script it produces,
|
||||
/tmp/mkdev3270, and then run that script. This will create the
|
||||
necessary character special device files and make the necessary
|
||||
@ -125,7 +125,7 @@ Here are the installation steps in detail:
|
||||
Then notify /sbin/init that /etc/inittab has changed, by issuing
|
||||
the telinit command with the q operand::
|
||||
|
||||
cd Documentation/s390
|
||||
cd Documentation/arch/s390
|
||||
sh config3270.sh
|
||||
sh /tmp/mkdev3270
|
||||
telinit q
|
@ -39,7 +39,7 @@ some of them are ESA/390 platform specific.
|
||||
|
||||
Note:
|
||||
In order to write a driver for S/390, you also need to look into the interface
|
||||
described in Documentation/s390/driver-model.rst.
|
||||
described in Documentation/arch/s390/driver-model.rst.
|
||||
|
||||
Note for porting drivers from 2.4:
|
||||
|
@ -136,5 +136,5 @@ debugfs entries
|
||||
|
||||
The level of logging can be changed to be more or less verbose by piping to
|
||||
/sys/kernel/debug/s390dbf/cio_*/level a number between 0 and 6; see the
|
||||
documentation on the S/390 debug feature (Documentation/s390/s390dbf.rst)
|
||||
documentation on the S/390 debug feature (Documentation/arch/s390/s390dbf.rst)
|
||||
for details.
|
@ -40,7 +40,7 @@ For example:
|
||||
Change the level of logging to be more or less verbose by piping
|
||||
a number between 0 and 6 to /sys/kernel/debug/s390dbf/pci_*/level. For
|
||||
details, see the documentation on the S/390 debug feature at
|
||||
Documentation/s390/s390dbf.rst.
|
||||
Documentation/arch/s390/s390dbf.rst.
|
||||
|
||||
Sysfs entries
|
||||
=============
|
@ -440,6 +440,6 @@ Reference
|
||||
1. ESA/s390 Principles of Operation manual (IBM Form. No. SA22-7832)
|
||||
2. ESA/390 Common I/O Device Commands manual (IBM Form. No. SA22-7204)
|
||||
3. https://en.wikipedia.org/wiki/Channel_I/O
|
||||
4. Documentation/s390/cds.rst
|
||||
4. Documentation/arch/s390/cds.rst
|
||||
5. Documentation/driver-api/vfio.rst
|
||||
6. Documentation/driver-api/vfio-mediated-device.rst
|
@ -1417,7 +1417,7 @@ execution context provided by the EFI firmware.
|
||||
|
||||
The function prototype for the handover entry point looks like this::
|
||||
|
||||
efi_main(void *handle, efi_system_table_t *table, struct boot_params *bp)
|
||||
efi_stub_entry(void *handle, efi_system_table_t *table, struct boot_params *bp)
|
||||
|
||||
'handle' is the EFI image handle passed to the boot loader by the EFI
|
||||
firmware, 'table' is the EFI system table - these are the first two
|
||||
|
@ -395,8 +395,8 @@ multi-instance state the following function is available:
|
||||
* cpuhp_setup_state_multi(state, name, startup, teardown)
|
||||
|
||||
The @state argument is either a statically allocated state or one of the
|
||||
constants for dynamically allocated states - CPUHP_PREPARE_DYN,
|
||||
CPUHP_ONLINE_DYN - depending on the state section (PREPARE, ONLINE) for
|
||||
constants for dynamically allocated states - CPUHP_BP_PREPARE_DYN,
|
||||
CPUHP_AP_ONLINE_DYN - depending on the state section (PREPARE, ONLINE) for
|
||||
which a dynamic state should be allocated.
|
||||
|
||||
The @name argument is used for sysfs output and for instrumentation. The
|
||||
@ -588,7 +588,7 @@ notifications on online and offline operations::
|
||||
Setup and teardown a dynamically allocated state in the ONLINE section
|
||||
for notifications on offline operations::
|
||||
|
||||
state = cpuhp_setup_state(CPUHP_ONLINE_DYN, "subsys:offline", NULL, subsys_cpu_offline);
|
||||
state = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "subsys:offline", NULL, subsys_cpu_offline);
|
||||
if (state < 0)
|
||||
return state;
|
||||
....
|
||||
@ -597,7 +597,7 @@ for notifications on offline operations::
|
||||
Setup and teardown a dynamically allocated state in the ONLINE section
|
||||
for notifications on online operations without invoking the callbacks::
|
||||
|
||||
state = cpuhp_setup_state_nocalls(CPUHP_ONLINE_DYN, "subsys:online", subsys_cpu_online, NULL);
|
||||
state = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "subsys:online", subsys_cpu_online, NULL);
|
||||
if (state < 0)
|
||||
return state;
|
||||
....
|
||||
@ -606,7 +606,7 @@ for notifications on online operations without invoking the callbacks::
|
||||
Setup, use and teardown a dynamically allocated multi-instance state in the
|
||||
ONLINE section for notifications on online and offline operation::
|
||||
|
||||
state = cpuhp_setup_state_multi(CPUHP_ONLINE_DYN, "subsys:online", subsys_cpu_online, subsys_cpu_offline);
|
||||
state = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, "subsys:online", subsys_cpu_online, subsys_cpu_offline);
|
||||
if (state < 0)
|
||||
return state;
|
||||
....
|
||||
|
@ -67,10 +67,11 @@ Globals
|
||||
kernel-policy
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Defines if the kernel validation policy is per operation (``per-op``)
|
||||
or for the entire family (``global``). New families should use ``per-op``
|
||||
(default) to be able to narrow down the attributes accepted by a specific
|
||||
command.
|
||||
Defines whether the kernel validation policy is ``global`` i.e. the same for all
|
||||
operations of the family, defined for each operation individually - ``per-op``,
|
||||
or separately for each operation and operation type (do vs dump) - ``split``.
|
||||
New families should use ``per-op`` (default) to be able to narrow down the
|
||||
attributes accepted by a specific command.
|
||||
|
||||
checks
|
||||
------
|
||||
|
@ -321,3 +321,15 @@ command line arguments:
|
||||
|
||||
- ``--json``: If set, stores the test results in a JSON format and prints to `stdout` or
|
||||
saves to a file if a filename is specified.
|
||||
|
||||
- ``--filter``: Specifies filters on test attributes, for example, ``speed!=slow``.
|
||||
Multiple filters can be used by wrapping input in quotes and separating filters
|
||||
by commas. Example: ``--filter "speed>slow, module=example"``.
|
||||
|
||||
- ``--filter_action``: If set to ``skip``, filtered tests will be shown as skipped
|
||||
in the output rather than showing no output.
|
||||
|
||||
- ``--list_tests``: If set, lists all tests that will be run.
|
||||
|
||||
- ``--list_tests_attr``: If set, lists all tests that will be run and all of their
|
||||
attributes.
|
||||
|
@ -262,3 +262,169 @@ other code executed during boot, e.g.
|
||||
# Reset coverage counters before running the test.
|
||||
$ echo 0 > /sys/kernel/debug/gcov/reset
|
||||
$ modprobe kunit-example-test
|
||||
|
||||
|
||||
Test Attributes and Filtering
|
||||
=============================
|
||||
|
||||
Test suites and cases can be marked with test attributes, such as speed of
|
||||
test. These attributes will later be printed in test output and can be used to
|
||||
filter test execution.
|
||||
|
||||
Marking Test Attributes
|
||||
-----------------------
|
||||
|
||||
Tests are marked with an attribute by including a ``kunit_attributes`` object
|
||||
in the test definition.
|
||||
|
||||
Test cases can be marked using the ``KUNIT_CASE_ATTR(test_name, attributes)``
|
||||
macro to define the test case instead of ``KUNIT_CASE(test_name)``.
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
static const struct kunit_attributes example_attr = {
|
||||
.speed = KUNIT_VERY_SLOW,
|
||||
};
|
||||
|
||||
static struct kunit_case example_test_cases[] = {
|
||||
KUNIT_CASE_ATTR(example_test, example_attr),
|
||||
};
|
||||
|
||||
.. note::
|
||||
To mark a test case as slow, you can also use ``KUNIT_CASE_SLOW(test_name)``.
|
||||
This is a helpful macro as the slow attribute is the most commonly used.
|
||||
|
||||
Test suites can be marked with an attribute by setting the "attr" field in the
|
||||
suite definition.
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
static const struct kunit_attributes example_attr = {
|
||||
.speed = KUNIT_VERY_SLOW,
|
||||
};
|
||||
|
||||
static struct kunit_suite example_test_suite = {
|
||||
...,
|
||||
.attr = example_attr,
|
||||
};
|
||||
|
||||
.. note::
|
||||
Not all attributes need to be set in a ``kunit_attributes`` object. Unset
|
||||
attributes will remain uninitialized and act as though the attribute is set
|
||||
to 0 or NULL. Thus, if an attribute is set to 0, it is treated as unset.
|
||||
These unset attributes will not be reported and may act as a default value
|
||||
for filtering purposes.
|
||||
|
||||
Reporting Attributes
|
||||
--------------------
|
||||
|
||||
When a user runs tests, attributes will be present in the raw kernel output (in
|
||||
KTAP format). Note that attributes will be hidden by default in kunit.py output
|
||||
for all passing tests but the raw kernel output can be accessed using the
|
||||
``--raw_output`` flag. This is an example of how test attributes for test cases
|
||||
will be formatted in kernel output:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
# example_test.speed: slow
|
||||
ok 1 example_test
|
||||
|
||||
This is an example of how test attributes for test suites will be formatted in
|
||||
kernel output:
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
KTAP version 2
|
||||
# Subtest: example_suite
|
||||
# module: kunit_example_test
|
||||
1..3
|
||||
...
|
||||
ok 1 example_suite
|
||||
|
||||
Additionally, users can output a full attribute report of tests with their
|
||||
attributes, using the command line flag ``--list_tests_attr``:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
kunit.py run "example" --list_tests_attr
|
||||
|
||||
.. note::
|
||||
This report can be accessed when running KUnit manually by passing in the
|
||||
module_param ``kunit.action=list_attr``.
|
||||
|
||||
Filtering
|
||||
---------
|
||||
|
||||
Users can filter tests using the ``--filter`` command line flag when running
|
||||
tests. As an example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
kunit.py run --filter speed=slow
|
||||
|
||||
|
||||
You can also use the following operations on filters: "<", ">", "<=", ">=",
|
||||
"!=", and "=". Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
kunit.py run --filter "speed>slow"
|
||||
|
||||
This example will run all tests with speeds faster than slow. Note that the
|
||||
characters < and > are often interpreted by the shell, so they may need to be
|
||||
quoted or escaped, as above.
|
||||
|
||||
Additionally, you can use multiple filters at once. Simply separate filters
|
||||
using commas. Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
kunit.py run --filter "speed>slow, module=kunit_example_test"
|
||||
|
||||
.. note::
|
||||
You can use this filtering feature when running KUnit manually by passing
|
||||
the filter as a module param: ``kunit.filter="speed>slow, speed<=normal"``.
|
||||
|
||||
Filtered tests will not run or show up in the test output. You can use the
|
||||
``--filter_action=skip`` flag to skip filtered tests instead. These tests will be
|
||||
shown in the test output in the test but will not run. To use this feature when
|
||||
running KUnit manually, use the module param ``kunit.filter_action=skip``.
|
||||
|
||||
Rules of Filtering Procedure
|
||||
----------------------------
|
||||
|
||||
Since both suites and test cases can have attributes, there may be conflicts
|
||||
between attributes during filtering. The process of filtering follows these
|
||||
rules:
|
||||
|
||||
- Filtering always operates at a per-test level.
|
||||
|
||||
- If a test has an attribute set, then the test's value is filtered on.
|
||||
|
||||
- Otherwise, the value falls back to the suite's value.
|
||||
|
||||
- If neither are set, the attribute has a global "default" value, which is used.
|
||||
|
||||
List of Current Attributes
|
||||
--------------------------
|
||||
|
||||
``speed``
|
||||
|
||||
This attribute indicates the speed of a test's execution (how slow or fast the
|
||||
test is).
|
||||
|
||||
This attribute is saved as an enum with the following categories: "normal",
|
||||
"slow", or "very_slow". The assumed default speed for tests is "normal". This
|
||||
indicates that the test takes a relatively trivial amount of time (less than
|
||||
1 second), regardless of the machine it is running on. Any test slower than
|
||||
this could be marked as "slow" or "very_slow".
|
||||
|
||||
The macro ``KUNIT_CASE_SLOW(test_name)`` can be easily used to set the speed
|
||||
of a test case to "slow".
|
||||
|
||||
``module``
|
||||
|
||||
This attribute indicates the name of the module associated with the test.
|
||||
|
||||
This attribute is automatically saved as a string and is printed for each suite.
|
||||
Tests can also be filtered using this attribute.
|
||||
|
@ -49,9 +49,14 @@ properties:
|
||||
- arm,cortex-a77-pmu
|
||||
- arm,cortex-a78-pmu
|
||||
- arm,cortex-a510-pmu
|
||||
- arm,cortex-a520-pmu
|
||||
- arm,cortex-a710-pmu
|
||||
- arm,cortex-a715-pmu
|
||||
- arm,cortex-a720-pmu
|
||||
- arm,cortex-x1-pmu
|
||||
- arm,cortex-x2-pmu
|
||||
- arm,cortex-x3-pmu
|
||||
- arm,cortex-x4-pmu
|
||||
- arm,neoverse-e1-pmu
|
||||
- arm,neoverse-n1-pmu
|
||||
- arm,neoverse-n2-pmu
|
||||
|
@ -49,6 +49,7 @@ properties:
|
||||
- description: Frequency domain 0 register region
|
||||
- description: Frequency domain 1 register region
|
||||
- description: Frequency domain 2 register region
|
||||
- description: Frequency domain 3 register region
|
||||
|
||||
reg-names:
|
||||
minItems: 1
|
||||
@ -56,6 +57,7 @@ properties:
|
||||
- const: freq-domain0
|
||||
- const: freq-domain1
|
||||
- const: freq-domain2
|
||||
- const: freq-domain3
|
||||
|
||||
clocks:
|
||||
items:
|
||||
@ -69,7 +71,7 @@ properties:
|
||||
|
||||
interrupts:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
maxItems: 4
|
||||
|
||||
interrupt-names:
|
||||
minItems: 1
|
||||
@ -77,6 +79,7 @@ properties:
|
||||
- const: dcvsh-irq-0
|
||||
- const: dcvsh-irq-1
|
||||
- const: dcvsh-irq-2
|
||||
- const: dcvsh-irq-3
|
||||
|
||||
'#freq-domain-cells':
|
||||
const: 1
|
||||
|
@ -1,132 +0,0 @@
|
||||
TI CPUFreq and OPP bindings
|
||||
================================
|
||||
|
||||
Certain TI SoCs, like those in the am335x, am437x, am57xx, and dra7xx
|
||||
families support different OPPs depending on the silicon variant in use.
|
||||
The ti-cpufreq driver can use revision and an efuse value from the SoC to
|
||||
provide the OPP framework with supported hardware information. This is
|
||||
used to determine which OPPs from the operating-points-v2 table get enabled
|
||||
when it is parsed by the OPP framework.
|
||||
|
||||
Required properties:
|
||||
--------------------
|
||||
In 'cpus' nodes:
|
||||
- operating-points-v2: Phandle to the operating-points-v2 table to use.
|
||||
|
||||
In 'operating-points-v2' table:
|
||||
- compatible: Should be
|
||||
- 'operating-points-v2-ti-cpu' for am335x, am43xx, and dra7xx/am57xx,
|
||||
omap34xx, omap36xx and am3517 SoCs
|
||||
- syscon: A phandle pointing to a syscon node representing the control module
|
||||
register space of the SoC.
|
||||
|
||||
Optional properties:
|
||||
--------------------
|
||||
- "vdd-supply", "vbb-supply": to define two regulators for dra7xx
|
||||
- "cpu0-supply", "vbb-supply": to define two regulators for omap36xx
|
||||
|
||||
For each opp entry in 'operating-points-v2' table:
|
||||
- opp-supported-hw: Two bitfields indicating:
|
||||
1. Which revision of the SoC the OPP is supported by
|
||||
2. Which eFuse bits indicate this OPP is available
|
||||
|
||||
A bitwise AND is performed against these values and if any bit
|
||||
matches, the OPP gets enabled.
|
||||
|
||||
Example:
|
||||
--------
|
||||
|
||||
/* From arch/arm/boot/dts/am33xx.dtsi */
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
cpu@0 {
|
||||
compatible = "arm,cortex-a8";
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
|
||||
operating-points-v2 = <&cpu0_opp_table>;
|
||||
|
||||
clocks = <&dpll_mpu_ck>;
|
||||
clock-names = "cpu";
|
||||
|
||||
clock-latency = <300000>; /* From omap-cpufreq driver */
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* cpu0 has different OPPs depending on SoC revision and some on revisions
|
||||
* 0x2 and 0x4 have eFuse bits that indicate if they are available or not
|
||||
*/
|
||||
cpu0_opp_table: opp-table {
|
||||
compatible = "operating-points-v2-ti-cpu";
|
||||
syscon = <&scm_conf>;
|
||||
|
||||
/*
|
||||
* The three following nodes are marked with opp-suspend
|
||||
* because they can not be enabled simultaneously on a
|
||||
* single SoC.
|
||||
*/
|
||||
opp50-300000000 {
|
||||
opp-hz = /bits/ 64 <300000000>;
|
||||
opp-microvolt = <950000 931000 969000>;
|
||||
opp-supported-hw = <0x06 0x0010>;
|
||||
opp-suspend;
|
||||
};
|
||||
|
||||
opp100-275000000 {
|
||||
opp-hz = /bits/ 64 <275000000>;
|
||||
opp-microvolt = <1100000 1078000 1122000>;
|
||||
opp-supported-hw = <0x01 0x00FF>;
|
||||
opp-suspend;
|
||||
};
|
||||
|
||||
opp100-300000000 {
|
||||
opp-hz = /bits/ 64 <300000000>;
|
||||
opp-microvolt = <1100000 1078000 1122000>;
|
||||
opp-supported-hw = <0x06 0x0020>;
|
||||
opp-suspend;
|
||||
};
|
||||
|
||||
opp100-500000000 {
|
||||
opp-hz = /bits/ 64 <500000000>;
|
||||
opp-microvolt = <1100000 1078000 1122000>;
|
||||
opp-supported-hw = <0x01 0xFFFF>;
|
||||
};
|
||||
|
||||
opp100-600000000 {
|
||||
opp-hz = /bits/ 64 <600000000>;
|
||||
opp-microvolt = <1100000 1078000 1122000>;
|
||||
opp-supported-hw = <0x06 0x0040>;
|
||||
};
|
||||
|
||||
opp120-600000000 {
|
||||
opp-hz = /bits/ 64 <600000000>;
|
||||
opp-microvolt = <1200000 1176000 1224000>;
|
||||
opp-supported-hw = <0x01 0xFFFF>;
|
||||
};
|
||||
|
||||
opp120-720000000 {
|
||||
opp-hz = /bits/ 64 <720000000>;
|
||||
opp-microvolt = <1200000 1176000 1224000>;
|
||||
opp-supported-hw = <0x06 0x0080>;
|
||||
};
|
||||
|
||||
oppturbo-720000000 {
|
||||
opp-hz = /bits/ 64 <720000000>;
|
||||
opp-microvolt = <1260000 1234800 1285200>;
|
||||
opp-supported-hw = <0x01 0xFFFF>;
|
||||
};
|
||||
|
||||
oppturbo-800000000 {
|
||||
opp-hz = /bits/ 64 <800000000>;
|
||||
opp-microvolt = <1260000 1234800 1285200>;
|
||||
opp-supported-hw = <0x06 0x0100>;
|
||||
};
|
||||
|
||||
oppnitro-1000000000 {
|
||||
opp-hz = /bits/ 64 <1000000000>;
|
||||
opp-microvolt = <1325000 1298500 1351500>;
|
||||
opp-supported-hw = <0x04 0x0200>;
|
||||
};
|
||||
};
|
@ -20,6 +20,7 @@ properties:
|
||||
- stericsson,ux500-hash
|
||||
- st,stm32f456-hash
|
||||
- st,stm32f756-hash
|
||||
- st,stm32mp13-hash
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
51
Documentation/devicetree/bindings/gpio/adi,ds4520-gpio.yaml
Normal file
51
Documentation/devicetree/bindings/gpio/adi,ds4520-gpio.yaml
Normal file
@ -0,0 +1,51 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/gpio/adi,ds4520-gpio.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: DS4520 I2C GPIO expander
|
||||
|
||||
maintainers:
|
||||
- Okan Sahin <okan.sahin@analog.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- adi,ds4520-gpio
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
|
||||
ngpios:
|
||||
minimum: 1
|
||||
maximum: 9
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
- ngpios
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
gpio@50 {
|
||||
compatible = "adi,ds4520-gpio";
|
||||
reg = <0x50>;
|
||||
ngpios = <9>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
};
|
@ -1,52 +0,0 @@
|
||||
Broadcom Kona Family GPIO
|
||||
=========================
|
||||
|
||||
This GPIO driver is used in the following Broadcom SoCs:
|
||||
BCM11130, BCM11140, BCM11351, BCM28145, BCM28155
|
||||
|
||||
The Broadcom GPIO Controller IP can be configured prior to synthesis to
|
||||
support up to 8 banks of 32 GPIOs where each bank has its own IRQ. The
|
||||
GPIO controller only supports edge, not level, triggering of interrupts.
|
||||
|
||||
Required properties
|
||||
-------------------
|
||||
|
||||
- compatible: "brcm,bcm11351-gpio", "brcm,kona-gpio"
|
||||
- reg: Physical base address and length of the controller's registers.
|
||||
- interrupts: The interrupt outputs from the controller. There is one GPIO
|
||||
interrupt per GPIO bank. The number of interrupts listed depends on the
|
||||
number of GPIO banks on the SoC. The interrupts must be ordered by bank,
|
||||
starting with bank 0. There is always a 1:1 mapping between banks and
|
||||
IRQs.
|
||||
- #gpio-cells: Should be <2>. The first cell is the pin number, the second
|
||||
cell is used to specify optional parameters:
|
||||
- bit 0 specifies polarity (0 for normal, 1 for inverted)
|
||||
See also "gpio-specifier" in .../devicetree/bindings/gpio/gpio.txt.
|
||||
- #interrupt-cells: Should be <2>. The first cell is the GPIO number. The
|
||||
second cell is used to specify flags. The following subset of flags is
|
||||
supported:
|
||||
- trigger type (bits[1:0]):
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
3 = low-to-high or high-to-low edge triggered
|
||||
Valid values are 1, 2, 3
|
||||
See also .../devicetree/bindings/interrupt-controller/interrupts.txt.
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
|
||||
Example:
|
||||
gpio: gpio@35003000 {
|
||||
compatible = "brcm,bcm11351-gpio", "brcm,kona-gpio";
|
||||
reg = <0x35003000 0x800>;
|
||||
interrupts =
|
||||
<GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH
|
||||
GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
};
|
100
Documentation/devicetree/bindings/gpio/brcm,kona-gpio.yaml
Normal file
100
Documentation/devicetree/bindings/gpio/brcm,kona-gpio.yaml
Normal file
@ -0,0 +1,100 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/gpio/brcm,kona-gpio.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom Kona family GPIO controller
|
||||
|
||||
description:
|
||||
The Broadcom GPIO Controller IP can be configured prior to synthesis to
|
||||
support up to 8 banks of 32 GPIOs where each bank has its own IRQ. The
|
||||
GPIO controller only supports edge, not level, triggering of interrupts.
|
||||
|
||||
maintainers:
|
||||
- Ray Jui <rjui@broadcom.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- brcm,bcm11351-gpio
|
||||
- brcm,bcm21664-gpio
|
||||
- brcm,bcm23550-gpio
|
||||
- const: brcm,kona-gpio
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
minItems: 4
|
||||
maxItems: 6
|
||||
description:
|
||||
The interrupt outputs from the controller. There is one GPIO interrupt
|
||||
per GPIO bank. The number of interrupts listed depends on the number of
|
||||
GPIO banks on the SoC. The interrupts must be ordered by bank, starting
|
||||
with bank 0. There is always a 1:1 mapping between banks and IRQs.
|
||||
|
||||
'#gpio-cells':
|
||||
const: 2
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 2
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- '#gpio-cells'
|
||||
- '#interrupt-cells'
|
||||
- gpio-controller
|
||||
- interrupt-controller
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: brcm,bcm11351-gpio
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 6
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- brcm,bcm21664-gpio
|
||||
- brcm,bcm23550-gpio
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
maxItems: 4
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
gpio@35003000 {
|
||||
compatible = "brcm,bcm11351-gpio", "brcm,kona-gpio";
|
||||
reg = <0x35003000 0x800>;
|
||||
interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
};
|
||||
...
|
@ -32,10 +32,12 @@ properties:
|
||||
- fsl,imx6sx-gpio
|
||||
- fsl,imx6ul-gpio
|
||||
- fsl,imx7d-gpio
|
||||
- fsl,imx8dxl-gpio
|
||||
- fsl,imx8mm-gpio
|
||||
- fsl,imx8mn-gpio
|
||||
- fsl,imx8mp-gpio
|
||||
- fsl,imx8mq-gpio
|
||||
- fsl,imx8qm-gpio
|
||||
- fsl,imx8qxp-gpio
|
||||
- fsl,imxrt1050-gpio
|
||||
- fsl,imxrt1170-gpio
|
||||
|
@ -66,6 +66,7 @@ properties:
|
||||
- ti,tca6408
|
||||
- ti,tca6416
|
||||
- ti,tca6424
|
||||
- ti,tca9538
|
||||
- ti,tca9539
|
||||
- ti,tca9554
|
||||
|
||||
|
@ -61,6 +61,10 @@ patternProperties:
|
||||
'#gpio-cells':
|
||||
const: 2
|
||||
|
||||
gpio-line-names:
|
||||
minItems: 1
|
||||
maxItems: 32
|
||||
|
||||
ngpios:
|
||||
default: 32
|
||||
minimum: 1
|
||||
|
@ -28,6 +28,10 @@ properties:
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
gpio-line-names:
|
||||
minItems: 1
|
||||
maxItems: 24
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
st,norequest-mask:
|
||||
|
@ -35,6 +35,7 @@ properties:
|
||||
- amlogic,meson-sm1-gpio-intc
|
||||
- amlogic,meson-a1-gpio-intc
|
||||
- amlogic,meson-s4-gpio-intc
|
||||
- amlogic,c3-gpio-intc
|
||||
- const: amlogic,meson-gpio-intc
|
||||
|
||||
reg:
|
||||
|
@ -160,6 +160,12 @@ properties:
|
||||
description:
|
||||
The MIO bank number in which the command and data lines are configured.
|
||||
|
||||
iommus:
|
||||
maxItems: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
dependencies:
|
||||
'#clock-cells': [ clock-output-names ]
|
||||
|
||||
|
@ -269,7 +269,7 @@ properties:
|
||||
post-power-on-delay-ms:
|
||||
description:
|
||||
It was invented for MMC pwrseq-simple which could be referred to
|
||||
mmc-pwrseq-simple.txt. But now it\'s reused as a tunable delay
|
||||
mmc-pwrseq-simple.yaml. But now it\'s reused as a tunable delay
|
||||
waiting for I/O signalling and card power supply to be stable,
|
||||
regardless of whether pwrseq-simple is used. Default to 10ms if
|
||||
no available.
|
||||
|
@ -91,16 +91,6 @@ properties:
|
||||
should switch dat1 pin to GPIO mode.
|
||||
maxItems: 1
|
||||
|
||||
assigned-clocks:
|
||||
description:
|
||||
PLL of the source clock.
|
||||
maxItems: 1
|
||||
|
||||
assigned-clock-parents:
|
||||
description:
|
||||
parent of source clock, used for HS400 mode to get 400Mhz source clock.
|
||||
maxItems: 1
|
||||
|
||||
hs400-ds-delay:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description:
|
||||
|
@ -5,11 +5,13 @@ Documentation/devicetree/bindings/mmc/mmc.txt and the properties used by the
|
||||
sdhci-of-at91 driver.
|
||||
|
||||
Required properties:
|
||||
- compatible: Must be "atmel,sama5d2-sdhci" or "microchip,sam9x60-sdhci".
|
||||
- compatible: Must be "atmel,sama5d2-sdhci" or "microchip,sam9x60-sdhci"
|
||||
or "microchip,sam9x7-sdhci", "microchip,sam9x60-sdhci".
|
||||
- clocks: Phandlers to the clocks.
|
||||
- clock-names: Must be "hclock", "multclk", "baseclk" for
|
||||
"atmel,sama5d2-sdhci".
|
||||
Must be "hclock", "multclk" for "microchip,sam9x60-sdhci".
|
||||
Must be "hclock", "multclk" for "microchip,sam9x7-sdhci".
|
||||
|
||||
Optional properties:
|
||||
- assigned-clocks: The same with "multclk".
|
||||
|
@ -20,7 +20,7 @@ which is at a different MDIO base address in different switch families.
|
||||
6171, 6172, 6175, 6176, 6185, 6240, 6320, 6321,
|
||||
6341, 6350, 6351, 6352
|
||||
- "marvell,mv88e6190" : Switch has base address 0x00. Use with models:
|
||||
6163, 6190, 6190X, 6191, 6290, 6390, 6390X
|
||||
6190, 6190X, 6191, 6290, 6361, 6390, 6390X
|
||||
- "marvell,mv88e6250" : Switch has base address 0x08 or 0x18. Use with model:
|
||||
6220, 6250
|
||||
|
||||
|
45
Documentation/devicetree/bindings/net/ti,icss-iep.yaml
Normal file
45
Documentation/devicetree/bindings/net/ti,icss-iep.yaml
Normal file
@ -0,0 +1,45 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/net/ti,icss-iep.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Texas Instruments ICSS Industrial Ethernet Peripheral (IEP) module
|
||||
|
||||
maintainers:
|
||||
- Md Danish Anwar <danishanwar@ti.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- ti,am642-icss-iep
|
||||
- ti,j721e-icss-iep
|
||||
- const: ti,am654-icss-iep
|
||||
|
||||
- const: ti,am654-icss-iep
|
||||
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
description: phandle to the IEP source clock
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
/* AM65x */
|
||||
icssg0_iep0: iep@2e000 {
|
||||
compatible = "ti,am654-icss-iep";
|
||||
reg = <0x2e000 0x1000>;
|
||||
clocks = <&icssg0_iepclk_mux>;
|
||||
};
|
@ -52,6 +52,14 @@ properties:
|
||||
description:
|
||||
phandle to MII_RT module's syscon regmap
|
||||
|
||||
ti,iep:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
maxItems: 2
|
||||
items:
|
||||
maxItems: 1
|
||||
description:
|
||||
phandle to IEP (Industrial Ethernet Peripheral) for ICSSG
|
||||
|
||||
interrupts:
|
||||
maxItems: 2
|
||||
description:
|
||||
@ -155,6 +163,7 @@ examples:
|
||||
"tx1-0", "tx1-1", "tx1-2", "tx1-3",
|
||||
"rx0", "rx1";
|
||||
ti,mii-g-rt = <&icssg2_mii_g_rt>;
|
||||
ti,iep = <&icssg2_iep0>, <&icssg2_iep1>;
|
||||
interrupt-parent = <&icssg2_intc>;
|
||||
interrupts = <24 0 2>, <25 1 3>;
|
||||
interrupt-names = "tx_ts0", "tx_ts1";
|
||||
|
@ -1,35 +0,0 @@
|
||||
XILINX GMIITORGMII Converter Driver Device Tree Bindings
|
||||
--------------------------------------------------------
|
||||
|
||||
The Gigabit Media Independent Interface (GMII) to Reduced Gigabit Media
|
||||
Independent Interface (RGMII) core provides the RGMII between RGMII-compliant
|
||||
Ethernet physical media devices (PHY) and the Gigabit Ethernet controller.
|
||||
This core can be used in all three modes of operation(10/100/1000 Mb/s).
|
||||
The Management Data Input/Output (MDIO) interface is used to configure the
|
||||
Speed of operation. This core can switch dynamically between the three
|
||||
Different speed modes by configuring the conveter register through mdio write.
|
||||
|
||||
This converter sits between the ethernet MAC and the external phy.
|
||||
MAC <==> GMII2RGMII <==> RGMII_PHY
|
||||
|
||||
For more details about mdio please refer phy.txt file in the same directory.
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "xlnx,gmii-to-rgmii-1.0"
|
||||
- reg : The ID number for the phy, usually a small integer
|
||||
- phy-handle : Should point to the external phy device.
|
||||
See ethernet.txt file in the same directory.
|
||||
|
||||
Example:
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
phy: ethernet-phy@0 {
|
||||
......
|
||||
};
|
||||
gmiitorgmii: gmiitorgmii@8 {
|
||||
compatible = "xlnx,gmii-to-rgmii-1.0";
|
||||
reg = <8>;
|
||||
phy-handle = <&phy>;
|
||||
};
|
||||
};
|
@ -0,0 +1,55 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/net/xlnx,gmii-to-rgmii.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Xilinx GMII to RGMII Converter
|
||||
|
||||
maintainers:
|
||||
- Harini Katakam <harini.katakam@amd.com>
|
||||
|
||||
description:
|
||||
The Gigabit Media Independent Interface (GMII) to Reduced Gigabit Media
|
||||
Independent Interface (RGMII) core provides the RGMII between RGMII-compliant
|
||||
ethernet physical media devices (PHY) and the Gigabit Ethernet controller.
|
||||
This core can be used in all three modes of operation(10/100/1000 Mb/s).
|
||||
The Management Data Input/Output (MDIO) interface is used to configure the
|
||||
speed of operation. This core can switch dynamically between the three
|
||||
different speed modes by configuring the converter register through mdio write.
|
||||
The core cannot function without an external phy connected to it.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: xlnx,gmii-to-rgmii-1.0
|
||||
|
||||
reg:
|
||||
minimum: 0
|
||||
maximum: 31
|
||||
description: The ID number for the phy.
|
||||
|
||||
phy-handle:
|
||||
$ref: ethernet-controller.yaml#/properties/phy-handle
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- phy-handle
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
phy: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
};
|
||||
gmiitorgmii@8 {
|
||||
compatible = "xlnx,gmii-to-rgmii-1.0";
|
||||
reg = <8>;
|
||||
phy-handle = <&phy>;
|
||||
};
|
||||
};
|
@ -0,0 +1,92 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/opp/operating-points-v2-ti-cpu.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: TI CPU OPP (Operating Performance Points)
|
||||
|
||||
description:
|
||||
TI SoCs, like those in the AM335x, AM437x, AM57xx, AM62x, and DRA7xx
|
||||
families, the CPU frequencies subset and the voltage value of each
|
||||
OPP vary based on the silicon variant used. The data sheet sections
|
||||
corresponding to "Operating Performance Points" describe the frequency
|
||||
and voltage values based on device type and speed bin information
|
||||
blown in corresponding eFuse bits as referred to by the Technical
|
||||
Reference Manual.
|
||||
|
||||
This document extends the operating-points-v2 binding by providing
|
||||
the hardware description for the scheme mentioned above.
|
||||
|
||||
maintainers:
|
||||
- Nishanth Menon <nm@ti.com>
|
||||
|
||||
allOf:
|
||||
- $ref: opp-v2-base.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: operating-points-v2-ti-cpu
|
||||
|
||||
syscon:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description: |
|
||||
points to syscon node representing the control module
|
||||
register space of the SoC.
|
||||
|
||||
opp-shared: true
|
||||
|
||||
patternProperties:
|
||||
'^opp(-?[0-9]+)*$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
clock-latency-ns: true
|
||||
opp-hz: true
|
||||
opp-microvolt: true
|
||||
opp-supported-hw: true
|
||||
opp-suspend: true
|
||||
turbo-mode: true
|
||||
|
||||
required:
|
||||
- opp-hz
|
||||
- opp-supported-hw
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- syscon
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
opp-table {
|
||||
compatible = "operating-points-v2-ti-cpu";
|
||||
syscon = <&scm_conf>;
|
||||
|
||||
opp-300000000 {
|
||||
opp-hz = /bits/ 64 <300000000>;
|
||||
opp-microvolt = <1100000 1078000 1122000>;
|
||||
opp-supported-hw = <0x06 0x0020>;
|
||||
opp-suspend;
|
||||
};
|
||||
|
||||
opp-500000000 {
|
||||
opp-hz = /bits/ 64 <500000000>;
|
||||
opp-microvolt = <1100000 1078000 1122000>;
|
||||
opp-supported-hw = <0x01 0xFFFF>;
|
||||
};
|
||||
|
||||
opp-600000000 {
|
||||
opp-hz = /bits/ 64 <600000000>;
|
||||
opp-microvolt = <1100000 1078000 1122000>;
|
||||
opp-supported-hw = <0x06 0x0040>;
|
||||
};
|
||||
|
||||
opp-1000000000 {
|
||||
opp-hz = /bits/ 64 <1000000000>;
|
||||
opp-microvolt = <1325000 1298500 1351500>;
|
||||
opp-supported-hw = <0x04 0x0200>;
|
||||
};
|
||||
};
|
@ -56,7 +56,7 @@ patternProperties:
|
||||
need to be configured and that is left for the implementation
|
||||
specific binding.
|
||||
minItems: 1
|
||||
maxItems: 16
|
||||
maxItems: 32
|
||||
items:
|
||||
maxItems: 1
|
||||
|
||||
|
101
Documentation/devicetree/bindings/opp/ti,omap-opp-supply.yaml
Normal file
101
Documentation/devicetree/bindings/opp/ti,omap-opp-supply.yaml
Normal file
@ -0,0 +1,101 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/opp/ti,omap-opp-supply.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Texas Instruments OMAP compatible OPP supply
|
||||
|
||||
description:
|
||||
OMAP5, DRA7, and AM57 families of SoCs have Class 0 AVS eFuse
|
||||
registers, which contain OPP-specific voltage information tailored
|
||||
for the specific device. This binding provides the information
|
||||
needed to describe such a hardware values and relate them to program
|
||||
the primary regulator during an OPP transition.
|
||||
|
||||
Also, some supplies may have an associated vbb-supply, an Adaptive
|
||||
Body Bias regulator, which must transition in a specific sequence
|
||||
w.r.t the vdd-supply and clk when making an OPP transition. By
|
||||
supplying two regulators to the device that will undergo OPP
|
||||
transitions, we can use the multi-regulator support implemented by
|
||||
the OPP core to describe both regulators the platform needs. The
|
||||
OPP core binding Documentation/devicetree/bindings/opp/opp-v2.yaml
|
||||
provides further information (refer to Example 4 Handling multiple
|
||||
regulators).
|
||||
|
||||
maintainers:
|
||||
- Nishanth Menon <nm@ti.com>
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
pattern: '^opp-supply(@[0-9a-f]+)?$'
|
||||
|
||||
compatible:
|
||||
oneOf:
|
||||
- description: Basic OPP supply controlling VDD and VBB
|
||||
const: ti,omap-opp-supply
|
||||
- description: OMAP5+ optimized voltages in efuse(Class 0) VDD along with
|
||||
VBB.
|
||||
const: ti,omap5-opp-supply
|
||||
- description: OMAP5+ optimized voltages in efuse(class0) VDD but no VBB
|
||||
const: ti,omap5-core-opp-supply
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
ti,absolute-max-voltage-uv:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: Absolute maximum voltage for the OPP supply in micro-volts.
|
||||
minimum: 750000
|
||||
maximum: 1500000
|
||||
|
||||
ti,efuse-settings:
|
||||
description: An array of u32 tuple items providing information about
|
||||
optimized efuse configuration.
|
||||
minItems: 1
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: Reference voltage in micro-volts (OPP Voltage)
|
||||
minimum: 750000
|
||||
maximum: 1500000
|
||||
multipleOf: 10000
|
||||
- description: efuse offset where the optimized voltage is located
|
||||
multipleOf: 4
|
||||
maximum: 256
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- ti,absolute-max-voltage-uv
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
not:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: ti,omap-opp-supply
|
||||
then:
|
||||
required:
|
||||
- reg
|
||||
- ti,efuse-settings
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
opp-supply {
|
||||
compatible = "ti,omap-opp-supply";
|
||||
ti,absolute-max-voltage-uv = <1375000>;
|
||||
};
|
||||
- |
|
||||
opp-supply@4a003b20 {
|
||||
compatible = "ti,omap5-opp-supply";
|
||||
reg = <0x4a003b20 0x8>;
|
||||
ti,efuse-settings =
|
||||
/* uV offset */
|
||||
<1060000 0x0>,
|
||||
<1160000 0x4>,
|
||||
<1210000 0x8>;
|
||||
ti,absolute-max-voltage-uv = <1500000>;
|
||||
};
|
@ -1,63 +0,0 @@
|
||||
Texas Instruments OMAP compatible OPP supply description
|
||||
|
||||
OMAP5, DRA7, and AM57 family of SoCs have Class0 AVS eFuse registers which
|
||||
contain data that can be used to adjust voltages programmed for some of their
|
||||
supplies for more efficient operation. This binding provides the information
|
||||
needed to read these values and use them to program the main regulator during
|
||||
an OPP transitions.
|
||||
|
||||
Also, some supplies may have an associated vbb-supply which is an Adaptive Body
|
||||
Bias regulator which much be transitioned in a specific sequence with regards
|
||||
to the vdd-supply and clk when making an OPP transition. By supplying two
|
||||
regulators to the device that will undergo OPP transitions we can make use
|
||||
of the multi regulator binding that is part of the OPP core described here [1]
|
||||
to describe both regulators needed by the platform.
|
||||
|
||||
[1] Documentation/devicetree/bindings/opp/opp-v2.yaml
|
||||
|
||||
Required Properties for Device Node:
|
||||
- vdd-supply: phandle to regulator controlling VDD supply
|
||||
- vbb-supply: phandle to regulator controlling Body Bias supply
|
||||
(Usually Adaptive Body Bias regulator)
|
||||
|
||||
Required Properties for opp-supply node:
|
||||
- compatible: Should be one of:
|
||||
"ti,omap-opp-supply" - basic OPP supply controlling VDD and VBB
|
||||
"ti,omap5-opp-supply" - OMAP5+ optimized voltages in efuse(class0)VDD
|
||||
along with VBB
|
||||
"ti,omap5-core-opp-supply" - OMAP5+ optimized voltages in efuse(class0) VDD
|
||||
but no VBB.
|
||||
- reg: Address and length of the efuse register set for the device (mandatory
|
||||
only for "ti,omap5-opp-supply")
|
||||
- ti,efuse-settings: An array of u32 tuple items providing information about
|
||||
optimized efuse configuration. Each item consists of the following:
|
||||
volt: voltage in uV - reference voltage (OPP voltage)
|
||||
efuse_offseet: efuse offset from reg where the optimized voltage is stored.
|
||||
- ti,absolute-max-voltage-uv: absolute maximum voltage for the OPP supply.
|
||||
|
||||
Example:
|
||||
|
||||
/* Device Node (CPU) */
|
||||
cpus {
|
||||
cpu0: cpu@0 {
|
||||
device_type = "cpu";
|
||||
|
||||
...
|
||||
|
||||
vdd-supply = <&vcc>;
|
||||
vbb-supply = <&abb_mpu>;
|
||||
};
|
||||
};
|
||||
|
||||
/* OMAP OPP Supply with Class0 registers */
|
||||
opp_supply_mpu: opp_supply@4a003b20 {
|
||||
compatible = "ti,omap5-opp-supply";
|
||||
reg = <0x4a003b20 0x8>;
|
||||
ti,efuse-settings = <
|
||||
/* uV offset */
|
||||
1060000 0x0
|
||||
1160000 0x4
|
||||
1210000 0x8
|
||||
>;
|
||||
ti,absolute-max-voltage-uv = <1500000>;
|
||||
};
|
@ -28,75 +28,37 @@ properties:
|
||||
the VSEL pin is assumed to be low.
|
||||
type: boolean
|
||||
|
||||
inl1-supply:
|
||||
description: Handle to the INL1 input supply (REG5-7)
|
||||
|
||||
inl2-supply:
|
||||
description: Handle to the INL2 input supply (REG8-9)
|
||||
|
||||
inl3-supply:
|
||||
description: Handle to the INL3 input supply (REG10-12)
|
||||
|
||||
vp1-supply:
|
||||
description: Handle to the VP1 input supply (REG1)
|
||||
|
||||
vp2-supply:
|
||||
description: Handle to the VP2 input supply (REG2)
|
||||
|
||||
vp3-supply:
|
||||
description: Handle to the VP3 input supply (REG3)
|
||||
|
||||
vp4-supply:
|
||||
description: Handle to the VP4 input supply (REG4)
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
REG1:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp1-supply:
|
||||
description: Handle to the VP1 input supply
|
||||
|
||||
REG2:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp2-supply:
|
||||
description: Handle to the VP2 input supply
|
||||
|
||||
REG3:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp3-supply:
|
||||
description: Handle to the VP3 input supply
|
||||
|
||||
REG4:
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
vp4-supply:
|
||||
description: Handle to the VP4 input supply
|
||||
|
||||
patternProperties:
|
||||
"^REG[5-7]$":
|
||||
"^REG([1-9]|1[0-2])$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl1-supply:
|
||||
description: Handle to the INL1 input supply
|
||||
|
||||
"^REG[8-9]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl2-supply:
|
||||
description: Handle to the INL2 input supply
|
||||
|
||||
"^REG1[0-2]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
inl3-supply:
|
||||
description: Handle to the INL3 input supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
|
@ -0,0 +1,86 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
# Copyright 2022 Analog Devices Inc.
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/adi,max77857.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Analog Devices MAX77857 Buck-Boost Converter
|
||||
|
||||
maintainers:
|
||||
- Ibrahim Tilki <Ibrahim.Tilki@analog.com>
|
||||
- Okan Sahin <Okan.Sahin@analog.com>
|
||||
|
||||
description: Analog Devices MAX77857 Buck-Boost Converter
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- adi,max77831
|
||||
- adi,max77857
|
||||
- adi,max77859
|
||||
- adi,max77859a
|
||||
|
||||
reg:
|
||||
description: I2C address of the device
|
||||
items:
|
||||
- enum: [0x66, 0x67, 0x6E, 0x6F]
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
adi,switch-frequency-hz:
|
||||
description: Switching frequency of the Buck-Boost converter in Hz.
|
||||
items:
|
||||
- enum: [1200000, 1500000, 1800000, 2100000]
|
||||
|
||||
adi,rtop-ohms:
|
||||
description: Top feedback resistor value in ohms for external feedback.
|
||||
minimum: 150000
|
||||
maximum: 330000
|
||||
|
||||
adi,rbot-ohms:
|
||||
description: Bottom feedback resistor value in ohms for external feedback.
|
||||
|
||||
dependencies:
|
||||
adi,rtop-ohms: [ 'adi,rbot-ohms' ]
|
||||
adi,rbot-ohms: [ 'adi,rtop-ohms' ]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
allOf:
|
||||
- $ref: regulator.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- adi,max77831
|
||||
|
||||
then:
|
||||
properties:
|
||||
adi,switch-frequency-hz:
|
||||
items:
|
||||
enum: [1200000, 1500000, 1800000]
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
regulator@66 {
|
||||
reg = <0x66>;
|
||||
compatible = "adi,max77857";
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
|
||||
|
||||
adi,rtop-ohms = <312000>;
|
||||
adi,rbot-ohms = <12000>;
|
||||
};
|
||||
};
|
@ -0,0 +1,78 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/awinic,aw37503.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Awinic AW37503 Voltage Regulator
|
||||
|
||||
maintainers:
|
||||
- Alec Li <like@awinic.com>
|
||||
|
||||
description:
|
||||
The AW37503 are dual voltage regulator, designed to support positive/negative
|
||||
supply for driving TFT-LCD panels. It support software-configurable output
|
||||
switching and monitoring. The output voltages can be programmed via an I2C
|
||||
compatible interface.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: awinic,aw37503
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
"^out[pn]$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description:
|
||||
Properties for single regulator.
|
||||
|
||||
properties:
|
||||
enable-gpios:
|
||||
maxItems: 1
|
||||
description:
|
||||
GPIO specifier to enable the GPIO control (on/off) for regulator.
|
||||
|
||||
required:
|
||||
- regulator-name
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- outp
|
||||
- outn
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
regulator@3e {
|
||||
compatible = "awinic,aw37503";
|
||||
reg = <0x3e>;
|
||||
|
||||
outp {
|
||||
regulator-name = "outp";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
enable-gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
outn {
|
||||
regulator-name = "outn";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
enable-gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
||||
|
@ -95,11 +95,6 @@ properties:
|
||||
Properties for a single BUCK regulator
|
||||
|
||||
properties:
|
||||
regulator-name:
|
||||
pattern: "^BUCK([1-2])$"
|
||||
description: |
|
||||
BUCK2 present in DA9122, DA9220, DA9131, DA9132 only
|
||||
|
||||
regulator-initial-mode:
|
||||
enum: [ 0, 1, 2, 3 ]
|
||||
description: Defined in include/dt-bindings/regulator/dlg,da9121-regulator.h
|
||||
@ -122,6 +117,23 @@ required:
|
||||
- reg
|
||||
- regulators
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
not:
|
||||
contains:
|
||||
enum:
|
||||
- dlg,da9122
|
||||
- dlg,da9131
|
||||
- dlg,da9132
|
||||
- dlg,da9220
|
||||
then:
|
||||
properties:
|
||||
regulators:
|
||||
properties:
|
||||
buck2: false
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
|
132
Documentation/devicetree/bindings/regulator/dlg,slg51000.yaml
Normal file
132
Documentation/devicetree/bindings/regulator/dlg,slg51000.yaml
Normal file
@ -0,0 +1,132 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/dlg,slg51000.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Dialog Semiconductor SLG51000 Voltage Regulator
|
||||
|
||||
maintainers:
|
||||
- Eric Jeong <eric.jeong.opensource@diasemi.com>
|
||||
- Support Opensource <support.opensource@diasemi.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: dlg,slg51000
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
dlg,cs-gpios:
|
||||
maxItems: 1
|
||||
description:
|
||||
GPIO for chip select
|
||||
|
||||
vin3-supply:
|
||||
description:
|
||||
Input supply for ldo3, required if regulator is enabled
|
||||
|
||||
vin4-supply:
|
||||
description:
|
||||
Input supply for ldo4, required if regulator is enabled
|
||||
|
||||
vin5-supply:
|
||||
description:
|
||||
Input supply for ldo5, required if regulator is enabled
|
||||
|
||||
vin6-supply:
|
||||
description:
|
||||
Input supply for ldo6, required if regulator is enabled
|
||||
|
||||
vin7-supply:
|
||||
description:
|
||||
Input supply for ldo7, required if regulator is enabled
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
"^ldo[1-7]$":
|
||||
type: object
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
enable-gpios:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- regulator-name
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- regulators
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/regulator/dlg,da9121-regulator.h>
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@75 {
|
||||
compatible = "dlg,slg51000";
|
||||
reg = <0x75>;
|
||||
dlg,cs-gpios = <&tlmm 69 GPIO_ACTIVE_HIGH>;
|
||||
vin5-supply = <&vreg_s1f_1p2>;
|
||||
vin6-supply = <&vreg_s1f_1p2>;
|
||||
|
||||
regulators {
|
||||
ldo1 {
|
||||
regulator-name = "slg51000_b_ldo1";
|
||||
regulator-min-microvolt = <2400000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo2 {
|
||||
regulator-name = "slg51000_b_ldo2";
|
||||
regulator-min-microvolt = <2400000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo3 {
|
||||
regulator-name = "slg51000_b_ldo3";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3750000>;
|
||||
};
|
||||
|
||||
ldo4 {
|
||||
regulator-name = "slg51000_b_ldo4";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3750000>;
|
||||
};
|
||||
|
||||
ldo5 {
|
||||
regulator-name = "slg51000_b_ldo5";
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo6 {
|
||||
regulator-name = "slg51000_b_ldo6";
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo7 {
|
||||
regulator-name = "slg51000_b_ldo7";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3750000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -29,10 +29,12 @@ properties:
|
||||
patternProperties:
|
||||
"^buck[1-4]$":
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
type: object
|
||||
|
||||
"^ldo[1-4]$":
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
type: object
|
||||
|
||||
additionalProperties: false
|
||||
|
@ -21,7 +21,6 @@ properties:
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
|
||||
description: |
|
||||
list of regulators provided by this controller, must be named
|
||||
@ -39,11 +38,13 @@ properties:
|
||||
ldortc:
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
patternProperties:
|
||||
"^ldo[1-4]$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
"^buck[1-4]$":
|
||||
type: object
|
||||
|
@ -68,18 +68,22 @@ properties:
|
||||
"^sw([1-4]|[1-4][a-c]|[1-4][a-c][a-c])$":
|
||||
$ref: regulator.yaml#
|
||||
type: object
|
||||
unevaluatedProperties: false
|
||||
|
||||
"^vgen[1-6]$":
|
||||
$ref: regulator.yaml#
|
||||
type: object
|
||||
unevaluatedProperties: false
|
||||
|
||||
"^vldo[1-4]$":
|
||||
$ref: regulator.yaml#
|
||||
type: object
|
||||
unevaluatedProperties: false
|
||||
|
||||
"^(vsnvs|vref|vrefddr|swbst|coin|v33|vccsd)$":
|
||||
$ref: regulator.yaml#
|
||||
type: object
|
||||
unevaluatedProperties: false
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
|
@ -49,7 +49,7 @@ patternProperties:
|
||||
".*-supply$":
|
||||
description: Input supply phandle(s) for this node
|
||||
|
||||
"^((s|l|lvs)[0-9]*)|(s[1-2][a-b])|(ncp)|(mvs)|(usb-switch)|(hdmi-switch)$":
|
||||
"^((s|l|lvs)[0-9]*|s[1-2][a-b]|ncp|mvs|usb-switch|hdmi-switch)$":
|
||||
description: List of regulators and its properties
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
@ -53,6 +53,7 @@ description: |
|
||||
For PMR735A, smps1 - smps3, ldo1 - ldo7
|
||||
For PMX55, smps1 - smps7, ldo1 - ldo16
|
||||
For PMX65, smps1 - smps8, ldo1 - ldo21
|
||||
For PMX75, smps1 - smps10, ldo1 - ldo21
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
@ -84,13 +85,14 @@ properties:
|
||||
- qcom,pmr735a-rpmh-regulators
|
||||
- qcom,pmx55-rpmh-regulators
|
||||
- qcom,pmx65-rpmh-regulators
|
||||
- qcom,pmx75-rpmh-regulators
|
||||
|
||||
qcom,pmic-id:
|
||||
description: |
|
||||
RPMh resource name suffix used for the regulators found
|
||||
on this PMIC.
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
enum: [a, b, c, d, e, f, g, h, k]
|
||||
enum: [a, b, c, d, e, f, g, h, i, j, k, l, m, n]
|
||||
|
||||
qcom,always-wait-for-ack:
|
||||
description: |
|
||||
@ -109,6 +111,7 @@ properties:
|
||||
bob:
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description: BOB regulator node.
|
||||
dependencies:
|
||||
regulator-allow-set-load: [ regulator-allowed-modes ]
|
||||
@ -117,6 +120,7 @@ patternProperties:
|
||||
"^(smps|ldo|lvs|bob)[0-9]+$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description: smps/ldo regulator nodes(s).
|
||||
dependencies:
|
||||
regulator-allow-set-load: [ regulator-allowed-modes ]
|
||||
@ -424,10 +428,28 @@ allOf:
|
||||
vdd-l11-l13-supply: true
|
||||
patternProperties:
|
||||
"^vdd-l[1347]-supply$": true
|
||||
"^vdd-l1[0245789]-supply$": true
|
||||
"^vdd-l1[024579]-supply$": true
|
||||
"^vdd-l2[01]-supply$": true
|
||||
"^vdd-s[1-8]-supply$": true
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,pmx75-rpmh-regulators
|
||||
then:
|
||||
properties:
|
||||
vdd-l2-l18-supply: true
|
||||
vdd-l4-l16-supply: true
|
||||
vdd-l5-l6-supply: true
|
||||
vdd-l8-l9-supply: true
|
||||
vdd-l11-l13-supply: true
|
||||
vdd-l20-l21-supply: true
|
||||
patternProperties:
|
||||
"^vdd-l[137]-supply$": true
|
||||
"^vdd-l1[024579]-supply$": true
|
||||
"^vdd-s([1-9]|10)-supply$": true
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
|
@ -0,0 +1,57 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/qcom,sdm845-refgen-regulator.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Qualcomm Technologies, Inc. REFGEN Regulator
|
||||
|
||||
maintainers:
|
||||
- Konrad Dybcio <konradybcio@kernel.org>
|
||||
|
||||
description:
|
||||
The REFGEN (reference voltage generator) regulator provides reference
|
||||
voltage for on-chip IPs (like PHYs) on some Qualcomm SoCs.
|
||||
|
||||
allOf:
|
||||
- $ref: regulator.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,sc7180-refgen-regulator
|
||||
- qcom,sc8180x-refgen-regulator
|
||||
- qcom,sm8150-refgen-regulator
|
||||
- const: qcom,sdm845-refgen-regulator
|
||||
|
||||
- items:
|
||||
- enum:
|
||||
- qcom,sc7280-refgen-regulator
|
||||
- qcom,sc8280xp-refgen-regulator
|
||||
- qcom,sm6350-refgen-regulator
|
||||
- qcom,sm6375-refgen-regulator
|
||||
- qcom,sm8350-refgen-regulator
|
||||
- const: qcom,sm8250-refgen-regulator
|
||||
|
||||
- enum:
|
||||
- qcom,sdm845-refgen-regulator
|
||||
- qcom,sm8250-refgen-regulator
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
regulator@162f000 {
|
||||
compatible = "qcom,sm8250-refgen-regulator";
|
||||
reg = <0x0162f000 0x84>;
|
||||
};
|
||||
...
|
@ -110,6 +110,7 @@ patternProperties:
|
||||
"^((s|l|lvs|5vs)[0-9]*)|(boost-bypass)|(bob)$":
|
||||
description: List of regulators and its properties
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
|
@ -29,6 +29,7 @@ patternProperties:
|
||||
"^DSV(LCM|P|N)$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description:
|
||||
Properties for single Display Bias Voltage regulator.
|
||||
|
||||
|
@ -21,6 +21,7 @@ allOf:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- richtek,rt5733
|
||||
- richtek,rt5739
|
||||
|
||||
reg:
|
||||
|
@ -121,6 +121,7 @@ properties:
|
||||
description: load switch current regulator description.
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
197
Documentation/devicetree/bindings/regulator/richtek,rtq2208.yaml
Normal file
197
Documentation/devicetree/bindings/regulator/richtek,rtq2208.yaml
Normal file
@ -0,0 +1,197 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/richtek,rtq2208.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Richtek RTQ2208 SubPMIC Regulator
|
||||
|
||||
maintainers:
|
||||
- Alina Yu <alina_yu@richtek.com>
|
||||
|
||||
description: |
|
||||
RTQ2208 is a highly integrated power converter that offers functional safety dual
|
||||
multi-configurable synchronous buck converters and two LDOs.
|
||||
|
||||
Bucks support "regulator-allowed-modes" and "regulator-mode". The former defines the permitted
|
||||
switching operation in normal mode; the latter defines the operation in suspend to RAM mode.
|
||||
|
||||
No matter the RTQ2208 is configured to normal or suspend to RAM mode, there are two switching
|
||||
operation modes for all buck rails, automatic power saving mode (Auto mode) and forced continuous
|
||||
conduction mode (FCCM).
|
||||
|
||||
The definition of modes is in the datasheet which is available in below link
|
||||
and their meaning is::
|
||||
0 - Auto mode for power saving, which reducing the switching frequency at light load condition
|
||||
to maintain high frequency.
|
||||
1 - FCCM to meet the strict voltage regulation accuracy, which keeping constant switching frequency.
|
||||
|
||||
Datasheet will be available soon at
|
||||
https://www.richtek.com/assets/Products
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- richtek,rtq2208
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
richtek,mtp-sel-high:
|
||||
type: boolean
|
||||
description:
|
||||
vout register selection based on this boolean value.
|
||||
false - Using DVS0 register setting to adjust vout
|
||||
true - Using DVS1 register setting to adjust vout
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
"^buck-[a-h]$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description:
|
||||
description for buck-[a-h] regulator.
|
||||
|
||||
properties:
|
||||
regulator-allowed-modes:
|
||||
description:
|
||||
two buck modes in different switching accuracy.
|
||||
0 - Auto mode
|
||||
1 - FCCM
|
||||
items:
|
||||
enum: [0, 1]
|
||||
|
||||
"^ldo[1-2]$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description:
|
||||
regulator description for ldo[1-2].
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- regulators
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@10 {
|
||||
compatible = "richtek,rtq2208";
|
||||
reg = <0x10>;
|
||||
interrupts-extended = <&gpio26 0 IRQ_TYPE_LEVEL_LOW>;
|
||||
richtek,mtp-sel-high;
|
||||
|
||||
regulators {
|
||||
buck-a {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <2050000>;
|
||||
regulator-allowed-modes = <0 1>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <1>;
|
||||
};
|
||||
};
|
||||
buck-b {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <2050000>;
|
||||
regulator-allowed-modes = <0 1>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <1>;
|
||||
};
|
||||
};
|
||||
buck-c {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <2050000>;
|
||||
regulator-allowed-modes = <0 1>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <1>;
|
||||
};
|
||||
};
|
||||
buck-d {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <2050000>;
|
||||
regulator-allowed-modes = <0 1>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <1>;
|
||||
};
|
||||
};
|
||||
buck-e {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <2050000>;
|
||||
regulator-allowed-modes = <0 1>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <1>;
|
||||
};
|
||||
};
|
||||
buck-f {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <2050000>;
|
||||
regulator-allowed-modes = <0 1>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <1>;
|
||||
};
|
||||
};
|
||||
buck-g {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <2050000>;
|
||||
regulator-allowed-modes = <0 1>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <1>;
|
||||
};
|
||||
};
|
||||
buck-h {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <2050000>;
|
||||
regulator-allowed-modes = <0 1>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <1>;
|
||||
};
|
||||
};
|
||||
ldo1 {
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
ldo2 {
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
@ -35,6 +35,7 @@ properties:
|
||||
"^(p|n)avdd$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description: |
|
||||
regulator description for pavdd and navdd.
|
||||
|
||||
|
@ -1,88 +0,0 @@
|
||||
* Dialog Semiconductor SLG51000 Voltage Regulator
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "dlg,slg51000" for SLG51000
|
||||
- reg : Specifies the I2C slave address.
|
||||
- xxx-supply: Input voltage supply regulator for ldo3 to ldo7.
|
||||
These entries are required if regulators are enabled for a device.
|
||||
An absence of these properties can cause the regulator registration to fail.
|
||||
If some of input supply is powered through battery or always-on supply then
|
||||
also it is required to have these parameters with proper node handle of always
|
||||
on power supply.
|
||||
vin3-supply: Input supply for ldo3
|
||||
vin4-supply: Input supply for ldo4
|
||||
vin5-supply: Input supply for ldo5
|
||||
vin6-supply: Input supply for ldo6
|
||||
vin7-supply: Input supply for ldo7
|
||||
|
||||
Optional properties:
|
||||
- interrupt-parent : Specifies the reference to the interrupt controller.
|
||||
- interrupts : IRQ line information.
|
||||
- dlg,cs-gpios : Specify a valid GPIO for chip select
|
||||
|
||||
Sub-nodes:
|
||||
- regulators : This node defines the settings for the regulators.
|
||||
The content of the sub-node is defined by the standard binding
|
||||
for regulators; see regulator.txt.
|
||||
|
||||
The SLG51000 regulators are bound using their names listed below:
|
||||
ldo1
|
||||
ldo2
|
||||
ldo3
|
||||
ldo4
|
||||
ldo5
|
||||
ldo6
|
||||
ldo7
|
||||
|
||||
Optional properties for regulators:
|
||||
- enable-gpios : Specify a valid GPIO for platform control of the regulator.
|
||||
|
||||
Example:
|
||||
pmic: slg51000@75 {
|
||||
compatible = "dlg,slg51000";
|
||||
reg = <0x75>;
|
||||
|
||||
regulators {
|
||||
ldo1 {
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <2400000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo2 {
|
||||
regulator-name = "ldo2";
|
||||
regulator-min-microvolt = <2400000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
ldo3 {
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3750000>;
|
||||
};
|
||||
|
||||
ldo4 {
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3750000>;
|
||||
};
|
||||
|
||||
ldo5 {
|
||||
regulator-name = "ldo5";
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo6 {
|
||||
regulator-name = "ldo6";
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
|
||||
ldo7 {
|
||||
regulator-name = "ldo7";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <3750000>;
|
||||
};
|
||||
};
|
||||
};
|
@ -25,8 +25,8 @@ properties:
|
||||
patternProperties:
|
||||
"^(reg11|reg18|usb33)$":
|
||||
type: object
|
||||
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
@ -29,11 +29,13 @@ properties:
|
||||
Initial data for the LDO1 regulator.
|
||||
$ref: regulator.yaml#
|
||||
type: object
|
||||
unevaluatedProperties: false
|
||||
|
||||
micvdd:
|
||||
description:
|
||||
Initial data for the MICVDD regulator.
|
||||
$ref: regulator.yaml#
|
||||
type: object
|
||||
unevaluatedProperties: false
|
||||
|
||||
additionalProperties: true
|
||||
|
313
Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml
Normal file
313
Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml
Normal file
@ -0,0 +1,313 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/sound/cirrus,cs42l43.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Cirrus Logic CS42L43 Audio CODEC
|
||||
|
||||
maintainers:
|
||||
- patches@opensource.cirrus.com
|
||||
|
||||
description: |
|
||||
The CS42L43 is an audio CODEC with integrated MIPI SoundWire interface
|
||||
(Version 1.2.1 compliant), I2C, SPI, and I2S/TDM interfaces designed
|
||||
for portable applications. It provides a high dynamic range, stereo
|
||||
DAC for headphone output, two integrated Class D amplifiers for
|
||||
loudspeakers, and two ADCs for wired headset microphone input or
|
||||
stereo line input. PDM inputs are provided for digital microphones.
|
||||
|
||||
allOf:
|
||||
- $ref: dai-common.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- cirrus,cs42l43
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
vdd-p-supply:
|
||||
description:
|
||||
Power supply for the high voltage interface.
|
||||
|
||||
vdd-a-supply:
|
||||
description:
|
||||
Power supply for internal analog circuits.
|
||||
|
||||
vdd-d-supply:
|
||||
description:
|
||||
Power supply for internal digital circuits. Can be internally supplied.
|
||||
|
||||
vdd-io-supply:
|
||||
description:
|
||||
Power supply for external interface and internal digital logic.
|
||||
|
||||
vdd-cp-supply:
|
||||
description:
|
||||
Power supply for the amplifier 3 and 4 charge pump.
|
||||
|
||||
vdd-amp-supply:
|
||||
description:
|
||||
Power supply for amplifier 1 and 2.
|
||||
|
||||
reset-gpios:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
"#sound-dai-cells":
|
||||
const: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Synchronous audio clock provided on mclk_in.
|
||||
|
||||
clock-names:
|
||||
const: mclk
|
||||
|
||||
cirrus,bias-low:
|
||||
type: boolean
|
||||
description:
|
||||
Select a 1.8V headset micbias rather than 2.8V.
|
||||
|
||||
cirrus,bias-sense-microamp:
|
||||
description:
|
||||
Current at which the headset micbias sense clamp will engage, 0 to
|
||||
disable.
|
||||
enum: [ 0, 14, 23, 41, 50, 60, 68, 86, 95 ]
|
||||
default: 0
|
||||
|
||||
cirrus,bias-ramp-ms:
|
||||
description:
|
||||
Time in milliseconds the hardware allows for the headset micbias to
|
||||
ramp up.
|
||||
enum: [ 10, 40, 90, 170 ]
|
||||
default: 170
|
||||
|
||||
cirrus,detect-us:
|
||||
description:
|
||||
Time in microseconds the type detection will run for. Long values will
|
||||
cause more audible effects, but give more accurate detection.
|
||||
enum: [ 20, 100, 1000, 10000, 50000, 75000, 100000, 200000 ]
|
||||
default: 10000
|
||||
|
||||
cirrus,button-automute:
|
||||
type: boolean
|
||||
description:
|
||||
Enable the hardware automuting of decimator 1 when a headset button is
|
||||
pressed.
|
||||
|
||||
cirrus,buttons-ohms:
|
||||
description:
|
||||
Impedance in Ohms for each headset button, these should be listed in
|
||||
ascending order.
|
||||
minItems: 1
|
||||
maxItems: 6
|
||||
|
||||
cirrus,tip-debounce-ms:
|
||||
description:
|
||||
Software debounce on tip sense triggering in milliseconds.
|
||||
default: 0
|
||||
|
||||
cirrus,tip-invert:
|
||||
type: boolean
|
||||
description:
|
||||
Indicates tip detect polarity, inverted implies open-circuit whilst the
|
||||
jack is inserted.
|
||||
|
||||
cirrus,tip-disable-pullup:
|
||||
type: boolean
|
||||
description:
|
||||
Indicates if the internal pullup on the tip detect should be disabled.
|
||||
|
||||
cirrus,tip-fall-db-ms:
|
||||
description:
|
||||
Time in milliseconds a falling edge on the tip detect should be hardware
|
||||
debounced for. Note the falling edge is considered after the invert.
|
||||
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
||||
default: 500
|
||||
|
||||
cirrus,tip-rise-db-ms:
|
||||
description:
|
||||
Time in milliseconds a rising edge on the tip detect should be hardware
|
||||
debounced for. Note the rising edge is considered after the invert.
|
||||
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
||||
default: 500
|
||||
|
||||
cirrus,use-ring-sense:
|
||||
type: boolean
|
||||
description:
|
||||
Indicates if the ring sense should be used.
|
||||
|
||||
cirrus,ring-invert:
|
||||
type: boolean
|
||||
description:
|
||||
Indicates ring detect polarity, inverted implies open-circuit whilst the
|
||||
jack is inserted.
|
||||
|
||||
cirrus,ring-disable-pullup:
|
||||
type: boolean
|
||||
description:
|
||||
Indicates if the internal pullup on the ring detect should be disabled.
|
||||
|
||||
cirrus,ring-fall-db-ms:
|
||||
description:
|
||||
Time in milliseconds a falling edge on the ring detect should be hardware
|
||||
debounced for. Note the falling edge is considered after the invert.
|
||||
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
||||
default: 500
|
||||
|
||||
cirrus,ring-rise-db-ms:
|
||||
description:
|
||||
Time in milliseconds a rising edge on the ring detect should be hardware
|
||||
debounced for. Note the rising edge is considered after the invert.
|
||||
enum: [ 0, 125, 250, 500, 750, 1000, 1250, 1500 ]
|
||||
default: 500
|
||||
|
||||
pinctrl:
|
||||
type: object
|
||||
$ref: /schemas/pinctrl/pinctrl.yaml#
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
items:
|
||||
- description: A phandle to the CODEC pinctrl node
|
||||
minimum: 0
|
||||
- const: 0
|
||||
- const: 0
|
||||
- const: 3
|
||||
|
||||
patternProperties:
|
||||
"-state$":
|
||||
oneOf:
|
||||
- $ref: "#/$defs/cirrus-cs42l43-state"
|
||||
- patternProperties:
|
||||
"-pins$":
|
||||
$ref: "#/$defs/cirrus-cs42l43-state"
|
||||
additionalProperties: false
|
||||
|
||||
spi:
|
||||
type: object
|
||||
$ref: /schemas/spi/spi-controller.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
$defs:
|
||||
cirrus-cs42l43-state:
|
||||
type: object
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/pinctrl/pincfg-node.yaml#
|
||||
- $ref: /schemas/pinctrl/pinmux-node.yaml#
|
||||
|
||||
oneOf:
|
||||
- required: [ groups ]
|
||||
- required: [ pins ]
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
groups:
|
||||
enum: [ gpio1, gpio2, gpio3, asp, pdmout2, pdmout1, i2c, spi ]
|
||||
|
||||
pins:
|
||||
enum: [ gpio1, gpio2, gpio3,
|
||||
asp_dout, asp_fsync, asp_bclk,
|
||||
pdmout2_clk, pdmout2_data, pdmout1_clk, pdmout1_data,
|
||||
i2c_sda, i2c_scl,
|
||||
spi_miso, spi_sck, spi_ssb ]
|
||||
|
||||
function:
|
||||
enum: [ gpio, spdif, irq, mic-shutter, spk-shutter ]
|
||||
|
||||
drive-strength:
|
||||
description: Set drive strength in mA
|
||||
enum: [ 1, 2, 4, 8, 9, 10, 12, 16 ]
|
||||
|
||||
input-debounce:
|
||||
description: Set input debounce in uS
|
||||
enum: [ 0, 85 ]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- vdd-p-supply
|
||||
- vdd-a-supply
|
||||
- vdd-io-supply
|
||||
- vdd-cp-supply
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cs42l43: codec@1a {
|
||||
compatible = "cirrus,cs42l43";
|
||||
reg = <0x1a>;
|
||||
|
||||
vdd-p-supply = <&vdd5v0>;
|
||||
vdd-a-supply = <&vdd1v8>;
|
||||
vdd-io-supply = <&vdd1v8>;
|
||||
vdd-cp-supply = <&vdd1v8>;
|
||||
vdd-amp-supply = <&vdd5v0>;
|
||||
|
||||
reset-gpios = <&gpio 0>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&gpio>;
|
||||
interrupts = <56 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
#sound-dai-cells = <1>;
|
||||
|
||||
clocks = <&clks 0>;
|
||||
clock-names = "mclk";
|
||||
|
||||
cs42l43_pins: pinctrl {
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&cs42l43_pins 0 0 3>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinsettings>;
|
||||
|
||||
pinsettings: default-state {
|
||||
shutter-pins {
|
||||
groups = "gpio3";
|
||||
function = "mic-shutter";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
spi {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cs-gpios = <&cs42l43_pins 1 0>;
|
||||
|
||||
sensor@0 {
|
||||
compatible = "bosch,bme680";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <1400000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
71
Documentation/devicetree/bindings/spi/brcm,bcm63xx-spi.yaml
Normal file
71
Documentation/devicetree/bindings/spi/brcm,bcm63xx-spi.yaml
Normal file
@ -0,0 +1,71 @@
|
||||
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/spi/brcm,bcm63xx-spi.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM6348/BCM6358 SPI controller
|
||||
|
||||
maintainers:
|
||||
- Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
description: |
|
||||
Broadcom "Low Speed" SPI controller found in many older MIPS based Broadband
|
||||
SoCs.
|
||||
|
||||
This controller has a limitation that can not keep the chip select line active
|
||||
between the SPI transfers within the same SPI message. This can terminate the
|
||||
transaction to some SPI devices prematurely. The issue can be worked around by
|
||||
the controller's prepend mode.
|
||||
|
||||
allOf:
|
||||
- $ref: spi-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- brcm,bcm6368-spi
|
||||
- brcm,bcm6362-spi
|
||||
- brcm,bcm63268-spi
|
||||
- const: brcm,bcm6358-spi
|
||||
- enum:
|
||||
- brcm,bcm6348-spi
|
||||
- brcm,bcm6358-spi
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: SPI master reference clock
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: spi
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- interrupts
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
spi@10000800 {
|
||||
compatible = "brcm,bcm6368-spi", "brcm,bcm6358-spi";
|
||||
reg = <0x10000800 0x70c>;
|
||||
interrupts = <1>;
|
||||
clocks = <&clkctl 9>;
|
||||
clock-names = "spi";
|
||||
num-cs = <5>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
@ -86,7 +86,17 @@ properties:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
|
||||
clock-names:
|
||||
oneOf:
|
||||
- items:
|
||||
- const: ref
|
||||
- items:
|
||||
- const: ref
|
||||
- const: ahb
|
||||
- const: apb
|
||||
|
||||
cdns,fifo-depth:
|
||||
description:
|
||||
|
46
Documentation/devicetree/bindings/spi/loongson,ls2k-spi.yaml
Normal file
46
Documentation/devicetree/bindings/spi/loongson,ls2k-spi.yaml
Normal file
@ -0,0 +1,46 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/spi/loongson,ls2k-spi.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Loongson SPI controller
|
||||
|
||||
maintainers:
|
||||
- Yinbo Zhu <zhuyinbo@loongson.cn>
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/spi/spi-controller.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- loongson,ls2k1000-spi
|
||||
- items:
|
||||
- enum:
|
||||
- loongson,ls2k0500-spi
|
||||
- const: loongson,ls2k1000-spi
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
spi0: spi@1fff0220{
|
||||
compatible = "loongson,ls2k1000-spi";
|
||||
reg = <0x1fff0220 0x10>;
|
||||
clocks = <&clk 17>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
@ -1,61 +0,0 @@
|
||||
NVIDIA Tegra114 SPI controller.
|
||||
|
||||
Required properties:
|
||||
- compatible : For Tegra114, must contain "nvidia,tegra114-spi".
|
||||
Otherwise, must contain '"nvidia,<chip>-spi", "nvidia,tegra114-spi"' where
|
||||
<chip> is tegra124, tegra132, or tegra210.
|
||||
- reg: Should contain SPI registers location and length.
|
||||
- interrupts: Should contain SPI interrupts.
|
||||
- clock-names : Must include the following entries:
|
||||
- spi
|
||||
- resets : Must contain an entry for each entry in reset-names.
|
||||
See ../reset/reset.txt for details.
|
||||
- reset-names : Must include the following entries:
|
||||
- spi
|
||||
- dmas : Must contain an entry for each entry in clock-names.
|
||||
See ../dma/dma.txt for details.
|
||||
- dma-names : Must include the following entries:
|
||||
- rx
|
||||
- tx
|
||||
- clocks : Must contain an entry for each entry in clock-names.
|
||||
See ../clocks/clock-bindings.txt for details.
|
||||
|
||||
Recommended properties:
|
||||
- spi-max-frequency: Definition as per
|
||||
Documentation/devicetree/bindings/spi/spi-bus.txt
|
||||
Optional properties:
|
||||
- nvidia,tx-clk-tap-delay: Delays the clock going out to the external device
|
||||
with this tap value. This property is used to tune the outgoing data from
|
||||
Tegra SPI master with respect to outgoing Tegra SPI master clock.
|
||||
Tap values vary based on the platform design trace lengths from Tegra SPI
|
||||
to corresponding slave devices. Valid tap values are from 0 thru 63.
|
||||
- nvidia,rx-clk-tap-delay: Delays the clock coming in from the external device
|
||||
with this tap value. This property is used to adjust the Tegra SPI master
|
||||
clock with respect to the data from the SPI slave device.
|
||||
Tap values vary based on the platform design trace lengths from Tegra SPI
|
||||
to corresponding slave devices. Valid tap values are from 0 thru 63.
|
||||
|
||||
Example:
|
||||
|
||||
spi@7000d600 {
|
||||
compatible = "nvidia,tegra114-spi";
|
||||
reg = <0x7000d600 0x200>;
|
||||
interrupts = <0 82 0x04>;
|
||||
spi-max-frequency = <25000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 44>;
|
||||
clock-names = "spi";
|
||||
resets = <&tegra_car 44>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 16>, <&apbdma 16>;
|
||||
dma-names = "rx", "tx";
|
||||
<spi-client>@<bus_num> {
|
||||
...
|
||||
...
|
||||
nvidia,rx-clk-tap-delay = <0>;
|
||||
nvidia,tx-clk-tap-delay = <16>;
|
||||
...
|
||||
};
|
||||
|
||||
};
|
100
Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.yaml
Normal file
100
Documentation/devicetree/bindings/spi/nvidia,tegra114-spi.yaml
Normal file
@ -0,0 +1,100 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/spi/nvidia,tegra114-spi.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra114 SPI controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: nvidia,tegra114-spi
|
||||
- items:
|
||||
- enum:
|
||||
- nvidia,tegra210-spi
|
||||
- nvidia,tegra124-spi
|
||||
- const: nvidia,tegra114-spi
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: SPI module clock
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: spi
|
||||
|
||||
resets:
|
||||
items:
|
||||
- description: SPI module reset
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: spi
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: DMA channel for the reception FIFO
|
||||
- description: DMA channel for the transmission FIFO
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: rx
|
||||
- const: tx
|
||||
|
||||
spi-max-frequency:
|
||||
description: Maximum SPI clocking speed of the controller in Hz.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
allOf:
|
||||
- $ref: spi-controller.yaml
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- clock-names
|
||||
- resets
|
||||
- reset-names
|
||||
- dmas
|
||||
- dma-names
|
||||
|
||||
examples:
|
||||
- |
|
||||
spi@7000d600 {
|
||||
compatible = "nvidia,tegra114-spi";
|
||||
reg = <0x7000d600 0x200>;
|
||||
interrupts = <0 82 0x04>;
|
||||
clocks = <&tegra_car 44>;
|
||||
clock-names = "spi";
|
||||
resets = <&tegra_car 44>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 16>, <&apbdma 16>;
|
||||
dma-names = "rx", "tx";
|
||||
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <20000000>;
|
||||
nvidia,rx-clk-tap-delay = <0>;
|
||||
nvidia,tx-clk-tap-delay = <16>;
|
||||
};
|
||||
};
|
@ -1,37 +0,0 @@
|
||||
NVIDIA Tegra20 SFLASH controller.
|
||||
|
||||
Required properties:
|
||||
- compatible : should be "nvidia,tegra20-sflash".
|
||||
- reg: Should contain SFLASH registers location and length.
|
||||
- interrupts: Should contain SFLASH interrupts.
|
||||
- clocks : Must contain one entry, for the module clock.
|
||||
See ../clocks/clock-bindings.txt for details.
|
||||
- resets : Must contain an entry for each entry in reset-names.
|
||||
See ../reset/reset.txt for details.
|
||||
- reset-names : Must include the following entries:
|
||||
- spi
|
||||
- dmas : Must contain an entry for each entry in clock-names.
|
||||
See ../dma/dma.txt for details.
|
||||
- dma-names : Must include the following entries:
|
||||
- rx
|
||||
- tx
|
||||
|
||||
Recommended properties:
|
||||
- spi-max-frequency: Definition as per
|
||||
Documentation/devicetree/bindings/spi/spi-bus.txt
|
||||
|
||||
Example:
|
||||
|
||||
spi@7000c380 {
|
||||
compatible = "nvidia,tegra20-sflash";
|
||||
reg = <0x7000c380 0x80>;
|
||||
interrupts = <0 39 0x04>;
|
||||
spi-max-frequency = <25000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 43>;
|
||||
resets = <&tegra_car 43>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 11>, <&apbdma 11>;
|
||||
dma-names = "rx", "tx";
|
||||
};
|
@ -0,0 +1,81 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/spi/nvidia,tegra20-sflash.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra20 SFLASH controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: nvidia,tegra20-sflash
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: module clock
|
||||
|
||||
resets:
|
||||
items:
|
||||
- description: module reset
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: spi
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: DMA channel used for reception
|
||||
- description: DMA channel used for transmission
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: rx
|
||||
- const: tx
|
||||
|
||||
spi-max-frequency:
|
||||
description: Maximum SPI clocking speed of the controller in Hz.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
allOf:
|
||||
- $ref: spi-controller.yaml
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- resets
|
||||
- reset-names
|
||||
- dmas
|
||||
- dma-names
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/tegra20-car.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
spi@7000c380 {
|
||||
compatible = "nvidia,tegra20-sflash";
|
||||
reg = <0x7000c380 0x80>;
|
||||
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
|
||||
spi-max-frequency = <25000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_SPI>;
|
||||
resets = <&tegra_car 43>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 11>, <&apbdma 11>;
|
||||
dma-names = "rx", "tx";
|
||||
};
|
@ -1,37 +0,0 @@
|
||||
NVIDIA Tegra20/Tegra30 SLINK controller.
|
||||
|
||||
Required properties:
|
||||
- compatible : should be "nvidia,tegra20-slink", "nvidia,tegra30-slink".
|
||||
- reg: Should contain SLINK registers location and length.
|
||||
- interrupts: Should contain SLINK interrupts.
|
||||
- clocks : Must contain one entry, for the module clock.
|
||||
See ../clocks/clock-bindings.txt for details.
|
||||
- resets : Must contain an entry for each entry in reset-names.
|
||||
See ../reset/reset.txt for details.
|
||||
- reset-names : Must include the following entries:
|
||||
- spi
|
||||
- dmas : Must contain an entry for each entry in clock-names.
|
||||
See ../dma/dma.txt for details.
|
||||
- dma-names : Must include the following entries:
|
||||
- rx
|
||||
- tx
|
||||
|
||||
Recommended properties:
|
||||
- spi-max-frequency: Definition as per
|
||||
Documentation/devicetree/bindings/spi/spi-bus.txt
|
||||
|
||||
Example:
|
||||
|
||||
spi@7000d600 {
|
||||
compatible = "nvidia,tegra20-slink";
|
||||
reg = <0x7000d600 0x200>;
|
||||
interrupts = <0 82 0x04>;
|
||||
spi-max-frequency = <25000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car 44>;
|
||||
resets = <&tegra_car 44>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 16>, <&apbdma 16>;
|
||||
dma-names = "rx", "tx";
|
||||
};
|
@ -0,0 +1,90 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/spi/nvidia,tegra20-slink.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra20/30 SLINK controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- nvidia,tegra20-slink
|
||||
- nvidia,tegra30-slink
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: module clock
|
||||
|
||||
resets:
|
||||
items:
|
||||
- description: module reset
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: spi
|
||||
|
||||
dmas:
|
||||
items:
|
||||
- description: DMA channel used for reception
|
||||
- description: DMA channel used for transmission
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: rx
|
||||
- const: tx
|
||||
|
||||
operating-points-v2:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
|
||||
power-domains:
|
||||
items:
|
||||
- description: phandle to the core power domain
|
||||
|
||||
spi-max-frequency:
|
||||
description: Maximum SPI clocking speed of the controller in Hz.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
allOf:
|
||||
- $ref: spi-controller.yaml
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- resets
|
||||
- reset-names
|
||||
- dmas
|
||||
- dma-names
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/tegra20-car.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
spi@7000d600 {
|
||||
compatible = "nvidia,tegra20-slink";
|
||||
reg = <0x7000d600 0x200>;
|
||||
interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
|
||||
spi-max-frequency = <25000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&tegra_car TEGRA20_CLK_SBC2>;
|
||||
resets = <&tegra_car 44>;
|
||||
reset-names = "spi";
|
||||
dmas = <&apbdma 16>, <&apbdma 16>;
|
||||
dma-names = "rx", "tx";
|
||||
};
|
@ -1,33 +0,0 @@
|
||||
Binding for Broadcom BCM6348/BCM6358 SPI controller
|
||||
|
||||
Required properties:
|
||||
- compatible: must contain one of "brcm,bcm6348-spi", "brcm,bcm6358-spi".
|
||||
- reg: Base address and size of the controllers memory area.
|
||||
- interrupts: Interrupt for the SPI block.
|
||||
- clocks: phandle of the SPI clock.
|
||||
- clock-names: has to be "spi".
|
||||
- #address-cells: <1>, as required by generic SPI binding.
|
||||
- #size-cells: <0>, also as required by generic SPI binding.
|
||||
|
||||
Optional properties:
|
||||
- num-cs: some controllers have less than 8 cs signals. Defaults to 8
|
||||
if absent.
|
||||
|
||||
Child nodes as per the generic SPI binding.
|
||||
|
||||
Example:
|
||||
|
||||
spi@10000800 {
|
||||
compatible = "brcm,bcm6368-spi", "brcm,bcm6358-spi";
|
||||
reg = <0x10000800 0x70c>;
|
||||
|
||||
interrupts = <1>;
|
||||
|
||||
clocks = <&clkctl 9>;
|
||||
clock-names = "spi";
|
||||
|
||||
num-cs = <5>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
@ -49,6 +49,12 @@ properties:
|
||||
enum: [ 0, 1 ]
|
||||
default: 0
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
label:
|
||||
description: Descriptive name of the SPI controller.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
@ -63,6 +63,9 @@ properties:
|
||||
maximum: 2
|
||||
default: 1
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
@ -45,6 +45,9 @@ properties:
|
||||
- const: fspi_en
|
||||
- const: fspi
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
@ -11,6 +11,7 @@ maintainers:
|
||||
|
||||
allOf:
|
||||
- $ref: spi-controller.yaml#
|
||||
- $ref: /schemas/arm/primecell.yaml#
|
||||
|
||||
# We need a select here so we don't match all nodes with 'arm,primecell'
|
||||
select:
|
||||
|
@ -119,6 +119,10 @@ properties:
|
||||
- fsl,mpr121
|
||||
# Monolithic Power Systems Inc. multi-phase controller mp2888
|
||||
- mps,mp2888
|
||||
# Monolithic Power Systems Inc. multi-phase controller mp2971
|
||||
- mps,mp2971
|
||||
# Monolithic Power Systems Inc. multi-phase controller mp2973
|
||||
- mps,mp2973
|
||||
# Monolithic Power Systems Inc. multi-phase controller mp2975
|
||||
- mps,mp2975
|
||||
# Honeywell Humidicon HIH-6130 humidity/temperature sensor
|
||||
@ -315,6 +319,8 @@ properties:
|
||||
- plx,pex8648
|
||||
# Pulsedlight LIDAR range-finding sensor
|
||||
- pulsedlight,lidar-lite-v2
|
||||
# Renesas HS3001 Temperature and Relative Humidity Sensors
|
||||
- renesas,hs3001
|
||||
# Renesas ISL29501 time-of-flight sensor
|
||||
- renesas,isl29501
|
||||
# Rohm DH2228FV
|
||||
|
@ -27,7 +27,7 @@ not strictly considered I/O devices. They are considered here as well,
|
||||
although they are not the focus of this document.
|
||||
|
||||
Some additional information can also be found in the kernel source under
|
||||
Documentation/s390/driver-model.rst.
|
||||
Documentation/arch/s390/driver-model.rst.
|
||||
|
||||
The css bus
|
||||
===========
|
||||
@ -38,7 +38,7 @@ into several categories:
|
||||
* Standard I/O subchannels, for use by the system. They have a child
|
||||
device on the ccw bus and are described below.
|
||||
* I/O subchannels bound to the vfio-ccw driver. See
|
||||
Documentation/s390/vfio-ccw.rst.
|
||||
Documentation/arch/s390/vfio-ccw.rst.
|
||||
* Message subchannels. No Linux driver currently exists.
|
||||
* CHSC subchannels (at most one). The chsc subchannel driver can be used
|
||||
to send asynchronous chsc commands.
|
||||
|
@ -332,54 +332,121 @@ Encryption modes and usage
|
||||
fscrypt allows one encryption mode to be specified for file contents
|
||||
and one encryption mode to be specified for filenames. Different
|
||||
directory trees are permitted to use different encryption modes.
|
||||
|
||||
Supported modes
|
||||
---------------
|
||||
|
||||
Currently, the following pairs of encryption modes are supported:
|
||||
|
||||
- AES-256-XTS for contents and AES-256-CTS-CBC for filenames
|
||||
- AES-128-CBC for contents and AES-128-CTS-CBC for filenames
|
||||
- AES-256-XTS for contents and AES-256-HCTR2 for filenames
|
||||
- Adiantum for both contents and filenames
|
||||
- AES-256-XTS for contents and AES-256-HCTR2 for filenames (v2 policies only)
|
||||
- SM4-XTS for contents and SM4-CTS-CBC for filenames (v2 policies only)
|
||||
- AES-128-CBC-ESSIV for contents and AES-128-CTS-CBC for filenames
|
||||
- SM4-XTS for contents and SM4-CTS-CBC for filenames
|
||||
|
||||
If unsure, you should use the (AES-256-XTS, AES-256-CTS-CBC) pair.
|
||||
Authenticated encryption modes are not currently supported because of
|
||||
the difficulty of dealing with ciphertext expansion. Therefore,
|
||||
contents encryption uses a block cipher in `XTS mode
|
||||
<https://en.wikipedia.org/wiki/Disk_encryption_theory#XTS>`_ or
|
||||
`CBC-ESSIV mode
|
||||
<https://en.wikipedia.org/wiki/Disk_encryption_theory#Encrypted_salt-sector_initialization_vector_(ESSIV)>`_,
|
||||
or a wide-block cipher. Filenames encryption uses a
|
||||
block cipher in `CTS-CBC mode
|
||||
<https://en.wikipedia.org/wiki/Ciphertext_stealing>`_ or a wide-block
|
||||
cipher.
|
||||
|
||||
AES-128-CBC was added only for low-powered embedded devices with
|
||||
crypto accelerators such as CAAM or CESA that do not support XTS. To
|
||||
use AES-128-CBC, CONFIG_CRYPTO_ESSIV and CONFIG_CRYPTO_SHA256 (or
|
||||
another SHA-256 implementation) must be enabled so that ESSIV can be
|
||||
used.
|
||||
The (AES-256-XTS, AES-256-CTS-CBC) pair is the recommended default.
|
||||
It is also the only option that is *guaranteed* to always be supported
|
||||
if the kernel supports fscrypt at all; see `Kernel config options`_.
|
||||
|
||||
Adiantum is a (primarily) stream cipher-based mode that is fast even
|
||||
on CPUs without dedicated crypto instructions. It's also a true
|
||||
wide-block mode, unlike XTS. It can also eliminate the need to derive
|
||||
per-file encryption keys. However, it depends on the security of two
|
||||
primitives, XChaCha12 and AES-256, rather than just one. See the
|
||||
paper "Adiantum: length-preserving encryption for entry-level
|
||||
processors" (https://eprint.iacr.org/2018/720.pdf) for more details.
|
||||
To use Adiantum, CONFIG_CRYPTO_ADIANTUM must be enabled. Also, fast
|
||||
implementations of ChaCha and NHPoly1305 should be enabled, e.g.
|
||||
CONFIG_CRYPTO_CHACHA20_NEON and CONFIG_CRYPTO_NHPOLY1305_NEON for ARM.
|
||||
The (AES-256-XTS, AES-256-HCTR2) pair is also a good choice that
|
||||
upgrades the filenames encryption to use a wide-block cipher. (A
|
||||
*wide-block cipher*, also called a tweakable super-pseudorandom
|
||||
permutation, has the property that changing one bit scrambles the
|
||||
entire result.) As described in `Filenames encryption`_, a wide-block
|
||||
cipher is the ideal mode for the problem domain, though CTS-CBC is the
|
||||
"least bad" choice among the alternatives. For more information about
|
||||
HCTR2, see `the HCTR2 paper <https://eprint.iacr.org/2021/1441.pdf>`_.
|
||||
|
||||
AES-256-HCTR2 is another true wide-block encryption mode that is intended for
|
||||
use on CPUs with dedicated crypto instructions. AES-256-HCTR2 has the property
|
||||
that a bitflip in the plaintext changes the entire ciphertext. This property
|
||||
makes it desirable for filename encryption since initialization vectors are
|
||||
reused within a directory. For more details on AES-256-HCTR2, see the paper
|
||||
"Length-preserving encryption with HCTR2"
|
||||
(https://eprint.iacr.org/2021/1441.pdf). To use AES-256-HCTR2,
|
||||
CONFIG_CRYPTO_HCTR2 must be enabled. Also, fast implementations of XCTR and
|
||||
POLYVAL should be enabled, e.g. CRYPTO_POLYVAL_ARM64_CE and
|
||||
CRYPTO_AES_ARM64_CE_BLK for ARM64.
|
||||
Adiantum is recommended on systems where AES is too slow due to lack
|
||||
of hardware acceleration for AES. Adiantum is a wide-block cipher
|
||||
that uses XChaCha12 and AES-256 as its underlying components. Most of
|
||||
the work is done by XChaCha12, which is much faster than AES when AES
|
||||
acceleration is unavailable. For more information about Adiantum, see
|
||||
`the Adiantum paper <https://eprint.iacr.org/2018/720.pdf>`_.
|
||||
|
||||
SM4 is a Chinese block cipher that is an alternative to AES. It has
|
||||
not seen as much security review as AES, and it only has a 128-bit key
|
||||
size. It may be useful in cases where its use is mandated.
|
||||
Otherwise, it should not be used. For SM4 support to be available, it
|
||||
also needs to be enabled in the kernel crypto API.
|
||||
The (AES-128-CBC-ESSIV, AES-128-CTS-CBC) pair exists only to support
|
||||
systems whose only form of AES acceleration is an off-CPU crypto
|
||||
accelerator such as CAAM or CESA that does not support XTS.
|
||||
|
||||
New encryption modes can be added relatively easily, without changes
|
||||
to individual filesystems. However, authenticated encryption (AE)
|
||||
modes are not currently supported because of the difficulty of dealing
|
||||
with ciphertext expansion.
|
||||
The remaining mode pairs are the "national pride ciphers":
|
||||
|
||||
- (SM4-XTS, SM4-CTS-CBC)
|
||||
|
||||
Generally speaking, these ciphers aren't "bad" per se, but they
|
||||
receive limited security review compared to the usual choices such as
|
||||
AES and ChaCha. They also don't bring much new to the table. It is
|
||||
suggested to only use these ciphers where their use is mandated.
|
||||
|
||||
Kernel config options
|
||||
---------------------
|
||||
|
||||
Enabling fscrypt support (CONFIG_FS_ENCRYPTION) automatically pulls in
|
||||
only the basic support from the crypto API needed to use AES-256-XTS
|
||||
and AES-256-CTS-CBC encryption. For optimal performance, it is
|
||||
strongly recommended to also enable any available platform-specific
|
||||
kconfig options that provide acceleration for the algorithm(s) you
|
||||
wish to use. Support for any "non-default" encryption modes typically
|
||||
requires extra kconfig options as well.
|
||||
|
||||
Below, some relevant options are listed by encryption mode. Note,
|
||||
acceleration options not listed below may be available for your
|
||||
platform; refer to the kconfig menus. File contents encryption can
|
||||
also be configured to use inline encryption hardware instead of the
|
||||
kernel crypto API (see `Inline encryption support`_); in that case,
|
||||
the file contents mode doesn't need to supported in the kernel crypto
|
||||
API, but the filenames mode still does.
|
||||
|
||||
- AES-256-XTS and AES-256-CTS-CBC
|
||||
- Recommended:
|
||||
- arm64: CONFIG_CRYPTO_AES_ARM64_CE_BLK
|
||||
- x86: CONFIG_CRYPTO_AES_NI_INTEL
|
||||
|
||||
- AES-256-HCTR2
|
||||
- Mandatory:
|
||||
- CONFIG_CRYPTO_HCTR2
|
||||
- Recommended:
|
||||
- arm64: CONFIG_CRYPTO_AES_ARM64_CE_BLK
|
||||
- arm64: CONFIG_CRYPTO_POLYVAL_ARM64_CE
|
||||
- x86: CONFIG_CRYPTO_AES_NI_INTEL
|
||||
- x86: CONFIG_CRYPTO_POLYVAL_CLMUL_NI
|
||||
|
||||
- Adiantum
|
||||
- Mandatory:
|
||||
- CONFIG_CRYPTO_ADIANTUM
|
||||
- Recommended:
|
||||
- arm32: CONFIG_CRYPTO_CHACHA20_NEON
|
||||
- arm32: CONFIG_CRYPTO_NHPOLY1305_NEON
|
||||
- arm64: CONFIG_CRYPTO_CHACHA20_NEON
|
||||
- arm64: CONFIG_CRYPTO_NHPOLY1305_NEON
|
||||
- x86: CONFIG_CRYPTO_CHACHA20_X86_64
|
||||
- x86: CONFIG_CRYPTO_NHPOLY1305_SSE2
|
||||
- x86: CONFIG_CRYPTO_NHPOLY1305_AVX2
|
||||
|
||||
- AES-128-CBC-ESSIV and AES-128-CTS-CBC:
|
||||
- Mandatory:
|
||||
- CONFIG_CRYPTO_ESSIV
|
||||
- CONFIG_CRYPTO_SHA256 or another SHA-256 implementation
|
||||
- Recommended:
|
||||
- AES-CBC acceleration
|
||||
|
||||
fscrypt also uses HMAC-SHA512 for key derivation, so enabling SHA-512
|
||||
acceleration is recommended:
|
||||
|
||||
- SHA-512
|
||||
- Recommended:
|
||||
- arm64: CONFIG_CRYPTO_SHA512_ARM64_CE
|
||||
- x86: CONFIG_CRYPTO_SHA512_SSSE3
|
||||
|
||||
Contents encryption
|
||||
-------------------
|
||||
@ -493,7 +560,14 @@ This structure must be initialized as follows:
|
||||
be set to constants from ``<linux/fscrypt.h>`` which identify the
|
||||
encryption modes to use. If unsure, use FSCRYPT_MODE_AES_256_XTS
|
||||
(1) for ``contents_encryption_mode`` and FSCRYPT_MODE_AES_256_CTS
|
||||
(4) for ``filenames_encryption_mode``.
|
||||
(4) for ``filenames_encryption_mode``. For details, see `Encryption
|
||||
modes and usage`_.
|
||||
|
||||
v1 encryption policies only support three combinations of modes:
|
||||
(FSCRYPT_MODE_AES_256_XTS, FSCRYPT_MODE_AES_256_CTS),
|
||||
(FSCRYPT_MODE_AES_128_CBC, FSCRYPT_MODE_AES_128_CTS), and
|
||||
(FSCRYPT_MODE_ADIANTUM, FSCRYPT_MODE_ADIANTUM). v2 policies support
|
||||
all combinations documented in `Supported modes`_.
|
||||
|
||||
- ``flags`` contains optional flags from ``<linux/fscrypt.h>``:
|
||||
|
||||
|
@ -146,9 +146,10 @@ For the rest of this document we will prefix all userspace ids with ``u`` and
|
||||
all kernel ids with ``k``. Ranges of idmappings will be prefixed with ``r``. So
|
||||
an idmapping will be written as ``u0:k10000:r10000``.
|
||||
|
||||
For example, the id ``u1000`` is an id in the upper idmapset or "userspace
|
||||
idmapset" starting with ``u1000``. And it is mapped to ``k11000`` which is a
|
||||
kernel id in the lower idmapset or "kernel idmapset" starting with ``k10000``.
|
||||
For example, within this idmapping, the id ``u1000`` is an id in the upper
|
||||
idmapset or "userspace idmapset" starting with ``u0``. And it is mapped to
|
||||
``k11000`` which is a kernel id in the lower idmapset or "kernel idmapset"
|
||||
starting with ``k10000``.
|
||||
|
||||
A kernel id is always created by an idmapping. Such idmappings are associated
|
||||
with user namespaces. Since we mainly care about how idmappings work we're not
|
||||
@ -373,6 +374,13 @@ kernel maps the caller's userspace id down into a kernel id according to the
|
||||
caller's idmapping and then maps that kernel id up according to the
|
||||
filesystem's idmapping.
|
||||
|
||||
From the implementation point it's worth mentioning how idmappings are represented.
|
||||
All idmappings are taken from the corresponding user namespace.
|
||||
|
||||
- caller's idmapping (usually taken from ``current_user_ns()``)
|
||||
- filesystem's idmapping (``sb->s_user_ns``)
|
||||
- mount's idmapping (``mnt_idmap(vfsmnt)``)
|
||||
|
||||
Let's see some examples with caller/filesystem idmapping but without mount
|
||||
idmappings. This will exhibit some problems we can hit. After that we will
|
||||
revisit/reconsider these examples, this time using mount idmappings, to see how
|
||||
|
@ -85,13 +85,14 @@ prototypes::
|
||||
struct dentry *dentry, struct fileattr *fa);
|
||||
int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
|
||||
struct posix_acl * (*get_acl)(struct mnt_idmap *, struct dentry *, int);
|
||||
struct offset_ctx *(*get_offset_ctx)(struct inode *inode);
|
||||
|
||||
locking rules:
|
||||
all may block
|
||||
|
||||
============== =============================================
|
||||
============== ==================================================
|
||||
ops i_rwsem(inode)
|
||||
============== =============================================
|
||||
============== ==================================================
|
||||
lookup: shared
|
||||
create: exclusive
|
||||
link: exclusive (both)
|
||||
@ -115,7 +116,8 @@ atomic_open: shared (exclusive if O_CREAT is set in open flags)
|
||||
tmpfile: no
|
||||
fileattr_get: no or exclusive
|
||||
fileattr_set: exclusive
|
||||
============== =============================================
|
||||
get_offset_ctx no
|
||||
============== ==================================================
|
||||
|
||||
|
||||
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem
|
||||
@ -374,10 +376,17 @@ invalidate_lock before invalidating page cache in truncate / hole punch
|
||||
path (and thus calling into ->invalidate_folio) to block races between page
|
||||
cache invalidation and page cache filling functions (fault, read, ...).
|
||||
|
||||
->release_folio() is called when the kernel is about to try to drop the
|
||||
buffers from the folio in preparation for freeing it. It returns false to
|
||||
indicate that the buffers are (or may be) freeable. If ->release_folio is
|
||||
NULL, the kernel assumes that the fs has no private interest in the buffers.
|
||||
->release_folio() is called when the MM wants to make a change to the
|
||||
folio that would invalidate the filesystem's private data. For example,
|
||||
it may be about to be removed from the address_space or split. The folio
|
||||
is locked and not under writeback. It may be dirty. The gfp parameter
|
||||
is not usually used for allocation, but rather to indicate what the
|
||||
filesystem may do to attempt to free the private data. The filesystem may
|
||||
return false to indicate that the folio's private data cannot be freed.
|
||||
If it returns true, it should have already removed the private data from
|
||||
the folio. If a filesystem does not provide a ->release_folio method,
|
||||
the pagecache will assume that private data is buffer_heads and call
|
||||
try_to_free_buffers().
|
||||
|
||||
->free_folio() is called when the kernel has dropped the folio
|
||||
from the page cache.
|
||||
|
@ -21,8 +21,8 @@ explained further below, some of which can be reconfigured dynamically on the
|
||||
fly using a remount ('mount -o remount ...') of the filesystem. A tmpfs
|
||||
filesystem can be resized but it cannot be resized to a size below its current
|
||||
usage. tmpfs also supports POSIX ACLs, and extended attributes for the
|
||||
trusted.* and security.* namespaces. ramfs does not use swap and you cannot
|
||||
modify any parameter for a ramfs filesystem. The size limit of a ramfs
|
||||
trusted.*, security.* and user.* namespaces. ramfs does not use swap and you
|
||||
cannot modify any parameter for a ramfs filesystem. The size limit of a ramfs
|
||||
filesystem is how much memory you have available, and so care must be taken if
|
||||
used so to not run out of memory.
|
||||
|
||||
@ -97,6 +97,9 @@ mount with such options, since it allows any user with write access to
|
||||
use up all the memory on the machine; but enhances the scalability of
|
||||
that instance in a system with many CPUs making intensive use of it.
|
||||
|
||||
If nr_inodes is not 0, that limited space for inodes is also used up by
|
||||
extended attributes: "df -i"'s IUsed and IUse% increase, IFree decreases.
|
||||
|
||||
tmpfs blocks may be swapped out, when there is a shortage of memory.
|
||||
tmpfs has a mount option to disable its use of swap:
|
||||
|
||||
@ -123,6 +126,37 @@ sysfs file /sys/kernel/mm/transparent_hugepage/shmem_enabled: which can
|
||||
be used to deny huge pages on all tmpfs mounts in an emergency, or to
|
||||
force huge pages on all tmpfs mounts for testing.
|
||||
|
||||
tmpfs also supports quota with the following mount options
|
||||
|
||||
======================== =================================================
|
||||
quota User and group quota accounting and enforcement
|
||||
is enabled on the mount. Tmpfs is using hidden
|
||||
system quota files that are initialized on mount.
|
||||
usrquota User quota accounting and enforcement is enabled
|
||||
on the mount.
|
||||
grpquota Group quota accounting and enforcement is enabled
|
||||
on the mount.
|
||||
usrquota_block_hardlimit Set global user quota block hard limit.
|
||||
usrquota_inode_hardlimit Set global user quota inode hard limit.
|
||||
grpquota_block_hardlimit Set global group quota block hard limit.
|
||||
grpquota_inode_hardlimit Set global group quota inode hard limit.
|
||||
======================== =================================================
|
||||
|
||||
None of the quota related mount options can be set or changed on remount.
|
||||
|
||||
Quota limit parameters accept a suffix k, m or g for kilo, mega and giga
|
||||
and can't be changed on remount. Default global quota limits are taking
|
||||
effect for any and all user/group/project except root the first time the
|
||||
quota entry for user/group/project id is being accessed - typically the
|
||||
first time an inode with a particular id ownership is being created after
|
||||
the mount. In other words, instead of the limits being initialized to zero,
|
||||
they are initialized with the particular value provided with these mount
|
||||
options. The limits can be changed for any user/group id at any time as they
|
||||
normally can be.
|
||||
|
||||
Note that tmpfs quotas do not support user namespaces so no uid/gid
|
||||
translation is done if quotas are enabled inside user namespaces.
|
||||
|
||||
tmpfs has a mount option to set the NUMA memory allocation policy for
|
||||
all files in that instance (if CONFIG_NUMA is enabled) - which can be
|
||||
adjusted on the fly via 'mount -o remount ...'
|
||||
|
@ -260,9 +260,11 @@ filesystem. The following members are defined:
|
||||
void (*evict_inode) (struct inode *);
|
||||
void (*put_super) (struct super_block *);
|
||||
int (*sync_fs)(struct super_block *sb, int wait);
|
||||
int (*freeze_super) (struct super_block *);
|
||||
int (*freeze_super) (struct super_block *sb,
|
||||
enum freeze_holder who);
|
||||
int (*freeze_fs) (struct super_block *);
|
||||
int (*thaw_super) (struct super_block *);
|
||||
int (*thaw_super) (struct super_block *sb,
|
||||
enum freeze_wholder who);
|
||||
int (*unfreeze_fs) (struct super_block *);
|
||||
int (*statfs) (struct dentry *, struct kstatfs *);
|
||||
int (*remount_fs) (struct super_block *, int *, char *);
|
||||
@ -515,6 +517,7 @@ As of kernel 2.6.22, the following members are defined:
|
||||
int (*fileattr_set)(struct mnt_idmap *idmap,
|
||||
struct dentry *dentry, struct fileattr *fa);
|
||||
int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
|
||||
struct offset_ctx *(*get_offset_ctx)(struct inode *inode);
|
||||
};
|
||||
|
||||
Again, all methods are called without any locks being held, unless
|
||||
@ -675,7 +678,10 @@ otherwise noted.
|
||||
called on ioctl(FS_IOC_SETFLAGS) and ioctl(FS_IOC_FSSETXATTR) to
|
||||
change miscellaneous file flags and attributes. Callers hold
|
||||
i_rwsem exclusive. If unset, then fall back to f_op->ioctl().
|
||||
|
||||
``get_offset_ctx``
|
||||
called to get the offset context for a directory inode. A
|
||||
filesystem must define this operation to use
|
||||
simple_offset_dir_operations.
|
||||
|
||||
The Address Space Object
|
||||
========================
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user