cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

floppy.h (2594B)


      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/linkage.h>
     13#include <linux/types.h>
     14#include <linux/mm.h>
     15#include <asm/addrspace.h>
     16#include <asm/jazz.h>
     17#include <asm/jazzdma.h>
     18
     19static inline unsigned char fd_inb(unsigned int base, unsigned int reg)
     20{
     21	unsigned char c;
     22
     23	c = *(volatile unsigned char *) (base + reg);
     24	udelay(1);
     25
     26	return c;
     27}
     28
     29static inline void fd_outb(unsigned char value, unsigned int base, unsigned int reg)
     30{
     31	*(volatile unsigned char *) (base + reg) = value;
     32}
     33
     34/*
     35 * How to access the floppy DMA functions.
     36 */
     37static inline void fd_enable_dma(void)
     38{
     39	vdma_enable(JAZZ_FLOPPY_DMA);
     40}
     41
     42static inline void fd_disable_dma(void)
     43{
     44	vdma_disable(JAZZ_FLOPPY_DMA);
     45}
     46
     47static inline int fd_request_dma(void)
     48{
     49	return 0;
     50}
     51
     52static inline void fd_free_dma(void)
     53{
     54}
     55
     56static inline void fd_clear_dma_ff(void)
     57{
     58}
     59
     60static inline void fd_set_dma_mode(char mode)
     61{
     62	vdma_set_mode(JAZZ_FLOPPY_DMA, mode);
     63}
     64
     65static inline void fd_set_dma_addr(char *a)
     66{
     67	vdma_set_addr(JAZZ_FLOPPY_DMA, vdma_phys2log(CPHYSADDR((unsigned long)a)));
     68}
     69
     70static inline void fd_set_dma_count(unsigned int count)
     71{
     72	vdma_set_count(JAZZ_FLOPPY_DMA, count);
     73}
     74
     75static inline int fd_get_dma_residue(void)
     76{
     77	return vdma_get_residue(JAZZ_FLOPPY_DMA);
     78}
     79
     80static inline void fd_enable_irq(void)
     81{
     82}
     83
     84static inline void fd_disable_irq(void)
     85{
     86}
     87
     88static inline int fd_request_irq(void)
     89{
     90	return request_irq(FLOPPY_IRQ, floppy_interrupt,
     91			   0, "floppy", NULL);
     92}
     93
     94static inline void fd_free_irq(void)
     95{
     96	free_irq(FLOPPY_IRQ, NULL);
     97}
     98
     99static inline unsigned long fd_getfdaddr1(void)
    100{
    101	return JAZZ_FDC_BASE;
    102}
    103
    104static inline unsigned long fd_dma_mem_alloc(unsigned long size)
    105{
    106	unsigned long mem;
    107
    108	mem = __get_dma_pages(GFP_KERNEL, get_order(size));
    109	if(!mem)
    110		return 0;
    111	vdma_alloc(CPHYSADDR(mem), size);	/* XXX error checking */
    112
    113	return mem;
    114}
    115
    116static inline void fd_dma_mem_free(unsigned long addr, unsigned long size)
    117{
    118	vdma_free(vdma_phys2log(CPHYSADDR(addr)));
    119	free_pages(addr, get_order(size));
    120}
    121
    122static inline unsigned long fd_drive_type(unsigned long n)
    123{
    124	/* XXX This is wrong for machines with ED 2.88mb disk drives like the
    125	   Olivetti M700.  Anyway, we should suck this from the ARC
    126	   firmware.  */
    127	if (n == 0)
    128		return 4;	/* 3,5", 1.44mb */
    129
    130	return 0;
    131}
    132
    133#endif /* __ASM_MACH_JAZZ_FLOPPY_H */