Lines Matching refs:isapnp

3 *    isapnp.c -- Etherboot isapnp support for the 3Com 3c515
67 #include <gpxe/isapnp.h>
90 #define ISAPNP_DEV_ID_DATA(isapnp) \
91 (isapnp)->vendor_id, (isapnp)->prod_id, \
92 isa_id_string ( (isapnp)->vendor_id, (isapnp)->prod_id )
543 * @v isapnp ISAPnP device
553 void isapnp_device_activation ( struct isapnp_device *isapnp,
558 isapnp_wake ( isapnp->csn );
559 isapnp_logicaldevice ( isapnp->logdev );
570 isapnp->csn, isapnp->logdev );
576 * @v isapnp ISAPnP device
582 static int isapnp_probe ( struct isapnp_device *isapnp ) {
589 "io %x irq %d)\n", isapnp->csn, isapnp->logdev,
590 isapnp->vendor_id, isapnp->prod_id,
591 isa_id_string ( isapnp->vendor_id, isapnp->prod_id ),
592 isapnp->ioaddr, isapnp->irqno );
597 if ( id->vendor_id != isapnp->vendor_id )
600 ISA_PROD_ID ( isapnp->prod_id ) )
602 isapnp->driver = driver;
603 isapnp->driver_name = id->name;
604 DBG ( "...using driver %s\n", isapnp->driver_name );
605 if ( ( rc = driver->probe ( isapnp, id ) ) != 0 ) {
620 * @v isapnp ISAPnP device
622 static void isapnp_remove ( struct isapnp_device *isapnp ) {
623 isapnp->driver->remove ( isapnp );
625 isapnp->csn, isapnp->logdev );
637 struct isapnp_device *isapnp = NULL;
652 if ( ! isapnp )
653 isapnp = malloc ( sizeof ( *isapnp ) );
654 if ( ! isapnp ) {
658 memset ( isapnp, 0, sizeof ( *isapnp ) );
659 isapnp->csn = csn;
660 isapnp->logdev = logdev;
685 isapnp->vendor_id = logdevid.vendor_id;
686 isapnp->prod_id = logdevid.prod_id;
687 isapnp->ioaddr = isapnp_read_iobase ( 0 );
688 isapnp->irqno = isapnp_read_irqno ( 0 );
694 snprintf ( isapnp->dev.name,
695 sizeof ( isapnp->dev.name ),
697 isapnp->dev.desc.bus_type = BUS_TYPE_ISAPNP;
698 isapnp->dev.desc.vendor = isapnp->vendor_id;
699 isapnp->dev.desc.device = isapnp->prod_id;
700 isapnp->dev.desc.ioaddr = isapnp->ioaddr;
701 isapnp->dev.desc.irq = isapnp->irqno;
702 isapnp->dev.parent = &rootdev->dev;
703 list_add ( &isapnp->dev.siblings,
705 INIT_LIST_HEAD ( &isapnp->dev.children );
708 if ( isapnp_probe ( isapnp ) == 0 ) {
710 isapnp = NULL;
713 list_del ( &isapnp->dev.siblings );
719 free ( isapnp );
723 free ( isapnp );
734 struct isapnp_device *isapnp;
737 list_for_each_entry_safe ( isapnp, tmp, &rootdev->dev.children,
739 isapnp_remove ( isapnp );
740 list_del ( &isapnp->dev.siblings );
741 free ( isapnp );