linux/arch/mips/include/asm/mach-generic/floppy.h
<<
>>
Prefs
   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) 1996, 1997, 1998, 2003 by Ralf Baechle
   7 */
   8#ifndef __ASM_MACH_GENERIC_FLOPPY_H
   9#define __ASM_MACH_GENERIC_FLOPPY_H
  10
  11#include <linux/delay.h>
  12#include <linux/init.h>
  13#include <linux/ioport.h>
  14#include <linux/sched.h>
  15#include <linux/linkage.h>
  16#include <linux/types.h>
  17#include <linux/mm.h>
  18
  19#include <asm/bootinfo.h>
  20#include <asm/cachectl.h>
  21#include <asm/dma.h>
  22#include <asm/floppy.h>
  23#include <asm/io.h>
  24#include <asm/irq.h>
  25#include <asm/pgtable.h>
  26
  27/*
  28 * How to access the FDC's registers.
  29 */
  30static inline unsigned char fd_inb(unsigned int port)
  31{
  32        return inb_p(port);
  33}
  34
  35static inline void fd_outb(unsigned char value, unsigned int port)
  36{
  37        outb_p(value, port);
  38}
  39
  40/*
  41 * How to access the floppy DMA functions.
  42 */
  43static inline void fd_enable_dma(void)
  44{
  45        enable_dma(FLOPPY_DMA);
  46}
  47
  48static inline void fd_disable_dma(void)
  49{
  50        disable_dma(FLOPPY_DMA);
  51}
  52
  53static inline int fd_request_dma(void)
  54{
  55        return request_dma(FLOPPY_DMA, "floppy");
  56}
  57
  58static inline void fd_free_dma(void)
  59{
  60        free_dma(FLOPPY_DMA);
  61}
  62
  63static inline void fd_clear_dma_ff(void)
  64{
  65        clear_dma_ff(FLOPPY_DMA);
  66}
  67
  68static inline void fd_set_dma_mode(char mode)
  69{
  70        set_dma_mode(FLOPPY_DMA, mode);
  71}
  72
  73static inline void fd_set_dma_addr(char *addr)
  74{
  75        set_dma_addr(FLOPPY_DMA, (unsigned long) addr);
  76}
  77
  78static inline void fd_set_dma_count(unsigned int count)
  79{
  80        set_dma_count(FLOPPY_DMA, count);
  81}
  82
  83static inline int fd_get_dma_residue(void)
  84{
  85        return get_dma_residue(FLOPPY_DMA);
  86}
  87
  88static inline void fd_enable_irq(void)
  89{
  90        enable_irq(FLOPPY_IRQ);
  91}
  92
  93static inline void fd_disable_irq(void)
  94{
  95        disable_irq(FLOPPY_IRQ);
  96}
  97
  98static inline int fd_request_irq(void)
  99{
 100        return request_irq(FLOPPY_IRQ, floppy_interrupt,
 101                           0, "floppy", NULL);
 102}
 103
 104static inline void fd_free_irq(void)
 105{
 106        free_irq(FLOPPY_IRQ, NULL);
 107}
 108
 109#define fd_free_irq()           free_irq(FLOPPY_IRQ, NULL);
 110
 111
 112static inline unsigned long fd_getfdaddr1(void)
 113{
 114        return 0x3f0;
 115}
 116
 117static inline unsigned long fd_dma_mem_alloc(unsigned long size)
 118{
 119        unsigned long mem;
 120
 121        mem = __get_dma_pages(GFP_KERNEL, get_order(size));
 122
 123        return mem;
 124}
 125
 126static inline void fd_dma_mem_free(unsigned long addr, unsigned long size)
 127{
 128        free_pages(addr, get_order(size));
 129}
 130
 131static inline unsigned long fd_drive_type(unsigned long n)
 132{
 133        if (n == 0)
 134                return 4;       /* 3,5", 1.44mb */
 135
 136        return 0;
 137}
 138
 139#endif /* __ASM_MACH_GENERIC_FLOPPY_H */
 140