From owner-svn-src-all@freebsd.org Thu Jan 18 17:43:34 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 247CBEB91A6; Thu, 18 Jan 2018 17:43:34 +0000 (UTC) (envelope-from br@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D8F8578AA2; Thu, 18 Jan 2018 17:43:33 +0000 (UTC) (envelope-from br@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2270E21CD9; Thu, 18 Jan 2018 17:43:33 +0000 (UTC) (envelope-from br@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w0IHhX49012585; Thu, 18 Jan 2018 17:43:33 GMT (envelope-from br@FreeBSD.org) Received: (from br@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w0IHhWo7012583; Thu, 18 Jan 2018 17:43:32 GMT (envelope-from br@FreeBSD.org) Message-Id: <201801181743.w0IHhWo7012583@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: br set sender to br@FreeBSD.org using -f From: Ruslan Bukin Date: Thu, 18 Jan 2018 17:43:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r328132 - head/sys/dev/uart X-SVN-Group: head X-SVN-Commit-Author: br X-SVN-Commit-Paths: head/sys/dev/uart X-SVN-Commit-Revision: 328132 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jan 2018 17:43:34 -0000 Author: br Date: Thu Jan 18 17:43:32 2018 New Revision: 328132 URL: https://svnweb.freebsd.org/changeset/base/328132 Log: Support for UART device found in Qualcomm Snapdragon 410E SoC. Tested on DragonBoard 410c. Reviewed by: andrew Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D13972 Modified: head/sys/dev/uart/uart_dev_msm.c head/sys/dev/uart/uart_dev_msm.h Modified: head/sys/dev/uart/uart_dev_msm.c ============================================================================== --- head/sys/dev/uart/uart_dev_msm.c Thu Jan 18 16:22:05 2018 (r328131) +++ head/sys/dev/uart/uart_dev_msm.c Thu Jan 18 17:43:32 2018 (r328132) @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include @@ -122,9 +121,6 @@ msm_uart_param(struct uart_bas *bas, int baudrate, int return (EINVAL); } uart_setreg(bas, UART_DM_MR2, ulcon); - - /* Set 115200 for both TX and RX. */ - uart_setreg(bas, UART_DM_CSR, UART_DM_CSR_115200); uart_barrier(bas); return (0); @@ -143,6 +139,8 @@ static int msm_probe(struct uart_bas *bas) { + bas->regiowidth = 4; + return (0); } @@ -202,8 +200,7 @@ msm_init(struct uart_bas *bas, int baudrate, int datab SETREG(bas, UART_DM_CR, UART_DM_RESET_STALE_INT); /* Enable/Disable Rx/Tx DM interfaces */ - /* Disable Data Mover for now. */ - uart_setreg(bas, UART_DM_DMEN, 0x0); + uart_setreg(bas, UART_DM_DMEN, UART_DM_DMEN_RX_SC_ENABLE); /* Enable transmitter and receiver */ uart_setreg(bas, UART_DM_CR, UART_DM_CR_RX_ENABLE); @@ -239,6 +236,7 @@ msm_putc(struct uart_bas *bas, int c) while ((uart_getreg(bas, UART_DM_ISR) & UART_DM_TX_READY) == 0 && --limit) DELAY(4); + SETREG(bas, UART_DM_CR, UART_DM_CLEAR_TX_READY); } /* FIFO is ready, write number of characters to be written */ uart_setreg(bas, UART_DM_NO_CHARS_FOR_TX, 1); @@ -324,7 +322,11 @@ static kobj_method_t msm_methods[] = { int msm_bus_probe(struct uart_softc *sc) { + struct uart_bas *bas; + bas = &sc->sc_bas; + bas->regiowidth = 4; + sc->sc_txfifosz = 64; sc->sc_rxfifosz = 64; @@ -570,7 +572,8 @@ static struct uart_class uart_msm_class = { }; static struct ofw_compat_data compat_data[] = { - {"qcom,msm-uartdm", (uintptr_t)&uart_msm_class}, - {NULL, (uintptr_t)NULL}, + {"qcom,msm-uartdm-v1.4", (uintptr_t)&uart_msm_class}, + {"qcom,msm-uartdm", (uintptr_t)&uart_msm_class}, + {NULL, (uintptr_t)NULL}, }; UART_FDT_CLASS_AND_DEVICE(compat_data); Modified: head/sys/dev/uart/uart_dev_msm.h ============================================================================== --- head/sys/dev/uart/uart_dev_msm.h Thu Jan 18 16:22:05 2018 (r328131) +++ head/sys/dev/uart/uart_dev_msm.h Thu Jan 18 17:43:32 2018 (r328132) @@ -177,6 +177,11 @@ enum UART_DM_BITS_PER_CHAR { /* UART Data Mover Enable Register */ #define UART_DM_DMEN 0x3c +/* + * Single-Character mode for RX channel (every character received + * is zero-padded into a word). + */ +#define UART_DM_DMEN_RX_SC_ENABLE (1 << 5) /* Number of characters for Transmission */ #define UART_DM_NO_CHARS_FOR_TX 0x40