From nobody Fri Oct 3 08:50:39 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (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 4BD2B368097 for ; Wed, 3 Sep 2025 18:51:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756925502; cv=none; b=EveDSyVTc/GAg11IHxVGrbiWOMRazkYKhxtT9GSHDTDrXEyakr0d0ENynGceVAth/7rKfP0h8a++Z+2bUECxd7WxoWaMpgsTWKFz8X14yko/mzn39LxM7dHGozd7FPvhBtERLVE/n+jfCq5Cj1yJ7Rs3qJhhNM7+myJu+BJ2Wb8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756925502; c=relaxed/simple; bh=R0oflqcTBWlX0b4YCyWSou1MTD7R2HRR3jtaeYRxJbE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TzqgLayChMX9eAjg59HKZdYqNrUDAN/NpRUs8NjDBA6f4vsPiCszS67UlGBWT7g/U6xibPADKVbt2IXYsQBwF5MvuEAuKOnYphKppZ1weohM7+21uR4meIApKAcR11ICnLjCCFSgbEPtMUZ4w0YzJ1NmCEBNYabVXI+nK3oVGdg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=U6oWkHLN; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="U6oWkHLN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1756925498; bh=R0oflqcTBWlX0b4YCyWSou1MTD7R2HRR3jtaeYRxJbE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=U6oWkHLNgFsMr372iGKU0vgp9oh/H36eTC9Wa5sznTgNeAS2Rbz/e5j/cCll+Ysd6 bo+SHro9I3ezrZBWVxSdFV20DRfGpppRLH3ahqlsu3apQAuQKEUNxnp0nOrhNShd3n rvyCtjxrqObjvOboaC77Z62pKeGZwyuOdHPHHmrZk7vU9JtCuhRq9skwRMqPDbZ4Yi Dxap/27yhkFQxTLTZe5frhVzk8Yc/+BqiEVxbjuRh3aJVWnL/ptr6Oc/5SWVNAftgy ProROScqdasCOhhXhBm9VMtkr9sljfH1UB5UUbCb6XjlpJ33K1OAnKIZ9nLMHfIfpy +5ii3FWfEysDw== Received: from localhost (unknown [82.79.138.60]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by bali.collaboradmins.com (Postfix) with UTF8SMTPSA id 49B6B17E1301; Wed, 3 Sep 2025 20:51:38 +0200 (CEST) From: Cristian Ciocaltea Date: Wed, 03 Sep 2025 21:51:01 +0300 Subject: [PATCH v4 3/6] drm/rockchip: dw_hdmi_qp: Improve error handling with dev_err_probe() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250903-rk3588-hdmi-cec-v4-3-fa25163c4b08@collabora.com> References: <20250903-rk3588-hdmi-cec-v4-0-fa25163c4b08@collabora.com> In-Reply-To: <20250903-rk3588-hdmi-cec-v4-0-fa25163c4b08@collabora.com> To: Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Andrzej Hajda , Neil Armstrong , Robert Foss , Dmitry Baryshkov , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Catalin Marinas , Will Deacon Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, Daniel Stone X-Mailer: b4 0.14.2 The error handling in dw_hdmi_qp_rockchip_bind() is quite inconsistent, i.e. in some cases the error code is not included in the message, while in some other cases there is no check for -EPROBE_DEFER. Since this is part of the probe path, address the aforementioned issues by switching to dev_err_probe(), which also reduces the code a bit. Reviewed-by: Daniel Stone Signed-off-by: Cristian Ciocaltea --- drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c | 62 ++++++++++------------= ---- 1 file changed, 24 insertions(+), 38 deletions(-) diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/d= rm/rockchip/dw_hdmi_qp-rockchip.c index ed6e8f036f4b3d76425725c130394cedf039acd0..a775d89f20fc20e9103ecbac0dc= f3db10ba9984f 100644 --- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c +++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c @@ -455,10 +455,8 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev= , struct device *master, return -ENODEV; =20 if (!cfg->ctrl_ops || !cfg->ctrl_ops->io_init || - !cfg->ctrl_ops->irq_callback || !cfg->ctrl_ops->hardirq_callback) { - dev_err(dev, "Missing platform ctrl ops\n"); - return -ENODEV; - } + !cfg->ctrl_ops->irq_callback || !cfg->ctrl_ops->hardirq_callback) + return dev_err_probe(dev, -ENODEV, "Missing platform ctrl ops\n"); =20 hdmi->ctrl_ops =3D cfg->ctrl_ops; hdmi->dev =3D &pdev->dev; @@ -471,10 +469,9 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev= , struct device *master, break; } } - if (hdmi->port_id < 0) { - dev_err(hdmi->dev, "Failed to match HDMI port ID\n"); - return hdmi->port_id; - } + if (hdmi->port_id < 0) + return dev_err_probe(hdmi->dev, hdmi->port_id, + "Failed to match HDMI port ID\n"); =20 plat_data.phy_ops =3D cfg->phy_ops; plat_data.phy_data =3D hdmi; @@ -495,39 +492,30 @@ static int dw_hdmi_qp_rockchip_bind(struct device *de= v, struct device *master, =20 hdmi->regmap =3D syscon_regmap_lookup_by_phandle(dev->of_node, "rockchip,grf"); - if (IS_ERR(hdmi->regmap)) { - dev_err(hdmi->dev, "Unable to get rockchip,grf\n"); - return PTR_ERR(hdmi->regmap); - } + if (IS_ERR(hdmi->regmap)) + return dev_err_probe(hdmi->dev, PTR_ERR(hdmi->regmap), + "Unable to get rockchip,grf\n"); =20 hdmi->vo_regmap =3D syscon_regmap_lookup_by_phandle(dev->of_node, "rockchip,vo-grf"); - if (IS_ERR(hdmi->vo_regmap)) { - dev_err(hdmi->dev, "Unable to get rockchip,vo-grf\n"); - return PTR_ERR(hdmi->vo_regmap); - } + if (IS_ERR(hdmi->vo_regmap)) + return dev_err_probe(hdmi->dev, PTR_ERR(hdmi->vo_regmap), + "Unable to get rockchip,vo-grf\n"); =20 ret =3D devm_clk_bulk_get_all_enabled(hdmi->dev, &clks); - if (ret < 0) { - dev_err(hdmi->dev, "Failed to get clocks: %d\n", ret); - return ret; - } + if (ret < 0) + return dev_err_probe(hdmi->dev, ret, "Failed to get clocks\n"); =20 hdmi->enable_gpio =3D devm_gpiod_get_optional(hdmi->dev, "enable", GPIOD_OUT_HIGH); - if (IS_ERR(hdmi->enable_gpio)) { - ret =3D PTR_ERR(hdmi->enable_gpio); - dev_err(hdmi->dev, "Failed to request enable GPIO: %d\n", ret); - return ret; - } + if (IS_ERR(hdmi->enable_gpio)) + return dev_err_probe(hdmi->dev, PTR_ERR(hdmi->enable_gpio), + "Failed to request enable GPIO\n"); =20 hdmi->phy =3D devm_of_phy_get_by_index(dev, dev->of_node, 0); - if (IS_ERR(hdmi->phy)) { - ret =3D PTR_ERR(hdmi->phy); - if (ret !=3D -EPROBE_DEFER) - dev_err(hdmi->dev, "failed to get phy: %d\n", ret); - return ret; - } + if (IS_ERR(hdmi->phy)) + return dev_err_probe(hdmi->dev, PTR_ERR(hdmi->phy), + "Failed to get phy\n"); =20 cfg->ctrl_ops->io_init(hdmi); =20 @@ -556,17 +544,15 @@ static int dw_hdmi_qp_rockchip_bind(struct device *de= v, struct device *master, =20 hdmi->hdmi =3D dw_hdmi_qp_bind(pdev, encoder, &plat_data); if (IS_ERR(hdmi->hdmi)) { - ret =3D PTR_ERR(hdmi->hdmi); drm_encoder_cleanup(encoder); - return ret; + return dev_err_probe(hdmi->dev, PTR_ERR(hdmi->hdmi), + "Failed to bind dw-hdmi-qp"); } =20 connector =3D drm_bridge_connector_init(drm, encoder); - if (IS_ERR(connector)) { - ret =3D PTR_ERR(connector); - dev_err(hdmi->dev, "failed to init bridge connector: %d\n", ret); - return ret; - } + if (IS_ERR(connector)) + return dev_err_probe(hdmi->dev, PTR_ERR(connector), + "Failed to init bridge connector\n"); =20 return drm_connector_attach_encoder(connector, encoder); } --=20 2.51.0