Devicetree
 help / color / mirror / Atom feed
From: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
To: Rob Herring <robh@kernel.org>
Cc: linux-arm-msm@vger.kernel.org,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>, Lee Jones <lee@kernel.org>,
	Stephen Boyd <sboyd@kernel.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>,
	David Collins <david.collins@oss.qualcomm.com>,
	Subbaraman Narayanamurthy
	<subbaraman.narayanamurthy@oss.qualcomm.com>,
	Kamal Wadhwa <kamal.wadhwa@oss.qualcomm.com>,
	linux-input@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Subject: Re: [PATCH v6 1/2] dt-bindings: input: Add Qualcomm SPMI PMIC haptics
Date: Tue, 25 Aug 2026 10:51:34 +0800	[thread overview]
Message-ID: <02269d67-41e3-48eb-9ce1-e3775a4c2eaa@oss.qualcomm.com> (raw)
In-Reply-To: <20260807155640.GA893689-robh@kernel.org>



On 8/7/2026 11:56 PM, Rob Herring wrote:
> On Thu, Aug 06, 2026 at 11:21:40PM -0700, Fenglin Wu wrote:
>> Add binding document for the haptics module inside Qualcomm PMIC
>> PMIH0108.
>>
>> Assisted-by: Claude:claude-4-8-opus
>> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
>> Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
>> ---
>>  .../bindings/input/qcom,spmi-haptics.yaml          | 136 +++++++++++++++++++++
>>  1 file changed, 136 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/input/qcom,spmi-haptics.yaml b/Documentation/devicetree/bindings/input/qcom,spmi-haptics.yaml
>> new file mode 100644
>> index 000000000000..b1a69e9886ee
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/input/qcom,spmi-haptics.yaml
>> @@ -0,0 +1,136 @@
>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/input/qcom,spmi-haptics.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Haptics device inside Qualcomm Technologies, Inc. PMIC
>> +
>> +maintainers:
>> +  - Fenglin Wu <fenglin.wu@oss.qualcomm.com>
>> +
>> +description: |
>> +  Certain Qualcomm PMICs integrate a haptics module, such as the HAP530_HV haptics
>> +  module in the PMIH0108 PMIC, which drives an LRA (Linear Resonant Actuator) with
>> +  an output voltage up to 10 V. Several play modes are supported in HAP530_HV:
>> +
>> +    DIRECT_PLAY: The hardware outputs sinusoidal waveforms whose period is
>> +      defined by qcom,lra-period-us and whose peak voltage is defined by
>> +      qcom,vmax-microvolt. The driving amplitude can be scaled in the range
>> +      [0, 255] via a single register byte.  Hardware-based LRA auto-resonance
>> +      tracking is enabled by default in this mode, allowing the haptics engine
>> +      to follow the actual resonant frequency of the LRA and update the driving
>> +      period accordingly to achieve stronger vibration magnitude.
>> +
>> +    FIFO: The hardware can play an arbitrary waveform composed of a sequence
>> +      of 8-bit samples at a configurable play rate.  Samples are pre-filled
>> +      into the internal FIFO memory of the haptics module and continuously
>> +      replenished via the FIFO-empty IRQ until all samples have been played.
>> +      An 8K-byte FIFO memory bank is available in the HAP530_HV haptics module,
>> +      shared between the FIFO and PAT_MEM play modes. The memory partition
>> +      between the two modes is configurable via registers, and FIFO mode always
>> +      uses the 1st partition starting from offset 0.
>> +
>> +    PAT_MEM: This mode is very similar to FIFO streaming mode but without the
>> +      data refilling capability. It is designed mainly for short, latency-critical
>> +      vibrations. The memory space for PAT_MEM mode must be reserved for dedicated
>> +      usage, and the waveform data should be preloaded and remain unchanged
>> +      thereafter. The haptics module can play the waveform data from the memory
>> +      region specified by the PAT_MEM play start address and length registers.
>> +
>> +    In either FIFO mode or PAT_MEM mode, the following play rates are supported:
>> +      -- 0(T_LRA): each FIFO byte drives one full sinusoidal cycle with the
>> +        period defined in qcom,lra-period-us.
>> +      -- 1/2/3(T_LRA_DIV_2/4/8): each FIFO byte drives a half/quarter/eighth
>> +        sinusoidal cycle with the period defined in qcom,lra-period-us.
>> +      -- 4/5/6(T_LRA_X_2/4/8): each FIFO byte drives 2/4/8 sinusoidal cycles
>> +        with the period defined in qcom,lra-period-us.
>> +      -- 8/9/10/11/12/13(8KHz/16KHz/24KHz/32KHz/44.1KHz/48KHz): the FIFO
>> +        data is treated as PCM samples and drives the output with an
>> +        arbitrarily shaped waveform.  This mode is typically used to define
>> +        custom driving waveforms for specific vibration effects such as fast
>> +        attack, crisp brake, etc.
>> +
>> +    The drive voltage in FIFO or PAT_MEM mode can exceed the value defined in
>> +    qcom,vmax-microvolt to achieve a special vibration effect, but the waveform
>> +    must be short enough to prevent the LRA from being damaged by operating at
>> +    an overvoltage.
>> +
>> +    Also, hardware-based LRA auto-resonance tracking is normally disabled in
>> +    FIFO or PAT_MEM mode, as these modes are intended to drive arbitrary
>> +    waveforms that may not follow the resonant frequency; autonomous hardware
>> +    resonance correction would interfere with the intended output.
>> +
>> +properties:
>> +  compatible:
>> +    items:
>> +      - const: qcom,pmih0108-haptics
>> +      - const: qcom,spmi-haptics
>> +
>> +  reg:
>> +    items:
>> +      - description: HAP_CFG module base address
>> +      - description: HAP_PTN module base address
>> +
>> +  reg-names:
>> +    items:
>> +      - const: cfg
>> +      - const: ptn
>> +
>> +  interrupts:
>> +    maxItems: 1
>> +
>> +  interrupt-names:
>> +    items:
>> +      - const: fifo-empty
>> +
>> +  qcom,vmax-microvolt:
>> +    description:
>> +      Maximum allowed output driving voltage in microvolts, must be a multiple
>> +      of 50,000 uV. This is the peak driving voltage in DIRECT_PLAY mode,
>> +      which outputs sinusoidal waveforms. The value should be equal to the
>> +      square root of 2 times the Vrms voltage of the LRA.
>> +    minimum: 50000
>> +    maximum: 10000000
>> +    multipleOf: 50000
>> +
>> +  qcom,lra-period-us:
>> +    description:
>> +      LRA actuator initial resonance period in microseconds
>> +      (1,000,000 / resonant_freq_hz).  Used to configure T_LRA-based play
>> +      rates and the auto-resonance zero-crossing window. It could be also used
>> +      as the initial period if the LRA wants to be driven off resonance.
>> +    minimum: 5
>> +    maximum: 20475
>> +    multipleOf: 5
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +  - reg-names
>> +  - interrupts
>> +  - interrupt-names
>> +  - qcom,vmax-microvolt
>> +  - qcom,lra-period-us
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/interrupt-controller/irq.h>
>> +
>> +    pmic {
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>> +
>> +        haptics@f000 {
> 
> No incomplete examples please. Put this in the example for the PMIC.

Thanks for the suggestion. I will change to below in next patch:

    pmic@7 {
        compatible = "qcom,pmih0108", "qcom,spmi-pmic";
        reg = <0x7 SPMI_USID>;
        #address-cells = <1>;
        #size-cells = <0>;

        haptics@f000 {
            compatible = "qcom,pmih0108-haptics", "qcom,spmi-haptics";
            reg = <0xf000>, <0xf100>;
            reg-names = "cfg", "ptn";
            interrupts = <0x7 0xf0 0x1 IRQ_TYPE_EDGE_RISING>;
            interrupt-names = "fifo-empty";

            qcom,vmax-microvolt = <1300000>;
            qcom,lra-period-us = <5880>;
        };
    };
> 
> And please comment on sashiko report. Looks valid to me.

I just replied on that. I dropped the change which added the haptics
device in the spmi-pmic schema as it had been applied:

https://lore.kernel.org/linux-input/178602255123.2917765.7426706813083510078.b4-ty@b4/
> 
> Rob


  reply	other threads:[~2026-08-25  2:51 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-07  6:21 [PATCH v6 0/2] input: misc: Add an initial driver for haptics inside Qcom PMIH010x PMIC Fenglin Wu
2026-08-07  6:21 ` [PATCH v6 1/2] dt-bindings: input: Add Qualcomm SPMI PMIC haptics Fenglin Wu
2026-08-07  6:29   ` sashiko-bot
2026-08-25  2:39     ` Fenglin Wu
2026-08-07 15:56   ` Rob Herring
2026-08-25  2:51     ` Fenglin Wu [this message]
2026-08-07  6:21 ` [PATCH v6 2/2] input: misc: Add Qualcomm SPMI PMIC haptics driver Fenglin Wu
2026-08-07  6:39   ` sashiko-bot
2026-08-17 12:08   ` David Heidelberg
2026-08-23 11:36     ` David Heidelberg
2026-08-25  3:39       ` Fenglin Wu
2026-08-25  3:25     ` Fenglin Wu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=02269d67-41e3-48eb-9ce1-e3775a4c2eaa@oss.qualcomm.com \
    --to=fenglin.wu@oss.qualcomm.com \
    --cc=andersson@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=david.collins@oss.qualcomm.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=kamal.wadhwa@oss.qualcomm.com \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=krzysztof.kozlowski@oss.qualcomm.com \
    --cc=lee@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=subbaraman.narayanamurthy@oss.qualcomm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox