From: Lee Jones <lee@kernel.org>
To: Ming Yu <a0282524688@gmail.com>
Cc: linus.walleij@linaro.org, brgl@bgdev.pl, andi.shyti@kernel.org,
mkl@pengutronix.de, mailhol.vincent@wanadoo.fr,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, wim@linux-watchdog.org,
linux@roeck-us.net, jdelvare@suse.com,
alexandre.belloni@bootlin.com, linux-kernel@vger.kernel.org,
linux-gpio@vger.kernel.org, linux-i2c@vger.kernel.org,
linux-can@vger.kernel.org, netdev@vger.kernel.org,
linux-watchdog@vger.kernel.org, linux-hwmon@vger.kernel.org,
linux-rtc@vger.kernel.org, linux-usb@vger.kernel.org,
Ming Yu <tmyu0@nuvoton.com>
Subject: Re: [PATCH v10 1/7] mfd: Add core driver for Nuvoton NCT6694
Date: Fri, 2 May 2025 09:07:54 +0100 [thread overview]
Message-ID: <20250502080754.GD3865826@google.com> (raw)
In-Reply-To: <CAOoeyxVL2MV83CJaYCXMiw0b5YUzk728H4B9GY1q9h_P8D43fg@mail.gmail.com>
On Fri, 02 May 2025, Ming Yu wrote:
> Dear Lee,
>
> Thank you for your review. I have a few questions and would appreciate
> your advice.
>
> Lee Jones <lee@kernel.org> 於 2025年5月1日 週四 下午8:22寫道:
> >
> > On Wed, 23 Apr 2025, a0282524688@gmail.com wrote:
> >
> > > From: Ming Yu <tmyu0@nuvoton.com>
> > >
> > > The Nuvoton NCT6694 provides an USB interface to the host to
> > > access its features.
> > >
> > > Sub-devices can use the USB functions nct6694_read_msg() and
> > > nct6694_write_msg() to issue a command. They can also request
> > > interrupt that will be called when the USB device receives its
> > > interrupt pipe.
> > >
> > > Signed-off-by: Ming Yu <tmyu0@nuvoton.com>
> > > ---
> >
> > v10 and no change log? Please add a change log.
> >
>
> The change log is currently available at
> https://patchwork.ozlabs.org/project/rtc-linux/cover/20250423094058.1656204-1-tmyu0@nuvoton.com/
> I will move the relevant entries into each individual patch in the
> next revision.
>
> > > MAINTAINERS | 6 +
> > > drivers/mfd/Kconfig | 15 ++
> > > drivers/mfd/Makefile | 2 +
> > > drivers/mfd/nct6694.c | 387 ++++++++++++++++++++++++++++++++++++
> > > include/linux/mfd/nct6694.h | 101 ++++++++++
> > > 5 files changed, 511 insertions(+)
> > > create mode 100644 drivers/mfd/nct6694.c
> > > create mode 100644 include/linux/mfd/nct6694.h
> > >
> > > diff --git a/MAINTAINERS b/MAINTAINERS
> > > index fa1e04e87d1d..b2dfcc063f88 100644
> > > --- a/MAINTAINERS
> > > +++ b/MAINTAINERS
> > > @@ -17358,6 +17358,12 @@ F: drivers/nubus/
> > > F: include/linux/nubus.h
> > > F: include/uapi/linux/nubus.h
> > >
> > > +NUVOTON NCT6694 MFD DRIVER
> > > +M: Ming Yu <tmyu0@nuvoton.com>
> > > +S: Supported
> > > +F: drivers/mfd/nct6694.c
> > > +F: include/linux/mfd/nct6694.h
> > > +
> > > NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
> > > M: Antonino Daplas <adaplas@gmail.com>
> > > L: linux-fbdev@vger.kernel.org
> > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> > > index 22b936310039..cd4d826a7fcb 100644
> > > --- a/drivers/mfd/Kconfig
> > > +++ b/drivers/mfd/Kconfig
> > > @@ -1058,6 +1058,21 @@ config MFD_MENF21BMC
> > > This driver can also be built as a module. If so the module
> > > will be called menf21bmc.
> > >
> > > +config MFD_NCT6694
> > > + tristate "Nuvoton NCT6694 support"
> > > + select MFD_CORE
> > > + depends on USB
> > > + help
> > > + This enables support for the Nuvoton USB device NCT6694, which shares
> > > + peripherals.
> > > + The Nuvoton NCT6694 is a peripheral expander with 16 GPIO chips,
> > > + 6 I2C controllers, 2 CANfd controllers, 2 Watchdog timers, ADC,
> > > + PWM, and RTC.
> > > + This driver provides core APIs to access the NCT6694 hardware
> > > + monitoring and control features.
> > > + Additional drivers must be enabled to utilize the specific
> > > + functionalities of the device.
> > > +
> > > config MFD_OCELOT
> > > tristate "Microsemi Ocelot External Control Support"
> > > depends on SPI_MASTER
> > > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> > > index 948cbdf42a18..471dc1f183b8 100644
> > > --- a/drivers/mfd/Makefile
> > > +++ b/drivers/mfd/Makefile
> > > @@ -120,6 +120,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_NCT6694) += nct6694.o
> > > +
> > > obj-$(CONFIG_MFD_CORE) += mfd-core.o
> > >
> > > ocelot-soc-objs := ocelot-core.o ocelot-spi.o
> > > diff --git a/drivers/mfd/nct6694.c b/drivers/mfd/nct6694.c
> > > new file mode 100644
> > > index 000000000000..2480ca56f350
> > > --- /dev/null
> > > +++ b/drivers/mfd/nct6694.c
> > > @@ -0,0 +1,387 @@
> > > +// SPDX-License-Identifier: GPL-2.0
> > > +/*
> > > + * Copyright (C) 2024 Nuvoton Technology Corp.
> > > + *
> > > + * Nuvoton NCT6694 core driver using USB interface to provide
> > > + * access to the NCT6694 hardware monitoring and control features.
> > > + *
> > > + * The NCT6694 is an integrated controller that provides GPIO, I2C,
> > > + * CAN, WDT, HWMON and RTC management.
> > > + *
> >
> > Superfluous blank line.
> >
>
> Remove it in v11.
>
> > > + */
> > > +
> > > +#include <linux/bits.h>
> > > +#include <linux/interrupt.h>
> > > +#include <linux/irq.h>
> > > +#include <linux/irqdomain.h>
> > > +#include <linux/kernel.h>
> > > +#include <linux/mfd/core.h>
> > > +#include <linux/mfd/nct6694.h>
> > > +#include <linux/module.h>
> > > +#include <linux/slab.h>
> > > +#include <linux/usb.h>
> > > +
> > > +static const struct mfd_cell nct6694_devs[] = {
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 0),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 1),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 2),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 3),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 4),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 5),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 6),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 7),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 8),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 9),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 10),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 11),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 12),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 13),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 14),
> > > + MFD_CELL_BASIC("nct6694-gpio", NULL, NULL, 0, 15),
> >
> > These are all identical.
> >
> > I thought you were going to use PLATFORM_DEVID_AUTO? In fact, you are
> > already using PLATFORM_DEVID_AUTO since you are calling
> > mfd_add_hotplug_devices(). So you don't need this IDs.
> >
> > MFD_CELL_NAME() should do.
> >
>
> Yes, it uses PLATFORM_DEVID_AUTO, but in my implementation, the
> sub-devices use cell->id instead of platform_device->id, so it doesn't
> affect the current behavior.
> However, if you think there's a better approach or that this should be
> changed for consistency or correctness, I'm happy to update it, please
> let me know your recommendation.
>
> When using MFD_CELL_NAME(), the platform_device->id for the GPIO
> devices is assigned values from 1 to 16, and for the I2C devices from
> 1 to 6, but I need the ID offset to start from 0 instead.
Oh no, don't do that. mfd_cell isn't supposed to be used outside of MFD.
Just use the platform_device id-- if you really need to start from 0.
As an aside, I'm surprised numbering starts from 1.
--
Lee Jones [李琼斯]
next prev parent reply other threads:[~2025-05-02 8:08 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-23 9:40 [PATCH v10 0/7] Add Nuvoton NCT6694 MFD drivers a0282524688
2025-04-23 9:40 ` [PATCH v10 1/7] mfd: Add core driver for Nuvoton NCT6694 a0282524688
2025-05-01 12:22 ` Lee Jones
2025-05-02 2:02 ` Ming Yu
2025-05-02 8:07 ` Lee Jones [this message]
2025-05-02 9:04 ` Ming Yu
2025-05-09 14:28 ` Lee Jones
2025-05-12 8:48 ` Ming Yu
2025-04-23 9:40 ` [PATCH v10 2/7] gpio: Add Nuvoton NCT6694 GPIO support a0282524688
2025-04-23 9:40 ` [PATCH v10 3/7] i2c: Add Nuvoton NCT6694 I2C support a0282524688
2025-04-25 11:13 ` Andi Shyti
2025-04-23 9:40 ` [PATCH v10 4/7] can: Add Nuvoton NCT6694 CANFD support a0282524688
2025-05-03 13:57 ` Marc Kleine-Budde
2025-05-08 3:26 ` Ming Yu
2025-05-08 15:08 ` Marc Kleine-Budde
2025-05-09 5:39 ` Ming Yu
2025-05-07 16:18 ` kernel test robot
2025-04-23 9:40 ` [PATCH v10 5/7] watchdog: Add Nuvoton NCT6694 WDT support a0282524688
2025-04-23 9:40 ` [PATCH v10 6/7] hwmon: Add Nuvoton NCT6694 HWMON support a0282524688
2025-04-23 9:40 ` [PATCH v10 7/7] rtc: Add Nuvoton NCT6694 RTC support a0282524688
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250502080754.GD3865826@google.com \
--to=lee@kernel.org \
--cc=a0282524688@gmail.com \
--cc=alexandre.belloni@bootlin.com \
--cc=andi.shyti@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=brgl@bgdev.pl \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=jdelvare@suse.com \
--cc=kuba@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-i2c@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rtc@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mailhol.vincent@wanadoo.fr \
--cc=mkl@pengutronix.de \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=tmyu0@nuvoton.com \
--cc=wim@linux-watchdog.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.