From: Stephen Boyd <sboyd@kernel.org>
To: chunhui.dai@mediatek.com, drinkcat@chromium.org,
eddie.huang@mediatek.com, erin.lo@mediatek.com,
jamesjj.liao@mediatek.com, jasu@njomotys.info,
mark.rutland@arm.com, matthias.bgg@gmail.com,
mturquette@baylibre.com, owen.chen@mediatek.com,
p.zabel@pengutronix.de, robh+dt@kernel.org,
weiyi.lu@mediatek.com
Cc: "yong.liang" <yong.liang@mediatek.com>,
linux-mediatek@lists.infradead.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 2/2] clk: reset: Modify reset-controller driver
Date: Thu, 06 Jun 2019 13:32:44 -0700 [thread overview]
Message-ID: <20190606203245.859CE2083E@mail.kernel.org> (raw)
In-Reply-To: <1556607888-10301-2-git-send-email-yong.liang@mediatek.com>
Quoting Yong Liang (2019-04-30 00:04:48)
> From: "yong.liang" <yong.liang@mediatek.com>
>
> Set reset signal by a register and clear reset signal by another register for 8183.
Wrap this at the appropriate line length. Read the submitting patches
doc for more help with this.
>
> Signed-off-by: yong.liang <yong.liang@mediatek.com>
> ---
>
> Base on https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git branch clk-next and https://patchwork.kernel.org/patch/10856987/
You can use git format-patch --base=<commit> with newer git to indicate
this stuff. Please consider using that.
> diff --git a/drivers/clk/mediatek/clk-mt8183.c b/drivers/clk/mediatek/clk-mt8183.c
> index 9d86510..ea28587 100644
> --- a/drivers/clk/mediatek/clk-mt8183.c
> +++ b/drivers/clk/mediatek/clk-mt8183.c
> @@ -1204,13 +1204,21 @@ static int clk_mt8183_infra_probe(struct platform_device *pdev)
> {
> struct clk_onecell_data *clk_data;
> struct device_node *node = pdev->dev.of_node;
> + int r;
>
> clk_data = mtk_alloc_clk_data(CLK_INFRA_NR_CLK);
>
> mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
> clk_data);
>
> - return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
> + r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
> + if (r)
> + dev_err(&pdev->dev,
> + "%s(): could not register clock provider: %d\n",__func__, r);
> +
> + mtk_register_reset_controller_set_clr(node, 4, 0x120);
We still do this if we can't register the clks? Why?
> +
> + return r;
> }
>
> static int clk_mt8183_mcu_probe(struct platform_device *pdev)
> diff --git a/drivers/clk/mediatek/clk-mtk.h b/drivers/clk/mediatek/clk-mtk.h
> index 33ab173..7a74a54 100644
> --- a/drivers/clk/mediatek/clk-mtk.h
> +++ b/drivers/clk/mediatek/clk-mtk.h
> @@ -248,4 +248,7 @@ struct clk *mtk_clk_register_ref2usb_tx(const char *name,
> void mtk_register_reset_controller(struct device_node *np,
> unsigned int num_regs, int regofs);
>
> +void mtk_register_reset_controller_set_clr(struct device_node *np,
> + unsigned int num_regs, int regofs);
> +
> #endif /* __DRV_CLK_MTK_H */
> diff --git a/drivers/clk/mediatek/reset.c b/drivers/clk/mediatek/reset.c
> index d3551d5..ee70798 100644
> --- a/drivers/clk/mediatek/reset.c
> +++ b/drivers/clk/mediatek/reset.c
> @@ -27,6 +27,21 @@ struct mtk_reset {
> struct reset_controller_dev rcdev;
> };
>
> +static int mtk_reset_assert_set_clr(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
> + return regmap_write(data->regmap, data->regofs + ((id / 32) << 4), 1);
> +}
> +
> +static int mtk_reset_deassert_set_clr(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
> + return regmap_write(data->regmap,
> + data->regofs + ((id / 32) << 4) + 0x4, 1);
> +}
Sorry, the above two are hard to read. Can you add some newlines?
static int mtk_reset_assert_set_clr(struct reset_controller_dev *rcdev,
unsigned long id)
{
struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
unsigned int reg = data->regofs + ((id / 32) << 4);
return regmap_write(data->regmap, reg, 1);
}
static int mtk_reset_deassert_set_clr(struct reset_controller_dev *rcdev,
unsigned long id)
{
struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
unsigned int reg = data->regofs + ((id / 32) << 4) + 0x4;
return regmap_write(data->regmap, reg, 1);
}
> +
> static int mtk_reset_assert(struct reset_controller_dev *rcdev,
> unsigned long id)
> {
> @@ -57,14 +72,31 @@ static int mtk_reset(struct reset_controller_dev *rcdev,
> return mtk_reset_deassert(rcdev, id);
> }
>
> +static int mtk_reset_set_clr(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + int ret;
Nitpick: Add a newline between local variables and code.
> + ret = mtk_reset_assert_set_clr(rcdev, id);
> + if (ret)
> + return ret;
> + return mtk_reset_deassert_set_clr(rcdev, id);
> +}
> +
> static const struct reset_control_ops mtk_reset_ops = {
> .assert = mtk_reset_assert,
> .deassert = mtk_reset_deassert,
> .reset = mtk_reset,
> };
>
> -void mtk_register_reset_controller(struct device_node *np,
> - unsigned int num_regs, int regofs)
> +static const struct reset_control_ops mtk_reset_ops_set_clr = {
> + .assert = mtk_reset_assert_set_clr,
> + .deassert = mtk_reset_deassert_set_clr,
> + .reset = mtk_reset_set_clr,
Something weird happened to the tabs and spaces here.
> +};
> +
> +void mtk_register_reset_controller_common(struct device_node *np,
> + unsigned int num_regs, int regofs,
> + const struct reset_control_ops *reset_ops)
> {
> struct mtk_reset *data;
> int ret;
> diff --git a/include/dt-bindings/reset-controller/mt8183-resets.h b/include/dt-bindings/reset-controller/mt8183-resets.h
> new file mode 100644
> index 0000000..f0d92af
> --- /dev/null
> +++ b/include/dt-bindings/reset-controller/mt8183-resets.h
> @@ -0,0 +1,89 @@
> +/*
> + * Copyright (c) 2017 MediaTek Inc.
> + * Author: Yong Liang, MediaTek
> + *
> + * 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.
> + *
> + * 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.
Please use SPDX tags instead of this boilerplate.
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Boyd <sboyd@kernel.org>
To: Yong Liang <yong.liang@mediatek.com>,
chunhui.dai@mediatek.com, drinkcat@chromium.org,
eddie.huang@mediatek.com, erin.lo@mediatek.com,
jamesjj.liao@mediatek.com, jasu@njomotys.info,
mark.rutland@arm.com, matthias.bgg@gmail.com,
mturquette@baylibre.com, owen.chen@mediatek.com,
p.zabel@pengutronix.de, robh+dt@kernel.org,
weiyi.lu@mediatek.com
Cc: "yong.liang" <yong.liang@mediatek.com>,
linux-mediatek@lists.infradead.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v3 2/2] clk: reset: Modify reset-controller driver
Date: Thu, 06 Jun 2019 13:32:44 -0700 [thread overview]
Message-ID: <20190606203245.859CE2083E@mail.kernel.org> (raw)
In-Reply-To: <1556607888-10301-2-git-send-email-yong.liang@mediatek.com>
Quoting Yong Liang (2019-04-30 00:04:48)
> From: "yong.liang" <yong.liang@mediatek.com>
>
> Set reset signal by a register and clear reset signal by another register for 8183.
Wrap this at the appropriate line length. Read the submitting patches
doc for more help with this.
>
> Signed-off-by: yong.liang <yong.liang@mediatek.com>
> ---
>
> Base on https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git branch clk-next and https://patchwork.kernel.org/patch/10856987/
You can use git format-patch --base=<commit> with newer git to indicate
this stuff. Please consider using that.
> diff --git a/drivers/clk/mediatek/clk-mt8183.c b/drivers/clk/mediatek/clk-mt8183.c
> index 9d86510..ea28587 100644
> --- a/drivers/clk/mediatek/clk-mt8183.c
> +++ b/drivers/clk/mediatek/clk-mt8183.c
> @@ -1204,13 +1204,21 @@ static int clk_mt8183_infra_probe(struct platform_device *pdev)
> {
> struct clk_onecell_data *clk_data;
> struct device_node *node = pdev->dev.of_node;
> + int r;
>
> clk_data = mtk_alloc_clk_data(CLK_INFRA_NR_CLK);
>
> mtk_clk_register_gates(node, infra_clks, ARRAY_SIZE(infra_clks),
> clk_data);
>
> - return of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
> + r = of_clk_add_provider(node, of_clk_src_onecell_get, clk_data);
> + if (r)
> + dev_err(&pdev->dev,
> + "%s(): could not register clock provider: %d\n",__func__, r);
> +
> + mtk_register_reset_controller_set_clr(node, 4, 0x120);
We still do this if we can't register the clks? Why?
> +
> + return r;
> }
>
> static int clk_mt8183_mcu_probe(struct platform_device *pdev)
> diff --git a/drivers/clk/mediatek/clk-mtk.h b/drivers/clk/mediatek/clk-mtk.h
> index 33ab173..7a74a54 100644
> --- a/drivers/clk/mediatek/clk-mtk.h
> +++ b/drivers/clk/mediatek/clk-mtk.h
> @@ -248,4 +248,7 @@ struct clk *mtk_clk_register_ref2usb_tx(const char *name,
> void mtk_register_reset_controller(struct device_node *np,
> unsigned int num_regs, int regofs);
>
> +void mtk_register_reset_controller_set_clr(struct device_node *np,
> + unsigned int num_regs, int regofs);
> +
> #endif /* __DRV_CLK_MTK_H */
> diff --git a/drivers/clk/mediatek/reset.c b/drivers/clk/mediatek/reset.c
> index d3551d5..ee70798 100644
> --- a/drivers/clk/mediatek/reset.c
> +++ b/drivers/clk/mediatek/reset.c
> @@ -27,6 +27,21 @@ struct mtk_reset {
> struct reset_controller_dev rcdev;
> };
>
> +static int mtk_reset_assert_set_clr(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
> + return regmap_write(data->regmap, data->regofs + ((id / 32) << 4), 1);
> +}
> +
> +static int mtk_reset_deassert_set_clr(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
> + return regmap_write(data->regmap,
> + data->regofs + ((id / 32) << 4) + 0x4, 1);
> +}
Sorry, the above two are hard to read. Can you add some newlines?
static int mtk_reset_assert_set_clr(struct reset_controller_dev *rcdev,
unsigned long id)
{
struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
unsigned int reg = data->regofs + ((id / 32) << 4);
return regmap_write(data->regmap, reg, 1);
}
static int mtk_reset_deassert_set_clr(struct reset_controller_dev *rcdev,
unsigned long id)
{
struct mtk_reset *data = container_of(rcdev, struct mtk_reset, rcdev);
unsigned int reg = data->regofs + ((id / 32) << 4) + 0x4;
return regmap_write(data->regmap, reg, 1);
}
> +
> static int mtk_reset_assert(struct reset_controller_dev *rcdev,
> unsigned long id)
> {
> @@ -57,14 +72,31 @@ static int mtk_reset(struct reset_controller_dev *rcdev,
> return mtk_reset_deassert(rcdev, id);
> }
>
> +static int mtk_reset_set_clr(struct reset_controller_dev *rcdev,
> + unsigned long id)
> +{
> + int ret;
Nitpick: Add a newline between local variables and code.
> + ret = mtk_reset_assert_set_clr(rcdev, id);
> + if (ret)
> + return ret;
> + return mtk_reset_deassert_set_clr(rcdev, id);
> +}
> +
> static const struct reset_control_ops mtk_reset_ops = {
> .assert = mtk_reset_assert,
> .deassert = mtk_reset_deassert,
> .reset = mtk_reset,
> };
>
> -void mtk_register_reset_controller(struct device_node *np,
> - unsigned int num_regs, int regofs)
> +static const struct reset_control_ops mtk_reset_ops_set_clr = {
> + .assert = mtk_reset_assert_set_clr,
> + .deassert = mtk_reset_deassert_set_clr,
> + .reset = mtk_reset_set_clr,
Something weird happened to the tabs and spaces here.
> +};
> +
> +void mtk_register_reset_controller_common(struct device_node *np,
> + unsigned int num_regs, int regofs,
> + const struct reset_control_ops *reset_ops)
> {
> struct mtk_reset *data;
> int ret;
> diff --git a/include/dt-bindings/reset-controller/mt8183-resets.h b/include/dt-bindings/reset-controller/mt8183-resets.h
> new file mode 100644
> index 0000000..f0d92af
> --- /dev/null
> +++ b/include/dt-bindings/reset-controller/mt8183-resets.h
> @@ -0,0 +1,89 @@
> +/*
> + * Copyright (c) 2017 MediaTek Inc.
> + * Author: Yong Liang, MediaTek
> + *
> + * 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.
> + *
> + * 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.
Please use SPDX tags instead of this boilerplate.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-06-06 20:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-30 7:04 [PATCH v3 1/2] arm64: dts: mt8183: Add reset-cells in infracfg Yong Liang
2019-04-30 7:04 ` Yong Liang
2019-04-30 7:04 ` [PATCH v3 2/2] clk: reset: Modify reset-controller driver Yong Liang
2019-04-30 7:04 ` Yong Liang
2019-06-06 20:32 ` Stephen Boyd [this message]
2019-06-06 20:32 ` Stephen Boyd
2019-06-06 20:33 ` Stephen Boyd
2019-06-06 20:33 ` Stephen Boyd
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=20190606203245.859CE2083E@mail.kernel.org \
--to=sboyd@kernel.org \
--cc=chunhui.dai@mediatek.com \
--cc=drinkcat@chromium.org \
--cc=eddie.huang@mediatek.com \
--cc=erin.lo@mediatek.com \
--cc=jamesjj.liao@mediatek.com \
--cc=jasu@njomotys.info \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=matthias.bgg@gmail.com \
--cc=mturquette@baylibre.com \
--cc=owen.chen@mediatek.com \
--cc=p.zabel@pengutronix.de \
--cc=robh+dt@kernel.org \
--cc=weiyi.lu@mediatek.com \
--cc=yong.liang@mediatek.com \
/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.