From patchwork Sat May 12 10:15:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramon Fried X-Patchwork-Id: 912408 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="XPu7y63R"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 40jjdF0g6rz9rxs for ; Sat, 12 May 2018 20:20:01 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id BE71DC223E8; Sat, 12 May 2018 10:18:53 +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_H3, RCVD_IN_MSPIKE_WL, 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 762C9C22410; Sat, 12 May 2018 10:17:00 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 15C6FC2245B; Sat, 12 May 2018 10:16:36 +0000 (UTC) Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by lists.denx.de (Postfix) with ESMTPS id E208FC2242A for ; Sat, 12 May 2018 10:16:31 +0000 (UTC) Received: by mail-wm0-f66.google.com with SMTP id x12-v6so5687205wmc.0 for ; Sat, 12 May 2018 03:16:31 -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=QGxFHnlRFEeFUIdydJBhS7pxXgB3+iLF0lm1+HvlHd4=; b=XPu7y63R6oL5PCh0ICP1z+OYdtN7W8KhlneOcSYqki0WBLpv9dIxu3ocyAYJ/UGQvI fMd+UBnmJ/YQX8JEdMDCczTfJgQFvkiy5rhroE5EP7UeR+FyU1Hsp3EEupawYlxiTWPe m3sa/28KjU6m8mqrZSkSE3KCchvpfbuWs4Lpy8/dIEBAwC1Gagb1XpFGJ1n8MgtiE7v8 Ai8GQOlLTC96wh0C3UudC6EHbrSefrJtgUTkWxEL3bR62/vfbwCcqhUm7ZP2cNu5aek1 oFscFZXAXZ+wfB3Qx3Hxb2EleCRiNVOxl/zvH5l6je5Af3gE2SUr93Y1LPwDqmYSKHWG zHhw== 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=QGxFHnlRFEeFUIdydJBhS7pxXgB3+iLF0lm1+HvlHd4=; b=BaBE9m7SC0ENliAsFh3jpVeKPa191XeEtLCEeeaDo72EQFsp39BBYIIJPXgdwha2Ch 5goGSQbNbdW9dpv1GXjx1cBGZHJWlVcT2+wERwE4xo4VhV9igfwlRgBlGTJthOR5Vb2E +HmUYzo0TJSQtShTFHFllSuJR+AzvZ9Ya10sQNWFUFsYo6b8OguYr/9/357PWaxp+zdE ndTjhGh+D9Y/pRm9mzkJqebEeRKgz1zA6o5l7TP3b1/30eBMevP5gAkwQrZU4ndvL+hr pr4Bhg2oVe33o8tyutzlj4VsIi3rUonK2Xa0WGQZkKwbkzn8b0SRa2BNsdD4+3aW8pF5 13xQ== X-Gm-Message-State: ALKqPwdcl1Ivs0ARqmaShn2R0OieVOeEX68Z9o6ohg1kmX9aE2XhvwGR Z75bbcIyDswtoPQxE4U/gh7M8MK8Uh4= X-Google-Smtp-Source: AB8JxZqf2PqNiL1xMWrjnplgYgb7t1Q8fEmzzYYTiCJ2UzWaCDgesxQsDicTHjHXIn9ZKT8/xAlaqA== X-Received: by 2002:a1c:4ad9:: with SMTP id n86-v6mr1133493wmi.0.1526120191565; Sat, 12 May 2018 03:16:31 -0700 (PDT) Received: from localhost.localdomain ([141.226.166.38]) by smtp.gmail.com with ESMTPSA id h67-v6sm2881280wmg.41.2018.05.12.03.16.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 12 May 2018 03:16:30 -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: Sat, 12 May 2018 13:15:58 +0300 Message-Id: <20180512101558.24375-8-ramon.fried@gmail.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180512101558.24375-1-ramon.fried@gmail.com> References: <20180512101558.24375-1-ramon.fried@gmail.com> Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH 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 Reviewed-by: Simon Glass --- 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 22301c0e37..4a0a2cc450 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) { struct msm_serial_data *priv = dev_get_priv(dev); @@ -190,12 +206,8 @@ static int msm_serial_probe(struct udevice *dev) if (msm_uart_clk_init(dev)) return -EINVAL; - 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; }