From: Cyril Bur <cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Joel Stanley <joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org>
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
jassisinghbrar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
OpenBMC Maillist
<openbmc-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
Andrew Jeffery <andrew-zrmu5oMJ5Fs@public.gmane.org>,
Benjamin Herrenschmidt
<benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>,
Xo Wang <xow-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
Jeremy Kerr <jk-mnsaURCQ41sdnm+yROfE0A@public.gmane.org>
Subject: Re: [PATCH 4/4] drivers/mailbox: Add ASpeed mailbox driver
Date: Wed, 08 Feb 2017 09:57:09 +1100 [thread overview]
Message-ID: <1486508229.3824.1.camel@gmail.com> (raw)
In-Reply-To: <CACPK8XcsScjrit-7VHh4oL=zPiMeEAB5_R550U0uPsuQ4WF1mg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On Tue, 2017-02-07 at 16:10 +1030, Joel Stanley wrote:
> On Thu, Jan 12, 2017 at 10:59 AM, Cyril Bur <cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> > This provides access to the mbox registers on the ast2400 and ast2500
> > boards.
>
Hey Joel,
Thanks for review, just one thing, I'll fixup the rest.
Cyril
> s/boards/SoCs/
>
> >
> > This driver allows arbitrary reads and writes to the 16 data registers as
> > the other end may have configured the mbox hardware to provide an
> > interrupt when a specific register gets written to.
> >
> > Signed-off-by: Cyril Bur <cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>
> Send this to lkml as well next time you submit.
>
> > ---
> > drivers/mailbox/Kconfig | 9 ++
> > drivers/mailbox/Makefile | 2 +
> > drivers/mailbox/aspeed-mbox.c | 334 ++++++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 345 insertions(+)
> > create mode 100644 drivers/mailbox/aspeed-mbox.c
> >
> > diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig
> > index ceff415f201c..10a7f3f2765c 100644
> > --- a/drivers/mailbox/Kconfig
> > +++ b/drivers/mailbox/Kconfig
> > @@ -152,4 +152,13 @@ config BCM_PDC_MBOX
> > Mailbox implementation for the Broadcom PDC ring manager,
> > which provides access to various offload engines on Broadcom
> > SoCs. Say Y here if you want to use the Broadcom PDC.
> > +
> > +config ASPEED_MBOX
>
> Call this ASPEED_LPC_MAILBOX, as it's a in the LPC IP block.
>
I think I'll stick with ASPEED_LPC_MBOX, the rest of the file uses MBOX
more widely when talking about controllers.
> > + depends on (ARCH_ASPEED || COMPILE_TEST) && REGMAP && MFD_SYSCON
> > + bool "Aspeed ast2400/2500 Mailbox Controller"
>
> Call this Aspeed LPC Mailbox Controller, as the layout is shared by
> SoCs other than the 2500 and 2400.
>
> > + default "y"
> > + ---help---
> > + Provides a driver for the MBOX registers found on Aspeed SOCs
> > + (AST2400 and AST2500). This driver provides a device for aspeed
> > + mbox registers
> > endif
> > diff --git a/drivers/mailbox/Makefile b/drivers/mailbox/Makefile
> > index 7dde4f609ae8..db5b4f3f29e0 100644
> > --- a/drivers/mailbox/Makefile
> > +++ b/drivers/mailbox/Makefile
> > @@ -31,3 +31,5 @@ obj-$(CONFIG_HI6220_MBOX) += hi6220-mailbox.o
> > obj-$(CONFIG_BCM_PDC_MBOX) += bcm-pdc-mailbox.o
> >
> > obj-$(CONFIG_TEGRA_HSP_MBOX) += tegra-hsp.o
> > +
> > +obj-$(CONFIG_ASPEED_MBOX) += aspeed-mbox.o
> > diff --git a/drivers/mailbox/aspeed-mbox.c b/drivers/mailbox/aspeed-mbox.c
> > new file mode 100644
> > index 000000000000..c4ee6ba228ea
> > --- /dev/null
> > +++ b/drivers/mailbox/aspeed-mbox.c
> > +
> > +static ssize_t aspeed_mbox_read(struct file *file, char __user *buf,
> > + size_t count, loff_t *ppos)
> > +{
> > + struct aspeed_mbox *mbox = file_mbox(file);
> > + char __user *p = buf;
> > + ssize_t ret;
> > + int i;
> > +
> > + if (!access_ok(VERIFY_WRITE, buf, count))
> > + return -EFAULT;
>
> As discussed in the LPC driver review:
>
> "And don't call access_ok(), it's racy and no driver should ever do that."
>
> Make sure all of the things you fixed in that driver are fixed in this one.
>
> > +
> > + if (count + *ppos > ASPEED_MBOX_NUM_REGS)
> > + return -EINVAL;
> > +
> > + if (file->f_flags & O_NONBLOCK) {
> > + if (!(aspeed_mbox_inb(mbox, ASPEED_MBOX_BMC_CTRL) &
> > + ASPEED_MBOX_CTRL_RECV))
> > + return -EAGAIN;
> > + } else if (wait_event_interruptible(mbox->queue,
> > + aspeed_mbox_inb(mbox, ASPEED_MBOX_BMC_CTRL) &
> > + ASPEED_MBOX_CTRL_RECV)) {
> > + return -ERESTARTSYS;
> > + }
> > +
> > + mutex_lock(&mbox->mutex);
> > +
> > + for (i = *ppos; count > 0 && i < ASPEED_MBOX_NUM_REGS; i++) {
> > + uint8_t reg = aspeed_mbox_inb(mbox, ASPEED_MBOX_DATA_0 + (i * 4));
> > +
> > + ret = __put_user(reg, p);
> > + if (ret)
> > + goto out_unlock;
> > +
> > + p++;
> > + count--;
> > + }
> > +
> > + /* ASPEED_MBOX_CTRL_RECV bit is W1C, this also unmasks in 1 step */
>
> W1C? Write to clear?
>
> > + aspeed_mbox_outb(mbox, ASPEED_MBOX_CTRL_RECV, ASPEED_MBOX_BMC_CTRL);
> > + ret = p - buf;
> > +
> > +out_unlock:
> > + mutex_unlock(&mbox->mutex);
> > + return ret;
> > +}
> > +
> > +module_platform_driver(aspeed_mbox_driver);
> > +
> > +MODULE_DEVICE_TABLE(of, aspeed_mbox_match);
> > +MODULE_LICENSE("GPL");
> > +MODULE_AUTHOR("Cyril Bur <cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>");
> > +MODULE_DESCRIPTION("ASpeed mailbox device driver");
>
> ASPEED or Aspeed.
>
> > --
> > 2.11.0
> >
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-02-07 22:57 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-12 0:29 [PATCH 0/4] ASpeed mailbox and LPC control drivers Cyril Bur
[not found] ` <20170112002910.3650-1-cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-12 0:29 ` [PATCH 1/4] Documentation: dt: mailbox: Add Aspeed ast2400/2500 bindings Cyril Bur
[not found] ` <20170112002910.3650-2-cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-18 20:38 ` Rob Herring
2017-01-19 0:05 ` Cyril Bur
[not found] ` <1484784318.4097.2.camel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-19 15:08 ` Benjamin Herrenschmidt
2017-01-12 0:29 ` [PATCH 2/4] Documentation: dt: misc: Add Aspeed ast2400/2500 LPC Control bindings Cyril Bur
[not found] ` <20170112002910.3650-3-cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-18 21:16 ` Rob Herring
2017-01-19 0:19 ` Cyril Bur
2017-01-12 0:29 ` [PATCH 3/4] drivers/misc: Add ASpeed LPC control driver Cyril Bur
[not found] ` <20170112002910.3650-4-cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-12 7:43 ` Greg KH
[not found] ` <20170112074312.GA23943-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2017-01-12 15:36 ` Benjamin Herrenschmidt
2017-01-12 7:47 ` Greg KH
[not found] ` <20170112074750.GB23943-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2017-01-12 10:16 ` Cyril Bur
[not found] ` <1484216163.11416.8.camel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-12 10:30 ` Greg KH
[not found] ` <20170112103038.GA19239-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2017-01-12 15:27 ` Benjamin Herrenschmidt
[not found] ` <1484234867.2492.39.camel-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>
2017-01-12 16:00 ` Greg KH
[not found] ` <20170112160051.GB8095-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2017-01-12 16:07 ` Benjamin Herrenschmidt
[not found] ` <1484237253.2492.43.camel-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>
2017-01-12 16:26 ` Greg KH
[not found] ` <20170112162619.GB10283-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2017-01-12 16:31 ` Benjamin Herrenschmidt
2017-01-12 15:35 ` Benjamin Herrenschmidt
[not found] ` <1484235315.2492.41.camel-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>
2017-01-12 16:27 ` Greg KH
2017-01-12 16:29 ` Benjamin Herrenschmidt
[not found] ` <1484238577.2492.45.camel-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>
2017-01-12 17:27 ` Greg KH
2017-01-12 0:29 ` [PATCH 4/4] drivers/mailbox: Add ASpeed mailbox driver Cyril Bur
[not found] ` <20170112002910.3650-5-cyrilbur-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-07 5:40 ` Joel Stanley
[not found] ` <CACPK8XcsScjrit-7VHh4oL=zPiMeEAB5_R550U0uPsuQ4WF1mg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-02-07 5:44 ` Benjamin Herrenschmidt
2017-02-07 22:57 ` Cyril Bur [this message]
[not found] ` <1486508229.3824.1.camel-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-02-07 22:59 ` Joel Stanley
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=1486508229.3824.1.camel@gmail.com \
--to=cyrilbur-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=andrew-zrmu5oMJ5Fs@public.gmane.org \
--cc=arnd-r2nGTMty4D4@public.gmane.org \
--cc=benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=jassisinghbrar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=jk-mnsaURCQ41sdnm+yROfE0A@public.gmane.org \
--cc=joel-U3u1mxZcP9KHXe+LvDLADg@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=openbmc-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=xow-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.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;
as well as URLs for NNTP newsgroup(s).