Patchwork serial: tegra: Switch to using struct tty_port

login
register
mail settings
Submitter Thierry Reding
Date Jan. 17, 2013, 1:31 p.m.
Message ID <1358429505-31746-1-git-send-email-thierry.reding@avionic-design.de>
Download mbox | patch
Permalink /patch/213263/
State Not Applicable, archived
Headers show

Comments

Thierry Reding - Jan. 17, 2013, 1:31 p.m.
Many of the tty functions were converted to use a struct tty_port
instead of a struct tty_struct. Update the Tegra driver accordingly to
avoid build breakage.

Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
---
 drivers/tty/serial/serial-tegra.c | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)
Stephen Warren - Jan. 17, 2013, 5:07 p.m.
On 01/17/2013 06:31 AM, Thierry Reding wrote:
> Many of the tty functions were converted to use a struct tty_port
> instead of a struct tty_struct. Update the Tegra driver accordingly to
> avoid build breakage.

I tested that this does indeed fix the build warnings. I didn't test the
resultant driver.

--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Laxman Dewangan - Jan. 17, 2013, 5:34 p.m.
On Thursday 17 January 2013 10:37 PM, Stephen Warren wrote:
> On 01/17/2013 06:31 AM, Thierry Reding wrote:
>> Many of the tty functions were converted to use a struct tty_port
>> instead of a struct tty_struct. Update the Tegra driver accordingly to
>> avoid build breakage.
> I tested that this does indeed fix the build warnings. I didn't test the
> resultant driver.
>
The api prototype changes and driver development went in parallel and 
hence the driver uses the older api. Both got merged on similar time and 
so out of sync.
I think this change is proper. I have not tested this change but 
reviewing code, it looks good to me.

Acked-By: Laxman Dewangan<ldewangan@nvidia.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Thierry Reding - Jan. 18, 2013, 8:37 a.m.
On Thu, Jan 17, 2013 at 10:07:51AM -0700, Stephen Warren wrote:
> On 01/17/2013 06:31 AM, Thierry Reding wrote:
> > Many of the tty functions were converted to use a struct tty_port
> > instead of a struct tty_struct. Update the Tegra driver accordingly to
> > avoid build breakage.
> 
> I tested that this does indeed fix the build warnings. I didn't test the
> resultant driver.

I wonder if this would have been caught earlier if it had errored out
instead of outputting lots of warnings. Looking at the gcc documentation
there doesn't seem to be a way to turn this kind of warning into an
error. That would leave -Werror as the only option to have the compiler
abort on this kind of warning.

Globally enabling -Werror might not be a good idea and I'm sure it must
have been discussed in the past (even though Google doesn't show any
references). In this particular case the warnings are actually severe
errors and are very likely to cause buggy behaviour so it would be good
to catch them at compile time. Warnings are unfortunately quite easy to
ignore.

I know I can always use EXTRA_CFLAGS to change this for local builds,
but maybe getting more people to do this would be worthwhile.

Thierry
Laxman Dewangan - Jan. 18, 2013, 3:49 p.m.
On Friday 18 January 2013 02:07 PM, Thierry Reding wrote:
> * PGP Signed by an unknown key
>
> On Thu, Jan 17, 2013 at 10:07:51AM -0700, Stephen Warren wrote:
>> On 01/17/2013 06:31 AM, Thierry Reding wrote:
>>> Many of the tty functions were converted to use a struct tty_port
>>> instead of a struct tty_struct. Update the Tegra driver accordingly to
>>> avoid build breakage.
>> I tested that this does indeed fix the build warnings. I didn't test the
>> resultant driver.
> I wonder if this would have been caught earlier if it had errored out
> instead of outputting lots of warnings. Looking at the gcc documentation
> there doesn't seem to be a way to turn this kind of warning into an
> error. That would leave -Werror as the only option to have the compiler
> abort on this kind of warning.
>
> Globally enabling -Werror might not be a good idea and I'm sure it must
> have been discussed in the past (even though Google doesn't show any
> references). In this particular case the warnings are actually severe
> errors and are very likely to cause buggy behaviour so it would be good
> to catch them at compile time. Warnings are unfortunately quite easy to
> ignore.
>
> I know I can always use EXTRA_CFLAGS to change this for local builds,
> but maybe getting more people to do this would be worthwhile.
>

There was no issue when patch created. The change happen in the api with 
same time when patch created and so become out of sync.

API changed with commit on 1/16. Serial driver also get added on 1/16.

Author: Jiri Slaby <jslaby@suse.cz>  2013-01-03 20:23:06
Committer: Greg Kroah-Hartman <gregkh@linuxfoundation.org> 2013-01-16 
12:00:15

