diff options
Diffstat (limited to 'arch/mips/include/asm/mach-jazz/floppy.h')
-rw-r--r-- | arch/mips/include/asm/mach-jazz/floppy.h | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/arch/mips/include/asm/mach-jazz/floppy.h b/arch/mips/include/asm/mach-jazz/floppy.h new file mode 100644 index 00000000000..56e9ca6ae42 --- /dev/null +++ b/arch/mips/include/asm/mach-jazz/floppy.h | |||
@@ -0,0 +1,135 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1998, 2003 by Ralf Baechle | ||
7 | */ | ||
8 | #ifndef __ASM_MACH_JAZZ_FLOPPY_H | ||
9 | #define __ASM_MACH_JAZZ_FLOPPY_H | ||
10 | |||
11 | #include <linux/delay.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/linkage.h> | ||
14 | #include <linux/types.h> | ||
15 | #include <linux/mm.h> | ||
16 | #include <asm/addrspace.h> | ||
17 | #include <asm/jazz.h> | ||
18 | #include <asm/jazzdma.h> | ||
19 | #include <asm/pgtable.h> | ||
20 | |||
21 | static inline unsigned char fd_inb(unsigned int port) | ||
22 | { | ||
23 | unsigned char c; | ||
24 | |||
25 | c = *(volatile unsigned char *) port; | ||
26 | udelay(1); | ||
27 | |||
28 | return c; | ||
29 | } | ||
30 | |||
31 | static inline void fd_outb(unsigned char value, unsigned int port) | ||
32 | { | ||
33 | *(volatile unsigned char *) port = value; | ||
34 | } | ||
35 | |||
36 | /* | ||
37 | * How to access the floppy DMA functions. | ||
38 | */ | ||
39 | static inline void fd_enable_dma(void) | ||
40 | { | ||
41 | vdma_enable(JAZZ_FLOPPY_DMA); | ||
42 | } | ||
43 | |||
44 | static inline void fd_disable_dma(void) | ||
45 | { | ||
46 | vdma_disable(JAZZ_FLOPPY_DMA); | ||
47 | } | ||
48 | |||
49 | static inline int fd_request_dma(void) | ||
50 | { | ||
51 | return 0; | ||
52 | } | ||
53 | |||
54 | static inline void fd_free_dma(void) | ||
55 | { | ||
56 | } | ||
57 | |||
58 | static inline void fd_clear_dma_ff(void) | ||
59 | { | ||
60 | } | ||
61 | |||
62 | static inline void fd_set_dma_mode(char mode) | ||
63 | { | ||
64 | vdma_set_mode(JAZZ_FLOPPY_DMA, mode); | ||
65 | } | ||
66 | |||
67 | static inline void fd_set_dma_addr(char *a) | ||
68 | { | ||
69 | vdma_set_addr(JAZZ_FLOPPY_DMA, vdma_phys2log(CPHYSADDR((unsigned long)a))); | ||
70 | } | ||
71 | |||
72 | static inline void fd_set_dma_count(unsigned int count) | ||
73 | { | ||
74 | vdma_set_count(JAZZ_FLOPPY_DMA, count); | ||
75 | } | ||
76 | |||
77 | static inline int fd_get_dma_residue(void) | ||
78 | { | ||
79 | return vdma_get_residue(JAZZ_FLOPPY_DMA); | ||
80 | } | ||
81 | |||
82 | static inline void fd_enable_irq(void) | ||
83 | { | ||
84 | } | ||
85 | |||
86 | static inline void fd_disable_irq(void) | ||
87 | { | ||
88 | } | ||
89 | |||
90 | static inline int fd_request_irq(void) | ||
91 | { | ||
92 | return request_irq(FLOPPY_IRQ, floppy_interrupt, | ||
93 | IRQF_DISABLED, "floppy", NULL); | ||
94 | } | ||
95 | |||
96 | static inline void fd_free_irq(void) | ||
97 | { | ||
98 | free_irq(FLOPPY_IRQ, NULL); | ||
99 | } | ||
100 | |||
101 | static inline unsigned long fd_getfdaddr1(void) | ||
102 | { | ||
103 | return JAZZ_FDC_BASE; | ||
104 | } | ||
105 | |||
106 | static inline unsigned long fd_dma_mem_alloc(unsigned long size) | ||
107 | { | ||
108 | unsigned long mem; | ||
109 | |||
110 | mem = __get_dma_pages(GFP_KERNEL, get_order(size)); | ||
111 | if(!mem) | ||
112 | return 0; | ||
113 | vdma_alloc(CPHYSADDR(mem), size); /* XXX error checking */ | ||
114 | |||
115 | return mem; | ||
116 | } | ||
117 | |||
118 | static inline void fd_dma_mem_free(unsigned long addr, unsigned long size) | ||
119 | { | ||
120 | vdma_free(vdma_phys2log(CPHYSADDR(addr))); | ||
121 | free_pages(addr, get_order(size)); | ||
122 | } | ||
123 | |||
124 | static inline unsigned long fd_drive_type(unsigned long n) | ||
125 | { | ||
126 | /* XXX This is wrong for machines with ED 2.88mb disk drives like the | ||
127 | Olivetti M700. Anyway, we should suck this from the ARC | ||
128 | firmware. */ | ||
129 | if (n == 0) | ||
130 | return 4; /* 3,5", 1.44mb */ | ||
131 | |||
132 | return 0; | ||
133 | } | ||
134 | |||
135 | #endif /* __ASM_MACH_JAZZ_FLOPPY_H */ | ||