From: Krzysztof Kozlowski <k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
To: Javier Martinez Canillas
<javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
Cc: Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Samuel Ortiz <sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Mike Turquette
<mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
Liam Girdwood <lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Alessandro Zummo
<a.zummo-BfzFCNDTiLLj+vYz1yj4TQ@public.gmane.org>,
Kukjin Kim <kgene.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>,
Doug Anderson <dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>,
Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>,
Sjoerd Simons
<sjoerd.simons-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>,
Daniel Stone <daniels-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>,
Tomeu Vizoso
<tomeu.vizoso-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v4 11/14] clk: Add driver for Maxim 77802 PMIC clocks
Date: Thu, 26 Jun 2014 12:40:19 +0200 [thread overview]
Message-ID: <1403779219.27156.20.camel@AMDC1943> (raw)
In-Reply-To: <1403723019-6212-12-git-send-email-javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
On śro, 2014-06-25 at 21:03 +0200, Javier Martinez Canillas wrote:
> The MAX77802 PMIC has two 32.768kHz Buffered Clock Outputs with
> Low Jitter Mode. This patch adds support for these two clocks.
>
> Signed-off-by: Javier Martinez Canillas <javier.martinez-ZGY8ohtN/8rSCDK34cm6iQ@public.gmane.org.uk>
> ---
>
> Changes since v3: None
>
> Changes since v2: None
>
> Changes since v1:
> - Use module_platform_driver() instead of having init/exit functions.
> Suggested by Mark Brown.
> - Use the generic maxim clock driver to reduce code duplication with
> clk-max77686.c driver.
>
> drivers/clk/Kconfig | 7 +++
> drivers/clk/Makefile | 1 +
> drivers/clk/clk-max77802.c | 99 ++++++++++++++++++++++++++++++
> include/dt-bindings/clock/maxim,max77802.h | 22 +++++++
> 4 files changed, 129 insertions(+)
> create mode 100644 drivers/clk/clk-max77802.c
> create mode 100644 include/dt-bindings/clock/maxim,max77802.h
Reviewed-by: Krzysztof Kozlowski <k.kozlowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
Best regards,
Krzysztof
>
> diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
> index 3fd4270..221260b 100644
> --- a/drivers/clk/Kconfig
> +++ b/drivers/clk/Kconfig
> @@ -42,6 +42,13 @@ config COMMON_CLK_MAX77686
> ---help---
> This driver supports Maxim 77686 crystal oscillator clock.
>
> +config COMMON_CLK_MAX77802
> + tristate "Clock driver for Maxim 77802 MFD"
> + depends on MFD_MAX77802
> + select COMMON_CLK_MAX_GEN
> + ---help---
> + This driver supports Maxim 77802 crystal oscillator clock.
> +
> config COMMON_CLK_SI5351
> tristate "Clock driver for SiLabs 5351A/B/C"
> depends on I2C
> diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
> index 6c1aff6..520ff76 100644
> --- a/drivers/clk/Makefile
> +++ b/drivers/clk/Makefile
> @@ -20,6 +20,7 @@ obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o
> obj-$(CONFIG_MACH_LOONGSON1) += 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_ARCH_MOXART) += clk-moxart.o
> obj-$(CONFIG_ARCH_NOMADIK) += clk-nomadik.o
> obj-$(CONFIG_ARCH_NSPIRE) += clk-nspire.o
> diff --git a/drivers/clk/clk-max77802.c b/drivers/clk/clk-max77802.c
> new file mode 100644
> index 0000000..4253b44
> --- /dev/null
> +++ b/drivers/clk/clk-max77802.c
> @@ -0,0 +1,99 @@
> +/*
> + * clk-max77802.c - Clock driver for Maxim 77802
> + *
> + * Copyright (C) 2014 Google, Inc
> + *
> + * Copyright (C) 2012 Samsung Electornics
> + * Jonghwa Lee <jonghwa3.lee-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; either version 2 of the License, or (at your
> + * option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * This driver is based on clk-max77686.c
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/slab.h>
> +#include <linux/err.h>
> +#include <linux/platform_device.h>
> +#include <linux/mfd/max77802.h>
> +#include <linux/mfd/max77802-private.h>
> +#include <linux/clk-provider.h>
> +#include <linux/mutex.h>
> +#include <linux/clkdev.h>
> +
> +#include <dt-bindings/clock/maxim,max77802.h>
> +#include "clk-max-gen.h"
> +
> +#define MAX77802_CLOCK_OPMODE_MASK 0x1
> +#define MAX77802_CLOCK_LOW_JITTER_SHIFT 0x3
> +
> +static struct clk_init_data max77802_clks_init[MAX77802_CLKS_NUM] = {
> + [MAX77802_CLK_32K_AP] = {
> + .name = "32khz_ap",
> + .ops = &max_gen_clk_ops,
> + .flags = CLK_IS_ROOT,
> + },
> + [MAX77802_CLK_32K_CP] = {
> + .name = "32khz_cp",
> + .ops = &max_gen_clk_ops,
> + .flags = CLK_IS_ROOT,
> + },
> +};
> +
> +static int max77802_clk_probe(struct platform_device *pdev)
> +{
> + struct max77802_dev *iodev = dev_get_drvdata(pdev->dev.parent);
> + int ret;
> +
> + ret = max_gen_clk_probe(pdev, iodev->regmap, MAX77802_REG_32KHZ,
> + max77802_clks_init, MAX77802_CLKS_NUM);
> +
> + if (ret) {
> + dev_err(&pdev->dev, "generic probe failed %d\n", ret);
> + return ret;
> + }
> +
> + /* Enable low-jitter mode on the 32khz clocks. */
> + ret = regmap_update_bits(iodev->regmap, MAX77802_REG_32KHZ,
> + 1 << MAX77802_CLOCK_LOW_JITTER_SHIFT,
> + 1 << MAX77802_CLOCK_LOW_JITTER_SHIFT);
> + if (ret < 0)
> + dev_err(&pdev->dev, "failed to enable low-jitter mode\n");
> +
> + return ret;
> +}
> +
> +static int max77802_clk_remove(struct platform_device *pdev)
> +{
> + return max_gen_clk_remove(pdev, MAX77802_CLKS_NUM);
> +}
> +
> +static const struct platform_device_id max77802_clk_id[] = {
> + { "max77802-clk", 0},
> + { },
> +};
> +MODULE_DEVICE_TABLE(platform, max77802_clk_id);
> +
> +static struct platform_driver max77802_clk_driver = {
> + .driver = {
> + .name = "max77802-clk",
> + .owner = THIS_MODULE,
> + },
> + .probe = max77802_clk_probe,
> + .remove = max77802_clk_remove,
> + .id_table = max77802_clk_id,
> +};
> +
> +module_platform_driver(max77802_clk_driver);
> +
> +MODULE_DESCRIPTION("MAXIM 77802 Clock Driver");
> +MODULE_AUTHOR("Javier Martinez Canillas <javier.martinez@collabora.co.uk>");
> +MODULE_LICENSE("GPL");
> diff --git a/include/dt-bindings/clock/maxim,max77802.h b/include/dt-bindings/clock/maxim,max77802.h
> new file mode 100644
> index 0000000..997312e
> --- /dev/null
> +++ b/include/dt-bindings/clock/maxim,max77802.h
> @@ -0,0 +1,22 @@
> +/*
> + * Copyright (C) 2014 Google, Inc
> + *
> + * 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 77802 PMIC.
> + */
> +
> +#ifndef _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H
> +#define _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H
> +
> +/* Fixed rate clocks. */
> +
> +#define MAX77802_CLK_32K_AP 0
> +#define MAX77802_CLK_32K_CP 1
> +
> +/* Total number of clocks. */
> +#define MAX77802_CLKS_NUM (MAX77802_CLK_32K_CP + 1)
> +
> +#endif /* _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H */
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: k.kozlowski@samsung.com (Krzysztof Kozlowski)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 11/14] clk: Add driver for Maxim 77802 PMIC clocks
Date: Thu, 26 Jun 2014 12:40:19 +0200 [thread overview]
Message-ID: <1403779219.27156.20.camel@AMDC1943> (raw)
In-Reply-To: <1403723019-6212-12-git-send-email-javier.martinez@collabora.co.uk>
On ?ro, 2014-06-25 at 21:03 +0200, Javier Martinez Canillas wrote:
> The MAX77802 PMIC has two 32.768kHz Buffered Clock Outputs with
> Low Jitter Mode. This patch adds support for these two clocks.
>
> Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
> ---
>
> Changes since v3: None
>
> Changes since v2: None
>
> Changes since v1:
> - Use module_platform_driver() instead of having init/exit functions.
> Suggested by Mark Brown.
> - Use the generic maxim clock driver to reduce code duplication with
> clk-max77686.c driver.
>
> drivers/clk/Kconfig | 7 +++
> drivers/clk/Makefile | 1 +
> drivers/clk/clk-max77802.c | 99 ++++++++++++++++++++++++++++++
> include/dt-bindings/clock/maxim,max77802.h | 22 +++++++
> 4 files changed, 129 insertions(+)
> create mode 100644 drivers/clk/clk-max77802.c
> create mode 100644 include/dt-bindings/clock/maxim,max77802.h
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Best regards,
Krzysztof
>
> diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
> index 3fd4270..221260b 100644
> --- a/drivers/clk/Kconfig
> +++ b/drivers/clk/Kconfig
> @@ -42,6 +42,13 @@ config COMMON_CLK_MAX77686
> ---help---
> This driver supports Maxim 77686 crystal oscillator clock.
>
> +config COMMON_CLK_MAX77802
> + tristate "Clock driver for Maxim 77802 MFD"
> + depends on MFD_MAX77802
> + select COMMON_CLK_MAX_GEN
> + ---help---
> + This driver supports Maxim 77802 crystal oscillator clock.
> +
> config COMMON_CLK_SI5351
> tristate "Clock driver for SiLabs 5351A/B/C"
> depends on I2C
> diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
> index 6c1aff6..520ff76 100644
> --- a/drivers/clk/Makefile
> +++ b/drivers/clk/Makefile
> @@ -20,6 +20,7 @@ obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o
> obj-$(CONFIG_MACH_LOONGSON1) += 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_ARCH_MOXART) += clk-moxart.o
> obj-$(CONFIG_ARCH_NOMADIK) += clk-nomadik.o
> obj-$(CONFIG_ARCH_NSPIRE) += clk-nspire.o
> diff --git a/drivers/clk/clk-max77802.c b/drivers/clk/clk-max77802.c
> new file mode 100644
> index 0000000..4253b44
> --- /dev/null
> +++ b/drivers/clk/clk-max77802.c
> @@ -0,0 +1,99 @@
> +/*
> + * clk-max77802.c - Clock driver for Maxim 77802
> + *
> + * Copyright (C) 2014 Google, Inc
> + *
> + * Copyright (C) 2012 Samsung Electornics
> + * Jonghwa Lee <jonghwa3.lee@samsung.com>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; either version 2 of the License, or (at your
> + * option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * This driver is based on clk-max77686.c
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/slab.h>
> +#include <linux/err.h>
> +#include <linux/platform_device.h>
> +#include <linux/mfd/max77802.h>
> +#include <linux/mfd/max77802-private.h>
> +#include <linux/clk-provider.h>
> +#include <linux/mutex.h>
> +#include <linux/clkdev.h>
> +
> +#include <dt-bindings/clock/maxim,max77802.h>
> +#include "clk-max-gen.h"
> +
> +#define MAX77802_CLOCK_OPMODE_MASK 0x1
> +#define MAX77802_CLOCK_LOW_JITTER_SHIFT 0x3
> +
> +static struct clk_init_data max77802_clks_init[MAX77802_CLKS_NUM] = {
> + [MAX77802_CLK_32K_AP] = {
> + .name = "32khz_ap",
> + .ops = &max_gen_clk_ops,
> + .flags = CLK_IS_ROOT,
> + },
> + [MAX77802_CLK_32K_CP] = {
> + .name = "32khz_cp",
> + .ops = &max_gen_clk_ops,
> + .flags = CLK_IS_ROOT,
> + },
> +};
> +
> +static int max77802_clk_probe(struct platform_device *pdev)
> +{
> + struct max77802_dev *iodev = dev_get_drvdata(pdev->dev.parent);
> + int ret;
> +
> + ret = max_gen_clk_probe(pdev, iodev->regmap, MAX77802_REG_32KHZ,
> + max77802_clks_init, MAX77802_CLKS_NUM);
> +
> + if (ret) {
> + dev_err(&pdev->dev, "generic probe failed %d\n", ret);
> + return ret;
> + }
> +
> + /* Enable low-jitter mode on the 32khz clocks. */
> + ret = regmap_update_bits(iodev->regmap, MAX77802_REG_32KHZ,
> + 1 << MAX77802_CLOCK_LOW_JITTER_SHIFT,
> + 1 << MAX77802_CLOCK_LOW_JITTER_SHIFT);
> + if (ret < 0)
> + dev_err(&pdev->dev, "failed to enable low-jitter mode\n");
> +
> + return ret;
> +}
> +
> +static int max77802_clk_remove(struct platform_device *pdev)
> +{
> + return max_gen_clk_remove(pdev, MAX77802_CLKS_NUM);
> +}
> +
> +static const struct platform_device_id max77802_clk_id[] = {
> + { "max77802-clk", 0},
> + { },
> +};
> +MODULE_DEVICE_TABLE(platform, max77802_clk_id);
> +
> +static struct platform_driver max77802_clk_driver = {
> + .driver = {
> + .name = "max77802-clk",
> + .owner = THIS_MODULE,
> + },
> + .probe = max77802_clk_probe,
> + .remove = max77802_clk_remove,
> + .id_table = max77802_clk_id,
> +};
> +
> +module_platform_driver(max77802_clk_driver);
> +
> +MODULE_DESCRIPTION("MAXIM 77802 Clock Driver");
> +MODULE_AUTHOR("Javier Martinez Canillas <javier.martinez@collabora.co.uk>");
> +MODULE_LICENSE("GPL");
> diff --git a/include/dt-bindings/clock/maxim,max77802.h b/include/dt-bindings/clock/maxim,max77802.h
> new file mode 100644
> index 0000000..997312e
> --- /dev/null
> +++ b/include/dt-bindings/clock/maxim,max77802.h
> @@ -0,0 +1,22 @@
> +/*
> + * Copyright (C) 2014 Google, Inc
> + *
> + * 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 77802 PMIC.
> + */
> +
> +#ifndef _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H
> +#define _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H
> +
> +/* Fixed rate clocks. */
> +
> +#define MAX77802_CLK_32K_AP 0
> +#define MAX77802_CLK_32K_CP 1
> +
> +/* Total number of clocks. */
> +#define MAX77802_CLKS_NUM (MAX77802_CLK_32K_CP + 1)
> +
> +#endif /* _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H */
WARNING: multiple messages have this Message-ID (diff)
From: Krzysztof Kozlowski <k.kozlowski@samsung.com>
To: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Cc: Lee Jones <lee.jones@linaro.org>,
Samuel Ortiz <sameo@linux.intel.com>,
Mark Brown <broonie@kernel.org>,
Mike Turquette <mturquette@linaro.org>,
Liam Girdwood <lgirdwood@gmail.com>,
Alessandro Zummo <a.zummo@towertech.it>,
Kukjin Kim <kgene.kim@samsung.com>,
Doug Anderson <dianders@chromium.org>,
Olof Johansson <olof@lixom.net>,
Sjoerd Simons <sjoerd.simons@collabora.co.uk>,
Daniel Stone <daniels@collabora.com>,
Tomeu Vizoso <tomeu.vizoso@collabora.com>,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 11/14] clk: Add driver for Maxim 77802 PMIC clocks
Date: Thu, 26 Jun 2014 12:40:19 +0200 [thread overview]
Message-ID: <1403779219.27156.20.camel@AMDC1943> (raw)
In-Reply-To: <1403723019-6212-12-git-send-email-javier.martinez@collabora.co.uk>
On śro, 2014-06-25 at 21:03 +0200, Javier Martinez Canillas wrote:
> The MAX77802 PMIC has two 32.768kHz Buffered Clock Outputs with
> Low Jitter Mode. This patch adds support for these two clocks.
>
> Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
> ---
>
> Changes since v3: None
>
> Changes since v2: None
>
> Changes since v1:
> - Use module_platform_driver() instead of having init/exit functions.
> Suggested by Mark Brown.
> - Use the generic maxim clock driver to reduce code duplication with
> clk-max77686.c driver.
>
> drivers/clk/Kconfig | 7 +++
> drivers/clk/Makefile | 1 +
> drivers/clk/clk-max77802.c | 99 ++++++++++++++++++++++++++++++
> include/dt-bindings/clock/maxim,max77802.h | 22 +++++++
> 4 files changed, 129 insertions(+)
> create mode 100644 drivers/clk/clk-max77802.c
> create mode 100644 include/dt-bindings/clock/maxim,max77802.h
Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Best regards,
Krzysztof
>
> diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
> index 3fd4270..221260b 100644
> --- a/drivers/clk/Kconfig
> +++ b/drivers/clk/Kconfig
> @@ -42,6 +42,13 @@ config COMMON_CLK_MAX77686
> ---help---
> This driver supports Maxim 77686 crystal oscillator clock.
>
> +config COMMON_CLK_MAX77802
> + tristate "Clock driver for Maxim 77802 MFD"
> + depends on MFD_MAX77802
> + select COMMON_CLK_MAX_GEN
> + ---help---
> + This driver supports Maxim 77802 crystal oscillator clock.
> +
> config COMMON_CLK_SI5351
> tristate "Clock driver for SiLabs 5351A/B/C"
> depends on I2C
> diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
> index 6c1aff6..520ff76 100644
> --- a/drivers/clk/Makefile
> +++ b/drivers/clk/Makefile
> @@ -20,6 +20,7 @@ obj-$(CONFIG_ARCH_HIGHBANK) += clk-highbank.o
> obj-$(CONFIG_MACH_LOONGSON1) += 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_ARCH_MOXART) += clk-moxart.o
> obj-$(CONFIG_ARCH_NOMADIK) += clk-nomadik.o
> obj-$(CONFIG_ARCH_NSPIRE) += clk-nspire.o
> diff --git a/drivers/clk/clk-max77802.c b/drivers/clk/clk-max77802.c
> new file mode 100644
> index 0000000..4253b44
> --- /dev/null
> +++ b/drivers/clk/clk-max77802.c
> @@ -0,0 +1,99 @@
> +/*
> + * clk-max77802.c - Clock driver for Maxim 77802
> + *
> + * Copyright (C) 2014 Google, Inc
> + *
> + * Copyright (C) 2012 Samsung Electornics
> + * Jonghwa Lee <jonghwa3.lee@samsung.com>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; either version 2 of the License, or (at your
> + * option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * This driver is based on clk-max77686.c
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/slab.h>
> +#include <linux/err.h>
> +#include <linux/platform_device.h>
> +#include <linux/mfd/max77802.h>
> +#include <linux/mfd/max77802-private.h>
> +#include <linux/clk-provider.h>
> +#include <linux/mutex.h>
> +#include <linux/clkdev.h>
> +
> +#include <dt-bindings/clock/maxim,max77802.h>
> +#include "clk-max-gen.h"
> +
> +#define MAX77802_CLOCK_OPMODE_MASK 0x1
> +#define MAX77802_CLOCK_LOW_JITTER_SHIFT 0x3
> +
> +static struct clk_init_data max77802_clks_init[MAX77802_CLKS_NUM] = {
> + [MAX77802_CLK_32K_AP] = {
> + .name = "32khz_ap",
> + .ops = &max_gen_clk_ops,
> + .flags = CLK_IS_ROOT,
> + },
> + [MAX77802_CLK_32K_CP] = {
> + .name = "32khz_cp",
> + .ops = &max_gen_clk_ops,
> + .flags = CLK_IS_ROOT,
> + },
> +};
> +
> +static int max77802_clk_probe(struct platform_device *pdev)
> +{
> + struct max77802_dev *iodev = dev_get_drvdata(pdev->dev.parent);
> + int ret;
> +
> + ret = max_gen_clk_probe(pdev, iodev->regmap, MAX77802_REG_32KHZ,
> + max77802_clks_init, MAX77802_CLKS_NUM);
> +
> + if (ret) {
> + dev_err(&pdev->dev, "generic probe failed %d\n", ret);
> + return ret;
> + }
> +
> + /* Enable low-jitter mode on the 32khz clocks. */
> + ret = regmap_update_bits(iodev->regmap, MAX77802_REG_32KHZ,
> + 1 << MAX77802_CLOCK_LOW_JITTER_SHIFT,
> + 1 << MAX77802_CLOCK_LOW_JITTER_SHIFT);
> + if (ret < 0)
> + dev_err(&pdev->dev, "failed to enable low-jitter mode\n");
> +
> + return ret;
> +}
> +
> +static int max77802_clk_remove(struct platform_device *pdev)
> +{
> + return max_gen_clk_remove(pdev, MAX77802_CLKS_NUM);
> +}
> +
> +static const struct platform_device_id max77802_clk_id[] = {
> + { "max77802-clk", 0},
> + { },
> +};
> +MODULE_DEVICE_TABLE(platform, max77802_clk_id);
> +
> +static struct platform_driver max77802_clk_driver = {
> + .driver = {
> + .name = "max77802-clk",
> + .owner = THIS_MODULE,
> + },
> + .probe = max77802_clk_probe,
> + .remove = max77802_clk_remove,
> + .id_table = max77802_clk_id,
> +};
> +
> +module_platform_driver(max77802_clk_driver);
> +
> +MODULE_DESCRIPTION("MAXIM 77802 Clock Driver");
> +MODULE_AUTHOR("Javier Martinez Canillas <javier.martinez@collabora.co.uk>");
> +MODULE_LICENSE("GPL");
> diff --git a/include/dt-bindings/clock/maxim,max77802.h b/include/dt-bindings/clock/maxim,max77802.h
> new file mode 100644
> index 0000000..997312e
> --- /dev/null
> +++ b/include/dt-bindings/clock/maxim,max77802.h
> @@ -0,0 +1,22 @@
> +/*
> + * Copyright (C) 2014 Google, Inc
> + *
> + * 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 77802 PMIC.
> + */
> +
> +#ifndef _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H
> +#define _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H
> +
> +/* Fixed rate clocks. */
> +
> +#define MAX77802_CLK_32K_AP 0
> +#define MAX77802_CLK_32K_CP 1
> +
> +/* Total number of clocks. */
> +#define MAX77802_CLKS_NUM (MAX77802_CLK_32K_CP + 1)
> +
> +#endif /* _DT_BINDINGS_CLOCK_MAXIM_MAX77802_CLOCK_H */
next prev parent reply other threads:[~2014-06-26 10:40 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-25 19:03 [PATCH v4 00/14] Add Maxim 77802 PMIC support Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 01/14] mfd: max77686: Convert to use regmap_irq Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 02/14] mfd: max77686: Allow the max77686 rtc to wakeup the system Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 9:03 ` Krzysztof Kozlowski
2014-06-26 9:03 ` Krzysztof Kozlowski
2014-06-25 19:03 ` [PATCH v4 03/14] clk: max77686: Add DT include for MAX77686 PMIC clock Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 04/14] clk: max77686: Improve Maxim 77686 PMIC clocks binding Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:54 ` Doug Anderson
2014-06-25 19:54 ` Doug Anderson
2014-06-25 19:03 ` [PATCH v4 05/14] clk: Add generic driver for Maxim PMIC clocks Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 9:00 ` Krzysztof Kozlowski
2014-06-26 9:00 ` Krzysztof Kozlowski
2014-06-26 11:51 ` Yadwinder Singh Brar
2014-06-26 11:51 ` Yadwinder Singh Brar
2014-06-26 12:31 ` Javier Martinez Canillas
2014-06-26 12:31 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 06/14] clk: max77686: Convert to the generic max clock driver Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 07/14] mfd: Add driver for Maxim 77802 Power Management IC Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 9:31 ` Krzysztof Kozlowski
2014-06-26 9:31 ` Krzysztof Kozlowski
2014-06-26 11:13 ` Javier Martinez Canillas
2014-06-26 11:13 ` Javier Martinez Canillas
2014-06-26 16:12 ` Doug Anderson
2014-06-26 16:12 ` Doug Anderson
[not found] ` <CAD=FV=U5sBQ4VDG65D4rTnfruo5XzQH_EMs4SMpO4BjY1UHA5Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-26 16:18 ` Javier Martinez Canillas
2014-06-26 16:18 ` Javier Martinez Canillas
2014-06-26 16:18 ` Javier Martinez Canillas
2014-06-26 16:29 ` Doug Anderson
2014-06-26 16:29 ` Doug Anderson
2014-06-26 16:36 ` Javier Martinez Canillas
2014-06-26 16:36 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 08/14] mfd: max77802: Add DT binding documentation Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 09/14] regmap: Add regmap_reg_copy function Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 10/14] regulator: Add driver for Maxim 77802 PMIC regulators Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 10:08 ` Krzysztof Kozlowski
2014-06-26 10:08 ` Krzysztof Kozlowski
2014-06-26 11:26 ` Javier Martinez Canillas
2014-06-26 11:26 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 11/14] clk: Add driver for Maxim 77802 PMIC clocks Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
[not found] ` <1403723019-6212-12-git-send-email-javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org>
2014-06-26 10:40 ` Krzysztof Kozlowski [this message]
2014-06-26 10:40 ` Krzysztof Kozlowski
2014-06-26 10:40 ` Krzysztof Kozlowski
2014-06-25 19:03 ` [PATCH v4 12/14] clk: max77802: Add DT binding documentation Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 13/14] rtc: Add driver for Maxim 77802 PMIC Real-Time-Clock Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-25 19:03 ` [PATCH v4 14/14] ARM: dts: Add max77802 to exynos5420-peach-pit and exynos5800-peach-pi Javier Martinez Canillas
2014-06-25 19:03 ` Javier Martinez Canillas
2014-06-26 13:32 ` [PATCH v4 00/14] Add Maxim 77802 PMIC support Naveen Krishna Ch
2014-06-26 13:32 ` Naveen Krishna Ch
[not found] ` <CAHfPSqB9620OiHxd_w3ReS6gg7PzYK1eN11rH6Z6boai0x=2og-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-06-26 13:56 ` Javier Martinez Canillas
2014-06-26 13:56 ` Javier Martinez Canillas
2014-06-26 13:56 ` Javier Martinez Canillas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1403779219.27156.20.camel@AMDC1943 \
--to=k.kozlowski-sze3o3uu22jbdgjk7y7tuq@public.gmane.org \
--cc=a.zummo-BfzFCNDTiLLj+vYz1yj4TQ@public.gmane.org \
--cc=broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=daniels-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=dianders-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=javier.martinez-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org \
--cc=kgene.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=lgirdwood-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mturquette-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
--cc=sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
--cc=sjoerd.simons-ZGY8ohtN/8pPYcu2f3hruQ@public.gmane.org \
--cc=tomeu.vizoso-ZGY8ohtN/8qB+jHODAdFcQ@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.