lkml.org 
[lkml]   [2002]   [Jan]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH] mesh: target 0 aborted
    From
    Date
    This patch makes mesh.c compile, by adapting it to the new
    pmac_feature API (ported from the ppc tree).

    In addition it contains the fix from Thomas Capricelli for the
    infamous "mesh: target 0 aborted" error, which I've been personally
    observing since 2.1.13x.

    Regards,
    -velco


    --- 1.1/drivers/scsi/mesh.c Sat Dec 8 02:14:29 2001
    +++ edited/drivers/scsi/mesh.c Wed Jan 2 00:02:23 2002
    @@ -28,7 +28,8 @@
    #include <asm/irq.h>
    #include <asm/hydra.h>
    #include <asm/processor.h>
    -#include <asm/feature.h>
    +#include <asm/machdep.h>
    +#include <asm/pmac_feature.h>
    #ifdef CONFIG_PMAC_PBOOK
    #include <linux/adb.h>
    #include <linux/pmu.h>
    @@ -155,7 +156,6 @@
    struct mesh_target tgts[8];
    void *dma_cmd_space;
    struct device_node *ofnode;
    - u8* mio_base;
    #ifndef MESH_NEW_STYLE_EH
    Scsi_Cmnd *completed_q;
    Scsi_Cmnd *completed_qtail;
    @@ -258,8 +258,6 @@
    if (mesh == 0)
    mesh = find_compatible_devices("scsi", "chrp,mesh0");
    for (; mesh != 0; mesh = mesh->next) {
    - struct device_node *mio;
    -
    if (mesh->n_addrs != 2 || mesh->n_intrs != 2) {
    printk(KERN_ERR "mesh: expected 2 addrs and 2 intrs"
    " (got %d,%d)", mesh->n_addrs, mesh->n_intrs);
    @@ -325,12 +323,6 @@
    if (mesh_sync_period < minper)
    mesh_sync_period = minper;

    - ms->mio_base = 0;
    - for (mio = ms->ofnode->parent; mio; mio = mio->parent)
    - if (strcmp(mio->name, "mac-io") == 0 && mio->n_addrs > 0)
    - break;
    - if (mio)
    - ms->mio_base = (u8 *) ioremap(mio->addrs[0].address, 0x40);
    set_mesh_power(ms, 1);

    mesh_init(ms);
    @@ -363,11 +355,9 @@
    iounmap((void *) ms->mesh);
    if (ms->dma)
    iounmap((void *) ms->dma);
    - if (ms->mio_base)
    - iounmap((void *) ms->mio_base);
    kfree(ms->dma_cmd_space);
    free_irq(ms->meshintr, ms);
    - feature_clear(ms->ofnode, FEATURE_MESH_enable);
    + pmac_call_feature(PMAC_FTR_MESH_ENABLE, ms->ofnode, 0, 0);
    return 0;
    }

    @@ -377,16 +367,10 @@
    if (_machine != _MACH_Pmac)
    return;
    if (state) {
    - feature_set(ms->ofnode, FEATURE_MESH_enable);
    - /* This seems to enable the termination power. strangely
    - this doesn't fully agree with OF, but with MacOS */
    - if (ms->mio_base)
    - out_8(ms->mio_base + 0x36, 0x70);
    + pmac_call_feature(PMAC_FTR_MESH_ENABLE, ms->ofnode, 0, 1);
    mdelay(200);
    } else {
    - feature_clear(ms->ofnode, FEATURE_MESH_enable);
    - if (ms->mio_base)
    - out_8(ms->mio_base + 0x36, 0x34);
    + pmac_call_feature(PMAC_FTR_MESH_ENABLE, ms->ofnode, 0, 1);
    mdelay(10);
    }
    }
    @@ -584,25 +568,17 @@

    udelay(100);

    - out_le32(&md->control, (RUN|PAUSE|FLUSH|WAKE) << 16); /* stop dma */
    - out_8(&mr->exception, 0xff); /* clear all exception bits */
    - out_8(&mr->error, 0xff); /* clear all error bits */
    + out_8(&mr->exception, 0xff);
    + out_8(&mr->error, 0xff);
    out_8(&mr->sequence, SEQ_RESETMESH);
    udelay(10);
    +
    + out_8(&mr->interrupt, 0xff); /* clear all interrupt bits */
    out_8(&mr->intr_mask, INT_ERROR | INT_EXCEPTION | INT_CMDDONE);
    out_8(&mr->source_id, ms->host->this_id);
    out_8(&mr->sel_timeout, 25); /* 250ms */
    - out_8(&mr->sync_params, ASYNC_PARAMS);
    -
    - out_8(&mr->bus_status1, BS1_RST); /* assert RST */
    - udelay(30); /* leave it on for >= 25us */
    - out_8(&mr->bus_status1, 0); /* negate RST */
    -
    - out_8(&mr->sequence, SEQ_FLUSHFIFO);
    - udelay(1);
    - out_8(&mr->sync_params, ASYNC_PARAMS);
    - out_8(&mr->sequence, SEQ_ENBRESEL);
    - out_8(&mr->interrupt, 0xff); /* clear all interrupt bits */
    + out_8(&mr->sync_params, ASYNC_PARAMS); /* asynchronous initially */
    + out_le32(&md->control, (RUN|PAUSE|FLUSH|WAKE) << 16);
    }

    /*
    -
    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:18    [W:0.026 / U:0.240 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site