lkml.org 
[lkml]   [2003]   [Jul]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 2.5] [4/6] EISA support updates
    From
    Date
    PA-RISC changes :

    - Probe the right number of EISA slots on PA-RISC. No more, no less.

    M.

    diff -ruN linux-latest/drivers/parisc/eisa.c linux-eisa/drivers/parisc/eisa.c
    --- linux-latest/drivers/parisc/eisa.c 2003-07-04 09:38:48.000000000 +0200
    +++ linux-eisa/drivers/parisc/eisa.c 2003-07-04 09:39:46.000000000 +0200
    @@ -378,19 +378,21 @@
    }
    }
    eisa_eeprom_init(eisa_dev.eeprom_addr);
    - eisa_enumerator(eisa_dev.eeprom_addr, &eisa_dev.hba.io_space, &eisa_dev.hba.lmmio_space);
    + result = eisa_enumerator(eisa_dev.eeprom_addr, &eisa_dev.hba.io_space, &eisa_dev.hba.lmmio_space);
    init_eisa_pic();

    - /* FIXME : Get the number of slots from the enumerator, not a
    - * hadcoded value. Also don't enumerate the bus twice. */
    - eisa_dev.root.dev = &dev->dev;
    - dev->dev.driver_data = &eisa_dev.root;
    - eisa_dev.root.bus_base_addr = 0;
    - eisa_dev.root.res = &eisa_dev.hba.io_space;
    - eisa_dev.root.slots = EISA_MAX_SLOTS;
    - if (eisa_root_register (&eisa_dev.root)) {
    - printk(KERN_ERR "EISA: Failed to register EISA root\n");
    - return -1;
    + if (result >= 0) {
    + /* FIXME : Don't enumerate the bus twice. */
    + eisa_dev.root.dev = &dev->dev;
    + dev->dev.driver_data = &eisa_dev.root;
    + eisa_dev.root.bus_base_addr = 0;
    + eisa_dev.root.res = &eisa_dev.hba.io_space;
    + eisa_dev.root.slots = result;
    + eisa_dev.root.dma_mask = 0xffffffff; /* wild guess */
    + if (eisa_root_register (&eisa_dev.root)) {
    + printk(KERN_ERR "EISA: Failed to register EISA root\n");
    + return -1;
    + }
    }

    return 0;
    diff -ruN linux-latest/drivers/parisc/eisa_enumerator.c linux-eisa/drivers/parisc/eisa_enumerator.c
    --- linux-latest/drivers/parisc/eisa_enumerator.c 2003-07-04 09:39:09.000000000 +0200
    +++ linux-eisa/drivers/parisc/eisa_enumerator.c 2003-07-04 09:40:06.000000000 +0200
    @@ -438,6 +438,10 @@
    id = le32_to_cpu(inl(SLOT2PORT(slot)+EPI));

    if (0xffffffff == id) {
    + /* Maybe we didn't expect a card to be here... */
    + if (es->eisa_slot_id == 0xffffffff)
    + return -1;
    +
    /* this board is not here or it does not
    * support readid
    */
    @@ -499,8 +503,7 @@
    (&eeprom_buf[HPEE_SLOT_INFO(i)]);

    if (-1==init_slot(i+1, es)) {
    - return -1;
    -
    + continue;
    }

    if (es->config_data_offset < HPEE_MAX_LENGTH) {
    @@ -513,6 +516,6 @@
    return -1;
    }
    }
    - return 0;
    + return eh->num_slots;
    }

    --
    Places change, faces change. Life is so very strange.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:46    [W:3.423 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site