2023-07-26 11:34:06

by Huqiang Qin

[permalink] [raw]
Subject: [PATCH 2/4] watchdog: Add a new struct for Amlogic-GXBB driver

Add a new structure wdt_params to describe the watchdog difference
of different chips.

Signed-off-by: Huqiang Qin <[email protected]>
---
drivers/watchdog/meson_gxbb_wdt.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/drivers/watchdog/meson_gxbb_wdt.c b/drivers/watchdog/meson_gxbb_wdt.c
index 35d80cb39856..a6c0d743b607 100644
--- a/drivers/watchdog/meson_gxbb_wdt.c
+++ b/drivers/watchdog/meson_gxbb_wdt.c
@@ -22,7 +22,6 @@

#define GXBB_WDT_CTRL_CLKDIV_EN BIT(25)
#define GXBB_WDT_CTRL_CLK_EN BIT(24)
-#define GXBB_WDT_CTRL_EE_RESET BIT(21)
#define GXBB_WDT_CTRL_EN BIT(18)
#define GXBB_WDT_CTRL_DIV_MASK (BIT(18) - 1)

@@ -45,6 +44,10 @@ struct meson_gxbb_wdt {
struct clk *clk;
};

+struct wdt_params {
+ u8 rst_shift;
+};
+
static int meson_gxbb_wdt_start(struct watchdog_device *wdt_dev)
{
struct meson_gxbb_wdt *data = watchdog_get_drvdata(wdt_dev);
@@ -140,8 +143,12 @@ static const struct dev_pm_ops meson_gxbb_wdt_pm_ops = {
SET_SYSTEM_SLEEP_PM_OPS(meson_gxbb_wdt_suspend, meson_gxbb_wdt_resume)
};

+static const struct wdt_params gxbb_params = {
+ .rst_shift = 21,
+};
+
static const struct of_device_id meson_gxbb_wdt_dt_ids[] = {
- { .compatible = "amlogic,meson-gxbb-wdt", },
+ { .compatible = "amlogic,meson-gxbb-wdt", .data = &gxbb_params, },
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, meson_gxbb_wdt_dt_ids);
@@ -150,6 +157,7 @@ static int meson_gxbb_wdt_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct meson_gxbb_wdt *data;
+ struct wdt_params *params;
u32 ctrl_reg;

data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
@@ -164,6 +172,8 @@ static int meson_gxbb_wdt_probe(struct platform_device *pdev)
if (IS_ERR(data->clk))
return PTR_ERR(data->clk);

+ params = (struct wdt_params *)of_device_get_match_data(dev);
+
platform_set_drvdata(pdev, data);

data->wdt_dev.parent = dev;
@@ -191,7 +201,7 @@ static int meson_gxbb_wdt_probe(struct platform_device *pdev)
/* Setup with 1ms timebase */
ctrl_reg |= ((clk_get_rate(data->clk) / 1000) &
GXBB_WDT_CTRL_DIV_MASK) |
- GXBB_WDT_CTRL_EE_RESET |
+ BIT(params->rst_shift) |
GXBB_WDT_CTRL_CLK_EN |
GXBB_WDT_CTRL_CLKDIV_EN;

--
2.37.1



2023-07-28 08:06:53

by Dmitry Rokosov

[permalink] [raw]
Subject: Re: [PATCH 2/4] watchdog: Add a new struct for Amlogic-GXBB driver

Hello Huqiang,

Thank you for the patch series!

Please include a cover letter in future patch submissions if possible.
It will help to better understand the theme of the patch series and
group all patch sets together in one email thread.

On Wed, Jul 26, 2023 at 07:21:44PM +0800, Huqiang Qin wrote:
> Add a new structure wdt_params to describe the watchdog difference
> of different chips.
>
> Signed-off-by: Huqiang Qin <[email protected]>
> ---
> drivers/watchdog/meson_gxbb_wdt.c | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/watchdog/meson_gxbb_wdt.c b/drivers/watchdog/meson_gxbb_wdt.c
> index 35d80cb39856..a6c0d743b607 100644
> --- a/drivers/watchdog/meson_gxbb_wdt.c
> +++ b/drivers/watchdog/meson_gxbb_wdt.c
> @@ -22,7 +22,6 @@
>
> #define GXBB_WDT_CTRL_CLKDIV_EN BIT(25)
> #define GXBB_WDT_CTRL_CLK_EN BIT(24)
> -#define GXBB_WDT_CTRL_EE_RESET BIT(21)
> #define GXBB_WDT_CTRL_EN BIT(18)
> #define GXBB_WDT_CTRL_DIV_MASK (BIT(18) - 1)
>
> @@ -45,6 +44,10 @@ struct meson_gxbb_wdt {
> struct clk *clk;
> };
>
> +struct wdt_params {
> + u8 rst_shift;
> +};
> +
> static int meson_gxbb_wdt_start(struct watchdog_device *wdt_dev)
> {
> struct meson_gxbb_wdt *data = watchdog_get_drvdata(wdt_dev);
> @@ -140,8 +143,12 @@ static const struct dev_pm_ops meson_gxbb_wdt_pm_ops = {
> SET_SYSTEM_SLEEP_PM_OPS(meson_gxbb_wdt_suspend, meson_gxbb_wdt_resume)
> };
>
> +static const struct wdt_params gxbb_params = {
> + .rst_shift = 21,

Maybe it's better to declare rst with the BIT() macro already applied,
and use it in wdt_probe() as is. And name 'rst' without 'shift' is
looking more brief.

> +};
> +
> static const struct of_device_id meson_gxbb_wdt_dt_ids[] = {
> - { .compatible = "amlogic,meson-gxbb-wdt", },
> + { .compatible = "amlogic,meson-gxbb-wdt", .data = &gxbb_params, },
> { /* sentinel */ },
> };
> MODULE_DEVICE_TABLE(of, meson_gxbb_wdt_dt_ids);
> @@ -150,6 +157,7 @@ static int meson_gxbb_wdt_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct meson_gxbb_wdt *data;
> + struct wdt_params *params;
> u32 ctrl_reg;
>
> data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
> @@ -164,6 +172,8 @@ static int meson_gxbb_wdt_probe(struct platform_device *pdev)
> if (IS_ERR(data->clk))
> return PTR_ERR(data->clk);
>
> + params = (struct wdt_params *)of_device_get_match_data(dev);
> +
> platform_set_drvdata(pdev, data);
>
> data->wdt_dev.parent = dev;
> @@ -191,7 +201,7 @@ static int meson_gxbb_wdt_probe(struct platform_device *pdev)
> /* Setup with 1ms timebase */
> ctrl_reg |= ((clk_get_rate(data->clk) / 1000) &
> GXBB_WDT_CTRL_DIV_MASK) |
> - GXBB_WDT_CTRL_EE_RESET |
> + BIT(params->rst_shift) |
> GXBB_WDT_CTRL_CLK_EN |
> GXBB_WDT_CTRL_CLKDIV_EN;
>
> --
> 2.37.1
>
>
> _______________________________________________
> linux-amlogic mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-amlogic

--
Thank you,
Dmitry

2023-08-01 13:18:03

by Huqiang Qin

[permalink] [raw]
Subject: Re: [PATCH 2/4] watchdog: Add a new struct for Amlogic-GXBB driver

Hi Dmitry,

On 2023/7/28 15:15, Dmitry Rokosov wrote:
> [ EXTERNAL EMAIL ]
>
> Hello Huqiang,
>
> Thank you for the patch series!
>
> Please include a cover letter in future patch submissions if possible.
> It will help to better understand the theme of the patch series and
> group all patch sets together in one email thread.

Thank you for your suggestion. In fact, this patch series contains
a cover letter. It may be due to network reasons that it was not
sent to your mailbox correctly :)

...
>> static int meson_gxbb_wdt_start(struct watchdog_device *wdt_dev)
>> {
>> struct meson_gxbb_wdt *data = watchdog_get_drvdata(wdt_dev);
>> @@ -140,8 +143,12 @@ static const struct dev_pm_ops meson_gxbb_wdt_pm_ops = {
>> SET_SYSTEM_SLEEP_PM_OPS(meson_gxbb_wdt_suspend, meson_gxbb_wdt_resume)
>> };
>>
>> +static const struct wdt_params gxbb_params = {
>> + .rst_shift = 21,
>
> Maybe it's better to declare rst with the BIT() macro already applied,
> and use it in wdt_probe() as is. And name 'rst' without 'shift' is
> looking more brief.

Okay, I will change it in the next version.


Thanks

Best Regards,
Huqiang Qin

2023-08-02 08:44:22

by Dmitry Rokosov

[permalink] [raw]
Subject: Re: [PATCH 2/4] watchdog: Add a new struct for Amlogic-GXBB driver

On Tue, Aug 01, 2023 at 08:51:30PM +0800, Huqiang Qin wrote:
> Hi Dmitry,
>
> On 2023/7/28 15:15, Dmitry Rokosov wrote:
> > [ EXTERNAL EMAIL ]
> >
> > Hello Huqiang,
> >
> > Thank you for the patch series!
> >
> > Please include a cover letter in future patch submissions if possible.
> > It will help to better understand the theme of the patch series and
> > group all patch sets together in one email thread.
>
> Thank you for your suggestion. In fact, this patch series contains
> a cover letter. It may be due to network reasons that it was not
> sent to your mailbox correctly :)
>

Ah, sorry, you are right... Now I see your cover letter on the
lore.kernel.org... My mail server makes a magic...

> ...
> >> static int meson_gxbb_wdt_start(struct watchdog_device *wdt_dev)
> >> {
> >> struct meson_gxbb_wdt *data = watchdog_get_drvdata(wdt_dev);
> >> @@ -140,8 +143,12 @@ static const struct dev_pm_ops meson_gxbb_wdt_pm_ops = {
> >> SET_SYSTEM_SLEEP_PM_OPS(meson_gxbb_wdt_suspend, meson_gxbb_wdt_resume)
> >> };
> >>
> >> +static const struct wdt_params gxbb_params = {
> >> + .rst_shift = 21,
> >
> > Maybe it's better to declare rst with the BIT() macro already applied,
> > and use it in wdt_probe() as is. And name 'rst' without 'shift' is
> > looking more brief.
>
> Okay, I will change it in the next version.
>
>
> Thanks
>
> Best Regards,
> Huqiang Qin

--
Thank you,
Dmitry