From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from flow-b8-smtp.messagingengine.com (flow-b8-smtp.messagingengine.com [202.12.124.143]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A11B41167E for ; Wed, 12 Aug 2026 09:42:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.143 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786527747; cv=none; b=sjC7Vf/wP6o5k5fq72pKf9wRySWNMb2ibNhlsGX3kppJhOozreooFgeiz24joVVX3i4VYzG3OtL4MoJnAAUjaMZ51ICWjGsWi6KGmtWQz4NiEQ1x1TNzbFcX2MWuqdHQCalafPeRsr5A7ikzan5om72pk47CJwuz0esbXZ/QJys= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786527747; c=relaxed/simple; bh=MOAl+6wW7KPWYXjQOBWfhd8nNouh77QqKrD9SZCDtqY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W5FNDi+UBhbfLhR4FX6dzxheYYXCZM22FQFdkDRgQcI95g4Jq1lHS0T+fbCXK0Sq69IzHWQf4jGbKngOTI1RkgzCBzHEWE8S/vUGCFv2WYNrspJ0bpWSpul2Y7ZBE6F4XQcEFfD07eOuEAbe9MuZqNpA5mkbe8RL41PuYrydzvg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gahingwoo.com; spf=pass smtp.mailfrom=gahingwoo.com; dkim=pass (2048-bit key) header.d=gahingwoo.com header.i=@gahingwoo.com header.b=jKYU88/1; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Hd3njpte; arc=none smtp.client-ip=202.12.124.143 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gahingwoo.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gahingwoo.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gahingwoo.com header.i=@gahingwoo.com header.b="jKYU88/1"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Hd3njpte" Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailflow.stl.internal (Postfix) with ESMTP id 6FC1D13000EE; Wed, 12 Aug 2026 05:42:24 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Wed, 12 Aug 2026 05:42:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gahingwoo.com; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1786527744; x= 1786531344; bh=t5ehuwu+R3IZPenGVdecVG/3J4bVeduLS34R82/gLXE=; b=j KYU88/1HQB38tEHGPcOZxSZI/xIdBKKz7rItHffOfva9EdpFTK4RSWN+1vwCvp5T NAkfq4z9H3NUgK6c+Qyv2bc4wgOJfynN7qjvq+ymekbzbqB3Sd6Z/p71pTsLDgUF eH7fseMYlgx3QcUcemyB2y3chb+YBJxbnDrtwN+PqhG7X7sNTXit1Qla4/fpHrZN VLrnHb/40wUzvfXWd2qAchF8vcAz65cCm/+KfuC2moieBcqRdr4qmBjcKF86oko7 KjROGHFlxUn0zl7S0EUOoi120xb3XYLDwTxI8e+Mp0AGmlw25DQ85z/SSa6O/e9V BrkhuNOKslGZZrlz7eJmg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1786527744; x=1786531344; bh=t 5ehuwu+R3IZPenGVdecVG/3J4bVeduLS34R82/gLXE=; b=Hd3njptejXd1e1zIU mWb5J3QCaxUQwCyti8aXcW7qCJjZuj1tTfV6z7WApmoSap84s6z2zVcDcome1P0o wcKvmJA5yZP/JDwN8U67G3T/psIHsFn4eJJffW3Vp7lDOqvXY+6BGqu2YRuwqRi2 +1ert89lDoIEB3y9dmfajxbhW0C5d0QpyTN+Zf2C42isYV4ZYCY5r1Xm9jUkq67u PskCw29fSn1DICEviDGC4tJSZ1Ox6B9C3ewpYrV/ytOUZs2UyDFiZAYRVJP14yvF HEVc/YUB29L8GEdkP31UUQ0YK3WgVP7sb629rFYtZQu3Y+OKQzJoHjCfx9Xvz6Vh Xln8w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGwgEiQ82b/vslvxu748yQUK6wPursKF8fMIVbz67wiFGHgA47PKoO/uGXMsZMxLx gFPIgLOcY7P5CngkkiK3BYsM+NSvuArVGUEmY/S//Od5HX6j19/B4vsjpf5HveubJ3pf// pWCcY4ceqdx0GtHj0WCQ0o6J65xdr5brIk0MpFgwd1OnJb0OJtZbfDBehL90KckpJx/ici /427xioY7E6zKhb2nnVrNb5/eVe38u0ELJVPMEpl79CB4mXXIS+TOXwQ2vG5Pe68Rd3XXD xmR8fAtcy04eoj5dkZNb571/YdUoGmvjFo0tW/6wl1YthjyIcmyfW3v1C+VPOybfcM4wDu /FpDxAXbbfECzEXrxC0iSVGXGLdN2ejFzFEYHu13ZdLzrEMHd3VYdvZ/Y1IaOHzN8Xo8h+ XqirhsQgGOv/203VZQXUdeJ0RJ3kHrEjaNOt7etJMSG5yf2X81nPo7aPw3PqfFG4W5AKK5 BJD88GMjZF5mOGYU89FPCwExFIvdlLX1Y/M/CddXG8UoTWA8c6cLnP4wados4DZAu6Krp7 U1fyQZQzlVsslfIUV007mMHP9XN1KQ8ZYnEdOvQe/IRwsgRa3Tys2yQdhpwBCjbZKoW3df 0ysHur7hldRJnBMlMbToA+lGqA5aCrTM+3fYH6Lowpe3Q3gsdU81NIDUNWDQ X-ME-Proxy: Feedback-ID: i7a5e4b5f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 12 Aug 2026 05:42:16 -0400 (EDT) From: Jiaxing Hu To: tomeu@tomeuvizoso.net, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, ulfh@kernel.org, p.zabel@pengutronix.de, ogabbay@kernel.org, zhangqing@rock-chips.com Cc: royalnet026@gmail.com, alchark@flipper.net, chaoyi.chen@rock-chips.com, diederik@cknow-tech.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, iommu@lists.linux.dev, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jiaxing Hu Subject: [PATCH v7 06/10] pmdomain/rockchip: cycle optional power-domain resets on power-on Date: Wed, 12 Aug 2026 21:41:01 +1200 Message-ID: <20260812094106.1391698-7-gahing@gahingwoo.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812094106.1391698-1-gahing@gahingwoo.com> References: <20260812094106.1391698-1-gahing@gahingwoo.com> Precedence: bulk X-Mailing-List: iommu@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Some Rockchip domains come out of power-on with their bus interface in an undefined state. On the RK3576 NPU this shows up as a hang on the first register access after the domain is switched on, and pulsing the domain's resets at this point clears it. Take the domain node's resets if it has any, and pulse them between releasing idle and restoring QoS. The resets are optional, so domains that do not list any are unaffected. Signed-off-by: Jiaxing Hu --- drivers/pmdomain/rockchip/pm-domains.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c index e1857f878..4eebb5d99 100644 --- a/drivers/pmdomain/rockchip/pm-domains.c +++ b/drivers/pmdomain/rockchip/pm-domains.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -103,6 +104,7 @@ struct rockchip_pm_domain { struct clk_bulk_data *clks; struct device_node *node; struct regulator *supply; + struct reset_control *resets; }; struct rockchip_pmu { @@ -688,6 +690,13 @@ static int rockchip_pd_power(struct rockchip_pm_domain *pd, bool power_on) if (pd->info->delay_us) udelay(pd->info->delay_us); + /* Optional: some domains need their resets cycled after power-on. */ + if (pd->resets) { + reset_control_assert(pd->resets); + udelay(10); + reset_control_deassert(pd->resets); + } + rockchip_pmu_restore_qos(pd); } @@ -857,6 +866,14 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu, if (error) goto err_put_clocks; + pd->resets = of_reset_control_array_get_optional_exclusive(node); + if (IS_ERR(pd->resets)) { + error = dev_err_probe(pmu->dev, PTR_ERR(pd->resets), + "%pOFn: failed to get resets\n", node); + pd->resets = NULL; + goto err_unprepare_clocks; + } + pd->num_qos = of_count_phandle_with_args(node, "pm_qos", NULL); @@ -927,6 +944,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu, clk_bulk_unprepare(pd->num_clks, pd->clks); err_put_clocks: clk_bulk_put(pd->num_clks, pd->clks); + reset_control_put(pd->resets); return error; } @@ -945,6 +963,7 @@ static void rockchip_pm_remove_one_domain(struct rockchip_pm_domain *pd) clk_bulk_unprepare(pd->num_clks, pd->clks); clk_bulk_put(pd->num_clks, pd->clks); + reset_control_put(pd->resets); /* protect the zeroing of pm->num_clks */ mutex_lock(&pd->pmu->mutex); -- 2.43.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id D355BC5CFEE for ; Wed, 12 Aug 2026 09:42:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=8/yD2T87IBZwhMlIATjEKhMUgbg2LuRy4HgPDFwA28c=; b=Jr2evAfhrafeeX Gl4UCEqDuWdbc8is2zVV+btDVRiVVWSTz2KmCKSHpwazWTgqU4hByam4IdJcAamcd4JOazRUhGksm FmTZTeOGKed4ltztf/OD1rhymW4Zpz0avjm6H79HngdFioThbDxRnmfKF1ocaQqw68VSM2ebk14+l w36PeMOWS1IHKBqNj8UsuwwdLv51Ry61unHFWF/jrsawLCDokIFsd61DXoBBc23HzesTDZxayFTg2 ntw70UTgOQe0DVkZJyM0zJrNs7FoyAGyp/xYYf5jVs2nZtGfkUGyD7UdlU+lkeAYoZhcgYrSZabq7 YnyLbruN+cOPGlB5oDqw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wu5Tj-0000000FmwD-1xFm; Wed, 12 Aug 2026 09:42:34 +0000 Received: from flow-b8-smtp.messagingengine.com ([202.12.124.143]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wu5Td-0000000FmrJ-2r5Y; Wed, 12 Aug 2026 09:42:29 +0000 Received: from phl-compute-12.internal (phl-compute-12.internal [10.202.2.52]) by mailflow.stl.internal (Postfix) with ESMTP id 6FC1D13000EE; Wed, 12 Aug 2026 05:42:24 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-12.internal (MEProxy); Wed, 12 Aug 2026 05:42:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gahingwoo.com; h=cc:cc:content-transfer-encoding:content-type:date:date:from :from:in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm1; t=1786527744; x= 1786531344; bh=t5ehuwu+R3IZPenGVdecVG/3J4bVeduLS34R82/gLXE=; b=j KYU88/1HQB38tEHGPcOZxSZI/xIdBKKz7rItHffOfva9EdpFTK4RSWN+1vwCvp5T NAkfq4z9H3NUgK6c+Qyv2bc4wgOJfynN7qjvq+ymekbzbqB3Sd6Z/p71pTsLDgUF eH7fseMYlgx3QcUcemyB2y3chb+YBJxbnDrtwN+PqhG7X7sNTXit1Qla4/fpHrZN VLrnHb/40wUzvfXWd2qAchF8vcAz65cCm/+KfuC2moieBcqRdr4qmBjcKF86oko7 KjROGHFlxUn0zl7S0EUOoi120xb3XYLDwTxI8e+Mp0AGmlw25DQ85z/SSa6O/e9V BrkhuNOKslGZZrlz7eJmg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1786527744; x=1786531344; bh=t 5ehuwu+R3IZPenGVdecVG/3J4bVeduLS34R82/gLXE=; b=Hd3njptejXd1e1zIU mWb5J3QCaxUQwCyti8aXcW7qCJjZuj1tTfV6z7WApmoSap84s6z2zVcDcome1P0o wcKvmJA5yZP/JDwN8U67G3T/psIHsFn4eJJffW3Vp7lDOqvXY+6BGqu2YRuwqRi2 +1ert89lDoIEB3y9dmfajxbhW0C5d0QpyTN+Zf2C42isYV4ZYCY5r1Xm9jUkq67u PskCw29fSn1DICEviDGC4tJSZ1Ox6B9C3ewpYrV/ytOUZs2UyDFiZAYRVJP14yvF HEVc/YUB29L8GEdkP31UUQ0YK3WgVP7sb629rFYtZQu3Y+OKQzJoHjCfx9Xvz6Vh Xln8w== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTGwgEiQ82b/vslvxu748yQUK6wPursKF8fMIVbz67wiFGHgA47PKoO/uGXMsZMxLx gFPIgLOcY7P5CngkkiK3BYsM+NSvuArVGUEmY/S//Od5HX6j19/B4vsjpf5HveubJ3pf// pWCcY4ceqdx0GtHj0WCQ0o6J65xdr5brIk0MpFgwd1OnJb0OJtZbfDBehL90KckpJx/ici /427xioY7E6zKhb2nnVrNb5/eVe38u0ELJVPMEpl79CB4mXXIS+TOXwQ2vG5Pe68Rd3XXD xmR8fAtcy04eoj5dkZNb571/YdUoGmvjFo0tW/6wl1YthjyIcmyfW3v1C+VPOybfcM4wDu /FpDxAXbbfECzEXrxC0iSVGXGLdN2ejFzFEYHu13ZdLzrEMHd3VYdvZ/Y1IaOHzN8Xo8h+ XqirhsQgGOv/203VZQXUdeJ0RJ3kHrEjaNOt7etJMSG5yf2X81nPo7aPw3PqfFG4W5AKK5 BJD88GMjZF5mOGYU89FPCwExFIvdlLX1Y/M/CddXG8UoTWA8c6cLnP4wados4DZAu6Krp7 U1fyQZQzlVsslfIUV007mMHP9XN1KQ8ZYnEdOvQe/IRwsgRa3Tys2yQdhpwBCjbZKoW3df 0ysHur7hldRJnBMlMbToA+lGqA5aCrTM+3fYH6Lowpe3Q3gsdU81NIDUNWDQ X-ME-Proxy: Feedback-ID: i7a5e4b5f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 12 Aug 2026 05:42:16 -0400 (EDT) From: Jiaxing Hu To: tomeu@tomeuvizoso.net, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, ulfh@kernel.org, p.zabel@pengutronix.de, ogabbay@kernel.org, zhangqing@rock-chips.com Cc: royalnet026@gmail.com, alchark@flipper.net, chaoyi.chen@rock-chips.com, diederik@cknow-tech.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, iommu@lists.linux.dev, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Jiaxing Hu Subject: [PATCH v7 06/10] pmdomain/rockchip: cycle optional power-domain resets on power-on Date: Wed, 12 Aug 2026 21:41:01 +1200 Message-ID: <20260812094106.1391698-7-gahing@gahingwoo.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260812094106.1391698-1-gahing@gahingwoo.com> References: <20260812094106.1391698-1-gahing@gahingwoo.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260812_024227_408416_AB4B060D X-CRM114-Status: GOOD ( 13.68 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org Some Rockchip domains come out of power-on with their bus interface in an undefined state. On the RK3576 NPU this shows up as a hang on the first register access after the domain is switched on, and pulsing the domain's resets at this point clears it. Take the domain node's resets if it has any, and pulse them between releasing idle and restoring QoS. The resets are optional, so domains that do not list any are unaffected. Signed-off-by: Jiaxing Hu --- drivers/pmdomain/rockchip/pm-domains.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/pmdomain/rockchip/pm-domains.c b/drivers/pmdomain/rockchip/pm-domains.c index e1857f878..4eebb5d99 100644 --- a/drivers/pmdomain/rockchip/pm-domains.c +++ b/drivers/pmdomain/rockchip/pm-domains.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -103,6 +104,7 @@ struct rockchip_pm_domain { struct clk_bulk_data *clks; struct device_node *node; struct regulator *supply; + struct reset_control *resets; }; struct rockchip_pmu { @@ -688,6 +690,13 @@ static int rockchip_pd_power(struct rockchip_pm_domain *pd, bool power_on) if (pd->info->delay_us) udelay(pd->info->delay_us); + /* Optional: some domains need their resets cycled after power-on. */ + if (pd->resets) { + reset_control_assert(pd->resets); + udelay(10); + reset_control_deassert(pd->resets); + } + rockchip_pmu_restore_qos(pd); } @@ -857,6 +866,14 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu, if (error) goto err_put_clocks; + pd->resets = of_reset_control_array_get_optional_exclusive(node); + if (IS_ERR(pd->resets)) { + error = dev_err_probe(pmu->dev, PTR_ERR(pd->resets), + "%pOFn: failed to get resets\n", node); + pd->resets = NULL; + goto err_unprepare_clocks; + } + pd->num_qos = of_count_phandle_with_args(node, "pm_qos", NULL); @@ -927,6 +944,7 @@ static int rockchip_pm_add_one_domain(struct rockchip_pmu *pmu, clk_bulk_unprepare(pd->num_clks, pd->clks); err_put_clocks: clk_bulk_put(pd->num_clks, pd->clks); + reset_control_put(pd->resets); return error; } @@ -945,6 +963,7 @@ static void rockchip_pm_remove_one_domain(struct rockchip_pm_domain *pd) clk_bulk_unprepare(pd->num_clks, pd->clks); clk_bulk_put(pd->num_clks, pd->clks); + reset_control_put(pd->resets); /* protect the zeroing of pm->num_clks */ mutex_lock(&pd->pmu->mutex); -- 2.43.0 _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip