Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp897435imm; Wed, 6 Jun 2018 07:32:57 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJvoo086RnsMo4ybD66wibTOpPoDru3HxQPHR4rGxnrgUJJhH5AlFDn0KGCofvgoWIYYQBE X-Received: by 2002:a17:902:5a3:: with SMTP id f32-v6mr3521959plf.109.1528295577699; Wed, 06 Jun 2018 07:32:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528295577; cv=none; d=google.com; s=arc-20160816; b=DUwhlWplUGKnR+eZfTwAiontWaBq43FunqNCs8qAiFoHn/uVXGQmh/sWaAU8gkMWzH 9b0HObokCHIr5vWh4Xwc6zjpn8iwbEzUHFksvu17zhZRMiQwdbgoike169U/RVD2dQbp jMo/IJCSpAhT3ovo4eq85hcMsMVlJ8+bNWoKBszzPXNSdDynDE8Wc6dBwZwzXnaOC9dt l6o5fg1W2LkQAnj7SjrRW7ldDSUCVnEZiKzYKoL5qZvM6RQfO7kTSt1MfzFcd85pP7Ka iyVIEIGOlBIfuBMHmzLH10vpiZtDpMu2h7tFE1neJZBftEk6lgAgbXsRKTWCmnjzHdHi YTtA== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=LqUy4uEEitPzfg/MPpao4fy62+OiitflKOLJZbJNlWg=; b=xLLRCLpAw5daela2wQDpfvDXYPoD17CXprT+qXB7jUeTyeEE5VRSTwhx1C0V9FG1Vu z+InGvELq/Oy68lZYm88ZxrGhG9KXujI739aTCo9/dlVCfMXabHTOsnQOdbdu1j1Z1RG QRTntKCNm8Jze5lPRdvKigLZPa3UYgDBqAQZ9wLdcbw+V4XDvH1gfHnBfbyJhTHgCd3/ 7KG9ORuKhm4pR8fNpjdauYSqKOgQWri6wspQUJCEvwJdC10TPtOjV76AYswG+TtgaG9M pW730nBqeA2iUtBxrytXFJWP6o+C1FQUN/Lgzw1ygAQPg5E2Oc56/uU97GymF9TKO0D0 QzSQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=temperror (no key for signature) header.i=@micronovasrl.com header.s=dkim header.b=u5k5E2UG; 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 b4-v6si3154142pgu.390.2018.06.06.07.32.41; Wed, 06 Jun 2018 07:32:57 -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=temperror (no key for signature) header.i=@micronovasrl.com header.s=dkim header.b=u5k5E2UG; 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 S1752074AbeFFOcO (ORCPT + 99 others); Wed, 6 Jun 2018 10:32:14 -0400 Received: from mail.micronovasrl.com ([212.103.203.10]:38466 "EHLO mail.micronovasrl.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751994AbeFFOcM (ORCPT ); Wed, 6 Jun 2018 10:32:12 -0400 Received: from mail.micronovasrl.com (mail.micronovasrl.com [127.0.0.1]) by mail.micronovasrl.com (Postfix) with ESMTP id 7685BB007F4 for ; Wed, 6 Jun 2018 16:32:11 +0200 (CEST) Authentication-Results: mail.micronovasrl.com (amavisd-new); dkim=pass reason="pass (just generated, assumed good)" header.d=micronovasrl.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=micronovasrl.com; h=content-transfer-encoding:content-language:content-type :content-type:in-reply-to:mime-version:user-agent:date:date :message-id:from:from:references:to:subject:subject; s=dkim; t= 1528295530; x=1529159531; bh=Jbd7c5wEcJ20rsLQJPHwej1245z2qFSmuek WUedEErc=; b=u5k5E2UGNYQqt0P+DHMdpOyJIt3RMF4B/0R03qJqd8qowUDZj9D YjWM0tW1QyEl5a6VXjtGzrutwVojFddBQUeOicsEop/oNw5Rx2FmW1CSC2HSXOLG dajoxAttoSUeRP1rdNglbu/eJQxVNuKicatVWd2ngslYeCpc5ODd7GRQ= X-Virus-Scanned: Debian amavisd-new at mail.micronovasrl.com X-Spam-Flag: NO X-Spam-Score: -2.9 X-Spam-Level: X-Spam-Status: No, score=-2.9 tagged_above=-10 required=4.5 tests=[ALL_TRUSTED=-1, BAYES_00=-1.9] autolearn=unavailable autolearn_force=no Received: from mail.micronovasrl.com ([127.0.0.1]) by mail.micronovasrl.com (mail.micronovasrl.com [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id NE9tFsQZHohc for ; Wed, 6 Jun 2018 16:32:10 +0200 (CEST) Received: from [192.168.2.109] (62-11-51-166.dialup.tiscali.it [62.11.51.166]) by mail.micronovasrl.com (Postfix) with ESMTPSA id 5B53EB005D1; Wed, 6 Jun 2018 16:32:09 +0200 (CEST) Subject: Re: [PATCH 1/4] serial: 8250: Copy em485 from port to real port. To: Andy Shevchenko Cc: matwey.kornilov@gmail.com, Greg Kroah-Hartman , Jiri Slaby , Matthias Brugger , Kees Cook , Allen Pais , Sean Young , "open list:SERIAL DRIVERS" , open list References: <20180606094942.71190-1-giulio.benetti@micronovasrl.com> <20180606094942.71190-4-giulio.benetti@micronovasrl.com> <069f5cd3309e83d13c74929f240720b232ea7251.camel@linux.intel.com> <0bc400b1-6178-2021-c9a3-3190d1a1de32@micronovasrl.com> <2abe2137e699e5ae3100b97316da469f6d1c9bb9.camel@linux.intel.com> From: Giulio Benetti Message-ID: Date: Wed, 6 Jun 2018 16:32:07 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <2abe2137e699e5ae3100b97316da469f6d1c9bb9.camel@linux.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: it Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Andy, Il 06/06/2018 15:11, Andy Shevchenko ha scritto: > On Wed, 2018-06-06 at 14:15 +0200, Giulio Benetti wrote: >> Il 06/06/2018 13:56, Andy Shevchenko ha scritto: >>> On Wed, 2018-06-06 at 11:49 +0200, Giulio Benetti wrote: >>>> em485 gets lost during >>>> >>>> Copy em485 to final uart port. >>>> >>> >>> Is it needed at all? >>> >>> The individual driver decides either to use software emulation (and >>> calls explicitly serial8250_em485_init() for that) or do HW assisted >>> stuff. >> >> In 8250_dw.c, during probe(), I need to call dw8250_rs485_config() >> against local struct uart_8250_port uart = {}; >> Inside serial8250_register_8250_port() not all uart fields are >> copied(em485 too). >> So after probe, em485 is NULL. >> >> Another way could be to call dw8250_rs485_config() against real uart >> port, after calling serial8250_register_8250_port(), >> would it make sense? > > Look at OMAP case closely. They have a callback to configure RS485 which > is called in uart_set_rs485_config() which is called whenever user > space does TIOCGRS485 IOCTL. > > So, it's completely driven by user space which makes sense by my > opinion. This is my problem, being driven only by userspace means that until you don't open ttyS* from there, dw8250_rs485_config() won't be called and rs485 won't be configured. In the case you have RTS_AFTER_SEND and "linux,rs485-enabled-at-boot-time" in dts, you need to handle RTS correctly. Without calling: - uart_get_rs485_mode() to collect dts properties and - dw8250_rs485_config() to configure according properties the result is RTS NOT asserted, then pin is HIGH, meaning that rs485 transceiver will be in tx mode until port is open. Other drivers I've watched to for insipiration are: - atmel_serial.c - fsl_lpuart.c - imx.c etc. everything containing uart_get_rs485_mode(). The main difficulty to understand this without a scope is that on rs485.txt documentation the property "rs485-rts-active-low" is described as: "drive RTS low when sending (default is high)" Instead it should report: "de-assert RTS when sending(pin high), default is asserted(pin low)" Maybe I should send a patch for that also. I ended to this conclusion because on every check of RTS_AFTER_SEND and SER_RS485_RTS_ON_SEND RTS is treated this way. Try to take a look at uart_port_dtr_rts() in serial_core.c for example. Or serial8250_em485_rts_after_send() in 8250_port.c What do you think? -- Giulio Benetti CTO MICRONOVA SRL Sede: Via A. Niedda 3 - 35010 Vigonza (PD) Tel. 049/8931563 - Fax 049/8931346 Cod.Fiscale - P.IVA 02663420285 Capitale Sociale € 26.000 i.v. Iscritta al Reg. Imprese di Padova N. 02663420285 Numero R.E.A. 258642