mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-03 10:10:33 +02: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
					
				
					 2222 changed files with 66244 additions and 37810 deletions
				
			
		
							
								
								
									
										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 a new issue