Follows: v3.8-rc3
Precedes: next-20130117

     TTY: switch tty_flip_buffer_push


--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/tty/serial/serial-tegra.c b/drivers/tty/serial/serial-tegra.c
index cc4072f..30d6ff6 100644
--- a/drivers/tty/serial/serial-tegra.c
+++ b/drivers/tty/serial/serial-tegra.c
@@ -504,7 +504,7 @@  static void tegra_uart_handle_tx_pio(struct tegra_uart_port *tup)
 }
 
 static void tegra_uart_handle_rx_pio(struct tegra_uart_port *tup,
-		struct tty_struct *tty)
+		struct tty_port *tty)
 {
 	do {
 		char flag = TTY_NORMAL;
@@ -527,7 +527,7 @@  static void tegra_uart_handle_rx_pio(struct tegra_uart_port *tup,
 }
 
 static void tegra_uart_copy_rx_to_tty(struct tegra_uart_port *tup,
-		struct tty_struct *tty, int count)
+		struct tty_port *tty, int count)
 {
 	int copied;
 
@@ -554,6 +554,7 @@  static void tegra_uart_rx_dma_complete(void *args)
 	struct uart_port *u = &tup->uport;
 	int count = tup->rx_bytes_requested;
 	struct tty_struct *tty = tty_port_tty_get(&tup->uport.state->port);
+	struct tty_port *port = &u->state->port;
 	unsigned long flags;
 
 	async_tx_ack(tup->rx_dma_desc);
@@ -565,11 +566,11 @@  static void tegra_uart_rx_dma_complete(void *args)
 
 	/* If we are here, DMA is stopped */
 	if (count)
-		tegra_uart_copy_rx_to_tty(tup, tty, count);
+		tegra_uart_copy_rx_to_tty(tup, port, count);
 
-	tegra_uart_handle_rx_pio(tup, tty);
+	tegra_uart_handle_rx_pio(tup, port);
 	if (tty) {
-		tty_flip_buffer_push(tty);
+		tty_flip_buffer_push(port);
 		tty_kref_put(tty);
 	}
 	tegra_uart_start_rx_dma(tup);
@@ -585,6 +586,7 @@  static void tegra_uart_handle_rx_dma(struct tegra_uart_port *tup)
 {
 	struct dma_tx_state state;
 	struct tty_struct *tty = tty_port_tty_get(&tup->uport.state->port);
+	struct tty_port *port = &tup->uport.state->port;
 	int count;
 
 	/* Deactivate flow control to stop sender */
@@ -597,11 +599,11 @@  static void tegra_uart_handle_rx_dma(struct tegra_uart_port *tup)
 
 	/* If we are here, DMA is stopped */
 	if (count)
-		tegra_uart_copy_rx_to_tty(tup, tty, count);
+		tegra_uart_copy_rx_to_tty(tup, port, count);
 
-	tegra_uart_handle_rx_pio(tup, tty);
+	tegra_uart_handle_rx_pio(tup, port);
 	if (tty) {
-		tty_flip_buffer_push(tty);
+		tty_flip_buffer_push(port);
 		tty_kref_put(tty);
 	}
 	tegra_uart_start_rx_dma(tup);
@@ -724,6 +726,7 @@  static void tegra_uart_stop_rx(struct uart_port *u)
 {
 	struct tegra_uart_port *tup = to_tegra_uport(u);
 	struct tty_struct *tty = tty_port_tty_get(&tup->uport.state->port);
+	struct tty_port *port = &u->state->port;
 	struct dma_tx_state state;
 	unsigned long ier;
 	int count;
@@ -747,13 +750,13 @@  static void tegra_uart_stop_rx(struct uart_port *u)
 		dmaengine_tx_status(tup->rx_dma_chan, tup->rx_cookie, &state);
 		async_tx_ack(tup->rx_dma_desc);
 		count = tup->rx_bytes_requested - state.residue;
-		tegra_uart_copy_rx_to_tty(tup, tty, count);
-		tegra_uart_handle_rx_pio(tup, tty);
+		tegra_uart_copy_rx_to_tty(tup, port, count);
+		tegra_uart_handle_rx_pio(tup, port);
 	} else {
-		tegra_uart_handle_rx_pio(tup, tty);
+		tegra_uart_handle_rx_pio(tup, port);
 	}
 	if (tty) {
-		tty_flip_buffer_push(tty);
+		tty_flip_buffer_push(port);
 		tty_kref_put(tty);
 	}
 	return;