diff mbox series

[v1,2/2] dt-bindings: add bindings for QCOM flash LED

Message ID 20220928024239.3843909-3-quic_fenglinw@quicinc.com
State Changes Requested, archived
Headers show
Series None | expand

Checks

Context Check Description
robh/checkpatch success
robh/patch-applied success
robh/dt-meta-schema fail build log
robh/checkpatch success
robh/patch-applied success
robh/dt-meta-schema fail build log

Commit Message

Fenglin Wu Sept. 28, 2022, 2:42 a.m. UTC
Add binding document for flash LED module inside Qualcomm Technologies,
Inc. PMICs.

Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>
---
 .../bindings/leds/leds-qcom-flash.yaml        | 108 ++++++++++++++++++
 1 file changed, 108 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml

Comments

Krzysztof Kozlowski Sept. 28, 2022, 8:21 a.m. UTC | #1
On 28/09/2022 04:42, Fenglin Wu wrote:
> Add binding document for flash LED module inside Qualcomm Technologies,
> Inc. PMICs.
> 
> Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>

You did not Cc me on first patch, so difficult to say how much it
matches the driver... There is also no DTS.

> ---
>  .../bindings/leds/leds-qcom-flash.yaml        | 108 ++++++++++++++++++
>  1 file changed, 108 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
> 
> diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
> new file mode 100644
> index 000000000000..52a99182961b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml


Filename matching compatible if there is one fallback (e.g.
qcom,spmi-flash-led.yaml).

> @@ -0,0 +1,108 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/leds/leds-qcom-flash.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Flash LED device inside Qualcomm Technologies, Inc. PMICs
> +
> +maintainers:
> +  - Fenglin Wu <quic_fenglinw@quicinc.com>
> +
> +description: |
> +  Flash LED controller is present inside some Qualcomm Technologies, Inc. PMICs.
> +  The flash LED module can have different number of LED channels supported
> +  e.g. 3 or 4. There are some different registers between them but they can
> +  both support maximum current up to 1.5 A per channel and they can also support
> +  ganging 2 channels together to supply maximum current up to 2 A. The current
> +  will be split symmetrically on each channel and they will be enabled and
> +  disabled at the same time.
> +
> +properties:
> +  compatible:
> +    items:
> +      - enum:
> +          - qcom,spmi-flash-led
> +          - qcom,pm8150c-flash-led
> +          - qcom,pm8150l-flash-led
> +          - qcom,pm8350c-flash-led

I doubt these are all different. You should use fallback, which also
will make use of the "items" you used...

> +
> +  reg:
> +    description: address offset of the flash LED controller
> +    maxItems: 1
> +
> +patternProperties:
> +  "^led@[0-3]$":
> +    type: object
> +    $ref: common.yaml#
> +    unevaluatedProperties: false
> +    description:
> +      Represents the physical LED components which are connected to the flash LED channels' output.

Does not look like wrapped at 80.

Other places as well.

> +
> +    properties:

Does not look like you tested the bindings...

You miss here reg.

> +      led-sources:
> +        description: The HW indices of the flash LED channels that connect to the physical LED
> +        allOf:
> +          - minItems: 1
> +            maxItems: 2
> +            items:
> +              enum: [1, 2, 3, 4]
> +
> +      led-max-microamp:
> +        description: |
> +          The maximum current value when LED is not operating in flash mode (i.e. torch mode)
> +          Valid values when an LED is connected to one flash LED channel:
> +            5000 - 500000, step by 5000> +          Valid values when an LED is connected to two flash LED
channels:
> +            10000 - 1000000, step by 10000

You need minimum and maximum.

> +
> +      flash-max-microamp:
> +        description: |
> +          The maximum current value when LED is operating in flash mode.
> +          Valid values when an LED is connected to one flash LED channel:
> +            12500 - 1500000, step by 12500
> +          Valid values when an LED is connected to two flash LED channels:
> +            25000 - 2000000, step by 12500

You need minimum and maximum.


