All of lore.kernel.org
 help / color / mirror / Atom feed
From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Finn Thain <fthain@telegraphics.com.au>
Cc: "James E.J. Bottomley" <JBottomley@parallels.com>,
	Michael Schmitz <schmitzmic@gmail.com>,
	Sam Creasey <sammy@sammy.net>, scsi <linux-scsi@vger.kernel.org>,
	Linux/m68k <linux-m68k@vger.kernel.org>
Subject: Re: [PATCH 23/29] atari_scsi: Convert to platform device
Date: Fri, 3 Oct 2014 11:34:21 +0200	[thread overview]
Message-ID: <CAMuHMdWmxEUMabRrbQpjhWTE1W4WD4CDkmXZNem06C0ScnKkFw@mail.gmail.com> (raw)
In-Reply-To: <20141002065633.766165263@telegraphics.com.au>

On Thu, Oct 2, 2014 at 8:56 AM, Finn Thain <fthain@telegraphics.com.au> wrote:
> Convert atari_scsi to platform device and eliminate scsi_register().
>
> Validate __setup options later on so that module options are checked as well.
>
> Remove the comment about the scsi mid-layer disabling the host irq as it
> is no longer true (AFAICT). Also remove the obsolete slow interrupt stuff
> (IRQ_TYPE_SLOW == 0 anyway).

> --- linux.orig/drivers/scsi/atari_scsi.c        2014-10-02 16:56:20.000000000 +1000
> +++ linux/drivers/scsi/atari_scsi.c     2014-10-02 16:56:21.000000000 +1000

