From: Jassi Brar <jassisinghbrar-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> To: Jonathan Richardson <jonathan.richardson-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>, Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>, Ray Jui <rjui-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>, Scott Branden <sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>, Jon Mason <jonmason-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>, Russell King <linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org>, Vikram Prakash <vikram.prakash-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>, Devicetree List <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>, "linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org" <linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>, BCM Kernel Feedback <bcm-kernel-feedback-list-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> Subject: Re: [PATCH v4 2/3] mailbox: Add iProc mailbox controller driver Date: Fri, 17 Feb 2017 11:50:26 +0530 [thread overview] Message-ID: <CABb+yY0rmAFutskhVkQ926QfsvtJ-WnXrQc=+PQNg=7NZEXC+Q@mail.gmail.com> (raw) In-Reply-To: <1485463082-27067-3-git-send-email-jonathan.richardson-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> On Fri, Jan 27, 2017 at 2:08 AM, Jonathan Richardson <jonathan.richardson-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> wrote: > +static int iproc_mbox_send_data_m0(struct mbox_chan *chan, void *data) > +{ > + struct iproc_mbox *mbox = dev_get_drvdata(chan->mbox->dev); > + struct iproc_mbox_msg *msg = (struct iproc_mbox_msg *)data; > + unsigned long flags; > + int err = 0; > + const int poll_period_us = 5; > + const int max_retries = (MAX_M0_TIMEOUT_MS * 1000) / poll_period_us; > + > + if (!msg) > + return -EINVAL; > + > + spin_lock_irqsave(&mbox->lock, flags); > + > + dev_dbg(mbox->dev, "Send msg to M0: cmd=0x%x, param=0x%x, wait_ack=%d\n", > + msg->cmd, msg->param, msg->wait_ack); > + prints should be outside the spinlocks. > + writel(msg->cmd, mbox->base + IPROC_CRMU_MAILBOX0_OFFSET); > + writel(msg->param, mbox->base + IPROC_CRMU_MAILBOX1_OFFSET); > + > + if (msg->wait_ack) { > + int retries; > + move poll_period_us and max_retries in here or just define' them > + err = msg->reply_code = -ETIMEDOUT; > + for (retries = 0; retries < max_retries; retries++) { > + u32 val = readl( > + mbox->base + IPROC_CRMU_MAILBOX0_OFFSET); > + if (val & M0_IPC_CMD_DONE_MASK) { > + /* > + * M0 replied - save reply code and > + * clear error. > + */ > + msg->reply_code = (val & > + M0_IPC_CMD_REPLY_MASK) >> > + M0_IPC_CMD_REPLY_SHIFT; > + err = 0; > + break; > + } > + udelay(poll_period_us); > potentially 2ms inside spin_lock_irqsave. Alternative is to implement a simple 'peek_data' and call it for requests with 'wait_ack' -- 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
WARNING: multiple messages have this Message-ID (diff)
From: jassisinghbrar@gmail.com (Jassi Brar) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v4 2/3] mailbox: Add iProc mailbox controller driver Date: Fri, 17 Feb 2017 11:50:26 +0530 [thread overview] Message-ID: <CABb+yY0rmAFutskhVkQ926QfsvtJ-WnXrQc=+PQNg=7NZEXC+Q@mail.gmail.com> (raw) In-Reply-To: <1485463082-27067-3-git-send-email-jonathan.richardson@broadcom.com> On Fri, Jan 27, 2017 at 2:08 AM, Jonathan Richardson <jonathan.richardson@broadcom.com> wrote: > +static int iproc_mbox_send_data_m0(struct mbox_chan *chan, void *data) > +{ > + struct iproc_mbox *mbox = dev_get_drvdata(chan->mbox->dev); > + struct iproc_mbox_msg *msg = (struct iproc_mbox_msg *)data; > + unsigned long flags; > + int err = 0; > + const int poll_period_us = 5; > + const int max_retries = (MAX_M0_TIMEOUT_MS * 1000) / poll_period_us; > + > + if (!msg) > + return -EINVAL; > + > + spin_lock_irqsave(&mbox->lock, flags); > + > + dev_dbg(mbox->dev, "Send msg to M0: cmd=0x%x, param=0x%x, wait_ack=%d\n", > + msg->cmd, msg->param, msg->wait_ack); > + prints should be outside the spinlocks. > + writel(msg->cmd, mbox->base + IPROC_CRMU_MAILBOX0_OFFSET); > + writel(msg->param, mbox->base + IPROC_CRMU_MAILBOX1_OFFSET); > + > + if (msg->wait_ack) { > + int retries; > + move poll_period_us and max_retries in here or just define' them > + err = msg->reply_code = -ETIMEDOUT; > + for (retries = 0; retries < max_retries; retries++) { > + u32 val = readl( > + mbox->base + IPROC_CRMU_MAILBOX0_OFFSET); > + if (val & M0_IPC_CMD_DONE_MASK) { > + /* > + * M0 replied - save reply code and > + * clear error. > + */ > + msg->reply_code = (val & > + M0_IPC_CMD_REPLY_MASK) >> > + M0_IPC_CMD_REPLY_SHIFT; > + err = 0; > + break; > + } > + udelay(poll_period_us); > potentially 2ms inside spin_lock_irqsave. Alternative is to implement a simple 'peek_data' and call it for requests with 'wait_ack'
next prev parent reply other threads:[~2017-02-17 6:20 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-01-26 20:37 [PATCH v4 0/3] Add support for Broadcom iProc mailbox controller Jonathan Richardson 2017-01-26 20:37 ` Jonathan Richardson [not found] ` <1485463082-27067-1-git-send-email-jonathan.richardson-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> 2017-01-26 20:38 ` [PATCH v4 1/3] dt-bindings: Document Broadcom iProc mailbox controller driver Jonathan Richardson 2017-01-26 20:38 ` Jonathan Richardson [not found] ` <1485463082-27067-2-git-send-email-jonathan.richardson-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> 2017-02-01 13:25 ` Rob Herring 2017-02-01 13:25 ` Rob Herring 2017-01-26 20:38 ` [PATCH v4 2/3] mailbox: Add " Jonathan Richardson 2017-01-26 20:38 ` Jonathan Richardson [not found] ` <1485463082-27067-3-git-send-email-jonathan.richardson-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> 2017-02-17 6:20 ` Jassi Brar [this message] 2017-02-17 6:20 ` Jassi Brar [not found] ` <CABb+yY0rmAFutskhVkQ926QfsvtJ-WnXrQc=+PQNg=7NZEXC+Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2017-02-20 21:58 ` Jonathan Richardson 2017-02-20 21:58 ` Jonathan Richardson 2017-02-23 18:59 ` Jonathan Richardson 2017-02-23 18:59 ` Jonathan Richardson [not found] ` <09177a6f-0612-1e17-a12e-0b1969f5b2e1-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> 2017-02-24 5:00 ` Jassi Brar 2017-02-24 5:00 ` Jassi Brar 2017-03-02 21:03 ` Jonathan Richardson 2017-03-02 21:03 ` Jonathan Richardson [not found] ` <22d07bb1-9e93-4ae5-7215-923bde9ebfe5-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> 2017-03-14 18:45 ` Jonathan Richardson 2017-03-14 18:45 ` Jonathan Richardson 2017-03-15 17:30 ` Jassi Brar 2017-03-15 17:30 ` Jassi Brar [not found] ` <CABb+yY1kbFOKJPO95SRw995zt=fCoA+SkXgECOj774i_hJUCNg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2017-03-28 17:30 ` Jonathan Richardson 2017-03-28 17:30 ` Jonathan Richardson [not found] ` <0e8ac72a-6b2f-171d-41e7-7a6cefc4c7c4-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> 2017-03-29 4:36 ` Jassi Brar 2017-03-29 4:36 ` Jassi Brar [not found] ` <CABb+yY31oW09-fq_t4V6vatMe50Ed2Mi00kT4bOJv2=qFBT+QA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2017-03-29 19:28 ` Jonathan Richardson 2017-03-29 19:28 ` Jonathan Richardson 2017-01-26 20:38 ` [PATCH v4 3/3] ARM: dts: Enable Broadcom iProc mailbox controller Jonathan Richardson 2017-01-26 20:38 ` Jonathan Richardson 2017-02-16 20:08 ` [PATCH v4 0/3] Add support for " Jonathan Richardson 2017-02-16 20:08 ` Jonathan Richardson [not found] ` <75e8060f-7e9e-8e7c-2eee-a5c9321f3d3f-dY08KVG/lbpWk0Htik3J/w@public.gmane.org> 2017-08-18 5:34 ` Florian Fainelli 2017-08-18 5:34 ` Florian Fainelli
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='CABb+yY0rmAFutskhVkQ926QfsvtJ-WnXrQc=+PQNg=7NZEXC+Q@mail.gmail.com' \ --to=jassisinghbrar-re5jqeeqqe8avxtiumwx3w@public.gmane.org \ --cc=bcm-kernel-feedback-list-dY08KVG/lbpWk0Htik3J/w@public.gmane.org \ --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=jonathan.richardson-dY08KVG/lbpWk0Htik3J/w@public.gmane.org \ --cc=jonmason-dY08KVG/lbpWk0Htik3J/w@public.gmane.org \ --cc=linux-I+IVW8TIWO2tmTQ+vhA3Yw@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \ --cc=rjui-dY08KVG/lbpWk0Htik3J/w@public.gmane.org \ --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \ --cc=sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org \ --cc=vikram.prakash-dY08KVG/lbpWk0Htik3J/w@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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.