From: Guenter Roeck <linux@roeck-us.net>
To: Eddie James <eajames@linux.vnet.ibm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>,
linux-hwmon@vger.kernel.org, Joel Stanley <joel@jms.id.au>
Subject: Re: hwmon driver with misc interface
Date: Tue, 10 Jul 2018 13:44:12 -0700 [thread overview]
Message-ID: <20180710204412.GA26666@roeck-us.net> (raw)
In-Reply-To: <516bc180-624f-3645-7f2d-27397ee720b3@linux.vnet.ibm.com>
On Tue, Jul 10, 2018 at 03:04:33PM -0500, Eddie James wrote:
>
>
> On 07/08/2018 08:26 PM, 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.
> >
> >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.
> >
> >>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.
> >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.
> >
> >>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.
>
> This still won't work, since then we wouldn't have those attributes
> available in the P8 version of the driver (which has no fsi-occ driver). In
> addition, how would the poll response data get from the hwmon driver to the
> fsi-occ driver? Yet another interface? Seems awkward.
>
> How about debugfs? We don't really mind where the attributes are, just that
> the data is exposed somewhere...
>
You are essentially confirming that using sysfs attributes would not be
appropriate. I have no problems with using debugfs; you have a free ride
there.
Guenter
next prev parent reply other threads:[~2018-07-10 20:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-21 23:31 hwmon driver with misc interface Benjamin Herrenschmidt
2018-05-22 1:36 ` Benjamin Herrenschmidt
2018-07-08 23:30 ` Guenter Roeck
2018-07-09 1:05 ` Benjamin Herrenschmidt
2018-07-09 1:26 ` Guenter Roeck
2018-07-09 6:04 ` Benjamin Herrenschmidt
2018-07-09 6:37 ` Guenter Roeck
2018-07-09 6:45 ` Benjamin Herrenschmidt
2018-07-10 20:04 ` Eddie James
2018-07-10 20:44 ` Guenter Roeck [this message]
2018-07-10 23:26 ` Benjamin Herrenschmidt
2018-07-11 2:54 ` Benjamin Herrenschmidt
2018-07-11 4:17 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180710204412.GA26666@roeck-us.net \
--to=linux@roeck-us.net \
--cc=benh@kernel.crashing.org \
--cc=eajames@linux.vnet.ibm.com \
--cc=joel@jms.id.au \
--cc=linux-hwmon@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox