From nobody Sat Jul 25 00:11:04 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (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 93A59434E5D for ; Tue, 21 Jul 2026 20:24:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665495; cv=none; b=RRdk60KJXKuQGUmuBLKJXC9dskacVLf+DcHvIampLPh7zDNG7J18v2nH8QXIoLjfb7pbdVkZ5luumEakcqz73SC/cYNNPTK1F3+37KrFFkW0I9OejArCM5GKZO2vwbqDemHd1ODkRzMHUsEM6aIZASUmQyWN28+525i5zTH0bcI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665495; c=relaxed/simple; bh=/NSeXyQh14q1RLsVh3IApyRF+1dSX1jbXYLoxHJu748=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fCKpukCIKb89gPGCKFB0VVBDpkAqahHKZtPlg/BogKNP/okI3kc9y2eI6vXXzc2F+/UwWinXrLThnGFIzzOg693lbFbcie71yWzQvCTbli7V4XRGdA1slpqUEe5L36KQlbBfkFARVZHBSk5oykwI/0Oed5WeqDRC7dnKYGJBAbA= 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=ocfrdmgA; arc=none smtp.client-ip=209.85.214.181 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="ocfrdmgA" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2cc61541f8cso66416025ad.0 for ; Tue, 21 Jul 2026 13:24:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784665493; x=1785270293; 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:content-type; bh=mcyzzR0Udigzqoz4SO6o94OdysLxvgEhiMGWzRV+U34=; b=ocfrdmgAAuxOCHmlZklV87TTfMBtdeNh67rTBViEraW/fZIc2jeYiAnInsZ+DHcIsn yLZvZ6CATM0R6f++BReGegYSqJ0BZgEELScaJ3tTVGsXQATtQz3B+M3L20W9Hwfw0x1J wTdf3B4y9xkTNNqNUPNZUPu+iwIzdN11dw8uIrZ7k3SgHHFSESJ+76bMklxsyzS5VRjR m49RMLeTsHPNs0aLVv2/L5CzdzfIMrQ5zJRhz1smGakYAJe7PSsA+rlQ46fUl+UgHlDl lkaQINzbdk7D36ggw7WcfJu9lVmZfAPONh7NmVRRMp8jbltBwcuc/71GhuagK9UfIcbt MesA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784665493; x=1785270293; 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:content-type; bh=mcyzzR0Udigzqoz4SO6o94OdysLxvgEhiMGWzRV+U34=; b=Zb0VDc4d6IZQAgpspns+Lc2IvwxdFPT+KwjR9xa3p0gL/v3mjS861GZZOV2zyy9BW9 Tr6dzOjxJhYHtQPtO8kRsO3z/NXkks1ou+E4xIaD0LG+Slm1Y/e1Rk+m68HnZmh8nqJj coi5jnWizNhk+rtbl4fQ+OSYxp9Rtzcw1DLiXi0oiR9+jEY9IvaGO+kF+k+Ql/77nRPa 2ms/gvJ6EqkhxqrYNLcl+smyAGHxNvVrH7izFNotRMQ7vdUi0HdRgL/DpzhWVuK16jXo cpVx/TmDPfwszH0C2yIlHnsI11h0R8Ku2rUs34edlIBcchjWTM9VS2miDevffIjWvjn3 STBA== X-Gm-Message-State: AOJu0Yy9REhxqPO9N8s3LXuYIILD/Q6xo5XGr4z4lcPlN6s1AUpPGVSV ADEjc3J2SyWZ0+YHfiBkdoUXdUvKmi9hRzk548AULreS/Z8UKdXaqPN32rUdZQ== X-Gm-Gg: AfdE7cmjfhlyodqfu/LlBCKlyyqb3e/im3yZCUOY+vLQ9weIZTvUnVQFxvfWL79M0x3 0PW3wCW3Gd8q1VKA0tt1kZ9i1UPfi/6Jxbcf5X5YvqISJ05Uw4umbhsanYRdJnS77EDprT3JVpS cAnUjmAWdO0pozYALfLfxh8Jga8rUbiUi1UTrlF1DV0yKyUmQQd5uzGfqJI2wlXWvMHwZ9V7x0t 95Cr1Lr5tYJ34iRaOlTR+bmLTDegjO/kKoEZugq0YWH58PtOQVGdS1TsZbYkJIg2CNdsH2Ggc4y rSXe5vux4hzmTN7zYdJ1uIcHT68dbZ/KGZEnaBGq1FAVTK1Gg9RmG1eefaTS686Kr5dI6xTSCrd or2Z0odffZkEqnUJV51eDf7ah7t8/65CYMVE7WWirPKW1PknU27O3K0VAf2OG4GuwA8/UeX8jBZ aA7/EA6s4TEzyA5Mk8UlkN9RCdaphFOMU0vKNDikL1PeqrQ2fTdzzm9E/QiN1Uj4cyeYPCCNyNy Jxhtn4xuN2RSBJrqhoA0gLwtctlxrO+3VwwfxOQ7FyACWF/K0Ep4vM= X-Received: by 2002:a17:902:f688:b0:2ca:2390:ff13 with SMTP id d9443c01a7336-2cf8dc97414mr12661185ad.5.1784665492839; Tue, 21 Jul 2026 13:24:52 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8f2e7a83sm2592285ad.42.2026.07.21.13.24.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Jul 2026 13:24:52 -0700 (PDT) From: Rosen Penev To: linux-kernel@vger.kernel.org Cc: Krzysztof Kozlowski Subject: [PATCHv2 1/4] memory: fsl_ifc: Fix optional NAND IRQ handling and migrate to platform IRQ API Date: Tue, 21 Jul 2026 13:24:46 -0700 Message-ID: <20260721202450.485171-2-rosenp@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260721202450.485171-1-rosenp@gmail.com> References: <20260721202450.485171-1-rosenp@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" Switch from irq_of_parse_and_map() to platform_get_irq() for the main controller IRQ, and use platform_get_irq_optional() for the NAND IRQ which is optional. Guard free_irq() calls on the NAND IRQ with a nand_irq > 0 check to avoid passing invalid IRQ numbers on platforms without a dedicated NAND interrupt line. Get IRQs first as they can return a probe defferal error. Helps avoid doing actual work in such a case. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev --- drivers/memory/fsl_ifc.c | 43 ++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c index e89e0c6cc4bc..dce94d8b05b9 100644 --- a/drivers/memory/fsl_ifc.c +++ b/drivers/memory/fsl_ifc.c @@ -89,12 +89,10 @@ static void fsl_ifc_ctrl_remove(struct platform_device = *dev) struct fsl_ifc_ctrl *ctrl =3D dev_get_drvdata(&dev->dev); =20 of_platform_depopulate(&dev->dev); - free_irq(ctrl->nand_irq, ctrl); + if (ctrl->nand_irq > 0) + free_irq(ctrl->nand_irq, ctrl); free_irq(ctrl->irq, ctrl); =20 - irq_dispose_mapping(ctrl->nand_irq); - irq_dispose_mapping(ctrl->irq); - iounmap(ctrl->gregs); =20 dev_set_drvdata(&dev->dev, NULL); @@ -204,9 +202,21 @@ static int fsl_ifc_ctrl_probe(struct platform_device *= dev) int ret =3D 0; int version, banks; void __iomem *addr; + int nand_irq; + int irq; =20 dev_info(&dev->dev, "Freescale Integrated Flash Controller\n"); =20 + /* get the Controller level irq */ + irq =3D platform_get_irq(dev, 0); + if (irq < 0) + return irq; + + /* get the nand machine irq */ + nand_irq =3D platform_get_irq_optional(dev, 1); + if (nand_irq =3D=3D -EPROBE_DEFER) + return nand_irq; + fsl_ifc_ctrl_dev =3D devm_kzalloc(&dev->dev, sizeof(*fsl_ifc_ctrl_dev), GFP_KERNEL); if (!fsl_ifc_ctrl_dev) @@ -246,23 +256,13 @@ static int fsl_ifc_ctrl_probe(struct platform_device = *dev) addr +=3D PGOFFSET_4K; fsl_ifc_ctrl_dev->rregs =3D addr; =20 - /* get the Controller level irq */ - fsl_ifc_ctrl_dev->irq =3D irq_of_parse_and_map(dev->dev.of_node, 0); - if (fsl_ifc_ctrl_dev->irq =3D=3D 0) { - dev_err(&dev->dev, "failed to get irq resource for IFC\n"); - ret =3D -ENODEV; - goto err; - } - - /* get the nand machine irq */ - fsl_ifc_ctrl_dev->nand_irq =3D - irq_of_parse_and_map(dev->dev.of_node, 1); + fsl_ifc_ctrl_dev->irq =3D irq; =20 fsl_ifc_ctrl_dev->dev =3D &dev->dev; =20 ret =3D fsl_ifc_ctrl_init(fsl_ifc_ctrl_dev); if (ret < 0) - goto err_unmap_nandirq; + goto err; =20 init_waitqueue_head(&fsl_ifc_ctrl_dev->nand_wait); =20 @@ -271,10 +271,11 @@ static int fsl_ifc_ctrl_probe(struct platform_device = *dev) if (ret !=3D 0) { dev_err(&dev->dev, "failed to install irq (%d)\n", fsl_ifc_ctrl_dev->irq); - goto err_unmap_nandirq; + goto err; } =20 - if (fsl_ifc_ctrl_dev->nand_irq) { + fsl_ifc_ctrl_dev->nand_irq =3D nand_irq; + if (fsl_ifc_ctrl_dev->nand_irq > 0) { ret =3D request_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_nand_irq, 0, "fsl-ifc-nand", fsl_ifc_ctrl_dev); if (ret !=3D 0) { @@ -292,12 +293,10 @@ static int fsl_ifc_ctrl_probe(struct platform_device = *dev) return 0; =20 err_free_nandirq: - free_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev); + if (fsl_ifc_ctrl_dev->nand_irq > 0) + free_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev); err_free_irq: free_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev); -err_unmap_nandirq: - irq_dispose_mapping(fsl_ifc_ctrl_dev->nand_irq); - irq_dispose_mapping(fsl_ifc_ctrl_dev->irq); err: iounmap(fsl_ifc_ctrl_dev->gregs); return ret; --=20 2.55.0 From nobody Sat Jul 25 00:11:04 2026 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (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 A57E9472531 for ; Tue, 21 Jul 2026 20:24:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665495; cv=none; b=qdPPt2I2nb7k/cZDC01ZO+mhqGAXv7UoakNL/31/dB61n0RU6qavWMEayx3Re5LoI6yUvCC/K2fKHRo0K7FTk61eroQKhs0YuOFZfV9vDV9k2x180djApSwGNgVgfcWmLJyjyj80UMlDqEvDl9JB5icCNqN9+MgsQDNkEM0OV/w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665495; c=relaxed/simple; bh=duFD0QtN9U+ugN5BgCecC8CfNwJQAWw30nfZVU41cck=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GaBMw8J1llb2+XCy/r2RKyZiPP8n33sDre9srdyU3TugO8604oQc/cwxJEZbCJoJ0Yuekz9vPlKft1adyyADajdPZmGsqAKxDct71YuYnIY5S78Xl7NMZLXhnWz62yAfALKRolb671xh2ybi11D8HdfbuDIQkD9rTJqMllFCBDI= 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=o7MOKgpO; arc=none smtp.client-ip=209.85.214.178 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="o7MOKgpO" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-2cea3004256so134545435ad.0 for ; Tue, 21 Jul 2026 13:24:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784665494; x=1785270294; 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:content-type; bh=evVhRMFgfak1ucgW244RBR/KV9APrutKlEbS++D55x4=; b=o7MOKgpOdHo1Qv7CrfQGvLXnqoTf1i3H21Xj3a7Z/YkGCviywS9ygQREQjKfhMPSD3 QUEp3IBwDtPcDUglJ5l0FEocw42PyPFIMi7kHSmPESeE4hwsnCLhEObbArztB5qLlnVw rysCwIytgNf5GCTP4bV8/PJY5jGPF/WRWSG68D9LMbUsWG5v4yfEShwS7a9iaAoWSXUH 8h2e8+vAhzX9tHV3W9jJgZUE5cTR7p4wETk5LwBAK4/xRhspFG1bTQbXIA9gQvt8A1wV uI3ZoxHSAmgN/aXmKzN/I1j4vNCGpzYlcFBOCJ45jiv3paEKVFKdWfi8k2qFIZJjPKOH bLYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784665494; x=1785270294; 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:content-type; bh=evVhRMFgfak1ucgW244RBR/KV9APrutKlEbS++D55x4=; b=Q/XJsRB5F21VC8zrwBPuMVvOKCty/t4AtH3YeQqeuW4gN/ebZel4uSUxRNuJGpSHFb 7p3cNCUccCliVV1nTNmipKyNpMlpae/2eBxwcfRfp+bhWj3F3aK2+UYDPIeDcaV5upNq E0YGSSAmPyRfjPViR4ODEtkSmL58psRlCdHyxckVi/E9osJ/PvsI6N5s4I6B5V50SZXG qHbUnZWiiSLdSFLwSq7SofanWzeb1FkdBAYTboO9KrwGZZSMEpxF9giW4+SbN38+2KKg QCB31jKfNSV57HMiDoh8Ykj70+MdZHPJ2TeaizBnM5SLoNAv1h4ugkKD5ripUyJ6GPJG oADg== X-Gm-Message-State: AOJu0YwGEmpxHQRGDQPxrx2mvsF+proefdtP2x3ik3gdMuwwFj2ZMTRt gN15WMdViC5/trBUoGTQA3RADWh6jAPRylTc2kVzA0akusiDHSlmTQTnHkxvmg== X-Gm-Gg: AR+sD13YYrP9g1PjxfRXlapjeX/f4fgmda6i5d5fLRz/OHsSLzFmhD1shk5AkTZAS4e jdDfhRpDl/FDacolaFKsUHOn1UKG2I0w8zzYehfRKX7t0bJscQz5TeoR0iuBW8in/2A1KbnqLsu VIEg5L+MNc52ytimkQmCiCNTiCJk3eMSEGlVUAaLvyYdEgn0E7c3sdJy8lb/luz0w9q1K+OXI15 vzW2TypDLN/yWUTtbLJ6JcAkNHYPckVa1s7F+Yp6sMEBF43X7Q6kxoskwRIuzG8GKKbz3B/GQp6 TsQGXJNypFbEEGzB2vfZNiU0XND9BSn7+KvtMgKLy+SRSVI8odITHtmUki0NKw4kY0O+k0vyiJk RuTinx/OqS2vbVmBdTEUfwgHfOIcBQLT5aftDjZw147UNLbEE1lnDNGTKXh9WtQHNfsNQVJC/3p EBVURV5j1TUeyqA1MYiIyZl+DOHSLPqaq2EIbdmIFPtT6GnKMicCPFIEzL/eY7uw4IXmuSgPuzp vafPemdyLSm20hjXjbRqVXeOrYm1+ary4+Pm7yBJjuvGetKkM1cl0M= X-Received: by 2002:a17:902:e80e:b0:2cc:9179:32e with SMTP id d9443c01a7336-2cf3481bc46mr216259575ad.10.1784665494041; Tue, 21 Jul 2026 13:24:54 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8f2e7a83sm2592285ad.42.2026.07.21.13.24.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Jul 2026 13:24:53 -0700 (PDT) From: Rosen Penev To: linux-kernel@vger.kernel.org Cc: Krzysztof Kozlowski Subject: [PATCHv2 2/4] memory: fsl_ifc: Use devm_platform_ioremap_resource and fix error paths Date: Tue, 21 Jul 2026 13:24:47 -0700 Message-ID: <20260721202450.485171-3-rosenp@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260721202450.485171-1-rosenp@gmail.com> References: <20260721202450.485171-1-rosenp@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" Replace of_iomap() with devm_platform_ioremap_resource() for automatic resource management, eliminating manual iounmap in remove and error paths. devm_ioremap_resource() reserves the region and checks for overlaps, which is safe here since the IFC controller register space and child chip-select ranges are always at distinct addresses in all DTS files. As one of the errors is -EPROBE_DEFER, run it before anything else to avoid doing actual work in such a case. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev --- drivers/memory/fsl_ifc.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c index dce94d8b05b9..7e6800fc8480 100644 --- a/drivers/memory/fsl_ifc.c +++ b/drivers/memory/fsl_ifc.c @@ -92,10 +92,6 @@ static void fsl_ifc_ctrl_remove(struct platform_device *= dev) if (ctrl->nand_irq > 0) free_irq(ctrl->nand_irq, ctrl); free_irq(ctrl->irq, ctrl); - - iounmap(ctrl->gregs); - - dev_set_drvdata(&dev->dev, NULL); } =20 /* @@ -201,6 +197,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *d= ev) { int ret =3D 0; int version, banks; + void __iomem *gregs; void __iomem *addr; int nand_irq; int irq; @@ -217,6 +214,11 @@ static int fsl_ifc_ctrl_probe(struct platform_device *= dev) if (nand_irq =3D=3D -EPROBE_DEFER) return nand_irq; =20 + /* IOMAP the entire IFC region */ + gregs =3D devm_platform_ioremap_resource(dev, 0); + if (IS_ERR(gregs)) + return PTR_ERR(gregs); + fsl_ifc_ctrl_dev =3D devm_kzalloc(&dev->dev, sizeof(*fsl_ifc_ctrl_dev), GFP_KERNEL); if (!fsl_ifc_ctrl_dev) @@ -224,12 +226,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *= dev) =20 dev_set_drvdata(&dev->dev, fsl_ifc_ctrl_dev); =20 - /* IOMAP the entire IFC region */ - fsl_ifc_ctrl_dev->gregs =3D of_iomap(dev->dev.of_node, 0); - if (!fsl_ifc_ctrl_dev->gregs) { - dev_err(&dev->dev, "failed to get memory region\n"); - return -ENODEV; - } + fsl_ifc_ctrl_dev->gregs =3D gregs; =20 if (of_property_read_bool(dev->dev.of_node, "little-endian")) { fsl_ifc_ctrl_dev->little_endian =3D true; @@ -262,7 +259,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *d= ev) =20 ret =3D fsl_ifc_ctrl_init(fsl_ifc_ctrl_dev); if (ret < 0) - goto err; + return ret; =20 init_waitqueue_head(&fsl_ifc_ctrl_dev->nand_wait); =20 @@ -271,7 +268,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *d= ev) if (ret !=3D 0) { dev_err(&dev->dev, "failed to install irq (%d)\n", fsl_ifc_ctrl_dev->irq); - goto err; + goto err_free_irq; } =20 fsl_ifc_ctrl_dev->nand_irq =3D nand_irq; @@ -297,8 +294,6 @@ static int fsl_ifc_ctrl_probe(struct platform_device *d= ev) free_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev); err_free_irq: free_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev); -err: - iounmap(fsl_ifc_ctrl_dev->gregs); return ret; } =20 --=20 2.55.0 From nobody Sat Jul 25 00:11:04 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (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 0086E471413 for ; Tue, 21 Jul 2026 20:24:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665498; cv=none; b=iZBjDr+m7rv+ex0iPIhfa8qc1t3LHNXQpbYRHGi8bJKnVluxcZI8iyS74ia06/FrGmysvaQm8DVZWDDj7M39g/lskL9ndJCZy8sCkig5Lspi5uA2Rjv0DZnd1qWBsHwK54t5fKxLENQ/U6+OFGehzchjB16NqVX+AWIIaI5VmaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665498; c=relaxed/simple; bh=oKXulHAtbzSjf/zEyAIzjrgzy4Ezq47fpmacO7kY5S0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mfRaCrUaT39EWu302R6QK1Tx/2myZXhWWbeDGqE4S6cJaX3UZcbjfS1MIj8OThGHe4c43l7ImofHQvf/wLF/GQhx3Ur8sjDNfMzt1U33Wf0Ea6Fr5tT/9Ybg2E9pGZM+1vwkZZCyOLLsARCGfNMDY6EeIneVeOtDktmYu5hQOz8= 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=c+YQFxaK; arc=none smtp.client-ip=209.85.214.182 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="c+YQFxaK" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2ceed7018c8so56109315ad.1 for ; Tue, 21 Jul 2026 13:24:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784665495; x=1785270295; 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:content-type; bh=Ow9qfKseG+t/wFd5V7pacYkajGvFci3yu5h8kwX78OM=; b=c+YQFxaK1Q11K5GUlwSqLkK0f7GpJzjaCHNxkA8duk2qV2Rl5kBQ7korOVFgH/XRgN TJAf4uNNHY8NmujWF/CcKCEd2SJF+WJAmGVoRo0PDMrS/tceK0w+aDYxVJqOMsWesMf2 w8EQcbglEKhyl0P5CeYLNKJW2ES1X7rIPob9RZ/nJNPgHkm441bIJP61stIR9sRIadDE 31bZ3cUfj2mLz6/wd9N3We7vGzk3LNphhTK5KP5d6vgnU/LxWev4v+fZXG4U89pFluZG 9uDmB/j3Spg7dBjVhaXC/em1wtw8nGvYm0OJ17oO1WyQzG/D2LVPPUOnCVQX/YLdxBxM TJ3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784665495; x=1785270295; 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:content-type; bh=Ow9qfKseG+t/wFd5V7pacYkajGvFci3yu5h8kwX78OM=; b=BGi5g2Ao/sxb8OuV8v2KOSeN2krFrs6nKJPogo7skLf87zIo2uVap4/c3s+UPJR2YC YcSRfFTGZQr4nT6TH/bfFbXnREqXDSzRkjGK+ToCyk1HHONitbctREXjCjoCSPGXNymX h1r5V0nwNiNy/N3aTTkm8PtQybD7YW1JIaS6v7viAA/pk8rfaIVuvnrT2eY4mWjeBOwj 8mk+C3E9Uyh9TX8K19Z8GhgCKz3DiF6p2x37rt7YI/HAeuc8Ke5v5JwizsWVLFfewniw d1EQpXcVuU9V2IdH2b4+yWt9Mut89DuTrlA2yT74r6E0TgdG0HnGztq21BfduGLuHFGo A+UQ== X-Gm-Message-State: AOJu0YwXSw04rq/HrFJNVThEU3CyyKYCGi11Ra6t5KFLvMjdIYzwiSfg osrWDlGMqqwPFxgZJ1mMhM6hz65x4DH3ZNEdHHNqoAXbVsP7sYTFd9Fglx0Bog== X-Gm-Gg: AR+sD10p4rpewg7MiHpM39NYnlyZEdqnvFG5+R1I46kDCd857MSQWmaL1P29/bBaaRe PVv9sPNBsEB5kdRwKvaf1fSCzOTvruE5Tra0ptHcZ2Nlm0JHWfPFbWxTEhqhxRl5CHjFOb/VYjY AcRUAJp5dARbIMbeNJFPDFbOuAs1Au2v5NZ0r6xlntMqrN3wBjvyDGJiiFiWL42VktBTtw/f16I MLPGgnvJNLe7DUCcUXoaIZHVn9CqmMUApPE9tx6IrhiJfloG+jE9DIweNqmlayZmFesqCi7Kvqi 8Q1lS/2ftIXcktqJg2wtBuy8NXv1465dyP1KzsGVnWKBngm/5AvSWa705mARyG8fj1Xc8UnStzu cGtKrYWHV2fB8rqLBp3idwjg8THCdPV2Pm1uUnBu4WmwOQE+qXhHqTms3xLAhZ2hnwQPnhSP/XT awJNH1Juu0N+JvfovXR2XWcdo5sucBX7LKZP6zm5dDWF81sfDeLvZNeclQJVrZaPXUuUAnKZIH3 /vGXz77+Kq2odC/4B2OwPE54b828Y/MOlPCziNj0+ARiOlixM9kVcw= X-Received: by 2002:a17:902:f686:b0:2ca:281:27fd with SMTP id d9443c01a7336-2cf3499772bmr215041825ad.25.1784665495233; Tue, 21 Jul 2026 13:24:55 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8f2e7a83sm2592285ad.42.2026.07.21.13.24.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Jul 2026 13:24:54 -0700 (PDT) From: Rosen Penev To: linux-kernel@vger.kernel.org Cc: Krzysztof Kozlowski Subject: [PATCHv2 3/4] memory: fsl_ifc: Use devm_request_irq and simplify remove Date: Tue, 21 Jul 2026 13:24:48 -0700 Message-ID: <20260721202450.485171-4-rosenp@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260721202450.485171-1-rosenp@gmail.com> References: <20260721202450.485171-1-rosenp@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" Switch from request_irq to devm_request_irq(), eliminating the error path labels and free_irq() calls in remove(). Since both IRQs are now devm-managed, the remove function only needs of_platform_depopulate to tear down child devices before devm cleanup fires. Remove dev_err calls on failure as devm_request_irq() already does this. Don't bother using the irq variables in the struct. They were only used to free the irqs in _remove. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev --- drivers/memory/fsl_ifc.c | 47 ++++++++++------------------------------ 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c index 7e6800fc8480..7fea6a356b55 100644 --- a/drivers/memory/fsl_ifc.c +++ b/drivers/memory/fsl_ifc.c @@ -86,12 +86,7 @@ static int fsl_ifc_ctrl_init(struct fsl_ifc_ctrl *ctrl) =20 static void fsl_ifc_ctrl_remove(struct platform_device *dev) { - struct fsl_ifc_ctrl *ctrl =3D dev_get_drvdata(&dev->dev); - of_platform_depopulate(&dev->dev); - if (ctrl->nand_irq > 0) - free_irq(ctrl->nand_irq, ctrl); - free_irq(ctrl->irq, ctrl); } =20 /* @@ -253,8 +248,6 @@ static int fsl_ifc_ctrl_probe(struct platform_device *d= ev) addr +=3D PGOFFSET_4K; fsl_ifc_ctrl_dev->rregs =3D addr; =20 - fsl_ifc_ctrl_dev->irq =3D irq; - fsl_ifc_ctrl_dev->dev =3D &dev->dev; =20 ret =3D fsl_ifc_ctrl_init(fsl_ifc_ctrl_dev); @@ -263,38 +256,22 @@ static int fsl_ifc_ctrl_probe(struct platform_device = *dev) =20 init_waitqueue_head(&fsl_ifc_ctrl_dev->nand_wait); =20 - ret =3D request_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_irq, IRQF_SHARED, - "fsl-ifc", fsl_ifc_ctrl_dev); - if (ret !=3D 0) { - dev_err(&dev->dev, "failed to install irq (%d)\n", - fsl_ifc_ctrl_dev->irq); - goto err_free_irq; - } + ret =3D devm_request_irq(&dev->dev, irq, + fsl_ifc_ctrl_irq, IRQF_SHARED, + "fsl-ifc", fsl_ifc_ctrl_dev); + if (ret) + return ret; =20 - fsl_ifc_ctrl_dev->nand_irq =3D nand_irq; - if (fsl_ifc_ctrl_dev->nand_irq > 0) { - ret =3D request_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_nand_irq, - 0, "fsl-ifc-nand", fsl_ifc_ctrl_dev); - if (ret !=3D 0) { - dev_err(&dev->dev, "failed to install irq (%d)\n", - fsl_ifc_ctrl_dev->nand_irq); - goto err_free_irq; - } + if (nand_irq > 0) { + ret =3D devm_request_irq(&dev->dev, + nand_irq, fsl_ifc_nand_irq, 0, + "fsl-ifc-nand", fsl_ifc_ctrl_dev); + if (ret) + return ret; } =20 /* legacy dts may still use "simple-bus" compatible */ - ret =3D of_platform_default_populate(dev->dev.of_node, NULL, &dev->dev); - if (ret) - goto err_free_nandirq; - - return 0; - -err_free_nandirq: - if (fsl_ifc_ctrl_dev->nand_irq > 0) - free_irq(fsl_ifc_ctrl_dev->nand_irq, fsl_ifc_ctrl_dev); -err_free_irq: - free_irq(fsl_ifc_ctrl_dev->irq, fsl_ifc_ctrl_dev); - return ret; + return of_platform_default_populate(dev->dev.of_node, NULL, &dev->dev); } =20 static const struct of_device_id fsl_ifc_match[] =3D { --=20 2.55.0 From nobody Sat Jul 25 00:11:04 2026 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 18A32472F77 for ; Tue, 21 Jul 2026 20:24:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665498; cv=none; b=oUnKaAXpKnu7Q2jtDleGP7nLguhk/HPunJnb5ql/B5wJykAUycDQ5J97wVFFCXm4mFOFcmUd4JJl2iH+7h5BNmcYpg4p8XqRSEITAgBd1YtsVxA+zWFs/A2Bb7R3FIji/TNMZSX+cMLYffAkN3gGdIz+xEqzIS7i18MbNQftIes= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784665498; c=relaxed/simple; bh=QAVhcdVXwmQHSXg8XVuc0k/gng0PPeomfj+PWffV0xU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=avJlbm0XVWMuVgMrYd/9inyy1SBrm2vp4opFT2Nu+NSakfF/g/Ed2Jvv0MhXNQ3lui+verstCuohrkJ790PRAqutQCY5sNhUx2fDrJM+z/9rcRgyDlZt+XwPqItDtSPErquvijmIM3madZzG05r55bRlxwZqdMnJFf1CZDMGvNQ= 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=HSrlVZjq; arc=none smtp.client-ip=209.85.214.170 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="HSrlVZjq" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-2ceed7018c8so56109355ad.1 for ; Tue, 21 Jul 2026 13:24:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784665496; x=1785270296; 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:content-type; bh=7vHi7SGx7rpqFnqN/g+ramTHy/fykvYXIzKpwy5BQNo=; b=HSrlVZjq1IK83WSo9WhSaeqtSTs1SJGFs8h3NxPusV3c1LEJKpo5H6m3iUfCXWPp0o 1y+8sK/S8GtbQg33DJtoHlGWclahEE22WIjseuOsmiFvV9UaI4u0jN8TzGEuDKRfT/Ec s92f2ez6VuUpVwvqPlALU8D6/kwzU5qZH7b9YPu3kD3Vwp2M1ueyaZUNBgCUpKhLLZc5 NeCt1wBQgiXB1Sk2ev0x0Gk0VefuEOJkfywhTcj2k24vruSD39ZBhOUVio0C1irC+TKR /lpHIUvjuDkJ6jgZgLcvpU8PzbvJsdHuvOV04NLHZahkOb90ju2l9acwMBPZSmT+sad8 8SPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784665496; x=1785270296; 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:content-type; bh=7vHi7SGx7rpqFnqN/g+ramTHy/fykvYXIzKpwy5BQNo=; b=CbQXHRfEt6FmsY6sSY3VgrsFupVhP2XErSrePUjB325MwpU3/eGVeWWoVugarnhlHa JAfUF2xW6mgGdcsh+DILnkzJ0E4wXnadzNCaUwaoUZh/ar9fxNzQFDk7vxaxWTNXhglU b8NUIG6SL0kPVv0WsJlQ95mH+s3KF+yGQNJ8FqgtJQGG2q9zy/QUvfjqIcCrY+ergJkV 6acdZGdPr6Ph6eERaqyMEhdLS/DN+khXZ47UdRwjmFvY665x61kH2DXNRU8UYWC5J2Kp 9ehdLAGX0TPRp2dX5EiXKrMuTD7sPp96UkHya9PvFSVA3GOeeDdBzmOF8ABPWZbqfBJX 8beQ== X-Gm-Message-State: AOJu0YwUlgmKSgXwhQ4JiwQT+uxmxv6S6dritUN8JHwzYItvy40QKTLt /3FVU3O7I76bw8R3fhzONAL4/yf7YK6z5/WDMRJ3AHeE0O5+tKVL+7J0neiCcg== X-Gm-Gg: AR+sD13ybaCScthWa8xMDN8sFRFH7SdDNNJ5FBT5KOfNOiNuDLAYwTdaWXfERh6+0HU AgbTusNjXtXETKofDxOTtJjfkOJFDIcHOMFYBDd5aLS8oI5K46VmA9Z9Q4EnewUGj7r1+xjSsVJ r3uiWjjQjpJNeIfYaHMVvP6fgM6ypbjgShQTqvEWEV4oJkyk065sU68z0eGxn3xHbC6x7wmf9CK IUjyTlDXauxYQJuXKAU0gpZ7hsI6BfKdDwVI9YSHz+mTzACXkmtClaBUbA+ZkC7nUUk3/luwj0D m8Cc/lUN711WEdvpfZo2XXpaVqhXm/O+S4/u90ZOwbfIv2y8LDYdKCMfPxKiixR0m3kOLyXx7mb Rwv2fXmLijqe6a6W8mUFdAtVAbEdcCXy/q0ebNuIJbB3pEvdvBC+hfHNCbn3n8quKmKfCj+r8P7 PA3Ofg298pAr4aydQM8CLPmcizeS2t2zyWDkd3tP8esH8BmqVAfVbRJKqmdsnB+6SeIaMWBpTkZ cwoOhdGdr8Kc2dDXQK/wBlkgFWo77n4SeSZ6s891FGjGs64bi2ojt0= X-Received: by 2002:a17:902:d48a:b0:2ca:b8fd:f31 with SMTP id d9443c01a7336-2cf34889935mr222021635ad.15.1784665496275; Tue, 21 Jul 2026 13:24:56 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e34]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf8f2e7a83sm2592285ad.42.2026.07.21.13.24.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Jul 2026 13:24:55 -0700 (PDT) From: Rosen Penev To: linux-kernel@vger.kernel.org Cc: Krzysztof Kozlowski Subject: [PATCHv2 4/4] memory: fsl_ifc: drop simple-bus emulation Date: Tue, 21 Jul 2026 13:24:49 -0700 Message-ID: <20260721202450.485171-5-rosenp@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260721202450.485171-1-rosenp@gmail.com> References: <20260721202450.485171-1-rosenp@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" of_platform_default_populate() in fsl_ifc_ctrl_probe() was a workaround for legacy device trees that lacked "simple-bus" on the IFC node. Commit 103478597591 ("powerpc/85xx: Add fsl,ifc to common device ids") ensures the IFC node is populated as a platform device via of_platform_bus_probe(), so the driver no longer needs to manually populate its children -- they are handled by their own dedicated drivers (NAND, NOR, etc.) matching on their own compatibles. Drop the of_platform_default_populate() call and the corresponding of_platform_depopulate() in fsl_ifc_ctrl_remove(), which is now dead code and can be removed entirely. Assisted-by: opencode:big-pickle Signed-off-by: Rosen Penev --- drivers/memory/fsl_ifc.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c index 7fea6a356b55..c591b89a1dd4 100644 --- a/drivers/memory/fsl_ifc.c +++ b/drivers/memory/fsl_ifc.c @@ -15,7 +15,6 @@ #include #include #include -#include #include #include #include @@ -84,11 +83,6 @@ static int fsl_ifc_ctrl_init(struct fsl_ifc_ctrl *ctrl) return 0; } =20 -static void fsl_ifc_ctrl_remove(struct platform_device *dev) -{ - of_platform_depopulate(&dev->dev); -} - /* * NAND events are split between an operational interrupt which only * receives OPC, and an error interrupt that receives everything else, @@ -270,8 +264,7 @@ static int fsl_ifc_ctrl_probe(struct platform_device *d= ev) return ret; } =20 - /* legacy dts may still use "simple-bus" compatible */ - return of_platform_default_populate(dev->dev.of_node, NULL, &dev->dev); + return 0; } =20 static const struct of_device_id fsl_ifc_match[] =3D { @@ -287,7 +280,6 @@ static struct platform_driver fsl_ifc_ctrl_driver =3D { .of_match_table =3D fsl_ifc_match, }, .probe =3D fsl_ifc_ctrl_probe, - .remove =3D fsl_ifc_ctrl_remove, }; =20 static int __init fsl_ifc_init(void) --=20 2.55.0