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

Diff for /funnyos/arch/sam7s64/dev/sapio.c between version 1.1 and 1.2

version 1.1, 2007/11/15 20:48:27 version 1.2, 2007/11/24 19:07:07
Line 6 
Line 6 
 #include <sys/bus.h>  #include <sys/bus.h>
 #include <sys/gpio.h>  #include <sys/gpio.h>
   
 #include <arch/sam7s64/dev/sapioreg.h>  #include <arch/sam7s64/dev/at91sam7.h>
 #include <arch/sam7s64/dev/sapiovar.h>  #include <arch/sam7s64/dev/sapiovar.h>
   
 /*  /*
Line 37 
Line 37 
         /* acquire bus_handle from parent */          /* acquire bus_handle from parent */
         ddp->pio_bhp = self->dv_parent->dv_aux;          ddp->pio_bhp = self->dv_parent->dv_aux;
   
         /* save our location on parent (or use default if loc == 0) */  
         ddp->pio_ioaddr = (loc != 0) ? loc : SAPIO_BASE;  
   
         gcp->gc_pinread         = sapio_pinread;          gcp->gc_pinread         = sapio_pinread;
         gcp->gc_pinwrite        = sapio_pinwrite;          gcp->gc_pinwrite        = sapio_pinwrite;
         gcp->gc_pinset          = sapio_pinset;          gcp->gc_pinset          = sapio_pinset;
Line 89 
Line 86 
   
         /* PIO or Periph. ? */          /* PIO or Periph. ? */
         if (pin.gp_pio == 0)          if (pin.gp_pio == 0)
                 bus_write_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_PDR, 1 << pin.gp_pinno);                  bus_write_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_PDR, 1 << pin.gp_pinno);
         else          else
                 bus_write_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_PER, 1 << pin.gp_pinno);                  bus_write_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_PER, 1 << pin.gp_pinno);
   
         /* flags */          /* flags */
         if (pin.gp_flags & GPIO_PIN_OUTPUT)          if (pin.gp_flags & GPIO_PIN_OUTPUT)
                 /* enable output */                  /* enable output */
                 bus_write_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_OER, 1 << pin.gp_pinno);                  bus_write_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_OER, 1 << pin.gp_pinno);
         else          else
                 /* disable output */                  /* disable output */
                 bus_write_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_ODR, 1 << pin.gp_pinno);                  bus_write_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_ODR, 1 << pin.gp_pinno);
   
         /* data */          /* data */
         if (pin.gp_value == 1)          if (pin.gp_value == 1)
                 bus_write_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_SODR, 1 << pin.gp_pinno);                  bus_write_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_SODR, 1 << pin.gp_pinno);
         else          else
                 bus_write_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_CODR, 1 << pin.gp_pinno);                  bus_write_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_CODR, 1 << pin.gp_pinno);
 }  }
   
   
Line 121 
Line 118 
         gp.gp_pinno = pin;          gp.gp_pinno = pin;
   
         /* see if this pin belongs to Peripherals (0) or to PIO (1) */          /* see if this pin belongs to Peripherals (0) or to PIO (1) */
         gp.gp_pio = bus_read_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_PSR) & (1 << pin);          gp.gp_pio = bus_read_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_PSR) & (1 << pin);
   
         /* get state through Output Status Register */          /* get state through Output Status Register */
         gp.gp_flags = (bus_read_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_OSR) & (1 << pin)) ?          gp.gp_flags = (bus_read_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_OSR) & (1 << pin)) ?
                                         GPIO_PIN_INPUT | GPIO_PIN_OUTPUT : GPIO_PIN_INPUT; /* XXX how to determine input flag? */                                          GPIO_PIN_INPUT | GPIO_PIN_OUTPUT : GPIO_PIN_INPUT; /* XXX how to determine input flag? */
   
         /* read value in Pin Data Status Register */          /* read value in Pin Data Status Register */
         gp.gp_value = bus_read_4(sdd->pio_bhp, sdd->pio_ioaddr + SAPIO_PIO_PDSR) & (1 << pin);          gp.gp_value = bus_read_4(sdd->pio_bhp, (uint32_t)AT91C_PIOA_PDSR) & (1 << pin);
   
         return(gp);          return(gp);
 }  }

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

CVSweb