@ -158,68 +158,11 @@ static struct notifier_block nettel_notifier_block = {
nettel_reboot_notifier , NULL , 0
} ;
/*
* Erase the configuration file system .
* Used to support the software reset button .
*/
static void nettel_erasecallback ( struct erase_info * done )
{
wait_queue_head_t * wait_q = ( wait_queue_head_t * ) done - > priv ;
wake_up ( wait_q ) ;
}
static struct erase_info nettel_erase ;
int nettel_eraseconfig ( void )
{
struct mtd_info * mtd ;
DECLARE_WAITQUEUE ( wait , current ) ;
wait_queue_head_t wait_q ;
int ret ;
init_waitqueue_head ( & wait_q ) ;
mtd = get_mtd_device ( NULL , 2 ) ;
if ( ! IS_ERR ( mtd ) ) {
nettel_erase . mtd = mtd ;
nettel_erase . callback = nettel_erasecallback ;
nettel_erase . callback = NULL ;
nettel_erase . addr = 0 ;
nettel_erase . len = mtd - > size ;
nettel_erase . priv = ( u_long ) & wait_q ;
nettel_erase . priv = 0 ;
set_current_state ( TASK_INTERRUPTIBLE ) ;
add_wait_queue ( & wait_q , & wait ) ;
ret = mtd - > erase ( mtd , & nettel_erase ) ;
if ( ret ) {
set_current_state ( TASK_RUNNING ) ;
remove_wait_queue ( & wait_q , & wait ) ;
put_mtd_device ( mtd ) ;
return ( ret ) ;
}
schedule ( ) ; /* Wait for erase to finish. */
remove_wait_queue ( & wait_q , & wait ) ;
put_mtd_device ( mtd ) ;
}
return ( 0 ) ;
}
# else
int nettel_eraseconfig ( void )
{
return ( 0 ) ;
}
# endif
/****************************************************************************/
int __init nettel_init ( void )
static int __init nettel_init ( void )
{
volatile unsigned long * amdpar ;
unsigned long amdaddr , maxsize ;
@ -473,7 +416,7 @@ out_unmap2:
/****************************************************************************/
void __exit nettel_cleanup ( void )
static void __exit nettel_cleanup ( void )
{
# ifdef CONFIG_MTD_CFI_INTELEXT
unregister_reboot_notifier ( & nettel_notifier_block ) ;