Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d033ed9e authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull hwspinlock updates from Ohad Ben-Cohen:

 - hwspinlock core DT support from Suman Anna

 - OMAP hwspinlock DT support from Suman Anna

 - QCOM hwspinlock DT support from Bjorn Andersson

 - a new CSR atlas7 hwspinlock driver from Wei Chen

 - CSR atlas7 hwspinlock DT binding document from Wei Chen

 - a tiny QCOM hwspinlock driver fix from Bjorn Andersson

* tag 'hwspinlock-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/ohad/hwspinlock:
  hwspinlock: qcom: Correct msb in regmap_field
  DT: hwspinlock: add the CSR atlas7 hwspinlock bindings document
  hwspinlock: add a CSR atlas7 driver
  hwspinlock: qcom: Add support for Qualcomm HW Mutex block
  DT: hwspinlock: Add binding documentation for Qualcomm hwmutex
  hwspinlock/omap: add support for dt nodes
  Documentation: dt: add the omap hwspinlock bindings document
  hwspinlock/core: add device tree support
  Documentation: dt: add common bindings for hwspinlock
parents 6361c845 bd5717a4
Loading
Loading
Loading
Loading
+59 −0
Original line number Diff line number Diff line
Generic hwlock bindings
=======================

Generic bindings that are common to all the hwlock platform specific driver
implementations.

Please also look through the individual platform specific hwlock binding
documentations for identifying any additional properties specific to that
platform.

hwlock providers:
=================

Required properties:
- #hwlock-cells:        Specifies the number of cells needed to represent a
                        specific lock.

hwlock users:
=============

Consumers that require specific hwlock(s) should specify them using the
property "hwlocks", and an optional "hwlock-names" property.

Required properties:
- hwlocks:              List of phandle to a hwlock provider node and an
                        associated hwlock args specifier as indicated by
                        #hwlock-cells. The list can have just a single hwlock
                        or multiple hwlocks, with each hwlock represented by
                        a phandle and a corresponding args specifier.

Optional properties:
- hwlock-names:         List of hwlock name strings defined in the same order
                        as the hwlocks, with one name per hwlock. Consumers can
                        use the hwlock-names to match and get a specific hwlock.


1. Example of a node using a single specific hwlock:

The following example has a node requesting a hwlock in the bank defined by
the node hwlock1. hwlock1 is a hwlock provider with an argument specifier
of length 1.

	node {
		...
		hwlocks = <&hwlock1 2>;
		...
	};

2. Example of a node using multiple specific hwlocks:

The following example has a node requesting two hwlocks, a hwlock within
the hwlock device node 'hwlock1' with #hwlock-cells value of 1, and another
hwlock within the hwlock device node 'hwlock2' with #hwlock-cells value of 2.

	node {
		...
		hwlocks = <&hwlock1 2>, <&hwlock2 0 3>;
		...
	};
+26 −0
Original line number Diff line number Diff line
OMAP4+ HwSpinlock Driver
========================

Required properties:
- compatible:		Should be "ti,omap4-hwspinlock" for
			    OMAP44xx, OMAP54xx, AM33xx, AM43xx, DRA7xx SoCs
- reg:			Contains the hwspinlock module register address space
			(base address and length)
- ti,hwmods:		Name of the hwmod associated with the hwspinlock device
- #hwlock-cells:	Should be 1. The OMAP hwspinlock users will use a
			0-indexed relative hwlock number as the argument
			specifier value for requesting a specific hwspinlock
			within a hwspinlock bank.

Please look at the generic hwlock binding for usage information for consumers,
"Documentation/devicetree/bindings/hwlock/hwlock.txt"

Example:

/* OMAP4 */
hwspinlock: spinlock@4a0f6000 {
	compatible = "ti,omap4-hwspinlock";
	reg = <0x4a0f6000 0x1000>;
	ti,hwmods = "spinlock";
	#hwlock-cells = <1>;
};
+39 −0
Original line number Diff line number Diff line
Qualcomm Hardware Mutex Block:

The hardware block provides mutexes utilized between different processors on
the SoC as part of the communication protocol used by these processors.

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,sfpb-mutex",
		    "qcom,tcsr-mutex"

- syscon:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: one cell containing:
		    syscon phandle
		    offset of the hwmutex block within the syscon
		    stride of the hwmutex registers

- #hwlock-cells:
	Usage: required
	Value type: <u32>
	Definition: must be 1, the specified cell represent the lock id
		    (hwlock standard property, see hwlock.txt)

Example:

	tcsr_mutex_block: syscon@fd484000 {
		compatible = "syscon";
		reg = <0xfd484000 0x2000>;
	};

	hwlock@fd484000 {
		compatible = "qcom,tcsr-mutex";
		syscon = <&tcsr_mutex_block 0 0x80>;

		#hwlock-cells = <1>;
	};
+28 −0
Original line number Diff line number Diff line
SIRF Hardware spinlock device Binding
-----------------------------------------------

Required properties :
- compatible : shall contain only one of the following:
	"sirf,hwspinlock"

- reg : the register address of hwspinlock

- #hwlock-cells : hwlock users only use the hwlock id to represent a specific
	hwlock, so the number of cells should be <1> here.

Please look at the generic hwlock binding for usage information for consumers,
"Documentation/devicetree/bindings/hwlock/hwlock.txt"

Example of hwlock provider:
	hwlock {
		compatible = "sirf,hwspinlock";
		reg = <0x13240000 0x00010000>;
		#hwlock-cells = <1>;
	};

Example of hwlock users:
	node {
		...
		hwlocks = <&hwlock 2>;
		...
	};
+10 −0
Original line number Diff line number Diff line
@@ -48,6 +48,16 @@ independent, drivers.
     ids for predefined purposes.
     Should be called from a process context (might sleep).

  int of_hwspin_lock_get_id(struct device_node *np, int index);
   - retrieve the global lock id for an OF phandle-based specific lock.
     This function provides a means for DT users of a hwspinlock module
     to get the global lock id of a specific hwspinlock, so that it can
     be requested using the normal hwspin_lock_request_specific() API.
     The function returns a lock id number on success, -EPROBE_DEFER if
     the hwspinlock device is not yet registered with the core, or other
     error values.
     Should be called from a process context (might sleep).

  int hwspin_lock_free(struct hwspinlock *hwlock);
   - free a previously-assigned hwspinlock; returns 0 on success, or an
     appropriate error code on failure (e.g. -EINVAL if the hwspinlock
Loading