diff --git a/atusb/fw/board.c b/atusb/fw/board.c index 9add5e0..7e1bd98 100644 --- a/atusb/fw/board.c +++ b/atusb/fw/board.c @@ -96,6 +96,13 @@ uint8_t read_irq(void) } +void slp_tr(void) +{ + SET(SLP_TR); + CLR(SLP_TR); +} + + void led(int on) { if (on) diff --git a/atusb/fw/board.h b/atusb/fw/board.h index 0e5dbfe..c5e21e8 100644 --- a/atusb/fw/board.h +++ b/atusb/fw/board.h @@ -70,6 +70,7 @@ extern uint8_t board_sernum[42]; void reset_rf(void); void reset_cpu(void); uint8_t read_irq(void); +void slp_tr(void); void led(int on); void panic(void); diff --git a/atusb/fw/ep0.c b/atusb/fw/ep0.c index 2e5d895..81c2a3f 100644 --- a/atusb/fw/ep0.c +++ b/atusb/fw/ep0.c @@ -123,6 +123,11 @@ static int my_setup(const struct setup_request *setup) usb_send(&eps[0], buf, 3, NULL, NULL); return 1; + case ATUSB_TO_DEV(ATUSB_SLP_TR): + debug("ATUSB_SLP_TR\n"); + slp_tr(); + return 1; + case ATUSB_TO_DEV(ATUSB_REG_WRITE): debug("ATUSB_REG_WRITE\n"); spi_begin(); diff --git a/atusb/fw/include/atusb/ep0.h b/atusb/fw/include/atusb/ep0.h index d887762..00746e1 100644 --- a/atusb/fw/include/atusb/ep0.h +++ b/atusb/fw/include/atusb/ep0.h @@ -26,6 +26,7 @@ * host-> ATUSB_TEST - - 0 * ->host ATUSB_TIMER - - #bytes (6) * ->host ATUSB_GPIO dir+data mask+p# 3 + * host-> ATUSB_SLP_TR - - 0 * * host-> ATUSB_REG_WRITE value addr 0 * ->host ATUSB_REG_READ - addr 1 @@ -74,6 +75,7 @@ enum atspi_requests { ATUSB_TEST, /* atusb-sil only */ ATUSB_TIMER, ATUSB_GPIO, + ATUSB_SLP_TR, ATUSB_REG_WRITE = 0x20, /* transceiver group */ ATUSB_REG_READ, ATUSB_BUF_WRITE,