* [PATCH v11 00/10] Add support for the silergy,sy7636a
@ 2021-08-18 15:44 Alistair Francis
2021-08-18 15:44 ` [PATCH v11 01/10] dt-bindings: mfd: Initial commit of silergy,sy7636a.yaml Alistair Francis
` (10 more replies)
0 siblings, 11 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
This series applied on top of the "mfd: simple-mfd-i2c: Add support for
registering devices via MFD cells" patch. Once "mfd: simple-mfd-i2c: Add
support for registering devices via MFD cells" is merged this series is
ready to go.
v11:
- Address comments on hwmon
- Improve "mfd: simple-mfd-i2c: Add a Kconfig name" commit message
v10:
- Use dev_get_regmap() instead of dev_get_drvdata()
v9:
- Convert to use the simple-mfd-i2c instead
Alistair Francis (10):
dt-bindings: mfd: Initial commit of silergy,sy7636a.yaml
mfd: simple-mfd-i2c: Add a Kconfig name
mfd: simple-mfd-i2c: Enable support for the silergy,sy7636a
regulator: sy7636a: Remove requirement on sy7636a mfd
thermal: sy7636a: Add thermal driver for sy7636a
hwmon: sy7636a: Add temperature driver for sy7636a
ARM: imx_v6_v7_defconfig: Enable silergy,sy7636a
ARM: dts: imx7d: remarkable2: Enable silergy,sy7636a
ARM: imx_v6_v7_defconfig: Enable backlight class devices
ARM: dts: imx7d: remarkable2: Enable lcdif
.../bindings/mfd/silergy,sy7636a.yaml | 79 ++++++++++++
arch/arm/boot/dts/imx7d-remarkable2.dts | 115 ++++++++++++++++++
arch/arm/configs/imx_v6_v7_defconfig | 5 +
drivers/hwmon/Kconfig | 10 ++
drivers/hwmon/Makefile | 1 +
drivers/hwmon/sy7636a-hwmon.c | 77 ++++++++++++
drivers/mfd/Kconfig | 2 +-
drivers/mfd/simple-mfd-i2c.c | 12 ++
drivers/regulator/Kconfig | 1 -
drivers/regulator/sy7636a-regulator.c | 2 +-
drivers/thermal/Kconfig | 6 +
drivers/thermal/Makefile | 1 +
drivers/thermal/sy7636a_thermal.c | 94 ++++++++++++++
include/linux/mfd/sy7636a.h | 41 +++++++
14 files changed, 443 insertions(+), 3 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mfd/silergy,sy7636a.yaml
create mode 100644 drivers/hwmon/sy7636a-hwmon.c
create mode 100644 drivers/thermal/sy7636a_thermal.c
create mode 100644 include/linux/mfd/sy7636a.h
--
2.31.1
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v11 01/10] dt-bindings: mfd: Initial commit of silergy,sy7636a.yaml
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 02/10] mfd: simple-mfd-i2c: Add a Kconfig name Alistair Francis
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis, Rob Herring
Initial support for the Silergy SY7636A Power Management chip
and regulator.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
Reviewed-by: Rob Herring <robh@kernel.org>
---
.../bindings/mfd/silergy,sy7636a.yaml | 79 +++++++++++++++++++
1 file changed, 79 insertions(+)
create mode 100644 Documentation/devicetree/bindings/mfd/silergy,sy7636a.yaml
diff --git a/Documentation/devicetree/bindings/mfd/silergy,sy7636a.yaml b/Documentation/devicetree/bindings/mfd/silergy,sy7636a.yaml
new file mode 100644
index 000000000000..0566f9498e2f
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/silergy,sy7636a.yaml
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/silergy,sy7636a.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: silergy sy7636a PMIC
+
+maintainers:
+ - Alistair Francis <alistair@alistair23.me>
+
+properties:
+ compatible:
+ const: silergy,sy7636a
+
+ reg:
+ description:
+ I2C device address.
+ maxItems: 1
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+ '#thermal-sensor-cells':
+ const: 0
+
+ epd-pwr-good-gpios:
+ description:
+ Specifying the power good GPIOs.
+ maxItems: 1
+
+ regulators:
+ type: object
+
+ properties:
+ compatible:
+ const: silergy,sy7636a-regulator
+
+ vcom:
+ type: object
+ $ref: /schemas/regulator/regulator.yaml#
+ properties:
+ regulator-name:
+ const: vcom
+
+ additionalProperties: false
+
+required:
+ - compatible
+ - reg
+ - '#thermal-sensor-cells'
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pmic@62 {
+ compatible = "silergy,sy7636a";
+ reg = <0x62>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_epdpmic>;
+ #thermal-sensor-cells = <0>;
+
+ regulators {
+ reg_epdpmic: vcom {
+ regulator-name = "vcom";
+ regulator-boot-on;
+ };
+ };
+ };
+ };
+...
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 02/10] mfd: simple-mfd-i2c: Add a Kconfig name
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
2021-08-18 15:44 ` [PATCH v11 01/10] dt-bindings: mfd: Initial commit of silergy,sy7636a.yaml Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 03/10] mfd: simple-mfd-i2c: Enable support for the silergy,sy7636a Alistair Francis
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
Add a Kconfig name to the "Simple Multi-Functional Device support (I2C)"
device so that it can be enabled via menuconfig.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
drivers/mfd/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 6a3fd2d75f96..ff95d00dc1ac 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1176,7 +1176,7 @@ config MFD_SI476X_CORE
module will be called si476x-core.
config MFD_SIMPLE_MFD_I2C
- tristate
+ tristate "Simple Multi-Functional Device support (I2C)"
depends on I2C
select REGMAP_I2C
help
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 03/10] mfd: simple-mfd-i2c: Enable support for the silergy,sy7636a
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
2021-08-18 15:44 ` [PATCH v11 01/10] dt-bindings: mfd: Initial commit of silergy,sy7636a.yaml Alistair Francis
2021-08-18 15:44 ` [PATCH v11 02/10] mfd: simple-mfd-i2c: Add a Kconfig name Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 04/10] regulator: sy7636a: Remove requirement on sy7636a mfd Alistair Francis
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
Signed-off-by: Alistair Francis <alistair@alistair23.me>
Acked-for-MFD-by: Lee Jones <lee.jones@linaro.org>
---
drivers/mfd/simple-mfd-i2c.c | 12 +++++++++++
include/linux/mfd/sy7636a.h | 41 ++++++++++++++++++++++++++++++++++++
2 files changed, 53 insertions(+)
create mode 100644 include/linux/mfd/sy7636a.h
diff --git a/drivers/mfd/simple-mfd-i2c.c b/drivers/mfd/simple-mfd-i2c.c
index 583e8c7924af..ce213c68b8cf 100644
--- a/drivers/mfd/simple-mfd-i2c.c
+++ b/drivers/mfd/simple-mfd-i2c.c
@@ -62,8 +62,20 @@ static int simple_mfd_i2c_probe(struct i2c_client *i2c)
return ret;
}
+static const struct mfd_cell sy7636a_cells[] = {
+ { .name = "sy7636a-regulator", },
+ { .name = "sy7636a-temperature", },
+ { .name = "sy7636a-thermal", },
+};
+
+static const struct simple_mfd_data silergy_sy7636a = {
+ .mfd_cell = sy7636a_cells,
+ .mfd_cell_size = ARRAY_SIZE(sy7636a_cells),
+};
+
static const struct of_device_id simple_mfd_i2c_of_match[] = {
{ .compatible = "kontron,sl28cpld" },
+ { .compatible = "silergy,sy7636a", .data = &silergy_sy7636a},
{}
};
MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match);
diff --git a/include/linux/mfd/sy7636a.h b/include/linux/mfd/sy7636a.h
new file mode 100644
index 000000000000..15caa54f0432
--- /dev/null
+++ b/include/linux/mfd/sy7636a.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Functions to access SY3686A power management chip.
+ *
+ * Copyright (C) 2021 reMarkable AS - http://www.remarkable.com/
+ */
+
+#ifndef __MFD_SY7636A_H
+#define __MFD_SY7636A_H
+
+#include <linux/i2c.h>
+#include <linux/regmap.h>
+#include <linux/regulator/driver.h>
+#include <linux/regulator/machine.h>
+
+#define SY7636A_REG_OPERATION_MODE_CRL 0x00
+#define SY7636A_OPERATION_MODE_CRL_VCOMCTL BIT(6)
+#define SY7636A_OPERATION_MODE_CRL_ONOFF BIT(7)
+#define SY7636A_REG_VCOM_ADJUST_CTRL_L 0x01
+#define SY7636A_REG_VCOM_ADJUST_CTRL_H 0x02
+#define SY7636A_REG_VCOM_ADJUST_CTRL_MASK 0x01ff
+#define SY7636A_REG_VLDO_VOLTAGE_ADJULST_CTRL 0x03
+#define SY7636A_REG_POWER_ON_DELAY_TIME 0x06
+#define SY7636A_REG_FAULT_FLAG 0x07
+#define SY7636A_FAULT_FLAG_PG BIT(0)
+#define SY7636A_REG_TERMISTOR_READOUT 0x08
+
+#define SY7636A_REG_MAX 0x08
+
+#define VCOM_MIN 0
+#define VCOM_MAX 5000
+
+#define VCOM_ADJUST_CTRL_MASK 0x1ff
+// Used to shift the high byte
+#define VCOM_ADJUST_CTRL_SHIFT 8
+// Used to scale from VCOM_ADJUST_CTRL to mv
+#define VCOM_ADJUST_CTRL_SCAL 10000
+
+#define FAULT_FLAG_SHIFT 1
+
+#endif /* __LINUX_MFD_SY7636A_H */
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 04/10] regulator: sy7636a: Remove requirement on sy7636a mfd
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
` (2 preceding siblings ...)
2021-08-18 15:44 ` [PATCH v11 03/10] mfd: simple-mfd-i2c: Enable support for the silergy,sy7636a Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 05/10] thermal: sy7636a: Add thermal driver for sy7636a Alistair Francis
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
drivers/regulator/Kconfig | 1 -
drivers/regulator/sy7636a-regulator.c | 2 +-
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
index 24ce9a17ab4f..54ba141d114a 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -1179,7 +1179,6 @@ config REGULATOR_STW481X_VMMC
config REGULATOR_SY7636A
tristate "Silergy SY7636A voltage regulator"
- depends on MFD_SY7636A
help
This driver supports Silergy SY3686A voltage regulator.
diff --git a/drivers/regulator/sy7636a-regulator.c b/drivers/regulator/sy7636a-regulator.c
index 8360b3947ead..22fddf868e4c 100644
--- a/drivers/regulator/sy7636a-regulator.c
+++ b/drivers/regulator/sy7636a-regulator.c
@@ -70,7 +70,7 @@ static const struct regulator_desc desc = {
static int sy7636a_regulator_probe(struct platform_device *pdev)
{
- struct regmap *regmap = dev_get_drvdata(pdev->dev.parent);
+ struct regmap *regmap = dev_get_regmap(pdev->dev.parent, NULL);
struct regulator_config config = { };
struct regulator_dev *rdev;
struct gpio_desc *gdp;
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 05/10] thermal: sy7636a: Add thermal driver for sy7636a
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
` (3 preceding siblings ...)
2021-08-18 15:44 ` [PATCH v11 04/10] regulator: sy7636a: Remove requirement on sy7636a mfd Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 06/10] hwmon: sy7636a: Add temperature " Alistair Francis
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
Add thermal driver to enable kernel based polling
and shutdown of device for temperatures out of spec
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
drivers/thermal/Kconfig | 6 ++
drivers/thermal/Makefile | 1 +
drivers/thermal/sy7636a_thermal.c | 94 +++++++++++++++++++++++++++++++
3 files changed, 101 insertions(+)
create mode 100644 drivers/thermal/sy7636a_thermal.c
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index d7f44deab5b1..6ee0e7de1b37 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -450,6 +450,12 @@ depends on (ARCH_STI || ARCH_STM32) && OF
source "drivers/thermal/st/Kconfig"
endmenu
+config SY7636A_THERMAL
+ tristate "SY7636A thermal management"
+ help
+ Enable the sy7636a thermal driver, which supports the
+ temperature sensor embedded in Silabs SY7636A IC.
+
source "drivers/thermal/tegra/Kconfig"
config GENERIC_ADC_THERMAL
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
index 82fc3e616e54..2e1aca8a0a09 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -51,6 +51,7 @@ obj-$(CONFIG_DA9062_THERMAL) += da9062-thermal.o
obj-y += intel/
obj-$(CONFIG_TI_SOC_THERMAL) += ti-soc-thermal/
obj-y += st/
+obj-$(CONFIG_SY7636A_THERMAL) += sy7636a_thermal.o
obj-$(CONFIG_QCOM_TSENS) += qcom/
obj-y += tegra/
obj-$(CONFIG_HISI_THERMAL) += hisi_thermal.o
diff --git a/drivers/thermal/sy7636a_thermal.c b/drivers/thermal/sy7636a_thermal.c
new file mode 100644
index 000000000000..9e58305ca3ce
--- /dev/null
+++ b/drivers/thermal/sy7636a_thermal.c
@@ -0,0 +1,94 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Functions to access SY3686A power management chip temperature
+ *
+ * Copyright (C) 2019 reMarkable AS - http://www.remarkable.com/
+ *
+ * Authors: Lars Ivar Miljeteig <lars.ivar.miljeteig@remarkable.com>
+ * Alistair Francis <alistair@alistair23.me>
+ */
+
+#include <linux/module.h>
+#include <linux/platform_device.h>
+#include <linux/thermal.h>
+
+#include <linux/mfd/sy7636a.h>
+
+static int sy7636a_get_temp(void *arg, int *res)
+{
+ unsigned int mode_ctr;
+ int ret, reg_val;
+ struct regmap *regmap = arg;
+ bool isVoltageActive;
+
+ ret = regmap_read(regmap,
+ SY7636A_REG_OPERATION_MODE_CRL, &mode_ctr);
+ if (ret)
+ return ret;
+
+ isVoltageActive = mode_ctr & SY7636A_OPERATION_MODE_CRL_ONOFF;
+
+ /* If operation mode isn't set to control, then let's set it. */
+ if (!isVoltageActive) {
+ ret = regmap_write(regmap,
+ SY7636A_REG_OPERATION_MODE_CRL,
+ mode_ctr | SY7636A_OPERATION_MODE_CRL_ONOFF);
+ if (ret)
+ return ret;
+ }
+
+ ret = regmap_read(regmap,
+ SY7636A_REG_TERMISTOR_READOUT, ®_val);
+ if (ret)
+ return ret;
+
+ /* Restore the operation mode if it wasn't set */
+ if (!isVoltageActive) {
+ ret = regmap_write(regmap,
+ SY7636A_REG_OPERATION_MODE_CRL,
+ mode_ctr);
+ if (ret)
+ return ret;
+ }
+
+ *res = reg_val * 1000;
+
+ return ret;
+}
+
+static const struct thermal_zone_of_device_ops ops = {
+ .get_temp = sy7636a_get_temp,
+};
+
+static int sy7636a_thermal_probe(struct platform_device *pdev)
+{
+ struct regmap *regmap = dev_get_regmap(pdev->dev.parent, NULL);
+ struct thermal_zone_device *thermal_zone_dev;
+
+ thermal_zone_dev = devm_thermal_zone_of_sensor_register(
+ pdev->dev.parent,
+ 0,
+ regmap,
+ &ops);
+
+ return PTR_ERR_OR_ZERO(thermal_zone_dev);
+}
+
+static const struct platform_device_id sy7636a_thermal_id_table[] = {
+ { "sy7636a-thermal", },
+ { }
+};
+MODULE_DEVICE_TABLE(platform, sy7636a_thermal_id_table);
+
+static struct platform_driver sy7636a_thermal_driver = {
+ .driver = {
+ .name = "sy7636a-thermal",
+ },
+ .probe = sy7636a_thermal_probe,
+ .id_table = sy7636a_thermal_id_table,
+};
+module_platform_driver(sy7636a_thermal_driver);
+
+MODULE_AUTHOR("Lars Ivar Miljeteig <lars.ivar.miljeteig@remarkable.com>");
+MODULE_DESCRIPTION("SY7636A thermal driver");
+MODULE_LICENSE("GPL v2");
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 06/10] hwmon: sy7636a: Add temperature driver for sy7636a
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
` (4 preceding siblings ...)
2021-08-18 15:44 ` [PATCH v11 05/10] thermal: sy7636a: Add thermal driver for sy7636a Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 07/10] ARM: imx_v6_v7_defconfig: Enable silergy,sy7636a Alistair Francis
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
This is a multi-function device to interface with the sy7636a
EPD PMIC chip from Silergy.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
arch/arm/configs/imx_v6_v7_defconfig | 1 +
drivers/hwmon/Kconfig | 10 ++++
drivers/hwmon/Makefile | 1 +
drivers/hwmon/sy7636a-hwmon.c | 77 ++++++++++++++++++++++++++++
4 files changed, 89 insertions(+)
create mode 100644 drivers/hwmon/sy7636a-hwmon.c
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index 477dac1edc75..ef8c6dca1277 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -229,6 +229,7 @@ CONFIG_RN5T618_POWER=m
CONFIG_SENSORS_MC13783_ADC=y
CONFIG_SENSORS_GPIO_FAN=y
CONFIG_SENSORS_IIO_HWMON=y
+CONFIG_SENSORS_SY7636A=y
CONFIG_THERMAL_STATISTICS=y
CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_CPU_THERMAL=y
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
index e3675377bc5d..6cae12de59cd 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -1631,6 +1631,16 @@ config SENSORS_SIS5595
This driver can also be built as a module. If so, the module
will be called sis5595.
+config SENSORS_SY7636A
+ tristate "Silergy SY7636A"
+ depends on I2C
+ help
+ If you say yes here you get support for the thermistor readout of
+ the Silergy SY7636A PMIC.
+
+ This driver can also be built as a module. If so, the module
+ will be called sy7636a-hwmon.
+
config SENSORS_DME1737
tristate "SMSC DME1737, SCH311x and compatibles"
depends on I2C && !PPC
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
index d712c61c1f5e..8b2e09e25b24 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -180,6 +180,7 @@ obj-$(CONFIG_SENSORS_SMSC47M1) += smsc47m1.o
obj-$(CONFIG_SENSORS_SMSC47M192)+= smsc47m192.o
obj-$(CONFIG_SENSORS_SPARX5) += sparx5-temp.o
obj-$(CONFIG_SENSORS_STTS751) += stts751.o
+obj-$(CONFIG_SENSORS_SY7636A) += sy7636a-hwmon.o
obj-$(CONFIG_SENSORS_AMC6821) += amc6821.o
obj-$(CONFIG_SENSORS_TC74) += tc74.o
obj-$(CONFIG_SENSORS_THMC50) += thmc50.o
diff --git a/drivers/hwmon/sy7636a-hwmon.c b/drivers/hwmon/sy7636a-hwmon.c
new file mode 100644
index 000000000000..e0204278339b
--- /dev/null
+++ b/drivers/hwmon/sy7636a-hwmon.c
@@ -0,0 +1,77 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Functions to access SY3686A power management chip temperature
+ *
+ * Copyright (C) 2019 reMarkable AS - http://www.remarkable.com/
+ *
+ * Authors: Lars Ivar Miljeteig <lars.ivar.miljeteig@remarkable.com>
+ * Alistair Francis <alistair@alistair23.me>
+ */
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/slab.h>
+#include <linux/jiffies.h>
+#include <linux/hwmon.h>
+#include <linux/hwmon-sysfs.h>
+#include <linux/err.h>
+#include <linux/sysfs.h>
+#include <linux/platform_device.h>
+
+#include <linux/mfd/sy7636a.h>
+
+static ssize_t show_temp(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ unsigned int reg_val;
+ struct regmap *regmap = dev_get_drvdata(dev);
+ int ret;
+
+ ret = regmap_read(regmap,
+ SY7636A_REG_TERMISTOR_READOUT, ®_val);
+ if (ret)
+ return ret;
+
+ return snprintf(buf, PAGE_SIZE, "%d\n", reg_val);
+}
+
+static SENSOR_DEVICE_ATTR(temp0, 0444, show_temp, NULL, 0);
+
+static struct attribute *sy7636a_attrs[] = {
+ &sensor_dev_attr_temp0.dev_attr.attr,
+ NULL
+};
+
+ATTRIBUTE_GROUPS(sy7636a);
+
+static int sy7636a_sensor_probe(struct platform_device *pdev)
+{
+ struct regmap *regmap = dev_get_regmap(pdev->dev.parent, NULL);
+ struct device *hwmon_dev;
+ int err;
+
+ if (!regmap)
+ return -EPROBE_DEFER;
+
+ hwmon_dev = devm_hwmon_device_register_with_groups(&pdev->dev,
+ "sy7636a_temperature", regmap, sy7636a_groups);
+
+ if (IS_ERR(hwmon_dev)) {
+ err = PTR_ERR(hwmon_dev);
+ dev_err(&pdev->dev, "Unable to register hwmon device, returned %d", err);
+ return err;
+ }
+
+ return 0;
+}
+
+static struct platform_driver sy7636a_sensor_driver = {
+ .probe = sy7636a_sensor_probe,
+ .driver = {
+ .name = "sy7636a-temperature",
+ },
+};
+module_platform_driver(sy7636a_sensor_driver);
+
+MODULE_DESCRIPTION("SY7636A sensor driver");
+MODULE_LICENSE("GPL");
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 07/10] ARM: imx_v6_v7_defconfig: Enable silergy,sy7636a
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
` (5 preceding siblings ...)
2021-08-18 15:44 ` [PATCH v11 06/10] hwmon: sy7636a: Add temperature " Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 08/10] ARM: dts: imx7d: remarkable2: " Alistair Francis
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
Enable the silergy,sy7636a and silergy,sy7636a-regulator for the
reMarkable2.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
arch/arm/configs/imx_v6_v7_defconfig | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index ef8c6dca1277..0ac7c61c6f3d 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -234,6 +234,7 @@ CONFIG_THERMAL_STATISTICS=y
CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_CPU_THERMAL=y
CONFIG_IMX_THERMAL=y
+CONFIG_SY7636A_THERMAL=y
CONFIG_WATCHDOG=y
CONFIG_DA9062_WATCHDOG=y
CONFIG_DA9063_WATCHDOG=m
@@ -249,6 +250,7 @@ CONFIG_MFD_RN5T618=y
CONFIG_MFD_STMPE=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_MFD_SIMPLE_MFD_I2C=y
CONFIG_REGULATOR_ANATOP=y
CONFIG_REGULATOR_DA9052=y
CONFIG_REGULATOR_DA9062=y
@@ -258,6 +260,7 @@ CONFIG_REGULATOR_MC13783=y
CONFIG_REGULATOR_MC13892=y
CONFIG_REGULATOR_PFUZE100=y
CONFIG_REGULATOR_RN5T618=y
+CONFIG_REGULATOR_SY7636A=y
CONFIG_RC_CORE=y
CONFIG_RC_DEVICES=y
CONFIG_IR_GPIO_CIR=y
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 08/10] ARM: dts: imx7d: remarkable2: Enable silergy,sy7636a
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
` (6 preceding siblings ...)
2021-08-18 15:44 ` [PATCH v11 07/10] ARM: imx_v6_v7_defconfig: Enable silergy,sy7636a Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 09/10] ARM: imx_v6_v7_defconfig: Enable backlight class devices Alistair Francis
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
Enable the silergy,sy7636a and silergy,sy7636a-regulator on the
reMarkable2.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
| 41 +++++++++++++++++++++++++
1 file changed, 41 insertions(+)
--git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
index 052f9da32398..ab2f61d9c635 100644
--- a/arch/arm/boot/dts/imx7d-remarkable2.dts
+++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
@@ -86,6 +86,33 @@ wacom_digitizer: digitizer@9 {
};
};
+&i2c4 {
+ clock-frequency = <100000>;
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pinctrl_i2c4>;
+ pinctrl-1 = <&pinctrl_i2c4>;
+ status = "okay";
+
+ epd_pmic: sy7636a@62 {
+ compatible = "silergy,sy7636a";
+ reg = <0x62>;
+ status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_epdpmic>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #thermal-sensor-cells = <0>;
+
+ epd-pwr-good-gpios = <&gpio6 21 GPIO_ACTIVE_HIGH>;
+ regulators {
+ reg_epdpmic: vcom {
+ regulator-name = "vcom";
+ regulator-boot-on;
+ };
+ };
+ };
+};
+
&snvs_pwrkey {
status = "okay";
};
@@ -179,6 +206,13 @@ MX7D_PAD_SAI1_TX_BCLK__GPIO6_IO13 0x14
>;
};
+ pinctrl_epdpmic: epdpmicgrp {
+ fsl,pins = <
+ MX7D_PAD_SAI2_RX_DATA__GPIO6_IO21 0x00000074
+ MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11 0x00000014
+ >;
+ };
+
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX7D_PAD_I2C1_SDA__I2C1_SDA 0x4000007f
@@ -186,6 +220,13 @@ MX7D_PAD_I2C1_SCL__I2C1_SCL 0x4000007f
>;
};
+ pinctrl_i2c4: i2c4grp {
+ fsl,pins = <
+ MX7D_PAD_I2C4_SDA__I2C4_SDA 0x4000007f
+ MX7D_PAD_I2C4_SCL__I2C4_SCL 0x4000007f
+ >;
+ };
+
pinctrl_uart1: uart1grp {
fsl,pins = <
MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX 0x79
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 09/10] ARM: imx_v6_v7_defconfig: Enable backlight class devices
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
` (7 preceding siblings ...)
2021-08-18 15:44 ` [PATCH v11 08/10] ARM: dts: imx7d: remarkable2: " Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-08-18 15:44 ` [PATCH v11 10/10] ARM: dts: imx7d: remarkable2: Enable lcdif Alistair Francis
2021-09-17 8:15 ` [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
The BACKLIGHT_CLASS_DEVICE config is required for the already enabled
DRM_SIMPLE_PANEL to work so let's enable BACKLIGHT_CLASS_DEVICE.
This allows the mxsfb probe to complete successfully on the reMarkable
2.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
arch/arm/configs/imx_v6_v7_defconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/configs/imx_v6_v7_defconfig b/arch/arm/configs/imx_v6_v7_defconfig
index 0ac7c61c6f3d..486c59cdb174 100644
--- a/arch/arm/configs/imx_v6_v7_defconfig
+++ b/arch/arm/configs/imx_v6_v7_defconfig
@@ -300,6 +300,7 @@ CONFIG_FB_MODE_HELPERS=y
CONFIG_LCD_CLASS_DEVICE=y
CONFIG_LCD_L4F00242T03=y
CONFIG_LCD_PLATFORM=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_PWM=y
CONFIG_BACKLIGHT_GPIO=y
CONFIG_FRAMEBUFFER_CONSOLE=y
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v11 10/10] ARM: dts: imx7d: remarkable2: Enable lcdif
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
` (8 preceding siblings ...)
2021-08-18 15:44 ` [PATCH v11 09/10] ARM: imx_v6_v7_defconfig: Enable backlight class devices Alistair Francis
@ 2021-08-18 15:44 ` Alistair Francis
2021-09-17 8:15 ` [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-08-18 15:44 UTC (permalink / raw)
To: lee.jones, robh+dt, lgirdwood, broonie, linux-imx, kernel
Cc: devicetree, linux-kernel, alistair23, Alistair Francis
Connect the dispaly on the reMarkable2.
Signed-off-by: Alistair Francis <alistair@alistair23.me>
---
| 74 +++++++++++++++++++++++++
1 file changed, 74 insertions(+)
--git a/arch/arm/boot/dts/imx7d-remarkable2.dts b/arch/arm/boot/dts/imx7d-remarkable2.dts
index ab2f61d9c635..7a48ffb14498 100644
--- a/arch/arm/boot/dts/imx7d-remarkable2.dts
+++ b/arch/arm/boot/dts/imx7d-remarkable2.dts
@@ -47,6 +47,16 @@ reg_digitizer: regulator-digitizer {
startup-delay-us = <100000>; /* 100 ms */
};
+ reg_sdoe: regulator-sdoe {
+ compatible = "regulator-fixed";
+ regulator-name = "SDOE";
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pinctrl_sdoe_reg>;
+ pinctrl-1 = <&pinctrl_sdoe_reg>;
+ gpio = <&gpio3 27 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
wifi_pwrseq: wifi_pwrseq {
compatible = "mmc-pwrseq-simple";
pinctrl-names = "default";
@@ -55,6 +65,16 @@ wifi_pwrseq: wifi_pwrseq {
clocks = <&clks IMX7D_CLKO2_ROOT_DIV>;
clock-names = "ext_clock";
};
+
+ panel {
+ compatible = "eink,vb3300-kca";
+
+ port {
+ panel_in: endpoint {
+ remote-endpoint = <&display_out>;
+ };
+ };
+ };
};
&clks {
@@ -113,6 +133,20 @@ reg_epdpmic: vcom {
};
};
+&lcdif {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_lcdif>;
+ lcd-supply = <®_epdpmic>;
+ lcd2-supply = <®_sdoe>;
+ status = "okay";
+
+ port {
+ display_out: endpoint {
+ remote-endpoint = <&panel_in>;
+ };
+ };
+};
+
&snvs_pwrkey {
status = "okay";
};
@@ -227,6 +261,46 @@ MX7D_PAD_I2C4_SCL__I2C4_SCL 0x4000007f
>;
};
+ pinctrl_lcdif: lcdifgrp {
+ fsl,pins = <
+ MX7D_PAD_LCD_DATA00__LCD_DATA0 0x79
+ MX7D_PAD_LCD_DATA01__LCD_DATA1 0x79
+ MX7D_PAD_LCD_DATA02__LCD_DATA2 0x79
+ MX7D_PAD_LCD_DATA03__LCD_DATA3 0x79
+ MX7D_PAD_LCD_DATA04__LCD_DATA4 0x79
+ MX7D_PAD_LCD_DATA05__LCD_DATA5 0x79
+ MX7D_PAD_LCD_DATA06__LCD_DATA6 0x79
+ MX7D_PAD_LCD_DATA07__LCD_DATA7 0x79
+ MX7D_PAD_LCD_DATA08__LCD_DATA8 0x79
+ MX7D_PAD_LCD_DATA09__LCD_DATA9 0x79
+ MX7D_PAD_LCD_DATA10__LCD_DATA10 0x79
+ MX7D_PAD_LCD_DATA11__LCD_DATA11 0x79
+ MX7D_PAD_LCD_DATA12__LCD_DATA12 0x79
+ MX7D_PAD_LCD_DATA13__LCD_DATA13 0x79
+ MX7D_PAD_LCD_DATA14__LCD_DATA14 0x79
+ MX7D_PAD_LCD_DATA15__LCD_DATA15 0x79
+
+ MX7D_PAD_LCD_DATA17__LCD_DATA17 0x79
+ MX7D_PAD_LCD_DATA18__LCD_DATA18 0x79
+ MX7D_PAD_LCD_DATA19__LCD_DATA19 0x79
+ MX7D_PAD_LCD_DATA20__LCD_DATA20 0x79
+ MX7D_PAD_LCD_DATA21__LCD_DATA21 0x79
+
+ MX7D_PAD_LCD_DATA23__LCD_DATA23 0x79
+ MX7D_PAD_LCD_CLK__LCD_CLK 0x79
+ MX7D_PAD_LCD_ENABLE__LCD_ENABLE 0x79
+ MX7D_PAD_LCD_VSYNC__LCD_VSYNC 0x79
+ MX7D_PAD_LCD_HSYNC__LCD_HSYNC 0x79
+ MX7D_PAD_LCD_RESET__LCD_RESET 0x79
+ >;
+ };
+
+ pinctrl_sdoe_reg: sdoereggrp {
+ fsl,pins = <
+ MX7D_PAD_LCD_DATA22__GPIO3_IO27 0x74
+ >;
+ };
+
pinctrl_uart1: uart1grp {
fsl,pins = <
MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX 0x79
--
2.31.1
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v11 00/10] Add support for the silergy,sy7636a
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
` (9 preceding siblings ...)
2021-08-18 15:44 ` [PATCH v11 10/10] ARM: dts: imx7d: remarkable2: Enable lcdif Alistair Francis
@ 2021-09-17 8:15 ` Alistair Francis
10 siblings, 0 replies; 12+ messages in thread
From: Alistair Francis @ 2021-09-17 8:15 UTC (permalink / raw)
To: Alistair Francis
Cc: Lee Jones, Rob Herring, lgirdwood, Mark Brown, dl-linux-imx,
Sascha Hauer, devicetree, Linux Kernel Mailing List
On Thu, Aug 19, 2021 at 9:15 PM Alistair Francis <alistair@alistair23.me> wrote:
>
> This series applied on top of the "mfd: simple-mfd-i2c: Add support for
> registering devices via MFD cells" patch. Once "mfd: simple-mfd-i2c: Add
> support for registering devices via MFD cells" is merged this series is
> ready to go.
>
> v11:
> - Address comments on hwmon
> - Improve "mfd: simple-mfd-i2c: Add a Kconfig name" commit message
> v10:
> - Use dev_get_regmap() instead of dev_get_drvdata()
> v9:
> - Convert to use the simple-mfd-i2c instead
>
> Alistair Francis (10):
> dt-bindings: mfd: Initial commit of silergy,sy7636a.yaml
> mfd: simple-mfd-i2c: Add a Kconfig name
> mfd: simple-mfd-i2c: Enable support for the silergy,sy7636a
> regulator: sy7636a: Remove requirement on sy7636a mfd
> thermal: sy7636a: Add thermal driver for sy7636a
> hwmon: sy7636a: Add temperature driver for sy7636a
> ARM: imx_v6_v7_defconfig: Enable silergy,sy7636a
> ARM: dts: imx7d: remarkable2: Enable silergy,sy7636a
> ARM: imx_v6_v7_defconfig: Enable backlight class devices
> ARM: dts: imx7d: remarkable2: Enable lcdif
It doesn't look like "mfd: simple-mfd-i2c: Add support for registering
devices via MFD cells" has made it into 5.15, is something else
required?
Alistair
>
> .../bindings/mfd/silergy,sy7636a.yaml | 79 ++++++++++++
> arch/arm/boot/dts/imx7d-remarkable2.dts | 115 ++++++++++++++++++
> arch/arm/configs/imx_v6_v7_defconfig | 5 +
> drivers/hwmon/Kconfig | 10 ++
> drivers/hwmon/Makefile | 1 +
> drivers/hwmon/sy7636a-hwmon.c | 77 ++++++++++++
> drivers/mfd/Kconfig | 2 +-
> drivers/mfd/simple-mfd-i2c.c | 12 ++
> drivers/regulator/Kconfig | 1 -
> drivers/regulator/sy7636a-regulator.c | 2 +-
> drivers/thermal/Kconfig | 6 +
> drivers/thermal/Makefile | 1 +
> drivers/thermal/sy7636a_thermal.c | 94 ++++++++++++++
> include/linux/mfd/sy7636a.h | 41 +++++++
> 14 files changed, 443 insertions(+), 3 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/mfd/silergy,sy7636a.yaml
> create mode 100644 drivers/hwmon/sy7636a-hwmon.c
> create mode 100644 drivers/thermal/sy7636a_thermal.c
> create mode 100644 include/linux/mfd/sy7636a.h
>
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2021-09-17 8:17 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-18 15:44 [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
2021-08-18 15:44 ` [PATCH v11 01/10] dt-bindings: mfd: Initial commit of silergy,sy7636a.yaml Alistair Francis
2021-08-18 15:44 ` [PATCH v11 02/10] mfd: simple-mfd-i2c: Add a Kconfig name Alistair Francis
2021-08-18 15:44 ` [PATCH v11 03/10] mfd: simple-mfd-i2c: Enable support for the silergy,sy7636a Alistair Francis
2021-08-18 15:44 ` [PATCH v11 04/10] regulator: sy7636a: Remove requirement on sy7636a mfd Alistair Francis
2021-08-18 15:44 ` [PATCH v11 05/10] thermal: sy7636a: Add thermal driver for sy7636a Alistair Francis
2021-08-18 15:44 ` [PATCH v11 06/10] hwmon: sy7636a: Add temperature " Alistair Francis
2021-08-18 15:44 ` [PATCH v11 07/10] ARM: imx_v6_v7_defconfig: Enable silergy,sy7636a Alistair Francis
2021-08-18 15:44 ` [PATCH v11 08/10] ARM: dts: imx7d: remarkable2: " Alistair Francis
2021-08-18 15:44 ` [PATCH v11 09/10] ARM: imx_v6_v7_defconfig: Enable backlight class devices Alistair Francis
2021-08-18 15:44 ` [PATCH v11 10/10] ARM: dts: imx7d: remarkable2: Enable lcdif Alistair Francis
2021-09-17 8:15 ` [PATCH v11 00/10] Add support for the silergy,sy7636a Alistair Francis
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.