Loading arch/arm/mach-ep93xx/core.c +68 −0 Original line number Original line Diff line number Diff line Loading @@ -30,7 +30,9 @@ #include <linux/time.h> #include <linux/time.h> #include <linux/timex.h> #include <linux/timex.h> #include <linux/delay.h> #include <linux/delay.h> #include <linux/termios.h> #include <linux/amba/bus.h> #include <linux/amba/bus.h> #include <linux/amba/serial.h> #include <asm/types.h> #include <asm/types.h> #include <asm/setup.h> #include <asm/setup.h> Loading Loading @@ -360,6 +362,68 @@ void __init ep93xx_init_irq(void) /************************************************************************* /************************************************************************* * EP93xx peripheral handling * EP93xx peripheral handling *************************************************************************/ *************************************************************************/ #define EP93XX_UART_MCR_OFFSET (0x0100) static void ep93xx_uart_set_mctrl(struct amba_device *dev, void __iomem *base, unsigned int mctrl) { unsigned int mcr; mcr = 0; if (!(mctrl & TIOCM_RTS)) mcr |= 2; if (!(mctrl & TIOCM_DTR)) mcr |= 1; __raw_writel(mcr, base + EP93XX_UART_MCR_OFFSET); } static struct amba_pl010_data ep93xx_uart_data = { .set_mctrl = ep93xx_uart_set_mctrl, }; static struct amba_device uart1_device = { .dev = { .bus_id = "apb:uart1", .platform_data = &ep93xx_uart_data, }, .res = { .start = EP93XX_UART1_PHYS_BASE, .end = EP93XX_UART1_PHYS_BASE + 0x0fff, .flags = IORESOURCE_MEM, }, .irq = { IRQ_EP93XX_UART1, NO_IRQ }, .periphid = 0x00041010, }; static struct amba_device uart2_device = { .dev = { .bus_id = "apb:uart2", .platform_data = &ep93xx_uart_data, }, .res = { .start = EP93XX_UART2_PHYS_BASE, .end = EP93XX_UART2_PHYS_BASE + 0x0fff, .flags = IORESOURCE_MEM, }, .irq = { IRQ_EP93XX_UART2, NO_IRQ }, .periphid = 0x00041010, }; static struct amba_device uart3_device = { .dev = { .bus_id = "apb:uart3", .platform_data = &ep93xx_uart_data, }, .res = { .start = EP93XX_UART3_PHYS_BASE, .end = EP93XX_UART3_PHYS_BASE + 0x0fff, .flags = IORESOURCE_MEM, }, .irq = { IRQ_EP93XX_UART3, NO_IRQ }, .periphid = 0x00041010, }; void __init ep93xx_init_devices(void) void __init ep93xx_init_devices(void) { { unsigned int v; unsigned int v; Loading @@ -371,4 +435,8 @@ void __init ep93xx_init_devices(void) v &= ~EP93XX_SYSCON_DEVICE_CONFIG_CRUNCH_ENABLE; v &= ~EP93XX_SYSCON_DEVICE_CONFIG_CRUNCH_ENABLE; __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK); __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK); __raw_writel(v, EP93XX_SYSCON_DEVICE_CONFIG); __raw_writel(v, EP93XX_SYSCON_DEVICE_CONFIG); amba_device_register(&uart1_device, &iomem_resource); amba_device_register(&uart2_device, &iomem_resource); amba_device_register(&uart3_device, &iomem_resource); } } Loading
arch/arm/mach-ep93xx/core.c +68 −0 Original line number Original line Diff line number Diff line Loading @@ -30,7 +30,9 @@ #include <linux/time.h> #include <linux/time.h> #include <linux/timex.h> #include <linux/timex.h> #include <linux/delay.h> #include <linux/delay.h> #include <linux/termios.h> #include <linux/amba/bus.h> #include <linux/amba/bus.h> #include <linux/amba/serial.h> #include <asm/types.h> #include <asm/types.h> #include <asm/setup.h> #include <asm/setup.h> Loading Loading @@ -360,6 +362,68 @@ void __init ep93xx_init_irq(void) /************************************************************************* /************************************************************************* * EP93xx peripheral handling * EP93xx peripheral handling *************************************************************************/ *************************************************************************/ #define EP93XX_UART_MCR_OFFSET (0x0100) static void ep93xx_uart_set_mctrl(struct amba_device *dev, void __iomem *base, unsigned int mctrl) { unsigned int mcr; mcr = 0; if (!(mctrl & TIOCM_RTS)) mcr |= 2; if (!(mctrl & TIOCM_DTR)) mcr |= 1; __raw_writel(mcr, base + EP93XX_UART_MCR_OFFSET); } static struct amba_pl010_data ep93xx_uart_data = { .set_mctrl = ep93xx_uart_set_mctrl, }; static struct amba_device uart1_device = { .dev = { .bus_id = "apb:uart1", .platform_data = &ep93xx_uart_data, }, .res = { .start = EP93XX_UART1_PHYS_BASE, .end = EP93XX_UART1_PHYS_BASE + 0x0fff, .flags = IORESOURCE_MEM, }, .irq = { IRQ_EP93XX_UART1, NO_IRQ }, .periphid = 0x00041010, }; static struct amba_device uart2_device = { .dev = { .bus_id = "apb:uart2", .platform_data = &ep93xx_uart_data, }, .res = { .start = EP93XX_UART2_PHYS_BASE, .end = EP93XX_UART2_PHYS_BASE + 0x0fff, .flags = IORESOURCE_MEM, }, .irq = { IRQ_EP93XX_UART2, NO_IRQ }, .periphid = 0x00041010, }; static struct amba_device uart3_device = { .dev = { .bus_id = "apb:uart3", .platform_data = &ep93xx_uart_data, }, .res = { .start = EP93XX_UART3_PHYS_BASE, .end = EP93XX_UART3_PHYS_BASE + 0x0fff, .flags = IORESOURCE_MEM, }, .irq = { IRQ_EP93XX_UART3, NO_IRQ }, .periphid = 0x00041010, }; void __init ep93xx_init_devices(void) void __init ep93xx_init_devices(void) { { unsigned int v; unsigned int v; Loading @@ -371,4 +435,8 @@ void __init ep93xx_init_devices(void) v &= ~EP93XX_SYSCON_DEVICE_CONFIG_CRUNCH_ENABLE; v &= ~EP93XX_SYSCON_DEVICE_CONFIG_CRUNCH_ENABLE; __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK); __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK); __raw_writel(v, EP93XX_SYSCON_DEVICE_CONFIG); __raw_writel(v, EP93XX_SYSCON_DEVICE_CONFIG); amba_device_register(&uart1_device, &iomem_resource); amba_device_register(&uart2_device, &iomem_resource); amba_device_register(&uart3_device, &iomem_resource); } }