public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Stefan Richter <stefanr@s5r6.in-berlin.de>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org,
	linux1394-devel@lists.sourceforge.net,
	Jody McIntyre <scjody@modernduck.com>,
	Ben Collins <bcollins@ubuntu.com>
Subject: [PATCH 2.6.17-rc5-mm2 12/18] ohci1394: set address range properties
Date: Fri, 2 Jun 2006 22:17:48 +0200 (CEST)	[thread overview]
Message-ID: <tkrat.39c0a660f27b4e91@s5r6.in-berlin.de> (raw)
In-Reply-To: <tkrat.5fcbbb70f827a5c2@s5r6.in-berlin.de>

This patch supplies the API extension introduced by patch
"ieee1394: extend lowlevel API for address range properties"
with proper addresses.

Like in patch ''ohci1394, sbp2: fix "scsi_add_device failed"
with PL-3507 based devices'', 1 TeraByte is chosen as physical
upper bound.  This leaves a window for the middle address range.
This choice is only relevant for adapters which actually have a
programmable pysical upper bound register.  (Only ALi and
Fujitsu adapters are known for this.  Most adapters have a fixed
bound at 4 GB.)  The middle address range is suitable for posted
writes.

AFAICS, PCILynx does not support physical DMA nor posted writes,
at least as programmed under Linux.  Therefore no equivalent
change in the pcilynx driver is necessary.  There is also a an
out-of-tree driver for GP2Lynx.  I assume this hardware does not
support these OHCI features either.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>

