When CONFIG_SKIP_EARLY_DM is enabled and no clock driver is available during early serial init, devm_clk_get_optional() returns an error pointer. The original code attempted to enable this error pointer, causing a crash.
Fix by checking for both error pointers and NULL before calling clk_enable(), using IS_ERR_OR_NULL() to handle all cases properly. Signed-off-by: Aswin Murugan <[email protected]> --- drivers/serial/serial_msm_geni.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/serial/serial_msm_geni.c b/drivers/serial/serial_msm_geni.c index 3dca581f68f..d5c4f3f1310 100644 --- a/drivers/serial/serial_msm_geni.c +++ b/drivers/serial/serial_msm_geni.c @@ -524,7 +524,8 @@ static int msm_serial_probe(struct udevice *dev) priv->se = clk; /* Try enable clock */ - clk_enable(clk); + if (!IS_ERR_OR_NULL(clk)) + clk_enable(clk); /* Check if firmware loading is needed (BT UART) */ proto = readl(priv->base + GENI_FW_REVISION_RO); -- 2.34.1

