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? >>> The GPIO regulator case is relatively safe, but the real PMICs require >>> regulator voltage control as well as enabling and disabling the regulators. >>> That probably requires either schematics or checking the register values at >>> runtime on Windows (i.e. finding out which system you're dealing with, at >>> runtime). >