diff options
| -rw-r--r-- | drivers/mtd/nand/nand_base.c | 26 | 
1 files changed, 25 insertions, 1 deletions
| diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 5d222460b42a..95e96fa1fceb 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c | |||
| @@ -80,6 +80,7 @@ | |||
| 80 | #include <linux/mtd/compatmac.h> | 80 | #include <linux/mtd/compatmac.h> | 
| 81 | #include <linux/interrupt.h> | 81 | #include <linux/interrupt.h> | 
| 82 | #include <linux/bitops.h> | 82 | #include <linux/bitops.h> | 
| 83 | #include <linux/leds.h> | ||
| 83 | #include <asm/io.h> | 84 | #include <asm/io.h> | 
| 84 | 85 | ||
| 85 | #ifdef CONFIG_MTD_PARTITIONS | 86 | #ifdef CONFIG_MTD_PARTITIONS | 
| @@ -515,6 +516,8 @@ static int nand_block_checkbad (struct mtd_info *mtd, loff_t ofs, int getchip, i | |||
| 515 | return nand_isbad_bbt (mtd, ofs, allowbbt); | 516 | return nand_isbad_bbt (mtd, ofs, allowbbt); | 
| 516 | } | 517 | } | 
| 517 | 518 | ||
| 519 | DEFINE_LED_TRIGGER(nand_led_trigger); | ||
| 520 | |||
| 518 | /* | 521 | /* | 
| 519 | * Wait for the ready pin, after a command | 522 | * Wait for the ready pin, after a command | 
| 520 | * The timeout is catched later. | 523 | * The timeout is catched later. | 
| @@ -524,12 +527,14 @@ static void nand_wait_ready(struct mtd_info *mtd) | |||
| 524 | struct nand_chip *this = mtd->priv; | 527 | struct nand_chip *this = mtd->priv; | 
| 525 | unsigned long timeo = jiffies + 2; | 528 | unsigned long timeo = jiffies + 2; | 
| 526 | 529 | ||
| 530 | led_trigger_event(nand_led_trigger, LED_FULL); | ||
| 527 | /* wait until command is processed or timeout occures */ | 531 | /* wait until command is processed or timeout occures */ | 
| 528 | do { | 532 | do { | 
| 529 | if (this->dev_ready(mtd)) | 533 | if (this->dev_ready(mtd)) | 
| 530 | return; | 534 | break; | 
| 531 | touch_softlockup_watchdog(); | 535 | touch_softlockup_watchdog(); | 
| 532 | } while (time_before(jiffies, timeo)); | 536 | } while (time_before(jiffies, timeo)); | 
| 537 | led_trigger_event(nand_led_trigger, LED_OFF); | ||
| 533 | } | 538 | } | 
| 534 | 539 | ||
| 535 | /** | 540 | /** | 
| @@ -817,6 +822,8 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this, int state) | |||
| 817 | else | 822 | else | 
| 818 | timeo += (HZ * 20) / 1000; | 823 | timeo += (HZ * 20) / 1000; | 
| 819 | 824 | ||
| 825 | led_trigger_event(nand_led_trigger, LED_FULL); | ||
| 826 | |||
| 820 | /* Apply this short delay always to ensure that we do wait tWB in | 827 | /* Apply this short delay always to ensure that we do wait tWB in | 
| 821 | * any case on any machine. */ | 828 | * any case on any machine. */ | 
| 822 | ndelay (100); | 829 | ndelay (100); | 
| @@ -840,6 +847,8 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this, int state) | |||
| 840 | } | 847 | } | 
| 841 | cond_resched(); | 848 | cond_resched(); | 
| 842 | } | 849 | } | 
| 850 | led_trigger_event(nand_led_trigger, LED_OFF); | ||
| 851 | |||
| 843 | status = (int) this->read_byte(mtd); | 852 | status = (int) this->read_byte(mtd); | 
| 844 | return status; | 853 | return status; | 
| 845 | } | 854 | } | 
| @@ -2724,6 +2733,21 @@ void nand_release (struct mtd_info *mtd) | |||
| 2724 | EXPORT_SYMBOL_GPL (nand_scan); | 2733 | EXPORT_SYMBOL_GPL (nand_scan); | 
| 2725 | EXPORT_SYMBOL_GPL (nand_release); | 2734 | EXPORT_SYMBOL_GPL (nand_release); | 
| 2726 | 2735 | ||
| 2736 | |||
| 2737 | static int __init nand_base_init(void) | ||
| 2738 | { | ||
| 2739 | led_trigger_register_simple("nand-disk", &nand_led_trigger); | ||
| 2740 | return 0; | ||
| 2741 | } | ||
| 2742 | |||
| 2743 | static void __exit nand_base_exit(void) | ||
| 2744 | { | ||
| 2745 | led_trigger_unregister_simple(nand_led_trigger); | ||
| 2746 | } | ||
| 2747 | |||
| 2748 | module_init(nand_base_init); | ||
| 2749 | module_exit(nand_base_exit); | ||
| 2750 | |||
| 2727 | MODULE_LICENSE ("GPL"); | 2751 | MODULE_LICENSE ("GPL"); | 
| 2728 | MODULE_AUTHOR ("Steven J. Hill <sjhill@realitydiluted.com>, Thomas Gleixner <tglx@linutronix.de>"); | 2752 | MODULE_AUTHOR ("Steven J. Hill <sjhill@realitydiluted.com>, Thomas Gleixner <tglx@linutronix.de>"); | 
| 2729 | MODULE_DESCRIPTION ("Generic NAND flash driver code"); | 2753 | MODULE_DESCRIPTION ("Generic NAND flash driver code"); | 
