From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5DB333559F7 for ; Tue, 18 Nov 2025 14:13:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763475188; cv=none; b=cnDp4cSryC24+LzfiAMR0B89SlVrJLhySoU8fixkCfbni3rbuGVF2n5bkUtNgFMk1dsJfS9OK8sJfqToYf1tPnqUghCYpNLBq1zstgkSZ8IvQvpt9Qch0elAfrKNiRPug8dz5ptpAxrRQml4lUC6zURsKPoM6vwJNxkYHa5HlXI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763475188; c=relaxed/simple; bh=k9WCGs3RXK6VKNtnPXO/KV9w24oXtIlKbzxstZNqvCM=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=WbYBvGanoI+qhn132qWkrIp+No1Ka4fGc9EmzyM/vwqTdxWjfrS0y4f7de+5y/IYwVHfx2VQwcaybi+IFhl1hWp3TpuNWPDoXUyBQ+Vna9oqAmwwqw/8elK6EabnyFe7MBx2tNIFrmqATt1DSITbKS9bnU98PETye+uq3wY+nvw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev; spf=pass smtp.mailfrom=tuxon.dev; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b=hQ/fxQdS; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tuxon.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tuxon.dev header.i=@tuxon.dev header.b="hQ/fxQdS" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-4775638d819so32189005e9.1 for ; Tue, 18 Nov 2025 06:13:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tuxon.dev; s=google; t=1763475184; x=1764079984; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=lBMakZKxlIHy16Fs9qouAWNB0LpiDg2sSV52gGOgZkc=; b=hQ/fxQdSYv+k8Rut+6R8kqDzLUQYadyb5jc58qpV5afsZqut5sY2hfRu8WBxh5Oaci o3XLcBLUB0Bb73QT7T+YHSuRRyOGQT7Bob//JsnHS67v+cm9W9wT/Jyz8mexDCwGFKvz HCvd4H7eO6+unJXhGnyo3Wj+QzObkn1h1heJoevJE1GpfNdx8hb1m80HUp1+uUX0s9TL gGX4nNWZTrDiKIH2C7LxmlWk3trSQ22VLesxVbKX40UoCnxJAdMbHpc3o57yED7fzjy2 VKsffATmfU/yL0FX64Vs+6KYpgIn6eXetjiVlvoYKjUAA3MuDYMqJAuKxWahlO3oCjHf OtQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763475184; x=1764079984; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lBMakZKxlIHy16Fs9qouAWNB0LpiDg2sSV52gGOgZkc=; b=TRcgNpxxDjQQQCIRWB2o9UfaMPEO53ZK0pZuHilxe6O918pzW+GYXC+nhwBZoMEQE5 s7D0O0/P+6keSr9X13UDnMU1VtL9ZGcjQ7reg57ND708VksHGKk8+G616Azlfa6BzPBf XYBOSrSxgsWls2avI7sdOsHiZN8ryFZsdFDc7MEgvIN3WNOoAbshwvPIY4uBnlRG96LE uD0J8lSZYXglAjeNQWbJfuJiyCWIO+Kv3y81X/vSLCIrClNX5I7qAjj8pa9j7dJptH+h UsfyPDs0C9de7b9m6dIXhNVMgplmNyjhf5XS3JsYiJP2lhtm/2tyk5SOvc38tecUDbBb YPyQ== X-Forwarded-Encrypted: i=1; AJvYcCUj/sS7FMsdT5Z7vlrlpfx8ACalhgUs+0plg88nWqb5w3O+EjytCyqmIfMDcDfF8WGIrxNf5cmXcAI0OHM=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1Arcdhmp9w607aAozkH1A3PN1FVJf/AlqID19hDAzoWxnk+4i oqGFjn7ixoQUAvZsOpvYi5iwOP3xu4OaQFYNYk8yZjijjBqXq0+LVxPr76uafgOSFiQ= X-Gm-Gg: ASbGncvobWkfBu1TGZPXNIO6nTyqiagZ5MCrAr6znzblLYznE/tuLZbh21dWAd2Z+4f UKKFpjMJS/lA7EIX+PUWOTzSLriQqn9gt9gTF4G5Br/RUC6nCqGt2zE4W4JPlC97ydnQyuz1qPX ZuznTx2zPPx+yA6WvTK7N+xgMg9vYALCmFKhSMbg1SYgEovhFgaoqdJkPV6T3RX6k+gjxb+JQGc rUW99c0jSO4+hCFv7qW/9QMX2IM5nR2Ral/ItuSQZkoxzCxJv1SJ+QhplwajBlQAlj60e19N4sy QNpj26JxKbjCGwmyhPs73qJrpnVm5jTRxM+kG6dz64Cw690LQjBbCIJvc5SrH/XLzL9971ov/jq MzjFA6nQ6+pUnn1qcOOxTi+eTsddWzpnxZVzE0wYTcZwwxpy4gYjDHy5fcTX9MsjbPoQY66F8gx xUr3h/Mq5dVHVQR7Ys4jtiUJX1Nns2jQ== X-Google-Smtp-Source: AGHT+IFyqJfzakIXR+t0AgFWjrDkLx25IQZZUyzHUFHHX3vPDAz5QlMs2PDokF29MSSQ/p28MKoXCA== X-Received: by 2002:a05:600c:3b0c:b0:477:7d94:5d0e with SMTP id 5b1f17b1804b1-4778feb18abmr150205545e9.27.1763475184383; Tue, 18 Nov 2025 06:13:04 -0800 (PST) Received: from [192.168.50.4] ([82.78.167.134]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-477a0f4ff42sm130392035e9.12.2025.11.18.06.13.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 18 Nov 2025 06:13:03 -0800 (PST) Message-ID: <047df95e-b1b6-4e7b-89f7-d7cb69559a49@tuxon.dev> Date: Tue, 18 Nov 2025 16:13:02 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] phy: renesas: rcar-gen3-usb2: Add suspend/resume support To: Neil Armstrong , yoshihiro.shimoda.uh@renesas.com, vkoul@kernel.org, kishon@kernel.org, geert+renesas@glider.be, magnus.damm@gmail.com, p.zabel@pengutronix.de Cc: linux-renesas-soc@vger.kernel.org, linux-phy@lists.infradead.org, linux-kernel@vger.kernel.org, Claudiu Beznea References: <20251106144148.3051962-1-claudiu.beznea.uj@bp.renesas.com> <4d486bd8-9e87-4bf2-a96f-38aa0f701c45@linaro.org> From: Claudiu Beznea Content-Language: en-US In-Reply-To: <4d486bd8-9e87-4bf2-a96f-38aa0f701c45@linaro.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hi, Neil, On 11/18/25 15:54, Neil Armstrong wrote: > On 11/6/25 15:41, Claudiu wrote: >> From: Claudiu Beznea >> >> The Renesas RZ/G3S supports a power saving mode where power to most of the >> SoC components is turned off. The USB PHY is among these components. >> Because of this the settings applied in driver probe need to be executed >> also on resume path. On suspend path only reset signal need to be asserted. >> Add suspend/resume support. >> >> Signed-off-by: Claudiu Beznea >> --- >> >> This patch is built on top of patches 1/7, 2/7 at [1] >> >> [1] https://lore.kernel.org/all/20251023135810.1688415-2- >> claudiu.beznea.uj@bp.renesas.com >> >>   drivers/phy/renesas/phy-rcar-gen3-usb2.c | 66 +++++++++++++++++------- >>   1 file changed, 47 insertions(+), 19 deletions(-) >> >> diff --git a/drivers/phy/renesas/phy-rcar-gen3-usb2.c b/drivers/phy/ >> renesas/phy-rcar-gen3-usb2.c >> index a38ead7c8055..3c063e4dea41 100644 >> --- a/drivers/phy/renesas/phy-rcar-gen3-usb2.c >> +++ b/drivers/phy/renesas/phy-rcar-gen3-usb2.c >> @@ -132,6 +132,7 @@ struct rcar_gen3_chan { >>       struct device *dev;    /* platform_device's device */ >>       const struct rcar_gen3_phy_drv_data *phy_data; >>       struct extcon_dev *extcon; >> +    struct reset_control *rstc; >>       struct rcar_gen3_phy rphys[NUM_OF_PHYS]; >>       struct regulator *vbus; >>       struct work_struct work; >> @@ -778,35 +779,24 @@ static void rcar_gen3_reset_assert(void *data) >>   static int rcar_gen3_phy_usb2_init_bus(struct rcar_gen3_chan *channel) >>   { >>       struct device *dev = channel->dev; >> -    struct reset_control *rstc; >>       int ret; >>       u32 val; >>   -    rstc = devm_reset_control_array_get_shared(dev); >> -    if (IS_ERR(rstc)) >> -        return PTR_ERR(rstc); >> +    if (!channel->phy_data->init_bus) >> +        return 0; >>         ret = pm_runtime_resume_and_get(dev); >>       if (ret) >>           return ret; >>   -    ret = reset_control_deassert(rstc); >> -    if (ret) >> -        goto rpm_put; >> - >> -    ret = devm_add_action_or_reset(dev, rcar_gen3_reset_assert, rstc); >> -    if (ret) >> -        goto rpm_put; >> - >>       val = readl(channel->base + USB2_AHB_BUS_CTR); >>       val &= ~USB2_AHB_BUS_CTR_MBL_MASK; >>       val |= USB2_AHB_BUS_CTR_MBL_INCR4; >>       writel(val, channel->base + USB2_AHB_BUS_CTR); >>   -rpm_put: >>       pm_runtime_put(dev); >>   -    return ret; >> +    return 0; >>   } >>     static int rcar_gen3_phy_usb2_probe(struct platform_device *pdev) >> @@ -846,6 +836,18 @@ static int rcar_gen3_phy_usb2_probe(struct >> platform_device *pdev) >>           } >>       } >>   +    channel->rstc = devm_reset_control_array_get_optional_shared(dev); >> +    if (IS_ERR(channel->rstc)) >> +        return PTR_ERR(channel->rstc); >> + >> +    ret = reset_control_deassert(channel->rstc); >> +    if (ret) >> +        return ret; >> + >> +    ret = devm_add_action_or_reset(dev, rcar_gen3_reset_assert, channel- >> >rstc); >> +    if (ret) >> +        return ret; >> + >>       /* >>        * devm_phy_create() will call pm_runtime_enable(&phy->dev); >>        * And then, phy-core will manage runtime pm for this device. >> @@ -861,11 +863,9 @@ static int rcar_gen3_phy_usb2_probe(struct >> platform_device *pdev) >>       platform_set_drvdata(pdev, channel); >>       channel->dev = dev; >>   -    if (channel->phy_data->init_bus) { >> -        ret = rcar_gen3_phy_usb2_init_bus(channel); >> -        if (ret) >> -            goto error; >> -    } > > I don't see why you changed the logic of calling > rcar_gen3_phy_usb2_init_bus(), > moving the reset setup and handling should be enough, no ? > Sorry, I missed to mention it. I did it like this just to avoid this pattern: if (channel->phy_data->init_bus) { ret = rcar_gen3_phy_usb2_init_bus(channel); if (ret) return ret; } in both probe and resume path. The channel->phy_data->init_bus check is not embedded in rcar_gen3_phy_usb2_init_bus(). Please let me know if you want me to revert it. Thank you, Claudiu