summaryrefslogtreecommitdiffstats
path: root/kernel/arch/mips/include/asm/mach-jazz/floppy.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/arch/mips/include/asm/mach-jazz/floppy.h')
-rw-r--r--kernel/arch/mips/include/asm/mach-jazz/floppy.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/kernel/arch/mips/include/asm/mach-jazz/floppy.h b/kernel/arch/mips/include/asm/mach-jazz/floppy.h
new file mode 100644
index 000000000..4b86c88a0
--- /dev/null
+++ b/kernel/arch/mips/include/asm/mach-jazz/floppy.h
@@ -0,0 +1,134 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 1998, 2003 by Ralf Baechle
+ */
+#ifndef __ASM_MACH_JAZZ_FLOPPY_H
+#define __ASM_MACH_JAZZ_FLOPPY_H
+
+#include <linux/delay.h>
+#include <linux/linkage.h>
+#include <linux/types.h>
+#include <linux/mm.h>
+#include <asm/addrspace.h>
+#include <asm/jazz.h>
+#include <asm/jazzdma.h>
+#include <asm/pgtable.h>
+
+static inline unsigned char fd_inb(unsigned int port)
+{
+ unsigned char c;
+
+ c = *(volatile unsigned char *) port;
+ udelay(1);
+
+ return c;
+}
+
+static inline void fd_outb(unsigned char value, unsigned int port)
+{
+ *(volatile unsigned char *) port = value;
+}
+
+/*
+ * How to access the floppy DMA functions.
+ */
+static inline void fd_enable_dma(void)
+{
+ vdma_enable(JAZZ_FLOPPY_DMA);
+}
+
+static inline void fd_disable_dma(void)
+{
+ vdma_disable(JAZZ_FLOPPY_DMA);
+}
+
+static inline int fd_request_dma(void)
+{
+ return 0;
+}
+
+static inline void fd_free_dma(void)
+{
+}
+
+static inline void fd_clear_dma_ff(void)
+{
+}
+
+static inline void fd_set_dma_mode(char mode)
+{
+ vdma_set_mode(JAZZ_FLOPPY_DMA, mode);
+}
+
+static inline void fd_set_dma_addr(char *a)
+{
+ vdma_set_addr(JAZZ_FLOPPY_DMA, vdma_phys2log(CPHYSADDR((unsigned long)a)));
+}
+
+static inline void fd_set_dma_count(unsigned int count)
+{
+ vdma_set_count(JAZZ_FLOPPY_DMA, count);
+}
+
+static inline int fd_get_dma_residue(void)
+{
+ return vdma_get_residue(JAZZ_FLOPPY_DMA);
+}
+
+static inline void fd_enable_irq(void)
+{
+}
+
+static inline void fd_disable_irq(void)
+{
+}
+
+static inline int fd_request_irq(void)
+{
+ return request_irq(FLOPPY_IRQ, floppy_interrupt,
+ 0, "floppy", NULL);
+}
+
+static inline void fd_free_irq(void)
+{
+ free_irq(FLOPPY_IRQ, NULL);
+}
+
+static inline unsigned long fd_getfdaddr1(void)
+{
+ return JAZZ_FDC_BASE;
+}
+
+static inline unsigned long fd_dma_mem_alloc(unsigned long size)
+{
+ unsigned long mem;
+
+ mem = __get_dma_pages(GFP_KERNEL, get_order(size));
+ if(!mem)
+ return 0;
+ vdma_alloc(CPHYSADDR(mem), size); /* XXX error checking */
+
+ return mem;
+}
+
+static inline void fd_dma_mem_free(unsigned long addr, unsigned long size)
+{
+ vdma_free(vdma_phys2log(CPHYSADDR(addr)));
+ free_pages(addr, get_order(size));
+}
+
+static inline unsigned long fd_drive_type(unsigned long n)
+{
+ /* XXX This is wrong for machines with ED 2.88mb disk drives like the
+ Olivetti M700. Anyway, we should suck this from the ARC
+ firmware. */
+ if (n == 0)
+ return 4; /* 3,5", 1.44mb */
+
+ return 0;
+}
+
+#endif /* __ASM_MACH_JAZZ_FLOPPY_H */
Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*
 * mailbox-omap.h
 *
 * Copyright (C) 2013 Texas Instruments, Inc.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

#ifndef _PLAT_MAILBOX_H
#define _PLAT_MAILBOX_H

/* Interrupt register configuration types */
#define MBOX_INTR_CFG_TYPE1	(0)
#define MBOX_INTR_CFG_TYPE2	(1)

/**
 * struct omap_mbox_dev_info - OMAP mailbox device attribute info
 * @name:	name of the mailbox device
 * @tx_id:	mailbox queue id used for transmitting messages
 * @rx_id:	mailbox queue id on which messages are received
 * @irq_id:	irq identifier number to use from the hwmod data
 * @usr_id:	mailbox user id for identifying the interrupt into
 *			the MPU interrupt controller.
 */
struct omap_mbox_dev_info {
	const char *name;
	u32 tx_id;
	u32 rx_id;
	u32 irq_id;
	u32 usr_id;
};

/**
 * struct omap_mbox_pdata - OMAP mailbox platform data
 * @intr_type:	type of interrupt configuration registers used
			while programming mailbox queue interrupts
 * @num_users:	number of users (processor devices) that the mailbox
 *			h/w block can interrupt
 * @num_fifos:	number of h/w fifos within the mailbox h/w block
 * @info_cnt:	number of mailbox devices for the platform
 * @info:	array of mailbox device attributes
 */
struct omap_mbox_pdata {
	u32 intr_type;
	u32 num_users;
	u32 num_fifos;
	u32 info_cnt;
	struct omap_mbox_dev_info *info;
};

#endif /* _PLAT_MAILBOX_H */