summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/imx233/lradc-imx233.c
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2012-01-15 01:38:41 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2012-01-15 02:29:30 +0100
commit35ba39e57f3e1af32f4b3fd24ef633243b36d30e (patch)
tree8147420bdef1cc02eacd7eed5929570a1ecbb631 /firmware/target/arm/imx233/lradc-imx233.c
parent8cadb587e88797e7ff94a57464bac3a0bab3523a (diff)
downloadrockbox-35ba39e57f3e1af32f4b3fd24ef633243b36d30e.tar.gz
rockbox-35ba39e57f3e1af32f4b3fd24ef633243b36d30e.tar.bz2
rockbox-35ba39e57f3e1af32f4b3fd24ef633243b36d30e.zip
imx233: add DCP driver (only memcpy implemented), move channel arbiter to kernel-imx233
Change-Id: I2bc5a49459c354027fc67a880bbf3b87c942bdd0
Diffstat (limited to 'firmware/target/arm/imx233/lradc-imx233.c')
-rw-r--r--firmware/target/arm/imx233/lradc-imx233.c54
1 files changed, 3 insertions, 51 deletions
diff --git a/firmware/target/arm/imx233/lradc-imx233.c b/firmware/target/arm/imx233/lradc-imx233.c
index 8b065bffea..432d1c1035 100644
--- a/firmware/target/arm/imx233/lradc-imx233.c
+++ b/firmware/target/arm/imx233/lradc-imx233.c
@@ -21,60 +21,12 @@
#include "system.h"
#include "system-target.h"
#include "lradc-imx233.h"
-
-struct channel_arbiter_t
-{
- struct semaphore sema;
- struct mutex mutex;
- unsigned free_bm;
- int count;
-};
-
-static void arbiter_init(struct channel_arbiter_t *a, unsigned count)
-{
- mutex_init(&a->mutex);
- semaphore_init(&a->sema, count, count);
- a->free_bm = (1 << count) - 1;
- a->count = count;
-}
-
-// doesn't check in use !
-static void arbiter_reserve(struct channel_arbiter_t *a, unsigned channel)
-{
- // assume semaphore has a free slot immediately
- if(semaphore_wait(&a->sema, TIMEOUT_NOBLOCK) != OBJ_WAIT_SUCCEEDED)
- panicf("arbiter_reserve failed on semaphore_wait !");
- mutex_lock(&a->mutex);
- a->free_bm &= ~(1 << channel);
- mutex_unlock(&a->mutex);
-}
-
-static int arbiter_acquire(struct channel_arbiter_t *a, int timeout)
-{
- int w = semaphore_wait(&a->sema, timeout);
- if(w == OBJ_WAIT_TIMEDOUT)
- return w;
- mutex_lock(&a->mutex);
- int chan = find_first_set_bit(a->free_bm);
- if(chan >= a->count)
- panicf("arbiter_acquire cannot find a free channel !");
- a->free_bm &= ~(1 << chan);
- mutex_unlock(&a->mutex);
- return chan;
-}
-
-static void arbiter_release(struct channel_arbiter_t *a, int channel)
-{
- mutex_lock(&a->mutex);
- a->free_bm |= 1 << channel;
- mutex_unlock(&a->mutex);
- semaphore_release(&a->sema);
-}
+#include "kernel-imx233.h"
/* channels */
-struct channel_arbiter_t channel_arbiter;
+static struct channel_arbiter_t channel_arbiter;
/* delay channels */
-struct channel_arbiter_t delay_arbiter;
+static struct channel_arbiter_t delay_arbiter;
void imx233_lradc_setup_channel(int channel, bool div2, bool acc, int nr_samples, int src)
{