From patchwork Wed Oct 2 13:39:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Simek X-Patchwork-Id: 1170682 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=xilinx.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=monstr-eu.20150623.gappssmtp.com header.i=@monstr-eu.20150623.gappssmtp.com header.b="A1D/76zB"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46jy4Y3hsJz9sDB for ; Wed, 2 Oct 2019 23:42:37 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id D9973C21E49; Wed, 2 Oct 2019 13:41:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id B6F63C21E63; Wed, 2 Oct 2019 13:39:58 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 571C4C21E3E; Wed, 2 Oct 2019 13:39:49 +0000 (UTC) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by lists.denx.de (Postfix) with ESMTPS id 1D623C21E68 for ; Wed, 2 Oct 2019 13:39:45 +0000 (UTC) Received: by mail-wm1-f67.google.com with SMTP id r19so7254304wmh.2 for ; Wed, 02 Oct 2019 06:39:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=monstr-eu.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=5E5oEeXhBKqFNUsmLrrM1DpE8AnP9f34gYCgDhhVlQ8=; b=A1D/76zBF0fGsabJniZFseNCsPH2HwujEk2Tv4CjV9G3eJj7213uINebWxq3G8NsZZ McMvFDgt4/uH6l5cv6KXnmTVtgYreX1YCALzhH+jQxE/dnKOgxUh0oP8iUp9R8UZ3Vgo BXJHRoL3ofbJzjon46j3/s48k/fyT/mtYd6PfVnIwemoxLQoeSelvGbLaZjhF08uojSJ 4HizClCXqeLk+myV1UGeGb/w430y0w3bJKbFXAGMpPNtqfNFX5jkAF+xyQ3F4wyVi59e bRhKfuOdepeCWQ546Hq0hbAXEEH2E3gFMMKMHC6YCwbs0QxtxAlHBr0cbThUctcL4EMp +qyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:in-reply-to:references; bh=5E5oEeXhBKqFNUsmLrrM1DpE8AnP9f34gYCgDhhVlQ8=; b=lLnqmSnyQqPTh7BPiG0LFLGu0gJ46ZAgiGTz92BOT1W1VFtIMREgDRJMac5UmaHrrw ohfYD4JxAjuWLLJRzsVtUu3a3Jm074S7m9Z4BbAoxHc0QH6ceHNKiTPiUa+3bDvjbbk3 79ypbKZSXOKN6Vkiv9yE0ZwzsCeXNVPi8JRroxZhsJadawoOfzZIkne1f6hVQRTh70z+ g32++hhNfZUIHoMnIqyhuG6YgRjdwtSFi6CLFhkiqzmbOTdlGfka0cQVn+DTN2NM7BQ1 lHnfhuqYnwp6Xt58L1IG53hYaIfJ5ocYIK0+1I/bch/hIWRUTzZmFGkrCDgVm+KU1seh Ln9Q== X-Gm-Message-State: APjAAAWPNB3+H4e9WvclOHoEENKpGYwrXdKqwI60u6uUHGuVTe+sT3yl qLBY3JxMh+pWgCC+O55ro4KDxwjYFdxbjQ== X-Google-Smtp-Source: APXvYqx5vxpogq/a/TrdEPSjejQBeaRBeP1q++zJqFF74pQWqUKf2P+pkuawpekRhOSseb/VeqTh1g== X-Received: by 2002:a05:600c:24cf:: with SMTP id 15mr2966617wmu.139.1570023584505; Wed, 02 Oct 2019 06:39:44 -0700 (PDT) Received: from localhost (nat-35.starnet.cz. [178.255.168.35]) by smtp.gmail.com with ESMTPSA id f10sm5364202wml.4.2019.10.02.06.39.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 02 Oct 2019 06:39:43 -0700 (PDT) From: Michal Simek To: u-boot@lists.denx.de, git@xilinx.com Date: Wed, 2 Oct 2019 15:39:22 +0200 Message-Id: <6186f16b7874c6ebdd419b03f101bd574c178adf.1570023563.git.michal.simek@xilinx.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: References: In-Reply-To: References: Cc: Rajan Vaja , luca@lucaceresoli.net, ibai.erkiaga-elorza@xilinx.com Subject: [U-Boot] [PATCH v2 04/13] firmware: zynqmp: Add zynqmp-power support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Ibai Erkiaga zynqmp-power driver for ZynqMP to handle the communication with the PMU firmware. Firmware driver just probes subnodes and power driver handles communication with PMU using the IPI mailbox driver. Signed-off-by: Ibai Erkiaga Signed-off-by: Michal Simek --- Changes in v2: - Check error separately - Reported by Luca drivers/firmware/Kconfig | 2 ++ drivers/firmware/firmware-zynqmp.c | 44 ++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig index b70a2063551c..9596ec16c7f7 100644 --- a/drivers/firmware/Kconfig +++ b/drivers/firmware/Kconfig @@ -30,6 +30,8 @@ config TI_SCI_PROTOCOL config ZYNQMP_FIRMWARE bool "ZynqMP Firmware interface" select FIRMWARE + select ZYNQMP_IPI + select DM_MAILBOX help Firmware interface driver is used by different drivers to communicate with the firmware for diff --git a/drivers/firmware/firmware-zynqmp.c b/drivers/firmware/firmware-zynqmp.c index 6644a7166ca0..97ac333296ec 100644 --- a/drivers/firmware/firmware-zynqmp.c +++ b/drivers/firmware/firmware-zynqmp.c @@ -1,6 +1,50 @@ // SPDX-License-Identifier: GPL-2.0 +/* + * Xilinx Zynq MPSoC Firmware driver + * + * Copyright (C) 2018-2019 Xilinx, Inc. + */ +#include #include +#include +#include + +struct zynqmp_power { + struct mbox_chan tx_chan; + struct mbox_chan rx_chan; +} zynqmp_power; + +static int zynqmp_power_probe(struct udevice *dev) +{ + int ret = 0; + + debug("%s, (dev=%p)\n", __func__, dev); + + ret = mbox_get_by_name(dev, "tx", &zynqmp_power.tx_chan); + if (ret) { + debug("%s, cannot tx mailbox\n", __func__); + return ret; + } + + ret = mbox_get_by_name(dev, "rx", &zynqmp_power.rx_chan); + if (ret) + debug("%s, cannot rx mailbox\n", __func__); + + return ret; +}; + +static const struct udevice_id zynqmp_power_ids[] = { + { .compatible = "xlnx,zynqmp-power" }, + { } +}; + +U_BOOT_DRIVER(zynqmp_power) = { + .name = "zynqmp_power", + .id = UCLASS_FIRMWARE, + .of_match = zynqmp_power_ids, + .probe = zynqmp_power_probe, +}; static const struct udevice_id zynqmp_firmware_ids[] = { { .compatible = "xlnx,zynqmp-firmware" },