Re: [RFC PATCH 0/5] Support ROHM BD79124 ADC/GPO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 1 Feb 2025 17:00:51 +0200
Matti Vaittinen <mazziesaccount@xxxxxxxxx> wrote:

> Hi Jonathan,
> 
> Thanks a ton for the help! :)
> 
> On 31/01/2025 19:08, Jonathan Cameron wrote:
> > On Fri, 31 Jan 2025 15:34:43 +0200
> > Matti Vaittinen <mazziesaccount@xxxxxxxxx> wrote:
> >   
> >> Support ROHM BD79124 ADC.
> >>
> >> Quite usual stuff. 12-bit, 8-channel ADC with threshold monitoring.
> >>
> >> Except that:
> >>   - each ADC input pin can be configured as a general purpose output.
> >>   - manually starting an ADC conversion and reading the result would
> >>     require the I2C _master_ to do clock stretching(!) for the duration
> >>     of the conversion... Let's just say this is not well supported.
> >>   - IC supports 'autonomous measurement mode' and storing latest results
> >>     to the result registers. This mode is used by the driver due to the
> >>     "peculiar" I2C when doing manual reads.
> >>
> >> I sent this as an RFC because I implemented the pin purposing (GPO/ADC)
> >> using pinmux - which I've never done for upstream stuff before. Hence
> >> it's better to ask if this makes sense, or if there is better way to go.
> >> Anyways, resulted drivers spread to 3 subsystems (MFD, pinctrl and IIO)  
> > In principle nothing against pin mux for this.
> > There are other options though if pin mux ends up being too complex.
> > 
> > - provide ADC channels in the binding channel@x etc.
> > Anything else is freely available as a GPIO.
> > Normal GPIO bindings etc for those.
> > 
> > The channel bit is common on SoC ADC anyway where we don't want to
> > expose channels that aren't wired out.  
> 
> Thanks for the insight on how things are usually done :)
> 
> I think the only reason for having all the channels visible in IIO, 
> could be, if there was a need to provide a runtime configuration.
> 
> > For combined ADC GPIO chips we normally don't bother with an MFD.
> > Just host the gpio driver in the ADC one unless there is a strong
> > reasons someone will put this down for GPIO usage only.  
> 
> I don't really know about that. I don't like arguing, yet I seem to do 
> that all the time XD
> 
> I personally like using MFD and having smaller drivers in relevant 
> subsystems, because it tends to keep the drivers leaner - and allows 
> re-use of drivers when some of the hardware blocks are re-used. In some 
> cases this results (much) cleaner drivers.

I'm fully in agreement with MFD being useful, but for very simple
parts of a device it can be overkill. 
> 
> (Let's assume they did "new" ADC, and just dropped the GPO from it. With 
> the MFD the deal is to add new compatible, and have an MFD cell array 
> without the pinctrl/GPO matching this new device. And lets imagine they 
> later add this ADC to a PMIC. We add yet another MFD cell array for this 
> new device, with a cell for the regulators, power-supply and the ADC... 
> The same platform subdevice can be re-used to drive ADC (well, with 
> added register offsets)).
> 
> Allright. I believe you have more experience on this area than I do, but 
> I definitely think MFD has it's merits also for ADCs - they do tend to 
> put ADCs to all kinds of devices (like in PMICs after all, although 
> maybe not with 8 channels and less often without an accumulator).

It's a trade off.  Sometimes we just have a little code duplication
to the need for a more complex design.

Enjoy the rest of Fosdem

Jonathan




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux