[EMAIL PROTECTED] (Adam Belay) wrote:
>
>  It looks ok.  My only concern is what would happen if the isa probe succeded
>  but the pnp_register_driver failed?  "pnp_register_driver" return -ENODEV if
>  "CONFIG_PNP" isn't enabled.  Do you think this would conflict with legacy
>  probing?

Fair enough.  How about this?

static void ns588_unregister_ports(void)
{
        struct ns558 *port;

        list_for_each_entry(port, &ns558_list, node) {
                gameport_unregister_port(&port->gameport);
                switch (port->type) {

#ifdef CONFIG_PNP
                        case NS558_PNP:
                                /* fall through */
#endif
                        case NS558_ISA:
                                release_region(port->gameport.io &
                                        ~(port->size - 1), port->size);
                                kfree(port);
                                break;

                        default:
                                break;
                }
        }
}

static int __init ns558_init(void)
{
        int i = 0;
        int ret;

/*
 * Probe for ISA ports.
 */

        while (ns558_isa_portlist[i])
                ns558_isa_probe(ns558_isa_portlist[i++]);

        ret = pnp_register_driver(&ns558_pnp_driver);
        if (ret < 0) {
                ns588_unregister_ports();
                return ret;
        }
        return 0;
}

static void __exit ns558_exit(void)
{
        ns588_unregister_ports();
        pnp_unregister_driver(&ns558_pnp_driver);
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to