diff options
author | Ben Collins <bcollins@ubuntu.com> | 2006-06-12 18:13:21 -0400 |
---|---|---|
committer | Ben Collins <bcollins@ubuntu.com> | 2006-06-12 18:13:21 -0400 |
commit | 8aef63ff033fb0e7ba02d8e760d268eb0aafc58c (patch) | |
tree | 0e458c802e8e409c29fb53752b93b757b1a141c7 | |
parent | 20f4578156995e95613497baf16d5b2d54921e5d (diff) |
ieee1394: extend lowlevel API for address range properties
Host adapter hardware imposes certain restrictions and features on
address ranges. Instead of hard-wire such ranges into the ieee1394
core or even into protocol drivers, let lowlevel drivers specify
these ranges via struct hpsb_host.
Patch "ohci1394: set address range properties" must be applied too,
else hpsb_allocate_and_register_addrspace() won't work properly.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Ben Collins <bcollins@ubuntu.com>
-rw-r--r-- | drivers/ieee1394/highlevel.c | 4 | ||||
-rw-r--r-- | drivers/ieee1394/hosts.h | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/ieee1394/highlevel.c b/drivers/ieee1394/highlevel.c index 491e6032bdec..29c5255b933c 100644 --- a/drivers/ieee1394/highlevel.c +++ b/drivers/ieee1394/highlevel.c | |||
@@ -312,8 +312,10 @@ u64 hpsb_allocate_and_register_addrspace(struct hpsb_highlevel *hl, | |||
312 | return retval; | 312 | return retval; |
313 | } | 313 | } |
314 | 314 | ||
315 | /* default range, | ||
316 | * avoids controller's posted write area (see OHCI 1.1 clause 1.5) */ | ||
315 | if (start == ~0ULL && end == ~0ULL) { | 317 | if (start == ~0ULL && end == ~0ULL) { |
316 | start = CSR1212_ALL_SPACE_BASE + 0xffff00000000ULL; /* ohci1394.c limit */ | 318 | start = host->middle_addr_space; |
317 | end = CSR1212_ALL_SPACE_END; | 319 | end = CSR1212_ALL_SPACE_END; |
318 | } | 320 | } |
319 | 321 | ||
diff --git a/drivers/ieee1394/hosts.h b/drivers/ieee1394/hosts.h index 9ddc6628e710..9ad4b2463077 100644 --- a/drivers/ieee1394/hosts.h +++ b/drivers/ieee1394/hosts.h | |||
@@ -73,6 +73,8 @@ struct hpsb_host { | |||
73 | unsigned int config_roms; | 73 | unsigned int config_roms; |
74 | 74 | ||
75 | struct list_head addr_space; | 75 | struct list_head addr_space; |
76 | u64 low_addr_space; /* upper bound of physical DMA area */ | ||
77 | u64 middle_addr_space; /* upper bound of posted write area */ | ||
76 | }; | 78 | }; |
77 | 79 | ||
78 | 80 | ||