From patchwork Tue Jan 27 04:50:09 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Rob Herring (Arm)" X-Patchwork-Id: 5714431 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 876899F1D6 for ; Tue, 27 Jan 2015 04:53:01 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B568C201BB for ; Tue, 27 Jan 2015 04:53:00 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id ED1B9201B9 for ; Tue, 27 Jan 2015 04:52:59 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1YFy7d-0006gy-WF; Tue, 27 Jan 2015 04:51:30 +0000 Received: from mail-oi0-x22e.google.com ([2607:f8b0:4003:c06::22e]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1YFy7N-0006b0-Ol for linux-arm-kernel@lists.infradead.org; Tue, 27 Jan 2015 04:51:14 +0000 Received: by mail-oi0-f46.google.com with SMTP id a141so10759048oig.5 for ; Mon, 26 Jan 2015 20:50:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=SkE1URcX1Zv4IE3fh7w54coFiFgGSU+6bm+bBYktLIo=; b=sTFvDK1lI4PJdkw/zqlhM159YjTfqkWNlijlTHGRrfIVMjrPjSHLn0EFKPhsh0ydKy C6pLcuhKUDFOeMI5Z3uwgZ+d25ag71mB6CMir56rv3+OCzwrauAhitsAi24IqYeKC1ER F5iiSUpIe12uPSlQfvDX6J15kwVWaPoB/up+/oq1myRs5qkAzB4ZyFVP0Lne1fB2JmHm lIStWLseJijGCgJByr7SKD09LqY1MfWZXJq8jYO74MZg2TboYORnNtGUXFiYE83I3CMm 3tsglFqtHfQRVAy0zRZfsyFMkmB6xLGDQLZKtb2xxFN+ehsa6t52EAPCvE2woOOyttp3 aSng== X-Received: by 10.182.126.74 with SMTP id mw10mr14885097obb.57.1422334252455; Mon, 26 Jan 2015 20:50:52 -0800 (PST) Received: from rob-laptop.herring.priv (72-48-98-129.dyn.grandenetworks.net. [72.48.98.129]) by mx.google.com with ESMTPSA id v187sm109780oie.2.2015.01.26.20.50.51 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 26 Jan 2015 20:50:51 -0800 (PST) From: Rob Herring To: linux-serial@vger.kernel.org Subject: [PATCH 3/3] tty/serial: 8250_early: Add support for PXA UARTs Date: Mon, 26 Jan 2015 22:50:09 -0600 Message-Id: <1422334209-23125-3-git-send-email-robh@kernel.org> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1422334209-23125-1-git-send-email-robh@kernel.org> References: <1422334209-23125-1-git-send-email-robh@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20150126_205113_851406_BFDC7F75 X-CRM114-Status: GOOD ( 12.74 ) X-Spam-Score: -0.4 (/) Cc: Rob Herring , Jiri Slaby , linux-arm-kernel@lists.infradead.org, Greg Kroah-Hartman X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The PXA variant of the 8250 UART adds a UART enable bit which must not be cleared. Make the earlycon support maintain this bit if it is set. This implies some initialization of the UART, but we cannot unconditionally set the bit as some other variants require this bit to be clear for other functions. Signed-off-by: Rob Herring Cc: Greg Kroah-Hartman Cc: Jiri Slaby Cc: linux-serial@vger.kernel.org --- drivers/tty/serial/8250/8250_early.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/tty/serial/8250/8250_early.c b/drivers/tty/serial/8250/8250_early.c index ce2a8ab..c31a22b 100644 --- a/drivers/tty/serial/8250/8250_early.c +++ b/drivers/tty/serial/8250/8250_early.c @@ -93,10 +93,10 @@ static void __init early_serial8250_write(struct console *console, struct uart_port *port = &early_device->port; unsigned int ier; - /* Save the IER and disable interrupts */ + /* Save the IER and disable interrupts preserving the UUE bit */ ier = serial8250_early_in(port, UART_IER); if (ier) - serial8250_early_out(port, UART_IER, 0); + serial8250_early_out(port, UART_IER, ier & UART_IER_UUE); uart_console_write(port, s, count, serial_putc); @@ -127,9 +127,11 @@ static void __init init_port(struct earlycon_device *device) struct uart_port *port = &device->port; unsigned int divisor; unsigned char c; + unsigned int ier; serial8250_early_out(port, UART_LCR, 0x3); /* 8n1 */ - serial8250_early_out(port, UART_IER, 0); /* no interrupt */ + ier = serial8250_early_in(port, UART_IER); + serial8250_early_out(port, UART_IER, ier & UART_IER_UUE); /* no interrupt */ serial8250_early_out(port, UART_FCR, 0); /* no fifo */ serial8250_early_out(port, UART_MCR, 0x3); /* DTR + RTS */