1.1 --- a/test.c Sun Feb 10 18:37:23 2013 +0000
1.2 +++ b/test.c Sun Feb 10 18:50:31 2013 +0000
1.3 @@ -16,6 +16,7 @@
1.4 #include <ubb/ubb.h>
1.5 #include <stdio.h>
1.6 #include <time.h>
1.7 +#include <unistd.h>
1.8
1.9 /* Pin assignments:
1.10 *
1.11 @@ -44,12 +45,17 @@
1.12 #define MAX_REG_READ 0x00
1.13 #define MAX_REG_WRITE 0x02
1.14
1.15 +#define MAX_REG_USBIRQ 13
1.16 #define MAX_REG_USBCTL 15
1.17 #define MAX_REG_PINCTL 17
1.18 #define MAX_REG_REVISION 18
1.19 #define MAX_REG_MODE 27
1.20 #define MAX_REG_HRSL 31
1.21
1.22 +#define MAX_USBIRQ_OSCOKIRQ 1
1.23 +#define MAX_USBIRQ_NOVBUSIRQ 32
1.24 +#define MAX_USBIRQ_VBUSIRQ 64
1.25 +
1.26 #define MAX_USBCTL_PWRDOWN 16
1.27 #define MAX_USBCTL_CHIPRES 32
1.28
1.29 @@ -218,6 +224,18 @@
1.30 spi_end();
1.31 }
1.32
1.33 +uint8_t check()
1.34 +{
1.35 + uint8_t oscillator = 0;
1.36 +
1.37 + spi_begin();
1.38 + spi_sendrecv(max_reg_read(MAX_REG_USBIRQ));
1.39 + oscillator = spi_sendrecv(0);
1.40 + spi_end();
1.41 +
1.42 + return (oscillator & ~(MAX_USBIRQ_NOVBUSIRQ | MAX_USBIRQ_VBUSIRQ)) == MAX_USBIRQ_OSCOKIRQ;
1.43 +}
1.44 +
1.45 int main(int argc, char *argv[])
1.46 {
1.47 uint8_t status = 0, revision = 0, hrsl = 0;
1.48 @@ -254,10 +272,10 @@
1.49 spi_sendrecv(max_reg_write(MAX_REG_PINCTL));
1.50 spi_sendrecv(MAX_PINCTL_INTLEVEL_LEVEL | MAX_PINCTL_FDUPSPI_FULL);
1.51 spi_end();
1.52 - printf("INT set to %d\n", PIN(MAX_INT));
1.53
1.54 reset();
1.55 chipreset();
1.56 + printf("Ready? %d\n", check());
1.57
1.58 /* Set host mode. */
1.59
1.60 @@ -266,7 +284,7 @@
1.61 spi_sendrecv(max_reg_write(MAX_REG_MODE));
1.62 spi_sendrecv(MAX_MODE_HOST | MAX_MODE_SEPIRQ_OFF | MAX_MODE_DMPULLDN | MAX_MODE_DPPULLDN);
1.63 spi_end();
1.64 - printf("INT set to %d\n", PIN(MAX_INT));
1.65 + printf("Ready? %d\n", check());
1.66
1.67 /* Read from the REVISION register. */
1.68
1.69 @@ -277,7 +295,7 @@
1.70 spi_end();
1.71 printf("Status = %x\n", status);
1.72 printf("Revision = %x\n", revision);
1.73 - printf("INT set to %d\n", PIN(MAX_INT));
1.74 + printf("Ready? %d\n", check());
1.75
1.76 printf("HRSL...\n");
1.77 spi_begin();
1.78 @@ -286,7 +304,7 @@
1.79 spi_end();
1.80 printf("Status = %x\n", status);
1.81 printf("HRSL = %x\n", hrsl);
1.82 - printf("INT set to %d\n", PIN(MAX_INT));
1.83 + printf("Ready? %d\n", check());
1.84
1.85 printf("Closing...\n");
1.86 ubb_close(0);