aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-08-27 02:33:42 -0400
committerDavid S. Miller <davem@davemloft.net>2008-08-29 05:13:31 -0400
commit63237eeb5ac92d618a0a6055f4b1f65c5d14682b (patch)
tree3d44dea70077557a7543951580447dbb71d00b05 /arch
parent738f2b7b813913e651f39387d007dd961755dee2 (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.h11
-rw-r--r--arch/sparc/include/asm/io_64.h11
-rw-r--r--arch/sparc/include/asm/sbus_32.h4
-rw-r--r--arch/sparc/include/asm/sbus_64.h4
-rw-r--r--arch/sparc/kernel/ioport.c2
-rw-r--r--arch/sparc64/kernel/sbus.c16
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
311static inline int sbus_can_dma_64bit(void)
312{
313 return 0; /* actually, sparc_cpu_model==sun4d */
314}
315static inline int sbus_can_burst64(void)
316{
317 return 0; /* actually, sparc_cpu_model==sun4d */
318}
319struct device;
320extern 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
498static inline int sbus_can_dma_64bit(void)
499{
500 return 1;
501}
502static inline int sbus_can_burst64(void)
503{
504 return 1;
505}
506struct device;
507extern 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 */
108extern void sbus_set_sbus64(struct sbus_dev *, int);
109extern void sbus_fill_device_irq(struct sbus_dev *); 105extern 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)
100extern void sbus_set_sbus64(struct sbus_dev *, int);
101extern void sbus_fill_device_irq(struct sbus_dev *); 97extern void sbus_fill_device_irq(struct sbus_dev *);
102 98
103extern void sbus_arch_bus_ranges_init(struct device_node *, struct sbus_bus *); 99extern 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
253void sbus_set_sbus64(struct sbus_dev *sdev, int x) 253void 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. */
55void sbus_set_sbus64(struct sbus_dev *sdev, int bursts) 55void 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: