Interrupt line can be configured on different hardware in different way, even inverted. Therefore driver should not enforce specific trigger type - edge falling - but instead rely on Devicetree to configure it. The Maxim 77693 datasheet describes the interrupt line as active low with a requirement of acknowledge from the CPU therefore the edge falling is not correct. The interrupt line is shared between PMIC and RTC driver, so using level sensitive interrupt is here especially important to avoid races. With an edge configuration in case if first PMIC signals interrupt followed shortly after by the RTC, the interrupt might not be yet cleared/acked thus the second one would not be noticed. Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Lee Jones <lee.jones@linaro.org> Link: https://lore.kernel.org/r/20210602110445.33536-3-krzysztof.kozlowski@canonical.com
195 lines
6.7 KiB
Plaintext
195 lines
6.7 KiB
Plaintext
Maxim MAX77693 multi-function device
|
|
|
|
MAX77693 is a Multifunction device with the following submodules:
|
|
- PMIC,
|
|
- CHARGER,
|
|
- LED,
|
|
- MUIC,
|
|
- HAPTIC
|
|
|
|
It is interfaced to host controller using i2c.
|
|
This document describes the bindings for the mfd device.
|
|
|
|
Required properties:
|
|
- compatible : Must be "maxim,max77693".
|
|
- reg : Specifies the i2c slave address of PMIC block.
|
|
- interrupts : This i2c device has an IRQ line connected to the main SoC.
|
|
|
|
Optional properties:
|
|
- regulators : The regulators of max77693 have to be instantiated under subnode
|
|
named "regulators" using the following format.
|
|
|
|
regulators {
|
|
regulator-compatible = ESAFEOUT1/ESAFEOUT2/CHARGER
|
|
standard regulator constraints[*].
|
|
};
|
|
|
|
[*] refer Documentation/devicetree/bindings/regulator/regulator.txt
|
|
|
|
- haptic : The MAX77693 haptic device utilises a PWM controlled motor to provide
|
|
users with tactile feedback. PWM period and duty-cycle are varied in
|
|
order to provide the appropriate level of feedback.
|
|
|
|
Required properties:
|
|
- compatible : Must be "maxim,max77693-haptic"
|
|
- haptic-supply : power supply for the haptic motor
|
|
[*] refer Documentation/devicetree/bindings/regulator/regulator.txt
|
|
- pwms : phandle to the physical PWM(Pulse Width Modulation) device.
|
|
PWM properties should be named "pwms". And number of cell is different
|
|
for each pwm device.
|
|
To get more information, please refer to documentation.
|
|
[*] refer Documentation/devicetree/bindings/pwm/pwm.txt
|
|
|
|
- charger : Node configuring the charger driver.
|
|
If present, required properties:
|
|
- compatible : Must be "maxim,max77693-charger".
|
|
|
|
Optional properties (if not set, defaults will be used):
|
|
- maxim,constant-microvolt : Battery constant voltage in uV. The charger
|
|
will operate in fast charge constant current mode till battery voltage
|
|
reaches this level. Then the charger will switch to fast charge constant
|
|
voltage mode. Also vsys (system voltage) will be set to this value when
|
|
DC power is supplied but charger is not enabled.
|
|
Valid values: 3650000 - 4400000, step by 25000 (rounded down)
|
|
Default: 4200000
|
|
|
|
- maxim,min-system-microvolt : Minimal system voltage in uV.
|
|
Valid values: 3000000 - 3700000, step by 100000 (rounded down)
|
|
Default: 3600000
|
|
|
|
- maxim,thermal-regulation-celsius : Temperature in Celsius for entering
|
|
high temperature charging mode. If die temperature exceeds this value
|
|
the charging current will be reduced by 105 mA/Celsius.
|
|
Valid values: 70, 85, 100, 115
|
|
Default: 100
|
|
|
|
- maxim,battery-overcurrent-microamp : Overcurrent protection threshold
|
|
in uA (current from battery to system).
|
|
Valid values: 2000000 - 3500000, step by 250000 (rounded down)
|
|
Default: 3500000
|
|
|
|
- maxim,charge-input-threshold-microvolt : Threshold voltage in uV for
|
|
triggering input voltage regulation loop. If input voltage decreases
|
|
below this value, the input current will be reduced to reach the
|
|
threshold voltage.
|
|
Valid values: 4300000, 4700000, 4800000, 4900000
|
|
Default: 4300000
|
|
|
|
- led : the LED submodule device node
|
|
|
|
There are two LED outputs available - FLED1 and FLED2. Each of them can
|
|
control a separate LED or they can be connected together to double
|
|
the maximum current for a single connected LED. One LED is represented
|
|
by one child node.
|
|
|
|
Required properties:
|
|
- compatible : Must be "maxim,max77693-led".
|
|
|
|
Optional properties:
|
|
- maxim,boost-mode :
|
|
In boost mode the device can produce up to 1.2A of total current
|
|
on both outputs. The maximum current on each output is reduced
|
|
to 625mA then. If not enabled explicitly, boost setting defaults to
|
|
LEDS_BOOST_FIXED in case both current sources are used.
|
|
Possible values:
|
|
LEDS_BOOST_OFF (0) - no boost,
|
|
LEDS_BOOST_ADAPTIVE (1) - adaptive mode,
|
|
LEDS_BOOST_FIXED (2) - fixed mode.
|
|
- maxim,boost-mvout : Output voltage of the boost module in millivolts.
|
|
Valid values: 3300 - 5500, step by 25 (rounded down)
|
|
Default: 3300
|
|
- maxim,mvsys-min : Low input voltage level in millivolts. Flash is not fired
|
|
if chip estimates that system voltage could drop below this level due
|
|
to flash power consumption.
|
|
Valid values: 2400 - 3400, step by 33 (rounded down)
|
|
Default: 2400
|
|
|
|
Required properties for the LED child node:
|
|
- led-sources : see Documentation/devicetree/bindings/leds/common.txt;
|
|
device current output identifiers: 0 - FLED1, 1 - FLED2
|
|
- led-max-microamp : see Documentation/devicetree/bindings/leds/common.txt
|
|
Valid values for a LED connected to one FLED output:
|
|
15625 - 250000, step by 15625 (rounded down)
|
|
Valid values for a LED connected to both FLED outputs:
|
|
15625 - 500000, step by 15625 (rounded down)
|
|
- flash-max-microamp : see Documentation/devicetree/bindings/leds/common.txt
|
|
Valid values for a single LED connected to one FLED output
|
|
(boost mode must be turned off):
|
|
15625 - 1000000, step by 15625 (rounded down)
|
|
Valid values for a single LED connected to both FLED outputs:
|
|
15625 - 1250000, step by 15625 (rounded down)
|
|
Valid values for two LEDs case:
|
|
15625 - 625000, step by 15625 (rounded down)
|
|
- flash-max-timeout-us : see Documentation/devicetree/bindings/leds/common.txt
|
|
Valid values: 62500 - 1000000, step by 62500 (rounded down)
|
|
|
|
Optional properties for the LED child node:
|
|
- label : see Documentation/devicetree/bindings/leds/common.txt
|
|
|
|
Optional nodes:
|
|
- max77693-muic :
|
|
Node used only by extcon consumers.
|
|
Required properties:
|
|
- compatible : "maxim,max77693-muic"
|
|
|
|
Example:
|
|
#include <dt-bindings/leds/common.h>
|
|
|
|
max77693@66 {
|
|
compatible = "maxim,max77693";
|
|
reg = <0x66>;
|
|
interrupt-parent = <&gpx1>;
|
|
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
|
|
|
regulators {
|
|
esafeout@1 {
|
|
regulator-compatible = "ESAFEOUT1";
|
|
regulator-name = "ESAFEOUT1";
|
|
regulator-boot-on;
|
|
};
|
|
esafeout@2 {
|
|
regulator-compatible = "ESAFEOUT2";
|
|
regulator-name = "ESAFEOUT2";
|
|
};
|
|
charger@0 {
|
|
regulator-compatible = "CHARGER";
|
|
regulator-name = "CHARGER";
|
|
regulator-min-microamp = <60000>;
|
|
regulator-max-microamp = <2580000>;
|
|
regulator-boot-on;
|
|
};
|
|
};
|
|
|
|
haptic {
|
|
compatible = "maxim,max77693-haptic";
|
|
haptic-supply = <&haptic_supply>;
|
|
pwms = <&pwm 0 40000 0>;
|
|
pwm-names = "haptic";
|
|
};
|
|
|
|
charger {
|
|
compatible = "maxim,max77693-charger";
|
|
|
|
maxim,constant-microvolt = <4200000>;
|
|
maxim,min-system-microvolt = <3600000>;
|
|
maxim,thermal-regulation-celsius = <75>;
|
|
maxim,battery-overcurrent-microamp = <3000000>;
|
|
maxim,charge-input-threshold-microvolt = <4300000>;
|
|
};
|
|
|
|
led {
|
|
compatible = "maxim,max77693-led";
|
|
maxim,boost-mode = <LEDS_BOOST_FIXED>;
|
|
maxim,boost-mvout = <5000>;
|
|
maxim,mvsys-min = <2400>;
|
|
|
|
camera_flash: flash-led {
|
|
label = "max77693-flash";
|
|
led-sources = <0>, <1>;
|
|
led-max-microamp = <500000>;
|
|
flash-max-microamp = <1250000>;
|
|
flash-max-timeout-us = <1000000>;
|
|
};
|
|
};
|
|
};
|