From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?B?SmFudXN6IFXFvHlja2k=?= Subject: Re: [PATCH] gpio: mxs: implement get_direction callback Date: Tue, 18 Nov 2014 10:59:03 +0100 Message-ID: <546B1867.30308@elproma.com.pl> References: <20141114232601.GW27002@pengutronix.de> <5467A980.5090204@elproma.com.pl> <20141116214239.GX27002@pengutronix.de> <54693A51.5080907@elproma.com.pl> <54695654.3070209@elproma.com.pl> <20141117082848.GZ27002@pengutronix.de> <546A29B9.5030104@elproma.com.pl> <546A2B69.4010409@elproma.com.pl> <20141117184229.GM27002@pengutronix.de> <546A465E.5080904@elproma.com.pl> <20141117222127.GN27002@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: Received: from v032797.home.net.pl ([89.161.177.31]:57494 "HELO v032797.home.net.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1753779AbaKRJ6z (ORCPT ); Tue, 18 Nov 2014 04:58:55 -0500 In-Reply-To: <20141117222127.GN27002@pengutronix.de> Sender: linux-gpio-owner@vger.kernel.org List-Id: linux-gpio@vger.kernel.org To: =?UTF-8?B?VXdlIEtsZWluZS1Lw7ZuaWc=?= Cc: Richard Genoud , Linus Walleij , Alexandre Courbot , fabio.estevam@freescale.com, Greg Kroah-Hartman , linux-gpio@vger.kernel.org, linux-serial@vger.kernel.org, Fabio Estevam , linux-arm-kernel@lists.infradead.org Hello Uwe, W dniu 2014-11-17 o 23:21, Uwe Kleine-K=C3=B6nig pisze: > Hello Janusz, > > On Mon, Nov 17, 2014 at 08:02:54PM +0100, Janusz U=C5=BCycki wrote: >> W dniu 2014-11-17 o 19:42, Uwe Kleine-K=C3=B6nig pisze: >>> On Mon, Nov 17, 2014 at 06:07:53PM +0100, Janusz U=C5=BCycki wrote: >>>>> It looks there could be one more helper useful. >>>>> Both atmel_serial.c and mxs-auart.c checks if the line is >>>>> supported by mctrl_gpio. >>>>> One time it is eg.: >>>>> (s->gpio_irq[UART_GPIO_DCD] > 0) >>>>> another time it is eg.: >>>>> IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(s->gpios, UART_GPIO_RTS)) >>>>> >>>>> The first one is no possible now. The second seems rude. >>>>> bool mctrl_gpio_is_gpio((struct mctrl_gpios *gpios, enum >>>>> mctrl_gpio_idx gidx); >>>>> The name is hard. Moreover the implementation could be very simil= ar >>>>> to mctrl_gpio_to_gpiod(). Any ideas? >>>> The differences: >>>> - faster >>>> - not exported >>>> - used mainly in uart's interrupt >>>> - assumes that struct mctrl_gpios *gpios exists >>> I wonder why you need it at all?! >> If the line is not supported by gpio it could be supported by native >> uart's hardware >> if possible. There are different configurations. One port has the >> lines, other >> which uses the same driver doesn't have. >> Let's look at disable/enable_ms() in atmet_serial.c. >> In mxs-auart DMA is not used if CTS or RTS is gpio line (timming). > For the atmel driver I would expect that it doesn't hurt to set > ATMEL_US_CTSIC if CTS is realized using a gpio. But maybe I'm too > optimistic here. So atmel_enable_ms could look as follows: > > struct atmel_uart_port *atmel_port =3D to_atmel_uart_port(port); > > /* > * Interrupt should not be enabled twice > * ukl: is this check really needed? > */ > if (atmel_port->ms_irq_enabled) > return; > > atmel_port->ms_irq_enabled =3D true; > > mctrl_gpio_enable_ms(...); > UART_PUT_IER(port, ATMEL_US_CTSIC | ATMEL_US_DSRIC | ATMEL_US_RIIC |= ATMEL_US_DCDIC); It is too optimistic I think. We shouldn't assume that internal lines=20 are biased if not selected by pinmux. They should be but it is not ensured in most datasheets. Moreover today= =20 time to market makes erratas longer and too often not complete. Sadly but true. best regards Janusz > Best regards > Uwe > -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" i= n the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From mboxrd@z Thu Jan 1 00:00:00 1970 From: j.uzycki@elproma.com.pl (=?UTF-8?B?SmFudXN6IFXFvHlja2k=?=) Date: Tue, 18 Nov 2014 10:59:03 +0100 Subject: [PATCH] gpio: mxs: implement get_direction callback In-Reply-To: <20141117222127.GN27002@pengutronix.de> References: <20141114232601.GW27002@pengutronix.de> <5467A980.5090204@elproma.com.pl> <20141116214239.GX27002@pengutronix.de> <54693A51.5080907@elproma.com.pl> <54695654.3070209@elproma.com.pl> <20141117082848.GZ27002@pengutronix.de> <546A29B9.5030104@elproma.com.pl> <546A2B69.4010409@elproma.com.pl> <20141117184229.GM27002@pengutronix.de> <546A465E.5080904@elproma.com.pl> <20141117222127.GN27002@pengutronix.de> Message-ID: <546B1867.30308@elproma.com.pl> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hello Uwe, W dniu 2014-11-17 o 23:21, Uwe Kleine-K?nig pisze: > Hello Janusz, > > On Mon, Nov 17, 2014 at 08:02:54PM +0100, Janusz U?ycki wrote: >> W dniu 2014-11-17 o 19:42, Uwe Kleine-K?nig pisze: >>> On Mon, Nov 17, 2014 at 06:07:53PM +0100, Janusz U?ycki wrote: >>>>> It looks there could be one more helper useful. >>>>> Both atmel_serial.c and mxs-auart.c checks if the line is >>>>> supported by mctrl_gpio. >>>>> One time it is eg.: >>>>> (s->gpio_irq[UART_GPIO_DCD] > 0) >>>>> another time it is eg.: >>>>> IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(s->gpios, UART_GPIO_RTS)) >>>>> >>>>> The first one is no possible now. The second seems rude. >>>>> bool mctrl_gpio_is_gpio((struct mctrl_gpios *gpios, enum >>>>> mctrl_gpio_idx gidx); >>>>> The name is hard. Moreover the implementation could be very similar >>>>> to mctrl_gpio_to_gpiod(). Any ideas? >>>> The differences: >>>> - faster >>>> - not exported >>>> - used mainly in uart's interrupt >>>> - assumes that struct mctrl_gpios *gpios exists >>> I wonder why you need it at all?! >> If the line is not supported by gpio it could be supported by native >> uart's hardware >> if possible. There are different configurations. One port has the >> lines, other >> which uses the same driver doesn't have. >> Let's look at disable/enable_ms() in atmet_serial.c. >> In mxs-auart DMA is not used if CTS or RTS is gpio line (timming). > For the atmel driver I would expect that it doesn't hurt to set > ATMEL_US_CTSIC if CTS is realized using a gpio. But maybe I'm too > optimistic here. So atmel_enable_ms could look as follows: > > struct atmel_uart_port *atmel_port = to_atmel_uart_port(port); > > /* > * Interrupt should not be enabled twice > * ukl: is this check really needed? > */ > if (atmel_port->ms_irq_enabled) > return; > > atmel_port->ms_irq_enabled = true; > > mctrl_gpio_enable_ms(...); > UART_PUT_IER(port, ATMEL_US_CTSIC | ATMEL_US_DSRIC | ATMEL_US_RIIC | ATMEL_US_DCDIC); It is too optimistic I think. We shouldn't assume that internal lines are biased if not selected by pinmux. They should be but it is not ensured in most datasheets. Moreover today time to market makes erratas longer and too often not complete. Sadly but true. best regards Janusz > Best regards > Uwe >