/* check link state and media speed */ db->Speed =10; i=0; do{ reg_nsr = ior(db,0x1); if(reg_nsr & 0x40)/* link OK!! */ { /* wait for detected Speed */ mdelay(200); reg_nsr = ior(db,0x1); if(reg_nsr & 0x80) db->Speed =10; else db->Speed =100; break; } i++; mdelay(1); }while(i<3000);/* wait 3 second */ //printk("i=%d Speed=%d/n",i,db->Speed);
/* set and active a timer process */ init_timer(&db->timer); db->timer.expires = DMFE_TIMER_WUT * 2; db->timer.data =(unsignedlong)dev; db->timer.function =&dmfe_timer; add_timer(&db->timer);//Move to DM9000 initiallization was finished.
/** * request_irq - allocate an interrupt line * @irq: Interrupt line to allocate * @handler: Function to be called when the IRQ occurs * @irqflags: Interrupt type flags * @devname: An ascii name for the claiming device * @dev_id: A cookie passed back to the handler function * * This call allocates interrupt resources and enables the * interrupt line and IRQ handling. From the point this * call is made your handler function may be invoked. Since * your handler function must clear any interrupt the board * raises, you must take care both to initialise your hardware * and to set up the interrupt handler in the right order. * * Dev_id must be globally unique. Normally the address of the * device data structure is used as the cookie. Since the handler * receives this value it makes sense to use it. * * If your interrupt is shared you must pass a non NULL dev_id * as this is required when freeing the interrupt. * * Flags: * * IRQF_SHARED Interrupt is shared * IRQF_DISABLED Disable local interrupts while processing * IRQF_SAMPLE_RANDOM The interrupt can be used for entropy * */ int request_irq(unsignedint irq, irq_handler_t handler, unsignedlong irqflags,constchar*devname,void*dev_id)
/** * set_irq_type - set the irq type for an irq * @irq: irq number * @type: interrupt type - see include/linux/interrupt.h */ int set_irq_type(unsignedint irq,unsignedint type)