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 X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 968A6C433ED for ; Tue, 4 May 2021 14:05:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 722DB6115C for ; Tue, 4 May 2021 14:05:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231350AbhEDOGj (ORCPT ); Tue, 4 May 2021 10:06:39 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:44966 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231270AbhEDOGj (ORCPT ); Tue, 4 May 2021 10:06:39 -0400 Received: from mail-qt1-f198.google.com ([209.85.160.198]) by youngberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1ldvgF-0002j4-JC for devicetree@vger.kernel.org; Tue, 04 May 2021 14:05:43 +0000 Received: by mail-qt1-f198.google.com with SMTP id i12-20020ac860cc0000b02901cb6d022744so2039908qtm.20 for ; Tue, 04 May 2021 07:05:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=d1Bg21TA2Y/XVBe2Xz6NvEf8Q9YHqIlZi+voDC9dIkU=; b=EeyJ9gwzhxbw0NQPUSZ5JQIdqr/wN1NqtUaWPg2AHLr0IHJBAVlKVJB8GeCsDCDy/a GWZZc0LnSvIkg3XmGiUmz+B5/d1rPnMTuqWh+NzB9788tVZqDrmWwexoKhkZmtKWKaE8 OCLiTSIyVN5vdgaJuamZMLWXDVQW33pblLX2BCQGRwG+xcaNMPhdZ+eWthMSG3wVXQmK v3F51FbCAT/mrVGftKSPkvdhMF6EMraeUOwfi4Oz6gL/YR+GHaNL16XPnbJ6xpqKvMic hSNSzBFaFHG00QmgbcdclSd/KhylmoAFfzcMIisbZIAEOA8ldP8TXWPCpukT3OILGIGf NvfA== X-Gm-Message-State: AOAM532TkI/Lez/7aWeTMFJ2oMjvQz/d4kDHR9Ph5BFb456n/VkYuvGf uWFqLPRU1PL87SUAYfPCEwkD53b3CwxPpOPKoL17yq+GKNkKrDF5AgpM8WQhfeaWHqLaSN7tU0l hkpmiGveM8GfrpjT+sMwt7JAx1haO5LTLmKl35jc= X-Received: by 2002:a05:620a:12f3:: with SMTP id f19mr24609805qkl.214.1620137142629; Tue, 04 May 2021 07:05:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxV4MzmdYFEJ07rYueLywhsQ0lTRCYL70XhmxTt9vr5KUOS3gbBkBykA4ex5zwtjWF0SpRwvg== X-Received: by 2002:a05:620a:12f3:: with SMTP id f19mr24609778qkl.214.1620137142398; Tue, 04 May 2021 07:05:42 -0700 (PDT) Received: from [192.168.1.4] ([45.237.49.3]) by smtp.gmail.com with ESMTPSA id h65sm11173774qkd.112.2021.05.04.07.05.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 May 2021 07:05:41 -0700 (PDT) Subject: Re: [PATCH v2 2/4] memory: mediatek: add DRAM controller driver To: Po-Kai Chi , Matthias Brugger Cc: linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, devicetree@vger.kernel.org, wsd_upstream@mediatek.com, CC Hwang References: <1618565538-6972-1-git-send-email-pk.chi@mediatek.com> <1618565538-6972-3-git-send-email-pk.chi@mediatek.com> From: Krzysztof Kozlowski Message-ID: <6f7472a2-3be2-e1dc-8e0f-83f6b1cdf61f@canonical.com> Date: Tue, 4 May 2021 10:05:40 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <1618565538-6972-3-git-send-email-pk.chi@mediatek.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org On 16/04/2021 05:32, Po-Kai Chi wrote: > MediaTek DRAM controller (DRAMC) driver provides cross-platform features > as below: > > 1. provide APIs for low power feature queries > 2. create sysfs to pass the DRAM information to user-space > > Signed-off-by: Po-Kai Chi > --- > drivers/memory/Kconfig | 1 + > drivers/memory/Makefile | 1 + > drivers/memory/mediatek/Kconfig | 9 + > drivers/memory/mediatek/Makefile | 3 + > drivers/memory/mediatek/mtk-dramc.c | 711 +++++++++++++++++++++++++++++++++++ > include/memory/mediatek/dramc.h | 18 + > 6 files changed, 743 insertions(+) > create mode 100644 drivers/memory/mediatek/Kconfig > create mode 100644 drivers/memory/mediatek/Makefile > create mode 100644 drivers/memory/mediatek/mtk-dramc.c > create mode 100644 include/memory/mediatek/dramc.h > > diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig > index 72c0df1..056e906 100644 > --- a/drivers/memory/Kconfig > +++ b/drivers/memory/Kconfig > @@ -225,6 +225,7 @@ config STM32_FMC2_EBI > devices (like SRAM, ethernet adapters, FPGAs, LCD displays, ...) on > SOCs containing the FMC2 External Bus Interface. > > +source "drivers/memory/mediatek/Kconfig" Please first group existing Mediatek driver there. It's messy. > source "drivers/memory/samsung/Kconfig" > source "drivers/memory/tegra/Kconfig" > > diff --git a/drivers/memory/Makefile b/drivers/memory/Makefile > index bc7663e..cd4f8cf 100644 > --- a/drivers/memory/Makefile > +++ b/drivers/memory/Makefile > @@ -25,6 +25,7 @@ obj-$(CONFIG_PL353_SMC) += pl353-smc.o > obj-$(CONFIG_RENESAS_RPCIF) += renesas-rpc-if.o > obj-$(CONFIG_STM32_FMC2_EBI) += stm32-fmc2-ebi.o > > +obj-$(CONFIG_MTK_DRAMC) += mediatek/ > obj-$(CONFIG_SAMSUNG_MC) += samsung/ > obj-$(CONFIG_TEGRA_MC) += tegra/ > obj-$(CONFIG_TI_EMIF_SRAM) += ti-emif-sram.o > diff --git a/drivers/memory/mediatek/Kconfig b/drivers/memory/mediatek/Kconfig > new file mode 100644 > index 0000000..a1618b0 > --- /dev/null > +++ b/drivers/memory/mediatek/Kconfig > @@ -0,0 +1,9 @@ > +# SPDX-License-Identifier: GPL-2.0 > + > +config MTK_DRAMC > + tristate "MediaTek DRAMC driver" > + help > + This selects the MediaTek(R) DRAMC driver. > + Provide the API for DRAMC low power scenario, and the interface > + for reporting DRAM information, e.g. DRAM mode register (MR) for > + DRAM vendor ID, temperature, and density. > diff --git a/drivers/memory/mediatek/Makefile b/drivers/memory/mediatek/Makefile > new file mode 100644 > index 0000000..632be48 > --- /dev/null > +++ b/drivers/memory/mediatek/Makefile > @@ -0,0 +1,3 @@ > +# SPDX-License-Identifier: GPL-2.0 > + > +obj-$(CONFIG_MTK_DRAMC) += mtk-dramc.o > diff --git a/drivers/memory/mediatek/mtk-dramc.c b/drivers/memory/mediatek/mtk-dramc.c > new file mode 100644 > index 0000000..155b3b7 > --- /dev/null > +++ b/drivers/memory/mediatek/mtk-dramc.c > @@ -0,0 +1,711 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (c) 2021 MediaTek Inc. > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#define DRAMC_DRV_NAME "mtk-dramc" What does this define bring? What's the benefit? > + > +struct mr_info_t { > + unsigned int mr_index; > + unsigned int mr_value; > +}; > + > +/* (...) > + > +static struct platform_driver dramc_drv = { > + .probe = dramc_probe, > + .remove = dramc_remove, > + .driver = { > + .name = DRAMC_DRV_NAME, > + .owner = THIS_MODULE, NAK, this is so old mistake... No point to review - run Smatch, sparse, checkpatch and coccinelle. Fix all the errors and then resubmit. > + .of_match_table = mtk_dramc_of_ids, > + }, > +}; > + > +static int __init dramc_drv_init(void) > +{ > + int ret; > + > + ret = platform_driver_register(&dramc_drv); > + if (ret) { > + pr_info("%s: init fail, ret 0x%x\n", __func__, ret); > + return ret; > + } > + > + return ret; > +} > + > +static void __exit dramc_drv_exit(void) > +{ > + platform_driver_unregister(&dramc_drv); > +} > + > +module_init(dramc_drv_init); > +module_exit(dramc_drv_exit); > + > +MODULE_LICENSE("GPL v2"); > +MODULE_DESCRIPTION("MediaTek DRAMC Driver"); > +MODULE_AUTHOR("Po-Kai Chi "); > diff --git a/include/memory/mediatek/dramc.h b/include/memory/mediatek/dramc.h > new file mode 100644 > index 0000000..c8d200f > --- /dev/null > +++ b/include/memory/mediatek/dramc.h > @@ -0,0 +1,18 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Copyright (c) 2021 MediaTek Inc. > + */ > + > +#ifndef __DRAMC_H__ Extend the header guard - MEMORY_MEDIATEK_DRAMC > +#define __DRAMC_H__ Best regards, Krzysztof