* [PATCH v2 1/7] mfd: max77620: Fix swapped FPS_PERIOD_MAX_US values
2019-04-22 19:13 [PATCH v2 0/7] Add support for Maxim 77663 MFD Dmitry Osipenko
@ 2019-04-22 19:13 ` Dmitry Osipenko
2019-04-22 22:29 ` Sasha Levin
2019-04-22 19:13 ` [PATCH v2 2/7] mfd: max77620: Support Maxim 77663 Dmitry Osipenko
` (5 subsequent siblings)
6 siblings, 1 reply; 10+ messages in thread
From: Dmitry Osipenko @ 2019-04-22 19:13 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Mark Rutland, Liam Girdwood, Mark Brown,
Laxman Dewangan, Mallikarjun Kasoju, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel
The FPS_PERIOD_MAX_US definitions are swapped for MAX20024 and MAX77620,
fix it.
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
include/linux/mfd/max77620.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/mfd/max77620.h b/include/linux/mfd/max77620.h
index ad2a9a852aea..b4fd5a7c2aaa 100644
--- a/include/linux/mfd/max77620.h
+++ b/include/linux/mfd/max77620.h
@@ -136,8 +136,8 @@
#define MAX77620_FPS_PERIOD_MIN_US 40
#define MAX20024_FPS_PERIOD_MIN_US 20
-#define MAX77620_FPS_PERIOD_MAX_US 2560
-#define MAX20024_FPS_PERIOD_MAX_US 5120
+#define MAX20024_FPS_PERIOD_MAX_US 2560
+#define MAX77620_FPS_PERIOD_MAX_US 5120
#define MAX77620_REG_FPS_GPIO1 0x54
#define MAX77620_REG_FPS_GPIO2 0x55
--
2.21.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH v2 1/7] mfd: max77620: Fix swapped FPS_PERIOD_MAX_US values
2019-04-22 19:13 ` [PATCH v2 1/7] mfd: max77620: Fix swapped FPS_PERIOD_MAX_US values Dmitry Osipenko
@ 2019-04-22 22:29 ` Sasha Levin
0 siblings, 0 replies; 10+ messages in thread
From: Sasha Levin @ 2019-04-22 22:29 UTC (permalink / raw)
To: Sasha Levin, Dmitry Osipenko, Lee Jones, Rob Herring
Cc: devicetree, linux-tegra, stable
Hi,
[This is an automated email]
This commit has been processed because it contains a -stable tag.
The stable tag indicates that it's relevant for the following trees: all
The bot has tested the following trees: v5.0.9, v4.19.36, v4.14.113, v4.9.170, v4.4.178, v3.18.138.
v5.0.9: Build OK!
v4.19.36: Build OK!
v4.14.113: Build OK!
v4.9.170: Build OK!
v4.4.178: Failed to apply! Possible dependencies:
327156c59360 ("mfd: max77620: Add core driver for MAX77620/MAX20024")
v3.18.138: Failed to apply! Possible dependencies:
327156c59360 ("mfd: max77620: Add core driver for MAX77620/MAX20024")
How should we proceed with this patch?
--
Thanks,
Sasha
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 2/7] mfd: max77620: Support Maxim 77663
2019-04-22 19:13 [PATCH v2 0/7] Add support for Maxim 77663 MFD Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 1/7] mfd: max77620: Fix swapped FPS_PERIOD_MAX_US values Dmitry Osipenko
@ 2019-04-22 19:13 ` Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 3/7] regulator: " Dmitry Osipenko
` (4 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Dmitry Osipenko @ 2019-04-22 19:13 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Mark Rutland, Liam Girdwood, Mark Brown,
Laxman Dewangan, Mallikarjun Kasoju, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel
Add support for Maxim 77663 using the Max77620 driver. The hardware
is very similar to Max77663/20024, although there are couple minor
differences.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
drivers/mfd/max77620.c | 69 +++++++++++++++++++++++++++++++++++-
include/linux/mfd/max77620.h | 1 +
2 files changed, 69 insertions(+), 1 deletion(-)
diff --git a/drivers/mfd/max77620.c b/drivers/mfd/max77620.c
index d8ddd1a6f304..9b0009c29610 100644
--- a/drivers/mfd/max77620.c
+++ b/drivers/mfd/max77620.c
@@ -111,6 +111,26 @@ static const struct mfd_cell max20024_children[] = {
},
};
+static const struct mfd_cell max77663_children[] = {
+ { .name = "max77620-pinctrl", },
+ { .name = "max77620-clock", },
+ { .name = "max77663-pmic", },
+ { .name = "max77620-watchdog", },
+ {
+ .name = "max77620-gpio",
+ .resources = gpio_resources,
+ .num_resources = ARRAY_SIZE(gpio_resources),
+ }, {
+ .name = "max77620-rtc",
+ .resources = rtc_resources,
+ .num_resources = ARRAY_SIZE(rtc_resources),
+ }, {
+ .name = "max77663-power",
+ .resources = power_resources,
+ .num_resources = ARRAY_SIZE(power_resources),
+ },
+};
+
static const struct regmap_range max77620_readable_ranges[] = {
regmap_reg_range(MAX77620_REG_CNFGGLBL1, MAX77620_REG_DVSSD4),
};
@@ -171,6 +191,35 @@ static const struct regmap_config max20024_regmap_config = {
.volatile_table = &max77620_volatile_table,
};
+static const struct regmap_range max77663_readable_ranges[] = {
+ regmap_reg_range(MAX77620_REG_CNFGGLBL1, MAX77620_REG_CID5),
+};
+
+static const struct regmap_access_table max77663_readable_table = {
+ .yes_ranges = max77663_readable_ranges,
+ .n_yes_ranges = ARRAY_SIZE(max77663_readable_ranges),
+};
+
+static const struct regmap_range max77663_writable_ranges[] = {
+ regmap_reg_range(MAX77620_REG_CNFGGLBL1, MAX77620_REG_CID5),
+};
+
+static const struct regmap_access_table max77663_writable_table = {
+ .yes_ranges = max77663_writable_ranges,
+ .n_yes_ranges = ARRAY_SIZE(max77663_writable_ranges),
+};
+
+static const struct regmap_config max77663_regmap_config = {
+ .name = "power-slave",
+ .reg_bits = 8,
+ .val_bits = 8,
+ .max_register = MAX77620_REG_CID5 + 1,
+ .cache_type = REGCACHE_RBTREE,
+ .rd_table = &max77663_readable_table,
+ .wr_table = &max77663_writable_table,
+ .volatile_table = &max77620_volatile_table,
+};
+
/*
* MAX77620 and MAX20024 has the following steps of the interrupt handling
* for TOP interrupts:
@@ -237,6 +286,9 @@ static int max77620_get_fps_period_reg_value(struct max77620_chip *chip,
case MAX20024:
fps_min_period = MAX20024_FPS_PERIOD_MIN_US;
break;
+ case MAX77663:
+ fps_min_period = MAX20024_FPS_PERIOD_MIN_US;
+ break;
case MAX77620:
fps_min_period = MAX77620_FPS_PERIOD_MIN_US;
break;
@@ -274,6 +326,9 @@ static int max77620_config_fps(struct max77620_chip *chip,
case MAX77620:
fps_max_period = MAX77620_FPS_PERIOD_MAX_US;
break;
+ case MAX77663:
+ fps_max_period = MAX20024_FPS_PERIOD_MAX_US;
+ break;
default:
return -EINVAL;
}
@@ -375,6 +430,9 @@ static int max77620_initialise_fps(struct max77620_chip *chip)
}
skip_fps:
+ if (chip->chip_id == MAX77663)
+ return 0;
+
/* Enable wake on EN0 pin */
ret = regmap_update_bits(chip->rmap, MAX77620_REG_ONOFFCNFG2,
MAX77620_ONOFFCNFG2_WK_EN0,
@@ -453,6 +511,11 @@ static int max77620_probe(struct i2c_client *client,
n_mfd_cells = ARRAY_SIZE(max20024_children);
rmap_config = &max20024_regmap_config;
break;
+ case MAX77663:
+ mfd_cells = max77663_children;
+ n_mfd_cells = ARRAY_SIZE(max77663_children);
+ rmap_config = &max77663_regmap_config;
+ break;
default:
dev_err(chip->dev, "ChipID is invalid %d\n", chip->chip_id);
return -EINVAL;
@@ -546,6 +609,9 @@ static int max77620_i2c_suspend(struct device *dev)
return ret;
}
+ if (chip->chip_id == MAX77663)
+ goto out;
+
/* Disable WK_EN0 */
ret = regmap_update_bits(chip->rmap, MAX77620_REG_ONOFFCNFG2,
MAX77620_ONOFFCNFG2_WK_EN0, 0);
@@ -581,7 +647,7 @@ static int max77620_i2c_resume(struct device *dev)
* For MAX20024: No need to configure WKEN0 on resume as
* it is configured on Init.
*/
- if (chip->chip_id == MAX20024)
+ if (chip->chip_id == MAX20024 || chip->chip_id == MAX77663)
goto out;
/* Enable WK_EN0 */
@@ -603,6 +669,7 @@ static int max77620_i2c_resume(struct device *dev)
static const struct i2c_device_id max77620_id[] = {
{"max77620", MAX77620},
{"max20024", MAX20024},
+ {"max77663", MAX77663},
{},
};
diff --git a/include/linux/mfd/max77620.h b/include/linux/mfd/max77620.h
index b4fd5a7c2aaa..82407fe85ca2 100644
--- a/include/linux/mfd/max77620.h
+++ b/include/linux/mfd/max77620.h
@@ -324,6 +324,7 @@ enum max77620_fps_src {
enum max77620_chip_id {
MAX77620,
MAX20024,
+ MAX77663,
};
struct max77620_chip {
--
2.21.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v2 3/7] regulator: max77620: Support Maxim 77663
2019-04-22 19:13 [PATCH v2 0/7] Add support for Maxim 77663 MFD Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 1/7] mfd: max77620: Fix swapped FPS_PERIOD_MAX_US values Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 2/7] mfd: max77620: Support Maxim 77663 Dmitry Osipenko
@ 2019-04-22 19:13 ` Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 4/7] dt-bindings: mfd: max77620: Add compatible for " Dmitry Osipenko
` (3 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Dmitry Osipenko @ 2019-04-22 19:13 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Mark Rutland, Liam Girdwood, Mark Brown,
Laxman Dewangan, Mallikarjun Kasoju, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel
Add support for Maxim 77663.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
drivers/regulator/max77620-regulator.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/drivers/regulator/max77620-regulator.c b/drivers/regulator/max77620-regulator.c
index 1607ac673e44..7d6b53828056 100644
--- a/drivers/regulator/max77620-regulator.c
+++ b/drivers/regulator/max77620-regulator.c
@@ -761,6 +761,24 @@ static struct max77620_regulator_info max20024_regs_info[MAX77620_NUM_REGS] = {
RAIL_LDO(LDO8, ldo8, "in-ldo7-8", N, 800000, 3950000, 50000),
};
+static struct max77620_regulator_info max77663_regs_info[MAX77620_NUM_REGS] = {
+ RAIL_SD(SD0, sd0, "in-sd0", SD0, 600000, 3387500, 12500, 0xFF, NONE),
+ RAIL_SD(SD1, sd1, "in-sd1", SD1, 800000, 1587500, 12500, 0xFF, NONE),
+ RAIL_SD(SD2, sd2, "in-sd2", SDX, 600000, 3787500, 12500, 0xFF, NONE),
+ RAIL_SD(SD3, sd3, "in-sd3", SDX, 600000, 3787500, 12500, 0xFF, NONE),
+ RAIL_SD(SD4, sd4, "in-sd4", SDX, 600000, 3787500, 12500, 0xFF, NONE),
+
+ RAIL_LDO(LDO0, ldo0, "in-ldo0-1", N, 800000, 2375000, 25000),
+ RAIL_LDO(LDO1, ldo1, "in-ldo0-1", N, 800000, 2375000, 25000),
+ RAIL_LDO(LDO2, ldo2, "in-ldo2", P, 800000, 3950000, 50000),
+ RAIL_LDO(LDO3, ldo3, "in-ldo3-5", P, 800000, 3950000, 50000),
+ RAIL_LDO(LDO4, ldo4, "in-ldo4-6", P, 800000, 1587500, 12500),
+ RAIL_LDO(LDO5, ldo5, "in-ldo3-5", P, 800000, 3950000, 50000),
+ RAIL_LDO(LDO6, ldo6, "in-ldo4-6", P, 800000, 3950000, 50000),
+ RAIL_LDO(LDO7, ldo7, "in-ldo7-8", N, 800000, 3950000, 50000),
+ RAIL_LDO(LDO8, ldo8, "in-ldo7-8", N, 800000, 3950000, 50000),
+};
+
static int max77620_regulator_probe(struct platform_device *pdev)
{
struct max77620_chip *max77620_chip = dev_get_drvdata(pdev->dev.parent);
@@ -785,9 +803,14 @@ static int max77620_regulator_probe(struct platform_device *pdev)
case MAX77620:
rinfo = max77620_regs_info;
break;
- default:
+ case MAX20024:
rinfo = max20024_regs_info;
break;
+ case MAX77663:
+ rinfo = max77663_regs_info;
+ break;
+ default:
+ return -EINVAL;
}
config.regmap = pmic->rmap;
@@ -881,6 +904,7 @@ static const struct dev_pm_ops max77620_regulator_pm_ops = {
static const struct platform_device_id max77620_regulator_devtype[] = {
{ .name = "max77620-pmic", },
{ .name = "max20024-pmic", },
+ { .name = "max77663-pmic", },
{},
};
MODULE_DEVICE_TABLE(platform, max77620_regulator_devtype);
--
2.21.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v2 4/7] dt-bindings: mfd: max77620: Add compatible for Maxim 77663
2019-04-22 19:13 [PATCH v2 0/7] Add support for Maxim 77663 MFD Dmitry Osipenko
` (2 preceding siblings ...)
2019-04-22 19:13 ` [PATCH v2 3/7] regulator: " Dmitry Osipenko
@ 2019-04-22 19:13 ` Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 5/7] dt-bindings: mfd: max77620: Add maxim,system-power-controller property Dmitry Osipenko
` (2 subsequent siblings)
6 siblings, 0 replies; 10+ messages in thread
From: Dmitry Osipenko @ 2019-04-22 19:13 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Mark Rutland, Liam Girdwood, Mark Brown,
Laxman Dewangan, Mallikarjun Kasoju, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel
Maxim 77663 has a few minor differences in regards to hardware interface
and available capabilities by comparing it with 77620 and 20024 models,
hence re-use 77620 device-tree binding for the 77663.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
Documentation/devicetree/bindings/mfd/max77620.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/mfd/max77620.txt b/Documentation/devicetree/bindings/mfd/max77620.txt
index 9c16d51cc15b..9058499051e0 100644
--- a/Documentation/devicetree/bindings/mfd/max77620.txt
+++ b/Documentation/devicetree/bindings/mfd/max77620.txt
@@ -4,7 +4,8 @@ Required properties:
-------------------
- compatible: Must be one of
"maxim,max77620"
- "maxim,max20024".
+ "maxim,max20024"
+ "maxim,max77663".
- reg: I2C device address.
Optional properties:
@@ -105,6 +106,7 @@ Optional properties:
Here supported time periods by device in microseconds are as follows:
MAX77620 supports 40, 80, 160, 320, 640, 1280, 2560 and 5120 microseconds.
MAX20024 supports 20, 40, 80, 160, 320, 640, 1280 and 2540 microseconds.
+MAX77663 supports 20, 40, 80, 160, 320, 640, 1280 and 2540 microseconds.
-maxim,power-ok-control: configure map power ok bit
1: Enables POK(Power OK) to control nRST_IO and GPIO1
--
2.21.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v2 5/7] dt-bindings: mfd: max77620: Add maxim,system-power-controller property
2019-04-22 19:13 [PATCH v2 0/7] Add support for Maxim 77663 MFD Dmitry Osipenko
` (3 preceding siblings ...)
2019-04-22 19:13 ` [PATCH v2 4/7] dt-bindings: mfd: max77620: Add compatible for " Dmitry Osipenko
@ 2019-04-22 19:13 ` Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 6/7] mfd: max77620: Support device-tree properly Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 7/7] mfd: max77620: Provide system power-off functionality Dmitry Osipenko
6 siblings, 0 replies; 10+ messages in thread
From: Dmitry Osipenko @ 2019-04-22 19:13 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Mark Rutland, Liam Girdwood, Mark Brown,
Laxman Dewangan, Mallikarjun Kasoju, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel
Add new property that designates the PMIC as the system's power
controller.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
Documentation/devicetree/bindings/mfd/max77620.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/mfd/max77620.txt b/Documentation/devicetree/bindings/mfd/max77620.txt
index 9058499051e0..dda6d158b170 100644
--- a/Documentation/devicetree/bindings/mfd/max77620.txt
+++ b/Documentation/devicetree/bindings/mfd/max77620.txt
@@ -18,6 +18,9 @@ Optional properties:
IRQ numbers for different interrupt source of MAX77620
are defined at dt-bindings/mfd/max77620.h.
+- maxim,system-power-controller: Indicates that this PMIC is controlling the
+ system power.
+
Optional subnodes and their properties:
=======================================
--
2.21.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH v2 6/7] mfd: max77620: Support device-tree properly
2019-04-22 19:13 [PATCH v2 0/7] Add support for Maxim 77663 MFD Dmitry Osipenko
` (4 preceding siblings ...)
2019-04-22 19:13 ` [PATCH v2 5/7] dt-bindings: mfd: max77620: Add maxim,system-power-controller property Dmitry Osipenko
@ 2019-04-22 19:13 ` Dmitry Osipenko
2019-04-23 18:27 ` Dmitry Osipenko
2019-04-22 19:13 ` [PATCH v2 7/7] mfd: max77620: Provide system power-off functionality Dmitry Osipenko
6 siblings, 1 reply; 10+ messages in thread
From: Dmitry Osipenko @ 2019-04-22 19:13 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Mark Rutland, Liam Girdwood, Mark Brown,
Laxman Dewangan, Mallikarjun Kasoju, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel
For some unknown reason the driver for Max77620 doesn't wire up the
device-tree support properly and nothing in kernel creates I2C device
for the driver (and never did), moreover device-tree files for NVIDIA
Tegra210/186/194 boards already have nodes for Max77620. Hence add the
missing of_match_table to make driver actually usable.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
drivers/mfd/max77620.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/mfd/max77620.c b/drivers/mfd/max77620.c
index 9b0009c29610..b7a058069808 100644
--- a/drivers/mfd/max77620.c
+++ b/drivers/mfd/max77620.c
@@ -37,6 +37,10 @@
#include <linux/regmap.h>
#include <linux/slab.h>
+struct max77620_desc {
+ enum max77620_chip_id chip_id;
+};
+
static const struct resource gpio_resources[] = {
DEFINE_RES_IRQ(MAX77620_IRQ_TOP_GPIO),
};
@@ -487,6 +491,7 @@ static int max77620_probe(struct i2c_client *client,
const struct regmap_config *rmap_config;
struct max77620_chip *chip;
const struct mfd_cell *mfd_cells;
+ const struct max77620_desc *desc;
int n_mfd_cells;
int ret;
@@ -500,6 +505,10 @@ static int max77620_probe(struct i2c_client *client,
chip->chip_irq = client->irq;
chip->chip_id = (enum max77620_chip_id)id->driver_data;
+ desc = of_device_get_match_data(&client->dev);
+ if (desc)
+ chip->chip_id = desc->chip_id;
+
switch (chip->chip_id) {
case MAX77620:
mfd_cells = max77620_children;
@@ -673,6 +682,25 @@ static const struct i2c_device_id max77620_id[] = {
{},
};
+static const struct max77620_desc max77620_desc = {
+ .chip_id = MAX77620,
+};
+
+static const struct max77620_desc max20024_desc = {
+ .chip_id = MAX20024,
+};
+
+static const struct max77620_desc max77663_desc = {
+ .chip_id = MAX77663,
+};
+
+static const struct of_device_id max77620_of_match[] = {
+ { .compatible = "maxim,max77620", .data = &max77620_desc },
+ { .compatible = "maxim,max20024", .data = &max20024_desc },
+ { .compatible = "maxim,max77663", .data = &max77663_desc },
+ { },
+};
+
static const struct dev_pm_ops max77620_pm_ops = {
SET_SYSTEM_SLEEP_PM_OPS(max77620_i2c_suspend, max77620_i2c_resume)
};
@@ -681,6 +709,7 @@ static struct i2c_driver max77620_driver = {
.driver = {
.name = "max77620",
.pm = &max77620_pm_ops,
+ .of_match_table = of_match_ptr(max77620_of_match),
},
.probe = max77620_probe,
.id_table = max77620_id,
--
2.21.0
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH v2 6/7] mfd: max77620: Support device-tree properly
2019-04-22 19:13 ` [PATCH v2 6/7] mfd: max77620: Support device-tree properly Dmitry Osipenko
@ 2019-04-23 18:27 ` Dmitry Osipenko
0 siblings, 0 replies; 10+ messages in thread
From: Dmitry Osipenko @ 2019-04-23 18:27 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Mark Rutland, Liam Girdwood, Mark Brown,
Laxman Dewangan, Mallikarjun Kasoju, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel
22.04.2019 22:13, Dmitry Osipenko пишет:
> For some unknown reason the driver for Max77620 doesn't wire up the
> device-tree support properly and nothing in kernel creates I2C device
> for the driver (and never did), moreover device-tree files for NVIDIA
> Tegra210/186/194 boards already have nodes for Max77620. Hence add the
> missing of_match_table to make driver actually usable.
>
> Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
> ---
I found out that I2C core actually parses the compatible value of the device-tree node for the driver-device matching and hence it's enough to have the id_table solely. I'll drop this patch in v3.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 7/7] mfd: max77620: Provide system power-off functionality
2019-04-22 19:13 [PATCH v2 0/7] Add support for Maxim 77663 MFD Dmitry Osipenko
` (5 preceding siblings ...)
2019-04-22 19:13 ` [PATCH v2 6/7] mfd: max77620: Support device-tree properly Dmitry Osipenko
@ 2019-04-22 19:13 ` Dmitry Osipenko
6 siblings, 0 replies; 10+ messages in thread
From: Dmitry Osipenko @ 2019-04-22 19:13 UTC (permalink / raw)
To: Lee Jones, Rob Herring, Mark Rutland, Liam Girdwood, Mark Brown,
Laxman Dewangan, Mallikarjun Kasoju, Thierry Reding,
Jonathan Hunter
Cc: devicetree, linux-tegra, linux-kernel
Provide system power-off functionality that allows to turn off machine
gracefully.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
---
drivers/mfd/max77620.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/drivers/mfd/max77620.c b/drivers/mfd/max77620.c
index b7a058069808..3b8fd0b45425 100644
--- a/drivers/mfd/max77620.c
+++ b/drivers/mfd/max77620.c
@@ -41,6 +41,8 @@ struct max77620_desc {
enum max77620_chip_id chip_id;
};
+static struct max77620_chip *max77620_scratch;
+
static const struct resource gpio_resources[] = {
DEFINE_RES_IRQ(MAX77620_IRQ_TOP_GPIO),
};
@@ -485,6 +487,15 @@ static int max77620_read_es_version(struct max77620_chip *chip)
return ret;
}
+static void max77620_pm_power_off(void)
+{
+ struct max77620_chip *chip = max77620_scratch;
+
+ regmap_update_bits(chip->rmap, MAX77620_REG_ONOFFCNFG1,
+ MAX77620_ONOFFCNFG1_SFT_RST,
+ MAX77620_ONOFFCNFG1_SFT_RST);
+}
+
static int max77620_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
@@ -493,6 +504,7 @@ static int max77620_probe(struct i2c_client *client,
const struct mfd_cell *mfd_cells;
const struct max77620_desc *desc;
int n_mfd_cells;
+ bool pm_off;
int ret;
chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
@@ -563,6 +575,13 @@ static int max77620_probe(struct i2c_client *client,
return ret;
}
+ pm_off = of_property_read_bool(client->dev.of_node,
+ "maxim,system-power-controller");
+ if (pm_off && !pm_power_off) {
+ max77620_scratch = chip;
+ pm_power_off = max77620_pm_power_off;
+ }
+
return 0;
}
--
2.21.0
^ permalink raw reply related [flat|nested] 10+ messages in thread