On Thu, Dec 03, 2020 at 12:37:12PM +0000, Dan Scally wrote: > On 02/12/2020 15:08, Andy Shevchenko wrote: > > On Wed, Dec 02, 2020 at 02:42:28PM +0200, Laurent Pinchart wrote: > >> On Wed, Dec 02, 2020 at 01:09:56PM +0200, Sakari Ailus wrote: > >>> On Tue, Dec 01, 2020 at 08:37:58PM +0200, Laurent Pinchart wrote: > > > > ... > > > >> I think we should consider ACPI to be a hack in the first place :-) > > > > I feel that about DT (and all chaos around it) but it's not a topic here. > > > >>> Could this be just one more platform device for each of the three cases (or > >>> one for the two latter; I'm not quite sure yet)? > >> > >> Using MFD for this seems a bit overkill to me. I won't care much as I > >> won't maintain those drivers, but the current situation is complex > >> enough, it was hard for me to understand how things worked. Adding yet > >> another layer with another platform device won't make it any simpler. > >> > >> If we want to split this in two, I'd rather have a tps68470 driver on > >> one side, without ACPI op region support, but registering regulators, > >> GPIOs and clocks (without using separate drivers and devices for these > >> three features), and an INT3472 driver on the other side, with all the > >> ACPI glue and hacks. The tps68470 code could possibly even be structured > >> in such a way that it would be used as a library by the INT3472 driver > >> instead of requiring a separate platform device. > > > > I'm afraid TPS68470 is MFD in hardware and its representation in the MFD is > > fine. What we need is to move IN3472 pieces out from it. > > > > And I agree with your proposal in general. > > Way back when I first joined this project we thought we needed i2c > drivers for driving the tps68470's clks and regulators. Tsuchiya found > some in an old Intel tree; they needed some minor tweaks but nothing > drastic. And I think they're designed to work with the mfd driver that's > already in the kernel. > > So, can we do this by just checking (in a new > platform/x86/intel_skl_int3472.c) for a CLDB buffer in the PMIC, and > calling devm_mfd_add_devices() with either the GPIO and OpRegion drivers > (if no CLDB buffer found) or with the GPIO, clk and regulator drivers > (If there's a CLDB and it's not a discrete PMIC). Or else, using the > code from this patch directly in the platform driver if the CLDB says > it's a discrete PMIC? Lee, who is a maintainer of MFD, is quite sensitive about this. I don't think he would approve this (however I see 8 drivers that are using MFD API out of drivers/mfd). -- With Best Regards, Andy Shevchenko