Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp6616713ybe; Wed, 18 Sep 2019 06:28:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqwyUIS5BupEHE5bmTkdvkPKx/XgPRth0CkfIBnAf7xmVH6G+YW6oNPb9caLHzFGJpDooumS X-Received: by 2002:a17:906:44b:: with SMTP id e11mr9531484eja.26.1568813283534; Wed, 18 Sep 2019 06:28:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568813283; cv=none; d=google.com; s=arc-20160816; b=wGdrxtP+P7OWSYwJ0+zaknqgHjmyVgk5cfrk0fONbuw8rThDU7CC+soK8dfeRWO4xZ OetcxfWsiPl7sYbPZsBaI+C6PRRxGbBrLih0j+tbqga5aGOWfGekra/1PCSIfrJJix9w NKeH57NbbOQadtPfJXhKHBNMGn64vFVQySCkyws8aqINZgyZbMe3DnQJj9jnl7YYUyFS UUReNua2Nt59u2gKDE715mf8Oj24YCrSTbXP8IkGQmX/ZPSPDM3Ywkbki5mAoloXnTjI yzUOy4lV7wjOXUf1Sqva+7YTtuhdu3GFDcN5AN4VyznrPTmSRAAq09ibCi0LYnFUhaiH v1ZA== 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=lgsq7iFzYE3p4qDNyeZTJM4NoqtMyN3PGzAwf47vS5Y=; b=Sj/2eES3Qptux9RMgE7MAg/HTGKoA2ffG9LxofqDXXx0lcbpjdMeIwvMpzdPctXRnu ixXiQ8ajnJOlLxR1IHr4x/jnVydvIqrqeTcgkWwYX7xMaIdWYGjtfZ+j7McZnj9/TRuq ruNXwSuZ23cLUBfBQyt4uQznvUHxYvFDB8i/75IK40nmYZpC50M/Ywgz7QapzVAbsmHu FVWKbRfIOvOByv8mi6iFsatghflr5J+w+u2xl1eXVNOBk/M50SncbRUoxOjK31zqjz2A Snr72NJM1apyiuGiChL7Yrqp77kYFgyW+VyblG13ljsEypaxwoHPdgw3g+sSyIevLyPN Cscg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=kll2SosY; 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 oy5si2824273ejb.170.2019.09.18.06.27.40; Wed, 18 Sep 2019 06:28:03 -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=kll2SosY; 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 S1730754AbfIRMK2 (ORCPT + 99 others); Wed, 18 Sep 2019 08:10:28 -0400 Received: from mail-lf1-f68.google.com ([209.85.167.68]:41830 "EHLO mail-lf1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727637AbfIRMK1 (ORCPT ); Wed, 18 Sep 2019 08:10:27 -0400 Received: by mail-lf1-f68.google.com with SMTP id r2so5491706lfn.8 for ; Wed, 18 Sep 2019 05:10:26 -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=lgsq7iFzYE3p4qDNyeZTJM4NoqtMyN3PGzAwf47vS5Y=; b=kll2SosYbc0+jOOjTIjs3nGzOgS353meTeCupvJ6SglAWgtWsbbUA5eVSM2H1IVJ17 MGYEJWeLcMfWEnV+V9ZocM6AJwn0t3zCoS/TZH8ko4Sbkg7JtH+VxD2v4Dn+mktaxos0 b78OYABpy7cExoY2lS6pVPRwDlTsVY2HmwGL9vkNSIXHaD+smxNe9UzrVJpftUwI72uv HnP5GT5NIMy7k2Swa1O0iIKObK61d1fBV60pHKZ/bxwRGdZe97x5yDOnx21vkjB0M5HD oYFEk4tlIIizwbfqM1dXcgSF8mrDF/uaJMRffm5TlIa1af5YPbqQ4GYBy/JEcb2rCjQM B5/A== 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=lgsq7iFzYE3p4qDNyeZTJM4NoqtMyN3PGzAwf47vS5Y=; b=eaLglMMrf10vtuCn8nQ91kkjYQMj22yaabR5npl3EhxcqYZ5e/FkQuzwUR9okMMzvn SmkbEzi94alGgJr5JsGl/MssojvZam9GtAAvjz4w3rwWJShRoh2uvyTQOKIznXXJg7Xu E242tFpqCGljetWTYjhB/hwr7r9qjX1+gI2wh5QOVtMzZN+jqyDGpwR8B3JJbAY2j+Mt gzChZhTm9DuxKAHqIT/SKkPz42D3Mzx5OZPgGcd+t2AFVgXJzjD7y58yfiRGgSOpKiX+ RQPGU+K/JRRH+cNJ8NR8lyMqKQxs/YlNcGH+5T2oFQGJprd48gmmUJ7oJ/ynVwHHerUZ KjxA== X-Gm-Message-State: APjAAAWyOUMMBqVOWJBtV+9XOi3Zge7yMh/gJ2ILQ5567TnsY2QUxm6I 1f112dJFqRR6o4ThqqpB0CZyAUF5Hpvkcy7+3gHEMQ== X-Received: by 2002:a19:3f47:: with SMTP id m68mr1934908lfa.108.1568808625711; Wed, 18 Sep 2019 05:10:25 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Baolin Wang Date: Wed, 18 Sep 2019 20:10:14 +0800 Message-ID: Subject: Re: [PATCH] serial: sprd: Add polling IO support To: Lanqing Liu Cc: Greg KH , Jiri Slaby , lanqing.liu@unisoc.com, 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 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 serial. > > 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, unsigned 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 ch) > +{ > + 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. > + > static const struct uart_ops serial_sprd_ops = { > .tx_empty = sprd_tx_empty, > .get_mctrl = sprd_get_mctrl, > @@ -928,6 +946,10 @@ 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_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