mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 05:34:13 +08:00
Merge branches 'ib-mfd-hwmon-regulator-5.18', 'ib-mfd-iio-5.18', 'ib-mfd-led-power-regulator-5.18', 'ib-mfd-mediatek-mt6366-5.18', 'ib-mfd-rtc-watchdog-5.18' and 'ib-mfd-spi-dt-5.18' into ibs-for-mfd-merged
This commit is contained in:
commit
afb67df31a
40
Documentation/devicetree/bindings/extcon/maxim,max77843.yaml
Normal file
40
Documentation/devicetree/bindings/extcon/maxim,max77843.yaml
Normal file
@ -0,0 +1,40 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/extcon/maxim,max77843.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77843 MicroUSB and Companion Power Management IC Extcon
|
||||
|
||||
maintainers:
|
||||
- Chanwoo Choi <cw00.choi@samsung.com>
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77843 MicroUSB
|
||||
Integrated Circuit (MUIC).
|
||||
|
||||
See also Documentation/devicetree/bindings/mfd/maxim,max77843.yaml for
|
||||
additional information and example.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77843-muic
|
||||
|
||||
connector:
|
||||
$ref: /schemas/connector/usb-connector.yaml#
|
||||
|
||||
ports:
|
||||
$ref: /schemas/graph.yaml#/properties/port
|
||||
description:
|
||||
Any connector to the data bus of this controller should be modelled using
|
||||
the OF graph bindings specified
|
||||
properties:
|
||||
port:
|
||||
$ref: /schemas/graph.yaml#/properties/port
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- connector
|
||||
|
||||
additionalProperties: false
|
105
Documentation/devicetree/bindings/leds/maxim,max77693.yaml
Normal file
105
Documentation/devicetree/bindings/leds/maxim,max77693.yaml
Normal file
@ -0,0 +1,105 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/leds/maxim,max77693.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77693 MicroUSB and Companion Power Management IC LEDs
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77693 MicroUSB Integrated
|
||||
Circuit (MUIC).
|
||||
|
||||
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.
|
||||
|
||||
See also Documentation/devicetree/bindings/mfd/maxim,max77693.yaml for
|
||||
additional information and example.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77693-led
|
||||
|
||||
maxim,boost-mode:
|
||||
description:
|
||||
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.
|
||||
See LEDS_BOOST_* in include/dt-bindings/leds/common.h.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2]
|
||||
|
||||
maxim,boost-mvout:
|
||||
description: |
|
||||
Output voltage of the boost module in millivolts.
|
||||
Valid values: 3300 - 5500, step by 25 (rounded down)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
minimum: 3300
|
||||
maximum: 5500
|
||||
default: 3300
|
||||
|
||||
maxim,mvsys-min:
|
||||
description: |
|
||||
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)
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
minimum: 2400
|
||||
maximum: 3400
|
||||
default: 2400
|
||||
|
||||
patternProperties:
|
||||
"^([a-z]+-)?led[01]?$":
|
||||
type: object
|
||||
$ref: common.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
led-sources:
|
||||
allOf:
|
||||
- minItems: 1
|
||||
maxItems: 2
|
||||
items:
|
||||
minimum: 0
|
||||
maximum: 1
|
||||
|
||||
led-max-microamp:
|
||||
description: |
|
||||
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:
|
||||
description: |
|
||||
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:
|
||||
description: |
|
||||
Valid values: 62500 - 1000000, step by 62500 (rounded down)
|
||||
minimum: 62500
|
||||
maximum: 1000000
|
||||
|
||||
required:
|
||||
- flash-max-microamp
|
||||
- flash-max-timeout-us
|
||||
- led-max-microamp
|
||||
- led-sources
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
additionalProperties: false
|
@ -31,7 +31,7 @@ properties:
|
||||
|
||||
controller-data:
|
||||
description:
|
||||
SPI controller data, see bindings/spi/spi-samsung.txt
|
||||
SPI controller data, see bindings/spi/samsung,spi-peripheral-props.yaml
|
||||
type: object
|
||||
|
||||
google,cros-ec-spi-pre-delay:
|
||||
@ -148,18 +148,21 @@ patternProperties:
|
||||
required:
|
||||
- compatible
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- google,cros-ec-i2c
|
||||
- google,cros-ec-rpmsg
|
||||
then:
|
||||
properties:
|
||||
google,cros-ec-spi-pre-delay: false
|
||||
google,cros-ec-spi-msg-delay: false
|
||||
spi-max-frequency: false
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- google,cros-ec-i2c
|
||||
- google,cros-ec-rpmsg
|
||||
then:
|
||||
properties:
|
||||
google,cros-ec-spi-pre-delay: false
|
||||
google,cros-ec-spi-msg-delay: false
|
||||
spi-max-frequency: false
|
||||
else:
|
||||
$ref: /schemas/spi/spi-peripheral-props.yaml
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
@ -200,7 +203,7 @@ examples:
|
||||
spi-max-frequency = <5000000>;
|
||||
|
||||
proximity {
|
||||
compatible = "google,cros-ec-mkbp-proximity";
|
||||
compatible = "google,cros-ec-mkbp-proximity";
|
||||
};
|
||||
|
||||
cbas {
|
||||
|
@ -1,147 +0,0 @@
|
||||
Maxim MAX14577/77836 Multi-Function Device
|
||||
|
||||
MAX14577 is a Multi-Function Device with Micro-USB Interface Circuit, Li+
|
||||
Battery Charger and SFOUT LDO output for powering USB devices. It is
|
||||
interfaced to host controller using I2C.
|
||||
|
||||
MAX77836 additionally contains PMIC (with two LDO regulators) and Fuel Gauge.
|
||||
For the description of Fuel Gauge low SOC alert interrupt see:
|
||||
../power/supply/max17040_battery.txt
|
||||
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be "maxim,max14577" or "maxim,max77836".
|
||||
- reg : I2C slave address for the max14577 chip (0x25 for max14577/max77836)
|
||||
- interrupts : IRQ line for the chip.
|
||||
|
||||
|
||||
Required nodes:
|
||||
- charger :
|
||||
Node for configuring the charger driver.
|
||||
Required properties:
|
||||
- compatible : "maxim,max14577-charger"
|
||||
or "maxim,max77836-charger"
|
||||
- maxim,fast-charge-uamp : Current in uA for Fast Charge;
|
||||
Valid values:
|
||||
- for max14577: 90000 - 950000;
|
||||
- for max77836: 45000 - 475000;
|
||||
- maxim,eoc-uamp : Current in uA for End-Of-Charge mode;
|
||||
Valid values:
|
||||
- for max14577: 50000 - 200000;
|
||||
- for max77836: 5000 - 100000;
|
||||
- maxim,ovp-uvolt : OverVoltage Protection Threshold in uV;
|
||||
In an overvoltage condition, INT asserts and charging
|
||||
stops. Valid values:
|
||||
- 6000000, 6500000, 7000000, 7500000;
|
||||
- maxim,constant-uvolt : Battery Constant Voltage in uV;
|
||||
Valid values:
|
||||
- 4000000 - 4280000 (step by 20000);
|
||||
- 4350000;
|
||||
|
||||
|
||||
Optional nodes:
|
||||
- max14577-muic/max77836-muic :
|
||||
Node used only by extcon consumers.
|
||||
Required properties:
|
||||
- compatible : "maxim,max14577-muic" or "maxim,max77836-muic"
|
||||
|
||||
- regulators :
|
||||
Required properties:
|
||||
- compatible : "maxim,max14577-regulator"
|
||||
or "maxim,max77836-regulator"
|
||||
|
||||
May contain a sub-node per regulator from the list below. Each
|
||||
sub-node should contain the constraints and initialization information
|
||||
for that regulator. See regulator.txt for a description of standard
|
||||
properties for these sub-nodes.
|
||||
|
||||
List of valid regulator names:
|
||||
- for max14577: CHARGER, SAFEOUT.
|
||||
- for max77836: CHARGER, SAFEOUT, LDO1, LDO2.
|
||||
|
||||
The SAFEOUT is a fixed voltage regulator so there is no need to specify
|
||||
voltages for it.
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
max14577@25 {
|
||||
compatible = "maxim,max14577";
|
||||
reg = <0x25>;
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
muic: max14577-muic {
|
||||
compatible = "maxim,max14577-muic";
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "maxim,max14577-regulator";
|
||||
|
||||
SAFEOUT {
|
||||
regulator-name = "SAFEOUT";
|
||||
};
|
||||
CHARGER {
|
||||
regulator-name = "CHARGER";
|
||||
regulator-min-microamp = <90000>;
|
||||
regulator-max-microamp = <950000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "maxim,max14577-charger";
|
||||
|
||||
maxim,constant-uvolt = <4350000>;
|
||||
maxim,fast-charge-uamp = <450000>;
|
||||
maxim,eoc-uamp = <50000>;
|
||||
maxim,ovp-uvolt = <6500000>;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
max77836@25 {
|
||||
compatible = "maxim,max77836";
|
||||
reg = <0x25>;
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
muic: max77836-muic {
|
||||
compatible = "maxim,max77836-muic";
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "maxim,max77836-regulator";
|
||||
|
||||
SAFEOUT {
|
||||
regulator-name = "SAFEOUT";
|
||||
};
|
||||
CHARGER {
|
||||
regulator-name = "CHARGER";
|
||||
regulator-min-microamp = <90000>;
|
||||
regulator-max-microamp = <950000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
LDO1 {
|
||||
regulator-name = "LDO1";
|
||||
regulator-min-microvolt = <2700000>;
|
||||
regulator-max-microvolt = <2700000>;
|
||||
};
|
||||
LDO2 {
|
||||
regulator-name = "LDO2";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3950000>;
|
||||
};
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "maxim,max77836-charger";
|
||||
|
||||
maxim,constant-uvolt = <4350000>;
|
||||
maxim,fast-charge-uamp = <225000>;
|
||||
maxim,eoc-uamp = <7500>;
|
||||
maxim,ovp-uvolt = <6500000>;
|
||||
};
|
||||
};
|
@ -1,194 +0,0 @@
|
||||
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>;
|
||||
};
|
||||
};
|
||||
};
|
@ -1,25 +0,0 @@
|
||||
Maxim MAX77802 multi-function device
|
||||
|
||||
The Maxim MAX77802 is a Power Management IC (PMIC) that contains 10 high
|
||||
efficiency Buck regulators, 32 Low-DropOut (LDO) regulators used to power
|
||||
up application processors and peripherals, a 2-channel 32kHz clock outputs,
|
||||
a Real-Time-Clock (RTC) and a I2C interface to program the individual
|
||||
regulators, clocks outputs and the RTC.
|
||||
|
||||
Bindings for the built-in 32k clock generator block and
|
||||
regulators are defined in ../clk/maxim,max77802.txt and
|
||||
../regulator/max77802.txt respectively.
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be "maxim,max77802"
|
||||
- reg : Specifies the I2C slave address of PMIC block.
|
||||
- interrupts : I2C device IRQ line connected to the main SoC.
|
||||
|
||||
Example:
|
||||
|
||||
max77802: pmic@9 {
|
||||
compatible = "maxim,max77802";
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <26 IRQ_TYPE_NONE>;
|
||||
reg = <0x09>;
|
||||
};
|
195
Documentation/devicetree/bindings/mfd/maxim,max14577.yaml
Normal file
195
Documentation/devicetree/bindings/mfd/maxim,max14577.yaml
Normal file
@ -0,0 +1,195 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/maxim,max14577.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX14577/MAX77836 MicroUSB and Companion Power Management IC
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX14577/MAX77836 MicroUSB
|
||||
Integrated Circuit (MUIC).
|
||||
|
||||
The Maxim MAX14577 is a MicroUSB and Companion Power Management IC which
|
||||
includes voltage safeout regulators, charger and MicroUSB management IC.
|
||||
|
||||
The Maxim MAX77836 is a MicroUSB and Companion Power Management IC which
|
||||
includes voltage safeout and LDO regulators, charger, fuel-gauge and MicroUSB
|
||||
management IC.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- maxim,max14577
|
||||
- maxim,max77836
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
wakeup-source: true
|
||||
|
||||
charger:
|
||||
$ref: /schemas/power/supply/maxim,max14577.yaml
|
||||
|
||||
extcon:
|
||||
type: object
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- maxim,max14577-muic
|
||||
- maxim,max77836-muic
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
regulators:
|
||||
$ref: /schemas/regulator/maxim,max14577.yaml
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- interrupts
|
||||
- reg
|
||||
- charger
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: maxim,max14577
|
||||
then:
|
||||
properties:
|
||||
charger:
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max14577-charger
|
||||
extcon:
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max14577-muic
|
||||
regulator:
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max14577-regulator
|
||||
else:
|
||||
properties:
|
||||
charger:
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77836-charger
|
||||
extcon:
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77836-muic
|
||||
regulator:
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77836-regulator
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@25 {
|
||||
compatible = "maxim,max14577";
|
||||
reg = <0x25>;
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
extcon {
|
||||
compatible = "maxim,max14577-muic";
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "maxim,max14577-regulator";
|
||||
|
||||
SAFEOUT {
|
||||
regulator-name = "SAFEOUT";
|
||||
};
|
||||
|
||||
CHARGER {
|
||||
regulator-name = "CHARGER";
|
||||
regulator-min-microamp = <90000>;
|
||||
regulator-max-microamp = <950000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "maxim,max14577-charger";
|
||||
|
||||
maxim,constant-uvolt = <4350000>;
|
||||
maxim,fast-charge-uamp = <450000>;
|
||||
maxim,eoc-uamp = <50000>;
|
||||
maxim,ovp-uvolt = <6500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@25 {
|
||||
compatible = "maxim,max77836";
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <5 IRQ_TYPE_NONE>;
|
||||
reg = <0x25>;
|
||||
wakeup-source;
|
||||
|
||||
extcon {
|
||||
compatible = "maxim,max77836-muic";
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "maxim,max77836-regulator";
|
||||
|
||||
SAFEOUT {
|
||||
regulator-name = "SAFEOUT";
|
||||
};
|
||||
|
||||
CHARGER {
|
||||
regulator-name = "CHARGER";
|
||||
regulator-min-microamp = <45000>;
|
||||
regulator-max-microamp = <475000>;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
LDO1 {
|
||||
regulator-name = "MOT_2.7V";
|
||||
regulator-min-microvolt = <1100000>;
|
||||
regulator-max-microvolt = <2700000>;
|
||||
};
|
||||
|
||||
LDO2 {
|
||||
regulator-name = "UNUSED_LDO2";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3950000>;
|
||||
};
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "maxim,max77836-charger";
|
||||
|
||||
maxim,constant-uvolt = <4350000>;
|
||||
maxim,fast-charge-uamp = <225000>;
|
||||
maxim,eoc-uamp = <7500>;
|
||||
maxim,ovp-uvolt = <6500000>;
|
||||
};
|
||||
};
|
||||
};
|
143
Documentation/devicetree/bindings/mfd/maxim,max77693.yaml
Normal file
143
Documentation/devicetree/bindings/mfd/maxim,max77693.yaml
Normal file
@ -0,0 +1,143 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/maxim,max77693.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77693 MicroUSB and Companion Power Management IC
|
||||
|
||||
maintainers:
|
||||
- Chanwoo Choi <cw00.choi@samsung.com>
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77693 MicroUSB
|
||||
Integrated Circuit (MUIC).
|
||||
|
||||
The Maxim MAX77693 is a MicroUSB and Companion Power Management IC which
|
||||
includes voltage current regulators, charger, LED/flash, haptic motor driver
|
||||
and MicroUSB management IC.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77693
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
charger:
|
||||
$ref: /schemas/power/supply/maxim,max77693.yaml
|
||||
|
||||
led:
|
||||
$ref: /schemas/leds/maxim,max77693.yaml
|
||||
|
||||
max77693-muic:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77693-muic
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
motor-driver:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77693-haptic
|
||||
|
||||
haptic-supply:
|
||||
description: Power supply to the haptic motor
|
||||
|
||||
pwms:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- haptic-supply
|
||||
- pwms
|
||||
|
||||
regulators:
|
||||
$ref: ../regulator/maxim,max77693.yaml
|
||||
description:
|
||||
List of child nodes that specify the regulators.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- interrupts
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@66 {
|
||||
compatible = "maxim,max77693";
|
||||
reg = <0x66>;
|
||||
interrupt-parent = <&gpx1>;
|
||||
interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
regulators {
|
||||
ESAFEOUT1 {
|
||||
regulator-name = "ESAFEOUT1";
|
||||
};
|
||||
|
||||
ESAFEOUT2 {
|
||||
regulator-name = "ESAFEOUT2";
|
||||
};
|
||||
|
||||
CHARGER {
|
||||
regulator-name = "CHARGER";
|
||||
regulator-min-microamp = <60000>;
|
||||
regulator-max-microamp = <2580000>;
|
||||
};
|
||||
};
|
||||
|
||||
motor-driver {
|
||||
compatible = "maxim,max77693-haptic";
|
||||
haptic-supply = <&ldo26_reg>;
|
||||
pwms = <&pwm 0 38022 0>;
|
||||
};
|
||||
|
||||
charger {
|
||||
compatible = "maxim,max77693-charger";
|
||||
|
||||
maxim,constant-microvolt = <4350000>;
|
||||
maxim,min-system-microvolt = <3600000>;
|
||||
maxim,thermal-regulation-celsius = <100>;
|
||||
maxim,battery-overcurrent-microamp = <3500000>;
|
||||
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>;
|
||||
|
||||
flash-led {
|
||||
label = "max77693-flash";
|
||||
function = LED_FUNCTION_FLASH;
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
led-sources = <0>, <1>;
|
||||
led-max-microamp = <500000>;
|
||||
flash-max-microamp = <1250000>;
|
||||
flash-max-timeout-us = <1000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
68
Documentation/devicetree/bindings/mfd/maxim,max77714.yaml
Normal file
68
Documentation/devicetree/bindings/mfd/maxim,max77714.yaml
Normal file
@ -0,0 +1,68 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/maxim,max77714.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: MAX77714 PMIC with GPIO, RTC and watchdog from Maxim Integrated.
|
||||
|
||||
maintainers:
|
||||
- Luca Ceresoli <luca@lucaceresoli.net>
|
||||
|
||||
description: |
|
||||
MAX77714 is a Power Management IC with 4 buck regulators, 9
|
||||
low-dropout regulators, 8 GPIOs, RTC and watchdog.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77714
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
description:
|
||||
The first cell is the IRQ number, the second cell is the trigger type.
|
||||
|
||||
regulators:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
'^(buck[0-3]|ldo[0-8])$':
|
||||
type: object
|
||||
unevaluatedProperties: false
|
||||
$ref: /schemas/regulator/regulator.yaml#
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
- "#interrupt-cells"
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@1c {
|
||||
compatible = "maxim,max77714";
|
||||
reg = <0x1c>;
|
||||
interrupt-parent = <&gpio2>;
|
||||
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
194
Documentation/devicetree/bindings/mfd/maxim,max77802.yaml
Normal file
194
Documentation/devicetree/bindings/mfd/maxim,max77802.yaml
Normal file
@ -0,0 +1,194 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/maxim,max77802.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77802 Power Management IC
|
||||
|
||||
maintainers:
|
||||
- Javier Martinez Canillas <javier@dowhile0.org>
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77802 Power Management
|
||||
Integrated Circuit (PMIC).
|
||||
|
||||
The Maxim MAX77802 is a Power Management IC which includes voltage and
|
||||
current regulators (10 high efficiency Buck regulators and 32 Low-DropOut
|
||||
(LDO)), RTC and clock outputs.
|
||||
|
||||
The MAX77802 provides two 32.768khz clock outputs that can be controlled
|
||||
(gated/ungated) over I2C. The clock IDs are defined as preprocessor macros
|
||||
in dt-bindings/clock/maxim,max77802.h.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77802
|
||||
|
||||
'#clock-cells':
|
||||
const: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
regulators:
|
||||
$ref: /schemas/regulator/maxim,max77802.yaml
|
||||
description:
|
||||
List of child nodes that specify the regulators.
|
||||
|
||||
inb1-supply:
|
||||
description: Power supply for buck1
|
||||
inb2-supply:
|
||||
description: Power supply for buck2
|
||||
inb3-supply:
|
||||
description: Power supply for buck3
|
||||
inb4-supply:
|
||||
description: Power supply for buck4
|
||||
inb5-supply:
|
||||
description: Power supply for buck5
|
||||
inb6-supply:
|
||||
description: Power supply for buck6
|
||||
inb7-supply:
|
||||
description: Power supply for buck7
|
||||
inb8-supply:
|
||||
description: Power supply for buck8
|
||||
inb9-supply:
|
||||
description: Power supply for buck9
|
||||
inb10-supply:
|
||||
description: Power supply for buck10
|
||||
|
||||
inl1-supply:
|
||||
description: Power supply for LDO8, LDO15
|
||||
inl2-supply:
|
||||
description: Power supply for LDO17, LDO27, LDO30, LDO35
|
||||
inl3-supply:
|
||||
description: Power supply for LDO3, LDO5, LDO7, LDO7
|
||||
inl4-supply:
|
||||
description: Power supply for LDO10, LDO11, LDO13, LDO14
|
||||
inl5-supply:
|
||||
description: Power supply for LDO9, LDO19
|
||||
inl6-supply:
|
||||
description: Power supply for LDO4, LDO21, LDO24, LDO33
|
||||
inl7-supply:
|
||||
description: Power supply for LDO18, LDO20, LDO28, LDO29
|
||||
inl9-supply:
|
||||
description: Power supply for LDO12, LDO23, LDO25, LDO26, LDO32, LDO34
|
||||
inl10-supply:
|
||||
description: Power supply for LDO1, LDO2
|
||||
|
||||
wakeup-source: true
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- '#clock-cells'
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/regulator/maxim,max77802.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@9 {
|
||||
compatible = "maxim,max77802";
|
||||
interrupt-parent = <&gpx3>;
|
||||
interrupts = <1 IRQ_TYPE_NONE>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&max77802_irq>, <&pmic_selb>,
|
||||
<&pmic_dvs_1>, <&pmic_dvs_2>, <&pmic_dvs_3>;
|
||||
wakeup-source;
|
||||
reg = <0x9>;
|
||||
#clock-cells = <1>;
|
||||
|
||||
inb1-supply = <&tps65090_dcdc2>;
|
||||
inb2-supply = <&tps65090_dcdc1>;
|
||||
inb3-supply = <&tps65090_dcdc2>;
|
||||
inb4-supply = <&tps65090_dcdc2>;
|
||||
inb5-supply = <&tps65090_dcdc1>;
|
||||
inb6-supply = <&tps65090_dcdc2>;
|
||||
inb7-supply = <&tps65090_dcdc1>;
|
||||
inb8-supply = <&tps65090_dcdc1>;
|
||||
inb9-supply = <&tps65090_dcdc1>;
|
||||
inb10-supply = <&tps65090_dcdc1>;
|
||||
|
||||
inl1-supply = <&buck5_reg>;
|
||||
inl2-supply = <&buck7_reg>;
|
||||
inl3-supply = <&buck9_reg>;
|
||||
inl4-supply = <&buck9_reg>;
|
||||
inl5-supply = <&buck9_reg>;
|
||||
inl6-supply = <&tps65090_dcdc2>;
|
||||
inl7-supply = <&buck9_reg>;
|
||||
inl9-supply = <&tps65090_dcdc2>;
|
||||
inl10-supply = <&buck7_reg>;
|
||||
|
||||
regulators {
|
||||
BUCK1 {
|
||||
regulator-name = "vdd_mif";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
BUCK2 {
|
||||
regulator-name = "vdd_arm";
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-ramp-delay = <12500>;
|
||||
regulator-coupled-with = <&buck3_reg>;
|
||||
regulator-coupled-max-spread = <300000>;
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
// ...
|
||||
|
||||
BUCK10 {
|
||||
regulator-name = "vdd_1v8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
LDO1 {
|
||||
regulator-name = "vdd_1v0";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-initial-mode = <MAX77802_OPMODE_NORMAL>;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
// ...
|
||||
|
||||
LDO35 {
|
||||
regulator-name = "ldo_35";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
144
Documentation/devicetree/bindings/mfd/maxim,max77843.yaml
Normal file
144
Documentation/devicetree/bindings/mfd/maxim,max77843.yaml
Normal file
@ -0,0 +1,144 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/mfd/maxim,max77843.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77843 MicroUSB and Companion Power Management IC
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77843 MicroUSB
|
||||
Integrated Circuit (MUIC).
|
||||
|
||||
The Maxim MAX77843 is a MicroUSB and Companion Power Management IC which
|
||||
includes voltage current regulators, charger, fuel-gauge, haptic motor driver
|
||||
and MicroUSB management IC.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77843
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
extcon:
|
||||
$ref: /schemas/extcon/maxim,max77843.yaml
|
||||
|
||||
motor-driver:
|
||||
type: object
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77843-haptic
|
||||
|
||||
haptic-supply:
|
||||
description: Power supply to the haptic motor
|
||||
|
||||
pwms:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- haptic-supply
|
||||
- pwms
|
||||
|
||||
regulators:
|
||||
$ref: /schemas/regulator/maxim,max77843.yaml
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- interrupts
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic@66 {
|
||||
compatible = "maxim,max77843";
|
||||
interrupt-parent = <&gpa1>;
|
||||
interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
|
||||
reg = <0x66>;
|
||||
|
||||
extcon {
|
||||
compatible = "maxim,max77843-muic";
|
||||
|
||||
connector {
|
||||
compatible = "samsung,usb-connector-11pin",
|
||||
"usb-b-connector";
|
||||
label = "micro-USB";
|
||||
type = "micro";
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
/*
|
||||
* TODO: The DTS this is based on does not have
|
||||
* port@0 which is a required property. The ports
|
||||
* look incomplete and need fixing.
|
||||
* Add a disabled port just to satisfy dtschema.
|
||||
*/
|
||||
reg = <0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
port@3 {
|
||||
reg = <3>;
|
||||
endpoint {
|
||||
remote-endpoint = <&mhl_to_musb_con>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ports {
|
||||
port {
|
||||
endpoint {
|
||||
remote-endpoint = <&usb_to_muic>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "maxim,max77843-regulator";
|
||||
|
||||
SAFEOUT1 {
|
||||
regulator-name = "SAFEOUT1";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <4950000>;
|
||||
};
|
||||
|
||||
SAFEOUT2 {
|
||||
regulator-name = "SAFEOUT2";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <4950000>;
|
||||
};
|
||||
|
||||
CHARGER {
|
||||
regulator-name = "CHARGER";
|
||||
regulator-min-microamp = <100000>;
|
||||
regulator-max-microamp = <3150000>;
|
||||
};
|
||||
};
|
||||
|
||||
motor-driver {
|
||||
compatible = "maxim,max77843-haptic";
|
||||
haptic-supply = <&ldo38_reg>;
|
||||
pwms = <&pwm 0 33670 0>;
|
||||
};
|
||||
};
|
||||
};
|
@ -0,0 +1,84 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/power/supply/maxim,max14577.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX14577/MAX77836 MicroUSB and Companion Power Management IC Charger
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX14577/MAX77836 MicroUSB
|
||||
Integrated Circuit (MUIC).
|
||||
|
||||
See also Documentation/devicetree/bindings/mfd/maxim,max14577.yaml for
|
||||
additional information and example.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- maxim,max14577-charger
|
||||
- maxim,max77836-charger
|
||||
|
||||
maxim,constant-uvolt:
|
||||
description:
|
||||
Battery Constant Voltage in uV
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
minimum: 4000000
|
||||
maximum: 4350000
|
||||
|
||||
maxim,eoc-uamp:
|
||||
description: |
|
||||
Current in uA for End-Of-Charge mode.
|
||||
MAX14577: 50000-20000
|
||||
MAX77836: 5000-100000
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
maxim,fast-charge-uamp:
|
||||
description: |
|
||||
Current in uA for Fast Charge
|
||||
MAX14577: 90000-950000
|
||||
MAX77836: 45000-475000
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
maxim,ovp-uvolt:
|
||||
description:
|
||||
OverVoltage Protection Threshold in uV; In an overvoltage condition, INT
|
||||
asserts and charging stops.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [6000000, 6500000, 7000000, 7500000]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- maxim,constant-uvolt
|
||||
- maxim,eoc-uamp
|
||||
- maxim,fast-charge-uamp
|
||||
- maxim,ovp-uvolt
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: maxim,max14577-charger
|
||||
then:
|
||||
properties:
|
||||
maxim,eoc-uamp:
|
||||
minimum: 50000
|
||||
maximum: 200000
|
||||
maxim,fast-charge-uamp:
|
||||
minimum: 90000
|
||||
maximum: 950000
|
||||
else:
|
||||
# max77836
|
||||
properties:
|
||||
maxim,eoc-uamp:
|
||||
minimum: 5000
|
||||
maximum: 100000
|
||||
maxim,fast-charge-uamp:
|
||||
minimum: 45000
|
||||
maximum: 475000
|
||||
|
||||
additionalProperties: false
|
@ -0,0 +1,70 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/power/supply/maxim,max77693.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77693 MicroUSB and Companion Power Management IC Charger
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77693 MicroUSB Integrated
|
||||
Circuit (MUIC).
|
||||
|
||||
See also Documentation/devicetree/bindings/mfd/maxim,max77693.yaml for
|
||||
additional information and example.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77693-charger
|
||||
|
||||
maxim,constant-microvolt:
|
||||
description: |
|
||||
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)
|
||||
minimum: 3650000
|
||||
maximum: 4400000
|
||||
default: 4200000
|
||||
|
||||
maxim,min-system-microvolt:
|
||||
description: |
|
||||
Minimal system voltage in uV.
|
||||
enum: [3000000, 3100000, 3200000, 3300000, 3400000, 3500000,
|
||||
3600000, 3700000]
|
||||
default: 3600000
|
||||
|
||||
maxim,thermal-regulation-celsius:
|
||||
description: |
|
||||
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.
|
||||
enum: [70, 85, 100, 115]
|
||||
default: 100
|
||||
|
||||
maxim,battery-overcurrent-microamp:
|
||||
description: |
|
||||
Overcurrent protection threshold in uA (current from battery to
|
||||
system).
|
||||
Valid values: 2000000 - 3500000, step by 250000 (rounded down)
|
||||
minimum: 2000000
|
||||
maximum: 3500000
|
||||
default: 3500000
|
||||
|
||||
maxim,charge-input-threshold-microvolt:
|
||||
description: |
|
||||
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.
|
||||
enum: [4300000, 4700000, 4800000, 4900000]
|
||||
default: 4300000
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
additionalProperties: false
|
@ -1,111 +0,0 @@
|
||||
Binding for Maxim MAX77802 regulators
|
||||
|
||||
This is a part of device tree bindings of MAX77802 multi-function device.
|
||||
More information can be found in bindings/mfd/max77802.txt file.
|
||||
|
||||
The MAX77802 PMIC has 10 high-efficiency Buck and 32 Low-dropout (LDO)
|
||||
regulators that can be controlled over I2C.
|
||||
|
||||
Following properties should be present in main device node of the MFD chip.
|
||||
|
||||
Optional properties:
|
||||
- inb1-supply: The input supply for BUCK1
|
||||
- inb2-supply: The input supply for BUCK2
|
||||
- inb3-supply: The input supply for BUCK3
|
||||
- inb4-supply: The input supply for BUCK4
|
||||
- inb5-supply: The input supply for BUCK5
|
||||
- inb6-supply: The input supply for BUCK6
|
||||
- inb7-supply: The input supply for BUCK7
|
||||
- inb8-supply: The input supply for BUCK8
|
||||
- inb9-supply: The input supply for BUCK9
|
||||
- inb10-supply: The input supply for BUCK10
|
||||
- inl1-supply: The input supply for LDO8 and LDO15
|
||||
- inl2-supply: The input supply for LDO17, LDO27, LDO30 and LDO35
|
||||
- inl3-supply: The input supply for LDO3, LDO5, LDO6 and LDO7
|
||||
- inl4-supply: The input supply for LDO10, LDO11, LDO13 and LDO14
|
||||
- inl5-supply: The input supply for LDO9 and LDO19
|
||||
- inl6-supply: The input supply for LDO4, LDO21, LDO24 and LDO33
|
||||
- inl7-supply: The input supply for LDO18, LDO20, LDO28 and LDO29
|
||||
- inl9-supply: The input supply for LDO12, LDO23, LDO25, LDO26, LDO32 and LDO34
|
||||
- inl10-supply: The input supply for LDO1 and LDO2
|
||||
|
||||
Optional nodes:
|
||||
- regulators : The regulators of max77802 have to be instantiated
|
||||
under subnode named "regulators" using the following format.
|
||||
|
||||
regulator-name {
|
||||
standard regulator constraints....
|
||||
};
|
||||
refer Documentation/devicetree/bindings/regulator/regulator.txt
|
||||
|
||||
The regulator node name should be initialized with a string to get matched
|
||||
with their hardware counterparts as follow. The valid names are:
|
||||
|
||||
-LDOn : for LDOs, where n can lie in ranges 1-15, 17-21, 23-30
|
||||
and 32-35.
|
||||
example: LDO1, LDO2, LDO35.
|
||||
-BUCKn : for BUCKs, where n can lie in range 1 to 10.
|
||||
example: BUCK1, BUCK5, BUCK10.
|
||||
|
||||
The max77802 regulator supports two different operating modes: Normal and Low
|
||||
Power Mode. Some regulators support the modes to be changed at startup or by
|
||||
the consumers during normal operation while others only support to change the
|
||||
mode during system suspend. The standard regulator suspend states binding can
|
||||
be used to configure the regulator operating mode.
|
||||
|
||||
The regulators that support the standard "regulator-initial-mode" property,
|
||||
changing their mode during normal operation are: LDOs 1, 3, 20 and 21.
|
||||
|
||||
The possible values for "regulator-initial-mode" and "regulator-mode" are:
|
||||
1: Normal regulator voltage output mode.
|
||||
3: Low Power which reduces the quiescent current down to only 1uA
|
||||
|
||||
The valid modes list is defined in the dt-bindings/regulator/maxim,max77802.h
|
||||
header and can be included by device tree source files.
|
||||
|
||||
The standard "regulator-mode" property can only be used for regulators that
|
||||
support changing their mode to Low Power Mode during suspend. These regulators
|
||||
are: BUCKs 2-4 and LDOs 1-35. Also, it only takes effect if the regulator has
|
||||
been enabled for the given suspend state using "regulator-on-in-suspend" and
|
||||
has not been disabled for that state using "regulator-off-in-suspend".
|
||||
|
||||
Example:
|
||||
|
||||
max77802@9 {
|
||||
compatible = "maxim,max77802";
|
||||
interrupt-parent = <&wakeup_eint>;
|
||||
interrupts = <26 0>;
|
||||
reg = <0x09>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
inb1-supply = <&parent_reg>;
|
||||
|
||||
regulators {
|
||||
ldo1_reg: LDO1 {
|
||||
regulator-name = "vdd_1v0";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <1000000>;
|
||||
regulator-always-on;
|
||||
regulator-initial-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
|
||||
ldo11_reg: LDO11 {
|
||||
regulator-name = "vdd_ldo11";
|
||||
regulator-min-microvolt = <1900000>;
|
||||
regulator-max-microvolt = <1900000>;
|
||||
regulator-always-on;
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-mode = <MAX77802_OPMODE_LP>;
|
||||
};
|
||||
};
|
||||
|
||||
buck1_reg: BUCK1 {
|
||||
regulator-name = "vdd_mif";
|
||||
regulator-min-microvolt = <950000>;
|
||||
regulator-max-microvolt = <1300000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
@ -0,0 +1,78 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/maxim,max14577.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX14577/MAX77836 MicroUSB and Companion Power Management IC regulators
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX14577/MAX77836 MicroUSB
|
||||
Integrated Circuit (MUIC).
|
||||
|
||||
See also Documentation/devicetree/bindings/mfd/maxim,max14577.yaml for
|
||||
additional information and example.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- maxim,max14577-regulator
|
||||
- maxim,max77836-regulator
|
||||
|
||||
CHARGER:
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description: |
|
||||
Current regulator.
|
||||
|
||||
properties:
|
||||
regulator-min-microvolt: false
|
||||
regulator-max-microvolt: false
|
||||
|
||||
SAFEOUT:
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description: |
|
||||
Safeout LDO regulator (fixed voltage).
|
||||
|
||||
properties:
|
||||
regulator-min-microamp: false
|
||||
regulator-max-microamp: false
|
||||
regulator-min-microvolt:
|
||||
const: 4900000
|
||||
regulator-max-microvolt:
|
||||
const: 4900000
|
||||
|
||||
patternProperties:
|
||||
"^LDO[12]$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description: |
|
||||
Current regulator.
|
||||
|
||||
properties:
|
||||
regulator-min-microamp: false
|
||||
regulator-max-microamp: false
|
||||
regulator-min-microvolt:
|
||||
minimum: 800000
|
||||
regulator-max-microvolt:
|
||||
maximum: 3950000
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: maxim,max14577-regulator
|
||||
then:
|
||||
properties:
|
||||
LDO1: false
|
||||
LDO2: false
|
||||
|
||||
additionalProperties: false
|
@ -0,0 +1,60 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/maxim,max77693.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77693 MicroUSB and Companion Power Management IC regulators
|
||||
|
||||
maintainers:
|
||||
- Chanwoo Choi <cw00.choi@samsung.com>
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77693 MicroUSB Integrated
|
||||
Circuit (MUIC).
|
||||
|
||||
See also Documentation/devicetree/bindings/mfd/maxim,max77693.yaml for
|
||||
additional information and example.
|
||||
|
||||
properties:
|
||||
CHARGER:
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
additionalProperties: false
|
||||
description: |
|
||||
Current regulator.
|
||||
|
||||
properties:
|
||||
regulator-name: true
|
||||
regulator-always-on: true
|
||||
regulator-boot-on: true
|
||||
regulator-min-microamp:
|
||||
minimum: 60000
|
||||
regulator-max-microamp:
|
||||
maximum: 2580000
|
||||
|
||||
required:
|
||||
- regulator-name
|
||||
|
||||
patternProperties:
|
||||
"^ESAFEOUT[12]$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
additionalProperties: false
|
||||
description: |
|
||||
Safeout LDO regulator.
|
||||
|
||||
properties:
|
||||
regulator-name: true
|
||||
regulator-always-on: true
|
||||
regulator-boot-on: true
|
||||
regulator-min-microvolt:
|
||||
minimum: 3300000
|
||||
regulator-max-microvolt:
|
||||
maximum: 4950000
|
||||
|
||||
required:
|
||||
- regulator-name
|
||||
|
||||
additionalProperties: false
|
@ -0,0 +1,85 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/maxim,max77802.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77802 Power Management IC regulators
|
||||
|
||||
maintainers:
|
||||
- Javier Martinez Canillas <javier@dowhile0.org>
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77802 Power Management
|
||||
Integrated Circuit (PMIC).
|
||||
|
||||
The Maxim MAX77686 provides 10 high-efficiency Buck and 32 Low-DropOut (LDO)
|
||||
regulators.
|
||||
|
||||
See also Documentation/devicetree/bindings/mfd/maxim,max77802.yaml for
|
||||
additional information and example.
|
||||
|
||||
Certain regulators support "regulator-initial-mode" and "regulator-mode".
|
||||
The valid modes list is defined in the dt-bindings/regulator/maxim,max77802.h
|
||||
and their meaning is::
|
||||
1 - Normal regulator voltage output mode.
|
||||
3 - Low Power which reduces the quiescent current down to only 1uA
|
||||
|
||||
The standard "regulator-mode" property can only be used for regulators that
|
||||
support changing their mode to Low Power Mode during suspend. These
|
||||
regulators are:: bucks 2-4 and LDOs 1-35. Also, it only takes effect if the
|
||||
regulator has been enabled for the given suspend state using
|
||||
"regulator-on-in-suspend" and has not been disabled for that state using
|
||||
"regulator-off-in-suspend".
|
||||
|
||||
patternProperties:
|
||||
# LDO1, LDO3, LDO20, LDO21
|
||||
"^LDO([13]|2[01])$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description:
|
||||
LDOs supporting the regulator-initial-mode property and changing their
|
||||
mode during normal operation.
|
||||
|
||||
# LDO2, LDO4-15, LDO17-19, LDO23-30, LDO32-35
|
||||
"^LDO([24-9]|1[0-5789]|2[3-9]|3[02345])$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description:
|
||||
LDOs supporting the regulator-mode property (changing mode to Low Power
|
||||
Mode during suspend).
|
||||
|
||||
properties:
|
||||
regulator-initial-mode: false
|
||||
|
||||
# buck2-4
|
||||
"^BUCK[2-4]$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
description:
|
||||
bucks supporting the regulator-mode property (changing mode to Low Power
|
||||
Mode during suspend).
|
||||
|
||||
properties:
|
||||
regulator-initial-mode: false
|
||||
|
||||
# buck1, buck5-10
|
||||
"^BUCK([15-9]|10)$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
unevaluatedProperties: false
|
||||
|
||||
properties:
|
||||
regulator-initial-mode: false
|
||||
|
||||
patternProperties:
|
||||
regulator-state-(standby|mem|disk):
|
||||
type: object
|
||||
properties:
|
||||
regulator-mode: false
|
||||
|
||||
additionalProperties: false
|
@ -0,0 +1,65 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/regulator/maxim,max77843.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Maxim MAX77843 MicroUSB and Companion Power Management IC regulators
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
This is a part of device tree bindings for Maxim MAX77843 MicroUSB Integrated
|
||||
Circuit (MUIC).
|
||||
|
||||
See also Documentation/devicetree/bindings/mfd/maxim,max77843.yaml for
|
||||
additional information and example.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: maxim,max77843-regulator
|
||||
|
||||
CHARGER:
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
additionalProperties: false
|
||||
description: |
|
||||
Current regulator.
|
||||
|
||||
properties:
|
||||
regulator-name: true
|
||||
regulator-always-on: true
|
||||
regulator-boot-on: true
|
||||
regulator-min-microamp:
|
||||
minimum: 100000
|
||||
regulator-max-microamp:
|
||||
maximum: 3150000
|
||||
|
||||
required:
|
||||
- regulator-name
|
||||
|
||||
patternProperties:
|
||||
"^SAFEOUT[12]$":
|
||||
type: object
|
||||
$ref: regulator.yaml#
|
||||
additionalProperties: false
|
||||
description: |
|
||||
Safeout LDO regulator.
|
||||
|
||||
properties:
|
||||
regulator-name: true
|
||||
regulator-always-on: true
|
||||
regulator-boot-on: true
|
||||
regulator-min-microvolt:
|
||||
minimum: 3300000
|
||||
regulator-max-microvolt:
|
||||
maximum: 4950000
|
||||
|
||||
required:
|
||||
- regulator-name
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
additionalProperties: false
|
@ -22,7 +22,7 @@ description: |
|
||||
|
||||
[1] Documentation/devicetree/bindings/serial/samsung_uart.yaml
|
||||
[2] Documentation/devicetree/bindings/i2c/i2c-exynos5.txt
|
||||
[3] Documentation/devicetree/bindings/spi/spi-samsung.txt
|
||||
[3] Documentation/devicetree/bindings/spi/samsung,spi.yaml
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
|
@ -0,0 +1,33 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/spi/samsung,spi-peripheral-props.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Peripheral-specific properties for Samsung S3C/S5P/Exynos SoC SPI controller
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description:
|
||||
See spi-peripheral-props.yaml for more info.
|
||||
|
||||
properties:
|
||||
controller-data:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
samsung,spi-feedback-delay:
|
||||
description: |
|
||||
The sampling phase shift to be applied on the miso line (to account
|
||||
for any lag in the miso line). Valid values:
|
||||
- 0: No phase shift.
|
||||
- 1: 90 degree phase shift sampling.
|
||||
- 2: 180 degree phase shift sampling.
|
||||
- 3: 270 degree phase shift sampling.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
default: 0
|
||||
|
||||
additionalProperties: true
|
187
Documentation/devicetree/bindings/spi/samsung,spi.yaml
Normal file
187
Documentation/devicetree/bindings/spi/samsung,spi.yaml
Normal file
@ -0,0 +1,187 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/spi/samsung,spi.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Samsung S3C/S5P/Exynos SoC SPI controller
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description:
|
||||
All the SPI controller nodes should be represented in the aliases node using
|
||||
the following format 'spi{n}' where n is a unique number for the alias.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- samsung,s3c2443-spi # for S3C2443, S3C2416 and S3C2450
|
||||
- samsung,s3c6410-spi
|
||||
- samsung,s5pv210-spi # for S5PV210 and S5PC110
|
||||
- samsung,exynos5433-spi
|
||||
- const: samsung,exynos7-spi
|
||||
deprecated: true
|
||||
|
||||
clocks:
|
||||
minItems: 2
|
||||
maxItems: 3
|
||||
|
||||
clock-names:
|
||||
minItems: 2
|
||||
maxItems: 3
|
||||
|
||||
cs-gpios: true
|
||||
|
||||
dmas:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
|
||||
dma-names:
|
||||
items:
|
||||
- const: tx
|
||||
- const: rx
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
no-cs-readback:
|
||||
description:
|
||||
The CS line is disconnected, therefore the device should not operate
|
||||
based on CS signalling.
|
||||
type: boolean
|
||||
|
||||
num-cs:
|
||||
minimum: 1
|
||||
maximum: 4
|
||||
default: 1
|
||||
|
||||
samsung,spi-src-clk:
|
||||
description:
|
||||
If the spi controller includes a internal clock mux to select the clock
|
||||
source for the spi bus clock, this property can be used to indicate the
|
||||
clock to be used for driving the spi bus clock. If not specified, the
|
||||
clock number 0 is used as default.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
default: 0
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clocks
|
||||
- clock-names
|
||||
- dmas
|
||||
- dma-names
|
||||
- interrupts
|
||||
- reg
|
||||
|
||||
allOf:
|
||||
- $ref: spi-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: samsung,exynos5433-spi
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 3
|
||||
maxItems: 3
|
||||
clock-names:
|
||||
items:
|
||||
- const: spi
|
||||
- enum:
|
||||
- spi_busclk0
|
||||
- spi_busclk1
|
||||
- spi_busclk2
|
||||
- spi_busclk3
|
||||
- const: spi_ioclk
|
||||
else:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
clock-names:
|
||||
items:
|
||||
- const: spi
|
||||
- enum:
|
||||
- spi_busclk0
|
||||
- spi_busclk1
|
||||
- spi_busclk2
|
||||
- spi_busclk3
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/exynos5433.h>
|
||||
#include <dt-bindings/clock/samsung,s2mps11.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
spi@14d30000 {
|
||||
compatible = "samsung,exynos5433-spi";
|
||||
reg = <0x14d30000 0x100>;
|
||||
interrupts = <GIC_SPI 433 IRQ_TYPE_LEVEL_HIGH>;
|
||||
dmas = <&pdma0 11>, <&pdma0 10>;
|
||||
dma-names = "tx", "rx";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
clocks = <&cmu_peric CLK_PCLK_SPI1>,
|
||||
<&cmu_peric CLK_SCLK_SPI1>,
|
||||
<&cmu_peric CLK_SCLK_IOCLK_SPI1>;
|
||||
clock-names = "spi",
|
||||
"spi_busclk0",
|
||||
"spi_ioclk";
|
||||
samsung,spi-src-clk = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi1_bus>;
|
||||
num-cs = <1>;
|
||||
|
||||
cs-gpios = <&gpd6 3 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
audio-codec@0 {
|
||||
compatible = "wlf,wm5110";
|
||||
reg = <0x0>;
|
||||
spi-max-frequency = <20000000>;
|
||||
interrupt-parent = <&gpa0>;
|
||||
interrupts = <4 IRQ_TYPE_NONE>;
|
||||
clocks = <&pmu_system_controller 0>,
|
||||
<&s2mps13_osc S2MPS11_CLK_BT>;
|
||||
clock-names = "mclk1", "mclk2";
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
wlf,micd-detect-debounce = <300>;
|
||||
wlf,micd-bias-start-time = <0x1>;
|
||||
wlf,micd-rate = <0x7>;
|
||||
wlf,micd-dbtime = <0x2>;
|
||||
wlf,micd-force-micbias;
|
||||
wlf,micd-configs = <0x0 1 0>;
|
||||
wlf,hpdet-channel = <1>;
|
||||
wlf,gpsw = <0x1>;
|
||||
wlf,inmode = <2 0 2 0>;
|
||||
|
||||
wlf,reset = <&gpc0 7 GPIO_ACTIVE_HIGH>;
|
||||
wlf,ldoena = <&gpf0 0 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
/* core supplies */
|
||||
AVDD-supply = <&ldo18_reg>;
|
||||
DBVDD1-supply = <&ldo18_reg>;
|
||||
CPVDD-supply = <&ldo18_reg>;
|
||||
DBVDD2-supply = <&ldo18_reg>;
|
||||
DBVDD3-supply = <&ldo18_reg>;
|
||||
SPKVDDL-supply = <&ldo18_reg>;
|
||||
SPKVDDR-supply = <&ldo18_reg>;
|
||||
|
||||
controller-data {
|
||||
samsung,spi-feedback-delay = <0>;
|
||||
};
|
||||
};
|
||||
};
|
@ -85,5 +85,6 @@ properties:
|
||||
# The controller specific properties go here.
|
||||
allOf:
|
||||
- $ref: cdns,qspi-nor-peripheral-props.yaml#
|
||||
- $ref: samsung,spi-peripheral-props.yaml#
|
||||
|
||||
additionalProperties: true
|
||||
|
@ -1,122 +0,0 @@
|
||||
* Samsung SPI Controller
|
||||
|
||||
The Samsung SPI controller is used to interface with various devices such as flash
|
||||
and display controllers using the SPI communication interface.
|
||||
|
||||
Required SoC Specific Properties:
|
||||
|
||||
- compatible: should be one of the following.
|
||||
- samsung,s3c2443-spi: for s3c2443, s3c2416 and s3c2450 platforms
|
||||
- samsung,s3c6410-spi: for s3c6410 platforms
|
||||
- samsung,s5pv210-spi: for s5pv210 and s5pc110 platforms
|
||||
- samsung,exynos5433-spi: for exynos5433 compatible controllers
|
||||
- samsung,exynos7-spi: for exynos7 platforms <DEPRECATED>
|
||||
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
|
||||
- interrupts: The interrupt number to the cpu. The interrupt specifier format
|
||||
depends on the interrupt controller.
|
||||
|
||||
- dmas : Two or more DMA channel specifiers following the convention outlined
|
||||
in bindings/dma/dma.txt
|
||||
|
||||
- dma-names: Names for the dma channels. There must be at least one channel
|
||||
named "tx" for transmit and named "rx" for receive.
|
||||
|
||||
- clocks: specifies the clock IDs provided to the SPI controller; they are
|
||||
required for interacting with the controller itself, for synchronizing the bus
|
||||
and as I/O clock (the latter is required by exynos5433 and exynos7).
|
||||
|
||||
- clock-names: string names of the clocks in the 'clocks' property; for all the
|
||||
the devices the names must be "spi", "spi_busclkN" (where N is determined by
|
||||
"samsung,spi-src-clk"), while Exynos5433 should specify a third clock
|
||||
"spi_ioclk" for the I/O clock.
|
||||
|
||||
Required Board Specific Properties:
|
||||
|
||||
- #address-cells: should be 1.
|
||||
- #size-cells: should be 0.
|
||||
|
||||
Optional Board Specific Properties:
|
||||
|
||||
- samsung,spi-src-clk: If the spi controller includes a internal clock mux to
|
||||
select the clock source for the spi bus clock, this property can be used to
|
||||
indicate the clock to be used for driving the spi bus clock. If not specified,
|
||||
the clock number 0 is used as default.
|
||||
|
||||
- num-cs: Specifies the number of chip select lines supported. If
|
||||
not specified, the default number of chip select lines is set to 1.
|
||||
|
||||
- cs-gpios: should specify GPIOs used for chipselects (see spi-bus.txt)
|
||||
|
||||
- no-cs-readback: the CS line is disconnected, therefore the device should not
|
||||
operate based on CS signalling.
|
||||
|
||||
SPI Controller specific data in SPI slave nodes:
|
||||
|
||||
- The spi slave nodes should provide the following information which is required
|
||||
by the spi controller.
|
||||
|
||||
- samsung,spi-feedback-delay: The sampling phase shift to be applied on the
|
||||
miso line (to account for any lag in the miso line). The following are the
|
||||
valid values.
|
||||
|
||||
- 0: No phase shift.
|
||||
- 1: 90 degree phase shift sampling.
|
||||
- 2: 180 degree phase shift sampling.
|
||||
- 3: 270 degree phase shift sampling.
|
||||
|
||||
Aliases:
|
||||
|
||||
- All the SPI controller nodes should be represented in the aliases node using
|
||||
the following format 'spi{n}' where n is a unique number for the alias.
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
- SoC Specific Portion:
|
||||
|
||||
spi_0: spi@12d20000 {
|
||||
compatible = "samsung,exynos4210-spi";
|
||||
reg = <0x12d20000 0x100>;
|
||||
interrupts = <0 66 0>;
|
||||
dmas = <&pdma0 5
|
||||
&pdma0 4>;
|
||||
dma-names = "tx", "rx";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
- Board Specific Portion:
|
||||
|
||||
spi_0: spi@12d20000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_bus>;
|
||||
cs-gpios = <&gpa2 5 0>;
|
||||
|
||||
w25q80bw@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "w25x80";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <10000>;
|
||||
|
||||
controller-data {
|
||||
samsung,spi-feedback-delay = <0>;
|
||||
};
|
||||
|
||||
partition@0 {
|
||||
label = "U-Boot";
|
||||
reg = <0x0 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@40000 {
|
||||
label = "Kernel";
|
||||
reg = <0x40000 0xc0000>;
|
||||
};
|
||||
};
|
||||
};
|
18
MAINTAINERS
18
MAINTAINERS
@ -11691,11 +11691,18 @@ F: drivers/power/supply/max77650-charger.c
|
||||
F: drivers/regulator/max77650-regulator.c
|
||||
F: include/linux/mfd/max77650.h
|
||||
|
||||
MAXIM MAX77714 PMIC MFD DRIVER
|
||||
M: Luca Ceresoli <luca@lucaceresoli.net>
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/mfd/maxim,max77714.yaml
|
||||
F: drivers/mfd/max77714.c
|
||||
F: include/linux/mfd/max77714.h
|
||||
|
||||
MAXIM MAX77802 PMIC REGULATOR DEVICE DRIVER
|
||||
M: Javier Martinez Canillas <javier@dowhile0.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/*/*max77802.txt
|
||||
F: Documentation/devicetree/bindings/*/*max77802.yaml
|
||||
F: drivers/regulator/max77802-regulator.c
|
||||
F: include/dt-bindings/*/*max77802.h
|
||||
|
||||
@ -11710,6 +11717,8 @@ M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
L: linux-pm@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/power/supply/maxim,max14577.yaml
|
||||
F: Documentation/devicetree/bindings/power/supply/maxim,max77693.yaml
|
||||
F: drivers/power/supply/max14577_charger.c
|
||||
F: drivers/power/supply/max77693_charger.c
|
||||
|
||||
@ -11719,10 +11728,13 @@ M: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/*/maxim,max14577.yaml
|
||||
F: Documentation/devicetree/bindings/*/maxim,max77686.yaml
|
||||
F: Documentation/devicetree/bindings/*/maxim,max77693.yaml
|
||||
F: Documentation/devicetree/bindings/*/maxim,max77843.yaml
|
||||
F: Documentation/devicetree/bindings/clock/maxim,max77686.txt
|
||||
F: Documentation/devicetree/bindings/mfd/max14577.txt
|
||||
F: Documentation/devicetree/bindings/mfd/max77693.txt
|
||||
F: drivers/*/*max77843.c
|
||||
F: drivers/*/max14577*.c
|
||||
F: drivers/*/max77686*.c
|
||||
F: drivers/*/max77693*.c
|
||||
@ -17089,7 +17101,7 @@ M: Andi Shyti <andi@etezian.org>
|
||||
L: linux-spi@vger.kernel.org
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/spi/spi-samsung.txt
|
||||
F: Documentation/devicetree/bindings/spi/samsung,spi*.yaml
|
||||
F: drivers/spi/spi-s3c*
|
||||
F: include/linux/platform_data/spi-s3c64xx.h
|
||||
F: include/linux/spi/s3c24xx-fiq.h
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
#define IQS620_TEMP_SCALE 1000
|
||||
#define IQS620_TEMP_OFFSET (-100)
|
||||
#define IQS620_TEMP_OFFSET_V3 (-40)
|
||||
|
||||
static int iqs620_temp_read_raw(struct iio_dev *indio_dev,
|
||||
struct iio_chan_spec const *chan,
|
||||
@ -41,7 +42,8 @@ static int iqs620_temp_read_raw(struct iio_dev *indio_dev,
|
||||
return IIO_VAL_INT;
|
||||
|
||||
case IIO_CHAN_INFO_OFFSET:
|
||||
*val = IQS620_TEMP_OFFSET;
|
||||
*val = iqs62x->hw_num < IQS620_HW_NUM_V3 ? IQS620_TEMP_OFFSET
|
||||
: IQS620_TEMP_OFFSET_V3;
|
||||
return IIO_VAL_INT;
|
||||
|
||||
default:
|
||||
|
@ -849,6 +849,20 @@ config MFD_MAX77693
|
||||
additional drivers must be enabled in order to use the functionality
|
||||
of the device.
|
||||
|
||||
config MFD_MAX77714
|
||||
tristate "Maxim Semiconductor MAX77714 PMIC Support"
|
||||
depends on I2C
|
||||
depends on OF || COMPILE_TEST
|
||||
select MFD_CORE
|
||||
select REGMAP_I2C
|
||||
help
|
||||
Say yes here to add support for Maxim Semiconductor MAX77714.
|
||||
This is a Power Management IC with 4 buck regulators, 9
|
||||
low-dropout regulators, 8 GPIOs, RTC, watchdog etc. This driver
|
||||
provides common support for accessing the device; additional
|
||||
drivers must be enabled in order to use each functionality of the
|
||||
device.
|
||||
|
||||
config MFD_MAX77843
|
||||
bool "Maxim Semiconductor MAX77843 PMIC Support"
|
||||
depends on I2C=y
|
||||
|
@ -162,6 +162,7 @@ obj-$(CONFIG_MFD_MAX77620) += max77620.o
|
||||
obj-$(CONFIG_MFD_MAX77650) += max77650.o
|
||||
obj-$(CONFIG_MFD_MAX77686) += max77686.o
|
||||
obj-$(CONFIG_MFD_MAX77693) += max77693.o
|
||||
obj-$(CONFIG_MFD_MAX77714) += max77714.o
|
||||
obj-$(CONFIG_MFD_MAX77843) += max77843.o
|
||||
obj-$(CONFIG_MFD_MAX8907) += max8907.o
|
||||
max8925-objs := max8925-core.o max8925-i2c.o
|
||||
|
@ -898,7 +898,6 @@ static int iqs62x_probe(struct i2c_client *client)
|
||||
struct iqs62x_info info;
|
||||
unsigned int val;
|
||||
int ret, i, j;
|
||||
u8 sw_num = 0;
|
||||
const char *fw_name = NULL;
|
||||
|
||||
iqs62x = devm_kzalloc(&client->dev, sizeof(*iqs62x), GFP_KERNEL);
|
||||
@ -949,7 +948,8 @@ static int iqs62x_probe(struct i2c_client *client)
|
||||
if (info.sw_num < iqs62x->dev_desc->sw_num)
|
||||
continue;
|
||||
|
||||
sw_num = info.sw_num;
|
||||
iqs62x->sw_num = info.sw_num;
|
||||
iqs62x->hw_num = info.hw_num;
|
||||
|
||||
/*
|
||||
* Read each of the device's designated calibration registers,
|
||||
@ -985,7 +985,7 @@ static int iqs62x_probe(struct i2c_client *client)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!sw_num) {
|
||||
if (!iqs62x->sw_num) {
|
||||
dev_err(&client->dev, "Unrecognized software number: 0x%02X\n",
|
||||
info.sw_num);
|
||||
return -EINVAL;
|
||||
|
@ -87,7 +87,7 @@ static bool max77802_rtc_is_volatile_reg(struct device *dev, unsigned int reg)
|
||||
reg == MAX77802_RTC_WEEKDAY ||
|
||||
reg == MAX77802_RTC_MONTH ||
|
||||
reg == MAX77802_RTC_YEAR ||
|
||||
reg == MAX77802_RTC_DATE);
|
||||
reg == MAX77802_RTC_MONTHDAY);
|
||||
}
|
||||
|
||||
static bool max77802_is_volatile_reg(struct device *dev, unsigned int reg)
|
||||
|
152
drivers/mfd/max77714.c
Normal file
152
drivers/mfd/max77714.c
Normal file
@ -0,0 +1,152 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Maxim MAX77714 Core Driver
|
||||
*
|
||||
* Copyright (C) 2022 Luca Ceresoli
|
||||
* Author: Luca Ceresoli <luca@lucaceresoli.net>
|
||||
*/
|
||||
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/mfd/core.h>
|
||||
#include <linux/mfd/max77714.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/regmap.h>
|
||||
|
||||
static const struct mfd_cell max77714_cells[] = {
|
||||
{ .name = "max77714-watchdog" },
|
||||
{ .name = "max77714-rtc" },
|
||||
};
|
||||
|
||||
static const struct regmap_range max77714_readable_ranges[] = {
|
||||
regmap_reg_range(MAX77714_INT_TOP, MAX77714_INT_TOP),
|
||||
regmap_reg_range(MAX77714_INT_TOPM, MAX77714_INT_TOPM),
|
||||
regmap_reg_range(MAX77714_32K_STATUS, MAX77714_32K_CONFIG),
|
||||
regmap_reg_range(MAX77714_CNFG_GLBL2, MAX77714_CNFG2_ONOFF),
|
||||
};
|
||||
|
||||
static const struct regmap_range max77714_writable_ranges[] = {
|
||||
regmap_reg_range(MAX77714_INT_TOPM, MAX77714_INT_TOPM),
|
||||
regmap_reg_range(MAX77714_32K_CONFIG, MAX77714_32K_CONFIG),
|
||||
regmap_reg_range(MAX77714_CNFG_GLBL2, MAX77714_CNFG2_ONOFF),
|
||||
};
|
||||
|
||||
static const struct regmap_access_table max77714_readable_table = {
|
||||
.yes_ranges = max77714_readable_ranges,
|
||||
.n_yes_ranges = ARRAY_SIZE(max77714_readable_ranges),
|
||||
};
|
||||
|
||||
static const struct regmap_access_table max77714_writable_table = {
|
||||
.yes_ranges = max77714_writable_ranges,
|
||||
.n_yes_ranges = ARRAY_SIZE(max77714_writable_ranges),
|
||||
};
|
||||
|
||||
static const struct regmap_config max77714_regmap_config = {
|
||||
.reg_bits = 8,
|
||||
.val_bits = 8,
|
||||
.max_register = MAX77714_CNFG2_ONOFF,
|
||||
.rd_table = &max77714_readable_table,
|
||||
.wr_table = &max77714_writable_table,
|
||||
};
|
||||
|
||||
static const struct regmap_irq max77714_top_irqs[] = {
|
||||
REGMAP_IRQ_REG(MAX77714_IRQ_TOP_ONOFF, 0, MAX77714_INT_TOP_ONOFF),
|
||||
REGMAP_IRQ_REG(MAX77714_IRQ_TOP_RTC, 0, MAX77714_INT_TOP_RTC),
|
||||
REGMAP_IRQ_REG(MAX77714_IRQ_TOP_GPIO, 0, MAX77714_INT_TOP_GPIO),
|
||||
REGMAP_IRQ_REG(MAX77714_IRQ_TOP_LDO, 0, MAX77714_INT_TOP_LDO),
|
||||
REGMAP_IRQ_REG(MAX77714_IRQ_TOP_SD, 0, MAX77714_INT_TOP_SD),
|
||||
REGMAP_IRQ_REG(MAX77714_IRQ_TOP_GLBL, 0, MAX77714_INT_TOP_GLBL),
|
||||
};
|
||||
|
||||
static const struct regmap_irq_chip max77714_irq_chip = {
|
||||
.name = "max77714-pmic",
|
||||
.status_base = MAX77714_INT_TOP,
|
||||
.mask_base = MAX77714_INT_TOPM,
|
||||
.num_regs = 1,
|
||||
.irqs = max77714_top_irqs,
|
||||
.num_irqs = ARRAY_SIZE(max77714_top_irqs),
|
||||
};
|
||||
|
||||
/*
|
||||
* MAX77714 initially uses the internal, low precision oscillator. Enable
|
||||
* the external oscillator by setting the XOSC_RETRY bit. If the external
|
||||
* oscillator is not OK (probably not installed) this has no effect.
|
||||
*/
|
||||
static int max77714_setup_xosc(struct device *dev, struct regmap *regmap)
|
||||
{
|
||||
/* Internal Crystal Load Capacitance, indexed by value of 32KLOAD bits */
|
||||
static const unsigned int load_cap[4] = {0, 10, 12, 22}; /* pF */
|
||||
unsigned int load_cap_idx;
|
||||
unsigned int status;
|
||||
int err;
|
||||
|
||||
err = regmap_update_bits(regmap, MAX77714_32K_CONFIG,
|
||||
MAX77714_32K_CONFIG_XOSC_RETRY,
|
||||
MAX77714_32K_CONFIG_XOSC_RETRY);
|
||||
if (err)
|
||||
return dev_err_probe(dev, err, "Failed to configure the external oscillator\n");
|
||||
|
||||
err = regmap_read(regmap, MAX77714_32K_STATUS, &status);
|
||||
if (err)
|
||||
return dev_err_probe(dev, err, "Failed to read external oscillator status\n");
|
||||
|
||||
load_cap_idx = (status >> MAX77714_32K_STATUS_32KLOAD_SHF)
|
||||
& MAX77714_32K_STATUS_32KLOAD_MSK;
|
||||
|
||||
dev_info(dev, "Using %s oscillator, %d pF load cap\n",
|
||||
status & MAX77714_32K_STATUS_32KSOURCE ? "internal" : "external",
|
||||
load_cap[load_cap_idx]);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int max77714_probe(struct i2c_client *client)
|
||||
{
|
||||
struct device *dev = &client->dev;
|
||||
struct regmap *regmap;
|
||||
struct regmap_irq_chip_data *irq_data;
|
||||
int err;
|
||||
|
||||
regmap = devm_regmap_init_i2c(client, &max77714_regmap_config);
|
||||
if (IS_ERR(regmap))
|
||||
return dev_err_probe(dev, PTR_ERR(regmap),
|
||||
"Failed to initialise regmap\n");
|
||||
|
||||
err = max77714_setup_xosc(dev, regmap);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = devm_regmap_add_irq_chip(dev, regmap, client->irq,
|
||||
IRQF_ONESHOT | IRQF_SHARED, 0,
|
||||
&max77714_irq_chip, &irq_data);
|
||||
if (err)
|
||||
return dev_err_probe(dev, err, "Failed to add PMIC IRQ chip\n");
|
||||
|
||||
err = devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE,
|
||||
max77714_cells, ARRAY_SIZE(max77714_cells),
|
||||
NULL, 0, NULL);
|
||||
if (err)
|
||||
return dev_err_probe(dev, err, "Failed to register child devices\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct of_device_id max77714_dt_match[] = {
|
||||
{ .compatible = "maxim,max77714" },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, max77714_dt_match);
|
||||
|
||||
static struct i2c_driver max77714_driver = {
|
||||
.driver = {
|
||||
.name = "max77714",
|
||||
.of_match_table = max77714_dt_match,
|
||||
},
|
||||
.probe_new = max77714_probe,
|
||||
};
|
||||
module_i2c_driver(max77714_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Maxim MAX77714 MFD core driver");
|
||||
MODULE_AUTHOR("Luca Ceresoli <luca@lucaceresoli.net>");
|
||||
MODULE_LICENSE("GPL");
|
@ -323,8 +323,10 @@ int mc13xxx_adc_do_conversion(struct mc13xxx *mc13xxx, unsigned int mode,
|
||||
adc1 |= MC13783_ADC1_ATOX;
|
||||
|
||||
dev_dbg(mc13xxx->dev, "%s: request irq\n", __func__);
|
||||
mc13xxx_irq_request(mc13xxx, MC13XXX_IRQ_ADCDONE,
|
||||
ret = mc13xxx_irq_request(mc13xxx, MC13XXX_IRQ_ADCDONE,
|
||||
mc13xxx_handler_adcdone, __func__, &adcdone_data);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
mc13xxx_reg_write(mc13xxx, MC13XXX_ADC0, adc0);
|
||||
mc13xxx_reg_write(mc13xxx, MC13XXX_ADC1, adc1);
|
||||
|
@ -212,6 +212,7 @@ int mt6358_irq_init(struct mt6397_chip *chip)
|
||||
|
||||
switch (chip->chip_id) {
|
||||
case MT6358_CHIP_ID:
|
||||
case MT6366_CHIP_ID:
|
||||
chip->irq_data = &mt6358_irqd;
|
||||
break;
|
||||
|
||||
|
@ -375,7 +375,7 @@ config RTC_DRV_MAX8997
|
||||
|
||||
config RTC_DRV_MAX77686
|
||||
tristate "Maxim MAX77686"
|
||||
depends on MFD_MAX77686 || MFD_MAX77620 || COMPILE_TEST
|
||||
depends on MFD_MAX77686 || MFD_MAX77620 || MFD_MAX77714 || COMPILE_TEST
|
||||
help
|
||||
If you say yes here you will get support for the
|
||||
RTC of Maxim MAX77686/MAX77620/MAX77802 PMIC.
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#define MAX77686_I2C_ADDR_RTC (0x0C >> 1)
|
||||
#define MAX77620_I2C_ADDR_RTC 0x68
|
||||
#define MAX77714_I2C_ADDR_RTC 0x48
|
||||
#define MAX77686_INVALID_I2C_ADDR (-1)
|
||||
|
||||
/* Define non existing register */
|
||||
@ -34,9 +35,6 @@
|
||||
#define RTC_UDR_MASK BIT(RTC_UDR_SHIFT)
|
||||
#define RTC_RBUDR_SHIFT 4
|
||||
#define RTC_RBUDR_MASK BIT(RTC_RBUDR_SHIFT)
|
||||
/* RTC Hour register */
|
||||
#define HOUR_PM_SHIFT 6
|
||||
#define HOUR_PM_MASK BIT(HOUR_PM_SHIFT)
|
||||
/* RTC Alarm Enable */
|
||||
#define ALARM_ENABLE_SHIFT 7
|
||||
#define ALARM_ENABLE_MASK BIT(ALARM_ENABLE_SHIFT)
|
||||
@ -57,28 +55,31 @@ enum {
|
||||
RTC_WEEKDAY,
|
||||
RTC_MONTH,
|
||||
RTC_YEAR,
|
||||
RTC_DATE,
|
||||
RTC_MONTHDAY,
|
||||
RTC_NR_TIME
|
||||
};
|
||||
|
||||
/**
|
||||
* struct max77686_rtc_driver_data - model-specific configuration
|
||||
* @delay: Minimum usecs needed for a RTC update
|
||||
* @mask: Mask used to read RTC registers value
|
||||
* @map: Registers offset to I2C addresses map
|
||||
* @alarm_enable_reg: Has a separate alarm enable register?
|
||||
* @rtc_i2c_addr: I2C address for RTC block
|
||||
* @rtc_irq_from_platform: RTC interrupt via platform resource
|
||||
* @alarm_pending_status_reg: Pending alarm status register
|
||||
* @rtc_irq_chip: RTC IRQ CHIP for regmap
|
||||
* @regmap_config: regmap configuration for the chip
|
||||
*/
|
||||
struct max77686_rtc_driver_data {
|
||||
/* Minimum usecs needed for a RTC update */
|
||||
unsigned long delay;
|
||||
/* Mask used to read RTC registers value */
|
||||
u8 mask;
|
||||
/* Registers offset to I2C addresses map */
|
||||
const unsigned int *map;
|
||||
/* Has a separate alarm enable register? */
|
||||
bool alarm_enable_reg;
|
||||
/* I2C address for RTC block */
|
||||
int rtc_i2c_addr;
|
||||
/* RTC interrupt via platform resource */
|
||||
bool rtc_irq_from_platform;
|
||||
/* Pending alarm status register */
|
||||
int alarm_pending_status_reg;
|
||||
/* RTC IRQ CHIP for regmap */
|
||||
const struct regmap_irq_chip *rtc_irq_chip;
|
||||
/* regmap configuration for the chip */
|
||||
const struct regmap_config *regmap_config;
|
||||
};
|
||||
|
||||
@ -96,7 +97,6 @@ struct max77686_rtc_info {
|
||||
|
||||
int rtc_irq;
|
||||
int virq;
|
||||
int rtc_24hr_mode;
|
||||
};
|
||||
|
||||
enum MAX77686_RTC_OP {
|
||||
@ -116,7 +116,7 @@ enum max77686_rtc_reg_offset {
|
||||
REG_RTC_WEEKDAY,
|
||||
REG_RTC_MONTH,
|
||||
REG_RTC_YEAR,
|
||||
REG_RTC_DATE,
|
||||
REG_RTC_MONTHDAY,
|
||||
REG_ALARM1_SEC,
|
||||
REG_ALARM1_MIN,
|
||||
REG_ALARM1_HOUR,
|
||||
@ -147,7 +147,7 @@ static const unsigned int max77686_map[REG_RTC_END] = {
|
||||
[REG_RTC_WEEKDAY] = MAX77686_RTC_WEEKDAY,
|
||||
[REG_RTC_MONTH] = MAX77686_RTC_MONTH,
|
||||
[REG_RTC_YEAR] = MAX77686_RTC_YEAR,
|
||||
[REG_RTC_DATE] = MAX77686_RTC_DATE,
|
||||
[REG_RTC_MONTHDAY] = MAX77686_RTC_MONTHDAY,
|
||||
[REG_ALARM1_SEC] = MAX77686_ALARM1_SEC,
|
||||
[REG_ALARM1_MIN] = MAX77686_ALARM1_MIN,
|
||||
[REG_ALARM1_HOUR] = MAX77686_ALARM1_HOUR,
|
||||
@ -201,6 +201,28 @@ static const struct max77686_rtc_driver_data max77686_drv_data = {
|
||||
.regmap_config = &max77686_rtc_regmap_config,
|
||||
};
|
||||
|
||||
static const struct regmap_irq_chip max77714_rtc_irq_chip = {
|
||||
.name = "max77714-rtc",
|
||||
.status_base = MAX77686_RTC_INT,
|
||||
.mask_base = MAX77686_RTC_INTM,
|
||||
.num_regs = 1,
|
||||
.irqs = max77686_rtc_irqs,
|
||||
.num_irqs = ARRAY_SIZE(max77686_rtc_irqs) - 1, /* no WTSR on 77714 */
|
||||
};
|
||||
|
||||
static const struct max77686_rtc_driver_data max77714_drv_data = {
|
||||
.delay = 16000,
|
||||
.mask = 0x7f,
|
||||
.map = max77686_map,
|
||||
.alarm_enable_reg = false,
|
||||
.rtc_irq_from_platform = false,
|
||||
/* On MAX77714 RTCA1 is BIT 1 of RTCINT (0x00). Not supported by this driver. */
|
||||
.alarm_pending_status_reg = MAX77686_INVALID_REG,
|
||||
.rtc_i2c_addr = MAX77714_I2C_ADDR_RTC,
|
||||
.rtc_irq_chip = &max77714_rtc_irq_chip,
|
||||
.regmap_config = &max77686_rtc_regmap_config,
|
||||
};
|
||||
|
||||
static const struct regmap_config max77620_rtc_regmap_config = {
|
||||
.reg_bits = 8,
|
||||
.val_bits = 8,
|
||||
@ -230,7 +252,7 @@ static const unsigned int max77802_map[REG_RTC_END] = {
|
||||
[REG_RTC_WEEKDAY] = MAX77802_RTC_WEEKDAY,
|
||||
[REG_RTC_MONTH] = MAX77802_RTC_MONTH,
|
||||
[REG_RTC_YEAR] = MAX77802_RTC_YEAR,
|
||||
[REG_RTC_DATE] = MAX77802_RTC_DATE,
|
||||
[REG_RTC_MONTHDAY] = MAX77802_RTC_MONTHDAY,
|
||||
[REG_ALARM1_SEC] = MAX77802_ALARM1_SEC,
|
||||
[REG_ALARM1_MIN] = MAX77802_ALARM1_MIN,
|
||||
[REG_ALARM1_HOUR] = MAX77802_ALARM1_HOUR,
|
||||
@ -275,17 +297,11 @@ static void max77686_rtc_data_to_tm(u8 *data, struct rtc_time *tm,
|
||||
|
||||
tm->tm_sec = data[RTC_SEC] & mask;
|
||||
tm->tm_min = data[RTC_MIN] & mask;
|
||||
if (info->rtc_24hr_mode) {
|
||||
tm->tm_hour = data[RTC_HOUR] & 0x1f;
|
||||
} else {
|
||||
tm->tm_hour = data[RTC_HOUR] & 0x0f;
|
||||
if (data[RTC_HOUR] & HOUR_PM_MASK)
|
||||
tm->tm_hour += 12;
|
||||
}
|
||||
tm->tm_hour = data[RTC_HOUR] & 0x1f;
|
||||
|
||||
/* Only a single bit is set in data[], so fls() would be equivalent */
|
||||
tm->tm_wday = ffs(data[RTC_WEEKDAY] & mask) - 1;
|
||||
tm->tm_mday = data[RTC_DATE] & 0x1f;
|
||||
tm->tm_mday = data[RTC_MONTHDAY] & 0x1f;
|
||||
tm->tm_mon = (data[RTC_MONTH] & 0x0f) - 1;
|
||||
tm->tm_year = data[RTC_YEAR] & mask;
|
||||
tm->tm_yday = 0;
|
||||
@ -306,7 +322,7 @@ static int max77686_rtc_tm_to_data(struct rtc_time *tm, u8 *data,
|
||||
data[RTC_MIN] = tm->tm_min;
|
||||
data[RTC_HOUR] = tm->tm_hour;
|
||||
data[RTC_WEEKDAY] = 1 << tm->tm_wday;
|
||||
data[RTC_DATE] = tm->tm_mday;
|
||||
data[RTC_MONTHDAY] = tm->tm_mday;
|
||||
data[RTC_MONTH] = tm->tm_mon + 1;
|
||||
|
||||
if (info->drv_data->alarm_enable_reg) {
|
||||
@ -562,8 +578,8 @@ static int max77686_rtc_start_alarm(struct max77686_rtc_info *info)
|
||||
data[RTC_MONTH] |= (1 << ALARM_ENABLE_SHIFT);
|
||||
if (data[RTC_YEAR] & info->drv_data->mask)
|
||||
data[RTC_YEAR] |= (1 << ALARM_ENABLE_SHIFT);
|
||||
if (data[RTC_DATE] & 0x1f)
|
||||
data[RTC_DATE] |= (1 << ALARM_ENABLE_SHIFT);
|
||||
if (data[RTC_MONTHDAY] & 0x1f)
|
||||
data[RTC_MONTHDAY] |= (1 << ALARM_ENABLE_SHIFT);
|
||||
|
||||
ret = regmap_bulk_write(info->rtc_regmap, map[REG_ALARM1_SEC],
|
||||
data, ARRAY_SIZE(data));
|
||||
@ -659,8 +675,6 @@ static int max77686_rtc_init_reg(struct max77686_rtc_info *info)
|
||||
data[0] = (1 << BCD_EN_SHIFT) | (1 << MODEL24_SHIFT);
|
||||
data[1] = (0 << BCD_EN_SHIFT) | (1 << MODEL24_SHIFT);
|
||||
|
||||
info->rtc_24hr_mode = 1;
|
||||
|
||||
ret = regmap_bulk_write(info->rtc_regmap,
|
||||
info->drv_data->map[REG_RTC_CONTROLM],
|
||||
data, ARRAY_SIZE(data));
|
||||
@ -852,6 +866,7 @@ static const struct platform_device_id rtc_id[] = {
|
||||
{ "max77686-rtc", .driver_data = (kernel_ulong_t)&max77686_drv_data, },
|
||||
{ "max77802-rtc", .driver_data = (kernel_ulong_t)&max77802_drv_data, },
|
||||
{ "max77620-rtc", .driver_data = (kernel_ulong_t)&max77620_drv_data, },
|
||||
{ "max77714-rtc", .driver_data = (kernel_ulong_t)&max77714_drv_data, },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, rtc_id);
|
||||
|
@ -796,16 +796,14 @@ static struct s3c64xx_spi_csinfo *s3c64xx_get_slave_ctrldata(
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
cs = kzalloc(sizeof(*cs), GFP_KERNEL);
|
||||
if (!cs)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
data_np = of_get_child_by_name(slave_np, "controller-data");
|
||||
if (!data_np) {
|
||||
dev_err(&spi->dev, "child node 'controller-data' not found\n");
|
||||
return ERR_PTR(-EINVAL);
|
||||
}
|
||||
|
||||
cs = kzalloc(sizeof(*cs), GFP_KERNEL);
|
||||
if (!cs) {
|
||||
of_node_put(data_np);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
dev_info(&spi->dev, "feedback delay set to default (0)\n");
|
||||
return cs;
|
||||
}
|
||||
|
||||
of_property_read_u32(data_np, "samsung,spi-feedback-delay", &fb_delay);
|
||||
|
@ -678,7 +678,7 @@ config MAX63XX_WATCHDOG
|
||||
|
||||
config MAX77620_WATCHDOG
|
||||
tristate "Maxim Max77620 Watchdog Timer"
|
||||
depends on MFD_MAX77620 || COMPILE_TEST
|
||||
depends on MFD_MAX77620 || MFD_MAX77714 || COMPILE_TEST
|
||||
select WATCHDOG_CORE
|
||||
help
|
||||
This is the driver for the Max77620 watchdog timer.
|
||||
|
@ -3,8 +3,10 @@
|
||||
* Maxim MAX77620 Watchdog Driver
|
||||
*
|
||||
* Copyright (C) 2016 NVIDIA CORPORATION. All rights reserved.
|
||||
* Copyright (C) 2022 Luca Ceresoli
|
||||
*
|
||||
* Author: Laxman Dewangan <ldewangan@nvidia.com>
|
||||
* Author: Luca Ceresoli <luca@lucaceresoli.net>
|
||||
*/
|
||||
|
||||
#include <linux/err.h>
|
||||
@ -13,6 +15,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/mfd/max77620.h>
|
||||
#include <linux/mfd/max77714.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/slab.h>
|
||||
@ -20,17 +23,57 @@
|
||||
|
||||
static bool nowayout = WATCHDOG_NOWAYOUT;
|
||||
|
||||
/**
|
||||
* struct max77620_variant - Data specific to a chip variant
|
||||
* @wdt_info: watchdog descriptor
|
||||
* @reg_onoff_cnfg2: ONOFF_CNFG2 register offset
|
||||
* @reg_cnfg_glbl2: CNFG_GLBL2 register offset
|
||||
* @reg_cnfg_glbl3: CNFG_GLBL3 register offset
|
||||
* @wdtc_mask: WDTC bit mask in CNFG_GLBL3 (=bits to update to ping the watchdog)
|
||||
* @bit_wd_rst_wk: WD_RST_WK bit offset within ONOFF_CNFG2
|
||||
* @cnfg_glbl2_cfg_bits: configuration bits to enable in CNFG_GLBL2 register
|
||||
*/
|
||||
struct max77620_variant {
|
||||
u8 reg_onoff_cnfg2;
|
||||
u8 reg_cnfg_glbl2;
|
||||
u8 reg_cnfg_glbl3;
|
||||
u8 wdtc_mask;
|
||||
u8 bit_wd_rst_wk;
|
||||
u8 cnfg_glbl2_cfg_bits;
|
||||
};
|
||||
|
||||
struct max77620_wdt {
|
||||
struct device *dev;
|
||||
struct regmap *rmap;
|
||||
const struct max77620_variant *drv_data;
|
||||
struct watchdog_device wdt_dev;
|
||||
};
|
||||
|
||||
static const struct max77620_variant max77620_wdt_data = {
|
||||
.reg_onoff_cnfg2 = MAX77620_REG_ONOFFCNFG2,
|
||||
.reg_cnfg_glbl2 = MAX77620_REG_CNFGGLBL2,
|
||||
.reg_cnfg_glbl3 = MAX77620_REG_CNFGGLBL3,
|
||||
.wdtc_mask = MAX77620_WDTC_MASK,
|
||||
.bit_wd_rst_wk = MAX77620_ONOFFCNFG2_WD_RST_WK,
|
||||
/* Set WDT clear in OFF and sleep mode */
|
||||
.cnfg_glbl2_cfg_bits = MAX77620_WDTSLPC | MAX77620_WDTOFFC,
|
||||
};
|
||||
|
||||
static const struct max77620_variant max77714_wdt_data = {
|
||||
.reg_onoff_cnfg2 = MAX77714_CNFG2_ONOFF,
|
||||
.reg_cnfg_glbl2 = MAX77714_CNFG_GLBL2,
|
||||
.reg_cnfg_glbl3 = MAX77714_CNFG_GLBL3,
|
||||
.wdtc_mask = MAX77714_WDTC,
|
||||
.bit_wd_rst_wk = MAX77714_WD_RST_WK,
|
||||
/* Set WDT clear in sleep mode (there is no WDTOFFC on MAX77714) */
|
||||
.cnfg_glbl2_cfg_bits = MAX77714_WDTSLPC,
|
||||
};
|
||||
|
||||
static int max77620_wdt_start(struct watchdog_device *wdt_dev)
|
||||
{
|
||||
struct max77620_wdt *wdt = watchdog_get_drvdata(wdt_dev);
|
||||
|
||||
return regmap_update_bits(wdt->rmap, MAX77620_REG_CNFGGLBL2,
|
||||
return regmap_update_bits(wdt->rmap, wdt->drv_data->reg_cnfg_glbl2,
|
||||
MAX77620_WDTEN, MAX77620_WDTEN);
|
||||
}
|
||||
|
||||
@ -38,7 +81,7 @@ static int max77620_wdt_stop(struct watchdog_device *wdt_dev)
|
||||
{
|
||||
struct max77620_wdt *wdt = watchdog_get_drvdata(wdt_dev);
|
||||
|
||||
return regmap_update_bits(wdt->rmap, MAX77620_REG_CNFGGLBL2,
|
||||
return regmap_update_bits(wdt->rmap, wdt->drv_data->reg_cnfg_glbl2,
|
||||
MAX77620_WDTEN, 0);
|
||||
}
|
||||
|
||||
@ -46,8 +89,8 @@ static int max77620_wdt_ping(struct watchdog_device *wdt_dev)
|
||||
{
|
||||
struct max77620_wdt *wdt = watchdog_get_drvdata(wdt_dev);
|
||||
|
||||
return regmap_update_bits(wdt->rmap, MAX77620_REG_CNFGGLBL3,
|
||||
MAX77620_WDTC_MASK, 0x1);
|
||||
return regmap_update_bits(wdt->rmap, wdt->drv_data->reg_cnfg_glbl3,
|
||||
wdt->drv_data->wdtc_mask, 0x1);
|
||||
}
|
||||
|
||||
static int max77620_wdt_set_timeout(struct watchdog_device *wdt_dev,
|
||||
@ -80,12 +123,17 @@ static int max77620_wdt_set_timeout(struct watchdog_device *wdt_dev,
|
||||
break;
|
||||
}
|
||||
|
||||
ret = regmap_update_bits(wdt->rmap, MAX77620_REG_CNFGGLBL3,
|
||||
MAX77620_WDTC_MASK, 0x1);
|
||||
/*
|
||||
* "If the value of TWD needs to be changed, clear the system
|
||||
* watchdog timer first [...], then change the value of TWD."
|
||||
* (MAX77714 datasheet but applies to MAX77620 too)
|
||||
*/
|
||||
ret = regmap_update_bits(wdt->rmap, wdt->drv_data->reg_cnfg_glbl3,
|
||||
wdt->drv_data->wdtc_mask, 0x1);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = regmap_update_bits(wdt->rmap, MAX77620_REG_CNFGGLBL2,
|
||||
ret = regmap_update_bits(wdt->rmap, wdt->drv_data->reg_cnfg_glbl2,
|
||||
MAX77620_TWD_MASK, regval);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
@ -109,6 +157,7 @@ static const struct watchdog_ops max77620_wdt_ops = {
|
||||
|
||||
static int max77620_wdt_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct platform_device_id *id = platform_get_device_id(pdev);
|
||||
struct device *dev = &pdev->dev;
|
||||
struct max77620_wdt *wdt;
|
||||
struct watchdog_device *wdt_dev;
|
||||
@ -120,6 +169,8 @@ static int max77620_wdt_probe(struct platform_device *pdev)
|
||||
return -ENOMEM;
|
||||
|
||||
wdt->dev = dev;
|
||||
wdt->drv_data = (const struct max77620_variant *) id->driver_data;
|
||||
|
||||
wdt->rmap = dev_get_regmap(dev->parent, NULL);
|
||||
if (!wdt->rmap) {
|
||||
dev_err(wdt->dev, "Failed to get parent regmap\n");
|
||||
@ -136,25 +187,25 @@ static int max77620_wdt_probe(struct platform_device *pdev)
|
||||
platform_set_drvdata(pdev, wdt);
|
||||
|
||||
/* Enable WD_RST_WK - WDT expire results in a restart */
|
||||
ret = regmap_update_bits(wdt->rmap, MAX77620_REG_ONOFFCNFG2,
|
||||
MAX77620_ONOFFCNFG2_WD_RST_WK,
|
||||
MAX77620_ONOFFCNFG2_WD_RST_WK);
|
||||
ret = regmap_update_bits(wdt->rmap, wdt->drv_data->reg_onoff_cnfg2,
|
||||
wdt->drv_data->bit_wd_rst_wk,
|
||||
wdt->drv_data->bit_wd_rst_wk);
|
||||
if (ret < 0) {
|
||||
dev_err(wdt->dev, "Failed to set WD_RST_WK: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Set WDT clear in OFF and sleep mode */
|
||||
ret = regmap_update_bits(wdt->rmap, MAX77620_REG_CNFGGLBL2,
|
||||
MAX77620_WDTOFFC | MAX77620_WDTSLPC,
|
||||
MAX77620_WDTOFFC | MAX77620_WDTSLPC);
|
||||
/* Set the "auto WDT clear" bits available on the chip */
|
||||
ret = regmap_update_bits(wdt->rmap, wdt->drv_data->reg_cnfg_glbl2,
|
||||
wdt->drv_data->cnfg_glbl2_cfg_bits,
|
||||
wdt->drv_data->cnfg_glbl2_cfg_bits);
|
||||
if (ret < 0) {
|
||||
dev_err(wdt->dev, "Failed to set WDT OFF mode: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Check if WDT running and if yes then set flags properly */
|
||||
ret = regmap_read(wdt->rmap, MAX77620_REG_CNFGGLBL2, ®val);
|
||||
ret = regmap_read(wdt->rmap, wdt->drv_data->reg_cnfg_glbl2, ®val);
|
||||
if (ret < 0) {
|
||||
dev_err(wdt->dev, "Failed to read WDT CFG register: %d\n", ret);
|
||||
return ret;
|
||||
@ -186,7 +237,8 @@ static int max77620_wdt_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
static const struct platform_device_id max77620_wdt_devtype[] = {
|
||||
{ .name = "max77620-watchdog", },
|
||||
{ "max77620-watchdog", (kernel_ulong_t)&max77620_wdt_data },
|
||||
{ "max77714-watchdog", (kernel_ulong_t)&max77714_wdt_data },
|
||||
{ },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(platform, max77620_wdt_devtype);
|
||||
@ -208,4 +260,5 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started "
|
||||
"(default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
|
||||
|
||||
MODULE_AUTHOR("Laxman Dewangan <ldewangan@nvidia.com>");
|
||||
MODULE_AUTHOR("Luca Ceresoli <luca@lucaceresoli.net>");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
|
@ -14,6 +14,11 @@
|
||||
#define IQS624_PROD_NUM 0x43
|
||||
#define IQS625_PROD_NUM 0x4E
|
||||
|
||||
#define IQS620_HW_NUM_V0 0x82
|
||||
#define IQS620_HW_NUM_V1 IQS620_HW_NUM_V0
|
||||
#define IQS620_HW_NUM_V2 IQS620_HW_NUM_V0
|
||||
#define IQS620_HW_NUM_V3 0x92
|
||||
|
||||
#define IQS621_ALS_FLAGS 0x16
|
||||
#define IQS622_ALS_FLAGS 0x14
|
||||
|
||||
@ -129,6 +134,8 @@ struct iqs62x_core {
|
||||
struct completion fw_done;
|
||||
enum iqs62x_ui_sel ui_sel;
|
||||
unsigned long event_cache;
|
||||
u8 sw_num;
|
||||
u8 hw_num;
|
||||
};
|
||||
|
||||
extern const struct iqs62x_event_desc iqs62x_events[IQS62X_NUM_EVENTS];
|
||||
|
@ -152,7 +152,7 @@ enum max77686_rtc_reg {
|
||||
MAX77686_RTC_WEEKDAY = 0x0A,
|
||||
MAX77686_RTC_MONTH = 0x0B,
|
||||
MAX77686_RTC_YEAR = 0x0C,
|
||||
MAX77686_RTC_DATE = 0x0D,
|
||||
MAX77686_RTC_MONTHDAY = 0x0D,
|
||||
MAX77686_ALARM1_SEC = 0x0E,
|
||||
MAX77686_ALARM1_MIN = 0x0F,
|
||||
MAX77686_ALARM1_HOUR = 0x10,
|
||||
@ -352,7 +352,7 @@ enum max77802_rtc_reg {
|
||||
MAX77802_RTC_WEEKDAY = 0xCA,
|
||||
MAX77802_RTC_MONTH = 0xCB,
|
||||
MAX77802_RTC_YEAR = 0xCC,
|
||||
MAX77802_RTC_DATE = 0xCD,
|
||||
MAX77802_RTC_MONTHDAY = 0xCD,
|
||||
MAX77802_RTC_AE1 = 0xCE,
|
||||
MAX77802_ALARM1_SEC = 0xCF,
|
||||
MAX77802_ALARM1_MIN = 0xD0,
|
||||
|
60
include/linux/mfd/max77714.h
Normal file
60
include/linux/mfd/max77714.h
Normal file
@ -0,0 +1,60 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Maxim MAX77714 Register and data structures definition.
|
||||
*
|
||||
* Copyright (C) 2022 Luca Ceresoli
|
||||
* Author: Luca Ceresoli <luca@lucaceresoli.net>
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_MFD_MAX77714_H_
|
||||
#define __LINUX_MFD_MAX77714_H_
|
||||
|
||||
#include <linux/bits.h>
|
||||
|
||||
#define MAX77714_INT_TOP 0x00
|
||||
#define MAX77714_INT_TOPM 0x07 /* Datasheet says "read only", but it is RW */
|
||||
|
||||
#define MAX77714_INT_TOP_ONOFF BIT(1)
|
||||
#define MAX77714_INT_TOP_RTC BIT(3)
|
||||
#define MAX77714_INT_TOP_GPIO BIT(4)
|
||||
#define MAX77714_INT_TOP_LDO BIT(5)
|
||||
#define MAX77714_INT_TOP_SD BIT(6)
|
||||
#define MAX77714_INT_TOP_GLBL BIT(7)
|
||||
|
||||
#define MAX77714_32K_STATUS 0x30
|
||||
#define MAX77714_32K_STATUS_SIOSCOK BIT(5)
|
||||
#define MAX77714_32K_STATUS_XOSCOK BIT(4)
|
||||
#define MAX77714_32K_STATUS_32KSOURCE BIT(3)
|
||||
#define MAX77714_32K_STATUS_32KLOAD_MSK 0x3
|
||||
#define MAX77714_32K_STATUS_32KLOAD_SHF 1
|
||||
#define MAX77714_32K_STATUS_CRYSTAL_CFG BIT(0)
|
||||
|
||||
#define MAX77714_32K_CONFIG 0x31
|
||||
#define MAX77714_32K_CONFIG_XOSC_RETRY BIT(4)
|
||||
|
||||
#define MAX77714_CNFG_GLBL2 0x91
|
||||
#define MAX77714_WDTEN BIT(2)
|
||||
#define MAX77714_WDTSLPC BIT(3)
|
||||
#define MAX77714_TWD_MASK 0x3
|
||||
#define MAX77714_TWD_2s 0x0
|
||||
#define MAX77714_TWD_16s 0x1
|
||||
#define MAX77714_TWD_64s 0x2
|
||||
#define MAX77714_TWD_128s 0x3
|
||||
|
||||
#define MAX77714_CNFG_GLBL3 0x92
|
||||
#define MAX77714_WDTC BIT(0)
|
||||
|
||||
#define MAX77714_CNFG2_ONOFF 0x94
|
||||
#define MAX77714_WD_RST_WK BIT(5)
|
||||
|
||||
/* Interrupts */
|
||||
enum {
|
||||
MAX77714_IRQ_TOP_ONOFF,
|
||||
MAX77714_IRQ_TOP_RTC, /* Real-time clock */
|
||||
MAX77714_IRQ_TOP_GPIO, /* GPIOs */
|
||||
MAX77714_IRQ_TOP_LDO, /* Low-dropout regulators */
|
||||
MAX77714_IRQ_TOP_SD, /* Step-down regulators */
|
||||
MAX77714_IRQ_TOP_GLBL, /* "Global resources": Low-Battery, overtemp... */
|
||||
};
|
||||
|
||||
#endif /* __LINUX_MFD_MAX77714_H_ */
|
@ -94,6 +94,10 @@
|
||||
#define MT6358_BUCK_VCORE_CON0 0x1488
|
||||
#define MT6358_BUCK_VCORE_DBG0 0x149e
|
||||
#define MT6358_BUCK_VCORE_DBG1 0x14a0
|
||||
#define MT6358_BUCK_VCORE_SSHUB_CON0 0x14a4
|
||||
#define MT6358_BUCK_VCORE_SSHUB_CON1 0x14a6
|
||||
#define MT6358_BUCK_VCORE_SSHUB_ELR0 MT6358_BUCK_VCORE_SSHUB_CON1
|
||||
#define MT6358_BUCK_VCORE_SSHUB_DBG1 MT6358_BUCK_VCORE_DBG1
|
||||
#define MT6358_BUCK_VCORE_ELR0 0x14aa
|
||||
#define MT6358_BUCK_VGPU_CON0 0x1508
|
||||
#define MT6358_BUCK_VGPU_DBG0 0x151e
|
||||
@ -169,6 +173,9 @@
|
||||
#define MT6358_LDO_VSRAM_OTHERS_CON0 0x1ba6
|
||||
#define MT6358_LDO_VSRAM_OTHERS_DBG0 0x1bc0
|
||||
#define MT6358_LDO_VSRAM_OTHERS_DBG1 0x1bc2
|
||||
#define MT6358_LDO_VSRAM_OTHERS_SSHUB_CON0 0x1bc4
|
||||
#define MT6358_LDO_VSRAM_OTHERS_SSHUB_CON1 0x1bc6
|
||||
#define MT6358_LDO_VSRAM_OTHERS_SSHUB_DBG1 MT6358_LDO_VSRAM_OTHERS_DBG1
|
||||
#define MT6358_LDO_VSRAM_GPU_CON0 0x1bc8
|
||||
#define MT6358_LDO_VSRAM_GPU_DBG0 0x1be2
|
||||
#define MT6358_LDO_VSRAM_GPU_DBG1 0x1be4
|
||||
|
@ -14,6 +14,7 @@ enum chip_id {
|
||||
MT6323_CHIP_ID = 0x23,
|
||||
MT6358_CHIP_ID = 0x58,
|
||||
MT6359_CHIP_ID = 0x59,
|
||||
MT6366_CHIP_ID = 0x66,
|
||||
MT6391_CHIP_ID = 0x91,
|
||||
MT6397_CHIP_ID = 0x97,
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user