From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.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 A80DF47ECD4 for ; Thu, 4 Jun 2026 13:52:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581181; cv=none; b=WAnU36zIZQY9GuTNYzbBilcydOzFmCI+9i7GCrxH+QIikFgNZ8MX0yzCet8ue3KdexhjuNgNHu6i8TeNJooRhVXywtxriNxdZXQ6Rh1nlaEAFyRHjfk97A2qYm5JOcakNcZIU114O6cySgQ5dcXOJQ0K/OHntsHAfagyAKTL9QA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581181; c=relaxed/simple; bh=DzZKakHuN52Xow3vnp9cNnLc4W+yXF/Ljm2JhcvRG7o=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aNnnxwFG1vk1O+TPjmdRRa5J+bH5a5XtS3PB/mjxe2X3ML+oKN/Jft2TGrJEf+3CX3vq6MtheybVs23mJT1wEj/h+sB1PADEJe/8+9aKQtOXCXmEYCsSs2s8ZxAMQvA5x+TcQfxevxOmmd6TgnWnvhLMQl+HR/SSG7P9xHEWZtk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ckdwN6Kt; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ckdwN6Kt" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-45eea68dd6fso413498f8f.2 for ; Thu, 04 Jun 2026 06:52:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581178; x=1781185978; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CoHc1Zlbr3pNOE70Y4k5QiMyrmoz//QwwHMvtTDGYPc=; b=ckdwN6Ktj/9wzI+zSYeC2d6K+i3sDLHsIZ4eBq8IUsc7Hhbkg5/uQIgPq/EPZApvwS rF200sgwSNhB0v5GYT2U26JVtx6uK3BTbK6H4NbElILuC+TJlSSPHcUNegoXYnaYQwGd qyiKnlwMZtY5ZeybznA2tWEQ1i97ocJ0intstECuntT3giDLDeshdKXBEBVdQwkdxwgq m+DsW24HJeR19m67SpQBTiEGlBzG3f6ZOQFD6+0s4X5LpMKqKEeBhxlGpgpfD7Zo9OPj GAvCaNbPlvT0i3BezDHb2Tbk1G8f6I6yy8OY6B8S2vFLsS4y80CXX1N3MZfrW7O7Nvhf sxmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581178; x=1781185978; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CoHc1Zlbr3pNOE70Y4k5QiMyrmoz//QwwHMvtTDGYPc=; b=idoUTcf+dsXF+R6uaajN7CQUd7RWFlm7fFYgalDEhRvqeNAkMSeyZLICblNTuExwcQ V5K9YBcCMPVdvE1aMNcjPADVPV8HpGXJ35UYwItUQKdu3ObIDTv05rbnVsBMoWjCUN78 d7HqnOf4OrSYOfJZvplT4vTIzKfafuNdIKnp/zE9//j4onVGJdkjyQqcxERmCR/pxKDc WFB1aiHBTb/ymHSbINx91d8kSbvibPs7NKjKL179ve8Y1C8Emw67//BTpHPa3Ejai2Ht dMK055eT1tyg1VF2cvxW5q2OECv6xAvT1eWz3Mc1+omx8vSzzyMazBlbi4MTPM9gyqj/ Ebwg== X-Forwarded-Encrypted: i=1; AFNElJ9blxagaNycwV6m91wcTdt/vYosXJP2/Y0RMJ8R8hwQrbas0APK0Km/bPjW8XQGy6KDSMZVI5C11Z6XwfY=@vger.kernel.org X-Gm-Message-State: AOJu0Yzmkn0RWwUF3ACyxO/BR8gt08Ym8IVL4r3Foq0ArYlvo8HKUcRO m1bpGq6THCaZeKdT9aW58lu/8uyZWrm87aD9BgHDOT99TPLMTV/K8iTK X-Gm-Gg: Acq92OF/9VPV9lEwacTAckOKRyuC9DN0OlZ2WkNKLMyrTeZ9CQh8mewGehfKDcV7aFs uBJzIwu9bhq66rUe41muiH5q3DFYt3rk+rEHtHZ+WGEmk+c2R2PLAGwg0fqjuTPPZFT3KumSpAo /CezbdE7Aj3yayMy5wWUtvjmfIFlPSCMcU795QMTLcZEdMcx93vQKZqO7Aeq/7e/CLMsJDMkHxI 14anm/+QtTKD/cLcvwIbkmve7onkNy7lLcTWwNpqfcSMcQ/wooMBuWPMK8U5tnW+l8bbLtorwM0 ZIfIchq9UtvaKLtEXGQjmv3whPBkoHYvCYtNJsiCAr6Kwy+iSKKjKFO4IZsGy696O8erzlcUc8Z yV6tUwxbLiV8uXTyWuyMm69m9lixi2/ZjltfCfDoHvpSFBUbc2w/O6KNZhJQPdA6idf+t5pw1jg DgGw/qm0kSHaje4iYBrq9Nwb1t2XgWE4rUdjdnn3awSLXcGxG0B6GqslTkBRqEyPU= X-Received: by 2002:adf:f8c4:0:b0:460:e0f:8d19 with SMTP id ffacd0b85a97d-4602179121cmr10232727f8f.9.1780581177846; Thu, 04 Jun 2026 06:52:57 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.52.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:52:57 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 1/9] accel: rocket: Introduce per-SoC rocket_soc_data Date: Thu, 4 Jun 2026 13:52:47 +0000 Message-Id: <20260604135255.62682-2-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add a per-SoC data structure carried in the OF match table, currently holding only the NPU AXI address width, and use it for the per-core DMA mask instead of a hardcoded 40-bit value. No functional change: the RK3588 AXI master is 40-bit. This prepares for SoCs with a narrower address width. Signed-off-by: Midgy BALON --- drivers/accel/rocket/rocket_core.c | 7 ++++++- drivers/accel/rocket/rocket_core.h | 11 +++++++++++ drivers/accel/rocket/rocket_drv.c | 6 +++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/accel/rocket/rocket_core.c b/drivers/accel/rocket/rock= et_core.c index b3b2fa9ba645a..09c445af7de73 100644 --- a/drivers/accel/rocket/rocket_core.c +++ b/drivers/accel/rocket/rocket_core.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -21,6 +22,10 @@ int rocket_core_init(struct rocket_core *core) u32 version; int err =3D 0; =20 + core->soc_data =3D of_device_get_match_data(dev); + if (!core->soc_data) + return dev_err_probe(dev, -EINVAL, "missing SoC match data\n"); + core->resets[0].id =3D "srst_a"; core->resets[1].id =3D "srst_h"; err =3D devm_reset_control_bulk_get_exclusive(&pdev->dev, ARRAY_SIZE(core= ->resets), @@ -52,7 +57,7 @@ int rocket_core_init(struct rocket_core *core) =20 dma_set_max_seg_size(dev, UINT_MAX); =20 - err =3D dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40)); + err =3D dma_set_mask_and_coherent(dev, DMA_BIT_MASK(core->soc_data->dma_b= its)); if (err) return err; =20 diff --git a/drivers/accel/rocket/rocket_core.h b/drivers/accel/rocket/rock= et_core.h index f6d7382854ca9..8ee105a0be40e 100644 --- a/drivers/accel/rocket/rocket_core.h +++ b/drivers/accel/rocket/rocket_core.h @@ -12,6 +12,16 @@ =20 #include "rocket_registers.h" =20 +struct rocket_core; + +/** + * struct rocket_soc_data - per-SoC configuration data + * @dma_bits: Physical address width reachable by the NPU's AXI master. + */ +struct rocket_soc_data { + unsigned int dma_bits; +}; + #define rocket_pc_readl(core, reg) \ readl((core)->pc_iomem + (REG_PC_##reg)) #define rocket_pc_writel(core, reg, value) \ @@ -31,6 +41,7 @@ struct rocket_core { struct device *dev; struct rocket_device *rdev; unsigned int index; + const struct rocket_soc_data *soc_data; =20 int irq; void __iomem *pc_iomem; diff --git a/drivers/accel/rocket/rocket_drv.c b/drivers/accel/rocket/rocke= t_drv.c index 8bbbce594883e..384c38e13acce 100644 --- a/drivers/accel/rocket/rocket_drv.c +++ b/drivers/accel/rocket/rocket_drv.c @@ -213,8 +213,12 @@ static void rocket_remove(struct platform_device *pdev) } } =20 +static const struct rocket_soc_data rk3588_soc_data =3D { + .dma_bits =3D 40, +}; + static const struct of_device_id dt_match[] =3D { - { .compatible =3D "rockchip,rk3588-rknn-core" }, + { .compatible =3D "rockchip,rk3588-rknn-core", .data =3D &rk3588_soc_data= }, {} }; MODULE_DEVICE_TABLE(of, dt_match); --=20 2.39.5 From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 305B447D959 for ; Thu, 4 Jun 2026 13:53:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581182; cv=none; b=AS5I8shO7fm10k0aKyxh/4T2NZmUeEhqsNRBaE6y0JyeRdRU+BYwV4AJo9AOZAImqiiTC2Fm7+Qiox99XLSTfxq2iOtdhjpEh+EYj21GN3MaWMqbbW4QPOdnVp2LqYvXv1jb0HHDb56jF+otrSvZ2ezBtRuMnqB0vdRogi849YU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581182; c=relaxed/simple; bh=3gEVhhj+iXOXtZyQzBEw1EMPFfRMLcnW4HxpQXk5wqE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=G4cXcNIuNo6Yna3nNXHjEsjRRkoP90pbEXp8hjVu6Om3Hr0o4gqU7171ErDlpBXye7lS95eg41yM+Y90/NhkuJUUIjkP1i5FB1MwAwosovUH/FXjSTFamjFqMj4OnXDzPBmucv34FTSuVc9nK7Lrblk2QcpindYYHfMZqNtJewc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ODWVS0G8; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ODWVS0G8" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-490a76757e5so5583555e9.2 for ; Thu, 04 Jun 2026 06:53:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581180; x=1781185980; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9Un/RS4Nm0nYyy9KkMqgz4u8u1TfsaZHefTb9UE6rtQ=; b=ODWVS0G8cOZymqsBeRu3/giGhX7sBsnL+rPP6efC5odh7mTr9t1sOf1I+YIn8ztqev G1Om9jMUgYUhv0L+vBGOVW+viobO54RfFHPL4z98dPser8fw8TZAUodwZQyyBcCG/65C wHxNfTcNPhR+RJkBS95m3M0BVbiIQeCd2eURIW1wxSyQNl4UKfs1KrfY8+T2VzYOawry eVXR3drRDBruytJEQHkXZ2vwNlOmkL5UrZ8TLbDT6J6HuOAT1uDacP9kqETOKOitLvRO 7FFKSdf7M5PebcvckF1ETcfwZ6tGO+LAKe1ApzHs1Nf/1TQVrpr5SP2PO6IeWDVVG20H 4JNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581180; x=1781185980; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9Un/RS4Nm0nYyy9KkMqgz4u8u1TfsaZHefTb9UE6rtQ=; b=EVCdVyh6OL06i6zr39ag4XqPuMik89acWzdgqONKHmE3i4A2Qz+drFKTqL9ZkdiGb6 m+7LOmBiupScJhKMA2Dijr2i37FOaU3yMkIFmZUE3tqL2fxacLrBOzfZiCZlEXHVO9zJ j/TyplElRArZnMthmYJIHUoTgVNhYg3dKCDX9EHJWFmqJlkN1QK/Qnjfs3x9n6D5T/O9 NE3q8WIwJ3gC+seGZ3M9rZDAQgbD3GQUmN/yCahcaK0OJzyNcIGLHaG+C0X8cS99wEPE fga73T7JiMk702BGfsNUGgWZVZNW3r3yKNzGt+hM+801ETa8J/6GNY/7EMZmAjr5KGLV E3Qg== X-Forwarded-Encrypted: i=1; AFNElJ/o2j+Q/tJNYX6qv8QefexgWZ4z3US/8q2m+e52mmVmDmNKGSI84Xu/J495CM/wKydSwcS0OYQYFIpm9HM=@vger.kernel.org X-Gm-Message-State: AOJu0YyCaREHKU1tQvAT7nfmGMBxUFNDU03qTr9leApQ8mKwxseZxm6g rHWDqcTu+I24VnP1W+pS2m3wsdhrNe/vZ0MyJlnKJ6W6HHRGajQDqG8B X-Gm-Gg: Acq92OHn+9gA65YVsnijAi1+GyLDYmXmJ+VkltO5K75OM0dZomQqhmTjerYSwpDXVgh PLQ7WY1ei9JDl8WbXvns9DqeEBlqi4qqd3GeVq4vd/0a9kDS8ejymAtynMaf4MTUQojP81pq0eH zPQKSCjSH/mu8MyAUt5YtBm5+WmJxchilqDXEqrsc9aVmDQVSCG7XKPKpyK/Wm//vX9jo2kYp9G UXezlescqBA99NRDaxN8xCuKS7oTGkkLmCFa3ZY1Nr6undXr4+/sMrJRS7sKIKrWJKUcCaG9jZy g4BAaIbq/MUbAdSq0U0bzHIP/brfvpkdanztPztS1WCFydn1admFCVY8UiBP+c97Fj/cwqpzM1B n6lX7gIPed/82vJ5WMsWM8NKsin/Q5yMi2t2lX9j/GXfyMlIrovDx+9oLGt8vm+G2pxYqOhFwvi +KDsx14lQQzQRwXaBJtAmUGcZEk9tSTHUeUBy9EEaQ7HmisQI4y0nAhjkaGiZKGwU= X-Received: by 2002:a05:600c:1551:b0:490:5466:8576 with SMTP id 5b1f17b1804b1-490b5e9fca9mr132980675e9.1.1780581179316; Thu, 04 Jun 2026 06:52:59 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.52.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:52:58 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 2/9] accel: rocket: Derive DMA width and core count from match data Date: Thu, 4 Jun 2026 13:52:48 +0000 Message-Id: <20260604135255.62682-3-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The probe already has the per-SoC match data, which now records the core count and DMA width. Use it for the cores array allocation and the device DMA mask instead of re-scanning the device tree for available core nodes. Signed-off-by: Midgy BALON --- drivers/accel/rocket/rocket_core.h | 2 ++ drivers/accel/rocket/rocket_device.c | 15 +++++---------- drivers/accel/rocket/rocket_device.h | 3 ++- drivers/accel/rocket/rocket_drv.c | 7 ++++++- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/accel/rocket/rocket_core.h b/drivers/accel/rocket/rock= et_core.h index 8ee105a0be40e..d6421251670dc 100644 --- a/drivers/accel/rocket/rocket_core.h +++ b/drivers/accel/rocket/rocket_core.h @@ -16,9 +16,11 @@ struct rocket_core; =20 /** * struct rocket_soc_data - per-SoC configuration data + * @num_cores: Number of NPU cores in this SoC. * @dma_bits: Physical address width reachable by the NPU's AXI master. */ struct rocket_soc_data { + unsigned int num_cores; unsigned int dma_bits; }; =20 diff --git a/drivers/accel/rocket/rocket_device.c b/drivers/accel/rocket/ro= cket_device.c index 46e6ee1e72c5f..6186f4faa3a2a 100644 --- a/drivers/accel/rocket/rocket_device.c +++ b/drivers/accel/rocket/rocket_device.c @@ -6,18 +6,16 @@ #include #include #include -#include =20 #include "rocket_device.h" =20 struct rocket_device *rocket_device_init(struct platform_device *pdev, - const struct drm_driver *rocket_drm_driver) + const struct drm_driver *rocket_drm_driver, + const struct rocket_soc_data *soc_data) { struct device *dev =3D &pdev->dev; - struct device_node *core_node; struct rocket_device *rdev; struct drm_device *ddev; - unsigned int num_cores =3D 0; int err; =20 rdev =3D devm_drm_dev_alloc(dev, rocket_drm_driver, struct rocket_device,= ddev); @@ -27,17 +25,14 @@ struct rocket_device *rocket_device_init(struct platfor= m_device *pdev, ddev =3D &rdev->ddev; dev_set_drvdata(dev, rdev); =20 - for_each_compatible_node(core_node, NULL, "rockchip,rk3588-rknn-core") - if (of_device_is_available(core_node)) - num_cores++; - - rdev->cores =3D devm_kcalloc(dev, num_cores, sizeof(*rdev->cores), GFP_KE= RNEL); + rdev->cores =3D devm_kcalloc(dev, soc_data->num_cores, sizeof(*rdev->core= s), + GFP_KERNEL); if (!rdev->cores) return ERR_PTR(-ENOMEM); =20 dma_set_max_seg_size(dev, UINT_MAX); =20 - err =3D dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40)); + err =3D dma_set_mask_and_coherent(dev, DMA_BIT_MASK(soc_data->dma_bits)); if (err) return ERR_PTR(err); =20 diff --git a/drivers/accel/rocket/rocket_device.h b/drivers/accel/rocket/ro= cket_device.h index ce662abc01d3d..2f74e078974e3 100644 --- a/drivers/accel/rocket/rocket_device.h +++ b/drivers/accel/rocket/rocket_device.h @@ -22,7 +22,8 @@ struct rocket_device { }; =20 struct rocket_device *rocket_device_init(struct platform_device *pdev, - const struct drm_driver *rocket_drm_driver); + const struct drm_driver *rocket_drm_driver, + const struct rocket_soc_data *soc_data); void rocket_device_fini(struct rocket_device *rdev); #define to_rocket_device(drm_dev) \ ((struct rocket_device *)(container_of((drm_dev), struct rocket_device, d= dev))) diff --git a/drivers/accel/rocket/rocket_drv.c b/drivers/accel/rocket/rocke= t_drv.c index 384c38e13acce..c18840e5aff76 100644 --- a/drivers/accel/rocket/rocket_drv.c +++ b/drivers/accel/rocket/rocket_drv.c @@ -159,11 +159,15 @@ static const struct drm_driver rocket_drm_driver =3D { =20 static int rocket_probe(struct platform_device *pdev) { + const struct rocket_soc_data *soc_data =3D of_device_get_match_data(&pdev= ->dev); int ret; =20 + if (!soc_data) + return -EINVAL; + if (rdev =3D=3D NULL) { /* First core probing, initialize DRM device. */ - rdev =3D rocket_device_init(drm_dev, &rocket_drm_driver); + rdev =3D rocket_device_init(drm_dev, &rocket_drm_driver, soc_data); if (IS_ERR(rdev)) { dev_err(&pdev->dev, "failed to initialize rocket device\n"); return PTR_ERR(rdev); @@ -214,6 +218,7 @@ static void rocket_remove(struct platform_device *pdev) } =20 static const struct rocket_soc_data rk3588_soc_data =3D { + .num_cores =3D 3, .dma_bits =3D 40, }; =20 --=20 2.39.5 From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 A566E480328 for ; Thu, 4 Jun 2026 13:53:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581184; cv=none; b=Dv78RmCxZ9Rz6Gx8hpJFrPybWDepo35SZCR1VsptNdKp9CuqLhsq3dC1SZWHcna2GJJg883OKotizJ569xw401mFGsSsP/garktoFEAfj2/8NV1rbMHNMh6tN7P8b+2h4eM8qzb4b0YXDYSByr2uvOUmoPjIIM4+AL9q34uL3Fo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581184; c=relaxed/simple; bh=W36aVe4XoVMHBTmbHT/sY2wCfTe4v14esBNFui5pE/k=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WcoxrisJcqt3kb39XdgtH0tNAFhLTk9w5x63CboXNTByiS0qFH7kGjHE+WB9zK+DxoEYrHx7h0kr5taDEfeBykoCk/RBUhDIlErWg2marOxov/npuJubE6GCFjBKUWoZFtvtmtUV+S5xKDj9UmN+5ogDRHNaHOgKOyoGZgyRruw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hVrywGPI; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hVrywGPI" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-45ee6d32402so421609f8f.1 for ; Thu, 04 Jun 2026 06:53:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581180; x=1781185980; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=fvTkXFm0z4CjuuOw/gsrhETvrrwMcV/B+e1Vnh/OZd8=; b=hVrywGPIA4lULYhsxGgKHLi2dCFRox5FEspi6ULpd/hHvbY6K5qq8hoZwgLfIgMHxJ ozEh9JH7DdgnF55tQB1ttpz4RNSP2E0o50U2Ge+9N1haAp7iUU2n+a9yfUWHfEgiRG4W 8BMKZK6IOxl93gynjDHk1gh/WQpsWqvmVwLqQZf8qS6x4NHPJ6Kwz//tiTPNbmHTmuDi sSKrFw6rans8+H1fyNyTB3KuzhJExSTCuYJb4hyrfANwKDRPWefY0PAk5Y/qKBzW9dD/ zjQDTzHakoeAwbsK6cE5wfoucr/We49P33dDTTymUhDixwaNVnbjMVB1emBd0Oxuk1k8 ScVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581180; x=1781185980; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=fvTkXFm0z4CjuuOw/gsrhETvrrwMcV/B+e1Vnh/OZd8=; b=hK2oyj1PthuSiq4pvxWY8eR6+yJgFjX9VudQEeMxU6GoV1+LovceqNXdwlvWZujLu7 P4/U70HhH+f4hiLe8XL0762u9bupqOHCOo5xwW6p/w6jXaQ+KWjmgDgGNXnLib8SsOWj IoJPoxe7HMCtOaQbDo5HFQINds7GMYUNAHzbURdnS60aK/Cs/lw3K5E5/zstLUb9idiC dKDZ3HWRSTBBKXo3geBSK8ptFh9jJeuTnbN8INg+XaItnvZFCW9tzd+F7DeeZFZ2crnw NjlfVF27aVHw3crsBhDKuU1sXij6jz7HWsHbsPr8ehQqf8/RYBV+3YvDiIGGhrpI2PXC ACwg== X-Forwarded-Encrypted: i=1; AFNElJ+FKi7EN8qj1VllNLvRRCc559xyFrAk+C6JXxaztbXymXj7SCculbliJSqfHO5snPzHlxkD7T2//G0ldaU=@vger.kernel.org X-Gm-Message-State: AOJu0Yy9Zz4/4pM3tqMLz8fpPWlW0IzkZ/xiPuT4BbEClXRGmsNYj1N+ qsIw6l09FQ2yWljyHZQj4zV/iW+uGu0sfi11n+dp+bpKRF9YFBAJXdRAwB33HPpWfXN04Q== X-Gm-Gg: Acq92OGc4ite2DPjXB0gdm++fJcF0F4BfXkTPhMWVYNAZDx0iaLhUcUeaPwKcNu+yWE A6YVsFkGgJW8qNwBTvRh/I9HCcQSCW1S0kaQx8zWY5g0lELkQWeT4rpqqxGhIr5UJj1nqITAdSk JrtuPQF0VQ7bVpNsJVAMK423gKvWOHWjlOLULIg6P4xwuyTtgseXMdbn3SpVbmvY7DcQqWo27g9 G5J/MeFbT48iEV37m3LHkdiBftrMPffzTEj+/PVOcj4JMuHdgDCf98lDWR3GHR+sO5rNmmaxzLe UHXPrlU9TfqWRjz0NyEgWrP4EGMahIWiGbXm1CP+M09RLwLPf1AlWLMdU26esvm898dF8KNCxY1 br5pZqRF+iR/Hzy7TzUGfqtOhmZ3FjJ0I9FTh1OsXiS4FtsLC9guDbZaMjkmrhygNtLVaj3ubyo Q55CStaJDQejES6uWE02QhUeSFYgYVYJYjdlWKyHROLEADD1qWbXffXjRXB530obk= X-Received: by 2002:a05:6000:180a:b0:45e:d6b2:e6a5 with SMTP id ffacd0b85a97d-460218654afmr9596752f8f.34.1780581180021; Thu, 04 Jun 2026 06:53:00 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.52.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:52:59 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 3/9] accel: rocket: Add RK3568 SoC support Date: Thu, 4 Jun 2026 13:52:49 +0000 Message-Id: <20260604135255.62682-4-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The RK3568 has a single core of the same NVDLA-derived NPU IP as the RK3588, with a 32-bit AXI master. Unlike the RK3588 it must be powered on and de-idled through the PMU, and its PVTPLL clock started via SCMI, before the NPU is reachable. Add rk3568_soc_data with an noc_init callback performing this bring-up. Signed-off-by: Midgy BALON --- drivers/accel/rocket/rocket_core.c | 9 +++++ drivers/accel/rocket/rocket_core.h | 3 ++ drivers/accel/rocket/rocket_drv.c | 53 ++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/drivers/accel/rocket/rocket_core.c b/drivers/accel/rocket/rock= et_core.c index 09c445af7de73..a8de876365873 100644 --- a/drivers/accel/rocket/rocket_core.c +++ b/drivers/accel/rocket/rocket_core.c @@ -88,6 +88,15 @@ int rocket_core_init(struct rocket_core *core) return err; } =20 + if (core->soc_data->noc_init) { + err =3D core->soc_data->noc_init(core); + if (err) { + pm_runtime_put_sync(dev); + rocket_job_fini(core); + return err; + } + } + version =3D rocket_pc_readl(core, VERSION); version +=3D rocket_pc_readl(core, VERSION_NUM) & 0xffff; =20 diff --git a/drivers/accel/rocket/rocket_core.h b/drivers/accel/rocket/rock= et_core.h index d6421251670dc..66d138a8ed773 100644 --- a/drivers/accel/rocket/rocket_core.h +++ b/drivers/accel/rocket/rocket_core.h @@ -18,10 +18,13 @@ struct rocket_core; * struct rocket_soc_data - per-SoC configuration data * @num_cores: Number of NPU cores in this SoC. * @dma_bits: Physical address width reachable by the NPU's AXI master. + * @noc_init: Optional callback to power on and de-idle the NPU NOC bus. + * Required on RK3568, where this is done through the PMU. */ struct rocket_soc_data { unsigned int num_cores; unsigned int dma_bits; + int (*noc_init)(struct rocket_core *core); }; =20 #define rocket_pc_readl(core, reg) \ diff --git a/drivers/accel/rocket/rocket_drv.c b/drivers/accel/rocket/rocke= t_drv.c index c18840e5aff76..5a72d0b5f4dff 100644 --- a/drivers/accel/rocket/rocket_drv.c +++ b/drivers/accel/rocket/rocket_drv.c @@ -9,9 +9,11 @@ #include #include #include +#include #include #include #include +#include =20 #include "rocket_device.h" #include "rocket_drv.h" @@ -217,12 +219,63 @@ static void rocket_remove(struct platform_device *pde= v) } } =20 +/* + * On RK3568 the NPU NOC bus is gated and idle out of reset and must be + * powered on and de-idled through the PMU before the NPU is reachable. P= MU + * registers use a write-mask protocol: the upper 16 bits enable writes to= the + * matching lower 16 bits. + * + * The NPU's high-speed clock is a PVTPLL managed by TF-A via SCMI and mus= t be + * running before the NOC acknowledges the de-idle request. Force a real = SCMI + * rate change (an intermediate rate defeats the clock framework's + * unchanged-rate shortcut) now that the power domain is on and clocks ena= bled. + */ +#define ROCKET_RK3568_SCMI_CLK 2 + +static int rk3568_noc_init(struct rocket_core *core) +{ + struct regmap *pmu; + unsigned int val; + int ret; + + clk_set_rate(core->clks[ROCKET_RK3568_SCMI_CLK].clk, 600000000UL); + clk_set_rate(core->clks[ROCKET_RK3568_SCMI_CLK].clk, 1000000000UL); + + pmu =3D syscon_regmap_lookup_by_phandle(core->dev->of_node, "rockchip,pmu= "); + if (IS_ERR(pmu)) + return dev_err_probe(core->dev, PTR_ERR(pmu), + "failed to get PMU regmap\n"); + + /* Power on the NPU power domain (PWR_GATE_SFTCON bit 1 =3D 0). */ + regmap_write(pmu, 0xa0, BIT(1 + 16)); + + /* Disable NPU NOC auto-idle (NOC_AUTO_CON0 bit 2). */ + regmap_write(pmu, 0x70, BIT(2 + 16)); + + /* Request NPU bus de-idle (BUS_IDLE_SFTCON0 bit 2 =3D 0). */ + regmap_write(pmu, 0x50, BIT(2 + 16)); + + /* Wait for the bus to report active (BUS_IDLE_ST bit 2 =3D 0). */ + ret =3D regmap_read_poll_timeout(pmu, 0x68, val, !(val & BIT(2)), 10, 100= 0); + if (ret) + dev_err(core->dev, "timed out waiting for NPU bus de-idle\n"); + + return ret; +} + +static const struct rocket_soc_data rk3568_soc_data =3D { + .num_cores =3D 1, + .dma_bits =3D 32, + .noc_init =3D rk3568_noc_init, +}; + static const struct rocket_soc_data rk3588_soc_data =3D { .num_cores =3D 3, .dma_bits =3D 40, }; =20 static const struct of_device_id dt_match[] =3D { + { .compatible =3D "rockchip,rk3568-rknn-core", .data =3D &rk3568_soc_data= }, { .compatible =3D "rockchip,rk3588-rknn-core", .data =3D &rk3588_soc_data= }, {} }; --=20 2.39.5 From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (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 990E7480348 for ; Thu, 4 Jun 2026 13:53:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581184; cv=none; b=mQDxcihKZYT0uJU/qWps7s/p4ZsC9zWao4fvbhHDdvB3XgTybfCe7J/TGdh2IFc6LAIcHDKyZTVwL+BerwbAZ4/GFz8RR7NEDix0xvs5KJY1VKQudiZXTIS9PIkbJlGdL2EHT8PXa6CB9M2qFzJJDpEUSMJqicag1PU9ofRHvAw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581184; c=relaxed/simple; bh=KmQHc3v3JVs4EnW94C19ZfoNPOYoCnubmp9LMyZqsGA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=MJq0H3OlBE61SB5B4bXAGdKWX9HZ2jGNs3h69T86JYJOBsM7hEhL8lJZGjJ7limfgSEnhq1plzvOZLAnC06N+0/h77+sk+tUGJd7UjoPbUjx1jObjxB2MMDvaNygXNNDQg1zil1YEs69jrYlWTBbZmszOczt0ul25thKYKros1s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=g2yIlWch; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="g2yIlWch" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-45ef189aa1cso573353f8f.0 for ; Thu, 04 Jun 2026 06:53:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581181; x=1781185981; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OH9hQQFNIkDpasnao4boz8/RAiMZ7MOKPgy4BqZR+6c=; b=g2yIlWchXL6NYzmukT+J/sICsgBvebfW7FmoqIKk049vPq9fLUIvbWl/JX6UNHLbkP uFrHcqDVu+bXLBDm1bJjoZWFk9DN0Tm3IfeKdIftx/65//rcROnpzHaEq+vpjTdCbsuI uVTz8iFOJjQuEtRZ4DR+W+33AulqPnCY+Zal808OmncJuaD1aSREVnzJ0DP/+Z0LdRDH XAitOxoFd4eB9+nIeGpEPasBfZXuzEzoJwc6WUw2hTViECuEoDqo1vlzHP1tx8AQ3Uwf Frtn5tl6+g6OTTBpoQo1ZpXVDBPcW3u1WYJydmGK3h6/fS0nHOgfEbBa3unGPf47Mwiu woZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581181; x=1781185981; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=OH9hQQFNIkDpasnao4boz8/RAiMZ7MOKPgy4BqZR+6c=; b=fYLMjRIUrauENztUtI62WsIqr6Y8FAAhrwbdKHj9BtraYwBK0ka5HYsskvl9EptVtp fBQQ1tld/DyH1cNqg1jKN25FFWlHjGp80OZSwZzfo2RwmZTcrOV/FUy2Pcd0G0+LImPK 4lu+eu2VCzfKEW8uN/ywh7C3inMgV4YuVkcTBZ24GMb5ucdA+iDJthtuYeh0Kdn04zNY rxLpKvmLBBAeuu/jvoNNTonzKAByWiUWm7NOSN1yJh1h7yOs/uVEMopsalapty31sGX1 JxvVKudDSrG/+i3COZbCaCu4yZ5+OqzXTX37lNO2Q43YI/8iyyOdQMxbVnn1JBu+/psV jw9A== X-Forwarded-Encrypted: i=1; AFNElJ9J1YAwoWDg+8kb3gBGLIM6Gj/1gENZWECe4U8g4anVogOjpSSvxxnTelrWFq0qBji4tAKAfdsOcxRitaU=@vger.kernel.org X-Gm-Message-State: AOJu0YxC7zQ/ukbrxrO7+J7l5AW98T7JpmMWWFvIdQMFfTjDmg/E2ZM5 qqZ6OLrxG1NpHDQvmHxvB1fRUcZcKDqQY7mwCGhy7jY3NopG1GF209QM X-Gm-Gg: Acq92OHGs9maP/fT6j/nhfwBwXVKsKDslXOy3zJWJwrs9/Gj0dFZ8WuRih/+c1ylwsj 9dPa/3ceEZMQ8wa9xWHvMQMcEV2KJrmx8RLquyIomogNNswrVXwTXuEHbnXnb1+4OAZkDbT58Pf K2vpkoo7eYArWhrscGvF8eDZ522YzC/r91TyPXETz8Lj0Xyy7qTW84y4L0cOtKlWkQnVbLBUAj8 K/cK7j/7oiUjBMxin+yYXvb4R1h60bcpuiZMzTAX7o5Trz2EE0ibdS5M9FyOb2vugkGm93GWIQ6 QbCom+N2cfVUCYcjRymprO6CyRYhH9O4l5KygNPikcUc0mksF51CdBC6/6vjiu9ONh5q9av7mhv ZayMbsIyBZhsLLtwPCizZd9J0OOgh4YQwPFx1bb3BzxtHIMWqWzikC2XWySQNWjYsHquih8uOdD ig6Jf2VeMRF3C6OjTdxEjZlb8ze/N3FlGOUtEX+jIhpUpBCjjAe+LsQZcWnKWgm5Y= X-Received: by 2002:adf:eed2:0:b0:452:6aaf:76cb with SMTP id ffacd0b85a97d-4602178b717mr9418813f8f.1.1780581180807; Thu, 04 Jun 2026 06:53:00 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.53.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:53:00 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 4/9] accel: rocket: Reset the NPU before detaching the IOMMU on timeout Date: Thu, 4 Jun 2026 13:52:50 +0000 Message-Id: <20260604135255.62682-5-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On a job timeout the NPU AXI master can be left wedged with outstanding transactions. rocket_reset() detached the IOMMU group before resetting the hardware, so iommu_detach_group() -> __iommu_group_set_core_domain() asked the rk_iommu to stall and wait for the in-flight transactions to drain. They never did, the stall request timed out (-ETIMEDOUT) and the IOMMU core WARNed: WARNING: drivers/iommu/iommu.c:157 __iommu_group_set_core_domain iommu_detach_group rocket_reset rocket_job_timedout Assert the core reset first: it quiesces the AXI master so the following IOMMU detach completes cleanly. Move the detach after rocket_core_reset() and out of the job_lock (it does not touch in_flight_job). Signed-off-by: Midgy BALON --- drivers/accel/rocket/rocket_job.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/accel/rocket/rocket_job.c b/drivers/accel/rocket/rocke= t_job.c index ac51bff39833f..e25234261536b 100644 --- a/drivers/accel/rocket/rocket_job.c +++ b/drivers/accel/rocket/rocket_job.c @@ -364,14 +364,20 @@ rocket_reset(struct rocket_core *core, struct drm_sch= ed_job *bad) if (core->in_flight_job) pm_runtime_put_noidle(core->dev); =20 - iommu_detach_group(NULL, core->iommu_group); - core->in_flight_job =3D NULL; } =20 - /* Proceed with reset now. */ + /* + * Reset the NPU hardware before detaching the IOMMU. A timed-out job + * leaves the NPU AXI master wedged; detaching the IOMMU then issues a + * stall request that never drains and times out (warning in the IOMMU + * core). Asserting the core reset first quiesces the master so the + * detach completes cleanly. + */ rocket_core_reset(core); =20 + iommu_detach_group(NULL, core->iommu_group); + /* NPU has been reset, we can clear the reset pending bit. */ atomic_set(&core->reset.pending, 0); =20 --=20 2.39.5 From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 191E148035B for ; Thu, 4 Jun 2026 13:53:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581185; cv=none; b=m8rPAokJJ4EkG1jBKvHqGnzHy2QSVqRp6je50pNKsDIPi1Gp6fO5HkzgQH6f3aQEuW2eAXBacbu9ayEZ4eRJKbQ/i6SJpLw0R6ocZIU+3m/+fp3569FQAgk95jIYttca0ZVRXr38IsGJlDtpP2Mec3kxDyyL86seqOrmOml4MIE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581185; c=relaxed/simple; bh=J+pt5zvnEKM9VdXyU6yLJevyaM3Qj+rO7ivwmnH2i3c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Y8vyE7XJxd5LnTcXBl60v/4vaHE+CeFEj0iiO5Pk08HCeV4zfwGUehGvwtH7+28wDtEBd0UPeTB5KLIM1fRzDUlXRKGEVuT9RnzlSCY6GU08Rl+HmzjzB4u03wRkhj/hL2W0g5gBebde0L1EYjzu4zDJ7Uj6IlTfh2uwZMF2xzU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XKtEEhQw; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XKtEEhQw" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-46013161068so387195f8f.2 for ; Thu, 04 Jun 2026 06:53:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581181; x=1781185981; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=peByEg9qkw/NuaYmCEAUEFnpiWasS3prWUS+hf7e7ys=; b=XKtEEhQwIa8shqrlr+mUWpt2800jsN891/3mf9b5PqsZz2SddWUvnj4mwN1ZZztOnQ /LRIN0z6I66coBEsAokCspMRCDG+Aq8gfn2vEB/KtpnE0BJtOG4oyZmU4GHmezZp5HnX cgGOwGpzx1cgYjOZmuaO052yR1dv1cH1dkp28RZpLxTPkQhHv8Xw88BleY/NP2LSrixz JZCN8gJ8efWW0l+dTVucmOyxblSMvLl7L1NxnCwr8qpz1LzO11IK1wNOqJUXZA8f+uXg 9i9dUkuqu2ot89qEO+mPX0ynuPF0vYURih52ymrLFLmboK0baeuLBAeJUWgFnC7uQJiE C4Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581181; x=1781185981; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=peByEg9qkw/NuaYmCEAUEFnpiWasS3prWUS+hf7e7ys=; b=fv3mP6VJfX02te51KSpBR4/qlA28QauuxzYGWZGY98+svBazuSr7/wI5aSLb8ZgdKJ q06xC9K4QkqNd8Y/IOj3ArYY3uRfQ2ZGmyHREII+iIac8X4UgyhTEehgInIXuYIvxBsH Dtui+RF7/kF5X6y3mTI/nyaFvio2iuUD0txS/2EBV+zhQkkcUWF1Ee8jBrzNpXlPPDeo q2f3168tiJ+h5fu/D6f5Kre+CK5l/9vfFsk+ue0ax0gkI65/STSLaPjyucUDYakHi4Pr TYhIz27dEdG2Ee+rkgcMm9C6O0WH5GgY65L6aKJC/N22U16eXFwuCR8GrOtwbmtenCLd fnKA== X-Forwarded-Encrypted: i=1; AFNElJ/rxPSvTwroNFOMAVTxOgL/AfPzQ7Q/9ILad1DK3+0Fiz+ho4NM52chmvV9PAOQIQwF696hXdVbDE1efcc=@vger.kernel.org X-Gm-Message-State: AOJu0YxQEWSflEqCmOgHK9AfaszXWWneG7gq7lGyWunw/k582PJMmnrH oQy01Qw4QQFWMto6uwGoJH7852VAHWxcTf8vJXL8sk3XcYTSfo05tl/D X-Gm-Gg: Acq92OG2yntov3yAv8N4zwZkx2DpHYwAKlNWPs1U3X2C62zomKe8XksDi25VWPEAD7b GHQNv0ShQxTB5NGm7iISniCksxWT5vJHUESULJ5m6ytFc8fPutgJLAQz7k0SyhlywHJXGusfsql T+lt5+UFhvSzuEkbXFe8QwwsDAYQJx5k+xOpLW/+26cLefwNfvRW5Oe6KZ7yjGhx9+Lal5qKGCo Obp//l5EpYK9ClntHlKhvfaesRF4r/9Uca1pI0CP3LjEAhKa5zrNhlNiOHr67sDLXZUft7JRi6y 3u0VCSuu86KV7uQZcByJ8tlm/ZFZtZpck2EhUD7fmO8tDYDAXAwnOcM/LuPlUuFxgiUVM+NsYGK GsEOZeX8xjYT2kQDunyq3vRYYQVfRT/togUU80Ajm3AVwOCLYLWLCmo/XMy6EyFOwNqdGE0aUe0 A4PljYmYvm1DdMDCBKzmoTUe1vwUQaM92yMt1bbRAjsUf1VwahAONlqs6WU/5uQNU= X-Received: by 2002:a5d:44d2:0:b0:45e:9431:ee3c with SMTP id ffacd0b85a97d-46021792538mr9334388f8f.10.1780581181471; Thu, 04 Jun 2026 06:53:01 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.53.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:53:01 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 5/9] accel: rocket: Keep the IOMMU domain attached across jobs Date: Thu, 4 Jun 2026 13:52:51 +0000 Message-Id: <20260604135255.62682-6-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" rocket attached the job's IOMMU domain in rocket_job_run() and detached it again on every completion and reset. Each attach/detach toggles the rk_iommu stall/force-reset/paging handshake, and on RK3568 the NPU MMU is idle between jobs, so that handshake times out and logs a burst of "stall/paging request timed out" errors for every job. Attach the per-context domain once and keep it: track the attached domain in the core, swap it only when a job from a different context runs, and detach it at core teardown. A reference on the attached domain is held so it outlives the job that first attached it and is released on swap/teardown. Signed-off-by: Midgy BALON --- drivers/accel/rocket/rocket_core.c | 6 ++++++ drivers/accel/rocket/rocket_core.h | 3 +++ drivers/accel/rocket/rocket_job.c | 27 +++++++++++++++++++++------ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/drivers/accel/rocket/rocket_core.c b/drivers/accel/rocket/rock= et_core.c index a8de876365873..634f78dfe2887 100644 --- a/drivers/accel/rocket/rocket_core.c +++ b/drivers/accel/rocket/rocket_core.c @@ -13,6 +13,7 @@ #include =20 #include "rocket_core.h" +#include "rocket_drv.h" #include "rocket_job.h" =20 int rocket_core_init(struct rocket_core *core) @@ -112,6 +113,11 @@ void rocket_core_fini(struct rocket_core *core) { pm_runtime_dont_use_autosuspend(core->dev); pm_runtime_disable(core->dev); + if (core->attached_domain) { + iommu_detach_group(NULL, core->iommu_group); + rocket_iommu_domain_put(core->attached_domain); + core->attached_domain =3D NULL; + } iommu_group_put(core->iommu_group); core->iommu_group =3D NULL; rocket_job_fini(core); diff --git a/drivers/accel/rocket/rocket_core.h b/drivers/accel/rocket/rock= et_core.h index 66d138a8ed773..05a197a9c0113 100644 --- a/drivers/accel/rocket/rocket_core.h +++ b/drivers/accel/rocket/rocket_core.h @@ -42,6 +42,8 @@ struct rocket_soc_data { #define rocket_core_writel(core, reg, value) \ writel(value, (core)->core_iomem + (REG_CORE_##reg) - REG_CORE_S_STATUS) =20 +struct rocket_iommu_domain; + struct rocket_core { struct device *dev; struct rocket_device *rdev; @@ -56,6 +58,7 @@ struct rocket_core { struct reset_control_bulk_data resets[2]; =20 struct iommu_group *iommu_group; + struct rocket_iommu_domain *attached_domain; =20 struct mutex job_lock; struct rocket_job *in_flight_job; diff --git a/drivers/accel/rocket/rocket_job.c b/drivers/accel/rocket/rocke= t_job.c index e25234261536b..b248371be8a1e 100644 --- a/drivers/accel/rocket/rocket_job.c +++ b/drivers/accel/rocket/rocket_job.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include =20 @@ -314,9 +315,26 @@ static struct dma_fence *rocket_job_run(struct drm_sch= ed_job *sched_job) if (ret < 0) return fence; =20 - ret =3D iommu_attach_group(job->domain->domain, core->iommu_group); - if (ret < 0) - return fence; + /* + * Attach the job's IOMMU domain only when it differs from the one + * already attached. Re-attaching per job toggles the rk_iommu + * stall/reset handshake on an idle NPU MMU, which is slow and + * noisy; keep the domain attached across jobs instead. + */ + if (core->attached_domain !=3D job->domain) { + if (core->attached_domain) { + iommu_detach_group(NULL, core->iommu_group); + rocket_iommu_domain_put(core->attached_domain); + core->attached_domain =3D NULL; + } + + ret =3D iommu_attach_group(job->domain->domain, core->iommu_group); + if (ret < 0) + return fence; + + kref_get(&job->domain->kref); + core->attached_domain =3D job->domain; + } =20 scoped_guard(mutex, &core->job_lock) { core->in_flight_job =3D job; @@ -340,7 +358,6 @@ static void rocket_job_handle_irq(struct rocket_core *c= ore) return; } =20 - iommu_detach_group(NULL, iommu_group_get(core->dev)); dma_fence_signal(core->in_flight_job->done_fence); pm_runtime_put_autosuspend(core->dev); core->in_flight_job =3D NULL; @@ -376,8 +393,6 @@ rocket_reset(struct rocket_core *core, struct drm_sched= _job *bad) */ rocket_core_reset(core); =20 - iommu_detach_group(NULL, core->iommu_group); - /* NPU has been reset, we can clear the reset pending bit. */ atomic_set(&core->reset.pending, 0); =20 --=20 2.39.5 From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 ECCF048095F for ; Thu, 4 Jun 2026 13:53:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581185; cv=none; b=i2tQrRP9rL7FXfDV/u/0zTaXOQ+palJkOAe++cqC5Nb+tf3C1Ootzhe5MV0vhHIdLzYPztcXUgH+OW6ofEG3R6XAymucYxFzYNrwJtyorYbnouDI2254Ky7/UI8o0Uo8ZGMF2csCbXErnpIOdUQdAsYo3hc5PsM6NT4R5XqmoPA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581185; c=relaxed/simple; bh=H84PCi6rqd7ZXKUPzqtrIa81wxH9NJ5ajArN4ifw6yE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ibETsnFP7wu1dPMJynB4vMEtiGZZ/ecBSfNcfFeMP+BJ7t09tNzg179xQO+AvC90RsfCMVq6L7D0ZmZqUcYBh73HsQWzqBPCWqrpoZ8ILGrHnN0w9qHrfrN8BIYtOCH6GXQoNpzu8Anba1v6oUiwYYe5gFwAyn8f/q2/K1b8RnM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZXAOuvPC; arc=none smtp.client-ip=209.85.221.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZXAOuvPC" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-46013161068so387206f8f.2 for ; Thu, 04 Jun 2026 06:53:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581182; x=1781185982; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7zTkYHigKQy3WkeWXyJsWd48o8A6LM0P0gm1ZhPIld0=; b=ZXAOuvPCIbX8uZe3isqZoLZgEILM/zlro2JvjNCpUaTjemOb7dmYNYlK4TfSZHLG5W HR7wbjqv6MR7ktuUSqH2nZdqGfo436QkoguxcoBahQyI14ooqaoHCa7aFVOKjuu8/Wyw YwzK1dgTZwsBHcQhLIWCNz8aexjNj84kq58WSe39qLgpzkly8EIQlo9JsJ7869Ni2EYe B2HzlOmn7HuzTNFfRgAirybhEme2bCX9AW8y5lDRK+Rgyurdf5ITBKr1/mBvMSlIr5t6 xVIO5+4JVJGdgLHSFbRV4tLUFcbE7qpAiPwgpxhpqY8+FC6brhFdXC61W86vmmqz3uBa mJUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581182; x=1781185982; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=7zTkYHigKQy3WkeWXyJsWd48o8A6LM0P0gm1ZhPIld0=; b=cMbdF862h2NqjmPrnSlwID0IGl551ffi5vPX8IABw7cjAUMq5FlqmRUZQpFT2f1DAD Di0rZR28NC60o/0El0TcBHEl2/KlQE0NVwFWGUtGOCh+qORj0SG1YC7eQ3ws6j/87rmT tA4Kp2zJ9H4UQXzzBhT/yPN+EsfvYn0FccWV3hi2K6o/rXVzcnclAIH28kSKwnM6wA7l 8nMaIu/2O7M8c75FcJ6LSjg8TMx7j8JuJyI5xrxpVhiYn9apGpdnF2qZEsCTc4hV2gUu wEaMAuL0Jr9bMo77NuSh0cCWzPDuUjMU89sH0vuH8roDNHPktctwKcyfHk1RwSv4aLdX EEQg== X-Forwarded-Encrypted: i=1; AFNElJ+ipR49uho5S8P9c7CBjDGd+QvYduJQueX3zRCnwaUsI3p1XX3/EoxqGyR7BV2ezCYBbOK+fs++7gJci2o=@vger.kernel.org X-Gm-Message-State: AOJu0YyKjMLG7MV6wFAfXBv/KnkuxdJqjIXBpvQKZpjOt2sGt+mG/X3d FCasqAeODT4aaj2CoESBv1p25fy3X4rM3Ec1QCL5TqiaEikE7LbVYEFm X-Gm-Gg: Acq92OGeY3fI9Z35zGJPSZPXAkpdc2NKunOILjWn+dL1JduCFqbUXQx/1ZV8UhQ16B5 UiYMsul5ewzz4t02DoUcc9sT1qgd+a+LC+t3Z14xU/bBD0GmdtLBXora+Q4jTtrmcOuWAJJx6jM 4ic0wHJIWxeXKQeeYfTxX+BPwCjDP4JlwOw/v7xO+rUdmYD0ws+R+58eVWxeAUDNcHHo2T8LUhD fYDb7/1S0HUb2Ej89GN/Xo17fbpwqmEoKq/My4WiMW6XnUh1XbfDakIxrRj8T5DLISDhk78S8L+ 0gqwhkY0WwWXMslDpOUQ5E5q5J6Mp6DkWXWyk0eCt2LVTGwzJXsvMkOojcpD04UOm6naKzw1Y4v THcJrv/KBJMXnJIy5mW+vffYcpTTloxUYX1T+Ki7PfZ5++06llKslp6MQw9fP2bveJOcS4fy8aB zbl0wlGkX6l4EMUDHHVA+G+gQkBqh9NaKbwtsKNBgxC2jY5uNey9IuqzNMDu9J6iM= X-Received: by 2002:adf:e00c:0:10b0:45e:f381:cd7f with SMTP id ffacd0b85a97d-460217831bamr9227520f8f.5.1780581182173; Thu, 04 Jun 2026 06:53:02 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.53.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:53:01 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 6/9] iommu/rockchip: Clear AUTO_GATING bit 1 on the RK356x v1 IOMMU Date: Thu, 4 Jun 2026 13:52:52 +0000 Message-Id: <20260604135255.62682-7-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On the RK356x v1 IOMMU, RK_MMU_AUTO_GATING resets to 0x3. Bit 1 enables auto clock-gating of the page-table walker, so the walker's AXI master loses its clock between transactions; a TLB-miss page walk then never completes and the IOMMU is left stuck (PAGING_ENABLED, never IDLE). Clear bit 1 (keeping bit 0, the slave-port gate) once paging is enabled so the walker keeps its clock. This is required for the RK3568 NPU MMU. Signed-off-by: Midgy BALON --- drivers/iommu/rockchip-iommu.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c index 4da80136933c4..e3d8b6e9ca12b 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c @@ -953,6 +953,18 @@ static int rk_iommu_enable(struct rk_iommu *iommu) =20 ret =3D rk_iommu_enable_paging(iommu); =20 + if (!ret) { + /* + * RK356x v1 IOMMU: RK_MMU_AUTO_GATING bit 1 enables page-walker + * auto clock-gating; the walker's AXI master then loses its clock + * between transactions and a TLB-miss page walk never completes, + * leaving the IOMMU stuck (PAGING_ENABLED, never IDLE). Clear + * bit 1 (keep bit 0, the slave-port gate) once paging is enabled. + */ + for (i =3D 0; i < iommu->num_mmu; i++) + rk_iommu_write(iommu->bases[i], RK_MMU_AUTO_GATING, 0x2); + } + out_disable_stall: rk_iommu_disable_stall(iommu); out_disable_clocks: --=20 2.39.5 From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.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 A5151481237 for ; Thu, 4 Jun 2026 13:53:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581187; cv=none; b=ZeIOEdaLM4y5KW7/H7y5vaAYS9rnJNiN0ZbNLDUIUS2HS+fG8HPctjez3i3JyqVsglRmK5JGb3RW/URHP1xHEfCCeFG3RjnAW6JcG+NYPoMP6ypfwJwZK4JGNhTRImUcA5pW5peH4ZWKZaJCs82MoZ2DbB4FarQeTdPBtuD5nIo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581187; c=relaxed/simple; bh=O8Ms3qpIJaPqvvfdUy5Pzd6rw9MEf+RBk9h7q8KnQiI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GDj70flLRf2XEkZch82EeTo3sXLnTuX9FTBSNkOljxdkNUMgt+QYyXjtmN1FEYMWD9Os0vh33XovKtnh907fhPopWEF9755g0JDvuu5T6yJpsRbn0IIOaUIFpaYqrEyXAZ8pbsCipntbrbFNx2BMpYOy+5lZymm142r3fNj3vkg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=n3XmmfO/; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="n3XmmfO/" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-45fd461e4a5so580473f8f.0 for ; Thu, 04 Jun 2026 06:53:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581183; x=1781185983; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WLUAaZps1w8Jl8h4U5vkB2L5GVDJaAP0Yeaa4HLYIr8=; b=n3XmmfO/I6y8n+Dn4vlAnQ/jyKf+3MpwYHXAEhWZpYYiD4zNaN4AZIqmkLFKgzK3kJ Cy9EMImaXNtaZeRlsGi69IHJOa4isKVksRneDKpo2tfs3cCIMhPNoQQfEUVTH24iezbF 7oUklZXo7SGuL3AE4SRDETsOmMPTraMmNexnUiqX/lItDRGNOrKptf10twQoypQc15Xx 8vd1EpKOavGAC8yUhiXmeszwvHObRPJcjbv3tNbzIhAhL39L05rgJ234JJvlQKQ8CXXW vvvDm1xmFYhuWqX+uUkV6C2XqVjZ8TO9vjOZ3q/2tHi+J/zPPwuOcJr5pOHLb/DyqcPj RXnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581183; x=1781185983; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WLUAaZps1w8Jl8h4U5vkB2L5GVDJaAP0Yeaa4HLYIr8=; b=TUEOH+MXLF//Gk8U3lWdAMsReRdaDTFG6t0QL5TnvjgzrRlGTDaSWVJgVP3vjPMaif 3Ds5BajC+cckXeQGhb5kpUaOMtE+M0SNOBMtybeboNpnKxaHSZg/2bo9r7L0gWqQGUMX 7YR/DT3Xr4nrOnLfNDGES5BvIT4ALttbX2CqokQXfAKsmvH0bcH2rWXeP7XhYaJwX5xv xHXrlL1sUfiTHVnZY4QFArqHF4ousTDlZY/HiivpVrGMMrvMl73ovDxDS1XeSffiGJ/C f1Yw7b483QWpgijYcbfI47h9rDbIvumM95GKsyK0gxOPgtcyBgmQGNc/Du9WLYerBzm3 Y/Sg== X-Forwarded-Encrypted: i=1; AFNElJ+8uLcvAo4wIqgMVUNaaS7GngVE31nO/0Ld3wNpS9JOjlV4Qfp2W95sx/5cnBbliJcsadIQzom6voGvMrg=@vger.kernel.org X-Gm-Message-State: AOJu0YyNpJK6HmmO/5pin0JPj3wik9Q1/QBd9N4Q6fsk5G7XiDkqoeGs H/qbL9Xs/mvmAuYhhgJ/GzZdMVMt+/NpR2WnpthgZ5Ep9rLV+l1UHpFV X-Gm-Gg: Acq92OGLJuqTQEqzg3qTeGoWPoZV8v7PX/S0Bh7F3tx8K5mfeuaqQ+5FiOI5XPAONLF F/XPbcWDBl/8TrMgIAXvJQ1O+avH9cb+cAd1eSeFykducJAY0u4Je9FXCkdyRJUYFGpmabB+xwp vwlC205oKCwBCzb94acqFSjX1849HGRQqRtanfCZUp9wK4vckKXNTEGszr8AseBVqER+afjvp/c ssOfVg+s1kzowCZlv9AsbIntS9H+sKKrB9Ji8e7k7BLO2yuLWQP0Id/s84zTSE8mZzl6qgIsWUK lvGt4tREbR80xi+VsdCSXE1DT7IGkFo0DGJCIYnuDrDhua+TWvgc0JqjRAK9scMd/IVsNYPx/HT WDktq/OV3i6xFlhHtp+U/jT788x1uDy29EvoTiXmpRj3eP5vd+0ck6aXQYHHimx2RdqW7HtOg1h AfXQeZA6XuSEh/CiNmI0j5puWEtzAdh5+4zcTcun9b6yAZ1l0fOl18AL+hYOEaft4= X-Received: by 2002:a05:6000:982:b0:460:2d57:fcf2 with SMTP id ffacd0b85a97d-4602d58034emr3094425f8f.10.1780581182959; Thu, 04 Jun 2026 06:53:02 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.53.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:53:02 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 7/9] dt-bindings: npu: rockchip,rk3588-rknn-core: Add RK3568 Date: Thu, 4 Jun 2026 13:52:53 +0000 Message-Id: <20260604135255.62682-8-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The RK3568 carries a single core of the same NVDLA-derived NPU IP as the RK3588. Add its compatible. On RK3568 the NPU NOC bus-idle and power gating are controlled through the system PMU rather than a dedicated register block, so add a rockchip,pmu phandle to that syscon. The RK3568 NPU has no dedicated SRAM rail, so sram-supply is required only on RK3588. Signed-off-by: Midgy BALON --- .../npu/rockchip,rk3588-rknn-core.yaml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/npu/rockchip,rk3588-rknn-cor= e.yaml b/Documentation/devicetree/bindings/npu/rockchip,rk3588-rknn-core.ya= ml index caca2a4903cd1..af9936b32e9fe 100644 --- a/Documentation/devicetree/bindings/npu/rockchip,rk3588-rknn-core.yaml +++ b/Documentation/devicetree/bindings/npu/rockchip,rk3588-rknn-core.yaml @@ -21,6 +21,7 @@ properties: =20 compatible: enum: + - rockchip,rk3568-rknn-core - rockchip,rk3588-rknn-core =20 reg: @@ -50,6 +51,13 @@ properties: =20 npu-supply: true =20 + rockchip,pmu: + $ref: /schemas/types.yaml#/definitions/phandle + description: + Phandle to the PMU syscon. On RK3568 the NPU's NOC bus-idle and + power gating are controlled through the PMU; this points to that + syscon so those registers can be reached. + power-domains: maxItems: 1 =20 @@ -75,7 +83,15 @@ required: - resets - reset-names - npu-supply - - sram-supply + +if: + properties: + compatible: + contains: + const: rockchip,rk3588-rknn-core +then: + required: + - sram-supply =20 additionalProperties: false =20 --=20 2.39.5 From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 650C5481254 for ; Thu, 4 Jun 2026 13:53:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581187; cv=none; b=WJLB3h0iN1uP5W8cI0/42QSi1b72tuwmPuTTwUNSbXx/kyfyNszXDl/oe3yBg91y+MZDc0myl+cE7i70wDVjytMT1V6k5er8YRDYwXzwq/NdVUd/RkC6xqcVG3V+XkOCmAD/q/8RSGF+nNi9aszIJFVjUfcwHI/CvQ4lLJTV/UI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581187; c=relaxed/simple; bh=PruqalRhu/z+DKkyMkBAp0/bJ7evWCq2fSw38PfA5zo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PY/AGhawK1yo1QaJlgRr8DrZbrqucWetQXXZo5PwtrdZxglChqRPpMhM12NSKda03DDaCoZoZDo/+PlJXLcRXRFklE6/m+nBBoxqcEyzPktJBEDJTatSq3lL2otNHzT65uM6UPj84OsskLECgsoi6zRGHeUzh9TCP4dN+J5Kqkk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=AAJwU3U5; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AAJwU3U5" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-45ef616daf6so717362f8f.3 for ; Thu, 04 Jun 2026 06:53:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581184; x=1781185984; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6Y0cyJs3YzhZbMhMCeS+YcB/ZC7ibeA7FwgxaOl6j4E=; b=AAJwU3U5rihahWXlDWTX5MTDCBWIB6hKwHJc5GsXjizinfZkYKyUwzkyIxqEbhLLka rifQARAZWOOI2BRSoYFveQ8MZfb408Bf5kcGhxBlboOovz/yzsIxhNun4o22mU7Z3M1R TP1jC/+7j5cLAjmY18TDmFYelX7oKyDiVSsKQgA+ryDAluhEssyKmPz+quFv8STpy2/F JtMU8bKZ+pe6sz3uLDkg+cBb+NzDfp+cR+foBN2iwfJ4PPR5dN6A5gmUaQLHXnJj1uYI n5Vpw7rT+SkxJIAueN0Cosh0PpDaWWJcvM8ZkJfbYmhX+cgPnFELQkk72kNZLEbl1JNZ /wfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581184; x=1781185984; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6Y0cyJs3YzhZbMhMCeS+YcB/ZC7ibeA7FwgxaOl6j4E=; b=LfKCqoaFVGt3S39Bde3Dg3CPSDQ8YEF7tLX+tC1dFaqYo3xaa7hJbALdVbzbig3DQz HTmVYZ1He2Ra0vXAfIutcd5zd94AEDDEvkqlQpdeKdjzLZ2R2KljG5Q2wUrBS0jL2MPZ 34d+imHucPYQ3Y/eJ275ZOF9jYuUckePf2cCYsPaIoMfyneNTBu3RpOW/VmFqlTT+Fgk VDDqGrlatD1MQqjALAElGYvu7S9kdv+kIaSqqDmws5yqfTcoxEeijjlqGcS/fSoA2sSD MqHfcIkcjby6STSLHoCRYR0ymJUNO7shxRN9IaK4b+ZcE+UFprWYBbpea9S4a/yAuwcz yAOA== X-Forwarded-Encrypted: i=1; AFNElJ+aCAAD0A0ZZJIvrH67U1wFX8emirx9FNcweT+Fii7oUat1btET3ia4PV+0mgMRz5UtcTkZE2PU/GthGGo=@vger.kernel.org X-Gm-Message-State: AOJu0Yw0waUO//uBSysIb323I3UBLDDjp/8FwCcbjkq2Eo+6udQCRxC1 nduqcqEHa5PN4CtNegCV5ogNdyNQXI9XJ1MsWND1CTPw94yj6wXsKiQt X-Gm-Gg: Acq92OGnYxp/Ch4kr6oiwdE6EoS1LqeGeheVPMglQ+QCnQlElUIkAc6S0N/LQyMujC3 8d+1sk7GJwbFIRHpjH5CWVh9HiY5xAoUIt1EtJcJBfZ5jhpaVj2OAT8Te7KAgvDAxxKjCEP89oR 7u2XEbY7N9IfYN9FMQisC9Hl01n5ZqGaCfFL9NlcKaQt5fy/EseziB2HKFeWdyT5ZlcilHXOkzG zk+vROWjJNlHQzWeVJ6dtWbySwXDqAs2QttlI7wN1eboxbSEvuK1eVBNTbu0YwC1QJ5TPJQ3NA6 i350Df1kdlP86kNn/Lj2QHEftkaqsd3tVwwVk9e6NA9Thj/akmK/KWSpnjzBO4KE1CkM2XpxGDb UTwJpN11Qc33M0weHzuOfisA1SsXX7hK4c2rDy/3NOHfmSAPrAQHKd24ps88x87VTRXJtIlKjC4 TnulxjYgz6TvkUzefjYQbkr/SRcz1vcPs0vg+82SGRdy1YxUog3afd3KWgtYmiCbY= X-Received: by 2002:adf:fc48:0:b0:446:96b1:f53 with SMTP id ffacd0b85a97d-46021844e6emr9463717f8f.26.1780581183713; Thu, 04 Jun 2026 06:53:03 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.53.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:53:03 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 8/9] arm64: dts: rockchip: rk356x: Add the NPU and its IOMMU Date: Thu, 4 Jun 2026 13:52:54 +0000 Message-Id: <20260604135255.62682-9-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The RK3568 has an NVDLA-derived NPU at fde40000 with its own IOMMU at fde4b000. Add both nodes (disabled by default) and the NPU power-domain child under the PMU power-controller, and point rockchip,pmu at the PMU syscon that controls the NPU NoC bus-idle. The power-domain deliberately carries no pm_qos: qos_npu sits behind the NPU NoC, which is gated until the NPU is brought up, so a genpd power-off QoS save would fault reading it. Signed-off-by: Midgy BALON --- arch/arm64/boot/dts/rockchip/rk356x-base.dtsi | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi b/arch/arm64/boo= t/dts/rockchip/rk356x-base.dtsi index 64bdd8b7754b5..50ce5a5e4fc24 100644 --- a/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk356x-base.dtsi @@ -512,6 +512,13 @@ power-domain@RK3568_PD_GPU { #power-domain-cells =3D <0>; }; =20 + pd_npu: power-domain@RK3568_PD_NPU { + reg =3D ; + clocks =3D <&cru ACLK_NPU_PRE>, + <&cru HCLK_NPU_PRE>; + #power-domain-cells =3D <0>; + }; + /* These power domains are grouped by VD_LOGIC */ power-domain@RK3568_PD_VI { reg =3D ; @@ -948,6 +955,37 @@ qos_rga_wr: qos@fe158300 { reg =3D <0x0 0xfe158300 0x0 0x20>; }; =20 + rknn_core_0: npu@fde40000 { + compatible =3D "rockchip,rk3568-rknn-core"; + reg =3D <0x0 0xfde40000 0x0 0x1000>, + <0x0 0xfde41000 0x0 0x1000>, + <0x0 0xfde43000 0x0 0x1000>; + reg-names =3D "pc", "cna", "core"; + interrupts =3D ; + clocks =3D <&cru ACLK_NPU>, <&cru HCLK_NPU>, + <&scmi_clk SCMI_CLK_NPU>, <&cru PCLK_NPU_PRE>; + clock-names =3D "aclk", "hclk", "npu", "pclk"; + assigned-clocks =3D <&scmi_clk SCMI_CLK_NPU>; + assigned-clock-rates =3D <200000000>; + resets =3D <&cru SRST_A_NPU>, <&cru SRST_H_NPU>; + reset-names =3D "srst_a", "srst_h"; + power-domains =3D <&power RK3568_PD_NPU>; + rockchip,pmu =3D <&pmu>; + iommus =3D <&rknn_mmu_0>; + status =3D "disabled"; + }; + + rknn_mmu_0: iommu@fde4b000 { + compatible =3D "rockchip,iommu"; + reg =3D <0x0 0xfde4b000 0x0 0x40>; + interrupts =3D ; + clock-names =3D "aclk", "iface"; + clocks =3D <&cru ACLK_NPU>, <&cru HCLK_NPU>; + power-domains =3D <&power RK3568_PD_NPU>; + #iommu-cells =3D <0>; + status =3D "disabled"; + }; + qos_npu: qos@fe180000 { compatible =3D "rockchip,rk3568-qos", "syscon"; reg =3D <0x0 0xfe180000 0x0 0x20>; --=20 2.39.5 From nobody Mon Jun 8 08:35:26 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 2F28C481659 for ; Thu, 4 Jun 2026 13:53:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581188; cv=none; b=rU53JJDRJ5dlhaF0U774lfNUwjBU89ZhQE2K9NGogIzAm88PFnBwLXUQoYS2tZ9vNM0FWoxZNm0RWBSyLAE8APtJm4GW+xqx4jgnhqJYs5nHHX+BIMtbivp6qn3AkQdRgzM2vxL4WOkgPgXzLvXfefBFCJVQ15y5EZqtG50WZAw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780581188; c=relaxed/simple; bh=ilepAD978lUz3gU2spyy41VvdLx7IfB2hzbepfux7ew=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nXKKZcx0DbJUZ0W9XfYedlklbWKfDGMHT4GO1Vz3z6w6Ke48NStKIxXNoJZlHhvq3Nh4PjIpVjMLt9gImS2AfaJe2EjmU1LAPPQPfjvLBFNxPmLr5OqhoaUdsr5ulYWsMKVE4RjDUTBca2tgydhiMiiGNvxoQgMGWB40DVG75wk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Nlv5hFyW; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Nlv5hFyW" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-490b8a97b11so8810155e9.0 for ; Thu, 04 Jun 2026 06:53:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780581184; x=1781185984; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6AgZYnyS4i6ey0fjJps0/Fygo8+mCWzQwi4kSxOwSD0=; b=Nlv5hFyWGQCftqvVeGhbyLlxyP7mXXpx/MNWjcE1ODkIsSTHSXtgLPkkxEKLQB9jU/ 4HxT/EUsnrPR5uXUOV7Ppon7TTbBDHc66aQVdQssx+faWNRXUKQSLcM/ifPDPsXuxJue dk2ul6pi3iwFG2eDXdknh7gV7J7TuVQPucDVtv2YelOf+fhtjv0dquM+eoIVLMf5oIti FwJl2yGs3qe60JuqWO00wpcDDrIzQaxUYmIj0dzxjPrvraBeIbozHbwqN027Ww2FYmjo UmTyBp2hx48bRLdGAaIxMbx6+SbHUAUboiUntxwFRSF1IOqu/EGtpOM/jzJOoYFpvW7y 6kng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780581184; x=1781185984; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6AgZYnyS4i6ey0fjJps0/Fygo8+mCWzQwi4kSxOwSD0=; b=nzt5msi3LFr/6bjrpxRm5aDI+rIECH6eLZ2tZFSHg3+jnyO+emb6k2dXs/abd5kLfQ TJzpmYnFtBM7Yss5djTeVys9kDYzxDyJ62kNsA6Bkou8flBDPX8j2eWSqjMeEWtjF+9s 2sXxqAhDzhJNo1WkUC2JdMMpqyrtmN0wO1LrTo2J6JTVVZ3jhcpxvyaP6NFGY1U5y3zf Z+cnJhFieHZUrbfgV+s5cihqdMDm8pz4ERT2OnIkCwjwd+4jqaCdVrNF+xfMR5VwECiy Q//YqnOJH4eWoXDvDGK2+HeprbUegrjkutSqoAf6AKTa2pyaGSze3Fv+30VB/0oTFE/b rT4g== X-Forwarded-Encrypted: i=1; AFNElJ8uYcUAdoJvTfFMzwb70+Q87d89o5teOctsoplVREfBfdmB9vyPJJ9Jf1ZLu8SiOodRhjFmHEjv9OhxwaQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+NEiPAbTUPiZRQBzi1o+yB7GT9tSlQsEcryuiEY7LeU4thOZu 4Ugktu5qPoPGPDFjNvT+1nXOtlmYTw4meaZr75aNzddR1yjheilfmOWw X-Gm-Gg: Acq92OHJ/sDPXpEAVTlGWCd9jFMM1eK9i9MXLRm9A7bzyQYnl+u+TKSU+hgbsizAslL CXAF7zKVLhyZYo9e1ZbgTTh93VXL8suFyTg1t8LEOHTak6WiNxO9BtySPMVuOlP74pGWW1gN4qC gjH5RhB1Ole2utPS75HM6olt58Hy5koGLkIAF1wKP2pcao+U+mHiceB1Cn5FdHeAxf2r3VxhxOY v0wax1Td2qx4K1rZd8lcTGiBYgm8zr+E9KAxWvVYCHWPh4iBTe+ccQUwURj0t106jYqJBaE72bL HMEPlk55KPs+cnYKJyRZyMX+rpWHWoNuNe8ctsZNrnUE7dQQbTjR6w6jOK16hB4ysEqXrseWkFS 4Dmm+MebB6ixeTm+S5por2DKn95wpT+dybKXImZ+e+vpufKafvVXZKCUZDCEmrxHHo0AP8V4wde a5ucdTuPC2T+f2uByv5vaeFotLoHC7DMKNIFpcjm6mFCuq8gzbPcH29fD1ifKsitk= X-Received: by 2002:a05:600c:5288:b0:490:b473:8f78 with SMTP id 5b1f17b1804b1-490b5ec3ae6mr133508845e9.17.1780581184471; Thu, 04 Jun 2026 06:53:04 -0700 (PDT) Received: from compiler-rock3b.tailb81abf.ts.net ([2a01:e0a:104a:4d80:be24:11ff:fe12:2776]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f0a43e9sm16661068f8f.0.2026.06.04.06.53.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 06:53:04 -0700 (PDT) From: Midgy BALON To: tomeu@tomeuvizoso.net, ogabbay@kernel.org, heiko@sntech.de, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, joro@8bytes.org, will@kernel.org Cc: robin.murphy@arm.com, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [RFC PATCH v3 9/9] arm64: dts: rockchip: rk3568-rock-3b: Enable the NPU Date: Thu, 4 Jun 2026 13:52:55 +0000 Message-Id: <20260604135255.62682-10-midgy971@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260604135255.62682-1-midgy971@gmail.com> References: <20260604135255.62682-1-midgy971@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Enable the NPU and its IOMMU on ROCK 3B. vdd_npu is marked always-on so the rail is up before genpd de-idles the NPU NoC at power-on: the PMU de-idle handshake needs the rail powered. The PVTPLL compute clock is brought up later by the driver. Signed-off-by: Midgy BALON --- arch/arm64/boot/dts/rockchip/rk3568-rock-3b.dts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3568-rock-3b.dts b/arch/arm64/b= oot/dts/rockchip/rk3568-rock-3b.dts index 69001e453732e..7ac780ed313d5 100644 --- a/arch/arm64/boot/dts/rockchip/rk3568-rock-3b.dts +++ b/arch/arm64/boot/dts/rockchip/rk3568-rock-3b.dts @@ -330,8 +330,10 @@ regulator-state-mem { =20 vdd_npu: DCDC_REG4 { regulator-name =3D "vdd_npu"; + regulator-always-on; + regulator-boot-on; regulator-initial-mode =3D <0x2>; - regulator-min-microvolt =3D <500000>; + regulator-min-microvolt =3D <825000>; regulator-max-microvolt =3D <1350000>; regulator-ramp-delay =3D <6001>; =20 @@ -787,3 +789,13 @@ vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { remote-endpoint =3D <&hdmi_in_vp0>; }; }; + +&rknn_core_0 { + npu-supply =3D <&vdd_npu>; + status =3D "okay"; +}; + +&rknn_mmu_0 { + status =3D "okay"; +}; + --=20 2.39.5