Author: cgutman Date: Fri Oct 15 19:25:07 2010 New Revision: 49158
URL: http://svn.reactos.org/svn/reactos?rev=49158&view=rev Log: [SCSIPORT] - Remove some code duplication and fix a bug of copying the same interrupt information twice for a device with 2 interrupts (instead of the info for interrupt 1 then the info for interrupt 2) effectively making initialization fail because the resource allocation code will detect a conflict with itself
Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c
Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/sc... ============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c [iso-8859-1] (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c [iso-8859-1] Fri Oct 15 19:25:07 2010 @@ -2216,7 +2216,7 @@ }
/* If we use interrupt(s), copy them */ - if (Interrupt) + while (Interrupt) { ResourceDescriptor->Type = CmResourceTypeInterrupt;
@@ -2232,37 +2232,12 @@ ResourceDescriptor->Flags = CM_RESOURCE_INTERRUPT_LATCHED; }
- ResourceDescriptor->u.Interrupt.Level = PortConfig->BusInterruptLevel; - ResourceDescriptor->u.Interrupt.Vector = PortConfig->BusInterruptVector; + ResourceDescriptor->u.Interrupt.Level = (Interrupt == 2) ? PortConfig->BusInterruptLevel2 : PortConfig->BusInterruptLevel; + ResourceDescriptor->u.Interrupt.Vector = (Interrupt == 2) ? PortConfig->BusInterruptVector2 : PortConfig->BusInterruptVector; ResourceDescriptor->u.Interrupt.Affinity = 0;
ResourceDescriptor++; Interrupt--; - } - - /* Copy 2nd interrupt - FIXME: Stupid code duplication, remove */ - if (Interrupt) - { - ResourceDescriptor->Type = CmResourceTypeInterrupt; - - if (PortConfig->AdapterInterfaceType == MicroChannel || - PortConfig->InterruptMode == LevelSensitive) - { - ResourceDescriptor->ShareDisposition = CmResourceShareShared; - ResourceDescriptor->Flags = CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE; - } - else - { - ResourceDescriptor->ShareDisposition = CmResourceShareDeviceExclusive; - ResourceDescriptor->Flags = CM_RESOURCE_INTERRUPT_LATCHED; - } - - ResourceDescriptor->u.Interrupt.Level = PortConfig->BusInterruptLevel; - ResourceDescriptor->u.Interrupt.Vector = PortConfig->BusInterruptVector; - ResourceDescriptor->u.Interrupt.Affinity = 0; - - ResourceDescriptor++; }
/* Copy DMA data */