Re: [PATCH v4 20/21] serial: omap: move uart_omap_port definition to C file

From: Kevin Hilman
Date: Thu Sep 06 2012 - 17:58:30 EST


Felipe Balbi <balbi@xxxxxx> writes:

> nobody needs to access the uart_omap_port structure
> other than omap-serial.c file. Let's move that
> structure definition to the C source file in order
> to prevent anyone from accessing our structure.
>
> Tested-by: Shubhrajyoti D <shubhrajyoti@xxxxxx>
> Acked-by: Tony Lindgren <tony@xxxxxxxxxxx>
> Signed-off-by: Felipe Balbi <balbi@xxxxxx>

This one is clearly broken, and causes compile breakage...

> ---
> arch/arm/plat-omap/include/plat/omap-serial.h | 37 --------------------------
> drivers/tty/serial/omap-serial.c | 38 +++++++++++++++++++++++++++
> 2 files changed, 38 insertions(+), 37 deletions(-)
>
> diff --git a/arch/arm/plat-omap/include/plat/omap-serial.h b/arch/arm/plat-omap/include/plat/omap-serial.h
> index a79ed8b..3c9fd3e 100644
> --- a/arch/arm/plat-omap/include/plat/omap-serial.h
> +++ b/arch/arm/plat-omap/include/plat/omap-serial.h
> @@ -105,45 +105,8 @@ struct uart_omap_dma {
> unsigned int rx_timeout;
> };
>
> -struct uart_omap_port {
> - struct uart_port port;
> - struct uart_omap_dma uart_dma;
> - struct device *dev;
> -
> - unsigned char ier;
> - unsigned char lcr;
> - unsigned char mcr;
> - unsigned char fcr;
> - unsigned char efr;
> - unsigned char dll;
> - unsigned char dlh;
> - unsigned char mdr1;
> - unsigned char scr;
> -
> - int use_dma;
> - /*
> - * Some bits in registers are cleared on a read, so they must
> - * be saved whenever the register is read but the bits will not
> - * be immediately processed.
> - */
> - unsigned int lsr_break_flag;
> - unsigned char msr_saved_flags;
> - char name[20];
> - unsigned long port_activity;
> - u32 context_loss_cnt;
> - u32 errata;
> - u8 wakeups_enabled;
>
> int DTR_gpio;
> int DTR_inverted;
> int DTR_active;

The whole struct has moved, but some fields left behind?

This looks to be caused by the rebase which includes Neil Brown's DTR
GPIO change[1]

> -
> - struct pm_qos_request pm_qos_request;
> - u32 latency;
> - u32 calc_latency;
> - struct work_struct qos_work;
> -};
> -
> -#define to_uart_omap_port(p) ((container_of((p), struct uart_omap_port, port)))
> -
> #endif /* __OMAP_SERIAL_H__ */
> diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
> index 881b652..164c3c9 100644
> --- a/drivers/tty/serial/omap-serial.c
> +++ b/drivers/tty/serial/omap-serial.c
> @@ -70,6 +70,44 @@
> #define OMAP_UART_MVR_MAJ_SHIFT 8
> #define OMAP_UART_MVR_MIN_MASK 0x3f
>
> +struct uart_omap_port {
> + struct uart_port port;
> + struct uart_omap_dma uart_dma;
> + struct device *dev;
> +
> + unsigned char ier;
> + unsigned char lcr;
> + unsigned char mcr;
> + unsigned char fcr;
> + unsigned char efr;
> + unsigned char dll;
> + unsigned char dlh;
> + unsigned char mdr1;
> + unsigned char scr;
> +
> + int use_dma;
> + /*
> + * Some bits in registers are cleared on a read, so they must
> + * be saved whenever the register is read but the bits will not
> + * be immediately processed.
> + */
> + unsigned int lsr_break_flag;
> + unsigned char msr_saved_flags;
> + char name[20];
> + unsigned long port_activity;
> + u32 context_loss_cnt;
> + u32 errata;
> + u8 wakeups_enabled;
> + unsigned int irq_pending:1;

And this field was not in the original, yet the changelog describes this
as a move.

Why is a this new field added (and not described in the changelog.)

Kevin


[1]
commit 9574f36fb801035f6ab0fbb1b53ce2c12c17d100
Author: NeilBrown <neilb@xxxxxxx>
Date: Mon Jul 30 10:30:26 2012 +1000

OMAP/serial: Add support for driving a GPIO as DTR.

OMAP hardware doesn't provide a phyisical DTR line, but
some configurations may need a DTR line which tracks whether
the device is open or not.

So allow a gpio to be configured as the DTR line.

Signed-off-by: NeilBrown <neilb@xxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/