Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp522890ybe; Wed, 18 Sep 2019 22:40:34 -0700 (PDT) X-Google-Smtp-Source: APXvYqxzopgNgNFUnCx/NWwJCAlMS9ns07OCcQ144lbzcowWzvfc3gX9P0ix4KGThLNWK5zzmcke X-Received: by 2002:a50:c351:: with SMTP id q17mr14228966edb.123.1568871634771; Wed, 18 Sep 2019 22:40:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568871634; cv=none; d=google.com; s=arc-20160816; b=UO+49jsF+6WZpHvvb3cU/84WCsjPTZKynkr+7efsL3P6MNVRZZOGF+POjDESpYrJN7 zYdMoLV/Ayh5KGuZkiBAFUDsj7IyfQ9QK0SQVxV/VLkkJu4lqV8ihVy2WYl84YPjIlZe WFm/rzouyXZMeQYtvk50p1R6Z6pr8WOFpMeSekAztZDWHbVLvq6kdk9CfaYmDU0xkS9p sHGTWkv0m7EwWkWCPk4bmqmym2J+XlYNMa4XbF3tTQCdJGeB3gjlcEt21lfuXBfOxgX4 e0B2y2u/8kRySZa94VsRGtBLYH/GS70gtVRcM7pggnGlrEhmi6j5JNGm6GWt1INL5Uc2 ozHQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=SheHqmoXK4AdV5+vGmfATk2h64jzJnZ57gWh81c0NIc=; b=rU0Kj3FSzWOdRvA5pCkeF9q0fBPmKGwivWmWmaGrT4OL5MgmrScc4LiNEqF9EJSmz5 fUSIwyxqPhsHHztTQ1DA4fZxAdFiAo+bMyeHtQY22tTgmpO49U7VobtXQPc/IiGYWExG klXKnHiKII+JLsws3FfjUcORHYenw905NtWNz61goL0iopJ8rOpv6N1auolWRwydFpR8 nmg2akZhUL9eOXO0TEHsaUW2sqX6hIO94P++RC6Wa2WuFtGKr6hdexIZD65RbENwtN+I p6MTM+16M+ObBkOjJM6QxfiATy2dbmW1KLUm+CnbsuaJhb5VOAgcalCQHcgrTYGYDMhe G7fg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gCrPP6Fi; 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=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b15si645423ejd.66.2019.09.18.22.40.11; Wed, 18 Sep 2019 22:40:34 -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=@linaro.org header.s=google header.b=gCrPP6Fi; 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=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731149AbfISDVY (ORCPT + 99 others); Wed, 18 Sep 2019 23:21:24 -0400 Received: from mail-lj1-f194.google.com ([209.85.208.194]:46114 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727165AbfISDVY (ORCPT ); Wed, 18 Sep 2019 23:21:24 -0400 Received: by mail-lj1-f194.google.com with SMTP id e17so1956788ljf.13 for ; Wed, 18 Sep 2019 20:21:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=SheHqmoXK4AdV5+vGmfATk2h64jzJnZ57gWh81c0NIc=; b=gCrPP6Fi5BklCd9AKcjCVM7EBrpNx5SlsnmQGIp1P5koL0rb9UcNwK95nWP1y0/6Oe qCcJr79PsfvUx5xaitoNXSEKiHAATB1qAh0Gc4uJokW5rTvyUoZO9P4GawTXM/hZfLaq ZQc8Nj0W01J1XuW8r3GTpNuzaCvW9bHbIxJUla/9EiXQcRAR+Icg6269/UNb867+Yh/Y UXaesxXt5gVDY1UlscuveA7VExQGe+zCSXkhWe89LsHIvffVmklgoi6VS7MG5yHgzgJ4 fk3l6hG5SwOIixgVGxxZleSPcMiAJTMFwQgYlXVYl4OS7ZeURWZFXKcS7Hy0mBxxfYzN FooQ== 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; bh=SheHqmoXK4AdV5+vGmfATk2h64jzJnZ57gWh81c0NIc=; b=Zc0ivFTMYvhRRi1bHDgZYuPocmJw7/Whw48E9GUnknOU5UsTDjtJ/1iZWu8grgGsoS vuMUtsFjGDsE4c9U4O/oetdZcmv3poLKIGS5rxpBvFWojiCt+tko249yQoEhzueSDmzr ig3Khl7MlqjGcvppwEZ9+lftSlxFYy7G25OJtqG4NpEvOWCiwM3EtS2Vh5IXsZBBC3eE 73+SdHceUChi1es91jr5GzVMfMAd2TirP/klhHYkrPc6TyYsYBpz6+hmIQ7ZpVR0i8Cz UHVKKcHwEbGzUl8dDDmg33tw4fRIxiWO7MQ6phP7zSWP1RJrcKoE4QQMb+2/K4NlTRWp tq2A== X-Gm-Message-State: APjAAAVlKkHJP6bNCONI2uFP2W0Orzr4Kvc0+N3cV+Tfik+mD78WDtP4 i0r111UrrMnMxtIHX2LSsYbrm3+9vg64026v8lqaTw== X-Received: by 2002:a2e:9b4f:: with SMTP id o15mr4034070ljj.142.1568863282258; Wed, 18 Sep 2019 20:21:22 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Baolin Wang Date: Thu, 19 Sep 2019 11:21:07 +0800 Message-ID: Subject: Re: [PATCH v2] serial: sprd: Add polling IO support To: Lanqing Liu 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" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 serial. > > 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 > --- > 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, unsigned int state, > } > } > > +#ifdef CONFIG_CONSOLE_POLL > +static int sprd_poll_init(struct uart_port *port) > +{ > + if (port->state->pm_state != UART_PM_STATE_ON) { > + sprd_pm(port, UART_PM_STATE_ON, 0); > + port->state->pm_state = 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 ch) > +{ > + 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 = { > .tx_empty = sprd_tx_empty, > .get_mctrl = sprd_get_mctrl, > @@ -928,6 +956,11 @@ static void sprd_pm(struct uart_port *port, unsigned int state, > .config_port = sprd_config_port, > .verify_port = sprd_verify_port, > .pm = sprd_pm, > +#ifdef CONFIG_CONSOLE_POLL > + .poll_init = sprd_poll_init, > + .poll_get_char = sprd_poll_get_char, > + .poll_put_char = sprd_poll_put_char, > +#endif > }; > > #ifdef CONFIG_SERIAL_SPRD_CONSOLE > -- > 1.9.1 > -- Baolin Wang Best Regards