From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: Arnd Bergmann <arnd@arndb.de>
Cc: "Gurudatt, Sreenidhi B" <sreenidhi.b.gurudatt@intel.com>,
"x86@kernel.org" <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Alan Cox <alan@linux.intel.com>
Subject: Re: x86: IPC driver patch for Intel Moorestown platform
Date: Tue, 21 Jul 2009 13:10:26 +0100 [thread overview]
Message-ID: <20090721131026.12107411@lxorguk.ukuu.org.uk> (raw)
In-Reply-To: <200907211324.26617.arnd@arndb.de>
> The naming is unfortunate, because IPC in our context normally
> refers to Inter-Process-Communication, which is very different
Actually its also various other things in the kernel already - including
a type of Sparc system. The device is an "IPC" and calling it something
else is going to confuse. The code uses mrst_ipc_ as a prefix not ipc_
for good reason.
> > +u32 mrst_ipc_batt_read(u8 ioc, int *err);
> > +int mrst_ipc_batt_write(u8 ioc, u32 value);
> > +int mrst_ipc_get_batt_properties(struct mrst_ipc_batt_prop_data *prop_data);
> > +int mrst_ipc_set_watchdog(struct watchdog_reg_data *p_watchdog_data);
> > +int mrst_ipc_program_io_bus_master(struct mrst_ipc_io_bus_master_regs
> > + *p_reg_data);
> > +int lnw_ipc_single_cmd(u8 cmd_id, u8 sub_id, int size, int msi);
>
> As mentioned, these all don't seem to belong in the base driver.
There are differences between how the various things talk over the IPC.
There are also locking rules such as the mutex for a single message/reply
at a time. I think it would actually get horribly ugly if stuff got
abstracted too much out of the mrst ipc code.
> Hmm, so your driver can by design only work with a single
> instance of the hardware. Normally, the recommendation is
> to put all these variables into a structure that you pass
> around between all functions.
"There can be only one", which isn't to say it might not be bad
futureproofing.
> This function looks really strange, it is not called anywhere in your
> driver, is not exported for modules and does not make sense as a
> library interface. The lock does not appear to protect anything
> either.
Agreed the lock isn't needed in the init/setup function.
> You really should not hardcode I/O addresses like IPC_BASE_ADDRESS
> and I2C_SER_BUS. These normally come from some kind of bus probing
> or from a firmware table. Again, like for the PCI stuff, the virtual
They are hardcoded.
> It seems like the calling conventions for mrst_pmic_ioread are
> unnecessarily complicated. r_data.num_entries is always 1, so
> why pass a variable-length array?
mrst_pmic_ioread is also exported for external users. The ioread8/write8
helpers are for the normal case.
> > +#define LNW_IPC1_BASE 0xff11c000
> > +#define LNW_IPC1_MMAP_SIZE 1024
>
> As mentioned before, don't hardcode but read from
> an appropriate interface.
These are hardcoded - kind of like the APIC and stuff are. Remember
Moorestown is not a PC.
As regards device instances the devices that use it generally create
their own because they want to be devices like watchdogs, thermal
monitors or input devices. The IPC itself could probably be a platform
device with no real problem although I don't think it would actually gain
anything ?
Alan
next prev parent reply other threads:[~2009-07-21 12:10 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-21 1:28 Gurudatt, Sreenidhi B
2009-07-21 6:50 ` Andrey Panin
2009-07-21 7:25 ` Andi Kleen
2009-07-21 11:29 ` Christoph Hellwig
2009-07-21 11:24 ` Arnd Bergmann
2009-07-21 12:10 ` Alan Cox [this message]
2009-07-21 15:00 ` Arnd Bergmann
2009-07-21 15:10 ` Alan Cox
2009-07-21 15:23 ` Arnd Bergmann
2009-07-21 16:00 ` Gurudatt, Sreenidhi B
2009-07-21 16:35 ` Arnd Bergmann
2009-07-21 19:04 ` Mark Brown
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=20090721131026.12107411@lxorguk.ukuu.org.uk \
--to=alan@lxorguk.ukuu.org.uk \
--cc=alan@linux.intel.com \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=sreenidhi.b.gurudatt@intel.com \
--cc=x86@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
all inboxes | Powered by JetHome®