=================================================================== RCS file: /cvs/funnyos/arch/testarm/dev/obio.c,v retrieving revision 1.4 retrieving revision 1.7 diff -u -r1.4 -r1.7 --- funnyos/arch/testarm/dev/obio.c 2007/10/16 19:42:00 1.4 +++ funnyos/arch/testarm/dev/obio.c 2007/10/16 21:01:40 1.7 @@ -1,5 +1,5 @@ /* - * $Id: obio.c,v 1.4 2007/10/16 18:42:00 init Exp $ + * $Id: obio.c,v 1.7 2007/10/16 20:01:40 init Exp $ */ #include #include @@ -13,18 +13,20 @@ * testarm obio (on-board i/o) support. * This is a simple memory read/writes. */ -uint8_t obio_read_1(struct device *, uint32_t); -uint16_t obio_read_2(struct device *, uint32_t); -uint32_t obio_read_4(struct device *, uint32_t); -int obio_write_1(struct device *, uint32_t, uint8_t); -int obio_write_2(struct device *, uint32_t, uint16_t); -int obio_write_4(struct device *, uint32_t, uint32_t); +int obio_attach(struct device *, uint32_t, uint8_t); +uint8_t obio_read_1(void *, uint32_t); +uint16_t obio_read_2(void *, uint32_t); +uint32_t obio_read_4(void *, uint32_t); +int obio_write_1(void *, uint32_t, uint8_t); +int obio_write_2(void *, uint32_t, uint16_t); +int obio_write_4(void *, uint32_t, uint32_t); + struct driver obio_dr = { - sizeof(obio_dd), + sizeof(struct obio_dd), obio_attach, - obio_detach + NULL }; @@ -32,7 +34,7 @@ obio_attach(struct device *self, uint32_t loc, uint8_t flags) { struct obio_dd *ddp = self->dv_devdata; - struct bus_handle *bhp = ddp->od_bh; + struct bus_handle *bhp = &ddp->od_bh; ddp->od_locked = 0; ddp->od_ndevices = 0; @@ -43,6 +45,7 @@ bhp->bus_write_1 = obio_write_1; bhp->bus_write_2 = obio_write_2; bhp->bus_write_4 = obio_write_4; + bhp->dh_ownerdevp = self; /* XXX UGLY bus_{read|write} stuff will access bus device from bus_handle using this */ /* expose our bus_handle to the world */ self->dv_aux = bhp; @@ -54,7 +57,7 @@ uint8_t -obio_read_1(struct obio_dd *ddp, uint32_t addr) +obio_read_1(void *ddp, uint32_t addr) { /* * There is only one on-board i/o bus in testarm. @@ -64,21 +67,21 @@ uint16_t -obio_read_2(struct obio_dd *ddp, uint32_t addr) +obio_read_2(void *ddp, uint32_t addr) { return( (*(uint16_t *)addr) ); } uint32_t -obio_read_4(struct obio_dd *ddp, uint32_t addr) +obio_read_4(void *ddp, uint32_t addr) { return( (*(uint32_t *)addr) ); } int -obio_write_1(struct obio_dd *ddp, uint32_t addr, uint8_t data) +obio_write_1(void *ddp, uint32_t addr, uint8_t data) { *((uint8_t *)addr) = data; @@ -88,7 +91,7 @@ int -obio_write_2(struct obio_dd *ddp, uint32_t addr, uint16_t data) +obio_write_2(void *ddp, uint32_t addr, uint16_t data) { *((uint16_t *)addr) = data; @@ -97,7 +100,7 @@ int -obio_write_4(struct obio_dd *ddp, uint32_t addr, uint32_t data) +obio_write_4(void *ddp, uint32_t addr, uint32_t data) { *((uint32_t *)addr) = data;