All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Jingbao Qiu <qiujingbao.dlmu@gmail.com>,
	a.zummo@towertech.it, alexandre.belloni@bootlin.com,
	krzysztof.kozlowski+dt@linaro.org, chao.wei@sophgo.com,
	unicorn_wang@outlook.com, conor+dt@kernel.org,
	robh+dt@kernel.org, conor@kernel.org, paul.walmsley@sifive.com,
	palmer@dabbelt.com, aou@eecs.berkeley.edu
Cc: linux-rtc@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] rtc: add rtc controller support for Sophgo CV1800B SoC
Date: Tue, 21 Nov 2023 11:01:54 +0100	[thread overview]
Message-ID: <09b29f1f-a42b-49f7-afca-f82357acd4c8@linaro.org> (raw)
In-Reply-To: <20231121094642.2973795-3-qiujingbao.dlmu@gmail.com>

On 21/11/2023 10:46, Jingbao Qiu wrote:
> Implement the RTC driver for CV1800B, which able to provide time and
> alarm functionality.
> 
> Signed-off-by: Jingbao Qiu <qiujingbao.dlmu@gmail.com>
> ---
>  drivers/rtc/Kconfig       |  10 ++
>  drivers/rtc/Makefile      |   1 +
>  drivers/rtc/rtc-cv1800b.c | 293 ++++++++++++++++++++++++++++++++++++++
>  3 files changed, 304 insertions(+)
>  create mode 100644 drivers/rtc/rtc-cv1800b.c

Bindings were not tested, so I assume you did not compile the code
either. Please confirm that you fixed all warnings pointed out by W=1
builds, smatch and sparse. All of them.

> 
> diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> index 3814e0845e77..2089cceea38c 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -1103,6 +1103,16 @@ config RTC_DRV_DS2404
>  	  This driver can also be built as a module. If so, the module
>  	  will be called rtc-ds2404.
>  
> +config RTC_DRV_CV1800B
> +	tristate "Sophgo CV1800B RTC"
> +	depends on ARCH_SOPHGO || COMPILE_TEST
> +	help
> +	  If you say yes here you will get support for the
> +	  RTC of the Sophgo CV1800B SOC.
> +
> +	  This depend on ARCH_SOPHGO and COMPILE_TEST. Please
> +	  first config that.

...

> +static int cv1800b_rtc_probe(struct platform_device *pdev)
> +{
> +	struct cv1800b_rtc_priv *rtc;
> +	struct resource *res;
> +	int ret;
> +
> +	rtc = devm_kzalloc(&pdev->dev, sizeof(*rtc), GFP_KERNEL);
> +	if (!rtc)
> +		return -ENOMEM;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	if (!res) {
> +		ret = -ENODEV;
> +		goto err;
> +	}
> +
> +	rtc->core_map = devm_ioremap_resource(&pdev->dev, res);

Use helper combining these two calls.

> +	if (IS_ERR(rtc->core_map)) {
> +		ret = PTR_ERR(rtc->core_map);
> +		goto err;
> +	}
> +
> +	rtc->irq = platform_get_irq(pdev, 0);
> +	platform_set_drvdata(pdev, rtc);

Your code has random order. First you get IRQ, then you check its value,
then you go further.

> +	if (rtc->irq < 0) {
> +		ret = -EINVAL;
> +		goto err;
> +	}
> +
> +	ret =
> +	    devm_request_irq(&pdev->dev, rtc->irq, cv1800b_rtc_irq_handler,

Wrong wrapping.

> +			     IRQF_SHARED, "rtc alarm", &pdev->dev);

Why shared?

> +	if (ret)
> +		goto err;
> +
> +	rtc->clk = devm_clk_get(&pdev->dev, NULL);
> +	if (IS_ERR(rtc->clk)) {
> +		dev_err(&pdev->dev, "no clock");

This code is not ready for upstream. There are multiple things wrong here.

First, syntax is return dev_err_probe.

Second, you do not have clocks and you do not allow them! Just open your
binding.

Third, use wrapper - devm_clk_get_enable or something like that.


> +		ret = PTR_ERR(rtc->clk);
> +		goto err;
> +	}

Blank line.

> +	ret = clk_prepare_enable(rtc->clk);
> +	if (ret)
> +		goto err;

Blank line.

> +	ret = cv1800b_rtc_softinit(rtc);
> +	if (ret)
> +		goto err;
> +	cv1800b_rtc_alarm_irq_enable(&pdev->dev, 1);
> +	rtc->rtc_dev = devm_rtc_allocate_device(&pdev->dev);
> +	if (IS_ERR(rtc->rtc_dev)) {
> +		ret = PTR_ERR(rtc->rtc_dev);
> +		goto err;
> +	}
> +	rtc->rtc_dev->range_max = U32_MAX;
> +	rtc->rtc_dev->ops = &cv800b_rtc_ops;
> +
> +	return rtc_register_device(rtc->rtc_dev);
> +err:
> +	return dev_err_probe(&pdev->dev, ret, "Failed to init cv1800b rtc\n");

Drop, just return.

Best regards,
Krzysztof


  reply	other threads:[~2023-11-21 10:02 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-21  9:46 [PATCH 0/3] riscv: sophgo: add rtc support for CV1800B Jingbao Qiu
2023-11-21  9:46 ` [PATCH 1/3] dt-bindings: rtc: add binding for Sophgo CV1800B rtc controller Jingbao Qiu
2023-11-21  9:57   ` Krzysztof Kozlowski
2023-11-28 13:20     ` jingbao qiu
2023-11-21 10:37   ` Rob Herring
2023-11-21  9:46 ` [PATCH 2/3] rtc: add rtc controller support for Sophgo CV1800B SoC Jingbao Qiu
2023-11-21 10:01   ` Krzysztof Kozlowski [this message]
2023-11-28 13:22     ` jingbao qiu
2023-11-28 13:59       ` Krzysztof Kozlowski
2023-11-28 14:34         ` jingbao qiu
2023-11-28 23:01       ` Alexandre Belloni
2023-11-21 17:58   ` kernel test robot
2023-11-21 22:52   ` kernel test robot
2023-11-21  9:46 ` [PATCH 3/3] riscv: dts: sophgo: add rtc dt node for CV1800B Jingbao Qiu
2023-11-21 10:00   ` Krzysztof Kozlowski
2023-11-28 13:23     ` jingbao qiu

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=09b29f1f-a42b-49f7-afca-f82357acd4c8@linaro.org \
    --to=krzysztof.kozlowski@linaro.org \
    --cc=a.zummo@towertech.it \
    --cc=alexandre.belloni@bootlin.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=chao.wei@sophgo.com \
    --cc=conor+dt@kernel.org \
    --cc=conor@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rtc@vger.kernel.org \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=qiujingbao.dlmu@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=unicorn_wang@outlook.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.