# HG changeset patch # User Paul Boddie # Date 1360522231 0 # Node ID e015ad3df503cdee129754aca91f8f22809501ec # Parent 3cd84546a059a84d6cda9427b89fdb248b67a233 Added a function to check the oscillator, although this does not seem to obtain useful information from the device. diff -r 3cd84546a059 -r e015ad3df503 test.c --- a/test.c Sun Feb 10 18:37:23 2013 +0000 +++ b/test.c Sun Feb 10 18:50:31 2013 +0000 @@ -16,6 +16,7 @@ #include #include #include +#include /* Pin assignments: * @@ -44,12 +45,17 @@ #define MAX_REG_READ 0x00 #define MAX_REG_WRITE 0x02 +#define MAX_REG_USBIRQ 13 #define MAX_REG_USBCTL 15 #define MAX_REG_PINCTL 17 #define MAX_REG_REVISION 18 #define MAX_REG_MODE 27 #define MAX_REG_HRSL 31 +#define MAX_USBIRQ_OSCOKIRQ 1 +#define MAX_USBIRQ_NOVBUSIRQ 32 +#define MAX_USBIRQ_VBUSIRQ 64 + #define MAX_USBCTL_PWRDOWN 16 #define MAX_USBCTL_CHIPRES 32 @@ -218,6 +224,18 @@ spi_end(); } +uint8_t check() +{ + uint8_t oscillator = 0; + + spi_begin(); + spi_sendrecv(max_reg_read(MAX_REG_USBIRQ)); + oscillator = spi_sendrecv(0); + spi_end(); + + return (oscillator & ~(MAX_USBIRQ_NOVBUSIRQ | MAX_USBIRQ_VBUSIRQ)) == MAX_USBIRQ_OSCOKIRQ; +} + int main(int argc, char *argv[]) { uint8_t status = 0, revision = 0, hrsl = 0; @@ -254,10 +272,10 @@ spi_sendrecv(max_reg_write(MAX_REG_PINCTL)); spi_sendrecv(MAX_PINCTL_INTLEVEL_LEVEL | MAX_PINCTL_FDUPSPI_FULL); spi_end(); - printf("INT set to %d\n", PIN(MAX_INT)); reset(); chipreset(); + printf("Ready? %d\n", check()); /* Set host mode. */ @@ -266,7 +284,7 @@ spi_sendrecv(max_reg_write(MAX_REG_MODE)); spi_sendrecv(MAX_MODE_HOST | MAX_MODE_SEPIRQ_OFF | MAX_MODE_DMPULLDN | MAX_MODE_DPPULLDN); spi_end(); - printf("INT set to %d\n", PIN(MAX_INT)); + printf("Ready? %d\n", check()); /* Read from the REVISION register. */ @@ -277,7 +295,7 @@ spi_end(); printf("Status = %x\n", status); printf("Revision = %x\n", revision); - printf("INT set to %d\n", PIN(MAX_INT)); + printf("Ready? %d\n", check()); printf("HRSL...\n"); spi_begin(); @@ -286,7 +304,7 @@ spi_end(); printf("Status = %x\n", status); printf("HRSL = %x\n", hrsl); - printf("INT set to %d\n", PIN(MAX_INT)); + printf("Ready? %d\n", check()); printf("Closing...\n"); ubb_close(0);