# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/iio/light/brcm,apds9160.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Broadcom Combined Proximity & Ambient light sensor

maintainers:
  - Mikael Gonella-Bolduc <m.gonella.bolduc@gmail.com>

description: |
  Datasheet: https://docs.broadcom.com/docs/APDS-9160-003-DS

properties:
  compatible:
    enum:
      - brcm,apds9160

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  vdd-supply: true

  ps-cancellation-duration:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Proximity sensor cancellation pulse duration in half clock cycles.
      This parameter determines a cancellation pulse duration.
      The cancellation is applied in the integration phase to cancel out
      unwanted reflected light from very near objects such as tempered glass
      in front of the sensor.
    default: 0
    maximum: 63

  ps-cancellation-current-picoamp:
    description:
      Proximity sensor crosstalk cancellation current in picoampere.
      This parameter adjusts the current in steps of 2400 pA up to 276000 pA.
      The provided value must be a multiple of 2400 and in one of these ranges
      [60000 - 96000]
      [120000 - 156000]
      [180000 - 216000]
      [240000 - 276000]
      This parameter is used in conjunction with the cancellation duration.
    minimum: 60000
    maximum: 276000
    multipleOf: 2400

required:
  - compatible
  - reg
  - vdd-supply

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        light-sensor@53 {
            compatible = "brcm,apds9160";
            reg = <0x53>;
            vdd-supply = <&vdd_reg>;
            interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
            interrupt-parent = <&pinctrl>;
            ps-cancellation-duration = <10>;
            ps-cancellation-current-picoamp = <62400>;
        };
    };
...
