File: /usr/src/linux/arch/arm/lib/io-shark.c

1     /*
2      *  linux/arch/arm/lib/io-shark.c
3      *
4      *  by Alexander Schulz <aschulz@netwinder.org>
5      *
6      * derived from:
7      * linux/arch/arm/lib/io-ebsa.S
8      * Copyright (C) 1995, 1996 Russell King
9      *
10      * This program is free software; you can redistribute it and/or modify
11      * it under the terms of the GNU General Public License version 2 as
12      * published by the Free Software Foundation.
13      */
14     #include <linux/kernel.h>
15     
16     #include <asm/io.h>
17     
18     void print_warning(void)
19     {
20     	printk(KERN_WARNING "ins?/outs? not implemented on this architecture\n");
21     }
22     
23     void insl(unsigned int port, void *to, int len)
24     {
25     	print_warning();
26     }
27     
28     void insb(unsigned int port, void *to, int len)
29     {
30     	print_warning();
31     }
32     
33     void outsl(unsigned int port, const void *from, int len)
34     {
35     	print_warning();
36     }
37     
38     void outsb(unsigned int port, const void *from, int len)
39     {
40     	print_warning();
41     }
42     
43     /* these should be in assembler again */
44     
45     /*
46      * Purpose: read a block of data from a hardware register to memory.
47      * Proto  : insw(int from_port, void *to, int len_in_words);
48      * Proto  : inswb(int from_port, void *to, int len_in_bytes);
49      * Notes  : increment to
50      */
51     
52     void insw(unsigned int port, void *to, int len)
53     {
54     	int i;
55     
56     	for (i = 0; i < len; i++)
57     		((unsigned short *) to)[i] = inw(port);
58     }
59     
60     void inswb(unsigned int port, void *to, int len)
61     {
62     	insw(port, to, len >> 2);
63     }
64     
65     /*
66      * Purpose: write a block of data from memory to a hardware register.
67      * Proto  : outsw(int to_reg, void *from, int len_in_words);
68      * Proto  : outswb(int to_reg, void *from, int len_in_bytes);
69      * Notes  : increments from
70      */
71     
72     void outsw(unsigned int port, const void *from, int len)
73     {
74     	int i;
75     
76     	for (i = 0; i < len; i++)
77     		outw(((unsigned short *) from)[i], port);
78     }
79     
80     void outswb(unsigned int port, const void *from, int len)
81     {
82     	outsw(port, from, len >> 2);
83     }
84