Re: [PATCH v12 1/7] mfd: Add core driver for Nuvoton NCT6694
From: Lee Jones <lee@kernel.org>
Date: 2025-06-13 13:11:40
Also in:
linux-can, linux-gpio, linux-hwmon, linux-i2c, linux-rtc, linux-usb, linux-watchdog, lkml
On Fri, 13 Jun 2025, Ming Yu wrote:
Lee Jones [off-list ref] 於 2025年6月12日 週四 下午11:23寫道:quoted
On Thu, 12 Jun 2025, Ming Yu wrote:quoted
Dear Lee, Thank you for reviewing, Lee Jones [off-list ref] 於 2025年6月12日 週四 下午10:00寫道:quoted
...quoted
quoted
+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), + + MFD_CELL_BASIC("nct6694-i2c", NULL, NULL, 0, 0), + MFD_CELL_BASIC("nct6694-i2c", NULL, NULL, 0, 1), + MFD_CELL_BASIC("nct6694-i2c", NULL, NULL, 0, 2), + MFD_CELL_BASIC("nct6694-i2c", NULL, NULL, 0, 3), + MFD_CELL_BASIC("nct6694-i2c", NULL, NULL, 0, 4), + MFD_CELL_BASIC("nct6694-i2c", NULL, NULL, 0, 5),Why have we gone back to this silly numbering scheme? What happened to using IDA in the child driver?In a previous version, I tried to maintain a static IDA in each sub-driver. However, I didn’t consider the case where multiple NCT6694 devices are bound to the same driver — in that case, the IDs are not fixed and become unusable for my purpose.Not sure I understand.As far as I know, if I maintain the IDA in the sub-drivers and use multiple MFD_CELL_NAME("nct6694-gpio") entries in the MFD, the first NCT6694 device bound to the GPIO driver will receive IDs 0~15. However, when a second NCT6694 device is connected to the system, it will receive IDs 16~31. Because of this behavior, I switched back to using platform_device->id.
Each of the devices will probe once. The first one will be given 0, the second will be given 1, etc. Why would you give multiple IDs to a single device bound to a driver? -- Lee Jones [李琼斯]