From: Paolo Bonzini <pbonzini@redhat.com>
To: Hannes Reinecke <hare@suse.de>,
James Bottomley <jbottomley@parallels.com>
Cc: Christoph Hellwig <hch@lst.de>, linux-scsi@vger.kernel.org
Subject: Re: [PATCH 10/10] esp: enable CONFIG2_FENAB for am53c974
Date: Fri, 21 Nov 2014 11:08:43 +0100 [thread overview]
Message-ID: <546F0F2B.40901@redhat.com> (raw)
In-Reply-To: <1416562077-105715-11-git-send-email-hare@suse.de>
On 21/11/2014 10:27, Hannes Reinecke wrote:
> CONFIG2_FENAB ('feature enable') changed definition between chip
> revisions, from 'Latch SCSI Phase' to 'Latch SCSI Phase, display
> chip ID upon reset, and enable 24 bit addresses'.
> So only enable it for am53c974 where we know what it's doing.
>
> Signed-off-by: Hannes Reinecke <hare@suse.de>
> ---
> drivers/scsi/am53c974.c | 30 ++++++++++++++++++++++++++++++
> drivers/scsi/esp_scsi.c | 4 ++++
> 2 files changed, 34 insertions(+)
>
> diff --git a/drivers/scsi/am53c974.c b/drivers/scsi/am53c974.c
> index 0452ed1..722e781 100644
> --- a/drivers/scsi/am53c974.c
> +++ b/drivers/scsi/am53c974.c
> @@ -252,6 +252,8 @@ static void pci_esp_send_dma_cmd(struct esp *esp, u32 addr, u32 esp_count,
>
> pci_esp_write8(esp, (esp_count >> 0) & 0xff, ESP_TCLOW);
> pci_esp_write8(esp, (esp_count >> 8) & 0xff, ESP_TCMED);
> + if (esp->config2 & ESP_CONFIG2_FENAB)
> + pci_esp_write8(esp, (esp_count >> 16) & 0xff, ESP_TCHI);
Why do this conditionally? We know that FENAB is true here, don't we?
(Maybe I'm missing something obvious though).
Paolo
>
> pci_esp_write32(esp, esp_count, ESP_DMA_STC);
> pci_esp_write32(esp, addr, ESP_DMA_SPA);
> @@ -265,6 +267,33 @@ static void pci_esp_send_dma_cmd(struct esp *esp, u32 addr, u32 esp_count,
> pci_esp_write8(esp, ESP_DMA_CMD_START | val, ESP_DMA_CMD);
> }
>
> +static u32 pci_esp_dma_length_limit(struct esp *esp, u32 dma_addr, u32 dma_len)
> +{
> + int dma_limit = 16;
> + u32 base, end;
> +
> + /*
> + * If CONFIG2_FENAB is set we can
> + * handle up to 24 bit addresses
> + */
> + if (esp->config2 & ESP_CONFIG2_FENAB)
> + dma_limit = 24;
> +
> + if (dma_len > (1U << dma_limit))
> + dma_len = (1U << dma_limit);
> +
> + /*
> + * Prevent crossing a 24-bit address boundary.
> + */
> + base = dma_addr & ((1U << 24) - 1U);
> + end = base + dma_len;
> + if (end > (1U << 24))
> + end = (1U <<24);
> + dma_len = end - base;
> +
> + return dma_len;
> +}
> +
> static const struct esp_driver_ops pci_esp_ops = {
> .esp_write8 = pci_esp_write8,
> .esp_read8 = pci_esp_read8,
> @@ -278,6 +307,7 @@ static const struct esp_driver_ops pci_esp_ops = {
> .dma_invalidate = pci_esp_dma_invalidate,
> .send_dma_cmd = pci_esp_send_dma_cmd,
> .dma_error = pci_esp_dma_error,
> + .dma_length_limit = pci_esp_dma_length_limit,
> };
>
> /*
> diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c
> index 01753f5..d0b7b32 100644
> --- a/drivers/scsi/esp_scsi.c
> +++ b/drivers/scsi/esp_scsi.c
> @@ -289,6 +289,8 @@ static void esp_reset_esp(struct esp *esp)
>
> case FAS236:
> case PCSCSI:
> + if (esp->rev == PCSCSI)
> + esp->config2 |= ESP_CONFIG2_FENAB;
> /* Fast 236, AM53c974 or HME */
> esp_write8(esp->config2, ESP_CFG2);
> if (esp->rev == FASHME) {
> @@ -1362,6 +1364,8 @@ static int esp_data_bytes_sent(struct esp *esp, struct esp_cmd_entry *ent,
> (((unsigned int)esp_read8(ESP_TCMED)) << 8));
> if (esp->rev == FASHME)
> ecount |= ((unsigned int)esp_read8(FAS_RLO)) << 16;
> + if (esp->rev == PCSCSI && (esp->config2 & ESP_CONFIG2_FENAB))
> + ecount |= ((unsigned int)esp_read8(ESP_TCHI)) << 16;
> }
>
> bytes_sent = esp->data_dma_len;
>
next prev parent reply other threads:[~2014-11-21 10:08 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-21 9:27 [PATCH 00/10] Re-implement am53c974 driver Hannes Reinecke
2014-11-21 9:27 ` [PATCH 01/10] esp_scsi: spellcheck 'driver' Hannes Reinecke
2014-11-21 9:35 ` Paolo Bonzini
2014-11-21 9:27 ` [PATCH 02/10] esp_scsi: make number of tags configurable Hannes Reinecke
2014-11-21 9:37 ` Paolo Bonzini
2014-11-21 9:27 ` [PATCH 03/10] esp_scsi: convert to dev_printk Hannes Reinecke
2014-11-21 9:37 ` Paolo Bonzini
2014-11-21 9:27 ` [PATCH 04/10] esp_scsi: debug event and command Hannes Reinecke
2014-11-21 9:38 ` Paolo Bonzini
2014-11-21 9:27 ` [PATCH 05/10] esp_scsi: read status registers Hannes Reinecke
2014-11-21 9:43 ` Paolo Bonzini
2014-11-21 9:27 ` [PATCH 06/10] scsi: add 'am53c974' driver Hannes Reinecke
2014-11-21 10:14 ` Paolo Bonzini
2014-11-21 10:34 ` Hannes Reinecke
2014-11-21 10:20 ` Paolo Bonzini
2014-11-21 9:27 ` [PATCH 07/10] esp: Use FIFO for command submission Hannes Reinecke
2014-11-21 10:04 ` Paolo Bonzini
2014-11-21 10:38 ` Hannes Reinecke
2014-11-21 10:50 ` Paolo Bonzini
2014-11-21 9:27 ` [PATCH 08/10] am53c974: BLAST residual handling Hannes Reinecke
2014-11-21 10:10 ` Paolo Bonzini
2014-11-21 10:29 ` Hannes Reinecke
2014-11-21 9:27 ` [PATCH 09/10] esp: correctly detect am53c974 Hannes Reinecke
2014-11-21 10:11 ` Paolo Bonzini
2014-11-21 9:27 ` [PATCH 10/10] esp: enable CONFIG2_FENAB for am53c974 Hannes Reinecke
2014-11-21 10:08 ` Paolo Bonzini [this message]
2014-11-21 10:22 ` Hannes Reinecke
2014-11-21 10:52 ` Paolo Bonzini
2014-11-21 10:26 ` [PATCH 00/10] Re-implement am53c974 driver Christoph Hellwig
2014-11-21 10:33 ` Hannes Reinecke
2014-11-21 10:47 ` Guennadi Liakhovetski
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=546F0F2B.40901@redhat.com \
--to=pbonzini@redhat.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=jbottomley@parallels.com \
--cc=linux-scsi@vger.kernel.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.