Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp522651ybe; Wed, 18 Sep 2019 22:40:16 -0700 (PDT) X-Google-Smtp-Source: APXvYqwpGt+p+OWFQ9zz2AsnxC5RkjoATNobIL0eOulSNnIBLKYSLfFzqEqCq4EjdVsJ7MxOtTAM X-Received: by 2002:aa7:dc57:: with SMTP id g23mr1378749edu.38.1568871616740; Wed, 18 Sep 2019 22:40:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568871616; cv=none; d=google.com; s=arc-20160816; b=dxPxKUGbsr+wsGyflLJQs7Iy3RVQhF4VJ16h1mO5+DZ2oncgVh8EQpFENGtZFh6Bfk oJJOuRtRbHHK19DDGpgpvgkmrQax8dnZ+yWLTgi2vRf4cwLbRwEFCV68n5BCc0r3BGVE HTDpV2Kcs3fed/GguVbPocwVxhRGYIItQ4xU4UsA9xE73oI0cNM/uCGbg6pgFvLpVnzG MMMQ7/E5Bj3xD61vyoGUUFQy7PCS5Y3U1ijzSJCFhzQHRBdN8WLJKF/J/cOL9WoBCXEm sXdlAM4hbev3SyjSxthX4YAh3ZyFOFPQDPpr9d/arez3CpEk/zbfG1yJ0Hv1d27HC+rr xOIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=XLXh4xNHALuOZK8dyA3iFHDzalrZl/6foxvzoKSQZJ4=; b=An2NOqB6nhMwZD0ePeC/+GQFQw8pTLr3OFgra0AmTH2NCLYOn23SpFKKELJSRFYycS 5LwVfo825G8WpUEPHSf5ZmBS6Bw6Ph4fUie8Bmxt3fYXc8cKc1ZE+C5w+tzpsRctb1w4 jwsWH7VjAFtR1P9SG6LRrgovF2qLaeuHoWhDk57N2YNWmWU0MrhAAVgnaYZNiV9i2n5+ WB7KUPrn/yDQxZ2VjhsPhNVoxRcSppvIocRVn+Sg+gIiqNfzQGck35O/DzTM36GmFNeR pVV2833VU8ptavTbQr4SAK2vzGSuQw1on3oK+DlJ3fPIcsq1P886NXDOB69E7NKepTnl rC1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=CQXGj3gb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q17si96387ejx.139.2019.09.18.22.39.52; Wed, 18 Sep 2019 22:40:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=CQXGj3gb; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731572AbfISDcd (ORCPT + 99 others); Wed, 18 Sep 2019 23:32:33 -0400 Received: from mail-ot1-f68.google.com ([209.85.210.68]:38420 "EHLO mail-ot1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731450AbfISDcc (ORCPT ); Wed, 18 Sep 2019 23:32:32 -0400 Received: by mail-ot1-f68.google.com with SMTP id e11so1822872otl.5; Wed, 18 Sep 2019 20:32:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=XLXh4xNHALuOZK8dyA3iFHDzalrZl/6foxvzoKSQZJ4=; b=CQXGj3gbHNXcqcdjIR6t+AnhuRdTrZKzzV1RhBswUgSyDaDBF7OpsnVVvfOUIXFkFf Mh/pojzQL06QOpPq32HupO8Unptfx/1TkVDfwtg3jfMuKBiq6B1S7PI8/ZJPquhWVHm9 w0HUlQ6E/leKOgx7hdiajTvn23bosTNqVvVbKe6n4W0ej6PWPmjuxgoScyLV+Z1n2pKq k0UZtrPN7luNRscaLFz80HOqzZEtS2y/NsS0ZGggTN3q5h/+7BLNKZwsTXn0voARb5Xh O0gzkE9b6icjMDoAt+lodF2acv5nc7yc/MxSp1Zp7Ap0yt7sNqXlb3vm2fsaORKIphd4 r6TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=XLXh4xNHALuOZK8dyA3iFHDzalrZl/6foxvzoKSQZJ4=; b=J5R7Vj97QvIPuFO7lLJ/Mt/sor0CoCLn3fUiBlS8WBSVTl6lLRSkYoi9Sp+3acPMqa XqDip66vYDOWEt1s0PshIdHZC8T0gQZ8FVW9tyHjKVaLwWhaXwRO8g86N6i2iQueOhkS nqK5+B2SWOqrxwfUNgbSpJaLwNCPbYatpL0h/UgETE+P23IpTaCiEeed52Rs08Kekcil 5hcqsbG15PtjfztYsaMzl1baVr46fMG4vEukBKBspdvwzgQzAI2TE1RbjoWrfRrLoo5/ PyS5YTFLpI1fTOHSC1ibnA7YEsQMQJk6ueV1CcNOOV+gpukGHMw2LNgM1ODY1OyAXuq+ IzWw== X-Gm-Message-State: APjAAAXCAk+tIOc9vO0XPrkbxT0D8WhdIBtfv5OqMNoPGpV6QjV0SU4Y Lzgos2I6EBU78in0Xrff3Zxp/VP6HerLDSq9sCE= X-Received: by 2002:a05:6830:1258:: with SMTP id s24mr5023325otp.313.1568863950244; Wed, 18 Sep 2019 20:32:30 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: hhome liu Date: Thu, 19 Sep 2019 11:32:19 +0800 Message-ID: Subject: Re: [PATCH v2] serial: sprd: Add polling IO support To: Baolin Wang Cc: Greg KH , Jiri Slaby , =?UTF-8?B?5YiY5bKa5riFIChMYW5xaW5nIExpdSk=?= , linux-serial@vger.kernel.org, LKML , Orson Zhai , Chunyan Zhang Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Baolin Wang =E4=BA=8E2019=E5=B9=B49=E6=9C=8819=E6= =97=A5=E5=91=A8=E5=9B=9B =E4=B8=8A=E5=8D=8811:21=E5=86=99=E9=81=93=EF=BC=9A > > Hi, > > On Thu, 19 Sep 2019 at 11:10, Lanqing Liu wrote: > > > > In order to access the UART without the interrupts, the kernel uses > > the basic polling methods for IO with the device. With these methods > > implemented, it is now possible to enable kgdb during early boot over s= erial. > > > > Signed-off-by: Lanqing Liu > > --- > > Change from v1: > > - Add poll_init() support. > > Looks good to me and the KGDB can work well on my board, so feel free > to add my tags: > Reviewed-by: Baolin Wang > Tested-by: Baolin Wang > ok, thanks > > --- > > drivers/tty/serial/sprd_serial.c | 33 ++++++++++++++++++++++++++++++++= + > > 1 file changed, 33 insertions(+) > > > > diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd= _serial.c > > index 73d71a4..d833160 100644 > > --- a/drivers/tty/serial/sprd_serial.c > > +++ b/drivers/tty/serial/sprd_serial.c > > @@ -911,6 +911,34 @@ static void sprd_pm(struct uart_port *port, unsign= ed int state, > > } > > } > > > > +#ifdef CONFIG_CONSOLE_POLL > > +static int sprd_poll_init(struct uart_port *port) > > +{ > > + if (port->state->pm_state !=3D UART_PM_STATE_ON) { > > + sprd_pm(port, UART_PM_STATE_ON, 0); > > + port->state->pm_state =3D UART_PM_STATE_ON; > > + } > > + > > + return 0; > > +} > > + > > +static int sprd_poll_get_char(struct uart_port *port) > > +{ > > + while (!(serial_in(port, SPRD_STS1) & SPRD_RX_FIFO_CNT_MASK)) > > + cpu_relax(); > > + > > + return serial_in(port, SPRD_RXD); > > +} > > + > > +static void sprd_poll_put_char(struct uart_port *port, unsigned char c= h) > > +{ > > + while (serial_in(port, SPRD_STS1) & SPRD_TX_FIFO_CNT_MASK) > > + cpu_relax(); > > + > > + serial_out(port, SPRD_TXD, ch); > > +} > > +#endif > > + > > static const struct uart_ops serial_sprd_ops =3D { > > .tx_empty =3D sprd_tx_empty, > > .get_mctrl =3D sprd_get_mctrl, > > @@ -928,6 +956,11 @@ static void sprd_pm(struct uart_port *port, unsign= ed int state, > > .config_port =3D sprd_config_port, > > .verify_port =3D sprd_verify_port, > > .pm =3D sprd_pm, > > +#ifdef CONFIG_CONSOLE_POLL > > + .poll_init =3D sprd_poll_init, > > + .poll_get_char =3D sprd_poll_get_char, > > + .poll_put_char =3D sprd_poll_put_char, > > +#endif > > }; > > > > #ifdef CONFIG_SERIAL_SPRD_CONSOLE > > -- > > 1.9.1 > > > > > -- > Baolin Wang > Best Regards