summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/imx233/kernel-imx233.h
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2012-01-15 18:42:58 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2012-01-15 18:43:32 +0100
commit66c3086ae54c71413117f3de3dcfb5f0fe8b541d (patch)
tree9f4e213f538244325c36d8154d21be151f54a272 /firmware/target/arm/imx233/kernel-imx233.h
parent1114a2b8ba2da1c489a4faaabfc62c47e03157bb (diff)
downloadrockbox-66c3086ae54c71413117f3de3dcfb5f0fe8b541d.tar.gz
rockbox-66c3086ae54c71413117f3de3dcfb5f0fe8b541d.zip
imx233: oops, forgot file
Change-Id: I2c672b51ac24bfcea7ce2b663deef18e02bc4b1f
Diffstat (limited to 'firmware/target/arm/imx233/kernel-imx233.h')
-rw-r--r--firmware/target/arm/imx233/kernel-imx233.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/kernel-imx233.h b/firmware/target/arm/imx233/kernel-imx233.h
new file mode 100644
index 0000000000..3c62c1597c
--- /dev/null
+++ b/firmware/target/arm/imx233/kernel-imx233.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2011 by Amaury Pouly
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+#ifndef __KERNEL_IMX233__
+#define __KERNEL_IMX233__
+
+#include "kernel.h"
+
+/* The i.MX233 uses in several places virtual channels to multiplex the work.
+ * To arbiter the use of the different channels, we use a simple channel arbiter
+ * based on a semaphore to count the number of channels in use, and a bitmask
+ * protected by a mutex */
+struct channel_arbiter_t
+{
+ struct semaphore sema;
+ struct mutex mutex;
+ unsigned free_bm;
+ int count;
+};
+
+void arbiter_init(struct channel_arbiter_t *a, unsigned count);
+// doesn't check in use !
+void arbiter_reserve(struct channel_arbiter_t *a, unsigned channel);
+/* return channel on success and OBJ_WAIT_TIMEOUT on failure */
+int arbiter_acquire(struct channel_arbiter_t *a, int timeout);
+void arbiter_release(struct channel_arbiter_t *a, int channel);
+
+#endif /* __KERNEL_IMX233__ */ \ No newline at end of file