From nobody Fri Dec 19 21:51:26 2025 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.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 DBDE127F4E7 for ; Sat, 8 Nov 2025 23:13:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643602; cv=none; b=pVF4U73mK+lxwTPtpuNg3kNv9jXqz00d53u7xKYXXrSdHC4mfeX4JF9pw1Q7Z/xgdKyxQclrSDuhLYX2G/437rbPY30lHkYNY/m6qzVRHKz1VNmJR7GUcycny1FryhM+w7Wfx6/w3JEv9fBcEVKcH5rwCKSOuKqU/S2Etpd6J10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643602; c=relaxed/simple; bh=t6OdCqHs88/HVmaNTXkOdzH+CqRafKqsTXZ8TPidQC0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kf/tsicEA5G1+dGDRdGnbcHPlPwPZ1TE7UdvtNKtfPx72RN/OUm5ZKQf0Tw2Dp7auHWvMJBA+wyqxXL1snRbzwbqTgevE5nSql3gKtxEg2QOHhTEajc2G7PjX3pkoUnEIqQj+GzqyVBJVq8CM5hLmZ1GAACxzexJ1U+38xxamDc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=hgcVt39f; arc=none smtp.client-ip=209.85.208.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="hgcVt39f" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-640aa1445c3so2875342a12.1 for ; Sat, 08 Nov 2025 15:13:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1762643598; x=1763248398; 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=kWMhP1DF9JlU6IACRYH5DYXfm0imCEwHF1aCiJZS7sI=; b=hgcVt39fNnm4ipVGwdrcl0eqtxmzN+COewm/Q5N8T7gvT+8UfyWRtac+KxAtsCXWoP kiSV319Ei6r9PRrPK4U0oSQgQr4HILtYcblBCmmsVdu7jUwC4xg5W8qeMpU6En88W+Cn 2eAB5BwzuCLxyK5Oj/Jb9OKFs2WAiLjzxCgBcNlVpwfcoG7FOgemLRvEd60StpmE227F u7icVGIY6WxFXRJenTBhWyZXrvpLiw2TNcYRI5obFMfP6yQ08ZRQVipZisfCW7HG6m9L QW0f4mgHBJM6itE7WeMP4nnyP7jMgKlL5R64b7pTfi+nbdoW86qVroNmWl7oYd35NIDs inIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762643598; x=1763248398; 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=kWMhP1DF9JlU6IACRYH5DYXfm0imCEwHF1aCiJZS7sI=; b=ATFmqAwue6xxBByCtiVkFJ5KyxcmaVL4GQBQA7uDoENKcQV8n4hZeAaUcSgIcx9V24 GMF0ZbxMoGYEVLFMEe7kMrlXs6prCpIHAykhivgq9hQEa5HzZzjcTPCqQyuq8sHH/s94 Dku+v4C/WU3Q9ZHlqGLwYLaWJVZ4ljD6ecf5MNlR7KsUIkTgtRCQcpT8maSHQOAT0yke YcAM5oxKuwNo1gveyQoDvbyrTN1oKlsvGekDtVSgRunKhTLURCN/TyPyNb1WJ5yiKWkJ bP71exE4U7pmdNGZk7Gkpe/vvCsf5jAs6mG9jecqW3uRVAHzvNeng/pFwhk3OzGvT1Jl lhSQ== X-Forwarded-Encrypted: i=1; AJvYcCU9tliXoeEK5ptS4epBZkeQ6s/9GLAnNJgwAQW3tuEIAAP2Pd4nHk2VMlJc7X7ho/uLOrEmL3QiebzuA+s=@vger.kernel.org X-Gm-Message-State: AOJu0YwOuQwwYyK6ue5dSs8OtyNnDNt2u9eLnLyQqW8rBTTTVvnUKZQv hdiiZO7aA7mxFBEITShkuV4DWKPaSj3nN7ouV4PKJGeVJam1J8DomcKqa8OocA== X-Gm-Gg: ASbGncsCRz3UW4yDyLZT+qzI+PvQNxExlshmvnSfJT6WDX2xVqlRSdth8P8vcbsd8iL zg3Zu+t4843DzwCcUsRR9h5taqv+DYTunIW6r9VN+D/fpo9OrviqtRQ0YkkzRnsI2jGzXLYzRfo /aSeJOVOXFUmpixAnHGODPC0Re3TlcvaCpWBc3Y+ZadqEN4vXHfEVF9zHCgm7/g7+YqNPzULf4M 8USx8n+7SCLDtiEqCaDD/fjlH/FmiMmFRVC9Y8HYZLNCwDBcTT+FozrmcfEsOIgBtHNvfB1Zb7A aZ3x6yI6vi8tZtwNiOXjM4O7D3LznbXn2dd0y4RwbXNxa4Uy3hpRuawc1MfiM98YJ0AOLftK6ZJ 1197P3hbTZRTsh78yz8K9u20Vw4KPUI5OgYpZ3oYbNw3cinm8VZAGvA6t8V12e1nQjUHgoUlIcC 3jbOXDsOik7J2r6ZwJVIJWzr78BnvFtNhGecLKnUCOM3sFlmt9sIp786DeBDiDkJiY7i7MvfQ1K lB2+L1NwVrJNSnG13+Nqxkso/2fBS4m1Lkpf/A3X70= X-Google-Smtp-Source: AGHT+IFGoyUr3fFUDtjdAJDaQ9diGHZMiMCjyMWKaOhYx4Nyqo8YNV94OzI3uycOIQUa86kK/iszdg== X-Received: by 2002:a05:6402:354b:b0:640:9b11:5d65 with SMTP id 4fb4d7f45d1cf-6415e822920mr2630715a12.24.1762643597799; Sat, 08 Nov 2025 15:13:17 -0800 (PST) Received: from blackbox (dynamic-2a02-3100-a9b3-6600-1e86-0bff-fe2f-57b7.310.pool.telefonica.de. [2a02:3100:a9b3:6600:1e86:bff:fe2f:57b7]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-6411f814164sm7642807a12.13.2025.11.08.15.13.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Nov 2025 15:13:16 -0800 (PST) From: Martin Blumenstingl To: linux-amlogic@lists.infradead.org, linux-mmc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, Martin Blumenstingl Subject: [PATCH v1 1/7] mmc: meson-mx-sdio: Switch to regmap for register access Date: Sun, 9 Nov 2025 00:12:47 +0100 Message-ID: <20251108231253.1641927-2-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251108231253.1641927-1-martin.blumenstingl@googlemail.com> References: <20251108231253.1641927-1-martin.blumenstingl@googlemail.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 the driver over to use regmap to access the registers. This makes it consistent with the other Amlogic MMC drivers. No functional changes intended. Signed-off-by: Martin Blumenstingl Reviewed-by: Neil Armstrong --- drivers/mmc/host/Kconfig | 1 + drivers/mmc/host/meson-mx-sdio.c | 125 ++++++++++++++++--------------- 2 files changed, 64 insertions(+), 62 deletions(-) diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig index 2c963cb6724b..027ef2540913 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -504,6 +504,7 @@ config MMC_MESON_MX_SDIO depends on ARCH_MESON || COMPILE_TEST depends on COMMON_CLK depends on OF_ADDRESS + select REGMAP_MMIO help This selects support for the SD/MMC Host Controller on Amlogic Meson6, Meson8 and Meson8b SoCs. diff --git a/drivers/mmc/host/meson-mx-sdio.c b/drivers/mmc/host/meson-mx-s= dio.c index 8a49c32fd3f9..2448f21bd683 100644 --- a/drivers/mmc/host/meson-mx-sdio.c +++ b/drivers/mmc/host/meson-mx-sdio.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include =20 @@ -108,7 +109,7 @@ struct meson_mx_mmc_host { struct clk_fixed_factor fixed_factor; struct clk *fixed_factor_clk; =20 - void __iomem *base; + struct regmap *regmap; int irq; spinlock_t irq_lock; =20 @@ -122,22 +123,10 @@ struct meson_mx_mmc_host { int error; }; =20 -static void meson_mx_mmc_mask_bits(struct mmc_host *mmc, char reg, u32 mas= k, - u32 val) -{ - struct meson_mx_mmc_host *host =3D mmc_priv(mmc); - u32 regval; - - regval =3D readl(host->base + reg); - regval &=3D ~mask; - regval |=3D (val & mask); - - writel(regval, host->base + reg); -} - static void meson_mx_mmc_soft_reset(struct meson_mx_mmc_host *host) { - writel(MESON_MX_SDIO_IRQC_SOFT_RESET, host->base + MESON_MX_SDIO_IRQC); + regmap_write(host->regmap, MESON_MX_SDIO_IRQC, + MESON_MX_SDIO_IRQC_SOFT_RESET); udelay(2); } =20 @@ -158,7 +147,7 @@ static void meson_mx_mmc_start_cmd(struct mmc_host *mmc, struct meson_mx_mmc_host *host =3D mmc_priv(mmc); unsigned int pack_size; unsigned long irqflags, timeout; - u32 mult, send =3D 0, ext =3D 0; + u32 send =3D 0, ext =3D 0; =20 host->cmd =3D cmd; =20 @@ -215,25 +204,22 @@ static void meson_mx_mmc_start_cmd(struct mmc_host *m= mc, =20 spin_lock_irqsave(&host->irq_lock, irqflags); =20 - mult =3D readl(host->base + MESON_MX_SDIO_MULT); - mult &=3D ~MESON_MX_SDIO_MULT_PORT_SEL_MASK; - mult |=3D FIELD_PREP(MESON_MX_SDIO_MULT_PORT_SEL_MASK, host->slot_id); - mult |=3D BIT(31); - writel(mult, host->base + MESON_MX_SDIO_MULT); + regmap_update_bits(host->regmap, MESON_MX_SDIO_MULT, + MESON_MX_SDIO_MULT_PORT_SEL_MASK | BIT(31), + FIELD_PREP(MESON_MX_SDIO_MULT_PORT_SEL_MASK, + host->slot_id) | BIT(31)); =20 /* enable the CMD done interrupt */ - meson_mx_mmc_mask_bits(mmc, MESON_MX_SDIO_IRQC, - MESON_MX_SDIO_IRQC_ARC_CMD_INT_EN, - MESON_MX_SDIO_IRQC_ARC_CMD_INT_EN); + regmap_set_bits(host->regmap, MESON_MX_SDIO_IRQC, + MESON_MX_SDIO_IRQC_ARC_CMD_INT_EN); =20 /* clear pending interrupts */ - meson_mx_mmc_mask_bits(mmc, MESON_MX_SDIO_IRQS, - MESON_MX_SDIO_IRQS_CMD_INT, - MESON_MX_SDIO_IRQS_CMD_INT); + regmap_set_bits(host->regmap, MESON_MX_SDIO_IRQS, + MESON_MX_SDIO_IRQS_CMD_INT); =20 - writel(cmd->arg, host->base + MESON_MX_SDIO_ARGU); - writel(ext, host->base + MESON_MX_SDIO_EXT); - writel(send, host->base + MESON_MX_SDIO_SEND); + regmap_write(host->regmap, MESON_MX_SDIO_ARGU, cmd->arg); + regmap_write(host->regmap, MESON_MX_SDIO_EXT, ext); + regmap_write(host->regmap, MESON_MX_SDIO_SEND, send); =20 spin_unlock_irqrestore(&host->irq_lock, irqflags); =20 @@ -263,14 +249,13 @@ static void meson_mx_mmc_set_ios(struct mmc_host *mmc= , struct mmc_ios *ios) =20 switch (ios->bus_width) { case MMC_BUS_WIDTH_1: - meson_mx_mmc_mask_bits(mmc, MESON_MX_SDIO_CONF, - MESON_MX_SDIO_CONF_BUS_WIDTH, 0); + regmap_clear_bits(host->regmap, MESON_MX_SDIO_CONF, + MESON_MX_SDIO_CONF_BUS_WIDTH); break; =20 case MMC_BUS_WIDTH_4: - meson_mx_mmc_mask_bits(mmc, MESON_MX_SDIO_CONF, - MESON_MX_SDIO_CONF_BUS_WIDTH, - MESON_MX_SDIO_CONF_BUS_WIDTH); + regmap_set_bits(host->regmap, MESON_MX_SDIO_CONF, + MESON_MX_SDIO_CONF_BUS_WIDTH); break; =20 case MMC_BUS_WIDTH_8: @@ -351,8 +336,8 @@ static void meson_mx_mmc_request(struct mmc_host *mmc, = struct mmc_request *mrq) host->mrq =3D mrq; =20 if (mrq->data) - writel(sg_dma_address(mrq->data->sg), - host->base + MESON_MX_SDIO_ADDR); + regmap_write(host->regmap, MESON_MX_SDIO_ADDR, + sg_dma_address(mrq->data->sg)); =20 if (mrq->sbc) meson_mx_mmc_start_cmd(mmc, mrq->sbc); @@ -364,24 +349,26 @@ static void meson_mx_mmc_read_response(struct mmc_hos= t *mmc, struct mmc_command *cmd) { struct meson_mx_mmc_host *host =3D mmc_priv(mmc); - u32 mult; - int i, resp[4]; + unsigned int i, resp[4]; =20 - mult =3D readl(host->base + MESON_MX_SDIO_MULT); - mult |=3D MESON_MX_SDIO_MULT_WR_RD_OUT_INDEX; - mult &=3D ~MESON_MX_SDIO_MULT_RESP_READ_INDEX_MASK; - mult |=3D FIELD_PREP(MESON_MX_SDIO_MULT_RESP_READ_INDEX_MASK, 0); - writel(mult, host->base + MESON_MX_SDIO_MULT); + regmap_update_bits(host->regmap, MESON_MX_SDIO_MULT, + MESON_MX_SDIO_MULT_WR_RD_OUT_INDEX | + MESON_MX_SDIO_MULT_RESP_READ_INDEX_MASK, + MESON_MX_SDIO_MULT_WR_RD_OUT_INDEX | + FIELD_PREP(MESON_MX_SDIO_MULT_RESP_READ_INDEX_MASK, + 0)); =20 if (cmd->flags & MMC_RSP_136) { for (i =3D 0; i <=3D 3; i++) - resp[3 - i] =3D readl(host->base + MESON_MX_SDIO_ARGU); + regmap_read(host->regmap, MESON_MX_SDIO_ARGU, + &resp[3 - i]); + cmd->resp[0] =3D (resp[0] << 8) | ((resp[1] >> 24) & 0xff); cmd->resp[1] =3D (resp[1] << 8) | ((resp[2] >> 24) & 0xff); cmd->resp[2] =3D (resp[2] << 8) | ((resp[3] >> 24) & 0xff); cmd->resp[3] =3D (resp[3] << 8); } else if (cmd->flags & MMC_RSP_PRESENT) { - cmd->resp[0] =3D readl(host->base + MESON_MX_SDIO_ARGU); + regmap_read(host->regmap, MESON_MX_SDIO_ARGU, &cmd->resp[0]); } } =20 @@ -422,8 +409,8 @@ static irqreturn_t meson_mx_mmc_irq(int irq, void *data) =20 spin_lock(&host->irq_lock); =20 - irqs =3D readl(host->base + MESON_MX_SDIO_IRQS); - send =3D readl(host->base + MESON_MX_SDIO_SEND); + regmap_read(host->regmap, MESON_MX_SDIO_IRQS, &irqs); + regmap_read(host->regmap, MESON_MX_SDIO_SEND, &send); =20 if (irqs & MESON_MX_SDIO_IRQS_CMD_INT) ret =3D meson_mx_mmc_process_cmd_irq(host, irqs, send); @@ -431,7 +418,7 @@ static irqreturn_t meson_mx_mmc_irq(int irq, void *data) ret =3D IRQ_HANDLED; =20 /* finally ACK all pending interrupts */ - writel(irqs, host->base + MESON_MX_SDIO_IRQS); + regmap_write(host->regmap, MESON_MX_SDIO_IRQS, irqs); =20 spin_unlock(&host->irq_lock); =20 @@ -470,14 +457,13 @@ static void meson_mx_mmc_timeout(struct timer_list *t) struct meson_mx_mmc_host *host =3D timer_container_of(host, t, cmd_timeout); unsigned long irqflags; - u32 irqc; + u32 irqs, argu; =20 spin_lock_irqsave(&host->irq_lock, irqflags); =20 /* disable the CMD interrupt */ - irqc =3D readl(host->base + MESON_MX_SDIO_IRQC); - irqc &=3D ~MESON_MX_SDIO_IRQC_ARC_CMD_INT_EN; - writel(irqc, host->base + MESON_MX_SDIO_IRQC); + regmap_clear_bits(host->regmap, MESON_MX_SDIO_IRQC, + MESON_MX_SDIO_IRQC_ARC_CMD_INT_EN); =20 spin_unlock_irqrestore(&host->irq_lock, irqflags); =20 @@ -488,10 +474,12 @@ static void meson_mx_mmc_timeout(struct timer_list *t) if (!host->cmd) return; =20 + regmap_read(host->regmap, MESON_MX_SDIO_IRQS, &irqs); + regmap_read(host->regmap, MESON_MX_SDIO_ARGU, &argu); + dev_dbg(mmc_dev(host->mmc), "Timeout on CMD%u (IRQS =3D 0x%08x, ARGU =3D 0x%08x)\n", - host->cmd->opcode, readl(host->base + MESON_MX_SDIO_IRQS), - readl(host->base + MESON_MX_SDIO_ARGU)); + host->cmd->opcode, irqs, argu); =20 host->cmd->error =3D -ETIMEDOUT; =20 @@ -578,7 +566,8 @@ static int meson_mx_mmc_add_host(struct meson_mx_mmc_ho= st *host) return 0; } =20 -static int meson_mx_mmc_register_clks(struct meson_mx_mmc_host *host) +static int meson_mx_mmc_register_clks(struct meson_mx_mmc_host *host, + void __iomem *base) { struct clk_init_data init; const char *clk_div_parent, *clk_fixed_factor_parent; @@ -613,7 +602,7 @@ static int meson_mx_mmc_register_clks(struct meson_mx_m= mc_host *host) init.flags =3D CLK_SET_RATE_PARENT; init.parent_names =3D &clk_div_parent; init.num_parents =3D 1; - host->cfg_div.reg =3D host->base + MESON_MX_SDIO_CONF; + host->cfg_div.reg =3D base + MESON_MX_SDIO_CONF; host->cfg_div.shift =3D MESON_MX_SDIO_CONF_CMD_CLK_DIV_SHIFT; host->cfg_div.width =3D MESON_MX_SDIO_CONF_CMD_CLK_DIV_WIDTH; host->cfg_div.hw.init =3D &init; @@ -629,12 +618,23 @@ static int meson_mx_mmc_register_clks(struct meson_mx= _mmc_host *host) =20 static int meson_mx_mmc_probe(struct platform_device *pdev) { + const struct regmap_config meson_mx_sdio_regmap_config =3D { + .reg_bits =3D 8, + .val_bits =3D 32, + .reg_stride =3D 4, + .max_register =3D MESON_MX_SDIO_EXT, + }; struct platform_device *slot_pdev; struct mmc_host *mmc; struct meson_mx_mmc_host *host; + void __iomem *base; int ret, irq; u32 conf; =20 + base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(base)) + return PTR_ERR(base); + slot_pdev =3D meson_mx_mmc_slot_pdev(&pdev->dev); if (!slot_pdev) return -ENODEV; @@ -656,9 +656,10 @@ static int meson_mx_mmc_probe(struct platform_device *= pdev) =20 platform_set_drvdata(pdev, host); =20 - host->base =3D devm_platform_ioremap_resource(pdev, 0); - if (IS_ERR(host->base)) { - ret =3D PTR_ERR(host->base); + host->regmap =3D devm_regmap_init_mmio(&pdev->dev, base, + &meson_mx_sdio_regmap_config); + if (IS_ERR(host->regmap)) { + ret =3D PTR_ERR(host->regmap); goto error_free_mmc; } =20 @@ -687,7 +688,7 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) goto error_free_mmc; } =20 - ret =3D meson_mx_mmc_register_clks(host); + ret =3D meson_mx_mmc_register_clks(host, base); if (ret) goto error_free_mmc; =20 @@ -708,7 +709,7 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) conf |=3D FIELD_PREP(MESON_MX_SDIO_CONF_M_ENDIAN_MASK, 0x3); conf |=3D FIELD_PREP(MESON_MX_SDIO_CONF_WRITE_NWR_MASK, 0x2); conf |=3D FIELD_PREP(MESON_MX_SDIO_CONF_WRITE_CRC_OK_STATUS_MASK, 0x2); - writel(conf, host->base + MESON_MX_SDIO_CONF); + regmap_write(host->regmap, MESON_MX_SDIO_CONF, conf); =20 meson_mx_mmc_soft_reset(host); =20 --=20 2.51.2 From nobody Fri Dec 19 21:51:26 2025 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.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 72E2F287259 for ; Sat, 8 Nov 2025 23:13:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643604; cv=none; b=fq9MxqBzDCc3M63QSM3HMeWFdHXfuq5hM84nCYmDALOxQWqYZZH3gafGy6eps7UOSAEveZLm1FxVodfT3ZA37qc/HjObPYFzB3cwjhlGmZ8d/ACkIjJMsd+1JRR7DqhLnlnsadF8zLuTECiPrxg1LC8cHipdaQItfZKt/3O0W10= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643604; c=relaxed/simple; bh=Uyhvca88h8vv2OXwxtdsVNrGpi7PUq2+kDeHdZ0oXjA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VIYfeCrhVPYN8sVhcWJx0T4PegGChiMahiMCOrbJmCE/5lf/4KSFCSn/RiYdHtkVBVY5eyIHbbejQNzUQ+OdEfskuRoLfX3BSDmN+8iWkm/dWCk8A4+5WKATmP+dWl3dZ2SkxjIqFICuCRv5c9RmaXnHk3Bj7RKUmHjMrCPJfdc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=LhincJ8Y; arc=none smtp.client-ip=209.85.208.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="LhincJ8Y" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-640b4a52950so2883986a12.1 for ; Sat, 08 Nov 2025 15:13:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1762643601; x=1763248401; 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=OIdZxomTiawbxwfqpMnoqPSizZxwJiiryInuVxUgs40=; b=LhincJ8YrW4cCa30JjkSAPa35E4wQOBqvdpYZMKBXXyxaOrlHCo0o2FqDamTx/vsnr d3BvE7Mbcp+kE/2Rqo9MLjtmq5s1WmCrBZl92s2nFbezuugFsi5V/Uqn6JetG4MnXLaX 8dWq/MZw7fdpv1x05TidydU0F1c9Phra6Gk8Kjhx39bCROPz8xl+Bn9yfOj5cN2UUyCg Ahl43oQoBlTIUHK+XdSvujFUfjk2QiPIIChUlSiS4e0taQGYEmizcRkT/3YM3J2q0wWL Q2CotD6XmMEPwsEGv/58RfuUkso2qA7V7TiRTXecVO/BOekBb2cbjvb20sUi4MOvDe98 42aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762643601; x=1763248401; 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=OIdZxomTiawbxwfqpMnoqPSizZxwJiiryInuVxUgs40=; b=Y8r9l8v3adJN3LF+fUk5tHSBqaj4J9o2BqJxhLnme06d9ru+ghtLG/2TZK2RgHQrq0 Eu3DTzNA5JcHhgcVlOSGWj8HY+a3Nu06WOFQAL9KWoAf0EIiyVN58oDtlGEotlRRUZbm pN/k/gBvuFi8cNq62lTUVMXVKwPl1xy8t2IeNAt6xCNZrelk/ON4WxqWpjU/y7mOH2xY gZJPlgdmeS0SxtuA9F/1PBU7Yo+EKx/nxp66+7Q3UjNc4bOPwMb06wOw6+cRUrSscxex eTLpVoVwJQh4tr8Zfc3NerfzN+z4WKfa5TlhB1NIzDLxx+WOQMAfpupuJ/2WhuSzv14X XSYA== X-Forwarded-Encrypted: i=1; AJvYcCWg8bUg8avnz4J4WhJpV0jf1v6QqaavI/OY8miv60FXsY5UOtZC0C71fq9b9e6kSRb1l986Fxx59Y/ZTeQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyQnnCVYYb9+AABRNQNtpPeOlK6Moe6GuHi8yjrezYeEfToGPNy hSU0njMLQw3JyPoUVzP9t+2d9wJbGhFOmEovoUuyG/H9rnWdV9lfjSqt X-Gm-Gg: ASbGnctXQKG7S9jrpl0lDoG29CjST1+idJl7faInIKc8uEGNtBXh9xEcJ8OKCJ4vB2x HO7W1vBc8gBg7N0/m/AOWlUltn+ojrmHh+v7Lg27Kmr6Q994+JK2RKlzmet1YuqVaJa/juTJjPu 9lis4g7Oz+JKzXUpG3m+6WwABXqgHRhhVkDN+uEh6jTzZB4I60QMtGRJ3J4rokAGjZ5hQjNjvGa 61F3jc/K46vpQ50SFKtMlXbcPw7X7Ux1LYat3yIUIbiY5NTfl+R12Nv7/dwvJJy6Omoh2MQSLtH feezaeQvWvQdK/fnyvuJTwy8w5iRC0yx8VKqmfWkJzn3EDQz4DF9GAYwOPaCCnVizM6JIP5Mm7i ZLuPEDeA+HaVWB9AI0JcsCdxNFvJw03rZB0R1FZcKpm0mZ2PlLsMvu2ySkOphDacoF/922cZjYj 7gO7hjw1zt09c8B1zSegYdXVkvQEo9aToUuWxc1CvnxsWgTrPPT15qt8J8LMG/cIDAnvuJuYyrG nE9aY2+5fAEr2UH1XsJxyi01WiZl2+b X-Google-Smtp-Source: AGHT+IFQjlRv39XcJklWKjtg5/kXtIXi7GGXYRLVU3hdPD9cbN+MwifNhIboaa4CWjMgje18D1/dkg== X-Received: by 2002:a05:6402:2106:b0:640:8eed:5601 with SMTP id 4fb4d7f45d1cf-6415e104231mr2993008a12.2.1762643600704; Sat, 08 Nov 2025 15:13:20 -0800 (PST) Received: from blackbox (dynamic-2a02-3100-a9b3-6600-1e86-0bff-fe2f-57b7.310.pool.telefonica.de. [2a02:3100:a9b3:6600:1e86:bff:fe2f:57b7]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-6411f814164sm7642807a12.13.2025.11.08.15.13.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Nov 2025 15:13:19 -0800 (PST) From: Martin Blumenstingl To: linux-amlogic@lists.infradead.org, linux-mmc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, Martin Blumenstingl Subject: [PATCH v1 2/7] mmc: meson-mx-sdio: Use devm_clk_get_enabled() Date: Sun, 9 Nov 2025 00:12:48 +0100 Message-ID: <20251108231253.1641927-3-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251108231253.1641927-1-martin.blumenstingl@googlemail.com> References: <20251108231253.1641927-1-martin.blumenstingl@googlemail.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" This simplifies the code. No functional changes intended. Signed-off-by: Martin Blumenstingl Reviewed-by: Neil Armstrong --- drivers/mmc/host/meson-mx-sdio.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/drivers/mmc/host/meson-mx-sdio.c b/drivers/mmc/host/meson-mx-s= dio.c index 2448f21bd683..1159cc911359 100644 --- a/drivers/mmc/host/meson-mx-sdio.c +++ b/drivers/mmc/host/meson-mx-sdio.c @@ -103,7 +103,6 @@ struct meson_mx_mmc_host { struct device *controller_dev; =20 struct clk *parent_clk; - struct clk *core_clk; struct clk_divider cfg_div; struct clk *cfg_div_clk; struct clk_fixed_factor fixed_factor; @@ -627,6 +626,7 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) struct platform_device *slot_pdev; struct mmc_host *mmc; struct meson_mx_mmc_host *host; + struct clk *core_clk; void __iomem *base; int ret, irq; u32 conf; @@ -676,9 +676,9 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) if (ret) goto error_free_mmc; =20 - host->core_clk =3D devm_clk_get(host->controller_dev, "core"); - if (IS_ERR(host->core_clk)) { - ret =3D PTR_ERR(host->core_clk); + core_clk =3D devm_clk_get_enabled(host->controller_dev, "core"); + if (IS_ERR(core_clk)) { + ret =3D PTR_ERR(core_clk); goto error_free_mmc; } =20 @@ -692,16 +692,10 @@ static int meson_mx_mmc_probe(struct platform_device = *pdev) if (ret) goto error_free_mmc; =20 - ret =3D clk_prepare_enable(host->core_clk); - if (ret) { - dev_err(host->controller_dev, "Failed to enable core clock\n"); - goto error_free_mmc; - } - ret =3D clk_prepare_enable(host->cfg_div_clk); if (ret) { dev_err(host->controller_dev, "Failed to enable MMC clock\n"); - goto error_disable_core_clk; + goto error_free_mmc; } =20 conf =3D 0; @@ -715,14 +709,12 @@ static int meson_mx_mmc_probe(struct platform_device = *pdev) =20 ret =3D meson_mx_mmc_add_host(host); if (ret) - goto error_disable_clks; + goto error_disable_div_clk; =20 return 0; =20 -error_disable_clks: +error_disable_div_clk: clk_disable_unprepare(host->cfg_div_clk); -error_disable_core_clk: - clk_disable_unprepare(host->core_clk); error_free_mmc: mmc_free_host(mmc); error_unregister_slot_pdev: @@ -742,7 +734,6 @@ static void meson_mx_mmc_remove(struct platform_device = *pdev) of_platform_device_destroy(slot_dev, NULL); =20 clk_disable_unprepare(host->cfg_div_clk); - clk_disable_unprepare(host->core_clk); =20 mmc_free_host(host->mmc); } --=20 2.51.2 From nobody Fri Dec 19 21:51:26 2025 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.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 3FF7F28851C for ; Sat, 8 Nov 2025 23:13:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643607; cv=none; b=p7qcEQP/u3X/JQz3Ryt0FpASGIJzCZnGgMzYISWox5v7D0zqTxX4vYj7fTdH0MwoRMPNMLfMxJ4fdRV+IqBgYEM8ZtWNgp+t/BVpk8CT7ixlGrFh/uuqOJa0LVM5vAI3KlAFOVNjE8kyGsg2kGLeGfTlmIIRssu0TteM5721w8E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643607; c=relaxed/simple; bh=HKvLDGntfxAdVB5jKwgETSQbj7yN244c1FScM9L9Ef4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=r+r9ZYCENwA0w65IKYSztewx58DXFt/BdPOVvvML/hOYPbUzkAwuStN0B1XMTMqdda6fr467VQyYeYUpl0WzrmFJ1ZARm37w6370FCeycNrsNbm9g5fENWd29OiFe4AbZc7H947qhf7YTf3+SQfAF1t6HUDNb2mKHQ19h5SbmSE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=CpR5NOMW; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="CpR5NOMW" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-6406f3dcc66so3204697a12.3 for ; Sat, 08 Nov 2025 15:13:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1762643604; x=1763248404; 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=72U297d2NX6RO9yoD7XU9KTbdxctb0+CTvTsi0z9044=; b=CpR5NOMWT20k3aaRILBJwZyiUS7m6EXt7cjtUjW1Jf/mcN34ZzLvtA6IVJ9yFUn0IT CqGVtE1YpRCuiKtu5wG4jz2j6suDa8EyzSGl6O3s2Fc8i5eP41+sC1ctxokx9IiQu7y6 kQcdvpKt1P23ST0prLxnF2YkDrClquYfYajGPx8c9NZ83V/9eaWJZS5IZYwijYq/eH/V JfahJYKbI+u2bja0Z6sgD1CAbMG46KRKaGSFfKvcG9H1kwmNvx9a5UUlsvQ3YIy5PBDP z63cVQFxog+dpbBDarQPHaxGZVmqoqpKwdRFkxzRRjsN1NGMCsrRLC84vI/ZpNszpbVi AT+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762643604; x=1763248404; 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=72U297d2NX6RO9yoD7XU9KTbdxctb0+CTvTsi0z9044=; b=MtuSjKwlAZYczgT6UxZP17A/ehVxdZNn45qp3TTYvShjh9WQvyVuUejiYJ6xtUKEah NCz31NU0EoqyWdfpHQy5cvxllJPT/TRJgR2kIFvHtQwS+itLgIXw8jR/cDTd4imZ3H7a 6Cp+UKVdzYQFUfRJHvNXuTWZY7bhGzQyYUaSroVfUcxnHhefU8kaHPrDsFLTg4MujLeL +HnudyaQKNDTgb+IBnoDOqoktQlcKvKLiqqpidOrpt0Fs2pYGiVAZE9c2obe6yw7whBc P6MN5otjjsEcvBUunXehzBRCZCcGHyxnzw4pWIhsSGoFSrqPP4R4yxLl87//zvdUeMLH Xgcg== X-Forwarded-Encrypted: i=1; AJvYcCWW/M0ViUMSKhutNBfcT9kUErzbgDu3E6gY4d2ivoMcJmERlj5AZoJWDd5BAhzyO6yW+ItYwGHZO/OIk+g=@vger.kernel.org X-Gm-Message-State: AOJu0YxKiksLGSnKzk2nb+CmgqaiZ3JOprJLJaZVc1A5VrSJBujYcsW5 T5SBKtl18DFYv8pqwCCHpaatPiFvFlYGTZywn52XNeF7COt6xonnSxDG X-Gm-Gg: ASbGnct7BrW4b7vteopLoofZogo5fh1ukma2gtGx7RYoq0oLKyrDwo30W2Y9bp4g1Ab tbvivvpUh9Vc1KIZu+gxJXxlnVthvmO2NcZPJE905QLFpZSwgld3iCpcNP9fQS1ExVQsy2VytFV lGGPWze/N7I7QpwKTNxQJTfkp1ndTdO4VusJZzMgR0FOGRFejF5LBc3cFrlvFI+xPF/j19EfUhZ 3DOUtK3aJCY1VUdb1ecB7xp4MY0EtT/5xei39m4v0/NBxeYalXbzgk6opaSc+sufg8D7Sl14pfq zLWywL66yQSuAo+pcO5OPIM/VtozDBPPfXFqRHyrJs+mdn0e2KKdohbo21am4btMt2i5FArFJxv SIFqDDHlr0leg3jKu+NzjaBvzfAKUkTRnUUulelbkYWf/HqVvI46yYeYj2LG46HIUWA3bUIbOAf ldcv8iiR86hO+3+OUw8fiXWfDobkY9etnG/Uq1bUXYRmHBXFf31mmvjWEgsOT4E504VmRxKrjW0 /eaqs6jN6L9VdAD+nCykV8Z0WaOWBBsfXOMVaH4e0c= X-Google-Smtp-Source: AGHT+IHbNQTEVG2cKof3S4FeUIgLFrT/DVsyswwXVAtJnkg7b3F2iGq4VQNvhnBsPlTOOJ7clsnvPQ== X-Received: by 2002:a05:6402:270c:b0:640:d0d9:71d3 with SMTP id 4fb4d7f45d1cf-6415dc2ea5fmr2873707a12.6.1762643603577; Sat, 08 Nov 2025 15:13:23 -0800 (PST) Received: from blackbox (dynamic-2a02-3100-a9b3-6600-1e86-0bff-fe2f-57b7.310.pool.telefonica.de. [2a02:3100:a9b3:6600:1e86:bff:fe2f:57b7]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-6411f814164sm7642807a12.13.2025.11.08.15.13.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Nov 2025 15:13:22 -0800 (PST) From: Martin Blumenstingl To: linux-amlogic@lists.infradead.org, linux-mmc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, Martin Blumenstingl Subject: [PATCH v1 3/7] mmc: meson-mx-sdio: Refactor internal clock initialization Date: Sun, 9 Nov 2025 00:12:49 +0100 Message-ID: <20251108231253.1641927-4-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251108231253.1641927-1-martin.blumenstingl@googlemail.com> References: <20251108231253.1641927-1-martin.blumenstingl@googlemail.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" Use modern common clock framework helpers for simplifying the clock controller management: - switch to struct clk_hw for internal clocks and only get the "cfg_div_clk" (which has to be managed at runtime) as struct clk using devm_clk_hw_get_clk() which is then the only clock used by struct meson_mx_mmc_host. - use CLK_HW_INIT_FW_NAME and CLK_HW_INIT_HW helper macros for simpler init data initialization - keep the clock controller memory allocation separate to prevent a potential use-after-free because struct meson_mx_mmc_host_clkc is free'd before controller_dev Signed-off-by: Martin Blumenstingl Reviewed-by: Neil Armstrong --- drivers/mmc/host/meson-mx-sdio.c | 119 ++++++++++++++++--------------- 1 file changed, 61 insertions(+), 58 deletions(-) diff --git a/drivers/mmc/host/meson-mx-sdio.c b/drivers/mmc/host/meson-mx-s= dio.c index 1159cc911359..ce1828d915da 100644 --- a/drivers/mmc/host/meson-mx-sdio.c +++ b/drivers/mmc/host/meson-mx-sdio.c @@ -99,15 +99,15 @@ #define MESON_MX_SDIO_RESPONSE_CRC16_BITS (16 - 1) #define MESON_MX_SDIO_MAX_SLOTS 3 =20 +struct meson_mx_mmc_host_clkc { + struct clk_divider cfg_div; + struct clk_fixed_factor fixed_div2; +}; + struct meson_mx_mmc_host { struct device *controller_dev; =20 - struct clk *parent_clk; - struct clk_divider cfg_div; struct clk *cfg_div_clk; - struct clk_fixed_factor fixed_factor; - struct clk *fixed_factor_clk; - struct regmap *regmap; int irq; spinlock_t irq_lock; @@ -548,8 +548,7 @@ static int meson_mx_mmc_add_host(struct meson_mx_mmc_ho= st *host) =20 /* Get the min and max supported clock rates */ mmc->f_min =3D clk_round_rate(host->cfg_div_clk, 1); - mmc->f_max =3D clk_round_rate(host->cfg_div_clk, - clk_get_rate(host->parent_clk)); + mmc->f_max =3D clk_round_rate(host->cfg_div_clk, ULONG_MAX); =20 mmc->caps |=3D MMC_CAP_CMD23 | MMC_CAP_WAIT_WHILE_BUSY; mmc->ops =3D &meson_mx_mmc_ops; @@ -565,54 +564,62 @@ static int meson_mx_mmc_add_host(struct meson_mx_mmc_= host *host) return 0; } =20 -static int meson_mx_mmc_register_clks(struct meson_mx_mmc_host *host, - void __iomem *base) +static struct clk *meson_mx_mmc_register_clk(struct device *dev, + void __iomem *base) { - struct clk_init_data init; - const char *clk_div_parent, *clk_fixed_factor_parent; - - clk_fixed_factor_parent =3D __clk_get_name(host->parent_clk); - init.name =3D devm_kasprintf(host->controller_dev, GFP_KERNEL, - "%s#fixed_factor", - dev_name(host->controller_dev)); - if (!init.name) - return -ENOMEM; + const char *fixed_div2_name, *cfg_div_name; + struct meson_mx_mmc_host_clkc *host_clkc; + struct clk *clk; + int ret; =20 - init.ops =3D &clk_fixed_factor_ops; - init.flags =3D 0; - init.parent_names =3D &clk_fixed_factor_parent; - init.num_parents =3D 1; - host->fixed_factor.div =3D 2; - host->fixed_factor.mult =3D 1; - host->fixed_factor.hw.init =3D &init; - - host->fixed_factor_clk =3D devm_clk_register(host->controller_dev, - &host->fixed_factor.hw); - if (WARN_ON(IS_ERR(host->fixed_factor_clk))) - return PTR_ERR(host->fixed_factor_clk); - - clk_div_parent =3D __clk_get_name(host->fixed_factor_clk); - init.name =3D devm_kasprintf(host->controller_dev, GFP_KERNEL, - "%s#div", dev_name(host->controller_dev)); - if (!init.name) - return -ENOMEM; + /* use a dedicated memory allocation for the clock controller to + * prevent use-after-free as meson_mx_mmc_host is free'd before + * dev (controller dev, not mmc_host->dev) is free'd. + */ + host_clkc =3D devm_kzalloc(dev, sizeof(*host_clkc), GFP_KERNEL); + if (!host_clkc) + return ERR_PTR(-ENOMEM); + + fixed_div2_name =3D devm_kasprintf(dev, GFP_KERNEL, "%s#fixed_div2", + dev_name(dev)); + if (!fixed_div2_name) + return ERR_PTR(-ENOMEM); + + host_clkc->fixed_div2.div =3D 2; + host_clkc->fixed_div2.mult =3D 1; + host_clkc->fixed_div2.hw.init =3D CLK_HW_INIT_FW_NAME(fixed_div2_name, + "clkin", + &clk_fixed_factor_ops, + 0); + ret =3D devm_clk_hw_register(dev, &host_clkc->fixed_div2.hw); + if (ret) + return dev_err_ptr_probe(dev, ret, + "Failed to register %s clock\n", + fixed_div2_name); + + cfg_div_name =3D devm_kasprintf(dev, GFP_KERNEL, "%s#div", dev_name(dev)); + if (!cfg_div_name) + return ERR_PTR(-ENOMEM); + + host_clkc->cfg_div.reg =3D base + MESON_MX_SDIO_CONF; + host_clkc->cfg_div.shift =3D MESON_MX_SDIO_CONF_CMD_CLK_DIV_SHIFT; + host_clkc->cfg_div.width =3D MESON_MX_SDIO_CONF_CMD_CLK_DIV_WIDTH; + host_clkc->cfg_div.hw.init =3D CLK_HW_INIT_HW(cfg_div_name, + &host_clkc->fixed_div2.hw, + &clk_divider_ops, + CLK_DIVIDER_ALLOW_ZERO); + ret =3D devm_clk_hw_register(dev, &host_clkc->cfg_div.hw); + if (ret) + return dev_err_ptr_probe(dev, ret, + "Failed to register %s clock\n", + cfg_div_name); =20 - init.ops =3D &clk_divider_ops; - init.flags =3D CLK_SET_RATE_PARENT; - init.parent_names =3D &clk_div_parent; - init.num_parents =3D 1; - host->cfg_div.reg =3D base + MESON_MX_SDIO_CONF; - host->cfg_div.shift =3D MESON_MX_SDIO_CONF_CMD_CLK_DIV_SHIFT; - host->cfg_div.width =3D MESON_MX_SDIO_CONF_CMD_CLK_DIV_WIDTH; - host->cfg_div.hw.init =3D &init; - host->cfg_div.flags =3D CLK_DIVIDER_ALLOW_ZERO; - - host->cfg_div_clk =3D devm_clk_register(host->controller_dev, - &host->cfg_div.hw); - if (WARN_ON(IS_ERR(host->cfg_div_clk))) - return PTR_ERR(host->cfg_div_clk); + clk =3D devm_clk_hw_get_clk(dev, &host_clkc->cfg_div.hw, "cfg_div_clk"); + if (IS_ERR(clk)) + return dev_err_ptr_probe(dev, PTR_ERR(clk), + "Failed to get the cfg_div clock\n"); =20 - return 0; + return clk; } =20 static int meson_mx_mmc_probe(struct platform_device *pdev) @@ -682,16 +689,12 @@ static int meson_mx_mmc_probe(struct platform_device = *pdev) goto error_free_mmc; } =20 - host->parent_clk =3D devm_clk_get(host->controller_dev, "clkin"); - if (IS_ERR(host->parent_clk)) { - ret =3D PTR_ERR(host->parent_clk); + host->cfg_div_clk =3D meson_mx_mmc_register_clk(&pdev->dev, base); + if (IS_ERR(host->cfg_div_clk)) { + ret =3D PTR_ERR(host->cfg_div_clk); goto error_free_mmc; } =20 - ret =3D meson_mx_mmc_register_clks(host, base); - if (ret) - goto error_free_mmc; - ret =3D clk_prepare_enable(host->cfg_div_clk); if (ret) { dev_err(host->controller_dev, "Failed to enable MMC clock\n"); --=20 2.51.2 From nobody Fri Dec 19 21:51:26 2025 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.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 3ADD028C849 for ; Sat, 8 Nov 2025 23:13:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643609; cv=none; b=tZFj8YAO9H9VDK/s98KeuN35+z3T6bNEQwFQbnOPWWKMUPr5YjLBAT2BDUpfF9ZYY1zVSoWyh7Su3kVeY5HYtBqD9DtyG/Owo3GsXWu6gbnupf4BWOHRknat6idyk5hMvq6zvvZ+qKiFfRLjtSULG5GA6s0LIKRO4Ss1SYe8Jjc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643609; c=relaxed/simple; bh=LRgQG8dmzk1BLZPP62AH0NDL2Twf5lOn1hcY4/I8VFQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dzkSiWhnhl8imoM10eVLUTQiaqEKnbWdJPjEcuUJW7bYvTr0k4ktVgqCH9zAqao0+0t1uSZjSmbuNUuOueyzOpb6YUvFAAvBmFaMX6Isxj2m+lzQSJelMegPdemOjOlK/3gy4Dor3ChZbpFIdbd9I4SleV8iumB0nBLUWipU1/8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=O1WWlgvV; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="O1WWlgvV" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-64088c6b309so3074271a12.0 for ; Sat, 08 Nov 2025 15:13:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1762643605; x=1763248405; 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=1MEwQ3w0WXL0SbyJSEK5ayMTVI87i1RH9nRchsrOxNc=; b=O1WWlgvVv2vgkkklyh4x+dbs882JcoL7raHaLMEOs853JRSoJkjlqoE+E4grv66jWH Ux5h38G4VaEmzPjHcRoZIBMw4Mkp6KBmLzSBu6Kbl+mn7ZJ8DbbLbzy86h5/5yatDKac fsDECl8qZCSrtOcBj4nwBIRRM9iYRBSM0cAY/9Q9xVbWrTZdBhmy9/OeP68SKAdND/JW Y9bdfTlcjgGCvopdhu4i/tGA9R9Kh3HFlsbQrJXhKFsAqCMsYlOvD8pg+NMxnoqTO/mM MpncH72amL5T2qGsVi5l0R1zOdUqzk3rRD+iqHRnJzxPEIX9hLAZEZLJZtsBkl0FPZt+ tv6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762643605; x=1763248405; 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=1MEwQ3w0WXL0SbyJSEK5ayMTVI87i1RH9nRchsrOxNc=; b=loBIyyB5wQ2yVzmkHm+NLe0vQ/8qAY/LrfaacdzikPcZtLGy8Woc0k6vmkMuKavWot krI5I+7d0ijv1fFP/4x309xz0YA2Sr2X9wES/zTfAIZp1zDMIBi/tQmAR/1zSiOJe8i6 JLv96ttvThTe75v0D6cL7UiUuK7+LlPIm2IF4GQNmUA6DdgpeCaC0k9c77DUxOxVqtTv PzOiqzYx500E1CRZyv9ilrGOToBc/Gv1FM3Nz67z7Vr3wehDyrrlwU0GhLTdYDaYeyjY UntymBTvQ+lH6Lye+poC2w/TgSfjaBJSgjmejQVd9iP9xRBCR8heBi6Py5HAlC9WLQGC bzpA== X-Forwarded-Encrypted: i=1; AJvYcCVvKOuIZmtl6IEx+N8k6ht4+AGNt8UGiKwn1mhi9cMw14bQH0+DnVrGIhxmqD/zhGSD1WOCSJzBeODTioQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yyg9BQqXa4Dznxc7LHvmzi2W9ylMJTSs8xl/Zp4TzBRsr2j6Vgx llE+2CcNs1S8+NfjFqNEsORMHWCCCiKuxvCY0Ft5Xeh3x7xqy0XGXRcF X-Gm-Gg: ASbGnctV9SsoNK3EpKuhTUKg2STU2TkuUwqWtqQc/lJukY7HH+Y9cYsW+a6r2ln+F7+ 6wp1qc2/KEHivwN33CTN7mlLkOy0SdUyF0RZdmLdvDoNIQUa8rMuHTzAQy2rJsHQ3mbzBbwPVCi CEHDGDGRNd156sd2GAgBrqnxGHaSI8MUi4cXXJzlwile8B7TuYL0qcQum6AFP8z+HByUK75JnMR Aef21z4m4Yzt7ku+QA2IBQiZeHhPkPgjSArpxbEVCS0sEZDG1+yRqy1tj5bSUhPm0CMKRso/EqB lGW04wxCmkTy6+he8OsDNPea91hyQOFzhhRibfNmuP0eyXsOPRFU12DUIZVl8I3/3VN+EQnLSOB VvCGwIQhhBOb8EHhQc27ao1hnp91gBxUCTF/2SfyUbklkgO1iKUFZopYhQB6w8DJD2bfb2HJxdN SECk4jRCA0Jgjtb1k8Ip9tBZJ3W2iMO3XPio50fpDMc5Uz9alMEAiE2ts0igMFtRc0+rclBJeMi ozdMBLqkaMKHYRmB6bEKLliSsqhpL8Ccjs637mw+l8= X-Google-Smtp-Source: AGHT+IEsR1rp3/X0FtnDGE5wBY+8APLUTqmqxSkpd5bpl/RawvNHr6XzcekK44kWFCslKuF52z+IjQ== X-Received: by 2002:a05:6402:305c:10b0:640:ebca:e680 with SMTP id 4fb4d7f45d1cf-6415e80f7fdmr2452169a12.37.1762643605472; Sat, 08 Nov 2025 15:13:25 -0800 (PST) Received: from blackbox (dynamic-2a02-3100-a9b3-6600-1e86-0bff-fe2f-57b7.310.pool.telefonica.de. [2a02:3100:a9b3:6600:1e86:bff:fe2f:57b7]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-6411f814164sm7642807a12.13.2025.11.08.15.13.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Nov 2025 15:13:24 -0800 (PST) From: Martin Blumenstingl To: linux-amlogic@lists.infradead.org, linux-mmc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, Binbin Zhou , Martin Blumenstingl Subject: [PATCH v1 4/7] mmc: meson-mx-sdio: Use devm_mmc_alloc_host() helper Date: Sun, 9 Nov 2025 00:12:50 +0100 Message-ID: <20251108231253.1641927-5-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251108231253.1641927-1-martin.blumenstingl@googlemail.com> References: <20251108231253.1641927-1-martin.blumenstingl@googlemail.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" From: Binbin Zhou Use new function devm_mmc_alloc_host() to simplify the code. Signed-off-by: Binbin Zhou Signed-off-by: Martin Blumenstingl Reviewed-by: Neil Armstrong --- drivers/mmc/host/meson-mx-sdio.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/drivers/mmc/host/meson-mx-sdio.c b/drivers/mmc/host/meson-mx-s= dio.c index ce1828d915da..214ce84f1ddd 100644 --- a/drivers/mmc/host/meson-mx-sdio.c +++ b/drivers/mmc/host/meson-mx-sdio.c @@ -648,7 +648,7 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) else if (IS_ERR(slot_pdev)) return PTR_ERR(slot_pdev); =20 - mmc =3D mmc_alloc_host(sizeof(*host), &slot_pdev->dev); + mmc =3D devm_mmc_alloc_host(&slot_pdev->dev, sizeof(*host)); if (!mmc) { ret =3D -ENOMEM; goto error_unregister_slot_pdev; @@ -667,13 +667,13 @@ static int meson_mx_mmc_probe(struct platform_device = *pdev) &meson_mx_sdio_regmap_config); if (IS_ERR(host->regmap)) { ret =3D PTR_ERR(host->regmap); - goto error_free_mmc; + goto error_unregister_slot_pdev; } =20 irq =3D platform_get_irq(pdev, 0); if (irq < 0) { ret =3D irq; - goto error_free_mmc; + goto error_unregister_slot_pdev; } =20 ret =3D devm_request_threaded_irq(host->controller_dev, irq, @@ -681,24 +681,24 @@ static int meson_mx_mmc_probe(struct platform_device = *pdev) meson_mx_mmc_irq_thread, IRQF_ONESHOT, NULL, host); if (ret) - goto error_free_mmc; + goto error_unregister_slot_pdev; =20 core_clk =3D devm_clk_get_enabled(host->controller_dev, "core"); if (IS_ERR(core_clk)) { ret =3D PTR_ERR(core_clk); - goto error_free_mmc; + goto error_unregister_slot_pdev; } =20 host->cfg_div_clk =3D meson_mx_mmc_register_clk(&pdev->dev, base); if (IS_ERR(host->cfg_div_clk)) { ret =3D PTR_ERR(host->cfg_div_clk); - goto error_free_mmc; + goto error_unregister_slot_pdev; } =20 ret =3D clk_prepare_enable(host->cfg_div_clk); if (ret) { dev_err(host->controller_dev, "Failed to enable MMC clock\n"); - goto error_free_mmc; + goto error_unregister_slot_pdev; } =20 conf =3D 0; @@ -718,8 +718,6 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) =20 error_disable_div_clk: clk_disable_unprepare(host->cfg_div_clk); -error_free_mmc: - mmc_free_host(mmc); error_unregister_slot_pdev: of_platform_device_destroy(&slot_pdev->dev, NULL); return ret; @@ -737,8 +735,6 @@ static void meson_mx_mmc_remove(struct platform_device = *pdev) of_platform_device_destroy(slot_dev, NULL); =20 clk_disable_unprepare(host->cfg_div_clk); - - mmc_free_host(host->mmc); } =20 static const struct of_device_id meson_mx_mmc_of_match[] =3D { --=20 2.51.2 From nobody Fri Dec 19 21:51:26 2025 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.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 12BD228CF6F for ; Sat, 8 Nov 2025 23:13:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643611; cv=none; b=gnYd+M0F0UEr3KNPiCf9rq3QUcrrFNnQ5BLGsqDD5mD2yse1fXR682DvJfBJVOWEXlXxs/vQbj2o3+lEgn1XM/UV319Q2RVsPKkgGG9rv0Yk8AU4j86oDvcli7PD2SGQW5R8dz4kDOXbwuTRHf00wc0mFXoqD85FcBQQWyWY4ag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643611; c=relaxed/simple; bh=MXwD98+QiCRKWpbu3tuuKlm8W3tPdoRbgTcv4H6yNxE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lkp78qaJPd0cgL7vWuMjwoWHv4EIdYKzOVmzzSmOz34AVlP70PfHJAPzgFLEuU5cdv9OiVkA8iaooOMFdX2wq0nCDpP9UG63PBv8KtAs8KSeZyWppXHnJPM8VvtZfxLyP0M97YyV7qwnD+I1wtq1A0gtxRRgO2Q5rqoZb6J7apc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=lcARcs8p; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="lcARcs8p" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-640b4a52950so2884072a12.1 for ; Sat, 08 Nov 2025 15:13:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1762643608; x=1763248408; 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=cijZ+09YTsl3uHzpkuOiO4+DMdT2cKq32KSIaXuX+bQ=; b=lcARcs8pc6IYkG/VjQQqpJEWODaaz+Q6v4rMlVxi/IjvToEPCWsigNmSARD42S1U1+ x9LHuMtbntSnTyK02NP9lGiTofuAMpYBCHidrElP/LgYQ43R3CMYXeWksojECSyvjxY1 n874ZFELWwo4hECURFn4rxtmyBbAs7oodClMvb4qI4Zs0I0gZinAZpgxrrXUCq6XtgvD x4LcDejCpD7CIVkqOozXE/Tyel6JBPfJ6bD96o3vzSukZ3amdDAZHNCNAX/tIq3jCUI0 FzL98KHUmwlac1dK0f90OFK9WhP/5oxCwPffQL2LZTFMfDMKHYX27hq0i9te1DPmbkGr yj0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762643608; x=1763248408; 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=cijZ+09YTsl3uHzpkuOiO4+DMdT2cKq32KSIaXuX+bQ=; b=OOPVux/Kd70ywBtdE9lEqqV0p3EeYxDKmH2OLfNwJc5twef8FDtH464js8JQTZKsZ5 1jFA2zR/YqexVu9kWuE+dR22f8oJsgPoPexo8OUB3x7OrjoVf2WNi127FiTljhZ3a99k apnZXOeZzJag78LVZ//fn40Kh7Ei+j9juSCQY9BgrXolnHM4PY8e+w4MozCu/kuCu5Na exxfJNKEcPGF6iLhFKaHitghEvYuQh3r/m3uhTRk4t5JoET9IuZi4smBf7IB4ypTh8wW K1i1/UAzPnDFcscRV4WMYiCI8JY36N+z/BECt60k+/52TOZJ0sBkdYmARL8Jzu9PiOdy J9mA== X-Forwarded-Encrypted: i=1; AJvYcCUnecR9Qi2sJp7UtZrM5ogVTgGg8AvnluGk7DACgkYQWRHtB8yQ29YQVCVu+Aj7WSZoya4RyROGRmTZmlU=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4yWvoe23kL7nP+JoVn1uC+3qGikcedxMQkf93pWDERXLHc2JI X0Fwob+qZ7aJdAd2eT2ffaxM0iZ0wODthMVyEGkJWmn2t9U857UvNYj1 X-Gm-Gg: ASbGnctVeEUGCj/TjutVmKJJ1IPNKiGPL6KIWCz5vC703HzJjXzUGbd465sgpkhFGcE jCKIxbMSgKg35ci9zk80aej/LZsguR4uLpF1iWqWg2qndcSss41Q4PcOyyZzFHN97QQIDeCLgL5 rHJmzSE1tXtWsHITnyMD3aPTwQBkJrWR0fin5ej4OGMDULZej5T6yaNmNeZJYi5Ya0gV4JpLsrg F9xDbTYRRI9EPRlT5FrA02othyMrXCGG1/BdK2kEIErSLYL8Qt7Us0vPZyzwBxvAqErJ+Bb9GHj Dkwf7/3OQqcpBJaDzumDP++YHDZCcBeJWtB1juYsPWj50QUFmfvZaqh14KlKoHSS2S76pvXjMRC oqvWUbU6nz/5XZhdRT7JhKKfOD9hRmUwYKDxarORqnqYwxsjh/MLk/Fp9UnAwPgPq06Ew1D9kFE yeX2LyXw1Nq0M7+V9jZv6opqP3b6smnu0n1gYxtLZ27T/ZCCU8hjE9+7AuXGLKP9D62yFDPyXE5 DoFzbQ0AzfLDF8R0AuZls7ZK3mf4Q4uM9623X6t0FQ= X-Google-Smtp-Source: AGHT+IGhMEgUC8oM2+pqlrfLLlvVoY4z7bHF+SAAYNYxAbvCQcc6jUd5lgOvOXrATxrEZssO/EG4/Q== X-Received: by 2002:a05:6402:4310:b0:63b:dc3e:f01c with SMTP id 4fb4d7f45d1cf-6415e6cc622mr2587683a12.12.1762643608311; Sat, 08 Nov 2025 15:13:28 -0800 (PST) Received: from blackbox (dynamic-2a02-3100-a9b3-6600-1e86-0bff-fe2f-57b7.310.pool.telefonica.de. [2a02:3100:a9b3:6600:1e86:bff:fe2f:57b7]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-6411f814164sm7642807a12.13.2025.11.08.15.13.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Nov 2025 15:13:26 -0800 (PST) From: Martin Blumenstingl To: linux-amlogic@lists.infradead.org, linux-mmc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, Martin Blumenstingl Subject: [PATCH v1 5/7] mmc: meson-mx-sdio: Use dev_err_probe() where appropriate Date: Sun, 9 Nov 2025 00:12:51 +0100 Message-ID: <20251108231253.1641927-6-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251108231253.1641927-1-martin.blumenstingl@googlemail.com> References: <20251108231253.1641927-1-martin.blumenstingl@googlemail.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" This streamlines probe error handling / logging with other drivers. Signed-off-by: Martin Blumenstingl Reviewed-by: Neil Armstrong --- drivers/mmc/host/meson-mx-sdio.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/mmc/host/meson-mx-sdio.c b/drivers/mmc/host/meson-mx-s= dio.c index 214ce84f1ddd..052bcf8f32df 100644 --- a/drivers/mmc/host/meson-mx-sdio.c +++ b/drivers/mmc/host/meson-mx-sdio.c @@ -520,16 +520,14 @@ static int meson_mx_mmc_add_host(struct meson_mx_mmc_= host *host) struct device *slot_dev =3D mmc_dev(mmc); int ret; =20 - if (of_property_read_u32(slot_dev->of_node, "reg", &host->slot_id)) { - dev_err(slot_dev, "missing 'reg' property\n"); - return -EINVAL; - } + if (of_property_read_u32(slot_dev->of_node, "reg", &host->slot_id)) + return dev_err_probe(slot_dev, -EINVAL, + "missing 'reg' property\n"); =20 - if (host->slot_id >=3D MESON_MX_SDIO_MAX_SLOTS) { - dev_err(slot_dev, "invalid 'reg' property value %d\n", - host->slot_id); - return -EINVAL; - } + if (host->slot_id >=3D MESON_MX_SDIO_MAX_SLOTS) + return dev_err_probe(slot_dev, -EINVAL, + "invalid 'reg' property value %d\n", + host->slot_id); =20 /* Get regulators and the supported OCR mask */ ret =3D mmc_regulator_get_supply(mmc); @@ -666,7 +664,8 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) host->regmap =3D devm_regmap_init_mmio(&pdev->dev, base, &meson_mx_sdio_regmap_config); if (IS_ERR(host->regmap)) { - ret =3D PTR_ERR(host->regmap); + ret =3D dev_err_probe(host->controller_dev, PTR_ERR(host->regmap), + "Failed to initialize regmap\n"); goto error_unregister_slot_pdev; } =20 @@ -680,12 +679,16 @@ static int meson_mx_mmc_probe(struct platform_device = *pdev) meson_mx_mmc_irq, meson_mx_mmc_irq_thread, IRQF_ONESHOT, NULL, host); - if (ret) + if (ret) { + dev_err_probe(host->controller_dev, ret, + "Failed to request IRQ\n"); goto error_unregister_slot_pdev; + } =20 core_clk =3D devm_clk_get_enabled(host->controller_dev, "core"); if (IS_ERR(core_clk)) { - ret =3D PTR_ERR(core_clk); + ret =3D dev_err_probe(host->controller_dev, PTR_ERR(core_clk), + "Failed to get and enable 'core' clock\n"); goto error_unregister_slot_pdev; } =20 @@ -697,7 +700,8 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) =20 ret =3D clk_prepare_enable(host->cfg_div_clk); if (ret) { - dev_err(host->controller_dev, "Failed to enable MMC clock\n"); + dev_err_probe(host->controller_dev, ret, + "Failed to enable MMC (cfg div) clock\n"); goto error_unregister_slot_pdev; } =20 --=20 2.51.2 From nobody Fri Dec 19 21:51:26 2025 Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) (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 F027728C849 for ; Sat, 8 Nov 2025 23:13:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643614; cv=none; b=PlX+X/jN8CWl8u4MH1mUR6mEDyUAfzkSNzWrcUwkcWd+N23WL5PZ9W4OCbuXktfQ1FXrK7P7ta9n1ykt4niOfrPyeJ2a7OOtM1FHrXwKGizEQC19GP6+SsQWzfq/IsVQnPd36rbEF/luOaiJ8zCVFo+mVktHnHSCALfkloqMAD0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643614; c=relaxed/simple; bh=fIhUPNIq43wji3Mk4iQYsn7ciQjs0jxKDfIN9kIEqzw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kSRZdgpjVx2ZqJjFrlGvR6oTu+LGEWWqWayOoJOvQH2whHtqhJq6tNMigpAovDmk355PNID4rolEo2x70m9usDkDboZxqt6/X0ddUJdlr2EGzL1q2QRpcAt5TIdU8E6TndsqEHHKH/NZwfuTdEltZqQZG4ENLGKyga9ZewyR3+U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=E/WIEQuN; arc=none smtp.client-ip=209.85.208.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="E/WIEQuN" Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-640741cdda7so3004461a12.2 for ; Sat, 08 Nov 2025 15:13:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1762643611; x=1763248411; 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=5oO3j4actqzf2xVKKJ0nWDgX3aF/G+cl1rlsWPWa+z8=; b=E/WIEQuN6AcdfcsY/eJweh09/g73nbGarmoYlGt9et9k3fdFb2JjCYkc15ycb8kq8x rtkSUpkVZKqJBypmyqJ51CcBW4mnDE/zVyOdHwO6c1WKg820EgzPqLQbewE61nOqlHlj sOLu2hpmrNC2TVxIZ20AJxVzkACal9epbff06jkGr7UlXJadGRfSQSCVe6VpBd/KPTw5 yPNyRzBxv0zooRKqXLAx1zhxKxn/x8Yzsxe/Qmz6qGuWDfuJhhM8fe6Gnr7N8yjS9oGs GLgF1DsbhVet+QCoCtdvGAYCp42Sfd2jn/3Khx9KQGb7Yf7xYBfWi5IW2vslVg6CtuSj X0ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762643611; x=1763248411; 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=5oO3j4actqzf2xVKKJ0nWDgX3aF/G+cl1rlsWPWa+z8=; b=OJDZ4fNu+b99r9VYjbKwyus1Hb3ME/uz+8NvB24esyy8YoZec3mvWfW6bB9Kaizc6S PIo/3poZig3Z1lT+RLojQnmcbAAZk5UHDfXbUUUU9bMxFE2OoLaJr8vtR3UKieEbhVND 6299Fa5dFBWDxNjWI+P2HHr0J386STQo1Cl2K/H7CYBPMt4fa7K+uCySggUk8wXLxnGo KFeXJEzv1voi2wFXhBpwvGb6Xrc+RE/CmBwKWJv7vrYiCQTOk0a/NYm99z8lgSPDtLX0 OBBfCjVQMt3EiCKH1vSYNNVY4vbP8zBA9HaMNfEGsQb6QTg6xni/nvQa18ur1nHekxAj QPeg== X-Forwarded-Encrypted: i=1; AJvYcCU0O99p4iZ5ANTlL/nYgPoGl0eNnwlZokcsGMdbN06EVb6H3roMpzgSVIWLNaNDbONbIWFwX4VLR5WM71I=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3I4fZkLRigQTEfC6WxxoTMx47QGUNMw31+wBCJ8CyJMTCEtES +0q+FrvuUQ5BpjdoqEQ6EUdYR/SLtkv/iTjRqdLNc50LOX2GZO9NtsLU X-Gm-Gg: ASbGncvZCySxQJe/qkjkEZoUjLa+skxwzjDxuTFQsq4AgTfFRLqOjtwecFP6la66XR6 QQ6SMO4UI1FfeYTB6+N1lYnYBDuUth2qdhduLrtTMecdI9dB7dRVdYLlbGI5NtAU2x7+dXIiIsO cUobUchNms+5t1QgcmP/tyKTBeYHC8eiYgjJmPOG5l0HLwGFPms+DnLclEcpkotAx6DrkGx8DiT VmjgLwlhge+nEmQ5yKZI+xphFiDTDeArHs52dgsVc+9oYIjaSDGNbaefi2hrXMKdr7+TJAFHZqB X0QwnpRjkAYGO0yjIfGxfRJrXVjyexO81wIaO7JvAbcaa5k7zBCJ5+VV880se2Y+YygBSr+fc5E DHyKp8tTZ5M7IFDon/yI1jkQlDtOj80wxFKsaopM/w83eSZLceqVeDFEctiqi1WxEyB7FhjJugg vEtHs1mUVR0mZ4KVZGqGeXfKifLiBX/5aW+3ZY7dAs3kGQZYTUUupZcVBgXIi6YOgNkd8lF/zxv dby1xkeHCvCdp4sWoJ38hn8G0nyp7Y4Qv1DdwMXjpc= X-Google-Smtp-Source: AGHT+IGKjmu35eL8DzEjWyR+sT9K1rO2NK/av8+BPsQU60PgD99LUOCuaaHsb7hf+eDzu3/wZf4PEA== X-Received: by 2002:a05:6402:44c3:b0:63c:1170:656a with SMTP id 4fb4d7f45d1cf-6415e809ff8mr2471765a12.37.1762643611141; Sat, 08 Nov 2025 15:13:31 -0800 (PST) Received: from blackbox (dynamic-2a02-3100-a9b3-6600-1e86-0bff-fe2f-57b7.310.pool.telefonica.de. [2a02:3100:a9b3:6600:1e86:bff:fe2f:57b7]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-6411f814164sm7642807a12.13.2025.11.08.15.13.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Nov 2025 15:13:29 -0800 (PST) From: Martin Blumenstingl To: linux-amlogic@lists.infradead.org, linux-mmc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, Martin Blumenstingl Subject: [PATCH v1 6/7] mmc: meson-mx-sdio: Fix indentation in meson_mx_mmc_irq_thread() Date: Sun, 9 Nov 2025 00:12:52 +0100 Message-ID: <20251108231253.1641927-7-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251108231253.1641927-1-martin.blumenstingl@googlemail.com> References: <20251108231253.1641927-1-martin.blumenstingl@googlemail.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" Keep the second line with arguments for dma_unmap_sg() aligned. Signed-off-by: Martin Blumenstingl Reviewed-by: Neil Armstrong --- drivers/mmc/host/meson-mx-sdio.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/mmc/host/meson-mx-sdio.c b/drivers/mmc/host/meson-mx-s= dio.c index 052bcf8f32df..e8b63dc45dd8 100644 --- a/drivers/mmc/host/meson-mx-sdio.c +++ b/drivers/mmc/host/meson-mx-sdio.c @@ -436,8 +436,7 @@ static irqreturn_t meson_mx_mmc_irq_thread(int irq, voi= d *irq_data) =20 if (cmd->data) { dma_unmap_sg(mmc_dev(host->mmc), cmd->data->sg, - cmd->data->sg_len, - mmc_get_dma_dir(cmd->data)); + cmd->data->sg_len, mmc_get_dma_dir(cmd->data)); =20 cmd->data->bytes_xfered =3D cmd->data->blksz * cmd->data->blocks; } --=20 2.51.2 From nobody Fri Dec 19 21:51:26 2025 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 A404629D270 for ; Sat, 8 Nov 2025 23:13:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643616; cv=none; b=EBNwXeXsgnXJvNOML0iShmNLXNDdAc2y5l+vPj0ptqcwG1BBGFR0i1YghJvCllpokcvvmbr+y0oGmUUEsBNiPstK253h9gaQ/jwkYX7BJ0b1TfWgbgrWWTu3Mq++qeU0nAOZ41Dh3IbNncgDRxy4UtvfWcg8g5x5NTI/CcHm/+A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762643616; c=relaxed/simple; bh=2sKf1rUf7Yyibfx/hY6iRlou4EFmIhXP3XoaRsvqQGY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QHtRum/Aq5bF/7/AKc8vr3I+CLrWOe65rrL5KJkZ6NSQqNgZWJETEIA2TlocUprnmg97/TWgWvKsEjoj0F36B69U8e3m95enRzJcmZ5herPZTN3NSXai4gi8Ee3owFF259TpqKTGYRtmzdpWpxySYp+TbZTbQvfJqRfhm0SNVKw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com; spf=pass smtp.mailfrom=googlemail.com; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b=hRDC9uU1; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=googlemail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=googlemail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=googlemail.com header.i=@googlemail.com header.b="hRDC9uU1" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-64180bd67b7so23668a12.0 for ; Sat, 08 Nov 2025 15:13:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20230601; t=1762643613; x=1763248413; 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=jp3aBA3u4fWo7xiq7xdD0SMcDBXI+jskP2t4r2Vw08s=; b=hRDC9uU13Y+ZrcO4icz5roJCxCUEROE98mBcIdH//AQTN7CaWGWRcm+zC7TpCEs7U6 uLKhhvclo14cf0I81Euo5QNfcG7Kh6Lgwe2UczskyKxsNuUqlyQuqWzAJJgQ+Rfx/fTN 5frLrGIzt4n8Gk9M+6ycTlbZwmqbZ43Wlus2RKrfOCPIXOS9RBhOgEHY1XuQMrTHi6iz it+uLUsoALIs+yVBOyInDfAPmjP6LstpavisR6MsP8Dk3ZVGo618SO6s/xSsSd3O7LgJ Lm8tBuMMWjuxTZfW9Rxcm3UkUlyjYWUR3qfHhYHgeaoxDePQ8Uh5FqdVkryu3gSo/ZDR v5CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762643613; x=1763248413; 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=jp3aBA3u4fWo7xiq7xdD0SMcDBXI+jskP2t4r2Vw08s=; b=nUihaf/lO/yuUPEDuk2/Xm1HC3ViPn/9GQIfapz7IIeBjuSE4ZT1rroSrJ3+g+oBtK VVOyUGd5w1smtEdfGoSKprArGG5vPbsxSap/yLGMjMehPYNi9p1Pqf1Jp5HEfwklKr2P Xadj7yMkPZ3F3E9p34PMsHmXAQrbxuLao37dZdiq7cSvopsC8yazObpeOYr3Qvsvr745 B14z8ayXx3YCcgkQewDXeGVJwlwpX8UeBagaamxncwS4DjGd5RboFvjnq477VRFI9NAC JwLd3vjzTmF1S9luvTuN7NqOCYaXxWACT0SVPR/U6Wl410a+JZVm54A46zQcp/YXWfiK Davg== X-Forwarded-Encrypted: i=1; AJvYcCWUYLc7rkyCGAg/149oHX/lXuT7YIDzR+X8B6LdvrhYZRChTe9wIEkiVU0GUftIT4fatc4hctttI7CrFaE=@vger.kernel.org X-Gm-Message-State: AOJu0YwaGLChIkjXj/QAG9XIkBo+K7nDx9+gnzM+t0Q7+YSWe8ILLXiL bmfxqkr9cThDkHENC2sDBAHb1ZEtPSYb9VOtYRG5DsUfyBiqirVFzRD0 X-Gm-Gg: ASbGncsdt5eKVESGREFjFBAJAW+b5UYvOobgldwfncE2bgf8AM4NiVW8mTzSB/X+/he tbNp7aAIcFzse3ejlHYNAMjoW+Q+fVkjxLk4Owu3HkZID5Ata51A0GlnuEoKqgUmbORrZQ5VSyf Ibf97i6m6RYRHIudbqvidGKnVdVTC3sZHgvxl8Iw5oxscjTAdox4M2Pzl3uGBuyNpSWBG9mUbjo c8/1rD6wFj9U45WS05w569ylUL9TGIC2XBH7Jflqj0vuqrN/ZkzHzG0ENmZoHImxo/gmgF/xCSF +IkS4Fr3uwxe/IxuQVTWVyK0q+SN9oDY4Rshwd6pvYPxJ4Mw5xe181kgVmCTJb1cbExCUjWXJzm OX7bA/0el9V59aOPcSCy5HCvRAVJZuWg9+qJtFLrxbjZRwgkOMfPRkkOGske9buLPOc7oRDGwUo QbNttjI3rg4UM0rKJAu4fvVvKIOiflQ9b41stHcTP/qWP6leWeaL34vSu2Pi0EbGIRljj+Lb6SG cyASz5Kp+yBWQUAR2zTneULf/6/X/I1 X-Google-Smtp-Source: AGHT+IGemsR0OuxveqoCLuvT35vA4jAjT0f4VTJglt6MI1GNIHLfcz8g6Jk7qZLukmNg7JdbfDQkvg== X-Received: by 2002:a05:6402:4415:b0:634:6d87:1d28 with SMTP id 4fb4d7f45d1cf-6415e856c10mr2612380a12.35.1762643612939; Sat, 08 Nov 2025 15:13:32 -0800 (PST) Received: from blackbox (dynamic-2a02-3100-a9b3-6600-1e86-0bff-fe2f-57b7.310.pool.telefonica.de. [2a02:3100:a9b3:6600:1e86:bff:fe2f:57b7]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-6411f814164sm7642807a12.13.2025.11.08.15.13.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Nov 2025 15:13:31 -0800 (PST) From: Martin Blumenstingl To: linux-amlogic@lists.infradead.org, linux-mmc@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, ulf.hansson@linaro.org, Martin Blumenstingl Subject: [PATCH v1 7/7] mmc: meson-mx-sdio: Ignore disabled "mmc-slot" child-nodes Date: Sun, 9 Nov 2025 00:12:53 +0100 Message-ID: <20251108231253.1641927-8-martin.blumenstingl@googlemail.com> X-Mailer: git-send-email 2.51.2 In-Reply-To: <20251108231253.1641927-1-martin.blumenstingl@googlemail.com> References: <20251108231253.1641927-1-martin.blumenstingl@googlemail.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 meson-mx-sdio (and mmc core) only support one MMC/SD/SDIO slot (device) per host. Thus having multiple mmc-slot nodes (one for the up to three supported slots with one device each on the meson-mx-sdio hardware) can be problematic. Allow specifying all slots (with their respective device) connected to the meson-mx-sdio hardware in device-tree, while making sure that only the enabled one(s) are actually considered by the driver. Signed-off-by: Martin Blumenstingl --- drivers/mmc/host/meson-mx-sdio.c | 37 ++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/drivers/mmc/host/meson-mx-sdio.c b/drivers/mmc/host/meson-mx-s= dio.c index e8b63dc45dd8..5921e2cb2180 100644 --- a/drivers/mmc/host/meson-mx-sdio.c +++ b/drivers/mmc/host/meson-mx-sdio.c @@ -493,23 +493,30 @@ static struct mmc_host_ops meson_mx_mmc_ops =3D { =20 static struct platform_device *meson_mx_mmc_slot_pdev(struct device *paren= t) { - struct device_node *slot_node; - struct platform_device *pdev; + struct platform_device *pdev =3D NULL; + + for_each_available_child_of_node_scoped(parent->of_node, slot_node) { + if (!of_device_is_compatible(slot_node, "mmc-slot")) + continue; + + /* + * TODO: the MMC core framework currently does not support + * controllers with multiple slots properly. So we only + * register the first slot for now. + */ + if (pdev) { + dev_warn(parent, + "more than one 'mmc-slot' compatible child found - using the first on= e and ignoring all subsequent ones\n"); + break; + } =20 - /* - * TODO: the MMC core framework currently does not support - * controllers with multiple slots properly. So we only register - * the first slot for now - */ - slot_node =3D of_get_compatible_child(parent->of_node, "mmc-slot"); - if (!slot_node) { - dev_warn(parent, "no 'mmc-slot' sub-node found\n"); - return ERR_PTR(-ENOENT); + pdev =3D of_platform_device_create(slot_node, NULL, parent); + if (!pdev) + dev_err(parent, + "Failed to create platform device for mmc-slot node '%pOF'\n", + slot_node); } =20 - pdev =3D of_platform_device_create(slot_node, NULL, parent); - of_node_put(slot_node); - return pdev; } =20 @@ -642,8 +649,6 @@ static int meson_mx_mmc_probe(struct platform_device *p= dev) slot_pdev =3D meson_mx_mmc_slot_pdev(&pdev->dev); if (!slot_pdev) return -ENODEV; - else if (IS_ERR(slot_pdev)) - return PTR_ERR(slot_pdev); =20 mmc =3D devm_mmc_alloc_host(&slot_pdev->dev, sizeof(*host)); if (!mmc) { --=20 2.51.2