Annotation of funnyos/arch/sam7s64/dev/saapbus.c, Revision 1.1
1.1 ! init 1: /*
! 2: * $Id$
! 3: */
! 4: #include <sys/types.h>
! 5: #include <sys/device.h>
! 6: #include <sys/bus.h>
! 7:
! 8: #include <arch/sam7s64/dev/saapbusvar.h>
! 9: #include <libkern/printf.h>
! 10:
! 11: /*
! 12: * SAM7 APB (Advanced Peripheral Bus) support.
! 13: */
! 14:
! 15: int saapbus_attach(struct device *, uint32_t, uint8_t);
! 16:
! 17: uint8_t saapbus_read_1(void *, uint32_t);
! 18: uint16_t saapbus_read_2(void *, uint32_t);
! 19: uint32_t saapbus_read_4(void *, uint32_t);
! 20: int saapbus_write_1(void *, uint32_t, uint8_t);
! 21: int saapbus_write_2(void *, uint32_t, uint16_t);
! 22: int saapbus_write_4(void *, uint32_t, uint32_t);
! 23:
! 24:
! 25: struct driver saapbus_dr = {
! 26: sizeof(struct saapbus_dd),
! 27: saapbus_attach,
! 28: NULL,
! 29: NULL
! 30: };
! 31:
! 32:
! 33: int
! 34: saapbus_attach(struct device *self, uint32_t loc, uint32_t flags)
! 35: {
! 36: struct saapbus_dd *ddp = self->dv_devdata;
! 37: struct bus_handle *bhp = &ddp->od_bh;
! 38:
! 39: bhp->bus_read_1 = saapbus_read_1;
! 40: bhp->bus_read_2 = saapbus_read_2;
! 41: bhp->bus_read_4 = saapbus_read_4;
! 42: bhp->bus_write_1 = saapbus_write_1;
! 43: bhp->bus_write_2 = saapbus_write_2;
! 44: bhp->bus_write_4 = saapbus_write_4;
! 45: bhp->bh_ownerdd = self->dv_devdata;
! 46:
! 47: /* expose our bus_handle to the world */
! 48: self->dv_aux = bhp;
! 49:
! 50: printf("Advanced Peripheral Bus\n");
! 51:
! 52: return(0);
! 53: }
! 54:
! 55:
! 56: uint8_t
! 57: saapbus_read_1(void *ddp, uint32_t addr)
! 58: {
! 59: return( (*(uint8_t *)addr) );
! 60: }
! 61:
! 62:
! 63: uint16_t
! 64: saapbus_read_2(void *ddp, uint32_t addr)
! 65: {
! 66: return( (*(uint16_t *)addr) );
! 67: }
! 68:
! 69:
! 70: uint32_t
! 71: saapbus_read_4(void *ddp, uint32_t addr)
! 72: {
! 73: return( (*(uint32_t *)addr) );
! 74: }
! 75:
! 76:
! 77: int
! 78: saapbus_write_1(void *ddp, uint32_t addr, uint8_t data)
! 79: {
! 80: *((uint8_t *)addr) = data;
! 81:
! 82: return(0);
! 83: }
! 84:
! 85:
! 86: int
! 87: saapbus_write_2(void *ddp, uint32_t addr, uint16_t data)
! 88: {
! 89: *((uint16_t *)addr) = data;
! 90:
! 91: return(0);
! 92: }
! 93:
! 94:
! 95: int
! 96: saapbus_write_4(void *ddp, uint32_t addr, uint32_t data)
! 97: {
! 98: *((uint32_t *)addr) = data;
! 99:
! 100: return(0);
! 101: }
! 102:
CVSweb