Skip to contentSkip to conversation

Add support for MAX8997 Clock Driver

PATCH New Pankaj Dubey 4 participants 20 messages Nov 7, 2016 – Nov 17, 2016

Subsystems (5)
lore
Share & tools
lore
#0 lore raw

cover Add support for MAX8997 Clock Driver

During recent test on Exynos4210 based Origen board, I observed RTC1 probe is failing giving following error message:

[    2.195817] s3c-rtc 10070000.rtc: failed to find rtc source clock
[    2.200475] s3c-rtc: probe of 10070000.rtc failed with error -2
[    2.206597] i2c /dev entries driver

This is mainly because S3C-RTC expects two clocks "rtc" and "rtc_src". In case of Origen board this second clock is supplied by MAX8997 clock oscillator.
This patch series modified MAX8997 MFD driver for supporting regmap, and adds max8997-clk driver. Also it documentation where-ever required and extends RTC node in exynos4210-origen.dts for supporting both clocks.

After this patch series, RTC is getting probed properly on Origen board.

This patch series is tested for SMP boot on Origen board.

Pankaj Dubey (6):
mfd: max8997: Initialize max8997 register map
dt-bindings: clk: max8997: Add DT binding documentation
clk: Add driver for Maxim-8997 PMIC clocks
ARM: dts: Add clock provider specific properties to max8997 node
mfd: max8997: Add max8997-clk name in mfd_cell
ARM: dts: Extend the S3C RTC node with rtc_src clock

 .../devicetree/bindings/clock/maxim,max8997.txt    | 44 +++++++++++++
 .../bindings/regulator/max8997-regulator.txt       |  3 +
 arch/arm/boot/dts/exynos4210-origen.dts            |  6 +-
 arch/arm/boot/dts/exynos4210-trats.dts             |  3 +-
 drivers/clk/Kconfig                                | 10 +++
 drivers/clk/Makefile                               |  1 +
 drivers/clk/clk-max8997.c                          | 76 ++++++++++++++++++++++
 drivers/mfd/max8997.c                              | 15 +++++
 include/dt-bindings/clock/maxim,max8997.h          | 23 +++++++
 include/linux/mfd/max8997-private.h                |  3 +
 10 files changed, 182 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/clock/maxim,max8997.txt
 create mode 100644 drivers/clk/clk-max8997.c
 create mode 100644 include/dt-bindings/clock/maxim,max8997.h
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/6 mfd: max8997: Initialize max8997 register map

This patch add regmap initialization to use register map in max8997-clk device driver

---
 drivers/mfd/max8997.c               | 14 ++++++++++++++
 include/linux/mfd/max8997-private.h |  3 +++
 2 files changed, 17 insertions(+)
drivers/mfd/max8997.c +14 -0
index 2d6e2c3..bda9ec8 100644
@@ -175,11 +175,17 @@ static inline unsigned long max8997_i2c_get_driver_data(struct i2c_client *i2c,
 	return id->driver_data;
 }
 
