git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
include
/
asm-sparc64
/
parport.h
diff --git
a/include/asm-sparc64/parport.h
b/include/asm-sparc64/parport.h
index
676f67e
..
56b5197
100644
(file)
--- a/
include/asm-sparc64/parport.h
+++ b/
include/asm-sparc64/parport.h
@@
-13,6
+13,12
@@
#define PARPORT_PC_MAX_PORTS PARPORT_MAX
#define PARPORT_PC_MAX_PORTS PARPORT_MAX
+/*
+ * While sparc64 doesn't have an ISA DMA API, we provide something that looks
+ * close enough to make parport_pc happy
+ */
+#define HAS_DMA
+
static struct sparc_ebus_info {
struct ebus_dma_info info;
unsigned int addr;
static struct sparc_ebus_info {
struct ebus_dma_info info;
unsigned int addr;
@@
-21,12
+27,12
@@
static struct sparc_ebus_info {
static __inline__ void enable_dma(unsigned int dmanr)
{
static __inline__ void enable_dma(unsigned int dmanr)
{
+ ebus_dma_enable(&sparc_ebus_dmas[dmanr].info, 1);
+
if (ebus_dma_request(&sparc_ebus_dmas[dmanr].info,
sparc_ebus_dmas[dmanr].addr,
sparc_ebus_dmas[dmanr].count))
BUG();
if (ebus_dma_request(&sparc_ebus_dmas[dmanr].info,
sparc_ebus_dmas[dmanr].addr,
sparc_ebus_dmas[dmanr].count))
BUG();
-
- ebus_dma_enable(&sparc_ebus_dmas[dmanr].info, 1);
}
static __inline__ void disable_dma(unsigned int dmanr)
}
static __inline__ void disable_dma(unsigned int dmanr)
@@
-126,10
+132,14
@@
static int parport_pc_find_nonpci_ports (int autoirq, int autodma)
if (ebus_ecpp_p(edev)) {
unsigned long base = edev->resource[0].start;
unsigned long config = edev->resource[1].start;
if (ebus_ecpp_p(edev)) {
unsigned long base = edev->resource[0].start;
unsigned long config = edev->resource[1].start;
+ unsigned long d_base = edev->resource[2].start;
+ unsigned long d_len;
spin_lock_init(&sparc_ebus_dmas[count].info.lock);
spin_lock_init(&sparc_ebus_dmas[count].info.lock);
+ d_len = (edev->resource[2].end -
+ d_base) + 1;
sparc_ebus_dmas[count].info.regs =
sparc_ebus_dmas[count].info.regs =
-
edev->resource[2].start
;
+
ioremap(d_base, d_len)
;
if (!sparc_ebus_dmas[count].info.regs)
continue;
sparc_ebus_dmas[count].info.flags = 0;
if (!sparc_ebus_dmas[count].info.regs)
continue;
sparc_ebus_dmas[count].info.flags = 0;