From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DA373C4332F for ; Wed, 21 Dec 2022 19:57:54 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 31883851EF; Wed, 21 Dec 2022 20:57:52 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=kernel.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="fATHN0yU"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id C29F2851E6; Wed, 21 Dec 2022 20:57:50 +0100 (CET) Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 95014851E6 for ; Wed, 21 Dec 2022 20:57:47 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=kernel.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=rogerq@kernel.org Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sin.source.kernel.org (Postfix) with ESMTPS id CF6ACCE18C5; Wed, 21 Dec 2022 19:57:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E5361C433D2; Wed, 21 Dec 2022 19:57:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1671652663; bh=YBWzbgJ73gLwY7MYUcctcQ1StdYu6l4ozG8hESIkhvY=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=fATHN0yUjD4qyw8bnfN8iq90CsVpaYNYw933hLvPKlmxe+px5qw1anqEbjFC/LJa1 d74DN6F4vvwxCXy3OgCU3M4A5Iw/P9M93Jh3pWljmFoDh0a7SYTfDFOmwy2pmUp7d8 NHJH7G2Z3BIq9WqIP2J+caeS23SSL3KM2+2qxHk2k8FUzlNuM1s6yIu+JpCBpzGxpd JlhJkklCsiqQKSes3dV3JDTdLOP0ZBZzYtrtxGzfkN4oWewgkCu3gI9cUMk1R3huw5 8CwtCK52E9h74Ti1293B5lAy6wfl0jJeW7rpaAaKMarpcWWqlPb/Un2zZgk0vlziJM OgPUxiPYhAwVQ== Message-ID: <831503a6-9144-fb3a-ad34-372fe769d9c8@kernel.org> Date: Wed, 21 Dec 2022 21:57:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: [u-boot][PATCH v2 8/8] mtd: rawnand: omap_elm: u-boot driver model support To: Michael Nazzareno Trimarchi Cc: dario.binacchi@amarulasolutions.com, m.niestroj@grinn-global.com, trini@konsulko.com, u-boot@lists.denx.de References: <20221220102203.52398-1-rogerq@kernel.org> <20221220102203.52398-9-rogerq@kernel.org> Content-Language: en-US From: Roger Quadros In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean Hi Michael, On 21/12/2022 19:56, Michael Nazzareno Trimarchi wrote: > Hi Roger > > On Tue, Dec 20, 2022 at 11:22 AM Roger Quadros wrote: >> >> Support u-boot driver model. We still retain >> support legacy way of doing things if ELM_BASE >> is defined in >> >> We could completely get rid of that if all >> platforms defining ELM_BASE get rid of that definition >> and enable CONFIG_SYS_NAND_SELF_INIT and are verified >> to work. >> >> Signed-off-by: Roger Quadros >> --- > > When you post please include the relative changelog I put the changelog in the cover-letter. cheers, -roger > > Michael > >> drivers/mtd/nand/raw/omap_elm.c | 35 ++++++++++++++++++- >> .../mtd => drivers/mtd/nand/raw}/omap_elm.h | 6 ++++ >> drivers/mtd/nand/raw/omap_gpmc.c | 12 ++++++- >> 3 files changed, 51 insertions(+), 2 deletions(-) >> rename {include/linux/mtd => drivers/mtd/nand/raw}/omap_elm.h (97%) >> >> diff --git a/drivers/mtd/nand/raw/omap_elm.c b/drivers/mtd/nand/raw/omap_elm.c >> index 35c6dd1f1bc..e528a5348d5 100644 >> --- a/drivers/mtd/nand/raw/omap_elm.c >> +++ b/drivers/mtd/nand/raw/omap_elm.c >> @@ -15,9 +15,14 @@ >> #include >> #include >> #include >> -#include >> #include >> >> +#include >> +#include >> +#include >> + >> +#include "omap_elm.h" >> + >> #define DRIVER_NAME "omap-elm" >> #define ELM_DEFAULT_POLY (0) >> >> @@ -180,6 +185,7 @@ void elm_reset(void) >> ; >> } >> >> +#ifdef ELM_BASE >> /** >> * elm_init - Initialize ELM module >> * >> @@ -191,3 +197,30 @@ void elm_init(void) >> elm_cfg = (struct elm *)ELM_BASE; >> elm_reset(); >> } >> +#endif >> + >> +static int elm_probe(struct udevice *dev) >> +{ >> +#ifndef ELM_BASE >> + struct resource res; >> + >> + dev_read_resource(dev, 0, &res); >> + elm_cfg = devm_ioremap(dev, res.start, resource_size(&res)); >> + elm_reset(); >> +#endif >> + >> + return 0; >> +} >> + >> +static const struct udevice_id elm_ids[] = { >> + { .compatible = "ti,am3352-elm" }, >> + { .compatible = "ti,am64-elm" }, >> + { } >> +}; >> + >> +U_BOOT_DRIVER(gpmc_elm) = { >> + .name = DRIVER_NAME, >> + .id = UCLASS_MTD, >> + .of_match = elm_ids, >> + .probe = elm_probe, >> +}; >> diff --git a/include/linux/mtd/omap_elm.h b/drivers/mtd/nand/raw/omap_elm.h >> similarity index 97% >> rename from include/linux/mtd/omap_elm.h >> rename to drivers/mtd/nand/raw/omap_elm.h >> index f3db00d55de..a7f7bacb154 100644 >> --- a/include/linux/mtd/omap_elm.h >> +++ b/drivers/mtd/nand/raw/omap_elm.h >> @@ -74,6 +74,12 @@ int elm_check_error(u8 *syndrome, enum bch_level bch_type, u32 *error_count, >> u32 *error_locations); >> int elm_config(enum bch_level level); >> void elm_reset(void); >> +#ifdef ELM_BASE >> void elm_init(void); >> +#else >> +static inline void elm_init(void) >> +{ >> +} >> +#endif >> #endif /* __ASSEMBLY__ */ >> #endif /* __ASM_ARCH_ELM_H */ >> diff --git a/drivers/mtd/nand/raw/omap_gpmc.c b/drivers/mtd/nand/raw/omap_gpmc.c >> index ed6cdf93ad0..9692b78da3c 100644 >> --- a/drivers/mtd/nand/raw/omap_gpmc.c >> +++ b/drivers/mtd/nand/raw/omap_gpmc.c >> @@ -20,7 +20,8 @@ >> #include >> #include >> #include >> -#include >> + >> +#include "omap_elm.h" >> >> #ifndef GPMC_MAX_CS >> #define GPMC_MAX_CS 4 >> @@ -1249,6 +1250,15 @@ void board_nand_init(void) >> struct udevice *dev; >> int ret; >> >> +#ifdef CONFIG_NAND_OMAP_ELM >> + ret = uclass_get_device_by_driver(UCLASS_MTD, >> + DM_DRIVER_GET(gpmc_elm), &dev); >> + if (ret && ret != -ENODEV) { >> + pr_err("%s: Failed to get ELM device: %d\n", __func__, ret); >> + return; >> + } >> +#endif >> + >> ret = uclass_get_device_by_driver(UCLASS_MTD, >> DM_DRIVER_GET(gpmc_nand), &dev); >> if (ret && ret != -ENODEV) >> -- >> 2.34.1 >> > >