From fda97c65bf12e1f817b99959b8d3a7ab0ae52567 Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> Date: Tue, 8 Aug 2006 22:35:42 +0000 Subject: add automatic throttling and manual un-throttling support git-svn-id: https://svn.openpcd.org:2342/trunk@92 6dc7ffe9-61d6-0310-9af1-9938baff3ed1 --- openpcd/firmware/src/ssc.c | 12 +++++++++++- openpcd/firmware/src/ssc.h | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'openpcd') diff --git a/openpcd/firmware/src/ssc.c b/openpcd/firmware/src/ssc.c index 4c840b6..c9deb79 100644 --- a/openpcd/firmware/src/ssc.c +++ b/openpcd/firmware/src/ssc.c @@ -88,13 +88,23 @@ static void ssc_irq(void) req_ctx_set_state(ssc_state.rx_ctx[0], RCTX_STATE_UDP_EP2_PENDING); } - ssc_rx_refill(); + if (ssc_rx_refill() == -1) + AT91F_AIC_DisableIt(ssc, AT91C_SSC_ENDRX | + AT91C_SSC_TXBUFE | + AT91C_SSC_OVRUN); } if (ssc_sr & AT91C_SSC_OVRUN) DEBUGPCRF("Rx Overrun, shouldn't happen!"); } + +void ssc_rx_unthrottle(void) +{ + AT91F_AIC_EnableIt(ssc, AT91C_SSC_ENDRX | + AT91C_SSC_TXBUFE | AT91C_SSC_OVRUN); +} + void ssc_rx_start(void) { DEBUGPCRF("starting SSC RX\n"); diff --git a/openpcd/firmware/src/ssc.h b/openpcd/firmware/src/ssc.h index 73450ab..710ee45 100644 --- a/openpcd/firmware/src/ssc.h +++ b/openpcd/firmware/src/ssc.h @@ -10,4 +10,6 @@ extern void ssc_rx_init(void); extern void ssc_fini(void); +extern void ssc_rx_unthrottle(void); + #endif -- cgit v1.2.3