* [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms
@ 2022-11-23 5:35 Matt Ranostay
2022-11-23 5:35 ` [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support Matt Ranostay
` (4 more replies)
0 siblings, 5 replies; 16+ messages in thread
From: Matt Ranostay @ 2022-11-23 5:35 UTC (permalink / raw)
To: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl
Cc: linux-arm-kernel, devicetree, linux-gpio, linux-rtc, Matt Ranostay
This patchset series adds support for the TPS6594 PMIC along with
initial support for its RTC + GPIO interface, and poweroff sequence.
Changes from v1:
* Corrected devicetree documentation issues found with dt-schema
* Changed MFD references to PMIC reflecting the more valid use of driver
* Cleaning up variable naming and ordering within functions
* Adding gpio + regulator cells for upcoming driver support
* Switching from .probe to .probe_new API
* Revising comments within drivers to be more concise
* Adding device tree nodes for j721s2 and j721e platforms
Changes from v2:
* Adding gpio-tps6594x driver support
* Enabling gpio cell in MFD driver
Changes from v3:
* Refactoring gpio driver to use regmap gpio helpers
* Changing rtc driver to use more of device resource management
* Minor code changes related to error messages that aren't useful
being dropped
* Dropped wildcard in device-tree compatible, and i2c device id
* Dropped device tree changes from the series; since these should
be in their own series later
Changes from v4:
* Corrected commit messages for device tree documentation
* Added TPS6954 datasheet PDF to devicetree documentation
* Renamed all references, including filenames + configuration options,
from tps6594x to tps6594 dropping the unneeded wildcard
Keerthy (2):
mfd: tps6594: Add support for TPS6594 PMIC devices
rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC
Matt Ranostay (2):
dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support
gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC
.../devicetree/bindings/mfd/ti,tps6594.yaml | 69 ++++++++
drivers/gpio/Kconfig | 9 +
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio-tps6594.c | 78 +++++++++
drivers/mfd/Kconfig | 14 ++
drivers/mfd/Makefile | 1 +
drivers/mfd/tps6594.c | 113 +++++++++++++
drivers/rtc/Kconfig | 10 ++
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-tps6594.c | 155 ++++++++++++++++++
include/linux/mfd/tps6594.h | 88 ++++++++++
11 files changed, 539 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
create mode 100644 drivers/gpio/gpio-tps6594.c
create mode 100644 drivers/mfd/tps6594.c
create mode 100644 drivers/rtc/rtc-tps6594.c
create mode 100644 include/linux/mfd/tps6594.h
--
2.38.GIT
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support
2022-11-23 5:35 [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms Matt Ranostay
@ 2022-11-23 5:35 ` Matt Ranostay
2022-11-23 7:08 ` Tony Lindgren
` (2 more replies)
2022-11-23 5:35 ` [PATCH v5 2/4] mfd: tps6594: Add support for TPS6594 PMIC devices Matt Ranostay
` (3 subsequent siblings)
4 siblings, 3 replies; 16+ messages in thread
From: Matt Ranostay @ 2022-11-23 5:35 UTC (permalink / raw)
To: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl
Cc: linux-arm-kernel, devicetree, linux-gpio, linux-rtc, Matt Ranostay
Add documentation for the TPS6594 PMIC including its RTC and GPIO
functionalities.
Signed-off-by: Matt Ranostay <mranostay@ti.com>
---
.../devicetree/bindings/mfd/ti,tps6594.yaml | 69 +++++++++++++++++++
1 file changed, 69 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
diff --git a/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml b/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
new file mode 100644
index 000000000000..0de0db87dbf7
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/ti,tps6594.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TPS6594 Power Management Integrated Circuit (PMIC)
+
+description: |
+ TPS6594 Power Management Integrated Circuit (PMIC)
+ https://www.ti.com/lit/ds/symlink/tps6594-q1.pdf
+
+maintainers:
+ - Keerthy <j-keerthy@ti.com>
+
+properties:
+ compatible:
+ enum:
+ - ti,tps6594
+
+ reg:
+ const: 0x48
+
+ ti,system-power-controller:
+ type: boolean
+ description: PMIC is controlling the system power.
+
+ rtc:
+ type: object
+ $ref: /schemas/rtc/rtc.yaml#
+ unevaluatedProperties: false
+ properties:
+ compatible:
+ const: ti,tps6594-rtc
+
+ gpio:
+ type: object
+ unevaluatedProperties: false
+ properties:
+ compatible:
+ const: ti,tps6594-gpio
+
+additionalProperties: false
+
+required:
+ - compatible
+ - reg
+
+examples:
+ - |
+ i2c0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pmic: pmic@48 {
+ compatible = "ti,tps6594";
+ reg = <0x48>;
+
+ rtc {
+ compatible = "ti,tps6594-rtc";
+ };
+
+ gpio {
+ compatible = "ti,tps6594-gpio";
+ };
+ };
+ };
+
+...
--
2.38.GIT
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 2/4] mfd: tps6594: Add support for TPS6594 PMIC devices
2022-11-23 5:35 [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms Matt Ranostay
2022-11-23 5:35 ` [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support Matt Ranostay
@ 2022-11-23 5:35 ` Matt Ranostay
2022-11-23 7:09 ` Tony Lindgren
2023-01-04 17:06 ` Lee Jones
2022-11-23 5:35 ` [PATCH v5 3/4] rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC Matt Ranostay
` (2 subsequent siblings)
4 siblings, 2 replies; 16+ messages in thread
From: Matt Ranostay @ 2022-11-23 5:35 UTC (permalink / raw)
To: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl
Cc: linux-arm-kernel, devicetree, linux-gpio, linux-rtc, Keerthy,
Matt Ranostay
From: Keerthy <j-keerthy@ti.com>
The TPS6594 chip is a PMIC, and contains the following components:
- GPIO controller
- RTC
Signed-off-by: Keerthy <j-keerthy@ti.com>
Signed-off-by: Matt Ranostay <mranostay@ti.com>
---
drivers/mfd/Kconfig | 14 +++++
drivers/mfd/Makefile | 1 +
drivers/mfd/tps6594.c | 113 ++++++++++++++++++++++++++++++++++++
include/linux/mfd/tps6594.h | 84 +++++++++++++++++++++++++++
4 files changed, 212 insertions(+)
create mode 100644 drivers/mfd/tps6594.c
create mode 100644 include/linux/mfd/tps6594.h
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 6653d03e0fe3..c54f2959a200 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1596,6 +1596,20 @@ config MFD_TI_LP873X
This driver can also be built as a module. If so, the module
will be called lp873x.
+config MFD_TPS6594
+ tristate "TI TPS6594 Power Management IC"
+ depends on I2C && OF
+ select MFD_CORE
+ select REGMAP_I2C
+ help
+ If you say yes here then you get support for the TPS6594 series of
+ Power Management Integrated Circuits (PMIC).
+ These include voltage regulators, RTS, configurable
+ General Purpose Outputs (GPO) that are used in portable devices.
+
+ This driver can also be built as a module. If so, the module
+ will be called tps6594.
+
config MFD_TI_LP87565
tristate "TI LP87565 Power Management IC"
depends on I2C && OF
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 4dd479212b3a..b4fdfcc57831 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -101,6 +101,7 @@ obj-$(CONFIG_MFD_TPS65910) += tps65910.o
obj-$(CONFIG_MFD_TPS65912) += tps65912-core.o
obj-$(CONFIG_MFD_TPS65912_I2C) += tps65912-i2c.o
obj-$(CONFIG_MFD_TPS65912_SPI) += tps65912-spi.o
+obj-$(CONFIG_MFD_TPS6594) += tps6594.o
obj-$(CONFIG_MENELAUS) += menelaus.o
obj-$(CONFIG_TWL4030_CORE) += twl-core.o twl4030-irq.o twl6030-irq.o
diff --git a/drivers/mfd/tps6594.c b/drivers/mfd/tps6594.c
new file mode 100644
index 000000000000..a7f80833e8fc
--- /dev/null
+++ b/drivers/mfd/tps6594.c
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Driver for TPS6594 PMIC chips
+ *
+ * Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
+ * Author: Keerthy <j-keerthy@ti.com>
+ */
+
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/mfd/core.h>
+#include <linux/mfd/tps6594.h>
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/regmap.h>
+
+static const struct regmap_config tps6594_regmap_config = {
+ .reg_bits = 8,
+ .val_bits = 8,
+ .max_register = TPS6594_REG_MAX,
+};
+
+static const struct mfd_cell tps6594_cells[] = {
+ { .name = "tps6594-gpio" },
+ { .name = "tps6594-rtc" },
+};
+
+static struct tps6594 *tps;
+
+static void tps6594_power_off(void)
+{
+ regmap_write(tps->regmap, TPS6594_FSM_NSLEEP_TRIGGERS,
+ TPS6594_FSM_NSLEEP_NSLEEP1B | TPS6594_FSM_NSLEEP_NSLEEP2B);
+
+ regmap_write(tps->regmap, TPS6594_INT_STARTUP,
+ TPS6594_INT_STARTUP_NPWRON_START_INT |
+ TPS6594_INT_STARTUP_ENABLE_INT | TPS6594_INT_STARTUP_RTC_INT |
+ TPS6594_INT_STARTUP_SOFT_REBOOT_INT);
+
+ regmap_write(tps->regmap, TPS6594_INT_MISC,
+ TPS6594_INT_MISC_BIST_PASS_INT |
+ TPS6594_INT_MISC_EXT_CLK_INT | TPS6594_INT_MISC_TWARN_INT);
+
+ regmap_write(tps->regmap, TPS6594_CONFIG_1,
+ TPS6594_CONFIG_NSLEEP1_MASK | TPS6594_CONFIG_NSLEEP2_MASK);
+
+ regmap_write(tps->regmap, TPS6594_FSM_I2C_TRIGGERS,
+ TPS6594_FSM_I2C_TRIGGERS_I2C0);
+}
+
+static int tps6594_probe(struct i2c_client *client)
+{
+ struct tps6594 *ddata;
+ struct device_node *node = client->dev.of_node;
+ unsigned int otpid;
+ int ret;
+
+ ddata = devm_kzalloc(&client->dev, sizeof(*ddata), GFP_KERNEL);
+ if (!ddata)
+ return -ENOMEM;
+
+ ddata->dev = &client->dev;
+
+ ddata->regmap = devm_regmap_init_i2c(client, &tps6594_regmap_config);
+ if (IS_ERR(ddata->regmap))
+ return dev_err_probe(ddata->dev, PTR_ERR(ddata->regmap),
+ "Failed to initialize register map\n");
+
+ ret = regmap_read(ddata->regmap, TPS6594_REG_DEV_REV, &otpid);
+ if (ret)
+ return dev_err_probe(ddata->dev, ret, "Failed to read OTP ID\n");
+
+ ddata->rev = otpid;
+ i2c_set_clientdata(client, ddata);
+
+ ret = mfd_add_devices(ddata->dev, PLATFORM_DEVID_AUTO, tps6594_cells,
+ ARRAY_SIZE(tps6594_cells), NULL, 0, NULL);
+ if (ret)
+ return dev_err_probe(ddata->dev, ret, "Failed to register cells\n");
+
+ tps = ddata;
+
+ if (of_property_read_bool(node, "ti,system-power-controller"))
+ pm_power_off = tps6594_power_off;
+
+ return 0;
+}
+
+static const struct of_device_id of_tps6594_match_table[] = {
+ { .compatible = "ti,tps6594", },
+ {}
+};
+MODULE_DEVICE_TABLE(of, of_tps6594_match_table);
+
+static const struct i2c_device_id tps6594_id_table[] = {
+ { "tps6594", 0 },
+ {}
+};
+MODULE_DEVICE_TABLE(i2c, tps6594_id_table);
+
+static struct i2c_driver tps6594_driver = {
+ .driver = {
+ .name = "tps6594",
+ .of_match_table = of_tps6594_match_table,
+ },
+ .probe_new = tps6594_probe,
+ .id_table = tps6594_id_table,
+};
+module_i2c_driver(tps6594_driver);
+
+MODULE_AUTHOR("J Keerthy <j-keerthy@ti.com>");
+MODULE_DESCRIPTION("TPS6594 PMIC device driver");
+MODULE_LICENSE("GPL");
diff --git a/include/linux/mfd/tps6594.h b/include/linux/mfd/tps6594.h
new file mode 100644
index 000000000000..f721ec9880dd
--- /dev/null
+++ b/include/linux/mfd/tps6594.h
@@ -0,0 +1,84 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Core driver interface for TI TPS6594 PMIC family
+ *
+ * Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+#ifndef __MFD_TPS6594_H
+#define __MFD_TPS6594_H
+
+#include <linux/bits.h>
+
+/* TPS6594 chip ID list */
+#define TPS6594 0x00
+
+/* All register addresses */
+#define TPS6594_REG_DEV_REV 0x01
+#define TPS6594_INT_STARTUP 0x65
+#define TPS6594_INT_MISC 0x66
+#define TPS6594_CONFIG_1 0x7d
+#define TPS6594_FSM_I2C_TRIGGERS 0x85
+#define TPS6594_FSM_NSLEEP_TRIGGERS 0x86
+
+#define TPS6594_RTC_SECONDS 0xb5
+#define TPS6594_RTC_MINUTES 0xb6
+#define TPS6594_RTC_HOURS 0xb7
+#define TPS6594_RTC_DAYS 0xb8
+#define TPS6594_RTC_MONTHS 0xb9
+#define TPS6594_RTC_YEARS 0xba
+#define TPS6594_RTC_WEEKS 0xbb
+#define TPS6594_ALARM_SECONDS 0xbc
+#define TPS6594_ALARM_MINUTES 0xbd
+#define TPS6594_ALARM_HOURS 0xbe
+#define TPS6594_ALARM_DAYS 0xbf
+#define TPS6594_ALARM_MONTHS 0xc0
+#define TPS6594_ALARM_YEARS 0xc1
+#define TPS6594_RTC_CTRL_1 0xc2
+#define TPS6594_RTC_CTRL_2 0xc3
+#define TPS6594_RTC_STATUS 0xc4
+#define TPS6594_RTC_INTERRUPTS 0xc5
+#define TPS6594_REG_MAX 0xd0
+
+/* Register field definitions */
+#define TPS6594_DEV_REV_DEV_ID 0xff
+
+#define TPS6594_INT_STARTUP_NPWRON_START_INT BIT(0)
+#define TPS6594_INT_STARTUP_ENABLE_INT BIT(1)
+#define TPS6594_INT_STARTUP_RTC_INT BIT(2)
+#define TPS6594_INT_STARTUP_FSD_INT BIT(4)
+#define TPS6594_INT_STARTUP_SOFT_REBOOT_INT BIT(5)
+
+#define TPS6594_INT_MISC_BIST_PASS_INT BIT(0)
+#define TPS6594_INT_MISC_EXT_CLK_INT BIT(1)
+#define TPS6594_INT_MISC_TWARN_INT BIT(3)
+
+#define TPS6594_CONFIG_NSLEEP1_MASK BIT(6)
+#define TPS6594_CONFIG_NSLEEP2_MASK BIT(7)
+
+#define TPS6594_FSM_I2C_TRIGGERS_I2C0 BIT(0)
+
+#define TPS6594_FSM_NSLEEP_NSLEEP1B BIT(0)
+#define TPS6594_FSM_NSLEEP_NSLEEP2B BIT(1)
+
+#define TPS6594_RTC_CTRL_REG_GET_TIME BIT(6)
+#define TPS6594_RTC_CTRL_REG_STOP_RTC BIT(0)
+#define TPS6594_RTC_INTERRUPTS_REG_IT_ALARM BIT(3)
+
+#define TPS6594_RTC_STATUS_RUN BIT(1)
+
+/**
+ * struct tps6594 - state holder for the tps6594 driver
+ * @dev: struct device pointer for MFD device
+ * @rev: revision of the tps6594
+ * @lock: lock guarding the data structure
+ * @regmap: register map of the tps6594 PMIC
+ *
+ * Device data may be used to access the TPS6594 chip
+ */
+struct tps6594 {
+ struct device *dev;
+ u8 rev;
+ struct regmap *regmap;
+};
+#endif /* __MFD_TPS6594_H */
--
2.38.GIT
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 3/4] rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC
2022-11-23 5:35 [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms Matt Ranostay
2022-11-23 5:35 ` [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support Matt Ranostay
2022-11-23 5:35 ` [PATCH v5 2/4] mfd: tps6594: Add support for TPS6594 PMIC devices Matt Ranostay
@ 2022-11-23 5:35 ` Matt Ranostay
2022-11-23 7:10 ` Tony Lindgren
2022-12-11 20:05 ` Alexandre Belloni
2022-11-23 5:35 ` [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC Matt Ranostay
2022-11-28 19:25 ` [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms J, KEERTHY
4 siblings, 2 replies; 16+ messages in thread
From: Matt Ranostay @ 2022-11-23 5:35 UTC (permalink / raw)
To: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl
Cc: linux-arm-kernel, devicetree, linux-gpio, linux-rtc, Keerthy,
Matt Ranostay
From: Keerthy <j-keerthy@ti.com>
Add support for TPS6594 PMIC RTC. However, currently only get/set of
time + date functionality is supported.
Signed-off-by: Keerthy <j-keerthy@ti.com>
Signed-off-by: Matt Ranostay <mranostay@ti.com>
---
drivers/rtc/Kconfig | 10 +++
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-tps6594.c | 155 ++++++++++++++++++++++++++++++++++++++
3 files changed, 166 insertions(+)
create mode 100644 drivers/rtc/rtc-tps6594.c
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index ab9a1f814119..519dc544b083 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -588,6 +588,16 @@ config RTC_DRV_TPS65910
This driver can also be built as a module. If so, the module
will be called rtc-tps65910.
+config RTC_DRV_TPS6594
+ tristate "TI TPS6594 RTC driver"
+ depends on MFD_TPS6594 || COMPILE_TEST
+ help
+ If you say yes here you get support for the RTC of TI TPS6594 series PMIC
+ chips.
+
+ This driver can also be built as a module. If so, the module
+ will be called rtc-tps6594.
+
config RTC_DRV_RC5T583
tristate "RICOH 5T583 RTC driver"
depends on MFD_RC5T583
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
index d3c042dcbc73..4493a13f989d 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -175,6 +175,7 @@ obj-$(CONFIG_RTC_DRV_TEST) += rtc-test.o
obj-$(CONFIG_RTC_DRV_TI_K3) += rtc-ti-k3.o
obj-$(CONFIG_RTC_DRV_TPS6586X) += rtc-tps6586x.o
obj-$(CONFIG_RTC_DRV_TPS65910) += rtc-tps65910.o
+obj-$(CONFIG_RTC_DRV_TPS6594) += rtc-tps6594.o
obj-$(CONFIG_RTC_DRV_TWL4030) += rtc-twl.o
obj-$(CONFIG_RTC_DRV_V3020) += rtc-v3020.o
obj-$(CONFIG_RTC_DRV_VT8500) += rtc-vt8500.o
diff --git a/drivers/rtc/rtc-tps6594.c b/drivers/rtc/rtc-tps6594.c
new file mode 100644
index 000000000000..6e85ea8551a2
--- /dev/null
+++ b/drivers/rtc/rtc-tps6594.c
@@ -0,0 +1,155 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * rtc-tps6594.c -- TPS6594 Real Time Clock driver.
+ *
+ * Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com
+ */
+
+#include <linux/bcd.h>
+#include <linux/errno.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/mfd/tps6594.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/rtc.h>
+#include <linux/types.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+
+struct tps6594_rtc {
+ struct rtc_device *rtc;
+ struct device *dev;
+};
+
+#define TPS6594_RTC_POLL 20000
+#define TPS6594_RTC_TIMEOUT 100000
+
+#define TPS6594_NUM_TIME_REGS (TPS6594_RTC_YEARS - TPS6594_RTC_SECONDS + 1)
+
+static int tps6594_rtc_read_time(struct device *dev, struct rtc_time *tm)
+{
+ unsigned char rtc_data[TPS6594_NUM_TIME_REGS];
+ struct tps6594 *tps6594 = dev_get_drvdata(dev->parent);
+ int ret;
+
+ /* Reset TPS6594_RTC_CTRL_REG_GET_TIME bit to zero, required for latch */
+ ret = regmap_update_bits(tps6594->regmap, TPS6594_RTC_CTRL_1,
+ TPS6594_RTC_CTRL_REG_GET_TIME, 0);
+ if (ret < 0)
+ return ret;
+
+ /* Copy RTC counting registers to static registers or latches */
+ ret = regmap_update_bits(tps6594->regmap, TPS6594_RTC_CTRL_1,
+ TPS6594_RTC_CTRL_REG_GET_TIME, TPS6594_RTC_CTRL_REG_GET_TIME);
+ if (ret < 0)
+ return ret;
+
+ ret = regmap_bulk_read(tps6594->regmap, TPS6594_RTC_SECONDS,
+ rtc_data, TPS6594_NUM_TIME_REGS);
+ if (ret < 0)
+ return ret;
+
+ tm->tm_sec = bcd2bin(rtc_data[0]);
+ tm->tm_min = bcd2bin(rtc_data[1]);
+ tm->tm_hour = bcd2bin(rtc_data[2]);
+ tm->tm_mday = bcd2bin(rtc_data[3]);
+ tm->tm_mon = bcd2bin(rtc_data[4]) - 1;
+ tm->tm_year = bcd2bin(rtc_data[5]) + 100;
+
+ return ret;
+}
+
+static int tps6594_rtc_set_time(struct device *dev, struct rtc_time *tm)
+{
+ unsigned char rtc_data[TPS6594_NUM_TIME_REGS];
+ struct tps6594 *tps6594 = dev_get_drvdata(dev->parent);
+ unsigned int val;
+ int ret;
+
+ rtc_data[0] = bin2bcd(tm->tm_sec);
+ rtc_data[1] = bin2bcd(tm->tm_min);
+ rtc_data[2] = bin2bcd(tm->tm_hour);
+ rtc_data[3] = bin2bcd(tm->tm_mday);
+ rtc_data[4] = bin2bcd(tm->tm_mon + 1);
+ rtc_data[5] = bin2bcd(tm->tm_year - 100);
+
+ /* Stop RTC while updating the RTC time registers */
+ ret = regmap_update_bits(tps6594->regmap, TPS6594_RTC_CTRL_1,
+ TPS6594_RTC_CTRL_REG_STOP_RTC, 0);
+ if (ret < 0) {
+ dev_err(dev, "RTC stop failed, err = %d\n", ret);
+ return ret;
+ }
+
+ /* Waiting till RTC isn't running */
+ ret = regmap_read_poll_timeout(tps6594->regmap, TPS6594_RTC_STATUS,
+ val, !(val & TPS6594_RTC_STATUS_RUN),
+ TPS6594_RTC_POLL, TPS6594_RTC_TIMEOUT);
+ if (ret) {
+ dev_err(dev, "RTC_STATUS is still RUNNING\n");
+ return ret;
+ }
+
+ ret = regmap_bulk_write(tps6594->regmap, TPS6594_RTC_SECONDS,
+ rtc_data, TPS6594_NUM_TIME_REGS);
+ if (ret < 0) {
+ dev_err(dev, "RTC_SECONDS reg write failed, err = %d\n", ret);
+ return ret;
+ }
+
+ /* Start back RTC */
+ ret = regmap_update_bits(tps6594->regmap, TPS6594_RTC_CTRL_1,
+ TPS6594_RTC_CTRL_REG_STOP_RTC,
+ TPS6594_RTC_CTRL_REG_STOP_RTC);
+ if (ret < 0)
+ dev_err(dev, "RTC start failed, err = %d\n", ret);
+
+ return ret;
+}
+
+static const struct rtc_class_ops tps6594_rtc_ops = {
+ .read_time = tps6594_rtc_read_time,
+ .set_time = tps6594_rtc_set_time,
+};
+
+static int tps6594_rtc_probe(struct platform_device *pdev)
+{
+ struct tps6594_rtc *tps6594_rtc;
+
+ tps6594_rtc = devm_kzalloc(&pdev->dev, sizeof(*tps6594_rtc), GFP_KERNEL);
+ if (!tps6594_rtc)
+ return -ENOMEM;
+
+ tps6594_rtc->dev = &pdev->dev;
+ platform_set_drvdata(pdev, tps6594_rtc);
+
+ tps6594_rtc->rtc = devm_rtc_allocate_device(&pdev->dev);
+ if (IS_ERR(tps6594_rtc->rtc))
+ return PTR_ERR(tps6594_rtc->rtc);
+
+ tps6594_rtc->rtc->ops = &tps6594_rtc_ops;
+
+ return devm_rtc_register_device(tps6594_rtc->rtc);
+}
+
+static const struct of_device_id of_tps6594_rtc_match[] = {
+ { .compatible = "ti,tps6594-rtc", },
+ {},
+};
+MODULE_DEVICE_TABLE(of, of_tps6594_rtc_match);
+
+static struct platform_driver tps6594_rtc_driver = {
+ .probe = tps6594_rtc_probe,
+ .driver = {
+ .name = "tps6594-rtc",
+ .of_match_table = of_tps6594_rtc_match,
+ },
+};
+
+module_platform_driver(tps6594_rtc_driver);
+
+MODULE_ALIAS("platform:tps6594-rtc");
+MODULE_DESCRIPTION("TI TPS6594 series RTC driver");
+MODULE_AUTHOR("Keerthy J <j-keerthy@ti.com>");
+MODULE_LICENSE("GPL");
--
2.38.GIT
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC
2022-11-23 5:35 [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms Matt Ranostay
` (2 preceding siblings ...)
2022-11-23 5:35 ` [PATCH v5 3/4] rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC Matt Ranostay
@ 2022-11-23 5:35 ` Matt Ranostay
2022-11-23 7:11 ` Tony Lindgren
` (2 more replies)
2022-11-28 19:25 ` [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms J, KEERTHY
4 siblings, 3 replies; 16+ messages in thread
From: Matt Ranostay @ 2022-11-23 5:35 UTC (permalink / raw)
To: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl
Cc: linux-arm-kernel, devicetree, linux-gpio, linux-rtc, Matt Ranostay
Add support for TPS6594 PMICs GPIO interface that has 11 that can be
configured as input or outputs.
Signed-off-by: Matt Ranostay <mranostay@ti.com>
---
drivers/gpio/Kconfig | 9 +++++
drivers/gpio/Makefile | 1 +
drivers/gpio/gpio-tps6594.c | 78 +++++++++++++++++++++++++++++++++++++
include/linux/mfd/tps6594.h | 4 ++
4 files changed, 92 insertions(+)
create mode 100644 drivers/gpio/gpio-tps6594.c
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index ec7cfd4f52b1..f34b3746075a 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -1405,6 +1405,15 @@ config GPIO_TPS65912
help
This driver supports TPS65912 GPIO chip.
+config GPIO_TPS6594
+ tristate "TI TPS6594 GPIO driver"
+ depends on MFD_TPS6594 || COMPILE_TEST
+ select REGMAP
+ select GPIO_REGMAP
+ help
+ Select this option to enable GPIO driver for the TPS6954
+ PMIC chip family. There are 11 GPIOs that can be configured.
+
config GPIO_TPS68470
tristate "TPS68470 GPIO"
depends on INTEL_SKL_INT3472
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index 010587025fc8..31bef1cc112f 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -159,6 +159,7 @@ obj-$(CONFIG_GPIO_TPS65218) += gpio-tps65218.o
obj-$(CONFIG_GPIO_TPS6586X) += gpio-tps6586x.o
obj-$(CONFIG_GPIO_TPS65910) += gpio-tps65910.o
obj-$(CONFIG_GPIO_TPS65912) += gpio-tps65912.o
+obj-$(CONFIG_GPIO_TPS6594) += gpio-tps6594.o
obj-$(CONFIG_GPIO_TPS68470) += gpio-tps68470.o
obj-$(CONFIG_GPIO_TQMX86) += gpio-tqmx86.o
obj-$(CONFIG_GPIO_TS4800) += gpio-ts4800.o
diff --git a/drivers/gpio/gpio-tps6594.c b/drivers/gpio/gpio-tps6594.c
new file mode 100644
index 000000000000..983c37a77266
--- /dev/null
+++ b/drivers/gpio/gpio-tps6594.c
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * GPIO driver for TI TPS6594 PMICs
+ *
+ * Copyright (C) 2022 Texas Instruments Incorporated - http://www.ti.com/
+ */
+
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+
+#include <linux/gpio/regmap.h>
+#include <linux/gpio/driver.h>
+#include <linux/mfd/tps6594.h>
+
+#define GPIO_BANK_SIZE 8
+#define GPIO_CFG_MASK BIT(0)
+
+static int tps6594_regmap_xlate(struct gpio_regmap *gpio,
+ unsigned int base, unsigned int offset,
+ unsigned int *reg, unsigned int *mask)
+{
+ if (base == TPS6594_GPIO_CONF) {
+ *reg = base + offset;
+ *mask = GPIO_CFG_MASK;
+ } else {
+ unsigned int line = offset % GPIO_BANK_SIZE;
+ unsigned int stride = offset / GPIO_BANK_SIZE;
+
+ *reg = base + stride;
+ *mask = BIT(line);
+ }
+
+ return 0;
+}
+
+static int tps6594_gpio_probe(struct platform_device *pdev)
+{
+ struct gpio_regmap_config config = {0};
+ struct regmap *regmap;
+
+ regmap = dev_get_regmap(pdev->dev.parent, NULL);
+ if (!regmap)
+ return -ENODEV;
+
+ config.regmap = regmap;
+ config.parent = &pdev->dev;
+ config.ngpio = 11;
+ config.ngpio_per_reg = GPIO_BANK_SIZE;
+
+ config.reg_dat_base = TPS6594_GPIO_IN;
+ config.reg_set_base = TPS6594_GPIO_OUT;
+ config.reg_dir_out_base = TPS6594_GPIO_CONF;
+ config.reg_mask_xlate = tps6594_regmap_xlate;
+
+ return PTR_ERR_OR_ZERO(devm_gpio_regmap_register(&pdev->dev, &config));
+}
+
+static const struct of_device_id of_tps6594_gpio_match[] = {
+ { .compatible = "ti,tps6594-gpio", },
+ {},
+};
+MODULE_DEVICE_TABLE(of, of_tps6594_gpio_match);
+
+static struct platform_driver tps6594_gpio_driver = {
+ .driver = {
+ .name = "tps6594-gpio",
+ .of_match_table = of_tps6594_gpio_match,
+ },
+ .probe = tps6594_gpio_probe,
+};
+module_platform_driver(tps6594_gpio_driver);
+
+MODULE_ALIAS("platform:tps6594-gpio");
+MODULE_AUTHOR("Matt Ranostay <mranostay@ti.com>");
+MODULE_DESCRIPTION("TPS6594 GPIO driver");
+MODULE_LICENSE("GPL");
diff --git a/include/linux/mfd/tps6594.h b/include/linux/mfd/tps6594.h
index f721ec9880dd..758b1bc44178 100644
--- a/include/linux/mfd/tps6594.h
+++ b/include/linux/mfd/tps6594.h
@@ -21,6 +21,10 @@
#define TPS6594_FSM_I2C_TRIGGERS 0x85
#define TPS6594_FSM_NSLEEP_TRIGGERS 0x86
+#define TPS6594_GPIO_CONF 0x31
+#define TPS6594_GPIO_OUT 0x3d
+#define TPS6594_GPIO_IN 0x3f
+
#define TPS6594_RTC_SECONDS 0xb5
#define TPS6594_RTC_MINUTES 0xb6
#define TPS6594_RTC_HOURS 0xb7
--
2.38.GIT
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support
2022-11-23 5:35 ` [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support Matt Ranostay
@ 2022-11-23 7:08 ` Tony Lindgren
2022-11-24 14:05 ` Krzysztof Kozlowski
2022-11-30 20:42 ` Rob Herring
2 siblings, 0 replies; 16+ messages in thread
From: Tony Lindgren @ 2022-11-23 7:08 UTC (permalink / raw)
To: Matt Ranostay
Cc: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl, linux-arm-kernel, devicetree,
linux-gpio, linux-rtc
* Matt Ranostay <mranostay@ti.com> [221123 05:35]:
> Add documentation for the TPS6594 PMIC including its RTC and GPIO
> functionalities.
Reviewed-by: Tony Lindgren <tony@atomide.com>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 2/4] mfd: tps6594: Add support for TPS6594 PMIC devices
2022-11-23 5:35 ` [PATCH v5 2/4] mfd: tps6594: Add support for TPS6594 PMIC devices Matt Ranostay
@ 2022-11-23 7:09 ` Tony Lindgren
2023-01-04 17:06 ` Lee Jones
1 sibling, 0 replies; 16+ messages in thread
From: Tony Lindgren @ 2022-11-23 7:09 UTC (permalink / raw)
To: Matt Ranostay
Cc: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl, linux-arm-kernel, devicetree,
linux-gpio, linux-rtc, Keerthy
* Matt Ranostay <mranostay@ti.com> [221123 05:36]:
> From: Keerthy <j-keerthy@ti.com>
>
> The TPS6594 chip is a PMIC, and contains the following components:
>
> - GPIO controller
> - RTC
Looks nice to me:
Reviewed-by: Tony Lindgren <tony@atomide.com>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 3/4] rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC
2022-11-23 5:35 ` [PATCH v5 3/4] rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC Matt Ranostay
@ 2022-11-23 7:10 ` Tony Lindgren
2022-12-11 20:05 ` Alexandre Belloni
1 sibling, 0 replies; 16+ messages in thread
From: Tony Lindgren @ 2022-11-23 7:10 UTC (permalink / raw)
To: Matt Ranostay
Cc: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl, linux-arm-kernel, devicetree,
linux-gpio, linux-rtc, Keerthy
* Matt Ranostay <mranostay@ti.com> [221123 05:33]:
> From: Keerthy <j-keerthy@ti.com>
>
> Add support for TPS6594 PMIC RTC. However, currently only get/set of
> time + date functionality is supported.
Reviewed-by: Tony Lindgren <tony@atomide.com>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC
2022-11-23 5:35 ` [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC Matt Ranostay
@ 2022-11-23 7:11 ` Tony Lindgren
2022-11-23 8:40 ` Michael Walle
2022-12-01 9:10 ` Bartosz Golaszewski
2 siblings, 0 replies; 16+ messages in thread
From: Tony Lindgren @ 2022-11-23 7:11 UTC (permalink / raw)
To: Matt Ranostay
Cc: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl, linux-arm-kernel, devicetree,
linux-gpio, linux-rtc
* Matt Ranostay <mranostay@ti.com> [221123 05:35]:
> Add support for TPS6594 PMICs GPIO interface that has 11 that can be
> configured as input or outputs.
Reviewed-by: Tony Lindgren <tony@atomide.com>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC
2022-11-23 5:35 ` [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC Matt Ranostay
2022-11-23 7:11 ` Tony Lindgren
@ 2022-11-23 8:40 ` Michael Walle
2022-12-01 9:10 ` Bartosz Golaszewski
2 siblings, 0 replies; 16+ messages in thread
From: Michael Walle @ 2022-11-23 8:40 UTC (permalink / raw)
To: Matt Ranostay
Cc: vigneshr, robh, krzysztof.kozlowski, a.zummo, linus.walleij, lee,
brgl, linux-arm-kernel, devicetree, linux-gpio, linux-rtc
Am 2022-11-23 06:35, schrieb Matt Ranostay:
> +static int tps6594_regmap_xlate(struct gpio_regmap *gpio,
> + unsigned int base, unsigned int offset,
> + unsigned int *reg, unsigned int *mask)
> +{
> + if (base == TPS6594_GPIO_CONF) {
> + *reg = base + offset;
> + *mask = GPIO_CFG_MASK;
> + } else {
> + unsigned int line = offset % GPIO_BANK_SIZE;
> + unsigned int stride = offset / GPIO_BANK_SIZE;
> +
> + *reg = base + stride;
> + *mask = BIT(line);
> + }
This looks like a duplcate from gpio_regmap_simple_xlate(). Maybe
we can export it and do
if (base == TPS6594_GPIO_CONF) {
*reg = base + offset;
*mask = GPIO_CFG_MASK;
} else {
return gpio_regmap_simple_xlate(gpio, base, offset, reg, mask);
}
Apart from that
Reviewed-by: Michael Walle <michael@walle.cc>
-michael
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support
2022-11-23 5:35 ` [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support Matt Ranostay
2022-11-23 7:08 ` Tony Lindgren
@ 2022-11-24 14:05 ` Krzysztof Kozlowski
2022-11-30 20:42 ` Rob Herring
2 siblings, 0 replies; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-11-24 14:05 UTC (permalink / raw)
To: Matt Ranostay, michael, vigneshr, robh, a.zummo, linus.walleij,
lee, brgl
Cc: linux-arm-kernel, devicetree, linux-gpio, linux-rtc
On 23/11/2022 06:35, Matt Ranostay wrote:
> Add documentation for the TPS6594 PMIC including its RTC and GPIO
> functionalities.
Back in September I asked to use get_maintainers.pl to CC people. Can
you please tell me, why you still prefer not to use it's output and
instead use a bit different email addresses?
How many times same feedback should be given?
>
> Signed-off-by: Matt Ranostay <mranostay@ti.com>
> ---
> .../devicetree/bindings/mfd/ti,tps6594.yaml | 69 +++++++++++++++++++
> 1 file changed, 69 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
>
> diff --git a/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml b/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
> new file mode 100644
> index 000000000000..0de0db87dbf7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
> @@ -0,0 +1,69 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/ti,tps6594.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: TPS6594 Power Management Integrated Circuit (PMIC)
> +
> +description: |
> + TPS6594 Power Management Integrated Circuit (PMIC)
> + https://www.ti.com/lit/ds/symlink/tps6594-q1.pdf
> +
> +maintainers:
> + - Keerthy <j-keerthy@ti.com>
> +
> +properties:
> + compatible:
> + enum:
> + - ti,tps6594
> +
> + reg:
> + const: 0x48
> +
> + ti,system-power-controller:
> + type: boolean
> + description: PMIC is controlling the system power.
> +
> + rtc:
> + type: object
> + $ref: /schemas/rtc/rtc.yaml#
> + unevaluatedProperties: false
> + properties:
> + compatible:
> + const: ti,tps6594-rtc
> +
> + gpio:
> + type: object
> + unevaluatedProperties: false
> + properties:
> + compatible:
> + const: ti,tps6594-gpio
> +
> +additionalProperties: false
> +
> +required:
> + - compatible
> + - reg
> +
> +examples:
> + - |
> + i2c0 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + pmic: pmic@48 {
> + compatible = "ti,tps6594";
> + reg = <0x48>;
> +
> + rtc {
> + compatible = "ti,tps6594-rtc";
No resources? No properties? Usually such nodes are not useful at all.
Rob pointed this some times in different cases, but I don't remember if
we resolved it here.
> + };
> +
> + gpio {
> + compatible = "ti,tps6594-gpio";
Same question.
> + };
> + };
> + };
> +
> +...
Best regards,
Krzysztof
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms
2022-11-23 5:35 [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms Matt Ranostay
` (3 preceding siblings ...)
2022-11-23 5:35 ` [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC Matt Ranostay
@ 2022-11-28 19:25 ` J, KEERTHY
4 siblings, 0 replies; 16+ messages in thread
From: J, KEERTHY @ 2022-11-28 19:25 UTC (permalink / raw)
To: Matt Ranostay, michael, vigneshr, robh, krzysztof.kozlowski,
a.zummo, linus.walleij, lee, brgl
Cc: linux-arm-kernel, devicetree, linux-gpio, linux-rtc
On 11/23/2022 11:05 AM, Matt Ranostay wrote:
> This patchset series adds support for the TPS6594 PMIC along with
> initial support for its RTC + GPIO interface, and poweroff sequence.
For the series:
Reviewed-by: Keerthy <j-keerthy@ti.com>
- Keerthy
>
> Changes from v1:
> * Corrected devicetree documentation issues found with dt-schema
> * Changed MFD references to PMIC reflecting the more valid use of driver
> * Cleaning up variable naming and ordering within functions
> * Adding gpio + regulator cells for upcoming driver support
> * Switching from .probe to .probe_new API
> * Revising comments within drivers to be more concise
> * Adding device tree nodes for j721s2 and j721e platforms
>
> Changes from v2:
> * Adding gpio-tps6594x driver support
> * Enabling gpio cell in MFD driver
>
> Changes from v3:
> * Refactoring gpio driver to use regmap gpio helpers
> * Changing rtc driver to use more of device resource management
> * Minor code changes related to error messages that aren't useful
> being dropped
> * Dropped wildcard in device-tree compatible, and i2c device id
> * Dropped device tree changes from the series; since these should
> be in their own series later
>
> Changes from v4:
> * Corrected commit messages for device tree documentation
> * Added TPS6954 datasheet PDF to devicetree documentation
> * Renamed all references, including filenames + configuration options,
> from tps6594x to tps6594 dropping the unneeded wildcard
>
> Keerthy (2):
> mfd: tps6594: Add support for TPS6594 PMIC devices
> rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC
>
> Matt Ranostay (2):
> dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support
> gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC
>
> .../devicetree/bindings/mfd/ti,tps6594.yaml | 69 ++++++++
> drivers/gpio/Kconfig | 9 +
> drivers/gpio/Makefile | 1 +
> drivers/gpio/gpio-tps6594.c | 78 +++++++++
> drivers/mfd/Kconfig | 14 ++
> drivers/mfd/Makefile | 1 +
> drivers/mfd/tps6594.c | 113 +++++++++++++
> drivers/rtc/Kconfig | 10 ++
> drivers/rtc/Makefile | 1 +
> drivers/rtc/rtc-tps6594.c | 155 ++++++++++++++++++
> include/linux/mfd/tps6594.h | 88 ++++++++++
> 11 files changed, 539 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
> create mode 100644 drivers/gpio/gpio-tps6594.c
> create mode 100644 drivers/mfd/tps6594.c
> create mode 100644 drivers/rtc/rtc-tps6594.c
> create mode 100644 include/linux/mfd/tps6594.h
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support
2022-11-23 5:35 ` [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support Matt Ranostay
2022-11-23 7:08 ` Tony Lindgren
2022-11-24 14:05 ` Krzysztof Kozlowski
@ 2022-11-30 20:42 ` Rob Herring
2 siblings, 0 replies; 16+ messages in thread
From: Rob Herring @ 2022-11-30 20:42 UTC (permalink / raw)
To: Matt Ranostay
Cc: michael, vigneshr, krzysztof.kozlowski, a.zummo, linus.walleij,
lee, brgl, linux-arm-kernel, devicetree, linux-gpio, linux-rtc
On Tue, Nov 22, 2022 at 09:35:09PM -0800, Matt Ranostay wrote:
> Add documentation for the TPS6594 PMIC including its RTC and GPIO
> functionalities.
>
> Signed-off-by: Matt Ranostay <mranostay@ti.com>
> ---
> .../devicetree/bindings/mfd/ti,tps6594.yaml | 69 +++++++++++++++++++
> 1 file changed, 69 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
>
> diff --git a/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml b/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
> new file mode 100644
> index 000000000000..0de0db87dbf7
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/ti,tps6594.yaml
> @@ -0,0 +1,69 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/ti,tps6594.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: TPS6594 Power Management Integrated Circuit (PMIC)
> +
> +description: |
> + TPS6594 Power Management Integrated Circuit (PMIC)
> + https://www.ti.com/lit/ds/symlink/tps6594-q1.pdf
Normally a PMIC has some regulators...
> +
> +maintainers:
> + - Keerthy <j-keerthy@ti.com>
> +
> +properties:
> + compatible:
> + enum:
> + - ti,tps6594
> +
> + reg:
> + const: 0x48
> +
> + ti,system-power-controller:
> + type: boolean
> + description: PMIC is controlling the system power.
> +
> + rtc:
> + type: object
> + $ref: /schemas/rtc/rtc.yaml#
> + unevaluatedProperties: false
> + properties:
> + compatible:
> + const: ti,tps6594-rtc
> +
> + gpio:
> + type: object
> + unevaluatedProperties: false
> + properties:
> + compatible:
> + const: ti,tps6594-gpio
GPIO, but not using the GPIO binding?
As Krzysztof pointed out, none of this needs child nodes. You have them
just for convenience of instantiating Linux drivers.
> +
> +additionalProperties: false
> +
> +required:
> + - compatible
> + - reg
> +
> +examples:
> + - |
> + i2c0 {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + pmic: pmic@48 {
> + compatible = "ti,tps6594";
> + reg = <0x48>;
> +
> + rtc {
> + compatible = "ti,tps6594-rtc";
> + };
> +
> + gpio {
> + compatible = "ti,tps6594-gpio";
> + };
> + };
> + };
> +
> +...
> --
> 2.38.GIT
>
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC
2022-11-23 5:35 ` [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC Matt Ranostay
2022-11-23 7:11 ` Tony Lindgren
2022-11-23 8:40 ` Michael Walle
@ 2022-12-01 9:10 ` Bartosz Golaszewski
2 siblings, 0 replies; 16+ messages in thread
From: Bartosz Golaszewski @ 2022-12-01 9:10 UTC (permalink / raw)
To: Matt Ranostay
Cc: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, linux-arm-kernel, devicetree, linux-gpio,
linux-rtc
On Wed, Nov 23, 2022 at 6:35 AM Matt Ranostay <mranostay@ti.com> wrote:
>
> Add support for TPS6594 PMICs GPIO interface that has 11 that can be
> configured as input or outputs.
>
> Signed-off-by: Matt Ranostay <mranostay@ti.com>
> ---
I think you forgot to collect Linus' and my review tags.
Bart
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 3/4] rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC
2022-11-23 5:35 ` [PATCH v5 3/4] rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC Matt Ranostay
2022-11-23 7:10 ` Tony Lindgren
@ 2022-12-11 20:05 ` Alexandre Belloni
1 sibling, 0 replies; 16+ messages in thread
From: Alexandre Belloni @ 2022-12-11 20:05 UTC (permalink / raw)
To: Matt Ranostay
Cc: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, lee, brgl, linux-arm-kernel, devicetree,
linux-gpio, linux-rtc, Keerthy
Hello,
On 22/11/2022 21:35:11-0800, Matt Ranostay wrote:
> +static int tps6594_rtc_set_time(struct device *dev, struct rtc_time *tm)
> +{
> + unsigned char rtc_data[TPS6594_NUM_TIME_REGS];
> + struct tps6594 *tps6594 = dev_get_drvdata(dev->parent);
> + unsigned int val;
> + int ret;
> +
> + rtc_data[0] = bin2bcd(tm->tm_sec);
> + rtc_data[1] = bin2bcd(tm->tm_min);
> + rtc_data[2] = bin2bcd(tm->tm_hour);
> + rtc_data[3] = bin2bcd(tm->tm_mday);
> + rtc_data[4] = bin2bcd(tm->tm_mon + 1);
> + rtc_data[5] = bin2bcd(tm->tm_year - 100);
> +
> + /* Stop RTC while updating the RTC time registers */
> + ret = regmap_update_bits(tps6594->regmap, TPS6594_RTC_CTRL_1,
> + TPS6594_RTC_CTRL_REG_STOP_RTC, 0);
> + if (ret < 0) {
> + dev_err(dev, "RTC stop failed, err = %d\n", ret);
This function is way too verbose. There is no other action for the user
than retrying to set the time. You should probably remove all the
dev_err calls.
> + return ret;
> + }
> +
> + /* Waiting till RTC isn't running */
> + ret = regmap_read_poll_timeout(tps6594->regmap, TPS6594_RTC_STATUS,
> + val, !(val & TPS6594_RTC_STATUS_RUN),
> + TPS6594_RTC_POLL, TPS6594_RTC_TIMEOUT);
> + if (ret) {
> + dev_err(dev, "RTC_STATUS is still RUNNING\n");
> + return ret;
> + }
> +
> + ret = regmap_bulk_write(tps6594->regmap, TPS6594_RTC_SECONDS,
> + rtc_data, TPS6594_NUM_TIME_REGS);
> + if (ret < 0) {
> + dev_err(dev, "RTC_SECONDS reg write failed, err = %d\n", ret);
> + return ret;
> + }
> +
> + /* Start back RTC */
> + ret = regmap_update_bits(tps6594->regmap, TPS6594_RTC_CTRL_1,
> + TPS6594_RTC_CTRL_REG_STOP_RTC,
> + TPS6594_RTC_CTRL_REG_STOP_RTC);
> + if (ret < 0)
> + dev_err(dev, "RTC start failed, err = %d\n", ret);
> +
> + return ret;
> +}
> +
> +static const struct rtc_class_ops tps6594_rtc_ops = {
> + .read_time = tps6594_rtc_read_time,
> + .set_time = tps6594_rtc_set_time,
> +};
> +
> +static int tps6594_rtc_probe(struct platform_device *pdev)
> +{
> + struct tps6594_rtc *tps6594_rtc;
> +
> + tps6594_rtc = devm_kzalloc(&pdev->dev, sizeof(*tps6594_rtc), GFP_KERNEL);
> + if (!tps6594_rtc)
> + return -ENOMEM;
> +
> + tps6594_rtc->dev = &pdev->dev;
> + platform_set_drvdata(pdev, tps6594_rtc);
> +
> + tps6594_rtc->rtc = devm_rtc_allocate_device(&pdev->dev);
> + if (IS_ERR(tps6594_rtc->rtc))
> + return PTR_ERR(tps6594_rtc->rtc);
> +
> + tps6594_rtc->rtc->ops = &tps6594_rtc_ops;
> +
> + return devm_rtc_register_device(tps6594_rtc->rtc);
> +}
> +
> +static const struct of_device_id of_tps6594_rtc_match[] = {
> + { .compatible = "ti,tps6594-rtc", },
> + {},
> +};
> +MODULE_DEVICE_TABLE(of, of_tps6594_rtc_match);
> +
> +static struct platform_driver tps6594_rtc_driver = {
> + .probe = tps6594_rtc_probe,
> + .driver = {
> + .name = "tps6594-rtc",
> + .of_match_table = of_tps6594_rtc_match,
> + },
> +};
> +
> +module_platform_driver(tps6594_rtc_driver);
> +
> +MODULE_ALIAS("platform:tps6594-rtc");
> +MODULE_DESCRIPTION("TI TPS6594 series RTC driver");
> +MODULE_AUTHOR("Keerthy J <j-keerthy@ti.com>");
> +MODULE_LICENSE("GPL");
> --
> 2.38.GIT
>
--
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v5 2/4] mfd: tps6594: Add support for TPS6594 PMIC devices
2022-11-23 5:35 ` [PATCH v5 2/4] mfd: tps6594: Add support for TPS6594 PMIC devices Matt Ranostay
2022-11-23 7:09 ` Tony Lindgren
@ 2023-01-04 17:06 ` Lee Jones
1 sibling, 0 replies; 16+ messages in thread
From: Lee Jones @ 2023-01-04 17:06 UTC (permalink / raw)
To: Matt Ranostay
Cc: michael, vigneshr, robh, krzysztof.kozlowski, a.zummo,
linus.walleij, brgl, linux-arm-kernel, devicetree, linux-gpio,
linux-rtc, Keerthy
On Tue, 22 Nov 2022, Matt Ranostay wrote:
> From: Keerthy <j-keerthy@ti.com>
>
> The TPS6594 chip is a PMIC, and contains the following components:
>
> - GPIO controller
> - RTC
>
> Signed-off-by: Keerthy <j-keerthy@ti.com>
> Signed-off-by: Matt Ranostay <mranostay@ti.com>
> ---
> drivers/mfd/Kconfig | 14 +++++
> drivers/mfd/Makefile | 1 +
> drivers/mfd/tps6594.c | 113 ++++++++++++++++++++++++++++++++++++
> include/linux/mfd/tps6594.h | 84 +++++++++++++++++++++++++++
> 4 files changed, 212 insertions(+)
> create mode 100644 drivers/mfd/tps6594.c
> create mode 100644 include/linux/mfd/tps6594.h
>
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 6653d03e0fe3..c54f2959a200 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1596,6 +1596,20 @@ config MFD_TI_LP873X
> This driver can also be built as a module. If so, the module
> will be called lp873x.
>
> +config MFD_TPS6594
> + tristate "TI TPS6594 Power Management IC"
> + depends on I2C && OF
> + select MFD_CORE
> + select REGMAP_I2C
> + help
> + If you say yes here then you get support for the TPS6594 series of
> + Power Management Integrated Circuits (PMIC).
> + These include voltage regulators, RTS, configurable
> + General Purpose Outputs (GPO) that are used in portable devices.
> +
> + This driver can also be built as a module. If so, the module
> + will be called tps6594.
> +
> config MFD_TI_LP87565
> tristate "TI LP87565 Power Management IC"
> depends on I2C && OF
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 4dd479212b3a..b4fdfcc57831 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -101,6 +101,7 @@ obj-$(CONFIG_MFD_TPS65910) += tps65910.o
> obj-$(CONFIG_MFD_TPS65912) += tps65912-core.o
> obj-$(CONFIG_MFD_TPS65912_I2C) += tps65912-i2c.o
> obj-$(CONFIG_MFD_TPS65912_SPI) += tps65912-spi.o
> +obj-$(CONFIG_MFD_TPS6594) += tps6594.o
> obj-$(CONFIG_MENELAUS) += menelaus.o
>
> obj-$(CONFIG_TWL4030_CORE) += twl-core.o twl4030-irq.o twl6030-irq.o
> diff --git a/drivers/mfd/tps6594.c b/drivers/mfd/tps6594.c
> new file mode 100644
> index 000000000000..a7f80833e8fc
> --- /dev/null
> +++ b/drivers/mfd/tps6594.c
> @@ -0,0 +1,113 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Driver for TPS6594 PMIC chips
> + *
> + * Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
> + * Author: Keerthy <j-keerthy@ti.com>
> + */
> +
> +#include <linux/of.h>
> +#include <linux/of_device.h>
> +#include <linux/mfd/core.h>
> +#include <linux/mfd/tps6594.h>
> +#include <linux/module.h>
> +#include <linux/i2c.h>
> +#include <linux/regmap.h>
Nit: Alphabetical.
> +static const struct regmap_config tps6594_regmap_config = {
> + .reg_bits = 8,
> + .val_bits = 8,
> + .max_register = TPS6594_REG_MAX,
> +};
> +
> +static const struct mfd_cell tps6594_cells[] = {
> + { .name = "tps6594-gpio" },
> + { .name = "tps6594-rtc" },
> +};
> +
> +static struct tps6594 *tps;
> +
> +static void tps6594_power_off(void)
> +{
> + regmap_write(tps->regmap, TPS6594_FSM_NSLEEP_TRIGGERS,
> + TPS6594_FSM_NSLEEP_NSLEEP1B | TPS6594_FSM_NSLEEP_NSLEEP2B);
Any chance we can align against the open parentheses?
> + regmap_write(tps->regmap, TPS6594_INT_STARTUP,
> + TPS6594_INT_STARTUP_NPWRON_START_INT |
> + TPS6594_INT_STARTUP_ENABLE_INT | TPS6594_INT_STARTUP_RTC_INT |
> + TPS6594_INT_STARTUP_SOFT_REBOOT_INT);
> +
> + regmap_write(tps->regmap, TPS6594_INT_MISC,
> + TPS6594_INT_MISC_BIST_PASS_INT |
> + TPS6594_INT_MISC_EXT_CLK_INT | TPS6594_INT_MISC_TWARN_INT);
> +
> + regmap_write(tps->regmap, TPS6594_CONFIG_1,
> + TPS6594_CONFIG_NSLEEP1_MASK | TPS6594_CONFIG_NSLEEP2_MASK);
> +
> + regmap_write(tps->regmap, TPS6594_FSM_I2C_TRIGGERS,
> + TPS6594_FSM_I2C_TRIGGERS_I2C0);
> +}
> +
> +static int tps6594_probe(struct i2c_client *client)
> +{
> + struct tps6594 *ddata;
> + struct device_node *node = client->dev.of_node;
> + unsigned int otpid;
> + int ret;
> +
> + ddata = devm_kzalloc(&client->dev, sizeof(*ddata), GFP_KERNEL);
> + if (!ddata)
> + return -ENOMEM;
> +
> + ddata->dev = &client->dev;
> +
> + ddata->regmap = devm_regmap_init_i2c(client, &tps6594_regmap_config);
> + if (IS_ERR(ddata->regmap))
> + return dev_err_probe(ddata->dev, PTR_ERR(ddata->regmap),
> + "Failed to initialize register map\n");
> +
> + ret = regmap_read(ddata->regmap, TPS6594_REG_DEV_REV, &otpid);
> + if (ret)
> + return dev_err_probe(ddata->dev, ret, "Failed to read OTP ID\n");
> +
> + ddata->rev = otpid;
> + i2c_set_clientdata(client, ddata);
> +
> + ret = mfd_add_devices(ddata->dev, PLATFORM_DEVID_AUTO, tps6594_cells,
> + ARRAY_SIZE(tps6594_cells), NULL, 0, NULL);
> + if (ret)
> + return dev_err_probe(ddata->dev, ret, "Failed to register cells\n");
> +
> + tps = ddata;
This should be in the if() statement below, no?
> + if (of_property_read_bool(node, "ti,system-power-controller"))
> + pm_power_off = tps6594_power_off;
> +
> + return 0;
> +}
> +
> +static const struct of_device_id of_tps6594_match_table[] = {
> + { .compatible = "ti,tps6594", },
> + {}
> +};
> +MODULE_DEVICE_TABLE(of, of_tps6594_match_table);
> +
> +static const struct i2c_device_id tps6594_id_table[] = {
> + { "tps6594", 0 },
> + {}
> +};
> +MODULE_DEVICE_TABLE(i2c, tps6594_id_table);
If you're using .probe_new() you can omit this table.
> +static struct i2c_driver tps6594_driver = {
> + .driver = {
> + .name = "tps6594",
> + .of_match_table = of_tps6594_match_table,
> + },
> + .probe_new = tps6594_probe,
> + .id_table = tps6594_id_table,
> +};
> +module_i2c_driver(tps6594_driver);
> +
> +MODULE_AUTHOR("J Keerthy <j-keerthy@ti.com>");
> +MODULE_DESCRIPTION("TPS6594 PMIC device driver");
> +MODULE_LICENSE("GPL");
> diff --git a/include/linux/mfd/tps6594.h b/include/linux/mfd/tps6594.h
> new file mode 100644
> index 000000000000..f721ec9880dd
> --- /dev/null
> +++ b/include/linux/mfd/tps6594.h
> @@ -0,0 +1,84 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * Core driver interface for TI TPS6594 PMIC family
> + *
> + * Copyright (C) 2022 Texas Instruments Incorporated - https://www.ti.com/
> + */
> +
> +#ifndef __MFD_TPS6594_H
> +#define __MFD_TPS6594_H
> +
> +#include <linux/bits.h>
> +
> +/* TPS6594 chip ID list */
> +#define TPS6594 0x00
> +
> +/* All register addresses */
> +#define TPS6594_REG_DEV_REV 0x01
> +#define TPS6594_INT_STARTUP 0x65
> +#define TPS6594_INT_MISC 0x66
> +#define TPS6594_CONFIG_1 0x7d
> +#define TPS6594_FSM_I2C_TRIGGERS 0x85
> +#define TPS6594_FSM_NSLEEP_TRIGGERS 0x86
> +
> +#define TPS6594_RTC_SECONDS 0xb5
> +#define TPS6594_RTC_MINUTES 0xb6
> +#define TPS6594_RTC_HOURS 0xb7
> +#define TPS6594_RTC_DAYS 0xb8
> +#define TPS6594_RTC_MONTHS 0xb9
> +#define TPS6594_RTC_YEARS 0xba
> +#define TPS6594_RTC_WEEKS 0xbb
> +#define TPS6594_ALARM_SECONDS 0xbc
> +#define TPS6594_ALARM_MINUTES 0xbd
> +#define TPS6594_ALARM_HOURS 0xbe
> +#define TPS6594_ALARM_DAYS 0xbf
> +#define TPS6594_ALARM_MONTHS 0xc0
> +#define TPS6594_ALARM_YEARS 0xc1
> +#define TPS6594_RTC_CTRL_1 0xc2
> +#define TPS6594_RTC_CTRL_2 0xc3
> +#define TPS6594_RTC_STATUS 0xc4
> +#define TPS6594_RTC_INTERRUPTS 0xc5
> +#define TPS6594_REG_MAX 0xd0
> +
> +/* Register field definitions */
> +#define TPS6594_DEV_REV_DEV_ID 0xff
> +
> +#define TPS6594_INT_STARTUP_NPWRON_START_INT BIT(0)
> +#define TPS6594_INT_STARTUP_ENABLE_INT BIT(1)
> +#define TPS6594_INT_STARTUP_RTC_INT BIT(2)
> +#define TPS6594_INT_STARTUP_FSD_INT BIT(4)
> +#define TPS6594_INT_STARTUP_SOFT_REBOOT_INT BIT(5)
> +
> +#define TPS6594_INT_MISC_BIST_PASS_INT BIT(0)
> +#define TPS6594_INT_MISC_EXT_CLK_INT BIT(1)
> +#define TPS6594_INT_MISC_TWARN_INT BIT(3)
> +
> +#define TPS6594_CONFIG_NSLEEP1_MASK BIT(6)
> +#define TPS6594_CONFIG_NSLEEP2_MASK BIT(7)
> +
> +#define TPS6594_FSM_I2C_TRIGGERS_I2C0 BIT(0)
> +
> +#define TPS6594_FSM_NSLEEP_NSLEEP1B BIT(0)
> +#define TPS6594_FSM_NSLEEP_NSLEEP2B BIT(1)
> +
> +#define TPS6594_RTC_CTRL_REG_GET_TIME BIT(6)
> +#define TPS6594_RTC_CTRL_REG_STOP_RTC BIT(0)
> +#define TPS6594_RTC_INTERRUPTS_REG_IT_ALARM BIT(3)
> +
> +#define TPS6594_RTC_STATUS_RUN BIT(1)
> +
> +/**
> + * struct tps6594 - state holder for the tps6594 driver
> + * @dev: struct device pointer for MFD device
> + * @rev: revision of the tps6594
> + * @lock: lock guarding the data structure
> + * @regmap: register map of the tps6594 PMIC
> + *
> + * Device data may be used to access the TPS6594 chip
> + */
This will not pass a W=1 build - please fix.
> +struct tps6594 {
> + struct device *dev;
> + u8 rev;
> + struct regmap *regmap;
> +};
> +#endif /* __MFD_TPS6594_H */
> --
> 2.38.GIT
>
--
Lee Jones [李琼斯]
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2023-01-04 17:07 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-23 5:35 [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms Matt Ranostay
2022-11-23 5:35 ` [PATCH v5 1/4] dt-bindings: mfd: ti,tps6594: add TPS6594 PMIC support Matt Ranostay
2022-11-23 7:08 ` Tony Lindgren
2022-11-24 14:05 ` Krzysztof Kozlowski
2022-11-30 20:42 ` Rob Herring
2022-11-23 5:35 ` [PATCH v5 2/4] mfd: tps6594: Add support for TPS6594 PMIC devices Matt Ranostay
2022-11-23 7:09 ` Tony Lindgren
2023-01-04 17:06 ` Lee Jones
2022-11-23 5:35 ` [PATCH v5 3/4] rtc: rtc-tps6594: Add support for TPS6594 PMIC RTC Matt Ranostay
2022-11-23 7:10 ` Tony Lindgren
2022-12-11 20:05 ` Alexandre Belloni
2022-11-23 5:35 ` [PATCH v5 4/4] gpio: gpio-tps6594: add GPIO support for TPS6594 PMIC Matt Ranostay
2022-11-23 7:11 ` Tony Lindgren
2022-11-23 8:40 ` Michael Walle
2022-12-01 9:10 ` Bartosz Golaszewski
2022-11-28 19:25 ` [PATCH v5 0/4] mfd: add tps6594 support for Jacinto platforms J, KEERTHY
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).