The patch titled dz.c: Use a helper to cast from "struct uart_port *" has been added to the -mm tree. Its filename is dzc-use-a-helper-to-cast-from-struct-uart_port.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: dz.c: Use a helper to cast from "struct uart_port *" From: "Maciej W. Rozycki" <macro@xxxxxxxxxxxxxx> Replace all casts from "struct uart_port *" to "struct dz_port *" with a construct based on container_of(). This makes the conversion work irrespective of where the former struct is located within the latter. By popular request I have implemented it as an inline function rather than a macro this time. Signed-off-by: Maciej W. Rozycki <macro@xxxxxxxxxxxxxx> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/serial/dz.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff -puN drivers/serial/dz.c~dzc-use-a-helper-to-cast-from-struct-uart_port drivers/serial/dz.c --- a/drivers/serial/dz.c~dzc-use-a-helper-to-cast-from-struct-uart_port +++ a/drivers/serial/dz.c @@ -68,6 +68,11 @@ struct dz_port { static struct dz_port dz_ports[DZ_NB_PORT]; +static inline struct dz_port *to_dport(struct uart_port *uport) +{ + return container_of(uport, struct dz_port, port); +} + /* * ------------------------------------------------------------ * dz_in () and dz_out () @@ -106,7 +111,7 @@ static inline void dz_out(struct dz_port static void dz_stop_tx(struct uart_port *uport) { - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned short tmp, mask = 1 << dport->port.line; tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ @@ -116,7 +121,7 @@ static void dz_stop_tx(struct uart_port static void dz_start_tx(struct uart_port *uport) { - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned short tmp, mask = 1 << dport->port.line; tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ @@ -126,7 +131,7 @@ static void dz_start_tx(struct uart_port static void dz_stop_rx(struct uart_port *uport) { - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); dport->cflag &= ~DZ_RXENAB; dz_out(dport, DZ_LPR, dport->cflag); @@ -349,7 +354,7 @@ static unsigned int dz_get_mctrl(struct /* * FIXME: Handle the 3100/5000 as appropriate. --macro */ - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned int mctrl = TIOCM_CAR | TIOCM_DSR | TIOCM_CTS; if (dport->port.line == DZ_MODEM) { @@ -365,7 +370,7 @@ static void dz_set_mctrl(struct uart_por /* * FIXME: Handle the 3100/5000 as appropriate. --macro */ - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned short tmp; if (dport->port.line == DZ_MODEM) { @@ -387,7 +392,7 @@ static void dz_set_mctrl(struct uart_por */ static int dz_startup(struct uart_port *uport) { - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned long flags; unsigned short tmp; @@ -413,7 +418,7 @@ static int dz_startup(struct uart_port * */ static void dz_shutdown(struct uart_port *uport) { - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned long flags; spin_lock_irqsave(&dport->port.lock, flags); @@ -435,7 +440,7 @@ static void dz_shutdown(struct uart_port */ static unsigned int dz_tx_empty(struct uart_port *uport) { - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned short tmp, mask = 1 << dport->port.line; tmp = dz_in(dport, DZ_TCR); @@ -450,7 +455,7 @@ static void dz_break_ctl(struct uart_por * FIXME: Can't access BREAK bits in TDR easily; * reuse the code for polled TX. --macro */ - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned long flags; unsigned short tmp, mask = 1 << dport->port.line; @@ -505,7 +510,7 @@ static int dz_encode_baud_rate(unsigned static void dz_set_termios(struct uart_port *uport, struct ktermios *termios, struct ktermios *old_termios) { - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned long flags; unsigned int cflag, baud; int bflag; @@ -685,7 +690,7 @@ static void dz_reset(struct dz_port *dpo */ static void dz_console_putchar(struct uart_port *uport, int ch) { - struct dz_port *dport = (struct dz_port *)uport; + struct dz_port *dport = to_dport(uport); unsigned long flags; unsigned short csr, tcr, trdy, mask; int loops = 10000; _ Patches currently in -mm which might be from macro@xxxxxxxxxxxxxx are fix-build-bug.patch kernel-printkc-concerns-about-the-console-handover.patch dzh-remove-useless-unused-module-junk.patch dz-always-check-if-it-is-safe-to-console_putchar.patch dz-dont-panic-when-request_irq-fails.patch dz-add-and-reorder-inclusions-remove-unneeded-ones.patch dz-update-kconfig-description.patch dz-rename-the-serial-console-structure.patch dz-fix-locking-issues.patch dz-handle-special-conditions-on-reception-correctly.patch maintainers-add-self-for-the-dz-serial-driver.patch dz-clean-up-and-improve-the-setup-of-termios-settings.patch dzc-use-a-helper-to-cast-from-struct-uart_port.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html