Message ID | 1556183843-28033-1-git-send-email-fabien.dessenne@st.com (mailing list archive) |
---|---|
Headers | show |
Series | hwspinlock: allow sharing of hwspinlocks | expand |
Hi I Got Rob's Reviewed-by. Any further comments? Fabien On 25/04/2019 11:17 AM, Fabien Dessenne wrote: > The current implementation does not allow two different devices to use > a common hwspinlock. This patch set proposes to have, as an option, some > hwspinlocks shared between several users. > > Below is an example that explain the need for this: > exti: interrupt-controller@5000d000 { > compatible = "st,stm32mp1-exti", "syscon"; > interrupt-controller; > #interrupt-cells = <2>; > reg = <0x5000d000 0x400>; > hwlocks = <&hsem 1>; > }; > The two drivers (stm32mp1-exti and syscon) refer to the same hwlock. > With the current hwspinlock implementation, only the first driver succeeds > in requesting (hwspin_lock_request_specific) the hwlock. The second request > fails. > > > The proposed approach does not modify the API, but extends the DT 'hwlocks' > property with a second optional parameter (the first one identifies an > hwlock) that specifies whether an hwlock is requested for exclusive usage > (current behavior) or can be shared between several users. > Examples: > hwlocks = <&hsem 8>; Ref to hwlock #8 for exclusive usage > hwlocks = <&hsem 8 0>; Ref to hwlock #8 for exclusive (0) usage > hwlocks = <&hsem 8 1>; Ref to hwlock #8 for shared (1) usage > > As a constraint, the #hwlock-cells value must be 1 or 2. > In the current implementation, this can have theorically any value but: > - all of the exisiting drivers use the same value : 1. > - the framework supports only one value : 1 (see implementation of > of_hwspin_lock_simple_xlate()) > Hence, it shall not be a problem to restrict this value to 1 or 2 since > it won't break any driver. > > Changes since v1: > * Removed useless 'status = "okay"' from stm32mp157c.dtsi > > Fabien Dessenne (6): > dt-bindings: hwlock: add support of shared locks > hwspinlock: allow sharing of hwspinlocks > dt-bindings: hwlock: update STM32 #hwlock-cells value > ARM: dts: stm32: Add hwspinlock node for stm32mp157 SoC > ARM: dts: stm32: Add hwlock for irqchip on stm32mp157 > ARM: dts: stm32: hwlocks for GPIO for stm32mp157 > > .../devicetree/bindings/hwlock/hwlock.txt | 27 +++++-- > .../bindings/hwlock/st,stm32-hwspinlock.txt | 6 +- > Documentation/hwspinlock.txt | 10 ++- > arch/arm/boot/dts/stm32mp157-pinctrl.dtsi | 2 + > arch/arm/boot/dts/stm32mp157c.dtsi | 9 +++ > drivers/hwspinlock/hwspinlock_core.c | 82 +++++++++++++++++----- > drivers/hwspinlock/hwspinlock_internal.h | 2 + > 7 files changed, 107 insertions(+), 31 deletions(-) >