> +
> +      flash-max-timeout-us:
> +        description: |
> +          The maximum timeout value when LED is operating in flash mode.
> +          Valid values: 10000 - 1280000, step by 10000

You need minimum and maximum.

> +
> +    required:
> +      - led-sources
> +      - led-max-microamp

reg.

> +
> +required:
> +  - compatible
> +  - reg
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/leds/common.h>
> +    flash-led@ee00 {

Node name: led-controller

> +            compatible = "qcom,spmi-flash-led";
> +            reg = <0xee00>;
> +
> +            led@0 {

Test your bindings...

> +                    function = LED_FUNCTION_FLASH;

Use 4 spaces for indentation of example.

> +                    color = <LED_COLOR_ID_WHITE>;
> +                    led-sources = <1>, <4>;
> +                    led-max-microamp = <300000>;
> +                    flash-max-microamp = <2000000>;
> +                    flash-max-timeout-us = <1280000>;
> +                    function-enumerator = <0>;
> +            };
> +

Best regards,
Krzysztof
Rob Herring Sept. 28, 2022, 12:38 p.m. UTC | #2
On Wed, 28 Sep 2022 10:42:39 +0800, Fenglin Wu wrote:
> Add binding document for flash LED module inside Qualcomm Technologies,
> Inc. PMICs.
> 
> Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>
> ---
>  .../bindings/leds/leds-qcom-flash.yaml        | 108 ++++++++++++++++++
>  1 file changed, 108 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
> 

My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):

yamllint warnings/errors:

dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/leds/leds-qcom-flash.example.dts:21.17-32: Warning (reg_format): /example-0/flash-led@ee00:reg: property has invalid length (4 bytes) (#address-cells == 1, #size-cells == 1)
Documentation/devicetree/bindings/leds/leds-qcom-flash.example.dts:23.23-31.19: Warning (unit_address_vs_reg): /example-0/flash-led@ee00/led@0: node has a unit name, but no reg or ranges property
Documentation/devicetree/bindings/leds/leds-qcom-flash.example.dts:33.23-41.19: Warning (unit_address_vs_reg): /example-0/flash-led@ee00/led@1: node has a unit name, but no reg or ranges property
Documentation/devicetree/bindings/leds/leds-qcom-flash.example.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/leds/leds-qcom-flash.example.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/leds/leds-qcom-flash.example.dtb: Warning (simple_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/leds/leds-qcom-flash.example.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/leds/leds-qcom-flash.example.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/patch/

This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit.
Fenglin Wu Sept. 29, 2022, 2:20 a.m. UTC | #3
On 2022/9/28 16:21, Krzysztof Kozlowski wrote:
> On 28/09/2022 04:42, Fenglin Wu wrote:
>> Add binding document for flash LED module inside Qualcomm Technologies,
>> Inc. PMICs.
>>
>> Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>
> 
> You did not Cc me on first patch, so difficult to say how much it
> matches the driver... There is also no DTS.
Thanks for reviewing the binding change, I sent the driver changes in 
the same series and you can check it here:
https://lore.kernel.org/linux-leds/6c0e5083-baae-3ed3-5eed-e08bbb9e7576@linaro.org/T/#m97f71ce3f291f62d65f8107352d8ab9507093ab2

I will add you in email to list when sending next patchset.
> 
>> ---
>>   .../bindings/leds/leds-qcom-flash.yaml        | 108 ++++++++++++++++++
>>   1 file changed, 108 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
>> new file mode 100644
>> index 000000000000..52a99182961b
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
> 
> 
> Filename matching compatible if there is one fallback (e.g.
> qcom,spmi-flash-led.yaml).
> 
Sure, I will update the file name to match with the fallback compatible 
string.
>> @@ -0,0 +1,108 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/leds/leds-qcom-flash.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Flash LED device inside Qualcomm Technologies, Inc. PMICs
>> +
>> +maintainers:
>> +  - Fenglin Wu <quic_fenglinw@quicinc.com>
>> +
>> +description: |
>> +  Flash LED controller is present inside some Qualcomm Technologies, Inc. PMICs.
>> +  The flash LED module can have different number of LED channels supported
>> +  e.g. 3 or 4. There are some different registers between them but they can
>> +  both support maximum current up to 1.5 A per channel and they can also support
>> +  ganging 2 channels together to supply maximum current up to 2 A. The current
>> +  will be split symmetrically on each channel and they will be enabled and
>> +  disabled at the same time.
>> +
>> +properties:
>> +  compatible:
>> +    items:
>> +      - enum:
>> +          - qcom,spmi-flash-led
>> +          - qcom,pm8150c-flash-led
>> +          - qcom,pm8150l-flash-led
>> +          - qcom,pm8350c-flash-led
> 
> I doubt these are all different. You should use fallback, which also
> will make use of the "items" you used...
pm8150c and pm8150l are different PMIC variants which have same flash 
LED module with 3 flash LED channels, while pm8350c has a different 
flash LED module with 4 flash LED channels. They can all use 
"qcom,spmi-flash-led" as the fallback because the driver has code logic 
to detect HW sub-types. But I was thinking to give out the PMIC names 
here so anyone who is using the driver could easily identify if the 
driver is suitable for the HW that he/she is using.
> 
>> +
>> +  reg:
>> +    description: address offset of the flash LED controller
>> +    maxItems: 1
>> +
>> +patternProperties:
>> +  "^led@[0-3]$":
>> +    type: object
>> +    $ref: common.yaml#
>> +    unevaluatedProperties: false
>> +    description:
>> +      Represents the physical LED components which are connected to the flash LED channels' output.
> 
> Does not look like wrapped at 80.
> 
> Other places as well.
> Sure, will wrap the lines at 80, I thought not exceeding 110 is also 
acceptable.
>> +
>> +    properties:
> 
> Does not look like you tested the bindings...
> 
> You miss here reg.
> 
will update the node name without using unit name.

>> +      led-sources:
>> +        description: The HW indices of the flash LED channels that connect to the physical LED
>> +        allOf:
>> +          - minItems: 1
>> +            maxItems: 2
>> +            items:
>> +              enum: [1, 2, 3, 4]
>> +
>> +      led-max-microamp:
>> +        description: |
>> +          The maximum current value when LED is not operating in flash mode (i.e. torch mode)
>> +          Valid values when an LED is connected to one flash LED channel:
>> +            5000 - 500000, step by 5000> +          Valid values when an LED is connected to two flash LED
> channels:
>> +            10000 - 1000000, step by 10000
> 
> You need minimum and maximum.
> 
Sure, I will add them
>> +
>> +      flash-max-microamp:
>> +        description: |
>> +          The maximum current value when LED is operating in flash mode.
>> +          Valid values when an LED is connected to one flash LED channel:
>> +            12500 - 1500000, step by 12500
>> +          Valid values when an LED is connected to two flash LED channels:
>> +            25000 - 2000000, step by 12500
> 
> You need minimum and maximum.
Sure, I will add them
> 
> 
>> +
>> +      flash-max-timeout-us:
>> +        description: |
>> +          The maximum timeout value when LED is operating in flash mode.
>> +          Valid values: 10000 - 1280000, step by 10000
> 
> You need minimum and maximum.
> 
>> +
>> +    required:
>> +      - led-sources
>> +      - led-max-microamp
> 
> reg.
> 
>> +
>> +required:
>> +  - compatible
>> +  - reg
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/leds/common.h>
>> +    flash-led@ee00 {
> 
> Node name: led-controller
> 
>> +            compatible = "qcom,spmi-flash-led";
>> +            reg = <0xee00>;
>> +
>> +            led@0 {
> 
> Test your bindings...
> 
>> +                    function = LED_FUNCTION_FLASH;
> 
> Use 4 spaces for indentation of example.
> 
sure, I will update it.
>> +                    color = <LED_COLOR_ID_WHITE>;
>> +                    led-sources = <1>, <4>;
>> +                    led-max-microamp = <300000>;
>> +                    flash-max-microamp = <2000000>;
>> +                    flash-max-timeout-us = <1280000>;
>> +                    function-enumerator = <0>;
>> +            };
>> +
> 
> Best regards,
> Krzysztof
>
Krzysztof Kozlowski Sept. 29, 2022, 7:06 a.m. UTC | #4
On 29/09/2022 04:20, Fenglin Wu wrote:
> 
> 
> On 2022/9/28 16:21, Krzysztof Kozlowski wrote:
>> On 28/09/2022 04:42, Fenglin Wu wrote:
>>> Add binding document for flash LED module inside Qualcomm Technologies,
>>> Inc. PMICs.
>>>
>>> Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>
>>
>> You did not Cc me on first patch, so difficult to say how much it
>> matches the driver... There is also no DTS.
> Thanks for reviewing the binding change, I sent the driver changes in 
> the same series and you can check it here:
> https://lore.kernel.org/linux-leds/6c0e5083-baae-3ed3-5eed-e08bbb9e7576@linaro.org/T/#m97f71ce3f291f62d65f8107352d8ab9507093ab2
> 
> I will add you in email to list when sending next patchset.

Don't add just mine. Use instead scripts/get_maintainers.pl. For small
patchsets recipients should get everything. For big patchsets it is
usually split, where everyone receive only cover letter. It's not the
case here...

>>
>>> ---
>>>   .../bindings/leds/leds-qcom-flash.yaml        | 108 ++++++++++++++++++
>>>   1 file changed, 108 insertions(+)
>>>   create mode 100644 Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
>>>
>>> diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
>>> new file mode 100644
>>> index 000000000000..52a99182961b
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
>>
>>
>> Filename matching compatible if there is one fallback (e.g.
>> qcom,spmi-flash-led.yaml).
>>
> Sure, I will update the file name to match with the fallback compatible 
> string.
>>> @@ -0,0 +1,108 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/leds/leds-qcom-flash.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: Flash LED device inside Qualcomm Technologies, Inc. PMICs
>>> +
>>> +maintainers:
>>> +  - Fenglin Wu <quic_fenglinw@quicinc.com>
>>> +
>>> +description: |
>>> +  Flash LED controller is present inside some Qualcomm Technologies, Inc. PMICs.
>>> +  The flash LED module can have different number of LED channels supported
>>> +  e.g. 3 or 4. There are some different registers between them but they can
>>> +  both support maximum current up to 1.5 A per channel and they can also support
>>> +  ganging 2 channels together to supply maximum current up to 2 A. The current
>>> +  will be split symmetrically on each channel and they will be enabled and
>>> +  disabled at the same time.
>>> +
>>> +properties:
>>> +  compatible:
>>> +    items:
>>> +      - enum:
>>> +          - qcom,spmi-flash-led
>>> +          - qcom,pm8150c-flash-led
>>> +          - qcom,pm8150l-flash-led
>>> +          - qcom,pm8350c-flash-led
>>
>> I doubt these are all different. You should use fallback, which also
>> will make use of the "items" you used...
> pm8150c and pm8150l are different PMIC variants which have same flash 
> LED module with 3 flash LED channels, while pm8350c has a different 
> flash LED module with 4 flash LED channels. They can all use 
> "qcom,spmi-flash-led" as the fallback because the driver has code logic 
> to detect HW sub-types. 

If driver binds to only one compatible, it is expected to be the
fallback for all others. There might be exception for this rule but it
does not look like here.

> But I was thinking to give out the PMIC names 
> here so anyone who is using the driver could easily identify if the 
> driver is suitable for the HW that he/she is using.

I did not say to remove other compatibles, but to use one fallback for
all of them.

Best regards,
Krzysztof
Fenglin Wu Sept. 29, 2022, 10:56 a.m. UTC | #5
On 2022/9/29 15:06, Krzysztof Kozlowski wrote:
> On 29/09/2022 04:20, Fenglin Wu wrote:
>>
>>
>> On 2022/9/28 16:21, Krzysztof Kozlowski wrote:
>>> On 28/09/2022 04:42, Fenglin Wu wrote:
>>>> Add binding document for flash LED module inside Qualcomm Technologies,
>>>> Inc. PMICs.
>>>>
>>>> Signed-off-by: Fenglin Wu <quic_fenglinw@quicinc.com>
>>>
>>> You did not Cc me on first patch, so difficult to say how much it
>>> matches the driver... There is also no DTS.
>> Thanks for reviewing the binding change, I sent the driver changes in
>> the same series and you can check it here:
>> https://lore.kernel.org/linux-leds/6c0e5083-baae-3ed3-5eed-e08bbb9e7576@linaro.org/T/#m97f71ce3f291f62d65f8107352d8ab9507093ab2
>>
>> I will add you in email to list when sending next patchset.
> 
> Don't add just mine. Use instead scripts/get_maintainers.pl. For small
> patchsets recipients should get everything. For big patchsets it is
> usually split, where everyone receive only cover letter. It's not the
> case here...
> 
Thanks for the suggestion.
I actually used scripts/get_maintainers.pl when pushing the patches. I 
will double check it when sending v2.
Thanks
>>>
>>>> ---
>>>>    .../bindings/leds/leds-qcom-flash.yaml        | 108 ++++++++++++++++++
>>>>    1 file changed, 108 insertions(+)
>>>>    create mode 100644 Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
>>>> new file mode 100644
>>>> index 000000000000..52a99182961b
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
>>>
>>>
>>> Filename matching compatible if there is one fallback (e.g.
>>> qcom,spmi-flash-led.yaml).
>>>
>> Sure, I will update the file name to match with the fallback compatible
>> string.
>>>> @@ -0,0 +1,108 @@
>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>> +%YAML 1.2
>>>> +---
>>>> +$id: http://devicetree.org/schemas/leds/leds-qcom-flash.yaml#
>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>> +
>>>> +title: Flash LED device inside Qualcomm Technologies, Inc. PMICs
>>>> +
>>>> +maintainers:
>>>> +  - Fenglin Wu <quic_fenglinw@quicinc.com>
>>>> +
>>>> +description: |
>>>> +  Flash LED controller is present inside some Qualcomm Technologies, Inc. PMICs.
>>>> +  The flash LED module can have different number of LED channels supported
>>>> +  e.g. 3 or 4. There are some different registers between them but they can
>>>> +  both support maximum current up to 1.5 A per channel and they can also support
>>>> +  ganging 2 channels together to supply maximum current up to 2 A. The current
>>>> +  will be split symmetrically on each channel and they will be enabled and
>>>> +  disabled at the same time.
>>>> +
>>>> +properties:
>>>> +  compatible:
>>>> +    items:
>>>> +      - enum:
>>>> +          - qcom,spmi-flash-led
>>>> +          - qcom,pm8150c-flash-led
>>>> +          - qcom,pm8150l-flash-led
>>>> +          - qcom,pm8350c-flash-led
>>>
>>> I doubt these are all different. You should use fallback, which also
>>> will make use of the "items" you used...
>> pm8150c and pm8150l are different PMIC variants which have same flash
>> LED module with 3 flash LED channels, while pm8350c has a different
>> flash LED module with 4 flash LED channels. They can all use
>> "qcom,spmi-flash-led" as the fallback because the driver has code logic
>> to detect HW sub-types.
> 
> If driver binds to only one compatible, it is expected to be the
> fallback for all others. There might be exception for this rule but it
> does not look like here.
> 
>> But I was thinking to give out the PMIC names
>> here so anyone who is using the driver could easily identify if the
>> driver is suitable for the HW that he/she is using.
> 
> I did not say to remove other compatibles, but to use one fallback for
> all of them.
> 
Do you mean to update it similar to this?

compatible:
   items:
     - enum:
         - qcom,pm8150c-flash-led
         - qcom,pm8150l-flash-led
         - qcom,pm8350c-flash-led
     - const:
         - qcom,spmi-flash-led

> Best regards,
> Krzysztof
>
Krzysztof Kozlowski Sept. 29, 2022, 11:13 a.m. UTC | #6
On 29/09/2022 12:56, Fenglin Wu wrote:
>> If driver binds to only one compatible, it is expected to be the
>> fallback for all others. There might be exception for this rule but it
>> does not look like here.
>>
>>> But I was thinking to give out the PMIC names
>>> here so anyone who is using the driver could easily identify if the
>>> driver is suitable for the HW that he/she is using.
>>
>> I did not say to remove other compatibles, but to use one fallback for
>> all of them.
>>
> Do you mean to update it similar to this?
> 
> compatible:
>    items:
>      - enum:
>          - qcom,pm8150c-flash-led
>          - qcom,pm8150l-flash-led
>          - qcom,pm8350c-flash-led
>      - const:
>          - qcom,spmi-flash-led

Yes, just const is not a list, so "const: qcom,spmi-flash-led"

Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
new file mode 100644
index 000000000000..52a99182961b
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/leds-qcom-flash.yaml
@@ -0,0 +1,108 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/leds-qcom-flash.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Flash LED device inside Qualcomm Technologies, Inc. PMICs
+
+maintainers:
+  - Fenglin Wu <quic_fenglinw@quicinc.com>
+
+description: |
+  Flash LED controller is present inside some Qualcomm Technologies, Inc. PMICs.
+  The flash LED module can have different number of LED channels supported
+  e.g. 3 or 4. There are some different registers between them but they can
+  both support maximum current up to 1.5 A per channel and they can also support
+  ganging 2 channels together to supply maximum current up to 2 A. The current
+  will be split symmetrically on each channel and they will be enabled and
+  disabled at the same time.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - qcom,spmi-flash-led
+          - qcom,pm8150c-flash-led
+          - qcom,pm8150l-flash-led
+          - qcom,pm8350c-flash-led
+
+  reg:
+    description: address offset of the flash LED controller
+    maxItems: 1
+
+patternProperties:
+  "^led@[0-3]$":
+    type: object
+    $ref: common.yaml#
+    unevaluatedProperties: false
+    description:
+      Represents the physical LED components which are connected to the flash LED channels' output.
+
+    properties:
+      led-sources:
+        description: The HW indices of the flash LED channels that connect to the physical LED
+        allOf:
+          - minItems: 1
+            maxItems: 2
+            items:
+              enum: [1, 2, 3, 4]
+
+      led-max-microamp:
+        description: |
+          The maximum current value when LED is not operating in flash mode (i.e. torch mode)
+          Valid values when an LED is connected to one flash LED channel:
+            5000 - 500000, step by 5000
+          Valid values when an LED is connected to two flash LED channels:
+            10000 - 1000000, step by 10000
+
+      flash-max-microamp:
+        description: |
+          The maximum current value when LED is operating in flash mode.
+          Valid values when an LED is connected to one flash LED channel:
+            12500 - 1500000, step by 12500
+          Valid values when an LED is connected to two flash LED channels:
+            25000 - 2000000, step by 12500
+
+      flash-max-timeout-us:
+        description: |
+          The maximum timeout value when LED is operating in flash mode.
+          Valid values: 10000 - 1280000, step by 10000
+
+    required:
+      - led-sources
+      - led-max-microamp
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/leds/common.h>
+    flash-led@ee00 {
+            compatible = "qcom,spmi-flash-led";
+            reg = <0xee00>;
+
+            led@0 {
+                    function = LED_FUNCTION_FLASH;
+                    color = <LED_COLOR_ID_WHITE>;
+                    led-sources = <1>, <4>;
+                    led-max-microamp = <300000>;
+                    flash-max-microamp = <2000000>;
+                    flash-max-timeout-us = <1280000>;
+                    function-enumerator = <0>;
+            };
+
+            led@1 {
+                    function = LED_FUNCTION_FLASH;
+                    color = <LED_COLOR_ID_YELLOW>;
+                    led-sources = <2>, <3>;
+                    led-max-microamp = <300000>;
+                    flash-max-microamp = <2000000>;
+                    flash-max-timeout-us = <1280000>;
+                    function-enumerator = <1>;
+            };
+    };