Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp1153270ybb; Wed, 25 Mar 2020 17:06:01 -0700 (PDT) X-Google-Smtp-Source: ADFU+vschRyqevrkkCQsXR9uRvOrX1C7rnGiFcXrsiriBtyf0EdQ/WAMwynQAQdGMKOTAuvN28gU X-Received: by 2002:a9d:a68:: with SMTP id 95mr4177532otg.87.1585181161573; Wed, 25 Mar 2020 17:06:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585181161; cv=none; d=google.com; s=arc-20160816; b=rSYRDRaxIqYM8wECt1pntDuZUP1G6V5fqhZMBj/rMigfuqN/BC8U71G+2YCAziRlwl zqQMRpoY2wnc1aPiS9cA6CZgcW4FR/b3RmFXSnRUOAiEdNXiHfj1W7GSENGbrrzfMmWT adRGZfiFGca8hzVoOBfRH+IZzecHto54N8o4FhxiwzFyiNZZ5T4uSyh5BwjNjpI9O4fI ECQWJ6G+sGUQYPxxGeX3NPIrP9RQ33Vz325SeSgGJBBL2exPpALajm7MJz40T+U56ers H9RuCbZPSvBrMthWjo2kCnFTxcUnFFI8RM4g7UAp+xkTUQJENxzT8SJTkmnniYcbhTxr EM/g== 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:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=JSEmaUGoHJdLyWIp3gPa+QG0g2MKGk1eYUB2W48P7zM=; b=KI0v64R3b/BW1r6uuemGOmF3tvWcQpihGxJUumgN5FVyuLWJaDBGcw5tls4fgQjVzK J9QzFd5HKk90hjW2Q3KDPfbCrp2mjVIKkhwuUSeqfY+dHcWUJU28vVNo6ABRjRI8Fi5T pYRKp3wJhWx67QJOBz0IZfH/f5+zjsEDoPkg/P5KflZZfIds5xkfFddtaErqF7+SOuUj 3L4X1gkwDDD8dFYT44Cevf5PoqTerrmFvbsI4/ODB3L4OIN9o2H6WGIqNERiZyJbgBjn yaeOIMM1GyjE/oJNINQm8w48xvrSLmLKZZHbSBNH6f6d8sJQFkX6/kWGfkNrV6539qJC V0FA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l131si279420oih.10.2020.03.25.17.05.48; Wed, 25 Mar 2020 17:06:01 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727574AbgCZAFZ convert rfc822-to-8bit (ORCPT + 99 others); Wed, 25 Mar 2020 20:05:25 -0400 Received: from gloria.sntech.de ([185.11.138.130]:40446 "EHLO gloria.sntech.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727530AbgCZAFZ (ORCPT ); Wed, 25 Mar 2020 20:05:25 -0400 Received: from ip5f5a5d2f.dynamic.kabel-deutschland.de ([95.90.93.47] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1jHG1N-00087A-Lp; Thu, 26 Mar 2020 01:05:17 +0100 From: Heiko =?ISO-8859-1?Q?St=FCbner?= To: Giulio Benetti Cc: gregkh@linuxfoundation.org, jslaby@suse.com, andriy.shevchenko@linux.intel.com, matwey.kornilov@gmail.com, linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org, lukas@wunner.de, christoph.muellner@theobroma-systems.com Subject: Re: [PATCH v2 4/7] serial: 8250: Handle implementations not having TEMT interrupt using em485 Date: Thu, 26 Mar 2020 01:05:17 +0100 Message-ID: <12195570.sTQbgxCmNy@diego> In-Reply-To: <3a5df648-b054-3338-f7a4-4c01783eabf6@micronovasrl.com> References: <20200325231422.1502366-1-heiko@sntech.de> <20200325231422.1502366-5-heiko@sntech.de> <3a5df648-b054-3338-f7a4-4c01783eabf6@micronovasrl.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8BIT Content-Type: text/plain; charset="iso-8859-1" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Giulio, Am Donnerstag, 26. M?rz 2020, 00:47:38 CET schrieb Giulio Benetti: > very cleaner way to handle TEMT as a capability! > And I've found one thing... > > Il 26/03/2020 00:14, Heiko Stuebner ha scritto: > > From: Giulio Benetti > > > > Some 8250 ports have a TEMT interrupt but it's not a part of the 8250 > > standard, instead only available on some implementations. > > > > The current em485 implementation does not work on ports without it. > > The only chance to make it work is to loop-read on LSR register. > > > > So add UART_CAP_TEMT to mark 8250 uarts having this interrupt, > > update all current em485 users with that capability and make > > the stop_tx function loop-read on uarts not having it. > > > > Signed-off-by: Giulio Benetti > > [moved to use added UART_CAP_TEMT, use readx_poll_timeout] > > Signed-off-by: Heiko Stuebner > > --- > > drivers/tty/serial/8250/8250.h | 1 + > > drivers/tty/serial/8250/8250_bcm2835aux.c | 2 +- > > drivers/tty/serial/8250/8250_of.c | 2 ++ > > drivers/tty/serial/8250/8250_omap.c | 2 +- > > drivers/tty/serial/8250/8250_port.c | 25 +++++++++++++++++++---- > > 5 files changed, 26 insertions(+), 6 deletions(-) > > > > diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h > > index 52bb21205bb6..770eb00db497 100644 > > --- a/drivers/tty/serial/8250/8250.h > > +++ b/drivers/tty/serial/8250/8250.h > > @@ -82,6 +82,7 @@ struct serial8250_config { > > #define UART_CAP_MINI (1 << 17) /* Mini UART on BCM283X family lacks: > > * STOP PARITY EPAR SPAR WLEN5 WLEN6 > > */ > > +#define UART_CAP_TEMT (1 << 18) /* UART has TEMT interrupt */ > > > > #define UART_BUG_QUOT (1 << 0) /* UART has buggy quot LSB */ > > #define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */ > > diff --git a/drivers/tty/serial/8250/8250_bcm2835aux.c b/drivers/tty/serial/8250/8250_bcm2835aux.c > > index 12d03e678295..3881242424ca 100644 > > --- a/drivers/tty/serial/8250/8250_bcm2835aux.c > > +++ b/drivers/tty/serial/8250/8250_bcm2835aux.c > > @@ -91,7 +91,7 @@ static int bcm2835aux_serial_probe(struct platform_device *pdev) > > return -ENOMEM; > > > > /* initialize data */ > > - up.capabilities = UART_CAP_FIFO | UART_CAP_MINI; > > + up.capabilities = UART_CAP_FIFO | UART_CAP_MINI | UART_CAP_TEMT; > > up.port.dev = &pdev->dev; > > up.port.regshift = 2; > > up.port.type = PORT_16550; > > diff --git a/drivers/tty/serial/8250/8250_of.c b/drivers/tty/serial/8250/8250_of.c > > index 65e9045dafe6..841f6fcb2878 100644 > > --- a/drivers/tty/serial/8250/8250_of.c > > +++ b/drivers/tty/serial/8250/8250_of.c > > @@ -225,6 +225,8 @@ static int of_platform_serial_probe(struct platform_device *ofdev) > > &port8250.overrun_backoff_time_ms) != 0) > > port8250.overrun_backoff_time_ms = 0; > > > > + port8250.capabilities |= UART_CAP_TEMT; > > + > > Shouldn't this be NOT UART_CAP_TEMT set by default? On all other > vendor specific files you enable it, I think here you shouldn't enable > it too by default. Right? 8250_of does use the em485 emulation - see of_platform_serial_setup() So I did go by the lazy assumption that any 8250 driver using rs485 before my series always used the interrupt driver code path, so implicitly required to have the TEMT interrupt. Of course, you're right that with the 8250_of maybe not all variants actually do have this interrupt, so falling back to the polling here might be safer. Heiko