From patchwork Wed May 16 09:13:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramon Fried X-Patchwork-Id: 914287 X-Patchwork-Delegate: trini@ti.com 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=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="prckc7XG"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 40m84H6k4dz9s2L for ; Wed, 16 May 2018 19:18:23 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 94DCEC21E50; Wed, 16 May 2018 09:17:05 +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=FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED, 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 DE5B2C21E0D; Wed, 16 May 2018 09:14:37 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 50741C21E35; Wed, 16 May 2018 09:14:35 +0000 (UTC) Received: from mail-wr0-f196.google.com (mail-wr0-f196.google.com [209.85.128.196]) by lists.denx.de (Postfix) with ESMTPS id 4206CC21E2C for ; Wed, 16 May 2018 09:14:20 +0000 (UTC) Received: by mail-wr0-f196.google.com with SMTP id g21-v6so67002wrb.8 for ; Wed, 16 May 2018 02:14:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Ogd3ImVpnZjC/hIW47AwDRcrlaysPTA9SiKS6GKFQNw=; b=prckc7XGSLXl9bffoTFllmvpnTRCB6UPBHTLBfvVAfzXnc+/ykGnW/tTc1qdZ663ti g0YNr7nTdmgIUFn0f9Zm42mc+wbj6RdUFqZM2fxQ/3qSUaGufmQLdQfa1nwLqexsqmtc 7moI4Znf7TDxo1GE2Xk65099V8+lyT5Xo61az6LDqKDQA6xGIWV+koW3q3Zew1xZfa6a WxtnVnlraXHen8cGof+gbHq7UY6m8yPFj9YibIt6POusFgjeHYvxpnOnKNtGHsIlfElL miW/cXX1hQKYG4FDYPS2B3p7IALdzMcwrADYz/qNa85dLCtdHyEhQ+veMitCyyQovraL cRVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Ogd3ImVpnZjC/hIW47AwDRcrlaysPTA9SiKS6GKFQNw=; b=L9OzQJmv0q35sP0bm6uKM4TaCIpyxU99fdj6plNmY87nDQRHeB2Ojq2P8qVzyybqfw f4WKWY06iHqdhsvC6BLOYy9Nz/QM6CU/BUBmqReJosn8iiu2EJ36zwf5P6zFzVweUiEq vy+676YgxPh3G87p52tYBf5oTgO1adQ9EpDUPQEDHGjDm8hL1/uUFAmWm6pReMaEhpEC 7Tr+k9AZGIXJ7CSUBycsdiARwEdqhpecSjBh0bus0eM7lsuwLiCxocSM+/gVS4l7x9fT ceC+4fh+9ImN6Fd9ostzUe57E0LzBpU55N6zuFzf+tdICiv7ehffBvbBXRYg1zGPbhlt a6tg== X-Gm-Message-State: ALKqPwdGyi828Q8rp8RyRpABwDrIdFunosI9TBX6Hq4lLX70BS5CMTLz Vqxhn7mtcY0q6KoxJF6hGhI= X-Google-Smtp-Source: AB8JxZrE70/DeeCkmZIzQe822DFHqZp78F7DxQi36xMH1c99oX5RdbOa9AjevBK+l156jGuQ0i0Jew== X-Received: by 2002:adf:8672:: with SMTP id 47-v6mr74112wrw.102.1526462059946; Wed, 16 May 2018 02:14:19 -0700 (PDT) Received: from localhost.localdomain ([141.226.166.38]) by smtp.gmail.com with ESMTPSA id h12-v6sm1920655wmc.7.2018.05.16.02.14.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 16 May 2018 02:14:19 -0700 (PDT) From: Ramon Fried To: albert.u.boot@aribaud.net, mateusz.kulikowski@gmail.com, jramirez@baylibre.com, robdclark@gmail.com, sjg@chromium.org Date: Wed, 16 May 2018 12:13:42 +0300 Message-Id: <20180516091342.7509-7-ramon.fried@gmail.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180516091342.7509-1-ramon.fried@gmail.com> References: <20180516091342.7509-1-ramon.fried@gmail.com> Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH v2 7/7] serial: serial_msm: added pinmux & config 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" Serial port configuration was missing from previous implementation. It only worked because it was preconfigured by LK. This patch configures the uart for 115200 8N1. It also configures the pin mux for uart pins using DT bindings. Signed-off-by: Ramon Fried --- drivers/serial/serial_msm.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/drivers/serial/serial_msm.c b/drivers/serial/serial_msm.c index a4279accb4..c462394dbd 100644 --- a/drivers/serial/serial_msm.c +++ b/drivers/serial/serial_msm.c @@ -16,6 +16,7 @@ #include #include #include +#include /* Serial registers - this driver works in uartdm mode*/ @@ -25,6 +26,9 @@ #define UARTDM_RXFS 0x50 /* RX channel status register */ #define UARTDM_RXFS_BUF_SHIFT 0x7 /* Number of bytes in the packing buffer */ #define UARTDM_RXFS_BUF_MASK 0x7 +#define UARTDM_MR1 0x00 +#define UARTDM_MR2 0x04 +#define UARTDM_CSR 0xA0 #define UARTDM_SR 0xA4 /* Status register */ #define UARTDM_SR_RX_READY (1 << 0) /* Word is the receiver FIFO */ @@ -45,6 +49,10 @@ #define UARTDM_TF 0x100 /* UART Transmit FIFO register */ #define UARTDM_RF 0x140 /* UART Receive FIFO register */ +#define UART_DM_CLK_RX_TX_BIT_RATE 0xCC +#define MSM_BOOT_UART_DM_8_N_1_MODE 0x34 +#define MSM_BOOT_UART_DM_CMD_RESET_RX 0x10 +#define MSM_BOOT_UART_DM_CMD_RESET_TX 0x20 DECLARE_GLOBAL_DATA_PTR; @@ -179,6 +187,14 @@ static int msm_uart_clk_init(struct udevice *dev) return 0; } +static void uart_dm_init(struct msm_serial_data *priv) +{ + writel(UART_DM_CLK_RX_TX_BIT_RATE, priv->base + UARTDM_CSR); + writel(0x0, priv->base + UARTDM_MR1); + writel(MSM_BOOT_UART_DM_8_N_1_MODE, priv->base + UARTDM_MR2); + writel(MSM_BOOT_UART_DM_CMD_RESET_RX, priv->base + UARTDM_CR); + writel(MSM_BOOT_UART_DM_CMD_RESET_TX, priv->base + UARTDM_CR); +} static int msm_serial_probe(struct udevice *dev) { int ret; @@ -192,12 +208,8 @@ static int msm_serial_probe(struct udevice *dev) if (ret) return ret; - if (readl(priv->base + UARTDM_SR) & UARTDM_SR_UART_OVERRUN) - writel(UARTDM_CR_CMD_RESET_ERR, priv->base + UARTDM_CR); - - writel(0, priv->base + UARTDM_IMR); - writel(UARTDM_CR_CMD_STALE_EVENT_DISABLE, priv->base + UARTDM_CR); - msm_serial_fetch(dev); + pinctrl_select_state(dev, "uart"); + uart_dm_init(priv); return 0; }