From patchwork Thu Oct 23 15:36:42 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ashwin Chaugule X-Patchwork-Id: 39377 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-lb0-f197.google.com (mail-lb0-f197.google.com [209.85.217.197]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 6EAF324022 for ; Thu, 23 Oct 2014 15:36:46 +0000 (UTC) Received: by mail-lb0-f197.google.com with SMTP id p9sf742900lbv.8 for ; Thu, 23 Oct 2014 08:36:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:delivered-to:mime-version:in-reply-to:references :date:message-id:subject:from:to:cc:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :list-post:list-help:list-archive:list-unsubscribe:content-type; bh=Jw2vNyxhsr2UHdCeI1KBvAX+DHVFnaqxsu1dWX85AYM=; b=dwaa0AwZbCni22+yDxAH6r6JoQzoKhIBvwLEQO8yCZ8KkIjYeZt/MLkaW1DpkI43lk QUe98GzO7BoTPZ5c/JR8SgR7POSTj9//pRX3xhQAsqR9/lSarCkH6TYNjbB0dL0BWjvE fUNGZNf5p2brRjH762dAal8xJFL5OEPrMVlPXRTtY2nQIxq56puy0VgJpKHG1GAdRtGT Qm71ErP1oxjFNp2seOKdXeQ9xUVj78qx6TjA0t+LKcyKm7OgrpLXB+lzWEPvddMhnDjS m8Gv7rpHQaChbYAa5EQDS88ibo9emc1Aew6ngRa1w9FeQifYonTbGqMMAMmqb3raV+P1 xm4w== X-Gm-Message-State: ALoCoQmAryu9pTADN2mkAtuaKDOG5p8oiLnpNZ8AKYoIJkqYTVcxMiNlrEYChPIhg12t2o40Yzt0 X-Received: by 10.180.101.136 with SMTP id fg8mr1993069wib.3.1414078605256; Thu, 23 Oct 2014 08:36:45 -0700 (PDT) X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.36.97 with SMTP id p1ls285711laj.87.gmail; Thu, 23 Oct 2014 08:36:44 -0700 (PDT) X-Received: by 10.112.134.39 with SMTP id ph7mr5910353lbb.45.1414078604912; Thu, 23 Oct 2014 08:36:44 -0700 (PDT) Received: from mail-la0-f46.google.com (mail-la0-f46.google.com. [209.85.215.46]) by mx.google.com with ESMTPS id uc5si3199483lbb.31.2014.10.23.08.36.44 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 23 Oct 2014 08:36:44 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.46 as permitted sender) client-ip=209.85.215.46; Received: by mail-la0-f46.google.com with SMTP id gi9so1069530lab.5 for ; Thu, 23 Oct 2014 08:36:44 -0700 (PDT) X-Received: by 10.112.221.197 with SMTP id qg5mr5973916lbc.32.1414078604612; Thu, 23 Oct 2014 08:36:44 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patches@linaro.org Received: by 10.112.84.229 with SMTP id c5csp276473lbz; Thu, 23 Oct 2014 08:36:43 -0700 (PDT) X-Received: by 10.194.3.78 with SMTP id a14mr6206963wja.107.1414078603188; Thu, 23 Oct 2014 08:36:43 -0700 (PDT) Received: from mail-wi0-f172.google.com (mail-wi0-f172.google.com. [209.85.212.172]) by mx.google.com with ESMTPS id h2si5381456wiy.106.2014.10.23.08.36.43 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 23 Oct 2014 08:36:43 -0700 (PDT) Received-SPF: pass (google.com: domain of ashwin.chaugule@linaro.org designates 209.85.212.172 as permitted sender) client-ip=209.85.212.172; Received: by mail-wi0-f172.google.com with SMTP id bs8so4481289wib.17 for ; Thu, 23 Oct 2014 08:36:43 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.180.79.228 with SMTP id m4mr13909497wix.26.1414078602907; Thu, 23 Oct 2014 08:36:42 -0700 (PDT) Received: by 10.216.171.68 with HTTP; Thu, 23 Oct 2014 08:36:42 -0700 (PDT) In-Reply-To: <1412972037-12793-2-git-send-email-ashwin.chaugule@linaro.org> References: <1412972037-12793-1-git-send-email-ashwin.chaugule@linaro.org> <1412972037-12793-2-git-send-email-ashwin.chaugule@linaro.org> Date: Thu, 23 Oct 2014 11:36:42 -0400 Message-ID: Subject: Re: [PATCH v9] Mailbox: Add support for Platform Communication Channel From: Ashwin Chaugule To: Mark Brown Cc: "Zheng, Lv" , "linaro-acpi@lists.linaro.org" , Patch Tracking , linux acpi , "Rafael J. Wysocki" , Arnd Bergmann , Ashwin Chaugule X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: ashwin.chaugule@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.215.46 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Precedence: list Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org List-ID: X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , Hello, On 10 October 2014 16:13, Ashwin Chaugule wrote: > ACPI 5.0+ spec defines a generic mode of communication > between the OS and a platform such as the BMC. This medium > (PCC) is typically used by CPPC (ACPI CPU Performance management), > RAS (ACPI reliability protocol) and MPST (ACPI Memory power > states). > > This patch adds PCC support as a Mailbox Controller. > > Reviewed-by: Mark Brown > Signed-off-by: Ashwin Chaugule > --- > drivers/mailbox/Kconfig | 12 ++ > drivers/mailbox/Makefile | 2 + > drivers/mailbox/mailbox.c | 4 +- > drivers/mailbox/mailbox.h | 16 ++ > drivers/mailbox/pcc.c | 369 ++++++++++++++++++++++++++++++++++++++++++++++ > 5 files changed, 400 insertions(+), 3 deletions(-) > create mode 100644 drivers/mailbox/mailbox.h > create mode 100644 drivers/mailbox/pcc.c > > diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig > index 9fd9c67..c04fed9 100644 > --- a/drivers/mailbox/Kconfig > +++ b/drivers/mailbox/Kconfig > @@ -33,4 +33,16 @@ config OMAP_MBOX_KFIFO_SIZE > Specify the default size of mailbox's kfifo buffers (bytes). > This can also be changed at runtime (via the mbox_kfifo_size > module parameter). > + > +config PCC > + bool "Platform Communication Channel Driver" > + depends on ACPI > + help > + ACPI 5.0+ spec defines a generic mode of communication > + between the OS and a platform such as the BMC. This medium > + (PCC) is typically used by CPPC (ACPI CPU Performance management), > + RAS (ACPI reliability protocol) and MPST (ACPI Memory power > + states). Select this driver if your platform implements the > + PCC clients mentioned above. > + > endif Looks like Linus has agreed to pull in the Mailbox framework in 3.18 [1], so I was hoping we could move this patch forward. When I started working on the PCC driver, I based it off of ACPI v5.0. Since then the spec moved to v5.1 and added a trivial change to the PCC section. This change adds a new subtable to support systems that dont have an SCI for the doorbell irq. The new structure declaration is already in mainline [2]. Given that there were no existing users of PCC so far and that the future users are more likely to use the new subtable, I'd like to include it here and make it the default from the start. SCI support can be added later if it is needed. The change to do this is also trivial and the diff is below. Mark, are you okay with squashing this diff into the original patch [v9] and keeping your reviewed-by tag? I can then send a git pull request. Arnd, Rafael, if there are no further comments on this patch, kindly advise which tree to rebase on for the git pull. --------------------8<----------------------- doorbell = pcct_ss->doorbell_register; @@ -219,8 +217,7 @@ static int pcc_send_data(struct mbox_chan *chan, void *data) acpi_write((doorbell_val & doorbell_preserve) | doorbell_write, &doorbell); -out_err: - return ret; + return 0; } static struct mbox_chan_ops pcc_chan_ops = { @@ -241,12 +238,12 @@ static struct mbox_chan_ops pcc_chan_ops = { static int parse_pcc_subspace(struct acpi_subtable_header *header, const unsigned long end) { - struct acpi_pcct_subspace *pcct_ss; + struct acpi_pcct_hw_reduced *pcct_ss; if (pcc_mbox_ctrl.num_chans <= MAX_PCC_SUBSPACES) { - pcct_ss = (struct acpi_pcct_subspace *) header; + pcct_ss = (struct acpi_pcct_hw_reduced *) header; - if (pcct_ss->header.type != ACPI_PCCT_TYPE_GENERIC_SUBSPACE) { + if (pcct_ss->header.type != ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE) { pr_err("Incorrect PCC Subspace type detected\n"); return -EINVAL; } @@ -287,7 +284,7 @@ static int __init acpi_pcc_probe(void) count = acpi_table_parse_entries(ACPI_SIG_PCCT, sizeof(struct acpi_table_pcct), - ACPI_PCCT_TYPE_GENERIC_SUBSPACE, + ACPI_PCCT_TYPE_HW_REDUCED_SUBSPACE, parse_pcc_subspace, MAX_PCC_SUBSPACES); if (count <= 0) { ---------------8------------------------ Thanks, Ashwin [1] - https://lkml.org/lkml/2014/10/21/660 [2] - https://lkml.org/lkml/2014/7/30/9 diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c index 0006fc3..592c6fa 100644 --- a/drivers/mailbox/pcc.c +++ b/drivers/mailbox/pcc.c @@ -130,7 +130,7 @@ EXPORT_SYMBOL_GPL(pcc_mbox_free_channel); */ static bool pcc_tx_done(struct mbox_chan *chan) { - struct acpi_pcct_subspace *pcct_ss = chan->con_priv; + struct acpi_pcct_hw_reduced *pcct_ss = chan->con_priv; struct acpi_pcct_shared_memory *generic_comm_base = (struct acpi_pcct_shared_memory *) pcct_ss->base_address; u16 cmd_delay = pcct_ss->min_turnaround_time; @@ -182,7 +182,7 @@ static int get_subspace_id(struct mbox_chan *chan) */ static int pcc_send_data(struct mbox_chan *chan, void *data) { - struct acpi_pcct_subspace *pcct_ss = chan->con_priv; + struct acpi_pcct_hw_reduced *pcct_ss = chan->con_priv; struct acpi_pcct_shared_memory *generic_comm_base = (struct acpi_pcct_shared_memory *) pcct_ss->base_address; struct acpi_generic_address doorbell; @@ -191,14 +191,12 @@ static int pcc_send_data(struct mbox_chan *chan, void *data) u64 doorbell_write; u16 cmd = *(u16 *) data; u16 ss_idx = -1; - int ret = 0; ss_idx = get_subspace_id(chan); if (ss_idx < 0) { pr_err("Invalid Subspace ID from PCC client\n"); - ret = -EINVAL; - goto out_err; + return -EINVAL; }