On Fri, 05 Jan 2007 07:10:09 -0800 Sumant Patro wrote: Hi,
> --- > > Documentation/scsi/ChangeLog.megaraid | 16 ++ > drivers/scsi/megaraid/megaraid_mbox.c | 140 +++++++++++++++++++----- > drivers/scsi/megaraid/megaraid_mbox.h | 4 > 3 files changed, 130 insertions(+), 30 deletions(-) > > diff -uprN linux-2.6.orig/drivers/scsi/megaraid/megaraid_mbox.c > linux-2.6.new/drivers/scsi/megaraid/megaraid_mbox.c > --- linux-2.6.orig/drivers/scsi/megaraid/megaraid_mbox.c 2006-12-28 > 09:56:04.000000000 -0800 > +++ linux-2.6.new/drivers/scsi/megaraid/megaraid_mbox.c 2007-01-04 > 11:22:21.000000000 -0800 > @@ -3380,6 +3386,84 @@ megaraid_mbox_flush_cache(adapter_t *ada > > > /** > + * megaraid_mbox_fire_sync_cmd - fire the sync cmd > + * @param adapter : soft state for the controller That (above) should just be: * @adapter: (plus its description; the description there doesn't seem to agree with its parameter name). > + * > + * Clears the pending cmds in FW and reinits its RAID structs > + */ > +static int > +megaraid_mbox_fire_sync_cmd(adapter_t *adapter) > +{ > + mbox_t *mbox; > + uint8_t raw_mbox[sizeof(mbox_t)]; > + mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter); > + mbox64_t *mbox64; > + int status = 0; > + int i; > + uint32_t dword; > + > + mbox = (mbox_t *)raw_mbox; > + > + memset((caddr_t)raw_mbox, 0, sizeof(mbox_t)); > + > + raw_mbox[0] = 0xFF; > + > + mbox64 = raid_dev->mbox64; > + mbox = raid_dev->mbox; > + > + /* Wait until mailbox is free */ > + if (megaraid_busywait_mbox(raid_dev) != 0) { > + status = 1; > + goto blocked_mailbox; > + } > + > + /* Copy mailbox data into host structure */ > + memcpy((caddr_t)mbox, (caddr_t)raw_mbox, 16); > + mbox->cmdid = 0xFE; > + mbox->busy = 1; > + mbox->poll = 0; > + mbox->ack = 0; > + mbox->numstatus = 0; > + mbox->status = 0; > + > + wmb(); > + WRINDOOR(raid_dev, raid_dev->mbox_dma | 0x1); > + > + /* Wait for maximum 1 min for status to post. > + * If the Firmware SUPPORTS the ABOVE COMMAND, > + * mbox->cmd will be set to 0 > + * else > + * the firmware will reject the command with > + * mbox->numstatus set to 1 > + */ > + > + i = 0; > + status = 0; > + while (!mbox->numstatus && mbox->cmd == 0xFF) { > + rmb(); > + msleep(1); > + i++; > + if (i > 1000 * 60) { > + status = 1; > + break; > + } > + } > + if (mbox->numstatus == 1) > + status = 1; /*cmd not supported*/ > + > + /* Check for interrupt line */ > + dword = RDOUTDOOR(raid_dev); > + WROUTDOOR(raid_dev, dword); > + WRINDOOR(raid_dev,2); > + > + return status; > + > +blocked_mailbox: > + con_log(CL_ANN, (KERN_WARNING "megaraid: blocked mailbox\n")); > + return status; > +} > + > +/** > * megaraid_mbox_display_scb - display SCB information, mostly debug purposes > * @param adapter : controllers' soft state > * @param scb : SCB to be displayed I haven't looked at the entire source file, but these extra "param" words should not be there. kernel-doc syntax is just @name: description --- ~Randy - 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/