Re: [PATCH net 2/2] net: ravb: Check that GTI loading request is done

From: Sergey Shtylyov
Date: Thu Dec 14 2023 - 15:22:42 EST


On 12/14/23 2:31 PM, Claudiu wrote:

> From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
>
> Hardware manual specifies the following for GCCR.LTI bit:
> 0: Setting completed
> 1: When written: Issue a configuration request.
> When read: Completion of settings is pending
>
> Thus, check the completion status when setting 1 to GCCR.LTI.

But do we really need to? Seems quite dubious... currently we
just let it the loading complete asynchronously...

> Fixes: 7e09a052dc4e ("ravb: Exclude gPTP feature support for RZ/G2L")
> Fixes: 568b3ce7a8ef ("ravb: factor out register bit twiddling code")
> Fixes: 0184165b2f42 ("ravb: add sleep PM suspend/resume support")
> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx>
> ---
> drivers/net/ethernet/renesas/ravb_main.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
> index ce95eb5af354..1c253403a297 100644
> --- a/drivers/net/ethernet/renesas/ravb_main.c
> +++ b/drivers/net/ethernet/renesas/ravb_main.c
> @@ -2819,6 +2819,10 @@ static int ravb_probe(struct platform_device *pdev)
>
> /* Request GTI loading */
> ravb_modify(ndev, GCCR, GCCR_LTI, GCCR_LTI);
> + /* Check completion status. */
> + error = ravb_wait(ndev, GCCR, GCCR_LTI, 0);
> + if (error)
> + goto out_disable_refclk;
> }
>
> if (info->internal_delay) {
> @@ -3041,6 +3045,10 @@ static int __maybe_unused ravb_resume(struct device *dev)
>
> /* Request GTI loading */
> ravb_modify(ndev, GCCR, GCCR_LTI, GCCR_LTI);
> + /* Check completion status. */
> + ret = ravb_wait(ndev, GCCR, GCCR_LTI, 0);
> + if (ret)
> + return ret;
> }
>
> if (info->internal_delay)
>

BTW, seems worth factoring out into a separate function...

MBR, Sergey