From: Andy Walls <awalls@md.metrocast.net>
To: akpm@linux-foundation.org
Cc: James.Bottomley@HansenPartnership.com,
linux-scsi@vger.kernel.org, linux@rainbow-software.org
Subject: Re: [patch 12/26] g_NCR5380: fix broken MMIO compilation
Date: Mon, 24 May 2010 20:16:55 -0400 [thread overview]
Message-ID: <1274746615.4491.68.camel@localhost> (raw)
In-Reply-To: <201005241922.o4OJMSxG011317@imap1.linux-foundation.org>
On Mon, 2010-05-24 at 12:22 -0700, akpm@linux-foundation.org wrote:
> From: Ondrej Zary <linux@rainbow-software.org>
>
> The ifdefs are broken so the MMIO code is never compiled and so it's
> broken too. Fix them all. Untested as I don't have the hardware.
>
> Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
> Cc: Andy Walls <awalls@radix.net>
> Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
I remeber inspecting this before and thinking they were fine.
Reviewed-by: Andy Walls <awalls@md.metrocast.net>
(my awalls@radix.net account is obsolete)
If anyone in the US is interested in ancient ISA bus SCSI hardware for
NCR5380 driver development, I can send them:
1. a DTC3181E
NCR5380
ISA I/O ports
no IRQ
no Pseudo-DMA
DB-25 external connector
...definitely a piece of junk.
2. a SUMO SCSI AT
NCR5380
ISA I/O ports
IRQ is is enabled by a bit in a board specific reg at reg_base+8
Pseudo DMA is enabled by a a board specific reg at reg_base+8
No watchdog timer on the pseudo DMA, so a failed pseudo-DMA
can hang your whole machine :D
SCSI-1 external connector (Centronics-type with bail locks)
Internal SCSI connector
Removeable terminating resistors for the card.
Two BIOS firmware images on board, each having a divide by
0 bug in their fake C/H/S drive geometry computations :D
...in general, also a piece of junk.
Neither of them will help with testing the MMIO mode of the driver.
Regards,
Andy
> ---
>
> drivers/scsi/g_NCR5380.c | 43 +++++++++++++++++++------------------
> drivers/scsi/g_NCR5380.h | 6 ++---
> 2 files changed, 26 insertions(+), 23 deletions(-)
>
> diff -puN drivers/scsi/g_NCR5380.c~g_ncr5380-fix-broken-mmio-compilation drivers/scsi/g_NCR5380.c
> --- a/drivers/scsi/g_NCR5380.c~g_ncr5380-fix-broken-mmio-compilation
> +++ a/drivers/scsi/g_NCR5380.c
> @@ -285,9 +285,12 @@ static int __init do_DTC3181E_setup(char
> int __init generic_NCR5380_detect(struct scsi_host_template * tpnt)
> {
> static int current_override = 0;
> - int count, i;
> + int count;
> unsigned int *ports;
> +#ifndef SCSI_G_NCR5380_MEM
> + int i;
> unsigned long region_size = 16;
> +#endif
> static unsigned int __initdata ncr_53c400a_ports[] = {
> 0x280, 0x290, 0x300, 0x310, 0x330, 0x340, 0x348, 0x350, 0
> };
> @@ -296,7 +299,7 @@ int __init generic_NCR5380_detect(struct
> };
> int flags = 0;
> struct Scsi_Host *instance;
> -#ifdef CONFIG_SCSI_G_NCR5380_MEM
> +#ifdef SCSI_G_NCR5380_MEM
> unsigned long base;
> void __iomem *iomem;
> #endif
> @@ -315,7 +318,7 @@ int __init generic_NCR5380_detect(struct
> overrides[0].board = BOARD_NCR53C400A;
> else if (dtc_3181e != NCR_NOT_SET)
> overrides[0].board = BOARD_DTC3181E;
> -
> +#ifndef SCSI_G_NCR5380_MEM
> if (!current_override && isapnp_present()) {
> struct pnp_dev *dev = NULL;
> count = 0;
> @@ -347,7 +350,7 @@ int __init generic_NCR5380_detect(struct
> count++;
> }
> }
> -
> +#endif
> tpnt->proc_name = "g_NCR5380";
>
> for (count = 0; current_override < NO_OVERRIDES; ++current_override) {
> @@ -372,7 +375,7 @@ int __init generic_NCR5380_detect(struct
> break;
> }
>
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
> if (ports) {
> /* wakeup sequence for the NCR53C400A and DTC3181E */
>
> @@ -434,7 +437,7 @@ int __init generic_NCR5380_detect(struct
> #endif
> instance = scsi_register(tpnt, sizeof(struct NCR5380_hostdata));
> if (instance == NULL) {
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
> release_region(overrides[current_override].NCR5380_map_name, region_size);
> #else
> iounmap(iomem);
> @@ -444,10 +447,10 @@ int __init generic_NCR5380_detect(struct
> }
>
> instance->NCR5380_instance_name = overrides[current_override].NCR5380_map_name;
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
> instance->n_io_port = region_size;
> #else
> - ((struct NCR5380_hostdata *)instance->hostdata).iomem = iomem;
> + ((struct NCR5380_hostdata *)instance->hostdata)->iomem = iomem;
> #endif
>
> NCR5380_init(instance, flags);
> @@ -515,10 +518,10 @@ int generic_NCR5380_release_resources(st
> free_irq(instance->irq, instance);
> NCR5380_exit(instance);
>
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
> release_region(instance->NCR5380_instance_name, instance->n_io_port);
> #else
> - iounmap(((struct NCR5380_hostdata *)instance->hostdata).iomem);
> + iounmap(((struct NCR5380_hostdata *)instance->hostdata)->iomem);
> release_mem_region(instance->NCR5380_instance_name, NCR5380_region_size);
> #endif
>
> @@ -588,14 +591,14 @@ static inline int NCR5380_pread(struct S
> }
> while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_HOST_BUF_NOT_RDY);
>
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
> {
> int i;
> for (i = 0; i < 128; i++)
> dst[start + i] = NCR5380_read(C400_HOST_BUFFER);
> }
> #else
> - /* implies CONFIG_SCSI_G_NCR5380_MEM */
> + /* implies SCSI_G_NCR5380_MEM */
> memcpy_fromio(dst + start, iomem + NCR53C400_host_buffer, 128);
> #endif
> start += 128;
> @@ -608,14 +611,14 @@ static inline int NCR5380_pread(struct S
> // FIXME - no timeout
> }
>
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
> {
> int i;
> for (i = 0; i < 128; i++)
> dst[start + i] = NCR5380_read(C400_HOST_BUFFER);
> }
> #else
> - /* implies CONFIG_SCSI_G_NCR5380_MEM */
> + /* implies SCSI_G_NCR5380_MEM */
> memcpy_fromio(dst + start, iomem + NCR53C400_host_buffer, 128);
> #endif
> start += 128;
> @@ -674,13 +677,13 @@ static inline int NCR5380_pwrite(struct
> }
> while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_HOST_BUF_NOT_RDY)
> ; // FIXME - timeout
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
> {
> for (i = 0; i < 128; i++)
> NCR5380_write(C400_HOST_BUFFER, src[start + i]);
> }
> #else
> - /* implies CONFIG_SCSI_G_NCR5380_MEM */
> + /* implies SCSI_G_NCR5380_MEM */
> memcpy_toio(iomem + NCR53C400_host_buffer, src + start, 128);
> #endif
> start += 128;
> @@ -690,13 +693,13 @@ static inline int NCR5380_pwrite(struct
> while (NCR5380_read(C400_CONTROL_STATUS_REG) & CSR_HOST_BUF_NOT_RDY)
> ; // FIXME - no timeout
>
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
> {
> for (i = 0; i < 128; i++)
> NCR5380_write(C400_HOST_BUFFER, src[start + i]);
> }
> #else
> - /* implies CONFIG_SCSI_G_NCR5380_MEM */
> + /* implies SCSI_G_NCR5380_MEM */
> memcpy_toio(iomem + NCR53C400_host_buffer, src + start, 128);
> #endif
> start += 128;
> @@ -936,7 +939,7 @@ module_param(ncr_53c400a, int, 0);
> module_param(dtc_3181e, int, 0);
> MODULE_LICENSE("GPL");
>
> -
> +#ifndef SCSI_G_NCR5380_MEM
> static struct isapnp_device_id id_table[] __devinitdata = {
> {
> ISAPNP_ANY_ID, ISAPNP_ANY_ID,
> @@ -946,7 +949,7 @@ static struct isapnp_device_id id_table[
> };
>
> MODULE_DEVICE_TABLE(isapnp, id_table);
> -
> +#endif
>
> __setup("ncr5380=", do_NCR5380_setup);
> __setup("ncr53c400=", do_NCR53C400_setup);
> diff -puN drivers/scsi/g_NCR5380.h~g_ncr5380-fix-broken-mmio-compilation drivers/scsi/g_NCR5380.h
> --- a/drivers/scsi/g_NCR5380.h~g_ncr5380-fix-broken-mmio-compilation
> +++ a/drivers/scsi/g_NCR5380.h
> @@ -63,7 +63,7 @@ static const char* generic_NCR5380_info(
> #define __STRVAL(x) #x
> #define STRVAL(x) __STRVAL(x)
>
> -#ifndef CONFIG_SCSI_G_NCR5380_MEM
> +#ifndef SCSI_G_NCR5380_MEM
>
> #define NCR5380_map_config port
> #define NCR5380_map_type int
> @@ -91,7 +91,7 @@ static const char* generic_NCR5380_info(
> NCR5380_map_name = (NCR5380_map_type)((instance)->NCR5380_instance_name)
>
> #else
> -/* therefore CONFIG_SCSI_G_NCR5380_MEM */
> +/* therefore SCSI_G_NCR5380_MEM */
>
> #define NCR5380_map_config memory
> #define NCR5380_map_type unsigned long
> @@ -114,7 +114,7 @@ static const char* generic_NCR5380_info(
> register void __iomem *iomem
>
> #define NCR5380_setup(instance) \
> - iomem = (((struct NCR5380_hostdata *)(instance)->hostdata).iomem)
> + iomem = (((struct NCR5380_hostdata *)(instance)->hostdata)->iomem)
>
> #endif
>
> _
next prev parent reply other threads:[~2010-05-25 0:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-24 19:22 [patch 12/26] g_NCR5380: fix broken MMIO compilation akpm
2010-05-25 0:16 ` Andy Walls [this message]
2010-05-25 18:58 ` Ondrej Zary
2010-05-29 22:57 ` Andy Walls
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1274746615.4491.68.camel@localhost \
--to=awalls@md.metrocast.net \
--cc=James.Bottomley@HansenPartnership.com \
--cc=akpm@linux-foundation.org \
--cc=linux-scsi@vger.kernel.org \
--cc=linux@rainbow-software.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.