From: viro@parcelfarce.linux.theplanet.co.uk * killed imm_pb_claim() call in imm_init() --- 25-akpm/drivers/scsi/imm.c | 30 +++++++++--------------------- 1 files changed, 9 insertions(+), 21 deletions(-) diff -puN drivers/scsi/imm.c~IMM2-claim-RC1 drivers/scsi/imm.c --- 25/drivers/scsi/imm.c~IMM2-claim-RC1 Wed Jan 14 13:30:33 2004 +++ 25-akpm/drivers/scsi/imm.c Wed Jan 14 13:30:33 2004 @@ -187,12 +187,13 @@ static int imm_detect(Scsi_Host_Template dev->mode = IMM_PS2; /* Done configuration */ - imm_pb_release(dev); if (imm_init(dev)) { + imm_pb_release(dev); parport_unregister_device(dev->dev); continue; } + imm_pb_release(dev); /* now the glue ... */ switch (dev->mode) { @@ -726,26 +727,13 @@ static int imm_select(imm_struct *dev, i static int imm_init(imm_struct *dev) { - int retv; - -#if defined(CONFIG_PARPORT) || defined(CONFIG_PARPORT_MODULE) - if (imm_pb_claim(dev)) - while (dev->p_busy) - schedule(); /* We can safe schedule here */ -#endif - retv = imm_connect(dev, 0); - - if (retv == 1) { - imm_reset_pulse(dev->base); - udelay(1000); /* Delay to allow devices to settle */ - imm_disconnect(dev); - udelay(1000); /* Another delay to allow devices to settle */ - retv = device_check(dev); - imm_pb_release(dev); - return retv; - } - imm_pb_release(dev); - return 1; + if (imm_connect(dev, 0) != 1) + return 1; + imm_reset_pulse(dev->base); + udelay(1000); /* Delay to allow devices to settle */ + imm_disconnect(dev); + udelay(1000); /* Another delay to allow devices to settle */ + return device_check(dev); } static inline int imm_send_command(Scsi_Cmnd *cmd) _