1.1 --- a/test.c Sun Feb 10 20:12:04 2013 +0000
1.2 +++ b/test.c Sun Feb 10 20:18:28 2013 +0000
1.3 @@ -143,6 +143,35 @@
1.4 return result;
1.5 }
1.6
1.7 +uint8_t max_read(uint8_t reg, uint8_t *status)
1.8 +{
1.9 + uint8_t result = 0, tmpstatus = 0;
1.10 +
1.11 + tmpstatus = 0;
1.12 +
1.13 + spi_begin();
1.14 + tmpstatus = spi_sendrecv(max_reg_read(reg));
1.15 + result = spi_sendrecv(0);
1.16 + spi_end();
1.17 +
1.18 + if (status != NULL)
1.19 + *status = tmpstatus;
1.20 +
1.21 + return result;
1.22 +}
1.23 +
1.24 +uint8_t max_write(uint8_t reg, uint8_t value)
1.25 +{
1.26 + uint8_t status = 0;
1.27 +
1.28 + spi_begin();
1.29 + status = spi_sendrecv(max_reg_write(reg));
1.30 + spi_sendrecv(value);
1.31 + spi_end();
1.32 +
1.33 + return status;
1.34 +}
1.35 +
1.36 void reset()
1.37 {
1.38 SET(MAX_RESET);
1.39 @@ -153,26 +182,17 @@
1.40 void chipreset()
1.41 {
1.42 printf("Resetting...\n");
1.43 - spi_begin();
1.44 - spi_sendrecv(max_reg_write(MAX_REG_USBCTL));
1.45 - spi_sendrecv(MAX_USBCTL_CHIPRES);
1.46 - spi_end();
1.47 + max_write(MAX_REG_USBCTL, MAX_USBCTL_CHIPRES);
1.48
1.49 printf("Clearing the reset...\n");
1.50 - spi_begin();
1.51 - spi_sendrecv(max_reg_write(MAX_REG_USBCTL));
1.52 - spi_sendrecv(0);
1.53 - spi_end();
1.54 + max_write(MAX_REG_USBCTL, 0);
1.55 }
1.56
1.57 uint8_t check()
1.58 {
1.59 - uint8_t oscillator = 0;
1.60 + uint8_t oscillator;
1.61
1.62 - spi_begin();
1.63 - spi_sendrecv(max_reg_read(MAX_REG_USBIRQ));
1.64 - oscillator = spi_sendrecv(0);
1.65 - spi_end();
1.66 + oscillator = max_read(MAX_REG_USBIRQ, NULL);
1.67
1.68 return (oscillator & ~(MAX_USBIRQ_NOVBUSIRQ | MAX_USBIRQ_VBUSIRQ)) == MAX_USBIRQ_OSCOKIRQ;
1.69 }
1.70 @@ -209,10 +229,7 @@
1.71 /* Set full-duplex, interrupt signalling. */
1.72
1.73 printf("Setting pin control...\n");
1.74 - spi_begin();
1.75 - spi_sendrecv(max_reg_write(MAX_REG_PINCTL));
1.76 - spi_sendrecv(MAX_PINCTL_INTLEVEL_LEVEL | MAX_PINCTL_FDUPSPI_FULL);
1.77 - spi_end();
1.78 + max_write(MAX_REG_PINCTL, MAX_PINCTL_INTLEVEL_LEVEL | MAX_PINCTL_FDUPSPI_FULL);
1.79
1.80 reset();
1.81 chipreset();
1.82 @@ -221,28 +238,20 @@
1.83 /* Set host mode. */
1.84
1.85 printf("Setting mode...\n");
1.86 - spi_begin();
1.87 - spi_sendrecv(max_reg_write(MAX_REG_MODE));
1.88 - spi_sendrecv(MAX_MODE_HOST | MAX_MODE_SEPIRQ_OFF | MAX_MODE_DMPULLDN | MAX_MODE_DPPULLDN);
1.89 - spi_end();
1.90 + status = max_write(MAX_REG_MODE, MAX_MODE_HOST | MAX_MODE_SEPIRQ_OFF | MAX_MODE_DMPULLDN | MAX_MODE_DPPULLDN);
1.91 + printf("Status = %x\n", status);
1.92 printf("Ready? %d\n", check());
1.93
1.94 /* Read from the REVISION register. */
1.95
1.96 printf("Reading...\n");
1.97 - spi_begin();
1.98 - status = spi_sendrecv(max_reg_read(MAX_REG_REVISION));
1.99 - revision = spi_sendrecv(0);
1.100 - spi_end();
1.101 + revision = max_read(MAX_REG_REVISION, &status);
1.102 printf("Status = %x\n", status);
1.103 printf("Revision = %x\n", revision);
1.104 printf("Ready? %d\n", check());
1.105
1.106 printf("HRSL...\n");
1.107 - spi_begin();
1.108 - status = spi_sendrecv(max_reg_read(MAX_REG_HRSL));
1.109 - hrsl = spi_sendrecv(0);
1.110 - spi_end();
1.111 + hrsl = max_read(MAX_REG_HRSL, &status);
1.112 printf("Status = %x\n", status);
1.113 printf("HRSL = %x\n", hrsl);
1.114 printf("Ready? %d\n", check());