Re: hwmon driver with misc interface

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

 



On Sun, 2018-07-08 at 18:26 -0700, Guenter Roeck wrote:
> On 07/08/2018 06:05 PM, Benjamin Herrenschmidt wrote:
> > On Sun, 2018-07-08 at 16:30 -0700, Guenter Roeck wrote:
> > > 
> > > Trying to be be reasonable....
> > > 
> > > Let's make some ground rules.
> > > 
> > > - Do not attach foreign attributes (not related to hardware monitoring) to
> > >     the hwmon device. Attach foreign attributes to its parent, eg the platform
> > >     or i2c driver, or to a separate (misc ?) device if that is not feasible
> > >     for some reason.
> > > - Avoid foreign subsystem drivers. If the chip has an input device, a watchdog,
> > >     and a hardware monitor, there should be three drivers.
> > >     This is to some degree flexible; for example, PMBus drivers may register
> > >     as power regulators, and some chips also have gpio support. But what,
> > >     for example, the applesmc driver does is really not acceptable.
> > 
> > This rule can be a bit nasty if the various "parts" of the chip need
> > tight interlock, share an interrupt etc... the solution to that is to
> > have most of the common code in a "parent" driver that creates child
> > devices with separate drivers that directly link onto the parent and
> > use exported functions, but it can easily bloat the driver
> > significantly for little benefit.
> > 
> 
> But that is what mfd drivers are for, or am I missing something ?
> After all, it has "multi-function device" right in its name.

The mfd "framework" looks like just gratuitous bloat to me frankly, but
I won't fight a battle with you on that onne :-)

> Sure, there is somebloat, but on the plus side it ensures that
> all bits and pieces are reviewed by the respective maintainers,
> and the cross-functional API is _forced_ to be clean.

Ok. In this case I don't think it qualifies as an mfd really. There's
no real "other function", the chardev is mostly a lower level interface
for userspace to monitor the health of the OCC itself, etc.... 

> > That said, this is maybe not *too much* of an issue in the OCC case,
> > see below.
> > 
> > > - Private hwmon attributes are acceptable as long as they are clearly
> > >     documented and explained as necessary. This is not a free ride; you should
> > >     have good reasons for private attributes and be able to explain that and why
> > >     you need them. In this context, "because the hardware provides the information"
> > >     is not a valid reason. The use case is important, not the fact that
> > >     the hardware provides some random information.
> > > 
> > > Can you work with that ?
> > 
> > Anything is always possible :-) The main question for me here is
> > whether to keep what we do today:
> > 
> > 	* sbefifo (the transport driver)
> > 	  |
> > 	  * fsi-occ platform driver
> >              ("passes occ hwmon commands to sbefifo and adds /dev/occ")
> >               |
> >               * occ-hwmon
> > 
> > Or can I collapse fsi-occ and occ-hwmon into one.
> > 
> > Now /dev/occ is just a "raw" interface to send commands to the OCC, via
> > the same path occ-hwmon does. There's locking needed there between the
> > two so it currently happens in fsi-occ.
> > 
> > > From what you are saying, you prefer that we keep it separate, which is
> > 
> > our current design. I find it a bit messy but it's not a huge deal
> > frankly, so let's do so.
> > 
> 
> Other drivers solve that with an API from parent to child, either with
> a direct function call or with a callback function provided to the child.

Yes, that's exactly what our current one does. So I suspect it's fine
by you. I was just wondering whether I could "flatten" the OCC chardev
& glue with the hwmon one but it looks like you won't like it so we'll
keep it as-is.

> Another option would be to handle it through regmap; That nowadays
> supports custom accesses implemented in the parent driver (see regmap_read
> and regmap_write in struct regmap_config). The child driver gets the
> regmap pointer and uses the regmap API. I don't see that as messy.

That works for purely MMIO based things, this isn't though.

> > The pre-requisite sbefifo driver is now in Greg's tree (and I'll have
> > some fixes for it in -next this week), so you should be able to at
> > least test build when Eddie resubmits.
> > 
> 
> Ok.
> 
> > As for the various sysfs files for monitoring the base functionality of
> > the occ, Eddie, you can always move them to fsi-occ.
> > 
> 
> Yes, I think that would be more appropriate.

Thanks for your replies !

Cheers,
Ben.

> Thanks,
> Guenter
> 
> > Cheers,
> > Ben.
> > 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-hwmon" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-hwmon" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [LM Sensors]     [Linux Sound]     [ALSA Users]     [ALSA Devel]     [Linux Audio Users]     [Linux Media]     [Kernel]     [Gimp]     [Yosemite News]     [Linux Media]

  Powered by Linux