From patchwork Fri Jan 20 14:07:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 717717 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 3v4jJK3BTfz9sDF for ; Sat, 21 Jan 2017 01:09:37 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.b="evyyz9A3"; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D5A274B6E5; Fri, 20 Jan 2017 15:09:02 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id KfOC6QnpZHU3; Fri, 20 Jan 2017 15:09:02 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 926F74B6E9; Fri, 20 Jan 2017 15:08:58 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D5AC64B5B4 for ; Fri, 20 Jan 2017 15:08:31 +0100 (CET) Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1Zf7mneIpW5e for ; Fri, 20 Jan 2017 15:08:31 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-ot0-f171.google.com (mail-ot0-f171.google.com [74.125.82.171]) by theia.denx.de (Postfix) with ESMTPS id 72ACB4B160 for ; Fri, 20 Jan 2017 15:08:21 +0100 (CET) Received: by mail-ot0-f171.google.com with SMTP id 73so56212644otj.0 for ; Fri, 20 Jan 2017 06:08:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=sUcPC2uF3Bd29pS+SycIU0ESZ5QXHBLC/59S83OlkbA=; b=evyyz9A3vZmFnDrUu0tH2h7eF+vECm1h1f/+geTXnJ2HRKwAGTcdM8nT4KO59/gFC9 91ojMTYpWLM6MGGZyEL6vZ2SFXSQfFjkAHeocFPvfrSZKTqFc8GSHTeT5yCX8Vi6wLxx nCmuhnENKB8cQuBda/jxlsEvMMXU/r1pzDXEhmcKHIM4lgETni9+K4kH0rTXF4LevOoR NWRgPQNfqO57tR2YyQn2d6xPQnoOtD7nOM6PiArqDCXBb9+rx7RM/eRi599h8EQ6AP3s hcFS23IR8OeT8NJtuNocIMB7/oma9XNlU/b8oEGIyEeB4btMIU2vPwBH1zDOWnNmHYjR JqCg== 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; bh=sUcPC2uF3Bd29pS+SycIU0ESZ5QXHBLC/59S83OlkbA=; b=RT/+u6gdQWilxnjfnBW1WTZksau5/rkWFuCwmhjEeJDT13FjiCPu7pBsIkLfBA1jN3 BsaX0kb7K+Zbf+0dDvD16hsE+AYQQVxoVHu6keXay9MzkaOnoERi8XGNAOCpEva/Xp61 EIieYFHTZyCAJKpQ4Dw0Um61zn/IPJGm11EHMNWF9WgN1wK0aushsZhQZU4ZfsC+0XDg vUJNevC8qESGsAS/AVFBOC0diKNcNZTB0DuPuiicXToB3Kjcu32qkCQ2IYpjZIPdaZRt 7mo3Mit8fuJbHtbWFJcFysh4tQpgzsJ1/Zt+vSeK9VZPSUi6tRoEeA915bBIyBI7uq5u P0MQ== X-Gm-Message-State: AIkVDXI+GMOtOmEf6XVOv8Dy13pQxTm3XKy3ccWaU9WsSAVKgAk8Pbw+kyYK0avz3aL9ZYCY X-Received: by 10.157.62.29 with SMTP id a29mr7722693otd.48.1484921300044; Fri, 20 Jan 2017 06:08:20 -0800 (PST) Received: from kaki.bld.corp.google.com ([100.100.197.46]) by smtp.gmail.com with ESMTPSA id w80sm3814228ota.3.2017.01.20.06.08.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Jan 2017 06:08:19 -0800 (PST) Received: by kaki.bld.corp.google.com (Postfix, from userid 121222) id 08B9E40486; Fri, 20 Jan 2017 07:08:19 -0700 (MST) From: Simon Glass To: U-Boot Mailing List Date: Fri, 20 Jan 2017 07:07:44 -0700 Message-Id: <20170120140752.16296-10-sjg@chromium.org> X-Mailer: git-send-email 2.11.0.483.g087da7b7c-goog In-Reply-To: <20170120140752.16296-1-sjg@chromium.org> References: <20170120140752.16296-1-sjg@chromium.org> Cc: Albert Aribaud , Stephen Warren , Joe Hershberger Subject: [U-Boot] [PATCH v4 09/17] arm: rpi: Add a function to obtain the MMC clock X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.15 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" Move this code into the new message handler file. Signed-off-by: Simon Glass --- Changes in v4: None Changes in v3: None arch/arm/mach-bcm283x/include/mach/msg.h | 7 +++++++ arch/arm/mach-bcm283x/msg.c | 28 ++++++++++++++++++++++++++++ board/raspberrypi/rpi/rpi.c | 22 ++++------------------ 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/arch/arm/mach-bcm283x/include/mach/msg.h b/arch/arm/mach-bcm283x/include/mach/msg.h index 3bcb5db3e60..8fd4ace124d 100644 --- a/arch/arm/mach-bcm283x/include/mach/msg.h +++ b/arch/arm/mach-bcm283x/include/mach/msg.h @@ -15,4 +15,11 @@ */ int bcm2835_power_on_module(u32 module); +/** + * bcm2835_get_mmc_clock() - get the frequency of the MMC clock + * + * @return clock frequency, or -ve on error + */ +int bcm2835_get_mmc_clock(void); + #endif diff --git a/arch/arm/mach-bcm283x/msg.c b/arch/arm/mach-bcm283x/msg.c index 08b1beaa539..facb916711c 100644 --- a/arch/arm/mach-bcm283x/msg.c +++ b/arch/arm/mach-bcm283x/msg.c @@ -14,6 +14,12 @@ struct msg_set_power_state { u32 end_tag; }; +struct msg_get_clock_rate { + struct bcm2835_mbox_hdr hdr; + struct bcm2835_mbox_tag_get_clock_rate get_clock_rate; + u32 end_tag; +}; + int bcm2835_power_on_module(u32 module) { ALLOC_CACHE_ALIGN_BUFFER(struct msg_set_power_state, msg_pwr, 1); @@ -37,3 +43,25 @@ int bcm2835_power_on_module(u32 module) return 0; } + +int bcm2835_get_mmc_clock(void) +{ + ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_clock_rate, msg_clk, 1); + int ret; + + ret = bcm2835_power_on_module(BCM2835_MBOX_POWER_DEVID_SDHCI); + if (ret) + return ret; + + BCM2835_MBOX_INIT_HDR(msg_clk); + BCM2835_MBOX_INIT_TAG(&msg_clk->get_clock_rate, GET_CLOCK_RATE); + msg_clk->get_clock_rate.body.req.clock_id = BCM2835_MBOX_CLOCK_ID_EMMC; + + ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_clk->hdr); + if (ret) { + printf("bcm2835: Could not query eMMC clock rate\n"); + return -EIO; + } + + return msg_clk->get_clock_rate.body.resp.rate_hz; +} diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c index 231d86b7996..dd318df72b2 100644 --- a/board/raspberrypi/rpi/rpi.c +++ b/board/raspberrypi/rpi/rpi.c @@ -54,12 +54,6 @@ struct msg_get_mac_address { u32 end_tag; }; -struct msg_get_clock_rate { - struct bcm2835_mbox_hdr hdr; - struct bcm2835_mbox_tag_get_clock_rate get_clock_rate; - u32 end_tag; -}; - /* * http://raspberryalphaomega.org.uk/2013/02/06/automatic-raspberry-pi-board-revision-detection-model-a-b1-and-b2/ * http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=32733 @@ -462,23 +456,15 @@ int board_init(void) int board_mmc_init(bd_t *bis) { - ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_clock_rate, msg_clk, 1); int ret; bcm2835_power_on_module(BCM2835_MBOX_POWER_DEVID_SDHCI); - BCM2835_MBOX_INIT_HDR(msg_clk); - BCM2835_MBOX_INIT_TAG(&msg_clk->get_clock_rate, GET_CLOCK_RATE); - msg_clk->get_clock_rate.body.req.clock_id = BCM2835_MBOX_CLOCK_ID_EMMC; - - ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_clk->hdr); - if (ret) { - printf("bcm2835: Could not query eMMC clock rate\n"); - return -1; - } + ret = bcm2835_get_mmc_clock(); + if (ret) + return ret; - return bcm2835_sdhci_init(BCM2835_SDHCI_BASE, - msg_clk->get_clock_rate.body.resp.rate_hz); + return bcm2835_sdhci_init(BCM2835_SDHCI_BASE, ret); } int ft_board_setup(void *blob, bd_t *bd)