Annotation of funnyos/arch/testarm/dev/obio.c, Revision 1.1.1.1
1.1 init 1: /*
2: * $Id: obio.c,v 1.2 2007/10/12 08:54:20 init Exp $
3: */
4: #include <sys/types.h>
5: #include <sys/device.h>
6: #include <sys/mem.h>
7: #include <sys/bus.h>
8: #include <libkern/printf.h>
9:
10: /*
11: * testarm obio (on-board i/o) support.
12: * This is a simple memory read/writes.
13: */
14: uint8_t obio_read_1(struct device *, uint32_t);
15: uint16_t obio_read_2(struct device *, uint32_t);
16: uint32_t obio_read_4(struct device *, uint32_t);
17: int obio_write_1(struct device *, uint32_t, uint8_t);
18: int obio_write_2(struct device *, uint32_t, uint16_t);
19: int obio_write_4(struct device *, uint32_t, uint32_t);
20:
21:
22: int
23: obio_attach(struct device *self)
24: {
25: struct busops *aux = self->dv_aux;
26: aux = (struct busops *)kmalloc(sizeof(struct busops));
27: /*
28: * Link bus ops.
29: */
30: aux->bus_read_1 = obio_read_1;
31: aux->bus_read_2 = obio_read_2;
32: aux->bus_read_4 = obio_read_4;
33: aux->bus_write_1 = obio_write_1;
34: aux->bus_write_2 = obio_write_2;
35: aux->bus_write_4 = obio_write_4;
36:
37: printf("memory-mapped i/o\n");
38:
39: return(0);
40: }
41:
42:
43: uint8_t
44: obio_read_1(struct device *devp, uint32_t addr)
45: {
46: /*
47: * struct device is not used in obio.
48: * There is only one on-board i/o bus in testarm.
49: */
50: return( (*(uint8_t *)addr) );
51: }
52:
53:
54: uint16_t
55: obio_read_2(struct device *devp, uint32_t addr)
56: {
57: return( (*(uint16_t *)addr) );
58: }
59:
60:
61: uint32_t
62: obio_read_4(struct device *devp, uint32_t addr)
63: {
64: return( (*(uint32_t *)addr) );
65: }
66:
67:
68: int
69: obio_write_1(struct device *devp, uint32_t addr, uint8_t data)
70: {
71: *((uint8_t *)addr) = data;
72:
73: /* XXX what about write errors? */
74: return(0);
75: }
76:
77:
78: int
79: obio_write_2(struct device *devp, uint32_t addr, uint16_t data)
80: {
81: *((uint16_t *)addr) = data;
82:
83: return(0);
84: }
85:
86:
87: int
88: obio_write_4(struct device *devp, uint32_t addr, uint32_t data)
89: {
90: *((uint32_t *)addr) = data;
91:
92: return(0);
93: }
94:
CVSweb