Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp512485ybe; Wed, 18 Sep 2019 22:26:31 -0700 (PDT) X-Google-Smtp-Source: APXvYqwP1ISdu/JwQAK8gNSLpUf/uZM5vYI7aIRgyhKAdFv2N+V8mu2FXrhx9Dm6BB9/+KbOC2se X-Received: by 2002:a05:6402:14da:: with SMTP id f26mr14096236edx.165.1568870791712; Wed, 18 Sep 2019 22:26:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568870791; cv=none; d=google.com; s=arc-20160816; b=WSsZ2+ng5i0QhHYilNUytYVP/b3l92D76YXL4BeN1UJb/NxcNb5J4XOqli97UhB4C/ z0zYb8Mj1ZGftqIK539EidAf476rZgIqFD5hll+3mIGRPEzhj6+CP19+isEhSJbqZKPn qlNnyG7MEyBRgZZuW8DYt5Pb9QonnX/ABtv9KkrXyiHhIinGw29EDdB12yigq8q1NRaF 6pUkPmq7/pG9uXn/Qx20XZ4XyNVHU+sq/77xrQUnZJULnab/IBjIQnm8Hk5GIbzT6FvH NtSdrYYGTOOfMSUHzHowdkNM2bh9tjt+iP3UE+Isrgh4JaAbbQsR8nvhthUFJZU3ff5A GWRQ== 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=VBY2TI6sW6pflJ0u8FX5HSLEQmM9vGWsPIQFvfeaCg0=; b=dQrP0BALn9RUERcE8bS+tEZUnkGk9cmpsNM/hZqE4BQSMXkihzDT9D04vDmvIHvxhJ TEN8U8jkAhZeq5gvvnDkIdC1PN76Wnbt8MIsvAwprLT60O+42prGAPrS0qAPf/e6X8I9 WkhQIkJn2w/v6OAECM3CIwaCWTmGb38xNrciOkvPFbPt8BUAoz4EePANI/JZ5/tfCvzS 2uyvQQ03xGw+nC9uDaBU0jYYiqiCUHhqEL7IHYfhTFWwtSn+q+aGQ7I4TLKNzpBKiIqD y5GDeA5ZoGKHlpgGGHhCJSIz32OTcNweouSZNG8W40Xo1xoIWGUR/lc1Dbj6z1KjK6Uh fo+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=tvnklaXj; 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 oc20si2287688ejb.260.2019.09.18.22.26.08; Wed, 18 Sep 2019 22:26:31 -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=tvnklaXj; 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 S2387624AbfISCOo (ORCPT + 99 others); Wed, 18 Sep 2019 22:14:44 -0400 Received: from mail-oi1-f196.google.com ([209.85.167.196]:36158 "EHLO mail-oi1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730815AbfISCOn (ORCPT ); Wed, 18 Sep 2019 22:14:43 -0400 Received: by mail-oi1-f196.google.com with SMTP id k20so1417803oih.3; Wed, 18 Sep 2019 19:14:43 -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=VBY2TI6sW6pflJ0u8FX5HSLEQmM9vGWsPIQFvfeaCg0=; b=tvnklaXjNaHa33RKFV4OXLDIp1FMx55Ui99DXIXTmVOtzCUVmWMy6v1nlgEYcNkWu5 TLe0FO4yrqp5bUYF79iUDoKG2cHgtXljobj4Nh+l6f+6H85d1r119wyfspuhw3aqYG9d U3uWBTB9jQMKxzfxoZyrcmmpmiRil4HBLfsDyi4RD6Ca/zHnAgjhqvFHNBwNFDj/BXel fBB/RP4rsK8vnjF03qc8FKro0/9exEcAmuUmQtA3wJ/kp1+74AKs2E4fw5mx3nzQsWMA Do1c5sbBYvc7cAVrXnTVg3JIRH8oK0m+AtGxdM7+69eWAnFbeexHiT0sanPs4/3Bu7fb eizg== 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=VBY2TI6sW6pflJ0u8FX5HSLEQmM9vGWsPIQFvfeaCg0=; b=JQnUDu9VMk0HWJx61PMB+6UZwQbtbx80HmE4KqLo+Raj7k54e07P6dPyCoDCKnUn+Q 18fz5VPJ6tyCvRWDchxlZq+OArUTJwsFBYAGDxImZkdhl1OZbtsh1sOr31gajCis7mNt iy434rbuc1kS6U/CqsTHHqZJeT8QBI5SLJuUiTmpHo+NANoO3laREWRSP0OKBCFKgTQM RZtFTPqvSCMf2LnsTCHSVwrWmJVg5XL7YoAvC7e4rmRFYH4qLbathAM8N911BHk0Aqlh sTIP0bcm1oYDMqxAwHGLfuZYrJuWERx/1OF4t3BzduRUpkF+ieC5WXEzg48PUh5RKw+J E49A== X-Gm-Message-State: APjAAAXWZmm7j2JMknDGRHeaWrsWQsCwqvXztnuyZsUScoW/NOmogbpB b30/4rRy16Fhgo9cviNJFHJeJCk0gM8SIYwwMvQ= X-Received: by 2002:aca:4988:: with SMTP id w130mr654511oia.108.1568859282707; Wed, 18 Sep 2019 19:14:42 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: hhome liu Date: Thu, 19 Sep 2019 10:14:31 +0800 Message-ID: Subject: Re: [PATCH] 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=8818=E6= =97=A5=E5=91=A8=E4=B8=89 =E4=B8=8B=E5=8D=888:10=E5=86=99=E9=81=93=EF=BC=9A > > Hi Lanqing, > > On Wed, 18 Sep 2019 at 16:16, 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 > > --- > > drivers/tty/serial/sprd_serial.c | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd= _serial.c > > index 73d71a4..579ab41 100644 > > --- a/drivers/tty/serial/sprd_serial.c > > +++ b/drivers/tty/serial/sprd_serial.c > > @@ -911,6 +911,24 @@ static void sprd_pm(struct uart_port *port, unsign= ed int state, > > } > > } > > > > +#ifdef CONFIG_CONSOLE_POLL > > +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 > > When I tested your patch, I found only one case can work if the port > used by KGDB is same with the port selected as console, which means > this port will be powered on all the time. We had implemented the > power management for the UART ports, so I think you should enable the > clock for the port used by KGDB in poll_init(), then other ports can > be used by KGDB. > Yes, agree with you. I will add poll_init() support. Thanks for your comments. > > + > > static const struct uart_ops serial_sprd_ops =3D { > > .tx_empty =3D sprd_tx_empty, > > .get_mctrl =3D sprd_get_mctrl, > > @@ -928,6 +946,10 @@ 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_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