diff options
author | David S. Miller <davem@davemloft.net> | 2008-08-27 02:33:42 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-08-29 05:13:31 -0400 |
commit | 63237eeb5ac92d618a0a6055f4b1f65c5d14682b (patch) | |
tree | 3d44dea70077557a7543951580447dbb71d00b05 /arch | |
parent | 738f2b7b813913e651f39387d007dd961755dee2 (diff) |
sparc: Move SBUS DMA attribute interfaces out of asm/sbus.h
This is in preparation for the subsequent asm/sbus.h removal.
Also, make these routines take a "struct device" or no
arguments, as appropriate.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sparc/include/asm/io_32.h | 11 | ||||
-rw-r--r-- | arch/sparc/include/asm/io_64.h | 11 | ||||
-rw-r--r-- | arch/sparc/include/asm/sbus_32.h | 4 | ||||
-rw-r--r-- | arch/sparc/include/asm/sbus_64.h | 4 | ||||
-rw-r--r-- | arch/sparc/kernel/ioport.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/sbus.c | 16 |
6 files changed, 36 insertions, 12 deletions
diff --git a/arch/sparc/include/asm/io_32.h b/arch/sparc/include/asm/io_32.h index 10d7da450070..3ab3164bd735 100644 --- a/arch/sparc/include/asm/io_32.h +++ b/arch/sparc/include/asm/io_32.h | |||
@@ -308,6 +308,17 @@ extern void sbus_iounmap(volatile void __iomem *vaddr, unsigned long size); | |||
308 | #define RTC_PORT(x) (rtc_port + (x)) | 308 | #define RTC_PORT(x) (rtc_port + (x)) |
309 | #define RTC_ALWAYS_BCD 0 | 309 | #define RTC_ALWAYS_BCD 0 |
310 | 310 | ||
311 | static inline int sbus_can_dma_64bit(void) | ||
312 | { | ||
313 | return 0; /* actually, sparc_cpu_model==sun4d */ | ||
314 | } | ||
315 | static inline int sbus_can_burst64(void) | ||
316 | { | ||
317 | return 0; /* actually, sparc_cpu_model==sun4d */ | ||
318 | } | ||
319 | struct device; | ||
320 | extern void sbus_set_sbus64(struct device *, int); | ||
321 | |||
311 | #endif | 322 | #endif |
312 | 323 | ||
313 | #define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1 | 324 | #define __ARCH_HAS_NO_PAGE_ZERO_MAPPED 1 |
diff --git a/arch/sparc/include/asm/io_64.h b/arch/sparc/include/asm/io_64.h index 0bff078ffdd0..73a9c5d41954 100644 --- a/arch/sparc/include/asm/io_64.h +++ b/arch/sparc/include/asm/io_64.h | |||
@@ -495,6 +495,17 @@ extern void pci_iounmap(struct pci_dev *dev, void __iomem *); | |||
495 | #define sbus_iounmap(__addr, __size) \ | 495 | #define sbus_iounmap(__addr, __size) \ |
496 | release_region((unsigned long)(__addr), (__size)) | 496 | release_region((unsigned long)(__addr), (__size)) |
497 | 497 | ||
498 | static inline int sbus_can_dma_64bit(void) | ||
499 | { | ||
500 | return 1; | ||
501 | } | ||
502 | static inline int sbus_can_burst64(void) | ||
503 | { | ||
504 | return 1; | ||
505 | } | ||
506 | struct device; | ||
507 | extern void sbus_set_sbus64(struct device *, int); | ||
508 | |||
498 | /* | 509 | /* |
499 | * Convert a physical pointer to a virtual kernel pointer for /dev/mem | 510 | * Convert a physical pointer to a virtual kernel pointer for /dev/mem |
500 | * access | 511 | * access |
diff --git a/arch/sparc/include/asm/sbus_32.h b/arch/sparc/include/asm/sbus_32.h index b09284b5ee06..435ae394d2bd 100644 --- a/arch/sparc/include/asm/sbus_32.h +++ b/arch/sparc/include/asm/sbus_32.h | |||
@@ -102,10 +102,6 @@ sbus_is_slave(struct sbus_dev *dev) | |||
102 | for ((bus) = sbus_root; (bus); (bus) = (bus)->next) \ | 102 | for ((bus) = sbus_root; (bus); (bus) = (bus)->next) \ |
103 | for ((device) = (bus)->devices; (device); (device) = (device)->next) | 103 | for ((device) = (bus)->devices; (device); (device) = (device)->next) |
104 | 104 | ||
105 | /* Driver DVMA interfaces. */ | ||
106 | #define sbus_can_dma_64bit(sdev) (0) /* actually, sparc_cpu_model==sun4d */ | ||
107 | #define sbus_can_burst64(sdev) (0) /* actually, sparc_cpu_model==sun4d */ | ||
108 | extern void sbus_set_sbus64(struct sbus_dev *, int); | ||
109 | extern void sbus_fill_device_irq(struct sbus_dev *); | 105 | extern void sbus_fill_device_irq(struct sbus_dev *); |
110 | 106 | ||
111 | /* These yield IOMMU mappings in consistent mode. */ | 107 | /* These yield IOMMU mappings in consistent mode. */ |
diff --git a/arch/sparc/include/asm/sbus_64.h b/arch/sparc/include/asm/sbus_64.h index 9a2f27188f6a..79719c2e5fa6 100644 --- a/arch/sparc/include/asm/sbus_64.h +++ b/arch/sparc/include/asm/sbus_64.h | |||
@@ -94,10 +94,6 @@ extern struct sbus_bus *sbus_root; | |||
94 | for ((bus) = sbus_root; (bus); (bus) = (bus)->next) \ | 94 | for ((bus) = sbus_root; (bus); (bus) = (bus)->next) \ |
95 | for ((device) = (bus)->devices; (device); (device) = (device)->next) | 95 | for ((device) = (bus)->devices; (device); (device) = (device)->next) |
96 | 96 | ||
97 | /* Driver DVMA interfaces. */ | ||
98 | #define sbus_can_dma_64bit(sdev) (1) | ||
99 | #define sbus_can_burst64(sdev) (1) | ||
100 | extern void sbus_set_sbus64(struct sbus_dev *, int); | ||
101 | extern void sbus_fill_device_irq(struct sbus_dev *); | 97 | extern void sbus_fill_device_irq(struct sbus_dev *); |
102 | 98 | ||
103 | extern void sbus_arch_bus_ranges_init(struct device_node *, struct sbus_bus *); | 99 | extern void sbus_arch_bus_ranges_init(struct device_node *, struct sbus_bus *); |
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index 0b3035978e0d..e87ed519ffaf 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c | |||
@@ -250,7 +250,7 @@ static void _sparc_free_io(struct resource *res) | |||
250 | 250 | ||
251 | #ifdef CONFIG_SBUS | 251 | #ifdef CONFIG_SBUS |
252 | 252 | ||
253 | void sbus_set_sbus64(struct sbus_dev *sdev, int x) | 253 | void sbus_set_sbus64(struct device *dev, int x) |
254 | { | 254 | { |
255 | printk("sbus_set_sbus64: unsupported\n"); | 255 | printk("sbus_set_sbus64: unsupported\n"); |
256 | } | 256 | } |
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c index e33a8a660e9e..aa47022e13f3 100644 --- a/arch/sparc64/kernel/sbus.c +++ b/arch/sparc64/kernel/sbus.c | |||
@@ -52,13 +52,23 @@ | |||
52 | #define STRBUF_TAG_VALID 0x02UL | 52 | #define STRBUF_TAG_VALID 0x02UL |
53 | 53 | ||
54 | /* Enable 64-bit DVMA mode for the given device. */ | 54 | /* Enable 64-bit DVMA mode for the given device. */ |
55 | void sbus_set_sbus64(struct sbus_dev *sdev, int bursts) | 55 | void sbus_set_sbus64(struct device *dev, int bursts) |
56 | { | 56 | { |
57 | struct iommu *iommu = sdev->ofdev.dev.archdata.iommu; | 57 | struct iommu *iommu = dev->archdata.iommu; |
58 | int slot = sdev->slot; | 58 | struct of_device *op = to_of_device(dev); |
59 | const struct linux_prom_registers *regs; | ||
59 | unsigned long cfg_reg; | 60 | unsigned long cfg_reg; |
61 | int slot; | ||
60 | u64 val; | 62 | u64 val; |
61 | 63 | ||
64 | regs = of_get_property(op->node, "reg", NULL); | ||
65 | if (!regs) { | ||
66 | printk(KERN_ERR "sbus_set_sbus64: Cannot find regs for %s\n", | ||
67 | op->node->full_name); | ||
68 | return; | ||
69 | } | ||
70 | slot = regs->which_io; | ||
71 | |||
62 | cfg_reg = iommu->write_complete_reg; | 72 | cfg_reg = iommu->write_complete_reg; |
63 | switch (slot) { | 73 | switch (slot) { |
64 | case 0: | 74 | case 0: |