+static const struct regmap_config max8997_regmap_config = {
+	.reg_bits = 8,
+	.val_bits = 8,
+};
+
 static int max8997_i2c_probe(struct i2c_client *i2c,
 			    const struct i2c_device_id *id)
 {
 	struct max8997_dev *max8997;
 	struct max8997_platform_data *pdata = dev_get_platdata(&i2c->dev);
+	const struct regmap_config *config = &max8997_regmap_config;
 	int ret = 0;
 
 	max8997 = devm_kzalloc(&i2c->dev, sizeof(struct max8997_dev),
@@ -202,6 +208,14 @@ static int max8997_i2c_probe(struct i2c_client *i2c,
 	if (!pdata)
 		return ret;
 
+	max8997->regmap = devm_regmap_init_i2c(i2c, config);
+	if (IS_ERR(max8997->regmap)) {
+		ret = PTR_ERR(max8997->regmap);
+		dev_err(max8997->dev, "Failed to allocate register map: %d\n",
+				ret);
+		return ret;
+	}
+
 	max8997->pdata = pdata;
 	max8997->ono = pdata->ono;
 
include/linux/mfd/max8997-private.h +3 -0
index 78c76cd..50c7129 100644
@@ -25,6 +25,7 @@
 #include <linux/i2c.h>
 #include <linux/export.h>
 #include <linux/irqdomain.h>
+#include <linux/regmap.h>
 
 #define MAX8997_REG_INVALID	(0xff)
 
@@ -388,6 +389,8 @@ struct max8997_dev {
 	struct mutex iolock;
 
 	unsigned long type;
+
+	struct regmap *regmap;
 	struct platform_device *battery; /* battery control (not fuel gauge) */
 
 	int irq;
Signature · 1 line
2.7.4
#2 lore raw

PATCH 1/6 mfd: max8997: Initialize max8997 register map

Hello Pankaj,

Quoted 6 lines · Pankaj Dubey

This patch add regmap initialization to use register map in max8997-clk device driver

---

Patch looks good to me. Now that the driver uses regmap, I think you should be able to get rid of drivers/mfd/max8997-irq.c and use the regmap IRQ chip like is done in most Maxim PMIC MFD drivers.

That can be done as a follow-up of this series though.

Best regards,

Signature · 3 lines
Javier Martinez Canillas
Open Source Group
Samsung Research America
#3 lore raw

PATCH 1/6 mfd: max8997: Initialize max8997 register map

Hi Javier,

Quoted 10 lines · Javier Martinez Canillas

Hello Pankaj,

Quoted 6 lines · Pankaj Dubey

This patch add regmap initialization to use register map in max8997-clk device driver

---

Quoted 8 lines

Patch looks good to me. Now that the driver uses regmap, I think you should be able to get rid of drivers/mfd/max8997-irq.c and use the regmap IRQ chip like is done in most Maxim PMIC MFD drivers.

That can be done as a follow-up of this series though.

Thanks for review.
You are right, that we can get rid of max8997-irq.c by using regmap IRQ chip, but I would like to take that as a separate follow-up series.

Thanks,
Pankaj Dubey

Quoted 9 lines

Best regards,
--
Javier Martinez Canillas
Open Source Group
Samsung Research America
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

#4 lore raw

PATCH 2/6 dt-bindings: clk: max8997: Add DT binding documentation

In reply to Pankaj Dubey

Add Device Tree binding documentation for the clocks outputs in the Maxim-8997 Power Management IC.

CC Michael Turquette <[email protected]>
CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
CC linux-clk at vger.kernel.org
---
 .../devicetree/bindings/clock/maxim,max8997.txt    | 44 ++++++++++++++++++++++
 .../bindings/regulator/max8997-regulator.txt       |  3 ++
 2 files changed, 47 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/maxim,max8997.txt
Documentation/devicetree/bindings/clock/maxim,max8997.txt new file +44 -0
new file mode 100644
index 0000000..d2e2a74
@@ -0,0 +1,44 @@
+Binding for Maxim MAX8997 32k clock generator block
+
+This is a part of device tree bindings of MAX8997 multi-function device.
+More information can be found in bindings/regulator/max8997-regulator.txt file.
+
+The MAX8997 contains two 32.768khz clock outputs that can be controlled
+(gated/ungated) over I2C.
+
+Following properties should be presend in main device node of the MFD chip.
+
+Required properties:
+
+- #clock-cells: from common clock binding; shall be set to 1.
+
+Optional properties:
+- clock-output-names: From common clock binding.
+
+Each clock is assigned an identifier and client nodes can use this identifier
+to specify the clock which they consume. Following indices are allowed:
+    - 0: 32khz_ap clock,
+    - 1: 32khz_cp clock,
+
+Clocks are defined as preprocessor macros in dt-bindings/clock/maxim,max8997.h
+header and can be used in device tree sources.
+
+Example: Node of the MFD chip
+
+	max8997: max8997_pmic at 66 {
+		compatible = "maxim,max8997-pmic";
+		reg = <0x66>;
+		interrupt-parent = <&gpx0>;
+		interrupts = <4 0>, <3 0>;
+		#clock-cells = <1>;
+		/* ... */
+	};
+
+Example: Clock consumer node
+
+	foo at 0 {
+		compatible = "bar,foo";
+		/* ... */
+		clocks = <&max8997 MAX8997_CLK_AP>;
+		clock-names = "my-clock";
+	};
Documentation/devicetree/bindings/regulator/max8997-regulator.txt +3 -0
index 5c186a7..af1f9c0 100644
@@ -6,6 +6,9 @@ interfaced to the host controller using a i2c interface. Each sub-block is
 addressed by the host system using different i2c slave address. This document
 describes the bindings for 'pmic' sub-block of max8997.
 
+Binding for the built-in 32k clock generator block is defined separately
+in bindings/clk/maxim,max8997.txt file
+
 Required properties:
 - compatible: Should be "maxim,max8997-pmic".
 - reg: Specifies the i2c slave address of the pmic block. It should be 0x66.
Signature · 1 line
2.7.4
#5 lore raw

PATCH 2/6 dt-bindings: clk: max8997: Add DT binding documentation

Hello Pankaj,

Quoted 9 lines · Pankaj Dubey

Add Device Tree binding documentation for the clocks outputs in the Maxim-8997 Power Management IC.

CC Michael Turquette <[email protected]>
CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
CC linux-clk at vger.kernel.org

---

Best regards,

Signature · 3 lines
Javier Martinez Canillas
Open Source Group
Samsung Research America
maintainer
#6 lore raw

PATCH 2/6 dt-bindings: clk: max8997: Add DT binding documentation

In reply to Pankaj Dubey
Quoted 38 lines · Pankaj Dubey

Add Device Tree binding documentation for the clocks outputs in the Maxim-8997 Power Management IC.

CC Michael Turquette <[email protected]>
CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
CC linux-clk at vger.kernel.org
---
 .../devicetree/bindings/clock/maxim,max8997.txt    | 44 ++++++++++++++++++++++
 .../bindings/regulator/max8997-regulator.txt       |  3 ++
 2 files changed, 47 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/maxim,max8997.txt
Documentation/devicetree/bindings/clock/maxim,max8997.txt new file +18 -0
new file mode 100644
index 0000000..d2e2a74
@@ -0,0 +1,44 @@
+Binding for Maxim MAX8997 32k clock generator block
+
+This is a part of device tree bindings of MAX8997 multi-function device.
+More information can be found in bindings/regulator/max8997-regulator.txt file.
+
+The MAX8997 contains two 32.768khz clock outputs that can be controlled
+(gated/ungated) over I2C.
+
+Following properties should be presend in main device node of the MFD chip.
+
+Required properties:
+
+- #clock-cells: from common clock binding; shall be set to 1.
+
+Optional properties:
+- clock-output-names: From common clock binding.
+
+Each clock is assigned an identifier and client nodes can use this identifier

Documentation/devicetree/bindings/clock/maxim,max8997.txt line 28

Quoted 10 lines
Documentation/devicetree/bindings/clock/maxim,max8997.txt new file +10 -0
+to specify the clock which they consume. Following indices are allowed:
+    - 0: 32khz_ap clock,
+    - 1: 32khz_cp clock,
+
+Clocks are defined as preprocessor macros in dt-bindings/clock/maxim,max8997.h
+header and can be used in device tree sources.
+
+Example: Node of the MFD chip
+
+	max8997: max8997_pmic at 66 {

pmic at 66 {

With that:

#7 lore raw

PATCH 2/6 dt-bindings: clk: max8997: Add DT binding documentation

Hi Rob,

Quoted 52 lines · Rob Herring
Quoted 38 lines · Pankaj Dubey

Add Device Tree binding documentation for the clocks outputs in the Maxim-8997 Power Management IC.

---
 .../devicetree/bindings/clock/maxim,max8997.txt    | 44 ++++++++++++++++++++++
 .../bindings/regulator/max8997-regulator.txt       |  3 ++
 2 files changed, 47 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/maxim,max8997.txt
Documentation/devicetree/bindings/clock/maxim,max8997.txt new file +18 -0
new file mode 100644
index 0000000..d2e2a74
@@ -0,0 +1,44 @@
+Binding for Maxim MAX8997 32k clock generator block
+
+This is a part of device tree bindings of MAX8997 multi-function device.
+More information can be found in bindings/regulator/max8997-regulator.txt file.
+
+The MAX8997 contains two 32.768khz clock outputs that can be controlled
+(gated/ungated) over I2C.
+
+Following properties should be presend in main device node of the MFD chip.
+
+Required properties:
+
+- #clock-cells: from common clock binding; shall be set to 1.
+
+Optional properties:
+- clock-output-names: From common clock binding.
+
+Each clock is assigned an identifier and client nodes can use this identifier

Documentation/devicetree/bindings/clock/maxim,max8997.txt line 28

Quoted 10 lines
Documentation/devicetree/bindings/clock/maxim,max8997.txt new file +10 -0
+to specify the clock which they consume. Following indices are allowed:
+    - 0: 32khz_ap clock,
+    - 1: 32khz_cp clock,
+
+Clocks are defined as preprocessor macros in dt-bindings/clock/maxim,max8997.h
+header and can be used in device tree sources.
+
+Example: Node of the MFD chip
+
+	max8997: max8997_pmic@66 {

pmic@66 {

Quoted 5 lines

With that:

Thanks for review and ack.
With above mentioned change I will post v2 soon.

Thanks,
Pankaj Dubey

#8 lore raw

PATCH 3/6 clk: Add driver for Maxim-8997 PMIC clocks

In reply to Pankaj Dubey

The MAX8997 PMIC has 32.786kHz crystal oscillator which provides an accurate low frequency clock for MAX8997 internal circuit as well as external circuit. This patch adds support for these two clocks.

CC Michael Turquette <[email protected]>
CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
CC linux-clk at vger.kernel.org
---
 drivers/clk/Kconfig                       | 10 ++++
 drivers/clk/Makefile                      |  1 +
 drivers/clk/clk-max8997.c                 | 76 +++++++++++++++++++++++++++++++
 include/dt-bindings/clock/maxim,max8997.h | 23 ++++++++++
 4 files changed, 110 insertions(+)
 create mode 100644 drivers/clk/clk-max8997.c
 create mode 100644 include/dt-bindings/clock/maxim,max8997.h
drivers/clk/Kconfig +10 -0
index e2d9bd7..5339cbe 100644
@@ -48,6 +48,16 @@ config COMMON_CLK_MAX77802
 	---help---
 	  This driver supports Maxim 77802 crystal oscillator clock.
 
+config COMMON_CLK_MAX8997
+	tristate "Clock driver for Maxim 8997 MFD"
+	depends on MFD_MAX8997
+	select COMMON_CLK_MAX_GEN
+	---help---
+	  This driver supports Maxim 8997 crystal oscillator clock.
+	  The 32.768kHz crystal oscillator clock provides an accurate
+	  low frequency clock for MAX8997 internal circuit as well as
+	  external circuit.
+
 config COMMON_CLK_RK808
 	tristate "Clock driver for RK808/RK818"
 	depends on MFD_RK808
drivers/clk/Makefile +1 -0
index 3b6f9cf..1cfa9ab 100644
@@ -30,6 +30,7 @@ obj-$(CONFIG_MACH_LOONGSON32)		+= clk-ls1x.o
 obj-$(CONFIG_COMMON_CLK_MAX_GEN)	+= clk-max-gen.o
 obj-$(CONFIG_COMMON_CLK_MAX77686)	+= clk-max77686.o
 obj-$(CONFIG_COMMON_CLK_MAX77802)	+= clk-max77802.o
+obj-$(CONFIG_COMMON_CLK_MAX8997)	+= clk-max8997.o
 obj-$(CONFIG_ARCH_MB86S7X)		+= clk-mb86s7x.o
 obj-$(CONFIG_ARCH_MOXART)		+= clk-moxart.o
 obj-$(CONFIG_ARCH_NOMADIK)		+= clk-nomadik.o
drivers/clk/clk-max8997.c new file +76 -0

76 lines not on this page · raw message

include/dt-bindings/clock/maxim,max8997.h new file +23 -0
new file mode 100644
index 0000000..f2dd972
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ *	Author: Pankaj Dubey <[email protected]>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Device Tree binding constants clocks for the Maxim 8997 PMIC.
+ */
+
+#ifndef _DT_BINDINGS_CLOCK_MAXIM_MAX8997_CLOCK_H
+#define _DT_BINDINGS_CLOCK_MAXIM_MAX8997_CLOCK_H
+
+/* Fixed rate clocks. */
+
+#define MAX8997_CLK_AP		0
+#define MAX8997_CLK_CP		1
+
+/* Total number of clocks. */
+#define MAX8997_CLKS_NUM		(MAX8997_CLK_CP + 1)
+
+#endif /* _DT_BINDINGS_CLOCK_MAXIM_MAX8997_CLOCK_H */
Signature · 1 line
2.7.4
#9 lore raw

PATCH 3/6 clk: Add driver for Maxim-8997 PMIC clocks

Hello Pankaj,

Quoted 10 lines · Pankaj Dubey

The MAX8997 PMIC has 32.786kHz crystal oscillator which provides an accurate low frequency clock for MAX8997 internal circuit as well as external circuit. This patch adds support for these two clocks.

CC Michael Turquette <[email protected]>
CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
CC linux-clk at vger.kernel.org

---

What kernel version are you basing this on? The Maxim common clock code is going away for v4.9 and instead the clk-max77686 driver supports both 77686 and 77802 clocks. See commit 8ad313fe4e00 ("clk: max77686: Combine Maxim max77686 and max77802 driver").

Since the 8997 clock IP looks very similar to 77802 AFAICT, you should also extend the clk-max77686 driver to have 8997 support.

Best regards,

Signature · 3 lines
Javier Martinez Canillas
Open Source Group
Samsung Research America
#10 lore raw

PATCH 3/6 clk: Add driver for Maxim-8997 PMIC clocks

Hi Javier,

Quoted 7 lines · Javier Martinez Canillas

Hello Pankaj,

Quoted 4 lines · Pankaj Dubey

The MAX8997 PMIC has 32.786kHz crystal oscillator which provides an accurate low frequency clock for MAX8997 internal circuit as well as external circuit. This patch adds support for these two clocks.

Quoted 8 lines
Quoted 6 lines
CC Michael Turquette <[email protected]>
CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
CC linux-clk at vger.kernel.org

---

What kernel version are you basing this on? The Maxim common clock code

This patch series, I have prepared on Krzysztof's for-next which is 4.9-rc1,

Quoted 7 lines

is going away for v4.9 and instead the clk-max77686 driver supports both 77686 and 77802 clocks. See commit 8ad313fe4e00 ("clk: max77686: Combine Maxim max77686 and max77802 driver").

Since the 8997 clock IP looks very similar to 77802 AFAICT, you should also extend the clk-max77686 driver to have 8997 support.

I was not aware of this change. I will check this and if I can reuse/extend max77686 for 8997 I will do it.

Thanks,
Pankaj Dubey

Quoted 10 lines

Best regards,
--
Javier Martinez Canillas
Open Source Group
Samsung Research America

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

#11 lore raw

PATCH 3/6 clk: Add driver for Maxim-8997 PMIC clocks

In reply to Pankaj Dubey
Quoted 9 lines · Pankaj Dubey

The MAX8997 PMIC has 32.786kHz crystal oscillator which provides an accurate low frequency clock for MAX8997 internal circuit as well as external circuit. This patch adds support for these two clocks.

CC Michael Turquette <[email protected]>
CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
CC linux-clk at vger.kernel.org
Quoted 5 lines
---
 drivers/clk/Kconfig                       | 10 ++++
 drivers/clk/Makefile                      |  1 +
 drivers/clk/clk-max8997.c                 | 76 +++++++++++++++++++++++++++++++
 include/dt-bindings/clock/maxim,max8997.h | 23 ++++++++++

You need to split the dt-bindings header into separate one so others could pull it. Please also mention the dependencies between patches in cover letter, because it does not look like it could be applied as is.

Best regards,
Krzysztof

#12 lore raw

PATCH 4/6 ARM: dts: Add clock provider specific properties to max8997 node

In reply to Pankaj Dubey

This patch adds a label and #clock-cells property to device node of max8997 PMIC to allow using it as a clock provider.

CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
---
 arch/arm/boot/dts/exynos4210-origen.dts | 3 ++-
 arch/arm/boot/dts/exynos4210-trats.dts  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
arch/arm/boot/dts/exynos4210-origen.dts +2 -1
index cb3a255..6c7ef4e 100644
@@ -147,11 +147,12 @@
 	pinctrl-0 = <&i2c0_bus>;
 	pinctrl-names = "default";
 
-	max8997_pmic at 66 {
+	max8997: max8997_pmic at 66 {
 		compatible = "maxim,max8997-pmic";
 		reg = <0x66>;
 		interrupt-parent = <&gpx0>;
 		interrupts = <4 0>, <3 0>;
+		#clock-cells = <1>;
 
 		max8997,pmic-buck1-dvs-voltage = <1350000>;
 		max8997,pmic-buck2-dvs-voltage = <1100000>;
arch/arm/boot/dts/exynos4210-trats.dts +2 -1
index 0ca1b4d..74a9d39 100644
@@ -295,12 +295,13 @@
 	pinctrl-names = "default";
 	status = "okay";
 
-	max8997_pmic at 66 {
+	max8997: max8997_pmic at 66 {
 		compatible = "maxim,max8997-pmic";
 
 		reg = <0x66>;
 		interrupt-parent = <&gpx0>;
 		interrupts = <7 0>;
+		#clock-cells = <1>;
 
 		max8997,pmic-buck1-uses-gpio-dvs;
 		max8997,pmic-buck2-uses-gpio-dvs;
Signature · 1 line
2.7.4
#13 lore raw

PATCH 4/6 ARM: dts: Add clock provider specific properties to max8997 node

Hello Pankaj,

Quoted 16 lines · Pankaj Dubey

This patch adds a label and #clock-cells property to device node of max8997 PMIC to allow using it as a clock provider.

CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
---
 arch/arm/boot/dts/exynos4210-origen.dts | 3 ++-
 arch/arm/boot/dts/exynos4210-trats.dts  | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)
arch/arm/boot/dts/exynos4210-origen.dts +0 -0
index cb3a255..6c7ef4e 100644

arch/arm/boot/dts/exynos4210-origen.dts line 150

Quoted 5 lines
arch/arm/boot/dts/exynos4210-origen.dts +1 -1
@@ -147,11 +147,12 @@
 	pinctrl-0 = <&i2c0_bus>;
 	pinctrl-names = "default";
 
-	max8997_pmic at 66 {
+	max8997: max8997_pmic at 66 {

The ePAPR says that the node name should be "somewhat generic, reflecting the function of the device and not its precise programming model". So I think this should be instead:

        max8997: pmic at 66 {

[...]

arch/arm/boot/dts/exynos4210-origen.dts

Quoted 2 lines
arch/arm/boot/dts/exynos4210-origen.dts +1 -1
-	max8997_pmic at 66 {
+	max8997: max8997_pmic at 66 {

Same here.

The rest looks good to me.

Best regards,

Signature · 3 lines
Javier Martinez Canillas
Open Source Group
Samsung Research America
#14 lore raw

PATCH 5/6 mfd: max8997: Add max8997-clk name in mfd_cell

In reply to Pankaj Dubey

This patch add max8997-clk in mfd_cell max8997_devs in order to probe max8997-clk device driver.

---
 drivers/mfd/max8997.c | 1 +
 1 file changed, 1 insertion(+)
drivers/mfd/max8997.c +1 -0
index bda9ec8..4b809f8 100644
@@ -48,6 +48,7 @@ static const struct mfd_cell max8997_devs[] = {
 	{ .name = "max8997-muic", },
 	{ .name = "max8997-led", .id = 1 },
 	{ .name = "max8997-led", .id = 2 },
+	{ .name = "max8997-clk",},
 };
 
 #ifdef CONFIG_OF
Signature · 1 line
2.7.4
#16 lore raw

PATCH 6/6 ARM: dts: Extend the S3C RTC node with rtc_src clock

In reply to Pankaj Dubey

Extend the S3C RTC node with rtc_src clock so it could be operational. The rtc_src clock is provided by MAX8997.

CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
---
 arch/arm/boot/dts/exynos4210-origen.dts | 3 +++
 1 file changed, 3 insertions(+)
arch/arm/boot/dts/exynos4210-origen.dts +3 -0
index 6c7ef4e..4cac9b6 100644
@@ -18,6 +18,7 @@
 #include "exynos4210.dtsi"
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/clock/maxim,max8997.h>
 #include "exynos-mfc-reserved-memory.dtsi"
 
 / {
@@ -324,6 +325,8 @@
 
 &rtc {
 	status = "okay";
+	clocks = <&clock CLK_RTC>, <&max8997 MAX8997_CLK_AP>;
+	clock-names = "rtc", "rtc_src";
 };
 
 &tmu {
Signature · 1 line
2.7.4
#17 lore raw

PATCH 6/6 ARM: dts: Extend the S3C RTC node with rtc_src clock

Hello Pankaj,

Quoted 7 lines · Pankaj Dubey

Extend the S3C RTC node with rtc_src clock so it could be operational. The rtc_src clock is provided by MAX8997.

CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org

---

Best regards,

Signature · 3 lines
Javier Martinez Canillas
Open Source Group
Samsung Research America
#18 lore raw

PATCH 6/6 ARM: dts: Extend the S3C RTC node with rtc_src clock

In reply to Pankaj Dubey
Quoted 15 lines · Pankaj Dubey

Extend the S3C RTC node with rtc_src clock so it could be operational. The rtc_src clock is provided by MAX8997.

CC Rob Herring <[email protected]>
CC devicetree at vger.kernel.org
---
 arch/arm/boot/dts/exynos4210-origen.dts | 3 +++
 1 file changed, 3 insertions(+)
arch/arm/boot/dts/exynos4210-origen.dts +0 -0
index 6c7ef4e..4cac9b6 100644

arch/arm/boot/dts/exynos4210-origen.dts line 21

Quoted 4 lines
arch/arm/boot/dts/exynos4210-origen.dts +1 -0
@@ -18,6 +18,7 @@
 #include "exynos4210.dtsi"
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/clock/maxim,max8997.h>

Just a nit: put the system-wide includes in alphabetical order, so clock, gpio and finally input. It helps reducing conflicting changes (when more people add includes in the same time).

Beside that, looks good, but it requires a dt-bindings in separate patch so I could pull it.

Best regards,
Krzysztof

#19 lore raw

cover Add support for MAX8997 Clock Driver

In reply to Pankaj Dubey
Quoted 14 lines · Pankaj Dubey

During recent test on Exynos4210 based Origen board, I observed RTC1 probe is failing giving following error message:

[    2.195817] s3c-rtc 10070000.rtc: failed to find rtc source clock
[    2.200475] s3c-rtc: probe of 10070000.rtc failed with error -2
[    2.206597] i2c /dev entries driver

This is mainly because S3C-RTC expects two clocks "rtc" and "rtc_src". In case of Origen board this second clock is supplied by MAX8997 clock oscillator.
This patch series modified MAX8997 MFD driver for supporting regmap, and adds max8997-clk driver. Also it documentation where-ever required and extends RTC node in exynos4210-origen.dts for supporting both clocks.

Quoted 3 lines

After this patch series, RTC is getting probed properly on Origen board.

This patch series is tested for SMP boot on Origen board.

No need to re-invent the wheel:
https://lkml.org/lkml/2016/6/17/57
http://lists.infradead.org/pipermail/linux-arm-kernel/2016-June/437113.html

I won't be sending updates for these patches. Feel free to continue the work.

BR,
Krzysztof

Quoted 27 lines

Pankaj Dubey (6):
mfd: max8997: Initialize max8997 register map
dt-bindings: clk: max8997: Add DT binding documentation
clk: Add driver for Maxim-8997 PMIC clocks
ARM: dts: Add clock provider specific properties to max8997 node
mfd: max8997: Add max8997-clk name in mfd_cell
ARM: dts: Extend the S3C RTC node with rtc_src clock

 .../devicetree/bindings/clock/maxim,max8997.txt    | 44 +++++++++++++
 .../bindings/regulator/max8997-regulator.txt       |  3 +
 arch/arm/boot/dts/exynos4210-origen.dts            |  6 +-
 arch/arm/boot/dts/exynos4210-trats.dts             |  3 +-
 drivers/clk/Kconfig                                | 10 +++
 drivers/clk/Makefile                               |  1 +
 drivers/clk/clk-max8997.c                          | 76 ++++++++++++++++++++++
 drivers/mfd/max8997.c                              | 15 +++++
 include/dt-bindings/clock/maxim,max8997.h          | 23 +++++++
 include/linux/mfd/max8997-private.h                |  3 +
 10 files changed, 182 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/clock/maxim,max8997.txt
 create mode 100644 drivers/clk/clk-max8997.c
 create mode 100644 include/dt-bindings/clock/maxim,max8997.h
Signature · 1 line
2.7.4