[BACK]Return to obio.c CVS log [TXT][DIR] Up to [local] / funnyos / arch / testarm / dev

Diff for /funnyos/arch/testarm/dev/obio.c between version 1.2 and 1.9

version 1.2, 2007/10/16 19:11:47 version 1.9, 2007/10/16 22:27:28
Line 13 
Line 13 
  * testarm obio (on-board i/o) support.   * testarm obio (on-board i/o) support.
  * This is a simple memory read/writes.   * This is a simple memory read/writes.
  */   */
 uint8_t         obio_read_1(struct device *, uint32_t);  int obio_attach(struct device *, uint32_t, uint8_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);  
   
   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(struct obio_dd),
           obio_attach,
           NULL
   };
   
   
 int  int
 obio_attach(struct device *self)  obio_attach(struct device *self, uint32_t loc, uint8_t flags)
 {  {
         struct busops *aux = self->dv_aux;          struct obio_dd *ddp = self->dv_devdata;
         aux = (struct busops *)kmalloc(sizeof(struct busops));          struct bus_handle *bhp = &ddp->od_bh;
         /*  
          * Link bus ops.  
          */  
         aux->bus_read_1 = obio_read_1;  
         aux->bus_read_2 = obio_read_2;  
         aux->bus_read_4 = obio_read_4;  
         aux->bus_write_1 = obio_write_1;  
         aux->bus_write_2 = obio_write_2;  
         aux->bus_write_4 = obio_write_4;  
   
           ddp->od_locked = 0;
           ddp->od_ndevices = 0;
   
           bhp->bus_read_1 = obio_read_1;
           bhp->bus_read_2 = obio_read_2;
           bhp->bus_read_4 = obio_read_4;
           bhp->bus_write_1 = obio_write_1;
           bhp->bus_write_2 = obio_write_2;
           bhp->bus_write_4 = obio_write_4;
           bhp->bh_ownerdd = self->dv_devdata;     /* 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;
   
         printf("memory-mapped i/o\n");          printf("memory-mapped i/o\n");
   
         return(0);          return(0);
Line 43 
Line 57 
   
   
 uint8_t  uint8_t
 obio_read_1(struct device *devp, uint32_t addr)  obio_read_1(void *ddp, uint32_t addr)
 {  {
         /*          /*
          * struct device is not used in obio.  
          * There is only one on-board i/o bus in testarm.           * There is only one on-board i/o bus in testarm.
          */           */
         return( (*(uint8_t *)addr) );          return( (*(uint8_t *)addr) );
Line 54 
Line 67 
   
   
 uint16_t  uint16_t
 obio_read_2(struct device *devp, uint32_t addr)  obio_read_2(void *ddp, uint32_t addr)
 {  {
         return( (*(uint16_t *)addr) );          return( (*(uint16_t *)addr) );
 }  }
   
   
 uint32_t  uint32_t
 obio_read_4(struct device *devp, uint32_t addr)  obio_read_4(void *ddp, uint32_t addr)
 {  {
         return( (*(uint32_t *)addr) );          return( (*(uint32_t *)addr) );
 }  }
   
   
 int  int
 obio_write_1(struct device *devp, uint32_t addr, uint8_t data)  obio_write_1(void *ddp, uint32_t addr, uint8_t data)
 {  {
         *((uint8_t *)addr) = data;          *((uint8_t *)addr) = data;
   
Line 78 
Line 91 
   
   
 int  int
 obio_write_2(struct device *devp, uint32_t addr, uint16_t data)  obio_write_2(void *ddp, uint32_t addr, uint16_t data)
 {  {
         *((uint16_t *)addr) = data;          *((uint16_t *)addr) = data;
   
Line 87 
Line 100 
   
   
 int  int
 obio_write_4(struct device *devp, uint32_t addr, uint32_t data)  obio_write_4(void *ddp, uint32_t addr, uint32_t data)
 {  {
         *((uint32_t *)addr) = data;          *((uint32_t *)addr) = data;
   

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.9

CVSweb