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