> +static int __init atari_scsi_probe(struct platform_device *pdev)
> +{
> +       struct Scsi_Host *instance;
> +       int error;
> +
> +       if (!MACH_IS_ATARI)
> +               return -ENODEV;

This test is not needed.

> +       if (ATARIHW_PRESENT(TT_SCSI)) {
> +               atari_scsi_reg_read  = atari_scsi_tt_reg_read;
> +               atari_scsi_reg_write = atari_scsi_tt_reg_write;
> +       } else if (ATARIHW_PRESENT(ST_SCSI)) {
> +               atari_scsi_reg_read  = atari_scsi_falcon_reg_read;
> +               atari_scsi_reg_write = atari_scsi_falcon_reg_write;

Can these be handled through the platform_device's resources?

> +       } else
> +               return -ENODEV;

This branch should not be there.

> +       /* The values for CMD_PER_LUN and CAN_QUEUE are somehow arbitrary.
> +        * Higher values should work, too; try it!
> +        * (But cmd_per_lun costs memory!)
> +        *
> +        * But there seems to be a bug somewhere that requires CAN_QUEUE to be
> +        * 2*CMD_PER_LUN. At least on a TT, no spurious timeouts seen since
> +        * changed CMD_PER_LUN...
> +        *
> +        * Note: The Falcon currently uses 8/1 setting due to unsolved problems
> +        * with cmd_per_lun != 1
> +        */
> +       if (IS_A_TT()) {
> +               atari_scsi_template.can_queue    = 16;
> +               atari_scsi_template.cmd_per_lun  = 8;
> +               atari_scsi_template.sg_tablesize = SG_ALL;
> +       } else {
> +               atari_scsi_template.can_queue    = 8;
> +               atari_scsi_template.cmd_per_lun  = 1;
> +               atari_scsi_template.sg_tablesize = SG_NONE;
> +       }

Shouldn't this be in platform data?

> +       /* Leave sg_tablesize at 0 on a Falcon! */
> +       if (IS_A_TT() && setup_sg_tablesize >= 0)
> +               atari_scsi_template.sg_tablesize = setup_sg_tablesize;

I think the IS_A_TT() check can just be removed.

> +#ifdef REAL_DMA
> +       /* If running on a Falcon and if there's TT-Ram (i.e., more than one
> +        * memory block, since there's always ST-Ram in a Falcon), then
> +        * allocate a STRAM_BUFFER_SIZE byte dribble buffer for transfers
> +        * from/to alternative Ram.
> +        */
> +       if (ATARIHW_PRESENT(ST_SCSI) && !ATARIHW_PRESENT(EXTD_DMA) &&
> +           m68k_num_memory > 1) {
> +               atari_dma_buffer = atari_stram_alloc(STRAM_BUFFER_SIZE, "SCSI");
> +               if (!atari_dma_buffer) {
> +                       pr_err(PFX "can't allocate ST-RAM double buffer\n");
> +                       return -ENOMEM;
> +               }
> +               atari_dma_phys_buffer = atari_stram_to_phys(atari_dma_buffer);
> +               atari_dma_orig_addr = 0;
> +       }
> +#endif

More platform data?

> +       if (IS_A_TT())
> +               instance->irq = IRQ_TT_MFP_SCSI;
> +       else
> +               instance->irq = IRQ_NONE;

platform_device resource?

(and IRQ_NONE is wrong, you should use 0)

> +       if (IS_A_TT()) {

Check for instance->irq instead?

> +               error = request_irq(instance->irq, scsi_tt_intr, 0,
> +                                   "NCR5380", instance);
> +               if (error) {
> +                       pr_err(PFX "request irq %d failed, aborting\n",
> +                              instance->irq);
> +                       goto fail_irq;
> +               }
> +               tt_mfp.active_edge |= 0x80;     /* SCSI int on L->H */
> +#ifdef REAL_DMA
> +               tt_scsi_dma.dma_ctrl = 0;
> +               atari_dma_residual = 0;
> +
> +               /* While the read overruns (described by Drew Eckhardt in
> +                * NCR5380.c) never happened on TTs, they do in fact on the
> +                * Medusa (This was the cause why SCSI didn't work right for
> +                * so long there.) Since handling the overruns slows down
> +                * a bit, I turned the #ifdef's into a runtime condition.
> +                *
> +                * In principle it should be sufficient to do max. 1 byte with
> +                * PIO, but there is another problem on the Medusa with the DMA
> +                * rest data register. So 'atari_read_overruns' is currently set
> +                * to 4 to avoid having transfers that aren't a multiple of 4.
> +                * If the rest data bug is fixed, this can be lowered to 1.
> +                */
> +               if (MACH_IS_MEDUSA)
> +                       atari_read_overruns = 4;
> +#endif
> +       } else {
> +               /* Nothing to do for the interrupt: the ST-DMA is initialized
> +                * already.
> +                */
> +#ifdef REAL_DMA
> +               atari_dma_residual = 0;
> +               atari_dma_active = 0;
> +               atari_dma_stram_mask = (ATARIHW_PRESENT(EXTD_DMA) ? 0x00000000
> +                                       : 0xff000000);
> +#endif
> +       }

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

  reply	other threads:[~2014-10-03  9:34 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-02  6:56 [PATCH 00/29] Fixes, cleanups and modernization for NCR5380 drivers Finn Thain
2014-10-02  6:56 ` [PATCH 01/29] ncr5380: Use printk() not pr_debug() Finn Thain
2014-10-06  9:11   ` Hannes Reinecke
2014-10-02  6:56 ` [PATCH 02/29] ncr5380: Remove unused hostdata fields Finn Thain
2014-10-06  9:12   ` Hannes Reinecke
2014-10-02  6:56 ` [PATCH 03/29] ncr5380: Fix compiler warnings and __setup options Finn Thain
2014-10-06  9:19   ` Hannes Reinecke
2014-10-02  6:56 ` [PATCH 04/29] ncr5380: Remove unused macros Finn Thain
2014-10-02  6:56   ` Finn Thain
2014-10-06  9:21   ` Hannes Reinecke
2014-10-06  9:21     ` Hannes Reinecke
2014-10-02  6:56 ` [PATCH 05/29] ncr5380: Remove useless prototypes Finn Thain
2014-10-02  6:56 ` [PATCH 06/29] ncr5380: Remove more " Finn Thain
2014-10-02  6:56 ` [PATCH 07/29] ncr5380: Cleanup TAG_NEXT and TAG_NONE macros Finn Thain
2014-10-03  8:09   ` Geert Uytterhoeven
2014-10-03 10:12     ` Finn Thain
2014-10-06  9:19   ` Hannes Reinecke
2014-10-06 12:26     ` Finn Thain
2014-10-02  6:56 ` [PATCH 08/29] ncr5380: Remove redundant AUTOSENSE macro Finn Thain
2014-10-02  6:56   ` Finn Thain
2014-10-02  6:56 ` [PATCH 09/29] ncr5380: Remove duplicate comments Finn Thain
2014-10-02  6:56 ` [PATCH 10/29] ncr5380: Fix SCSI_IRQ_NONE bugs Finn Thain
2014-10-03  8:22   ` Geert Uytterhoeven
2014-10-03 10:42     ` Finn Thain
2014-10-02  6:56 ` [PATCH 11/29] ncr5380: Remove NCR5380_STATS Finn Thain
2014-10-02  6:56 ` [PATCH 12/29] ncr5380: Cleanup host info() methods Finn Thain
2014-10-02  6:56   ` Finn Thain
2014-10-03  8:32   ` Geert Uytterhoeven
2014-10-03  8:32     ` Geert Uytterhoeven
2014-10-02  6:56 ` [PATCH 13/29] ncr5380: Move static PDMA spin counters to host data Finn Thain
2014-10-02  6:56   ` Finn Thain
2014-10-02  6:56 ` [PATCH 14/29] ncr5380: Remove pointless compiler command line override macros Finn Thain
2014-10-02  6:56 ` [PATCH 15/29] ncr5380: Remove *_RELEASE macros Finn Thain
2014-10-02  6:56   ` Finn Thain
2014-10-02  6:56 ` [PATCH 16/29] ncr5380: Drop legacy scsi.h include Finn Thain
2014-10-02  6:56   ` Finn Thain
2014-10-02  6:56 ` [PATCH 17/29] dmx3191d: Use IRQ_NONE Finn Thain
2014-10-03  8:41   ` Geert Uytterhoeven
2014-10-02  6:56 ` [PATCH 18/29] mac_scsi: Remove header Finn Thain
2014-10-02  6:56 ` [PATCH 19/29] mac_scsi: Add module option to Kconfig Finn Thain
2014-10-03  8:44   ` Geert Uytterhoeven
2014-10-03 10:49     ` Finn Thain
2014-10-03 11:31       ` Geert Uytterhoeven
2014-10-02  6:56 ` [PATCH 20/29] mac_scsi: Cleanup PDMA code Finn Thain
2014-10-02  6:56 ` [PATCH 21/29] mac_scsi: Convert to platform device Finn Thain
2014-10-03  9:08   ` Geert Uytterhoeven
2014-10-02  6:56 ` [PATCH 22/29] atari_scsi: Fix atari_scsi deadlocks on Falcon Finn Thain
2014-10-03  9:19   ` Geert Uytterhoeven
2014-10-02  6:56 ` [PATCH 23/29] atari_scsi: Convert to platform device Finn Thain
2014-10-03  9:34   ` Geert Uytterhoeven [this message]
2014-10-03 11:10     ` Finn Thain
2014-10-04 23:43       ` Michael Schmitz
2014-10-06  7:05         ` Finn Thain
2014-10-06  8:14           ` Michael Schmitz
2014-10-08 11:59             ` Finn Thain
2014-10-06  8:36           ` Geert Uytterhoeven
2014-10-20  7:33   ` Michael Schmitz
2014-10-20 11:22     ` Finn Thain
2014-10-20 18:34       ` Michael Schmitz
2014-10-26  7:37       ` Michael Schmitz
2014-10-27  0:15         ` Finn Thain
2014-10-02  6:56 ` [PATCH 24/29] atari_scsi: Remove header Finn Thain
2014-10-02  6:56 ` [PATCH 25/29] sun3_scsi: Convert to platform device Finn Thain
2014-10-02  6:56 ` [PATCH 26/29] sun3_scsi: Move macro definitions Finn Thain
2014-10-02  6:56 ` [PATCH 27/29] ncr5380: Remove ENABLE_IRQ/DISABLE_IRQ macros Finn Thain
2014-10-02  6:56 ` [PATCH 28/29] atari_NCR5380: Refactor Falcon special cases Finn Thain
2014-10-06  9:28   ` Hannes Reinecke
2014-10-06 11:34     ` Finn Thain
2014-10-06 13:41       ` Ondrej Zary
2014-10-02  6:56 ` [PATCH 29/29] atari_NCR5380: Refactor Falcon locking Finn Thain

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=CAMuHMdWmxEUMabRrbQpjhWTE1W4WD4CDkmXZNem06C0ScnKkFw@mail.gmail.com \
    --to=geert@linux-m68k.org \
    --cc=JBottomley@parallels.com \
    --cc=fthain@telegraphics.com.au \
    --cc=linux-m68k@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=sammy@sammy.net \
    --cc=schmitzmic@gmail.com \
    /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.