From: Stephen Rothwell Date: Thu, 3 Nov 2011 02:35:33 +0000 (+1100) Subject: Merge remote-tracking branch 'powerpc/next' X-Git-Tag: next-20111103~65 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=a1be3f536c5581975050539d2fd2d90db8aa898f;p=karo-tx-linux.git Merge remote-tracking branch 'powerpc/next' Conflicts: arch/powerpc/configs/40x/hcu4_defconfig arch/powerpc/include/asm/udbg.h arch/powerpc/kernel/udbg.c drivers/tty/serial/8250.c --- a1be3f536c5581975050539d2fd2d90db8aa898f diff --cc arch/powerpc/include/asm/udbg.h index 5354ae91bdde,6587ec7bc6ec..7efc08eccfa1 --- a/arch/powerpc/include/asm/udbg.h +++ b/arch/powerpc/include/asm/udbg.h @@@ -54,7 -54,9 +54,10 @@@ extern void __init udbg_init_40x_realmo extern void __init udbg_init_cpm(void); extern void __init udbg_init_usbgecko(void); extern void __init udbg_init_wsp(void); + extern void __init udbg_init_ps3gelic(void); + extern void __init udbg_init_debug_opal_raw(void); + extern void __init udbg_init_debug_opal_hvsi(void); +extern void __init udbg_init_ehv_bc(void); #endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_UDBG_H */ diff --cc arch/powerpc/kernel/udbg.c index b4607a91d1f4,35f948203ec5..7de6d3747619 --- a/arch/powerpc/kernel/udbg.c +++ b/arch/powerpc/kernel/udbg.c @@@ -67,8 -67,12 +67,14 @@@ void __init udbg_early_init(void udbg_init_usbgecko(); #elif defined(CONFIG_PPC_EARLY_DEBUG_WSP) udbg_init_wsp(); + #elif defined(CONFIG_PPC_EARLY_DEBUG_PS3GELIC) + udbg_init_ps3gelic(); + #elif defined(CONFIG_PPC_EARLY_DEBUG_OPAL_RAW) + udbg_init_debug_opal_raw(); + #elif defined(CONFIG_PPC_EARLY_DEBUG_OPAL_HVSI) + udbg_init_debug_opal_hvsi(); +#elif defined(CONFIG_PPC_EARLY_DEBUG_EHV_BC) + udbg_init_ehv_bc(); #endif #ifdef CONFIG_PPC_EARLY_DEBUG diff --cc drivers/tty/serial/8250.c index a87a56cb5417,610b8e63710d..eeadf1b8e093 --- a/drivers/tty/serial/8250.c +++ b/drivers/tty/serial/8250.c @@@ -450,24 -443,42 +450,6 @@@ static void au_serial_out(struct uart_p __raw_writel(value, p->membase + offset); } - static unsigned int tsi_serial_in(struct uart_port *p, int offset) -/* Save the LCR value so it can be re-written when a Busy Detect IRQ occurs. */ -static inline void dwapb_save_out_value(struct uart_port *p, int offset, - int value) --{ - unsigned int tmp; - offset = map_8250_in_reg(p, offset) << p->regshift; - if (offset == UART_IIR) { - tmp = readl(p->membase + (UART_IIR & ~3)); - return (tmp >> 16) & 0xff; /* UART_IIR % 4 == 2 */ - } else - return readb(p->membase + offset); - struct uart_8250_port *up = - container_of(p, struct uart_8250_port, port); - - if (offset == UART_LCR) - up->lcr = value; --} -- - static void tsi_serial_out(struct uart_port *p, int offset, int value) -/* Read the IER to ensure any interrupt is cleared before returning from ISR. */ -static inline void dwapb_check_clear_ier(struct uart_port *p, int offset) -{ - if (offset == UART_TX || offset == UART_IER) - p->serial_in(p, UART_IER); -} - -static void dwapb_serial_out(struct uart_port *p, int offset, int value) --{ - int save_offset = offset; -- offset = map_8250_out_reg(p, offset) << p->regshift; - if (!((offset == UART_IER) && (value & UART_IER_UUE))) - writeb(value, p->membase + offset); - dwapb_save_out_value(p, save_offset, value); - writeb(value, p->membase + offset); - dwapb_check_clear_ier(p, save_offset); -} - -static void dwapb32_serial_out(struct uart_port *p, int offset, int value) -{ - int save_offset = offset; - offset = map_8250_out_reg(p, offset) << p->regshift; - dwapb_save_out_value(p, save_offset, value); - writel(value, p->membase + offset); - dwapb_check_clear_ier(p, save_offset); --} -- static unsigned int io_serial_in(struct uart_port *p, int offset) { offset = map_8250_in_reg(p, offset) << p->regshift; @@@ -508,11 -517,16 +490,6 @@@ static void set_io_from_upio(struct uar p->serial_out = au_serial_out; break; - case UPIO_TSI: - p->serial_in = tsi_serial_in; - p->serial_out = tsi_serial_out; - case UPIO_DWAPB: - p->serial_in = mem_serial_in; - p->serial_out = dwapb_serial_out; - break; - - case UPIO_DWAPB32: - p->serial_in = mem32_serial_in; - p->serial_out = dwapb32_serial_out; -- break; -- default: p->serial_in = io_serial_in; p->serial_out = io_serial_out;