From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Return-Path: Date: Mon, 30 Apr 2018 11:18:26 +0100 From: Lee Jones To: matthias.bgg@kernel.org Cc: ulrich.hecht+renesas@gmail.com, laurent.pinchart@ideasonboard.com, ck.hu@mediatek.com, p.zabel@pengutronix.de, airlied@linux.ie, robh+dt@kernel.org, mark.rutland@arm.com, mturquette@baylibre.com, sboyd@codeaurora.org, davem@davemloft.net, gregkh@linuxfoundation.org, mchehab@kernel.org, rdunlap@infradead.org, sean.wang@mediatek.com, linux-clk@vger.kernel.org, linux@armlinux.org.uk, matthias.bgg@gmail.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, Matthias Brugger Subject: Re: [v3 03/10] mfd: mtk-mmsys: Add mmsys driver Message-ID: <20180430101826.GC5147@dell> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 In-Reply-To: List-ID: On Fri, 27 Apr 2018, matthias.bgg@kernel.org wrote: > From: Matthias Brugger > > The MMSYS subsystem includes clocks and drm components. > This patch adds a MFD device to probe both drivers from the same > device tree compatible. > > Signed-off-by: Matthias Brugger > --- > drivers/mfd/Kconfig | 9 ++++++ > drivers/mfd/Makefile | 2 ++ > drivers/mfd/mtk-mmsys.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 90 insertions(+) > create mode 100644 drivers/mfd/mtk-mmsys.c > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index b860eb5aa194..d23a3b9a2c58 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -378,6 +378,15 @@ config MFD_MC13XXX_I2C > help > Select this if your MC13xxx is connected via an I2C bus. > > +config MFD_MEDIATEK_MMSYS > + tristate "Mediatek MMSYS interface" > + select MFD_CORE > + select REGMAP_MMIO > + help > + Select this if you have a MMSYS subsystem in your SoC. The > + MMSYS subsystem has at least a clock driver part and some > + DRM components. > + > config MFD_MXS_LRADC > tristate "Freescale i.MX23/i.MX28 LRADC" > depends on ARCH_MXS || COMPILE_TEST > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > index d9d2cf0d32ef..b96118bd68d9 100644 > --- a/drivers/mfd/Makefile > +++ b/drivers/mfd/Makefile > @@ -98,6 +98,8 @@ obj-$(CONFIG_MFD_MC13XXX) += mc13xxx-core.o > obj-$(CONFIG_MFD_MC13XXX_SPI) += mc13xxx-spi.o > obj-$(CONFIG_MFD_MC13XXX_I2C) += mc13xxx-i2c.o > > +obj-$(CONFIG_MFD_MEDIATEK_MMSYS) += mtk-mmsys.o > + > obj-$(CONFIG_MFD_CORE) += mfd-core.o > > obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o > diff --git a/drivers/mfd/mtk-mmsys.c b/drivers/mfd/mtk-mmsys.c > new file mode 100644 > index 000000000000..c802343fb1c6 > --- /dev/null > +++ b/drivers/mfd/mtk-mmsys.c > @@ -0,0 +1,79 @@ > +// SPDX-License-Identifier: GPL-2.0+ > + > +/* > + * mtk-mmsys.c -- Mediatek MMSYS multi-function driver > + * > + * Copyright (c) 2018 Matthias Brugger > + * > + * Author: Matthias Brugger > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +enum { > + MMSYS_MT2701 = 1, > +}; > + > +static const struct mfd_cell mmsys_mt2701_devs[] = { > + { .name = "clk-mt2701-mm", }, > + { .name = "drm-mt2701-mm", }, > +}; > + > +static int mmsys_probe(struct platform_device *pdev) > +{ > + const struct mfd_cell *mmsys_cells; > + int nr_cells; > + long id; > + int ret; > + > + id = (long) of_device_get_match_data(&pdev->dev); > + if (!id) { > + dev_err(&pdev->dev, "of_device_get match_data() failed\n"); > + return -EINVAL; > + } > + > + switch (id) { > + case MMSYS_MT2701: > + mmsys_cells = mmsys_mt2701_devs; > + nr_cells = ARRAY_SIZE(mmsys_mt2701_devs); > + break; > + default: > + return -ENODEV; > + } > + > + ret = devm_mfd_add_devices(&pdev->dev, 0, mmsys_cells, nr_cells, > + NULL, 0, NULL); > + if (ret) { > + dev_err(&pdev->dev, "failed to add MFD devices %d\n", ret); > + return ret; > + } > + > + return 0; > +}; This driver is pretty pointless. It doesn't actually do anything. I think you just want to use "simple-mfd" instead. > +static const struct of_device_id of_match_mmsys[] = { > + { .compatible = "mediatek,mt2701-mmsys", > + .data = (void *) MMSYS_MT2701, > + }, > + { /* sentinel */ }, > +}; > + > +static struct platform_driver mmsys_drv = { > + .probe = mmsys_probe, > + .driver = { > + .name = "mediatek-mmysys", > + .of_match_table = of_match_ptr(of_match_mmsys), > + }, > +}; > + > +builtin_platform_driver(mmsys_drv); > + > +MODULE_DESCRIPTION("Mediatek MMSYS multi-function driver"); > +MODULE_LICENSE("GPL"); -- Lee Jones [李琼斯] Linaro Services Technical Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [v3 03/10] mfd: mtk-mmsys: Add mmsys driver Date: Mon, 30 Apr 2018 11:18:26 +0100 Message-ID: <20180430101826.GC5147@dell> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: matthias.bgg@kernel.org Cc: mark.rutland@arm.com, airlied@linux.ie, mturquette@baylibre.com, dri-devel@lists.freedesktop.org, laurent.pinchart@ideasonboard.com, ulrich.hecht+renesas@gmail.com, linux-clk@vger.kernel.org, linux@armlinux.org.uk, sean.wang@mediatek.com, robh+dt@kernel.org, linux-mediatek@lists.infradead.org, matthias.bgg@gmail.com, mchehab@kernel.org, linux-arm-kernel@lists.infradead.org, Matthias Brugger , gregkh@linuxfoundation.org, rdunlap@infradead.org, sboyd@codeaurora.org, linux-kernel@vger.kernel.org, davem@davemloft.net List-Id: linux-mediatek@lists.infradead.org T24gRnJpLCAyNyBBcHIgMjAxOCwgbWF0dGhpYXMuYmdnQGtlcm5lbC5vcmcgd3JvdGU6Cgo+IEZy b206IE1hdHRoaWFzIEJydWdnZXIgPG1icnVnZ2VyQHN1c2UuY29tPgo+IAo+IFRoZSBNTVNZUyBz dWJzeXN0ZW0gaW5jbHVkZXMgY2xvY2tzIGFuZCBkcm0gY29tcG9uZW50cy4KPiBUaGlzIHBhdGNo IGFkZHMgYSBNRkQgZGV2aWNlIHRvIHByb2JlIGJvdGggZHJpdmVycyBmcm9tIHRoZSBzYW1lCj4g ZGV2aWNlIHRyZWUgY29tcGF0aWJsZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBCcnVn Z2VyIDxtYnJ1Z2dlckBzdXNlLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9tZmQvS2NvbmZpZyAgICAg fCAgOSArKysrKysKPiAgZHJpdmVycy9tZmQvTWFrZWZpbGUgICAgfCAgMiArKwo+ICBkcml2ZXJz L21mZC9tdGstbW1zeXMuYyB8IDc5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspCj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21mZC9tdGstbW1zeXMuYwo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwo+IGluZGV4IGI4NjBl YjVhYTE5NC4uZDIzYTNiOWEyYzU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWZkL0tjb25maWcK PiArKysgYi9kcml2ZXJzL21mZC9LY29uZmlnCj4gQEAgLTM3OCw2ICszNzgsMTUgQEAgY29uZmln IE1GRF9NQzEzWFhYX0kyQwo+ICAJaGVscAo+ICAJICBTZWxlY3QgdGhpcyBpZiB5b3VyIE1DMTN4 eHggaXMgY29ubmVjdGVkIHZpYSBhbiBJMkMgYnVzLgo+ICAKPiArY29uZmlnIE1GRF9NRURJQVRF S19NTVNZUwo+ICsJdHJpc3RhdGUgIk1lZGlhdGVrIE1NU1lTIGludGVyZmFjZSIKPiArCXNlbGVj dCBNRkRfQ09SRQo+ICsJc2VsZWN0IFJFR01BUF9NTUlPCj4gKwloZWxwCj4gKwkgIFNlbGVjdCB0 aGlzIGlmIHlvdSBoYXZlIGEgTU1TWVMgc3Vic3lzdGVtIGluIHlvdXIgU29DLiBUaGUKPiArCSAg TU1TWVMgc3Vic3lzdGVtIGhhcyBhdCBsZWFzdCBhIGNsb2NrIGRyaXZlciBwYXJ0IGFuZCBzb21l Cj4gKwkgIERSTSBjb21wb25lbnRzLgo+ICsKPiAgY29uZmlnIE1GRF9NWFNfTFJBREMKPiAgCXRy aXN0YXRlICJGcmVlc2NhbGUgaS5NWDIzL2kuTVgyOCBMUkFEQyIKPiAgCWRlcGVuZHMgb24gQVJD SF9NWFMgfHwgQ09NUElMRV9URVNUCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL01ha2VmaWxl IGIvZHJpdmVycy9tZmQvTWFrZWZpbGUKPiBpbmRleCBkOWQyY2YwZDMyZWYuLmI5NjExOGJkNjhk OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL21mZC9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvbWZk L01ha2VmaWxlCj4gQEAgLTk4LDYgKzk4LDggQEAgb2JqLSQoQ09ORklHX01GRF9NQzEzWFhYKQkr PSBtYzEzeHh4LWNvcmUubwo+ICBvYmotJChDT05GSUdfTUZEX01DMTNYWFhfU1BJKQkrPSBtYzEz eHh4LXNwaS5vCj4gIG9iai0kKENPTkZJR19NRkRfTUMxM1hYWF9JMkMpCSs9IG1jMTN4eHgtaTJj Lm8KPiAgCj4gK29iai0kKENPTkZJR19NRkRfTUVESUFURUtfTU1TWVMpICs9IG10ay1tbXN5cy5v Cj4gKwo+ICBvYmotJChDT05GSUdfTUZEX0NPUkUpCQkrPSBtZmQtY29yZS5vCj4gIAo+ICBvYmot JChDT05GSUdfRVpYX1BDQVApCQkrPSBlengtcGNhcC5vCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv bWZkL210ay1tbXN5cy5jIGIvZHJpdmVycy9tZmQvbXRrLW1tc3lzLmMKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzgwMjM0M2ZiMWM2Cj4gLS0tIC9kZXYvbnVs bAo+ICsrKyBiL2RyaXZlcnMvbWZkL210ay1tbXN5cy5jCj4gQEAgLTAsMCArMSw3OSBAQAo+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsKPiArCj4gKy8qCj4gKyAqIG10ay1t bXN5cy5jIC0tIE1lZGlhdGVrIE1NU1lTIG11bHRpLWZ1bmN0aW9uIGRyaXZlcgo+ICsgKgo+ICsg KiBDb3B5cmlnaHQgKGMpIDIwMTggTWF0dGhpYXMgQnJ1Z2dlciA8bWF0dGhpYXMuYmdnQGdtYWls LmNvbT4KPiArICoKPiArICogQXV0aG9yOiBNYXR0aGlhcyBCcnVnZ2VyIDxtYXR0aGlhcy5iZ2dA Z21haWwuY29tPgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21mZC9jb3JlLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9vZi5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPgo+ICsj aW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9k ZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+ICsKPiArZW51bSB7Cj4gKwlN TVNZU19NVDI3MDEgPSAxLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBtZmRfY2Vs bCBtbXN5c19tdDI3MDFfZGV2c1tdID0gewo+ICsJeyAubmFtZSA9ICJjbGstbXQyNzAxLW1tIiwg fSwKPiArCXsgLm5hbWUgPSAiZHJtLW10MjcwMS1tbSIsIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMg aW50IG1tc3lzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCWNv bnN0IHN0cnVjdCBtZmRfY2VsbCAqbW1zeXNfY2VsbHM7Cj4gKwlpbnQgbnJfY2VsbHM7Cj4gKwls b25nIGlkOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZCA9IChsb25nKSBvZl9kZXZpY2VfZ2V0X21h dGNoX2RhdGEoJnBkZXYtPmRldik7Cj4gKwlpZiAoIWlkKSB7Cj4gKwkJZGV2X2VycigmcGRldi0+ ZGV2LCAib2ZfZGV2aWNlX2dldCBtYXRjaF9kYXRhKCkgZmFpbGVkXG4iKTsKPiArCQlyZXR1cm4g LUVJTlZBTDsKPiArCX0KPiArCj4gKwlzd2l0Y2ggKGlkKSB7Cj4gKwljYXNlIE1NU1lTX01UMjcw MToKPiArCQltbXN5c19jZWxscyA9IG1tc3lzX210MjcwMV9kZXZzOwo+ICsJCW5yX2NlbGxzID0g QVJSQVlfU0laRShtbXN5c19tdDI3MDFfZGV2cyk7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ ICsJCXJldHVybiAtRU5PREVWOwo+ICsJfQo+ICsKPiArCXJldCA9IGRldm1fbWZkX2FkZF9kZXZp Y2VzKCZwZGV2LT5kZXYsIDAsIG1tc3lzX2NlbGxzLCBucl9jZWxscywKPiArCQkJCQlOVUxMLCAw LCBOVUxMKTsKPiArCWlmIChyZXQpIHsKPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJmYWlsZWQg dG8gYWRkIE1GRCBkZXZpY2VzICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK307CgpUaGlzIGRyaXZlciBpcyBwcmV0dHkgcG9pbnRsZXNzLiAg SXQgZG9lc24ndCBhY3R1YWxseSBkbyBhbnl0aGluZy4KCkkgdGhpbmsgeW91IGp1c3Qgd2FudCB0 byB1c2UgInNpbXBsZS1tZmQiIGluc3RlYWQuCgo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2Rl dmljZV9pZCBvZl9tYXRjaF9tbXN5c1tdID0gewo+ICsJeyAuY29tcGF0aWJsZSA9ICJtZWRpYXRl ayxtdDI3MDEtbW1zeXMiLAo+ICsJICAuZGF0YSA9ICh2b2lkICopIE1NU1lTX01UMjcwMSwKPiAr CX0sCj4gKwl7IC8qIHNlbnRpbmVsICovIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHBs YXRmb3JtX2RyaXZlciBtbXN5c19kcnYgPSB7Cj4gKwkucHJvYmUgPSBtbXN5c19wcm9iZSwKPiAr CS5kcml2ZXIgPSB7Cj4gKwkJLm5hbWUgPSAibWVkaWF0ZWstbW15c3lzIiwKPiArCQkub2ZfbWF0 Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIob2ZfbWF0Y2hfbW1zeXMpLAo+ICsJfSwKPiArfTsKPiAr Cj4gK2J1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKG1tc3lzX2Rydik7Cj4gKwo+ICtNT0RVTEVfREVT Q1JJUFRJT04oIk1lZGlhdGVrIE1NU1lTIG11bHRpLWZ1bmN0aW9uIGRyaXZlciIpOwo+ICtNT0RV TEVfTElDRU5TRSgiR1BMIik7CgotLSAKTGVlIEpvbmVzIFvmnY7nkLzmlq9dCkxpbmFybyBTZXJ2 aWNlcyBUZWNobmljYWwgTGVhZApMaW5hcm8ub3JnIOKUgiBPcGVuIHNvdXJjZSBzb2Z0d2FyZSBm b3IgQVJNIFNvQ3MKRm9sbG93IExpbmFybzogRmFjZWJvb2sgfCBUd2l0dGVyIHwgQmxvZwpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: lee.jones@linaro.org (Lee Jones) Date: Mon, 30 Apr 2018 11:18:26 +0100 Subject: [v3 03/10] mfd: mtk-mmsys: Add mmsys driver In-Reply-To: References: Message-ID: <20180430101826.GC5147@dell> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, 27 Apr 2018, matthias.bgg at kernel.org wrote: > From: Matthias Brugger > > The MMSYS subsystem includes clocks and drm components. > This patch adds a MFD device to probe both drivers from the same > device tree compatible. > > Signed-off-by: Matthias Brugger > --- > drivers/mfd/Kconfig | 9 ++++++ > drivers/mfd/Makefile | 2 ++ > drivers/mfd/mtk-mmsys.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 90 insertions(+) > create mode 100644 drivers/mfd/mtk-mmsys.c > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index b860eb5aa194..d23a3b9a2c58 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -378,6 +378,15 @@ config MFD_MC13XXX_I2C > help > Select this if your MC13xxx is connected via an I2C bus. > > +config MFD_MEDIATEK_MMSYS > + tristate "Mediatek MMSYS interface" > + select MFD_CORE > + select REGMAP_MMIO > + help > + Select this if you have a MMSYS subsystem in your SoC. The > + MMSYS subsystem has at least a clock driver part and some > + DRM components. > + > config MFD_MXS_LRADC > tristate "Freescale i.MX23/i.MX28 LRADC" > depends on ARCH_MXS || COMPILE_TEST > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > index d9d2cf0d32ef..b96118bd68d9 100644 > --- a/drivers/mfd/Makefile > +++ b/drivers/mfd/Makefile > @@ -98,6 +98,8 @@ obj-$(CONFIG_MFD_MC13XXX) += mc13xxx-core.o > obj-$(CONFIG_MFD_MC13XXX_SPI) += mc13xxx-spi.o > obj-$(CONFIG_MFD_MC13XXX_I2C) += mc13xxx-i2c.o > > +obj-$(CONFIG_MFD_MEDIATEK_MMSYS) += mtk-mmsys.o > + > obj-$(CONFIG_MFD_CORE) += mfd-core.o > > obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o > diff --git a/drivers/mfd/mtk-mmsys.c b/drivers/mfd/mtk-mmsys.c > new file mode 100644 > index 000000000000..c802343fb1c6 > --- /dev/null > +++ b/drivers/mfd/mtk-mmsys.c > @@ -0,0 +1,79 @@ > +// SPDX-License-Identifier: GPL-2.0+ > + > +/* > + * mtk-mmsys.c -- Mediatek MMSYS multi-function driver > + * > + * Copyright (c) 2018 Matthias Brugger > + * > + * Author: Matthias Brugger > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +enum { > + MMSYS_MT2701 = 1, > +}; > + > +static const struct mfd_cell mmsys_mt2701_devs[] = { > + { .name = "clk-mt2701-mm", }, > + { .name = "drm-mt2701-mm", }, > +}; > + > +static int mmsys_probe(struct platform_device *pdev) > +{ > + const struct mfd_cell *mmsys_cells; > + int nr_cells; > + long id; > + int ret; > + > + id = (long) of_device_get_match_data(&pdev->dev); > + if (!id) { > + dev_err(&pdev->dev, "of_device_get match_data() failed\n"); > + return -EINVAL; > + } > + > + switch (id) { > + case MMSYS_MT2701: > + mmsys_cells = mmsys_mt2701_devs; > + nr_cells = ARRAY_SIZE(mmsys_mt2701_devs); > + break; > + default: > + return -ENODEV; > + } > + > + ret = devm_mfd_add_devices(&pdev->dev, 0, mmsys_cells, nr_cells, > + NULL, 0, NULL); > + if (ret) { > + dev_err(&pdev->dev, "failed to add MFD devices %d\n", ret); > + return ret; > + } > + > + return 0; > +}; This driver is pretty pointless. It doesn't actually do anything. I think you just want to use "simple-mfd" instead. > +static const struct of_device_id of_match_mmsys[] = { > + { .compatible = "mediatek,mt2701-mmsys", > + .data = (void *) MMSYS_MT2701, > + }, > + { /* sentinel */ }, > +}; > + > +static struct platform_driver mmsys_drv = { > + .probe = mmsys_probe, > + .driver = { > + .name = "mediatek-mmysys", > + .of_match_table = of_match_ptr(of_match_mmsys), > + }, > +}; > + > +builtin_platform_driver(mmsys_drv); > + > +MODULE_DESCRIPTION("Mediatek MMSYS multi-function driver"); > +MODULE_LICENSE("GPL"); -- Lee Jones [???] Linaro Services Technical Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog