Message ID | 1448789980-30094-2-git-send-email-linux@rainbow-software.org (mailing list archive) |
---|---|
State | Deferred, archived |
Headers | show |
On Sun, 29 Nov 2015, Ondrej Zary wrote: > Add I/O register mapping for NCR53C400A and enable PDMA mode to > improve performance and fix non-working IRQ. > > Tested with HP C2502 (and user-space enabler). > > Signed-off-by: Ondrej Zary <linux@rainbow-software.org> > --- > drivers/scsi/g_NCR5380.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c > index ce444da..c3abe48 100644 > --- a/drivers/scsi/g_NCR5380.c > +++ b/drivers/scsi/g_NCR5380.c > @@ -324,7 +324,10 @@ static int __init generic_NCR5380_detect(struct scsi_host_template *tpnt) > #endif > break; > case BOARD_NCR53C400A: > + flags = FLAG_NO_DMA_FIXUP; > +#ifndef PSEUDO_DMA > flags = FLAG_NO_PSEUDO_DMA; > +#endif FLAG_NO_PSEUDO_DMA is not tested unless defined(PSEUDO_DMA), so it shouldn't be set here. I know I made the same mistake in patch 8; it will be fixed in the next submission.
On Sun, 29 Nov 2015, Ondrej Zary wrote: > Add I/O register mapping for NCR53C400A and enable PDMA mode to > improve performance and fix non-working IRQ. > Is CONFIG_SCSI_GENERIC_NCR53C400 is still needed? Can the driver be fully configured at runtime now? > Tested with HP C2502 (and user-space enabler). > It would be nice if the enabler was documented. Documentation/scsi/g_NCR5380.txt might be a good place for that. That file could perhaps be updated (?) Certainly obsolete and misleading information should be removed if you see any.
On Monday 30 November 2015, Finn Thain wrote: > > On Sun, 29 Nov 2015, Ondrej Zary wrote: > > > Add I/O register mapping for NCR53C400A and enable PDMA mode to > > improve performance and fix non-working IRQ. > > > > Is CONFIG_SCSI_GENERIC_NCR53C400 is still needed? Can the driver be fully > configured at runtime now? Things depending on CONFIG_SCSI_GENERIC_NCR53C400: #ifdef CONFIG_SCSI_GENERIC_NCR53C400 #define PSEUDO_DMA #endif Defining PSEUDO_DMA should not break anything, just makes code bigger a bit. We can probably just define it always in g_NCR5380.c. This looks weird. I don't have any card with a BIOS to test. #ifdef CONFIG_SCSI_GENERIC_NCR53C400 #define BIOSPARAM #define NCR5380_BIOSPARAM generic_NCR5380_biosparam #else #define NCR5380_BIOSPARAM NULL #endif This looks very wrong and should be done at runtime: #ifdef CONFIG_SCSI_GENERIC_NCR53C400 #define NCR5380_region_size 16 #else #define NCR5380_region_size 8 #endif > > Tested with HP C2502 (and user-space enabler). > > > > It would be nice if the enabler was documented. > Documentation/scsi/g_NCR5380.txt might be a good place for that. That file > could perhaps be updated (?) Certainly obsolete and misleading information > should be removed if you see any. I'll integrate the enabler into the driver. It's like "wakeup sequence for the NCR53C400A and DTC3181E */" in g_NCR5380.c, only the magic numbers are different.
diff --git a/drivers/scsi/g_NCR5380.c b/drivers/scsi/g_NCR5380.c index ce444da..c3abe48 100644 --- a/drivers/scsi/g_NCR5380.c +++ b/drivers/scsi/g_NCR5380.c @@ -324,7 +324,10 @@ static int __init generic_NCR5380_detect(struct scsi_host_template *tpnt) #endif break; case BOARD_NCR53C400A: + flags = FLAG_NO_DMA_FIXUP; +#ifndef PSEUDO_DMA flags = FLAG_NO_PSEUDO_DMA; +#endif ports = ncr_53c400a_ports; break; case BOARD_DTC3181E: @@ -412,6 +415,11 @@ static int __init generic_NCR5380_detect(struct scsi_host_template *tpnt) hostdata->c400_blk_cnt = 1; hostdata->c400_host_buf = 4; } + if (overrides[current_override].board == BOARD_NCR53C400A) { + hostdata->c400_ctl_status = 9; + hostdata->c400_blk_cnt = 10; + hostdata->c400_host_buf = 8; + } #else instance->base = overrides[current_override].NCR5380_map_name; hostdata->iomem = iomem; @@ -425,7 +433,8 @@ static int __init generic_NCR5380_detect(struct scsi_host_template *tpnt) if (NCR5380_init(instance, flags)) goto out_unregister; - if (overrides[current_override].board == BOARD_NCR53C400) + if (overrides[current_override].board == BOARD_NCR53C400 || + overrides[current_override].board == BOARD_NCR53C400A) NCR5380_write(hostdata->c400_ctl_status, CSR_BASE); NCR5380_maybe_reset_bus(instance);
Add I/O register mapping for NCR53C400A and enable PDMA mode to improve performance and fix non-working IRQ. Tested with HP C2502 (and user-space enabler). Signed-off-by: Ondrej Zary <linux@rainbow-software.org> --- drivers/scsi/g_NCR5380.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)