aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-20 13:14:29 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-20 13:14:29 -0500
commitd7f786e06538081dd10c97931a89418699fe609d (patch)
tree750c6b313711c9df5d6a12197587e0372764df13 /drivers
parente5717c48ed52feebd59756578debd34eaeb9d262 (diff)
parentf00a3ec4d47b51c5995fe10f8252a90aca331e62 (diff)
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: [NET] Eliminate user-selectable CONFIG_MV643XX_ETH_[012] [MIPS] Drop __init from init_8259A() [MIPS] Fix Kconfig typo bug [MIPS] Fix double signal on trap and break instruction [MIPS] sigset_32 has been made redundand by compat_sigset_t. [MIPS] emma2rh: Remove needless <asm/i8259.h> inclusion. [MIPS] Add MTD device support for Cobalt
Diffstat (limited to 'drivers')
-rw-r--r--drivers/char/lcd.c168
-rw-r--r--drivers/char/lcd.h32
-rw-r--r--drivers/net/Kconfig21
3 files changed, 0 insertions, 221 deletions
diff --git a/drivers/char/lcd.c b/drivers/char/lcd.c
index d649abbf08..5f4fdcf7c9 100644
--- a/drivers/char/lcd.c
+++ b/drivers/char/lcd.c
@@ -409,138 +409,6 @@ static int lcd_ioctl(struct inode *inode, struct file *file,
409 break; 409 break;
410 } 410 }
411 411
412// Erase the flash
413
414 case FLASH_Erase:{
415
416 int ctr = 0;
417
418 if ( !capable(CAP_SYS_ADMIN) ) return -EPERM;
419
420 pr_info(LCD "Erasing Flash\n");
421
422 // Chip Erase Sequence
423 WRITE_FLASH(kFlash_Addr1, kFlash_Data1);
424 WRITE_FLASH(kFlash_Addr2, kFlash_Data2);
425 WRITE_FLASH(kFlash_Addr1, kFlash_Erase3);
426 WRITE_FLASH(kFlash_Addr1, kFlash_Data1);
427 WRITE_FLASH(kFlash_Addr2, kFlash_Data2);
428 WRITE_FLASH(kFlash_Addr1, kFlash_Erase6);
429
430 while ((!dqpoll(0x00000000, 0xFF))
431 && (!timeout(0x00000000))) {
432 ctr++;
433 }
434
435 if (READ_FLASH(0x07FFF0) == 0xFF) {
436 pr_info(LCD "Erase Successful\n");
437 } else if (timeout) {
438 pr_info(LCD "Erase Timed Out\n");
439 }
440
441 break;
442 }
443
444// burn the flash
445
446 case FLASH_Burn:{
447
448 volatile unsigned long burn_addr;
449 unsigned long flags;
450 unsigned int i, index;
451 unsigned char *rom;
452
453
454 struct lcd_display display;
455
456 if ( !capable(CAP_SYS_ADMIN) ) return -EPERM;
457
458 if (copy_from_user
459 (&display, (struct lcd_display *) arg,
460 sizeof(struct lcd_display)))
461 return -EFAULT;
462 rom = kmalloc((128), GFP_ATOMIC);
463 if (rom == NULL) {
464 printk(KERN_ERR LCD "kmalloc() failed in %s\n",
465 __FUNCTION__);
466 return -ENOMEM;
467 }
468
469 pr_info(LCD "Starting Flash burn\n");
470 for (i = 0; i < FLASH_SIZE; i = i + 128) {
471
472 if (copy_from_user
473 (rom, display.RomImage + i, 128)) {
474 kfree(rom);
475 return -EFAULT;
476 }
477 burn_addr = kFlashBase + i;
478 spin_lock_irqsave(&lcd_lock, flags);
479 for (index = 0; index < (128); index++) {
480
481 WRITE_FLASH(kFlash_Addr1,
482 kFlash_Data1);
483 WRITE_FLASH(kFlash_Addr2,
484 kFlash_Data2);
485 WRITE_FLASH(kFlash_Addr1,
486 kFlash_Prog);
487 *((volatile unsigned char *)burn_addr) =
488 (volatile unsigned char) rom[index];
489
490 while ((!dqpoll (burn_addr,
491 (volatile unsigned char)
492 rom[index])) &&
493 (!timeout(burn_addr))) { }
494 burn_addr++;
495 }
496 spin_unlock_irqrestore(&lcd_lock, flags);
497 if (* ((volatile unsigned char *)
498 (burn_addr - 1)) ==
499 (volatile unsigned char)
500 rom[index - 1]) {
501 } else if (timeout) {
502 pr_info(LCD "Flash burn timed out\n");
503 }
504
505
506 }
507 kfree(rom);
508
509 pr_info(LCD "Flash successfully burned\n");
510
511 break;
512 }
513
514// read the flash all at once
515
516 case FLASH_Read:{
517
518 unsigned char *user_bytes;
519 volatile unsigned long read_addr;
520 unsigned int i;
521
522 user_bytes =
523 &(((struct lcd_display *) arg)->RomImage[0]);
524
525 if (!access_ok
526 (VERIFY_WRITE, user_bytes, FLASH_SIZE))
527 return -EFAULT;
528
529 pr_info(LCD "Reading Flash");
530 for (i = 0; i < FLASH_SIZE; i++) {
531 unsigned char tmp_byte;
532 read_addr = kFlashBase + i;
533 tmp_byte =
534 *((volatile unsigned char *)
535 read_addr);
536 if (__put_user(tmp_byte, &user_bytes[i]))
537 return -EFAULT;
538 }
539
540
541 break;
542 }
543
544 default: 412 default:
545 return -EINVAL; 413 return -EINVAL;
546 414
@@ -644,42 +512,6 @@ static void __exit lcd_exit(void)
644 misc_deregister(&lcd_dev); 512 misc_deregister(&lcd_dev);
645} 513}
646 514
647//
648// Function: dqpoll
649//
650// Description: Polls the data lines to see if the flash is busy
651//
652// In: address, byte data
653//
654// Out: 0 = busy, 1 = write or erase complete
655//
656//
657
658static int dqpoll(volatile unsigned long address, volatile unsigned char data)
659{
660 volatile unsigned char dq7;
661
662 dq7 = data & 0x80;
663
664 return ((READ_FLASH(address) & 0x80) == dq7);
665}
666
667//
668// Function: timeout
669//
670// Description: Checks to see if erase or write has timed out
671// By polling dq5
672//
673// In: address
674//
675//
676// Out: 0 = not timed out, 1 = timed out
677
678static int timeout(volatile unsigned long address)
679{
680 return (READ_FLASH(address) & 0x20) == 0x20;
681}
682
683module_init(lcd_init); 515module_init(lcd_init);
684module_exit(lcd_exit); 516module_exit(lcd_exit);
685 517
diff --git a/drivers/char/lcd.h b/drivers/char/lcd.h
index a8d4ae7371..290b3ff23b 100644
--- a/drivers/char/lcd.h
+++ b/drivers/char/lcd.h
@@ -14,11 +14,7 @@
14 14
15// function headers 15// function headers
16 16
17static int dqpoll(volatile unsigned long, volatile unsigned char );
18static int timeout(volatile unsigned long);
19
20#define LCD_CHARS_PER_LINE 40 17#define LCD_CHARS_PER_LINE 40
21#define FLASH_SIZE 524288
22#define MAX_IDLE_TIME 120 18#define MAX_IDLE_TIME 120
23 19
24struct lcd_display { 20struct lcd_display {
@@ -54,26 +50,6 @@ struct lcd_display {
54#define LCDTimeoutValue 0xfff 50#define LCDTimeoutValue 0xfff
55 51
56 52
57// Flash definitions AMD 29F040
58#define kFlashBase 0x0FC00000
59
60#define kFlash_Addr1 0x5555
61#define kFlash_Addr2 0x2AAA
62#define kFlash_Data1 0xAA
63#define kFlash_Data2 0x55
64#define kFlash_Prog 0xA0
65#define kFlash_Erase3 0x80
66#define kFlash_Erase6 0x10
67#define kFlash_Read 0xF0
68
69#define kFlash_ID 0x90
70#define kFlash_VenAddr 0x00
71#define kFlash_DevAddr 0x01
72#define kFlash_VenID 0x01
73#define kFlash_DevID 0xA4 // 29F040
74//#define kFlash_DevID 0xAD // 29F016
75
76
77// Macros 53// Macros
78 54
79#define LCDWriteData(x) outl((x << 24), kLCD_DR) 55#define LCDWriteData(x) outl((x << 24), kLCD_DR)
@@ -89,9 +65,6 @@ struct lcd_display {
89#define WRITE_GAL(x,y) outl(y, 0x04000000 | (x)) 65#define WRITE_GAL(x,y) outl(y, 0x04000000 | (x))
90#define BusyCheck() while ((LCDReadInst & 0x80) == 0x80) 66#define BusyCheck() while ((LCDReadInst & 0x80) == 0x80)
91 67
92#define WRITE_FLASH(x,y) outb((char)y, kFlashBase | (x))
93#define READ_FLASH(x) (inb(kFlashBase | (x)))
94
95 68
96 69
97/* 70/*
@@ -124,11 +97,6 @@ struct lcd_display {
124// Button defs 97// Button defs
125#define BUTTON_Read 50 98#define BUTTON_Read 50
126 99
127// Flash command codes
128#define FLASH_Erase 60
129#define FLASH_Burn 61
130#define FLASH_Read 62
131
132 100
133// Ethernet LINK check hackaroo 101// Ethernet LINK check hackaroo
134#define LINK_Check 90 102#define LINK_Check 90
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index d9400ef871..9d5c083f33 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -2307,27 +2307,6 @@ config MV643XX_ETH
2307 chipset which is used in the Momenco Ocelot C and Jaguar ATX and 2307 chipset which is used in the Momenco Ocelot C and Jaguar ATX and
2308 Pegasos II, amongst other PPC and MIPS boards. 2308 Pegasos II, amongst other PPC and MIPS boards.
2309 2309
2310config MV643XX_ETH_0
2311 bool "MV-643XX Port 0"
2312 depends on MV643XX_ETH
2313 help
2314 This enables support for Port 0 of the Marvell MV643XX Gigabit
2315 Ethernet.
2316
2317config MV643XX_ETH_1
2318 bool "MV-643XX Port 1"
2319 depends on MV643XX_ETH
2320 help
2321 This enables support for Port 1 of the Marvell MV643XX Gigabit
2322 Ethernet.
2323
2324config MV643XX_ETH_2
2325 bool "MV-643XX Port 2"
2326 depends on MV643XX_ETH
2327 help
2328 This enables support for Port 2 of the Marvell MV643XX Gigabit
2329 Ethernet.
2330
2331config QLA3XXX 2310config QLA3XXX
2332 tristate "QLogic QLA3XXX Network Driver Support" 2311 tristate "QLogic QLA3XXX Network Driver Support"
2333 depends on PCI 2312 depends on PCI