diff options
| -rw-r--r-- | arch/arm/Kconfig | 2 | ||||
| -rw-r--r-- | arch/arm/boot/compressed/misc.c | 4 | ||||
| -rw-r--r-- | arch/arm/mach-imx/generic.c | 52 | ||||
| -rw-r--r-- | arch/arm/mach-imx/mx1ads.c | 74 | ||||
| -rw-r--r-- | arch/arm/mach-ixp4xx/Kconfig | 15 | ||||
| -rw-r--r-- | arch/arm/mach-ixp4xx/Makefile | 3 | ||||
| -rw-r--r-- | drivers/input/touchscreen/corgi_ts.c | 2 | ||||
| -rw-r--r-- | drivers/serial/imx.c | 40 | ||||
| -rw-r--r-- | include/asm-arm/arch-imx/imx-uart.h | 10 | ||||
| -rw-r--r-- | include/asm-arm/arch-ixp4xx/io.h | 7 | ||||
| -rw-r--r-- | include/asm-arm/arch-ixp4xx/memory.h | 2 | ||||
| -rw-r--r-- | include/asm-arm/unistd.h | 21 |
12 files changed, 141 insertions, 91 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 1dbf6ddb300d..08b7cc900cae 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
| @@ -150,8 +150,6 @@ config ARCH_IOP3XX | |||
| 150 | 150 | ||
| 151 | config ARCH_IXP4XX | 151 | config ARCH_IXP4XX |
| 152 | bool "IXP4xx-based" | 152 | bool "IXP4xx-based" |
| 153 | select DMABOUNCE | ||
| 154 | select PCI | ||
| 155 | help | 153 | help |
| 156 | Support for Intel's IXP4XX (XScale) family of processors. | 154 | Support for Intel's IXP4XX (XScale) family of processors. |
| 157 | 155 | ||
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index 0af3772efcb7..ace3fb5835d9 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
| @@ -38,10 +38,10 @@ static void icedcc_putc(int ch) | |||
| 38 | if (--i < 0) | 38 | if (--i < 0) |
| 39 | return; | 39 | return; |
| 40 | 40 | ||
| 41 | asm("mrc p14, 0, %0, c0, c0, 0" : "=r" (status)); | 41 | asm volatile ("mrc p14, 0, %0, c0, c0, 0" : "=r" (status)); |
| 42 | } while (status & 2); | 42 | } while (status & 2); |
| 43 | 43 | ||
| 44 | asm("mcr p15, 0, %0, c1, c0, 0" : : "r" (ch)); | 44 | asm("mcr p14, 0, %0, c1, c0, 0" : : "r" (ch)); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | #define putc(ch) icedcc_putc(ch) | 47 | #define putc(ch) icedcc_putc(ch) |
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c index 9d8331be2b58..12ea58a3b84f 100644 --- a/arch/arm/mach-imx/generic.c +++ b/arch/arm/mach-imx/generic.c | |||
| @@ -195,56 +195,6 @@ void __init imx_set_mmc_info(struct imxmmc_platform_data *info) | |||
| 195 | } | 195 | } |
| 196 | EXPORT_SYMBOL(imx_set_mmc_info); | 196 | EXPORT_SYMBOL(imx_set_mmc_info); |
| 197 | 197 | ||
| 198 | static struct resource imx_uart1_resources[] = { | ||
| 199 | [0] = { | ||
| 200 | .start = 0x00206000, | ||
| 201 | .end = 0x002060FF, | ||
| 202 | .flags = IORESOURCE_MEM, | ||
| 203 | }, | ||
| 204 | [1] = { | ||
| 205 | .start = (UART1_MINT_RX), | ||
| 206 | .end = (UART1_MINT_RX), | ||
| 207 | .flags = IORESOURCE_IRQ, | ||
| 208 | }, | ||
| 209 | [2] = { | ||
| 210 | .start = (UART1_MINT_TX), | ||
| 211 | .end = (UART1_MINT_TX), | ||
| 212 | .flags = IORESOURCE_IRQ, | ||
| 213 | }, | ||
| 214 | }; | ||
| 215 | |||
| 216 | static struct platform_device imx_uart1_device = { | ||
| 217 | .name = "imx-uart", | ||
| 218 | .id = 0, | ||
| 219 | .num_resources = ARRAY_SIZE(imx_uart1_resources), | ||
| 220 | .resource = imx_uart1_resources, | ||
| 221 | }; | ||
| 222 | |||
| 223 | static struct resource imx_uart2_resources[] = { | ||
| 224 | [0] = { | ||
| 225 | .start = 0x00207000, | ||
| 226 | .end = 0x002070FF, | ||
| 227 | .flags = IORESOURCE_MEM, | ||
| 228 | }, | ||
| 229 | [1] = { | ||
| 230 | .start = (UART2_MINT_RX), | ||
| 231 | .end = (UART2_MINT_RX), | ||
| 232 | .flags = IORESOURCE_IRQ, | ||
| 233 | }, | ||
| 234 | [2] = { | ||
| 235 | .start = (UART2_MINT_TX), | ||
| 236 | .end = (UART2_MINT_TX), | ||
| 237 | .flags = IORESOURCE_IRQ, | ||
| 238 | }, | ||
| 239 | }; | ||
| 240 | |||
| 241 | static struct platform_device imx_uart2_device = { | ||
| 242 | .name = "imx-uart", | ||
| 243 | .id = 1, | ||
| 244 | .num_resources = ARRAY_SIZE(imx_uart2_resources), | ||
| 245 | .resource = imx_uart2_resources, | ||
| 246 | }; | ||
| 247 | |||
| 248 | static struct imxfb_mach_info imx_fb_info; | 198 | static struct imxfb_mach_info imx_fb_info; |
| 249 | 199 | ||
| 250 | void __init set_imx_fb_info(struct imxfb_mach_info *hard_imx_fb_info) | 200 | void __init set_imx_fb_info(struct imxfb_mach_info *hard_imx_fb_info) |
| @@ -283,8 +233,6 @@ static struct platform_device imxfb_device = { | |||
| 283 | static struct platform_device *devices[] __initdata = { | 233 | static struct platform_device *devices[] __initdata = { |
| 284 | &imx_mmc_device, | 234 | &imx_mmc_device, |
| 285 | &imxfb_device, | 235 | &imxfb_device, |
| 286 | &imx_uart1_device, | ||
| 287 | &imx_uart2_device, | ||
| 288 | }; | 236 | }; |
| 289 | 237 | ||
| 290 | static struct map_desc imx_io_desc[] __initdata = { | 238 | static struct map_desc imx_io_desc[] __initdata = { |
diff --git a/arch/arm/mach-imx/mx1ads.c b/arch/arm/mach-imx/mx1ads.c index e34d0df90aed..e1f6c0bbe1e7 100644 --- a/arch/arm/mach-imx/mx1ads.c +++ b/arch/arm/mach-imx/mx1ads.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | 26 | ||
| 27 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
| 28 | #include <asm/arch/mmc.h> | 28 | #include <asm/arch/mmc.h> |
| 29 | #include <asm/arch/imx-uart.h> | ||
| 29 | #include <linux/interrupt.h> | 30 | #include <linux/interrupt.h> |
| 30 | #include "generic.h" | 31 | #include "generic.h" |
| 31 | 32 | ||
| @@ -48,8 +49,70 @@ static struct platform_device cs89x0_device = { | |||
| 48 | .resource = cs89x0_resources, | 49 | .resource = cs89x0_resources, |
| 49 | }; | 50 | }; |
| 50 | 51 | ||
| 52 | static struct imxuart_platform_data uart_pdata = { | ||
| 53 | .flags = IMXUART_HAVE_RTSCTS, | ||
| 54 | }; | ||
| 55 | |||
| 56 | static struct resource imx_uart1_resources[] = { | ||
| 57 | [0] = { | ||
| 58 | .start = 0x00206000, | ||
| 59 | .end = 0x002060FF, | ||
| 60 | .flags = IORESOURCE_MEM, | ||
| 61 | }, | ||
| 62 | [1] = { | ||
| 63 | .start = (UART1_MINT_RX), | ||
| 64 | .end = (UART1_MINT_RX), | ||
| 65 | .flags = IORESOURCE_IRQ, | ||
| 66 | }, | ||
| 67 | [2] = { | ||
| 68 | .start = (UART1_MINT_TX), | ||
| 69 | .end = (UART1_MINT_TX), | ||
| 70 | .flags = IORESOURCE_IRQ, | ||
| 71 | }, | ||
| 72 | }; | ||
| 73 | |||
| 74 | static struct platform_device imx_uart1_device = { | ||
| 75 | .name = "imx-uart", | ||
| 76 | .id = 0, | ||
| 77 | .num_resources = ARRAY_SIZE(imx_uart1_resources), | ||
| 78 | .resource = imx_uart1_resources, | ||
| 79 | .dev = { | ||
| 80 | .platform_data = &uart_pdata, | ||
| 81 | } | ||
| 82 | }; | ||
| 83 | |||
| 84 | static struct resource imx_uart2_resources[] = { | ||
| 85 | [0] = { | ||
| 86 | .start = 0x00207000, | ||
| 87 | .end = 0x002070FF, | ||
| 88 | .flags = IORESOURCE_MEM, | ||
| 89 | }, | ||
| 90 | [1] = { | ||
| 91 | .start = (UART2_MINT_RX), | ||
| 92 | .end = (UART2_MINT_RX), | ||
| 93 | .flags = IORESOURCE_IRQ, | ||
| 94 | }, | ||
| 95 | [2] = { | ||
| 96 | .start = (UART2_MINT_TX), | ||
| 97 | .end = (UART2_MINT_TX), | ||
| 98 | .flags = IORESOURCE_IRQ, | ||
| 99 | }, | ||
| 100 | }; | ||
| 101 | |||
| 102 | static struct platform_device imx_uart2_device = { | ||
| 103 | .name = "imx-uart", | ||
| 104 | .id = 1, | ||
| 105 | .num_resources = ARRAY_SIZE(imx_uart2_resources), | ||
| 106 | .resource = imx_uart2_resources, | ||
| 107 | .dev = { | ||
| 108 | .platform_data = &uart_pdata, | ||
| 109 | } | ||
| 110 | }; | ||
| 111 | |||
| 51 | static struct platform_device *devices[] __initdata = { | 112 | static struct platform_device *devices[] __initdata = { |
| 52 | &cs89x0_device, | 113 | &cs89x0_device, |
| 114 | &imx_uart1_device, | ||
| 115 | &imx_uart2_device, | ||
| 53 | }; | 116 | }; |
| 54 | 117 | ||
| 55 | #ifdef CONFIG_MMC_IMX | 118 | #ifdef CONFIG_MMC_IMX |
| @@ -75,6 +138,17 @@ mx1ads_init(void) | |||
| 75 | imx_gpio_mode(GPIO_PORTB | GPIO_GIUS | GPIO_IN | 20); | 138 | imx_gpio_mode(GPIO_PORTB | GPIO_GIUS | GPIO_IN | 20); |
| 76 | imx_set_mmc_info(&mx1ads_mmc_info); | 139 | imx_set_mmc_info(&mx1ads_mmc_info); |
| 77 | #endif | 140 | #endif |
| 141 | |||
| 142 | imx_gpio_mode(PC9_PF_UART1_CTS); | ||
| 143 | imx_gpio_mode(PC10_PF_UART1_RTS); | ||
| 144 | imx_gpio_mode(PC11_PF_UART1_TXD); | ||
| 145 | imx_gpio_mode(PC12_PF_UART1_RXD); | ||
| 146 | |||
| 147 | imx_gpio_mode(PB28_PF_UART2_CTS); | ||
| 148 | imx_gpio_mode(PB29_PF_UART2_RTS); | ||
| 149 | imx_gpio_mode(PB30_PF_UART2_TXD); | ||
| 150 | imx_gpio_mode(PB31_PF_UART2_RXD); | ||
| 151 | |||
| 78 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 152 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
| 79 | } | 153 | } |
| 80 | 154 | ||
diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig index 5bf50a2a737d..2a39f9e481ad 100644 --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig | |||
| @@ -11,6 +11,7 @@ comment "IXP4xx Platforms" | |||
| 11 | config MACH_NSLU2 | 11 | config MACH_NSLU2 |
| 12 | bool | 12 | bool |
| 13 | prompt "Linksys NSLU2" | 13 | prompt "Linksys NSLU2" |
| 14 | select PCI | ||
| 14 | help | 15 | help |
| 15 | Say 'Y' here if you want your kernel to support Linksys's | 16 | Say 'Y' here if you want your kernel to support Linksys's |
| 16 | NSLU2 NAS device. For more information on this platform, | 17 | NSLU2 NAS device. For more information on this platform, |
| @@ -18,6 +19,7 @@ config MACH_NSLU2 | |||
| 18 | 19 | ||
| 19 | config ARCH_AVILA | 20 | config ARCH_AVILA |
| 20 | bool "Avila" | 21 | bool "Avila" |
| 22 | select PCI | ||
| 21 | help | 23 | help |
| 22 | Say 'Y' here if you want your kernel to support the Gateworks | 24 | Say 'Y' here if you want your kernel to support the Gateworks |
| 23 | Avila Network Platform. For more information on this platform, | 25 | Avila Network Platform. For more information on this platform, |
| @@ -25,6 +27,7 @@ config ARCH_AVILA | |||
| 25 | 27 | ||
| 26 | config ARCH_ADI_COYOTE | 28 | config ARCH_ADI_COYOTE |
| 27 | bool "Coyote" | 29 | bool "Coyote" |
| 30 | select PCI | ||
| 28 | help | 31 | help |
| 29 | Say 'Y' here if you want your kernel to support the ADI | 32 | Say 'Y' here if you want your kernel to support the ADI |
| 30 | Engineering Coyote Gateway Reference Platform. For more | 33 | Engineering Coyote Gateway Reference Platform. For more |
| @@ -32,6 +35,7 @@ config ARCH_ADI_COYOTE | |||
| 32 | 35 | ||
| 33 | config ARCH_IXDP425 | 36 | config ARCH_IXDP425 |
| 34 | bool "IXDP425" | 37 | bool "IXDP425" |
| 38 | select PCI | ||
| 35 | help | 39 | help |
| 36 | Say 'Y' here if you want your kernel to support Intel's | 40 | Say 'Y' here if you want your kernel to support Intel's |
| 37 | IXDP425 Development Platform (Also known as Richfield). | 41 | IXDP425 Development Platform (Also known as Richfield). |
| @@ -39,6 +43,7 @@ config ARCH_IXDP425 | |||
| 39 | 43 | ||
| 40 | config MACH_IXDPG425 | 44 | config MACH_IXDPG425 |
| 41 | bool "IXDPG425" | 45 | bool "IXDPG425" |
| 46 | select PCI | ||
| 42 | help | 47 | help |
| 43 | Say 'Y' here if you want your kernel to support Intel's | 48 | Say 'Y' here if you want your kernel to support Intel's |
| 44 | IXDPG425 Development Platform (Also known as Montajade). | 49 | IXDPG425 Development Platform (Also known as Montajade). |
| @@ -46,6 +51,7 @@ config MACH_IXDPG425 | |||
| 46 | 51 | ||
| 47 | config MACH_IXDP465 | 52 | config MACH_IXDP465 |
| 48 | bool "IXDP465" | 53 | bool "IXDP465" |
| 54 | select PCI | ||
| 49 | help | 55 | help |
| 50 | Say 'Y' here if you want your kernel to support Intel's | 56 | Say 'Y' here if you want your kernel to support Intel's |
| 51 | IXDP465 Development Platform (Also known as BMP). | 57 | IXDP465 Development Platform (Also known as BMP). |
| @@ -72,6 +78,7 @@ config ARCH_PRPMC1100 | |||
| 72 | config MACH_NAS100D | 78 | config MACH_NAS100D |
| 73 | bool | 79 | bool |
| 74 | prompt "NAS100D" | 80 | prompt "NAS100D" |
| 81 | select PCI | ||
| 75 | help | 82 | help |
| 76 | Say 'Y' here if you want your kernel to support Iomega's | 83 | Say 'Y' here if you want your kernel to support Iomega's |
| 77 | NAS 100d device. For more information on this platform, | 84 | NAS 100d device. For more information on this platform, |
| @@ -96,6 +103,7 @@ config CPU_IXP46X | |||
| 96 | config MACH_GTWX5715 | 103 | config MACH_GTWX5715 |
| 97 | bool "Gemtek WX5715 (Linksys WRV54G)" | 104 | bool "Gemtek WX5715 (Linksys WRV54G)" |
| 98 | depends on ARCH_IXP4XX | 105 | depends on ARCH_IXP4XX |
| 106 | select PCI | ||
| 99 | help | 107 | help |
| 100 | This board is currently inside the Linksys WRV54G Gateways. | 108 | This board is currently inside the Linksys WRV54G Gateways. |
| 101 | 109 | ||
| @@ -110,11 +118,16 @@ config MACH_GTWX5715 | |||
| 110 | "High Speed" UART is n/c (as far as I can tell) | 118 | "High Speed" UART is n/c (as far as I can tell) |
| 111 | 20 Pin ARM/Xscale JTAG interface on J2 | 119 | 20 Pin ARM/Xscale JTAG interface on J2 |
| 112 | 120 | ||
| 113 | |||
| 114 | comment "IXP4xx Options" | 121 | comment "IXP4xx Options" |
| 115 | 122 | ||
| 123 | config DMABOUNCE | ||
| 124 | bool | ||
| 125 | default y | ||
| 126 | depends on PCI | ||
| 127 | |||
| 116 | config IXP4XX_INDIRECT_PCI | 128 | config IXP4XX_INDIRECT_PCI |
| 117 | bool "Use indirect PCI memory access" | 129 | bool "Use indirect PCI memory access" |
| 130 | depends on PCI | ||
| 118 | help | 131 | help |
| 119 | IXP4xx provides two methods of accessing PCI memory space: | 132 | IXP4xx provides two methods of accessing PCI memory space: |
| 120 | 133 | ||
diff --git a/arch/arm/mach-ixp4xx/Makefile b/arch/arm/mach-ixp4xx/Makefile index 0471044fa179..5a4aaa0e0a09 100644 --- a/arch/arm/mach-ixp4xx/Makefile +++ b/arch/arm/mach-ixp4xx/Makefile | |||
| @@ -2,8 +2,9 @@ | |||
| 2 | # Makefile for the linux kernel. | 2 | # Makefile for the linux kernel. |
| 3 | # | 3 | # |
| 4 | 4 | ||
| 5 | obj-y += common.o common-pci.o | 5 | obj-y += common.o |
| 6 | 6 | ||
| 7 | obj-$(CONFIG_PCI) += common-pci.o | ||
| 7 | obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o | 8 | obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o |
| 8 | obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o | 9 | obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o |
| 9 | obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o | 10 | obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o |
diff --git a/drivers/input/touchscreen/corgi_ts.c b/drivers/input/touchscreen/corgi_ts.c index 1042987856f7..5013703db0e6 100644 --- a/drivers/input/touchscreen/corgi_ts.c +++ b/drivers/input/touchscreen/corgi_ts.c | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
| 18 | #include <linux/module.h> | 18 | #include <linux/module.h> |
| 19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
| 20 | #include <asm/irq.h> | 20 | //#include <asm/irq.h> |
| 21 | 21 | ||
| 22 | #include <asm/arch/sharpsl.h> | 22 | #include <asm/arch/sharpsl.h> |
| 23 | #include <asm/arch/hardware.h> | 23 | #include <asm/arch/hardware.h> |
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index c3b7a6673e9c..d202eb4f3848 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
| @@ -45,6 +45,7 @@ | |||
| 45 | #include <asm/io.h> | 45 | #include <asm/io.h> |
| 46 | #include <asm/irq.h> | 46 | #include <asm/irq.h> |
| 47 | #include <asm/hardware.h> | 47 | #include <asm/hardware.h> |
| 48 | #include <asm/arch/imx-uart.h> | ||
| 48 | 49 | ||
| 49 | /* We've been assigned a range on the "Low-density serial ports" major */ | 50 | /* We've been assigned a range on the "Low-density serial ports" major */ |
| 50 | #define SERIAL_IMX_MAJOR 204 | 51 | #define SERIAL_IMX_MAJOR 204 |
| @@ -73,7 +74,8 @@ struct imx_port { | |||
| 73 | struct uart_port port; | 74 | struct uart_port port; |
| 74 | struct timer_list timer; | 75 | struct timer_list timer; |
| 75 | unsigned int old_status; | 76 | unsigned int old_status; |
| 76 | int txirq,rxirq,rtsirq; | 77 | int txirq,rxirq,rtsirq; |
| 78 | int have_rtscts:1; | ||
| 77 | }; | 79 | }; |
| 78 | 80 | ||
| 79 | /* | 81 | /* |
| @@ -491,8 +493,12 @@ imx_set_termios(struct uart_port *port, struct termios *termios, | |||
| 491 | ucr2 = UCR2_SRST | UCR2_IRTS; | 493 | ucr2 = UCR2_SRST | UCR2_IRTS; |
| 492 | 494 | ||
| 493 | if (termios->c_cflag & CRTSCTS) { | 495 | if (termios->c_cflag & CRTSCTS) { |
| 494 | ucr2 &= ~UCR2_IRTS; | 496 | if( sport->have_rtscts ) { |
| 495 | ucr2 |= UCR2_CTSC; | 497 | ucr2 &= ~UCR2_IRTS; |
| 498 | ucr2 |= UCR2_CTSC; | ||
| 499 | } else { | ||
| 500 | termios->c_cflag &= ~CRTSCTS; | ||
| 501 | } | ||
| 496 | } | 502 | } |
| 497 | 503 | ||
| 498 | if (termios->c_cflag & CSTOPB) | 504 | if (termios->c_cflag & CSTOPB) |
| @@ -719,27 +725,6 @@ static void __init imx_init_ports(void) | |||
| 719 | imx_ports[i].timer.function = imx_timeout; | 725 | imx_ports[i].timer.function = imx_timeout; |
| 720 | imx_ports[i].timer.data = (unsigned long)&imx_ports[i]; | 726 | imx_ports[i].timer.data = (unsigned long)&imx_ports[i]; |
| 721 | } | 727 | } |
| 722 | |||
| 723 | imx_gpio_mode(PC9_PF_UART1_CTS); | ||
| 724 | imx_gpio_mode(PC10_PF_UART1_RTS); | ||
| 725 | imx_gpio_mode(PC11_PF_UART1_TXD); | ||
| 726 | imx_gpio_mode(PC12_PF_UART1_RXD); | ||
| 727 | imx_gpio_mode(PB28_PF_UART2_CTS); | ||
| 728 | imx_gpio_mode(PB29_PF_UART2_RTS); | ||
| 729 | |||
| 730 | imx_gpio_mode(PB30_PF_UART2_TXD); | ||
| 731 | imx_gpio_mode(PB31_PF_UART2_RXD); | ||
| 732 | |||
| 733 | #if 0 /* We don't need these, on the mx1 the _modem_ side of the uart | ||
| 734 | * is implemented. | ||
| 735 | */ | ||
| 736 | imx_gpio_mode(PD7_AF_UART2_DTR); | ||
| 737 | imx_gpio_mode(PD8_AF_UART2_DCD); | ||
| 738 | imx_gpio_mode(PD9_AF_UART2_RI); | ||
| 739 | imx_gpio_mode(PD10_AF_UART2_DSR); | ||
| 740 | #endif | ||
| 741 | |||
| 742 | |||
| 743 | } | 728 | } |
| 744 | 729 | ||
| 745 | #ifdef CONFIG_SERIAL_IMX_CONSOLE | 730 | #ifdef CONFIG_SERIAL_IMX_CONSOLE |
| @@ -932,7 +917,14 @@ static int serial_imx_resume(struct platform_device *dev) | |||
| 932 | 917 | ||
| 933 | static int serial_imx_probe(struct platform_device *dev) | 918 | static int serial_imx_probe(struct platform_device *dev) |
| 934 | { | 919 | { |
| 920 | struct imxuart_platform_data *pdata; | ||
| 921 | |||
| 935 | imx_ports[dev->id].port.dev = &dev->dev; | 922 | imx_ports[dev->id].port.dev = &dev->dev; |
| 923 | |||
| 924 | pdata = (struct imxuart_platform_data *)dev->dev.platform_data; | ||
| 925 | if(pdata && (pdata->flags & IMXUART_HAVE_RTSCTS)) | ||
| 926 | imx_ports[dev->id].have_rtscts = 1; | ||
| 927 | |||
| 936 | uart_add_one_port(&imx_reg, &imx_ports[dev->id].port); | 928 | uart_add_one_port(&imx_reg, &imx_ports[dev->id].port); |
| 937 | platform_set_drvdata(dev, &imx_ports[dev->id]); | 929 | platform_set_drvdata(dev, &imx_ports[dev->id]); |
| 938 | return 0; | 930 | return 0; |
diff --git a/include/asm-arm/arch-imx/imx-uart.h b/include/asm-arm/arch-imx/imx-uart.h new file mode 100644 index 000000000000..3a685e1780ea --- /dev/null +++ b/include/asm-arm/arch-imx/imx-uart.h | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #ifndef ASMARM_ARCH_UART_H | ||
| 2 | #define ASMARM_ARCH_UART_H | ||
| 3 | |||
| 4 | #define IMXUART_HAVE_RTSCTS (1<<0) | ||
| 5 | |||
| 6 | struct imxuart_platform_data { | ||
| 7 | unsigned int flags; | ||
| 8 | }; | ||
| 9 | |||
| 10 | #endif | ||
diff --git a/include/asm-arm/arch-ixp4xx/io.h b/include/asm-arm/arch-ixp4xx/io.h index 942b622455bc..b59520e56fc7 100644 --- a/include/asm-arm/arch-ixp4xx/io.h +++ b/include/asm-arm/arch-ixp4xx/io.h | |||
| @@ -260,6 +260,12 @@ out: | |||
| 260 | 260 | ||
| 261 | #endif | 261 | #endif |
| 262 | 262 | ||
| 263 | #ifndef CONFIG_PCI | ||
| 264 | |||
| 265 | #define __io(v) v | ||
| 266 | |||
| 267 | #else | ||
| 268 | |||
| 263 | /* | 269 | /* |
| 264 | * IXP4xx does not have a transparent cpu -> PCI I/O translation | 270 | * IXP4xx does not have a transparent cpu -> PCI I/O translation |
| 265 | * window. Instead, it has a set of registers that must be tweaked | 271 | * window. Instead, it has a set of registers that must be tweaked |
| @@ -578,6 +584,7 @@ __ixp4xx_iowrite32_rep(void __iomem *addr, const void *vaddr, u32 count) | |||
| 578 | 584 | ||
| 579 | #define ioport_map(port, nr) ((void __iomem*)(port + PIO_OFFSET)) | 585 | #define ioport_map(port, nr) ((void __iomem*)(port + PIO_OFFSET)) |
| 580 | #define ioport_unmap(addr) | 586 | #define ioport_unmap(addr) |
| 587 | #endif // !CONFIG_PCI | ||
| 581 | 588 | ||
| 582 | #endif // __ASM_ARM_ARCH_IO_H | 589 | #endif // __ASM_ARM_ARCH_IO_H |
| 583 | 590 | ||
diff --git a/include/asm-arm/arch-ixp4xx/memory.h b/include/asm-arm/arch-ixp4xx/memory.h index ee211d28a3ef..af9667b57ab3 100644 --- a/include/asm-arm/arch-ixp4xx/memory.h +++ b/include/asm-arm/arch-ixp4xx/memory.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | */ | 14 | */ |
| 15 | #define PHYS_OFFSET UL(0x00000000) | 15 | #define PHYS_OFFSET UL(0x00000000) |
| 16 | 16 | ||
| 17 | #ifndef __ASSEMBLY__ | 17 | #if !defined(__ASSEMBLY__) && defined(CONFIG_PCI) |
| 18 | 18 | ||
| 19 | void ixp4xx_adjust_zones(int node, unsigned long *size, unsigned long *holes); | 19 | void ixp4xx_adjust_zones(int node, unsigned long *size, unsigned long *holes); |
| 20 | 20 | ||
diff --git a/include/asm-arm/unistd.h b/include/asm-arm/unistd.h index ee8dfea549bc..26f2f4828e03 100644 --- a/include/asm-arm/unistd.h +++ b/include/asm-arm/unistd.h | |||
| @@ -410,7 +410,8 @@ type name(void) { \ | |||
| 410 | __asm__ __volatile__ ( \ | 410 | __asm__ __volatile__ ( \ |
| 411 | __syscall(name) \ | 411 | __syscall(name) \ |
| 412 | : "=r" (__res_r0) \ | 412 | : "=r" (__res_r0) \ |
| 413 | : __SYS_REG_LIST() ); \ | 413 | : __SYS_REG_LIST() \ |
| 414 | : "memory" ); \ | ||
| 414 | __res = __res_r0; \ | 415 | __res = __res_r0; \ |
| 415 | __syscall_return(type,__res); \ | 416 | __syscall_return(type,__res); \ |
| 416 | } | 417 | } |
| @@ -424,7 +425,8 @@ type name(type1 arg1) { \ | |||
| 424 | __asm__ __volatile__ ( \ | 425 | __asm__ __volatile__ ( \ |
| 425 | __syscall(name) \ | 426 | __syscall(name) \ |
| 426 | : "=r" (__res_r0) \ | 427 | : "=r" (__res_r0) \ |
| 427 | : __SYS_REG_LIST( "0" (__r0) ) ); \ | 428 | : __SYS_REG_LIST( "0" (__r0) ) \ |
| 429 | : "memory" ); \ | ||
| 428 | __res = __res_r0; \ | 430 | __res = __res_r0; \ |
| 429 | __syscall_return(type,__res); \ | 431 | __syscall_return(type,__res); \ |
| 430 | } | 432 | } |
| @@ -439,7 +441,8 @@ type name(type1 arg1,type2 arg2) { \ | |||
| 439 | __asm__ __volatile__ ( \ | 441 | __asm__ __volatile__ ( \ |
| 440 | __syscall(name) \ | 442 | __syscall(name) \ |
| 441 | : "=r" (__res_r0) \ | 443 | : "=r" (__res_r0) \ |
| 442 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1) ) ); \ | 444 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1) ) \ |
| 445 | : "memory" ); \ | ||
| 443 | __res = __res_r0; \ | 446 | __res = __res_r0; \ |
| 444 | __syscall_return(type,__res); \ | 447 | __syscall_return(type,__res); \ |
| 445 | } | 448 | } |
| @@ -456,7 +459,8 @@ type name(type1 arg1,type2 arg2,type3 arg3) { \ | |||
| 456 | __asm__ __volatile__ ( \ | 459 | __asm__ __volatile__ ( \ |
| 457 | __syscall(name) \ | 460 | __syscall(name) \ |
| 458 | : "=r" (__res_r0) \ | 461 | : "=r" (__res_r0) \ |
| 459 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2) ) ); \ | 462 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2) ) \ |
| 463 | : "memory" ); \ | ||
| 460 | __res = __res_r0; \ | 464 | __res = __res_r0; \ |
| 461 | __syscall_return(type,__res); \ | 465 | __syscall_return(type,__res); \ |
| 462 | } | 466 | } |
| @@ -474,7 +478,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ | |||
| 474 | __asm__ __volatile__ ( \ | 478 | __asm__ __volatile__ ( \ |
| 475 | __syscall(name) \ | 479 | __syscall(name) \ |
| 476 | : "=r" (__res_r0) \ | 480 | : "=r" (__res_r0) \ |
| 477 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) ) ); \ | 481 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) ) \ |
| 482 | : "memory" ); \ | ||
| 478 | __res = __res_r0; \ | 483 | __res = __res_r0; \ |
| 479 | __syscall_return(type,__res); \ | 484 | __syscall_return(type,__res); \ |
| 480 | } | 485 | } |
| @@ -494,7 +499,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ | |||
| 494 | __syscall(name) \ | 499 | __syscall(name) \ |
| 495 | : "=r" (__res_r0) \ | 500 | : "=r" (__res_r0) \ |
| 496 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ | 501 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ |
| 497 | "r" (__r3), "r" (__r4) ) ); \ | 502 | "r" (__r3), "r" (__r4) ) \ |
| 503 | : "memory" ); \ | ||
| 498 | __res = __res_r0; \ | 504 | __res = __res_r0; \ |
| 499 | __syscall_return(type,__res); \ | 505 | __syscall_return(type,__res); \ |
| 500 | } | 506 | } |
| @@ -514,7 +520,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6 | |||
| 514 | __syscall(name) \ | 520 | __syscall(name) \ |
| 515 | : "=r" (__res_r0) \ | 521 | : "=r" (__res_r0) \ |
| 516 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ | 522 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ |
| 517 | "r" (__r3), "r" (__r4), "r" (__r5) ) ); \ | 523 | "r" (__r3), "r" (__r4), "r" (__r5) ) \ |
| 524 | : "memory" ); \ | ||
| 518 | __res = __res_r0; \ | 525 | __res = __res_r0; \ |
| 519 | __syscall_return(type,__res); \ | 526 | __syscall_return(type,__res); \ |
| 520 | } | 527 | } |
