diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/smc91x.h | 44 | ||||
-rw-r--r-- | drivers/serial/s3c2410.c | 2 | ||||
-rw-r--r-- | drivers/serial/serial_lh7a40x.c | 13 | ||||
-rw-r--r-- | drivers/video/Kconfig | 63 |
4 files changed, 101 insertions, 21 deletions
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h index f72a4f57905a..bf776125ca38 100644 --- a/drivers/net/smc91x.h +++ b/drivers/net/smc91x.h | |||
@@ -260,15 +260,17 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
260 | #define RPC_LSA_DEFAULT RPC_LED_TX_RX | 260 | #define RPC_LSA_DEFAULT RPC_LED_TX_RX |
261 | #define RPC_LSB_DEFAULT RPC_LED_100_10 | 261 | #define RPC_LSB_DEFAULT RPC_LED_100_10 |
262 | 262 | ||
263 | #elif defined(CONFIG_MACH_LPD7A400) || defined(CONFIG_MACH_LPD7A404) | 263 | #elif defined(CONFIG_MACH_LPD79520) \ |
264 | || defined(CONFIG_MACH_LPD7A400) \ | ||
265 | || defined(CONFIG_MACH_LPD7A404) | ||
264 | 266 | ||
265 | /* The LPD7A40X_IOBARRIER is necessary to overcome a mismatch between | 267 | /* The LPD7X_IOBARRIER is necessary to overcome a mismatch between the |
266 | * the way that the CPU handles chip selects and the way that the SMC | 268 | * way that the CPU handles chip selects and the way that the SMC chip |
267 | * chip expects the chip select to operate. Refer to | 269 | * expects the chip select to operate. Refer to |
268 | * Documentation/arm/Sharp-LH/IOBarrier for details. The read from | 270 | * Documentation/arm/Sharp-LH/IOBarrier for details. The read from |
269 | * IOBARRIER is a byte as a least-common denominator of possible | 271 | * IOBARRIER is a byte, in order that we read the least-common |
270 | * regions to use as the barrier. It would be wasteful to read 32 | 272 | * denominator. It would be wasteful to read 32 bits from an 8-bit |
271 | * bits from a byte oriented region. | 273 | * accessible region. |
272 | * | 274 | * |
273 | * There is no explicit protection against interrupts intervening | 275 | * There is no explicit protection against interrupts intervening |
274 | * between the writew and the IOBARRIER. In SMC ISR there is a | 276 | * between the writew and the IOBARRIER. In SMC ISR there is a |
@@ -287,25 +289,35 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
287 | #define SMC_CAN_USE_16BIT 1 | 289 | #define SMC_CAN_USE_16BIT 1 |
288 | #define SMC_CAN_USE_32BIT 0 | 290 | #define SMC_CAN_USE_32BIT 0 |
289 | #define SMC_NOWAIT 0 | 291 | #define SMC_NOWAIT 0 |
290 | #define LPD7A40X_IOBARRIER readb (IOBARRIER_VIRT) | 292 | #define LPD7X_IOBARRIER readb (IOBARRIER_VIRT) |
291 | 293 | ||
292 | #define SMC_inw(a,r) readw ((void*) ((a) + (r))) | 294 | #define SMC_inw(a,r)\ |
293 | #define SMC_insw(a,r,p,l) readsw ((void*) ((a) + (r)), p, l) | 295 | ({ unsigned short v = readw ((void*) ((a) + (r))); LPD7X_IOBARRIER; v; }) |
294 | #define SMC_outw(v,a,r) ({ writew ((v), (a) + (r)); LPD7A40X_IOBARRIER; }) | 296 | #define SMC_outw(v,a,r) ({ writew ((v), (a) + (r)); LPD7X_IOBARRIER; }) |
295 | 297 | ||
296 | #define SMC_outsw LPD7A40X_SMC_outsw | 298 | #define SMC_insw LPD7_SMC_insw |
299 | static inline void LPD7_SMC_insw (unsigned char* a, int r, | ||
300 | unsigned char* p, int l) | ||
301 | { | ||
302 | unsigned short* ps = (unsigned short*) p; | ||
303 | while (l-- > 0) { | ||
304 | *ps++ = readw (a + r); | ||
305 | LPD7X_IOBARRIER; | ||
306 | } | ||
307 | } | ||
297 | 308 | ||
298 | static inline void LPD7A40X_SMC_outsw(unsigned long a, int r, | 309 | #define SMC_outsw LPD7_SMC_outsw |
299 | unsigned char* p, int l) | 310 | static inline void LPD7_SMC_outsw (unsigned char* a, int r, |
311 | unsigned char* p, int l) | ||
300 | { | 312 | { |
301 | unsigned short* ps = (unsigned short*) p; | 313 | unsigned short* ps = (unsigned short*) p; |
302 | while (l-- > 0) { | 314 | while (l-- > 0) { |
303 | writew (*ps++, a + r); | 315 | writew (*ps++, a + r); |
304 | LPD7A40X_IOBARRIER; | 316 | LPD7X_IOBARRIER; |
305 | } | 317 | } |
306 | } | 318 | } |
307 | 319 | ||
308 | #define SMC_INTERRUPT_PREAMBLE LPD7A40X_IOBARRIER | 320 | #define SMC_INTERRUPT_PREAMBLE LPD7X_IOBARRIER |
309 | 321 | ||
310 | #define RPC_LSA_DEFAULT RPC_LED_TX_RX | 322 | #define RPC_LSA_DEFAULT RPC_LED_TX_RX |
311 | #define RPC_LSB_DEFAULT RPC_LED_100_10 | 323 | #define RPC_LSB_DEFAULT RPC_LED_100_10 |
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c index f5aac92fb798..53c2465bad2d 100644 --- a/drivers/serial/s3c2410.c +++ b/drivers/serial/s3c2410.c | |||
@@ -1365,7 +1365,7 @@ static inline void s3c2410_serial_exit(void) | |||
1365 | 1365 | ||
1366 | #endif /* CONFIG_CPU_S3C2410 */ | 1366 | #endif /* CONFIG_CPU_S3C2410 */ |
1367 | 1367 | ||
1368 | #ifdef CONFIG_CPU_S3C2440 | 1368 | #if defined(CONFIG_CPU_S3C2440) || defined(CONFIG_CPU_S3C2442) |
1369 | 1369 | ||
1370 | static int s3c2440_serial_setsource(struct uart_port *port, | 1370 | static int s3c2440_serial_setsource(struct uart_port *port, |
1371 | struct s3c24xx_uart_clksrc *clk) | 1371 | struct s3c24xx_uart_clksrc *clk) |
diff --git a/drivers/serial/serial_lh7a40x.c b/drivers/serial/serial_lh7a40x.c index aa521b8e0d4e..776d4ff06084 100644 --- a/drivers/serial/serial_lh7a40x.c +++ b/drivers/serial/serial_lh7a40x.c | |||
@@ -145,14 +145,15 @@ lh7a40xuart_rx_chars (struct uart_port* port) | |||
145 | { | 145 | { |
146 | struct tty_struct* tty = port->info->tty; | 146 | struct tty_struct* tty = port->info->tty; |
147 | int cbRxMax = 256; /* (Gross) limit on receive */ | 147 | int cbRxMax = 256; /* (Gross) limit on receive */ |
148 | unsigned int data, flag;/* Received data and status */ | 148 | unsigned int data; /* Received data and status */ |
149 | unsigned int flag; | ||
149 | 150 | ||
150 | while (!(UR (port, UART_R_STATUS) & nRxRdy) && --cbRxMax) { | 151 | while (!(UR (port, UART_R_STATUS) & nRxRdy) && --cbRxMax) { |
151 | data = UR (port, UART_R_DATA); | 152 | data = UR (port, UART_R_DATA); |
152 | flag = TTY_NORMAL; | 153 | flag = TTY_NORMAL; |
153 | ++port->icount.rx; | 154 | ++port->icount.rx; |
154 | 155 | ||
155 | if (unlikely(data & RxError)) { /* Quick check, short-circuit */ | 156 | if (unlikely(data & RxError)) { |
156 | if (data & RxBreak) { | 157 | if (data & RxBreak) { |
157 | data &= ~(RxFramingError | RxParityError); | 158 | data &= ~(RxFramingError | RxParityError); |
158 | ++port->icount.brk; | 159 | ++port->icount.brk; |
@@ -303,7 +304,7 @@ static void lh7a40xuart_set_mctrl (struct uart_port* port, unsigned int mctrl) | |||
303 | /* Note, kernel appears to be setting DTR and RTS on console. */ | 304 | /* Note, kernel appears to be setting DTR and RTS on console. */ |
304 | 305 | ||
305 | /* *** FIXME: this deserves more work. There's some work in | 306 | /* *** FIXME: this deserves more work. There's some work in |
306 | tracing all of the IO pins. */ | 307 | tracing all of the IO pins. */ |
307 | #if 0 | 308 | #if 0 |
308 | if( port->mapbase == UART1_PHYS) { | 309 | if( port->mapbase == UART1_PHYS) { |
309 | gpioRegs_t *gpio = (gpioRegs_t *)IO_ADDRESS(GPIO_PHYS); | 310 | gpioRegs_t *gpio = (gpioRegs_t *)IO_ADDRESS(GPIO_PHYS); |
@@ -662,9 +663,13 @@ static int __init lh7a40xuart_init(void) | |||
662 | if (ret == 0) { | 663 | if (ret == 0) { |
663 | int i; | 664 | int i; |
664 | 665 | ||
665 | for (i = 0; i < DEV_NR; i++) | 666 | for (i = 0; i < DEV_NR; i++) { |
667 | /* UART3, when used, requires GPIO pin reallocation */ | ||
668 | if (lh7a40x_ports[i].port.mapbase == UART3_PHYS) | ||
669 | GPIO_PINMUX |= 1<<3; | ||
666 | uart_add_one_port (&lh7a40x_reg, | 670 | uart_add_one_port (&lh7a40x_reg, |
667 | &lh7a40x_ports[i].port); | 671 | &lh7a40x_ports[i].port); |
672 | } | ||
668 | } | 673 | } |
669 | return ret; | 674 | return ret; |
670 | } | 675 | } |
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 5641498725d0..5a2840aeb547 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
@@ -167,6 +167,69 @@ config FB_ARMCLCD | |||
167 | here and read <file:Documentation/modules.txt>. The module | 167 | here and read <file:Documentation/modules.txt>. The module |
168 | will be called amba-clcd. | 168 | will be called amba-clcd. |
169 | 169 | ||
170 | choice | ||
171 | |||
172 | depends on FB_ARMCLCD && (ARCH_LH7A40X || ARCH_LH7952X) | ||
173 | prompt "LCD Panel" | ||
174 | default FB_ARMCLCD_SHARP_LQ035Q7DB02 | ||
175 | |||
176 | config FB_ARMCLCD_SHARP_LQ035Q7DB02_HRTFT | ||
177 | bool "LogicPD LCD 3.5\" QVGA w/HRTFT IC" | ||
178 | help | ||
179 | This is an implementation of the Sharp LQ035Q7DB02, a 3.5" | ||
180 | color QVGA, HRTFT panel. The LogicPD device includes an | ||
181 | an integrated HRTFT controller IC. | ||
182 | The native resolution is 240x320. | ||
183 | |||
184 | config FB_ARMCLCD_SHARP_LQ057Q3DC02 | ||
185 | bool "LogicPD LCD 5.7\" QVGA" | ||
186 | help | ||
187 | This is an implementation of the Sharp LQ057Q3DC02, a 5.7" | ||
188 | color QVGA, TFT panel. The LogicPD device includes an | ||
189 | The native resolution is 320x240. | ||
190 | |||
191 | config FB_ARMCLCD_SHARP_LQ64D343 | ||
192 | bool "LogicPD LCD 6.4\" VGA" | ||
193 | help | ||
194 | This is an implementation of the Sharp LQ64D343, a 6.4" | ||
195 | color VGA, TFT panel. The LogicPD device includes an | ||
196 | The native resolution is 640x480. | ||
197 | |||
198 | config FB_ARMCLCD_SHARP_LQ10D368 | ||
199 | bool "LogicPD LCD 10.4\" VGA" | ||
200 | help | ||
201 | This is an implementation of the Sharp LQ10D368, a 10.4" | ||
202 | color VGA, TFT panel. The LogicPD device includes an | ||
203 | The native resolution is 640x480. | ||
204 | |||
205 | |||
206 | config FB_ARMCLCD_SHARP_LQ121S1DG41 | ||
207 | bool "LogicPD LCD 12.1\" SVGA" | ||
208 | help | ||
209 | This is an implementation of the Sharp LQ121S1DG41, a 12.1" | ||
210 | color SVGA, TFT panel. The LogicPD device includes an | ||
211 | The native resolution is 800x600. | ||
212 | |||
213 | This panel requires a clock rate may be an integer fraction | ||
214 | of the base LCDCLK frequency. The driver will select the | ||
215 | highest frequency available that is lower than the maximum | ||
216 | allowed. The panel may flicker if the clock rate is | ||
217 | slower than the recommended minimum. | ||
218 | |||
219 | config FB_ARMCLCD_AUO_A070VW01_WIDE | ||
220 | bool "AU Optronics A070VW01 LCD 7.0\" WIDE" | ||
221 | help | ||
222 | This is an implementation of the AU Optronics, a 7.0" | ||
223 | WIDE Color. The native resolution is 234x480. | ||
224 | |||
225 | config FB_ARMCLCD_HITACHI | ||
226 | bool "Hitachi Wide Screen 800x480" | ||
227 | help | ||
228 | This is an implementation of the Hitachi 800x480. | ||
229 | |||
230 | endchoice | ||
231 | |||
232 | |||
170 | config FB_ACORN | 233 | config FB_ACORN |
171 | bool "Acorn VIDC support" | 234 | bool "Acorn VIDC support" |
172 | depends on (FB = y) && ARM && (ARCH_ACORN || ARCH_CLPS7500) | 235 | depends on (FB = y) && ARM && (ARCH_ACORN || ARCH_CLPS7500) |