Index: linux-2.6.17-rc5-mm2/drivers/ieee1394/ohci1394.h
===================================================================
--- linux-2.6.17-rc5-mm2.orig/drivers/ieee1394/ohci1394.h	2006-06-01 20:55:04.000000000 +0200
+++ linux-2.6.17-rc5-mm2/drivers/ieee1394/ohci1394.h	2006-06-01 20:55:45.000000000 +0200
@@ -443,6 +443,16 @@ static inline u32 reg_read(const struct 
 
 #define OHCI1394_TCODE_PHY               0xE
 
+/* Node offset map (phys DMA area, posted write area).
+ * The value of OHCI1394_PHYS_UPPER_BOUND_PROGRAMMED may be modified but must
+ * be lower than OHCI1394_MIDDLE_ADDRESS_SPACE.
+ * OHCI1394_PHYS_UPPER_BOUND_FIXED and OHCI1394_MIDDLE_ADDRESS_SPACE are
+ * constants given by the OHCI spec.
+ */
+#define OHCI1394_PHYS_UPPER_BOUND_FIXED		0x000100000000ULL /* 4 GB */
+#define OHCI1394_PHYS_UPPER_BOUND_PROGRAMMED	0x010000000000ULL /* 1 TB */
+#define OHCI1394_MIDDLE_ADDRESS_SPACE		0xffff00000000ULL
+
 void ohci1394_init_iso_tasklet(struct ohci1394_iso_tasklet *tasklet,
 			       int type,
 			       void (*func)(unsigned long),
Index: linux-2.6.17-rc5-mm2/drivers/ieee1394/ohci1394.c
===================================================================
--- linux-2.6.17-rc5-mm2.orig/drivers/ieee1394/ohci1394.c	2006-06-01 20:55:41.000000000 +0200
+++ linux-2.6.17-rc5-mm2/drivers/ieee1394/ohci1394.c	2006-06-01 20:55:45.000000000 +0200
@@ -553,7 +553,8 @@ static void ohci_initialize(struct ti_oh
 	 * register content.
 	 * To actually enable physical responses is the job of our interrupt
 	 * handler which programs the physical request filter. */
-	reg_write(ohci, OHCI1394_PhyUpperBound, 0x01000000);
+	reg_write(ohci, OHCI1394_PhyUpperBound,
+		  OHCI1394_PHYS_UPPER_BOUND_PROGRAMMED >> 16);
 
 	DBGMSG("physUpperBoundOffset=%08x",
 	       reg_read(ohci, OHCI1394_PhyUpperBound));
@@ -3415,6 +3416,14 @@ static int __devinit ohci1394_pci_probe(
 	host->csr.max_rec = (reg_read(ohci, OHCI1394_BusOptions) >> 12) & 0xf;
 	host->csr.lnk_spd = reg_read(ohci, OHCI1394_BusOptions) & 0x7;
 
+	if (phys_dma) {
+		host->low_addr_space =
+			(u64) reg_read(ohci, OHCI1394_PhyUpperBound) << 16;
+		if (!host->low_addr_space)
+			host->low_addr_space = OHCI1394_PHYS_UPPER_BOUND_FIXED;
+	}
+	host->middle_addr_space = OHCI1394_MIDDLE_ADDRESS_SPACE;
+
 	/* Tell the highlevel this host is ready */
 	if (hpsb_add_host(host))
 		FAIL(-ENOMEM, "Failed to register host with highlevel");



  reply	other threads:[~2006-06-02 20:19 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-02 19:42 [PATCH 2.6.17-rc5-mm2 00/18] ieee1394: misc updates Stefan Richter
2006-06-02 19:45 ` [PATCH 2.6.17-rc5-mm2 01/18] video1394: be quiet Stefan Richter
2006-06-02 19:46   ` [PATCH 2.6.17-rc5-mm2 02/18] ohci1394.c: function calls without effect Stefan Richter
2006-06-02 19:48     ` [PATCH 2.6.17-rc5-mm2 03/18] sbp2: make TSB42AA9 workaround specific to Momobay CX-1 Stefan Richter
2006-06-02 19:50       ` [PATCH 2.6.17-rc5-mm2 04/18] Semaphore to mutex conversion Stefan Richter
2006-06-02 19:51         ` [PATCH 2.6.17-rc5-mm2 05/18] raw1394: fix whitespace after x86_64 compat patch Stefan Richter
2006-06-02 19:53           ` [PATCH 2.6.17-rc5-mm2 06/18] ieee1394/ohci1394: CycleTooLong interrupt management Stefan Richter
2006-06-02 20:04             ` [PATCH 2.6.17-rc5-mm2 07/18] ieee1394: support for slow links or slow 1394b phy ports Stefan Richter
2006-06-02 20:08               ` [PATCH 2.6.17-rc5-mm2 08/18] ieee1394: save RAM by using a single tlabel for broadcast transactions Stefan Richter
2006-06-02 20:10                 ` [PATCH 2.6.17-rc5-mm2 09/18] sbp2: remove manipulation of inquiry response Stefan Richter
2006-06-02 20:11                   ` [PATCH 2.6.17-rc5-mm2 10/18] sbp2: log number of supported concurrent logins Stefan Richter
2006-06-02 20:13                     ` [PATCH 2.6.17-rc5-mm2 11/18] ieee1394: extend lowlevel API for address range properties Stefan Richter
2006-06-02 20:17                       ` Stefan Richter [this message]
2006-06-02 20:20                         ` [PATCH 2.6.17-rc5-mm2 13/18] ohci1394: make phys_dma parameter read-only Stefan Richter
2006-06-02 20:22                           ` [PATCH 2.6.17-rc5-mm2 14/18] sbp2: sbp2 remove ohci1394 specific constant Stefan Richter
2006-06-02 20:24                             ` [PATCH 2.6.17-rc5-mm2 15/18] sbp2: fix S800 transfers if phys_dma is off Stefan Richter
2006-06-02 20:25                               ` [PATCH 2.6.17-rc5-mm2 16/18] Update feature removal of obsolete raw1394 ISO requests Stefan Richter
2006-06-02 20:27                                 ` [PATCH 2.6.17-rc5-mm2 17/18] sbp2: provide helptext for CONFIG_IEEE1394_SBP2_PHYS_DMA and mark it experimental Stefan Richter
2006-06-02 20:28                                   ` [PATCH 2.6.17-rc5-mm2 18/18] sbp2: use __attribute__((packed)) for on-the-wire structures Stefan Richter
2006-06-02 20:46                                   ` [PATCH 2.6.17-rc5-mm2 17/18] sbp2: provide helptext for CONFIG_IEEE1394_SBP2_PHYS_DMA and mark it experimental Ben Collins
2006-06-02 21:57                                     ` Stefan Richter
2006-06-02 22:20                                       ` Ben Collins
2006-06-02 23:21                                         ` Stefan Richter
2006-06-02 23:49                                           ` Ben Collins

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=tkrat.39c0a660f27b4e91@s5r6.in-berlin.de \
    --to=stefanr@s5r6.in-berlin.de \
    --cc=akpm@osdl.org \
    --cc=bcollins@ubuntu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux1394-devel@lists.sourceforge.net \
    --cc=scjody@modernduck.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox