From: Stephen Boyd <sboyd@codeaurora.org>
To: gabriel.fernandez@st.com
Cc: Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Russell King <linux@armlinux.org.uk>,
Maxime Coquelin <mcoquelin.stm32@gmail.com>,
Alexandre Torgue <alexandre.torgue@st.com>,
Michael Turquette <mturquette@baylibre.com>,
Nicolas Pitre <nico@linaro.org>, Arnd Bergmann <arnd@arndb.de>,
daniel.thompson@linaro.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org,
ludovic.barre@st.com, olivier.bideau@st.com,
amelie.delaunay@st.com
Subject: Re: [PATCH v2 4/6] clk: stm32f4: Add RTC clock
Date: Wed, 19 Oct 2016 13:45:37 -0700 [thread overview]
Message-ID: <20161019204537.GD8871@codeaurora.org> (raw)
In-Reply-To: <1476436699-21879-5-git-send-email-gabriel.fernandez@st.com>
On 10/14, gabriel.fernandez@st.com wrote:
> @@ -310,6 +310,15 @@ static inline void enable_power_domain_write_protection(void)
> regmap_update_bits(pdrm, 0x00, (1 << 8), (0 << 8));
> }
>
> +static inline void sofware_reset_backup_domain(void)
> +{
> + unsigned long val;
> +
> + val = readl(base + STM32F4_RCC_BDCR);
> + writel(val |= (1 << 16), base + STM32F4_RCC_BDCR);
Interesting C style here! Why set the bit in val that will then
be cleared in the next function call? Please just don't do it. It
would be better to do writel(val | BIT(16), ...)
> + writel(val & ~(1 << 16), base + STM32F4_RCC_BDCR);
> +}
> +
> struct stm32_rgate {
> struct clk_hw hw;
> struct clk_gate gate;
> @@ -396,6 +405,113 @@ static struct clk_hw *clk_register_rgate(struct device *dev, const char *name,
> return hw;
> }
>
> +static int cclk_gate_enable(struct clk_hw *hw)
> +{
> + int ret;
> +
> + disable_power_domain_write_protection();
> +
> + ret = clk_gate_ops.enable(hw);
> +
> + enable_power_domain_write_protection();
> +
> + return ret;
> +}
> +
> +static void cclk_gate_disable(struct clk_hw *hw)
> +{
> + disable_power_domain_write_protection();
> +
> + clk_gate_ops.disable(hw);
> +
> + enable_power_domain_write_protection();
> +}
> +
> +static int cclk_gate_is_enabled(struct clk_hw *hw)
> +{
> + return clk_gate_ops.is_enabled(hw);
> +}
> +
> +static const struct clk_ops cclk_gate_ops = {
> + .enable = cclk_gate_enable,
> + .disable = cclk_gate_disable,
> + .is_enabled = cclk_gate_is_enabled,
> +};
> +
> +static u8 cclk_mux_get_parent(struct clk_hw *hw)
> +{
> + return clk_mux_ops.get_parent(hw);
> +}
> +
> +
Weird double newline here. Please remove one.
> +static int cclk_mux_set_parent(struct clk_hw *hw, u8 index)
> +{
> + int ret;
> +
> + disable_power_domain_write_protection();
> +
> + sofware_reset_backup_domain();
> +
> + ret = clk_mux_ops.set_parent(hw, index);
> +
> + enable_power_domain_write_protection();
> +
> + return ret;
> +}
> +
> +
Same.
> +static const struct clk_ops cclk_mux_ops = {
> + .get_parent = cclk_mux_get_parent,
> + .set_parent = cclk_mux_set_parent,
> +};
> +
> +static struct clk_hw *stm32_register_cclk(struct device *dev, const char *name,
> + const char * const *parent_names, int num_parents,
> + void __iomem *reg, u8 bit_idx, u8 shift, unsigned long flags,
> + spinlock_t *lock)
> +{
> + struct clk_hw *hw;
> + struct clk_gate *gate;
> + struct clk_mux *mux;
> +
> + gate = kzalloc(sizeof(struct clk_gate), GFP_KERNEL);
sizeof(*gate) please.
> + if (!gate) {
> + hw = ERR_PTR(-EINVAL);
> + goto fail;
> + }
> +
> + mux = kzalloc(sizeof(struct clk_mux), GFP_KERNEL);
sizeof(*mux) please.
> + if (!mux) {
> + kfree(gate);
> + hw = ERR_PTR(-EINVAL);
> + goto fail;
> + }
> +
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
WARNING: multiple messages have this Message-ID (diff)
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 4/6] clk: stm32f4: Add RTC clock
Date: Wed, 19 Oct 2016 13:45:37 -0700 [thread overview]
Message-ID: <20161019204537.GD8871@codeaurora.org> (raw)
In-Reply-To: <1476436699-21879-5-git-send-email-gabriel.fernandez@st.com>
On 10/14, gabriel.fernandez at st.com wrote:
> @@ -310,6 +310,15 @@ static inline void enable_power_domain_write_protection(void)
> regmap_update_bits(pdrm, 0x00, (1 << 8), (0 << 8));
> }
>
> +static inline void sofware_reset_backup_domain(void)
> +{
> + unsigned long val;
> +
> + val = readl(base + STM32F4_RCC_BDCR);
> + writel(val |= (1 << 16), base + STM32F4_RCC_BDCR);
Interesting C style here! Why set the bit in val that will then
be cleared in the next function call? Please just don't do it. It
would be better to do writel(val | BIT(16), ...)
> + writel(val & ~(1 << 16), base + STM32F4_RCC_BDCR);
> +}
> +
> struct stm32_rgate {
> struct clk_hw hw;
> struct clk_gate gate;
> @@ -396,6 +405,113 @@ static struct clk_hw *clk_register_rgate(struct device *dev, const char *name,
> return hw;
> }
>
> +static int cclk_gate_enable(struct clk_hw *hw)
> +{
> + int ret;
> +
> + disable_power_domain_write_protection();
> +
> + ret = clk_gate_ops.enable(hw);
> +
> + enable_power_domain_write_protection();
> +
> + return ret;
> +}
> +
> +static void cclk_gate_disable(struct clk_hw *hw)
> +{
> + disable_power_domain_write_protection();
> +
> + clk_gate_ops.disable(hw);
> +
> + enable_power_domain_write_protection();
> +}
> +
> +static int cclk_gate_is_enabled(struct clk_hw *hw)
> +{
> + return clk_gate_ops.is_enabled(hw);
> +}
> +
> +static const struct clk_ops cclk_gate_ops = {
> + .enable = cclk_gate_enable,
> + .disable = cclk_gate_disable,
> + .is_enabled = cclk_gate_is_enabled,
> +};
> +
> +static u8 cclk_mux_get_parent(struct clk_hw *hw)
> +{
> + return clk_mux_ops.get_parent(hw);
> +}
> +
> +
Weird double newline here. Please remove one.
> +static int cclk_mux_set_parent(struct clk_hw *hw, u8 index)
> +{
> + int ret;
> +
> + disable_power_domain_write_protection();
> +
> + sofware_reset_backup_domain();
> +
> + ret = clk_mux_ops.set_parent(hw, index);
> +
> + enable_power_domain_write_protection();
> +
> + return ret;
> +}
> +
> +
Same.
> +static const struct clk_ops cclk_mux_ops = {
> + .get_parent = cclk_mux_get_parent,
> + .set_parent = cclk_mux_set_parent,
> +};
> +
> +static struct clk_hw *stm32_register_cclk(struct device *dev, const char *name,
> + const char * const *parent_names, int num_parents,
> + void __iomem *reg, u8 bit_idx, u8 shift, unsigned long flags,
> + spinlock_t *lock)
> +{
> + struct clk_hw *hw;
> + struct clk_gate *gate;
> + struct clk_mux *mux;
> +
> + gate = kzalloc(sizeof(struct clk_gate), GFP_KERNEL);
sizeof(*gate) please.
> + if (!gate) {
> + hw = ERR_PTR(-EINVAL);
> + goto fail;
> + }
> +
> + mux = kzalloc(sizeof(struct clk_mux), GFP_KERNEL);
sizeof(*mux) please.
> + if (!mux) {
> + kfree(gate);
> + hw = ERR_PTR(-EINVAL);
> + goto fail;
> + }
> +
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
next prev parent reply other threads:[~2016-10-19 20:45 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-14 9:18 [PATCH v2 0/6] STM32F4 Add RTC & QSPI clocks gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez at st.com
2016-10-14 9:18 ` [PATCH v2 1/6] clk: stm32f4: Add LSI & LSE clocks gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez-qxv4g6HH51o
2016-10-14 9:18 ` gabriel.fernandez at st.com
2016-10-19 20:24 ` Stephen Boyd
2016-10-19 20:24 ` Stephen Boyd
2016-10-19 20:24 ` Stephen Boyd
2016-10-20 7:47 ` Gabriel Fernandez
2016-10-20 7:47 ` Gabriel Fernandez
2016-10-20 7:47 ` Gabriel Fernandez
2016-10-20 16:05 ` Gabriel Fernandez
2016-10-20 16:05 ` Gabriel Fernandez
2016-10-20 16:05 ` Gabriel Fernandez
2016-10-14 9:18 ` [PATCH v2 2/6] ARM: dts: stm32f429: add LSI and " gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez at st.com
2016-10-14 9:18 ` [PATCH v2 3/6] arm: stmf32: Enable SYSCON gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez-qxv4g6HH51o
2016-10-14 9:18 ` gabriel.fernandez at st.com
2016-10-14 9:18 ` [PATCH v2 4/6] clk: stm32f4: Add RTC clock gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez-qxv4g6HH51o
2016-10-14 9:18 ` gabriel.fernandez at st.com
2016-10-19 20:45 ` Stephen Boyd [this message]
2016-10-19 20:45 ` Stephen Boyd
2016-10-20 7:50 ` Gabriel Fernandez
2016-10-20 7:50 ` Gabriel Fernandez
2016-10-20 7:50 ` Gabriel Fernandez
2016-10-20 7:55 ` Gabriel Fernandez
2016-10-20 7:55 ` Gabriel Fernandez
2016-10-20 7:55 ` Gabriel Fernandez
2016-10-14 9:18 ` [PATCH v2 5/6] clk: stm32f469: Add QSPI clock gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez at st.com
2016-10-18 14:17 ` Rob Herring
2016-10-18 14:17 ` Rob Herring
2016-10-19 20:32 ` Stephen Boyd
2016-10-19 20:32 ` Stephen Boyd
2016-10-20 15:44 ` Gabriel Fernandez
2016-10-20 15:44 ` Gabriel Fernandez
2016-10-20 15:44 ` Gabriel Fernandez
2016-10-14 9:18 ` [PATCH v2 6/6] ARM: dts: stm32f429: " gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez
2016-10-14 9:18 ` gabriel.fernandez at st.com
2016-11-03 16:45 ` Alexandre Torgue
2016-11-03 16:45 ` Alexandre Torgue
2016-11-03 16:45 ` Alexandre Torgue
2016-10-18 23:51 ` [PATCH v2 0/6] STM32F4 Add RTC & QSPI clocks Stephen Boyd
2016-10-18 23:51 ` Stephen Boyd
2016-10-19 8:34 ` Gabriel Fernandez
2016-10-19 8:34 ` Gabriel Fernandez
2016-10-19 8:34 ` Gabriel Fernandez
2016-10-19 20:29 ` Stephen Boyd
2016-10-19 20:29 ` Stephen Boyd
2016-10-19 20:29 ` Stephen Boyd
2016-10-20 7:52 ` Gabriel Fernandez
2016-10-20 7:52 ` Gabriel Fernandez
2016-10-20 7:52 ` Gabriel Fernandez
2016-11-03 8:52 ` Alexandre Torgue
2016-11-03 8:52 ` Alexandre Torgue
2016-11-03 8:52 ` Alexandre Torgue
2016-11-03 8:57 ` Gabriel Fernandez
2016-11-03 8:57 ` Gabriel Fernandez
2016-11-03 8:57 ` Gabriel Fernandez
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=20161019204537.GD8871@codeaurora.org \
--to=sboyd@codeaurora.org \
--cc=alexandre.torgue@st.com \
--cc=amelie.delaunay@st.com \
--cc=arnd@arndb.de \
--cc=daniel.thompson@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=gabriel.fernandez@st.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=ludovic.barre@st.com \
--cc=mark.rutland@arm.com \
--cc=mcoquelin.stm32@gmail.com \
--cc=mturquette@baylibre.com \
--cc=nico@linaro.org \
--cc=olivier.bideau@st.com \
--cc=robh+dt@kernel.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.