summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Reimer <mattjreimer@gmail.com>2006-11-27 21:35:56 +0000
committerMatt Reimer <mattjreimer@gmail.com>2006-11-27 21:35:56 +0000
commit313c82e3bd14e15219a0ce799e3862d64405f25b (patch)
tree0bce60622a014bc7c974aaeacae8848827951c23
parent9d82a24d4c13533fe0ae8a026bc846e6077e94e6 (diff)
parentc8c52fc4c7b82f5e4de799d3f37292e8daec6705 (diff)
merge of '2b33aa7e14fb73dac68d3c76e023f7c50ddf272b'
and '8fd787cd0451416efde2b7d17050c5337130fe3c'
-rw-r--r--packages/bash/bash-3.2/.mtn2git_empty0
-rw-r--r--packages/bash/bash-3.2/001-005.patch312
-rw-r--r--packages/bash/bash_3.2.bb28
-rwxr-xr-xpackages/initscripts/initscripts-1.0/checkroot.sh14
-rw-r--r--packages/initscripts/initscripts_1.0.bb2
-rw-r--r--packages/libexif/libexif_0.6.13.bb18
-rw-r--r--packages/linux/linux-openzaurus-2.6.17/asoc-v0.12.4_2.6.17.patch31713
-rw-r--r--packages/linux/linux-openzaurus_2.6.17.bb7
-rw-r--r--packages/ossie/ossie-demo_svn.bb1
-rw-r--r--packages/ossie/ossie-interpolator_svn.bb20
-rw-r--r--packages/ossie/ossie-modulator_svn.bb20
-rw-r--r--packages/ossie/ossie-randombits_svn.bb20
-rw-r--r--packages/ossie/ossie-sigproc_svn.bb19
-rw-r--r--packages/ossie/ossie-tx-random-data_svn.bb20
-rw-r--r--packages/tasks/task-ossie.bb5
15 files changed, 32187 insertions, 12 deletions
diff --git a/packages/bash/bash-3.2/.mtn2git_empty b/packages/bash/bash-3.2/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/bash/bash-3.2/.mtn2git_empty
diff --git a/packages/bash/bash-3.2/001-005.patch b/packages/bash/bash-3.2/001-005.patch
new file mode 100644
index 0000000000..541d71385f
--- /dev/null
+++ b/packages/bash/bash-3.2/001-005.patch
@@ -0,0 +1,312 @@
+
+Collected upstream patches: 001 -> 005
+
+Index: bash-3.2/parse.y
+===================================================================
+--- bash-3.2.orig/parse.y 2006-11-27 20:09:18.000000000 +0100
++++ bash-3.2/parse.y 2006-11-27 20:10:10.000000000 +0100
+@@ -1029,6 +1029,7 @@
+ #define PST_CMDTOKEN 0x1000 /* command token OK - unused */
+ #define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */
+ #define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */
++#define PST_REGEXP 0x8000 /* parsing an ERE/BRE as a single word */
+
+ /* Initial size to allocate for tokens, and the
+ amount to grow them by. */
+@@ -2591,6 +2592,9 @@
+ return (character);
+ }
+
++ if (parser_state & PST_REGEXP)
++ goto tokword;
++
+ /* Shell meta-characters. */
+ if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0))
+ {
+@@ -2698,6 +2702,7 @@
+ if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND))
+ return (character);
+
++tokword:
+ /* Okay, if we got this far, we have to read a word. Read one,
+ and then check it against the known ones. */
+ result = read_token_word (character);
+@@ -2735,7 +2740,7 @@
+ /* itrace("parse_matched_pair: open = %c close = %c", open, close); */
+ count = 1;
+ pass_next_character = backq_backslash = was_dollar = in_comment = 0;
+- check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
++ check_comment = (flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
+
+ /* RFLAGS is the set of flags we want to pass to recursive calls. */
+ rflags = (qc == '"') ? P_DQUOTE : (flags & P_DQUOTE);
+@@ -3202,8 +3207,11 @@
+ if (tok == WORD && test_binop (yylval.word->word))
+ op = yylval.word;
+ #if defined (COND_REGEXP)
+- else if (tok == WORD && STREQ (yylval.word->word,"=~"))
+- op = yylval.word;
++ else if (tok == WORD && STREQ (yylval.word->word, "=~"))
++ {
++ op = yylval.word;
++ parser_state |= PST_REGEXP;
++ }
+ #endif
+ else if (tok == '<' || tok == '>')
+ op = make_word_from_token (tok); /* ( */
+@@ -3234,6 +3242,7 @@
+
+ /* rhs */
+ tok = read_token (READ);
++ parser_state &= ~PST_REGEXP;
+ if (tok == WORD)
+ {
+ tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL);
+@@ -3419,9 +3428,34 @@
+ goto next_character;
+ }
+
++#ifdef COND_REGEXP
++ /* When parsing a regexp as a single word inside a conditional command,
++ we need to special-case characters special to both the shell and
++ regular expressions. Right now, that is only '(' and '|'. */ /*)*/
++ if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/
++ {
++ if (character == '|')
++ goto got_character;
++
++ push_delimiter (dstack, character);
++ ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0);
++ pop_delimiter (dstack);
++ if (ttok == &matched_pair_error)
++ return -1; /* Bail immediately. */
++ RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2,
++ token_buffer_size, TOKEN_DEFAULT_GROW_SIZE);
++ token[token_index++] = character;
++ strcpy (token + token_index, ttok);
++ token_index += ttoklen;
++ FREE (ttok);
++ dollar_present = all_digit_token = 0;
++ goto next_character;
++ }
++#endif /* COND_REGEXP */
++
+ #ifdef EXTENDED_GLOB
+ /* Parse a ksh-style extended pattern matching specification. */
+- if (extended_glob && PATTERN_CHAR (character))
++ if MBTEST(extended_glob && PATTERN_CHAR (character))
+ {
+ peek_char = shell_getc (1);
+ if MBTEST(peek_char == '(') /* ) */
+Index: bash-3.2/patchlevel.h
+===================================================================
+--- bash-3.2.orig/patchlevel.h 2006-11-27 20:09:18.000000000 +0100
++++ bash-3.2/patchlevel.h 2006-11-27 20:11:06.000000000 +0100
+@@ -25,6 +25,6 @@
+ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
+ looks for to find the patch level (for the sccs version string). */
+
+-#define PATCHLEVEL 0
++#define PATCHLEVEL 5
+
+ #endif /* _PATCHLEVEL_H_ */
+Index: bash-3.2/po/ru.po
+===================================================================
+--- bash-3.2.orig/po/ru.po 2006-11-27 20:09:18.000000000 +0100
++++ bash-3.2/po/ru.po 2006-11-27 20:10:00.000000000 +0100
+@@ -12,7 +12,7 @@
+ "Last-Translator: Evgeniy Dushistov <dushistov@mail.ru>\n"
+ "Language-Team: Russian <ru@li.org>\n"
+ "MIME-Version: 1.0\n"
+-"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Type: text/plain; charset=KOI8-R\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+Index: bash-3.2/subst.c
+===================================================================
+--- bash-3.2.orig/subst.c 2006-11-27 20:09:18.000000000 +0100
++++ bash-3.2/subst.c 2006-11-27 20:10:26.000000000 +0100
+@@ -5707,6 +5707,11 @@
+ vtype &= ~VT_STARSUB;
+
+ mflags = 0;
++ if (patsub && *patsub == '/')
++ {
++ mflags |= MATCH_GLOBREP;
++ patsub++;
++ }
+
+ /* Malloc this because expand_string_if_necessary or one of the expansion
+ functions in its call chain may free it on a substitution error. */
+@@ -5741,13 +5746,12 @@
+ }
+
+ /* ksh93 doesn't allow the match specifier to be a part of the expanded
+- pattern. This is an extension. */
++ pattern. This is an extension. Make sure we don't anchor the pattern
++ at the beginning or end of the string if we're doing global replacement,
++ though. */
+ p = pat;
+- if (pat && pat[0] == '/')
+- {
+- mflags |= MATCH_GLOBREP|MATCH_ANY;
+- p++;
+- }
++ if (mflags & MATCH_GLOBREP)
++ mflags |= MATCH_ANY;
+ else if (pat && pat[0] == '#')
+ {
+ mflags |= MATCH_BEG;
+Index: bash-3.2/tests/new-exp.right
+===================================================================
+--- bash-3.2.orig/tests/new-exp.right 2006-11-27 20:09:18.000000000 +0100
++++ bash-3.2/tests/new-exp.right 2006-11-27 20:10:29.000000000 +0100
+@@ -430,7 +430,7 @@
+ Case06---1---A B C::---
+ Case07---3---A:B:C---
+ Case08---3---A:B:C---
+-./new-exp.tests: line 506: /${$(($#-1))}: bad substitution
++./new-exp.tests: line 506: ${$(($#-1))}: bad substitution
+ argv[1] = <a>
+ argv[2] = <b>
+ argv[3] = <c>
+Index: bash-3.2/builtins/printf.def
+===================================================================
+--- bash-3.2.orig/builtins/printf.def 2006-11-27 20:09:18.000000000 +0100
++++ bash-3.2/builtins/printf.def 2006-11-27 20:11:05.000000000 +0100
+@@ -49,6 +49,12 @@
+ # define INT_MIN (-2147483647-1)
+ #endif
+
++#if defined (PREFER_STDARG)
++# include <stdarg.h>
++#else
++# include <varargs.h>
++#endif
++
+ #include <stdio.h>
+ #include <chartypes.h>
+
+@@ -151,6 +157,10 @@
+ #define SKIP1 "#'-+ 0"
+ #define LENMODS "hjlLtz"
+
++#ifndef HAVE_ASPRINTF
++extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
++#endif
++
+ static void printf_erange __P((char *));
+ static int printstr __P((char *, char *, int, int, int));
+ static int tescape __P((char *, char *, int *));
+Index: bash-3.2/lib/sh/snprintf.c
+===================================================================
+--- bash-3.2.orig/lib/sh/snprintf.c 2006-11-27 20:09:18.000000000 +0100
++++ bash-3.2/lib/sh/snprintf.c 2006-11-27 20:11:06.000000000 +0100
+@@ -471,6 +471,8 @@
+ 10^x ~= r
+ * log_10(200) = 2;
+ * log_10(250) = 2;
++ *
++ * NOTE: do not call this with r == 0 -- an infinite loop results.
+ */
+ static int
+ log_10(r)
+@@ -576,8 +578,11 @@
+ {
+ integral_part[0] = '0';
+ integral_part[1] = '\0';
+- fraction_part[0] = '0';
+- fraction_part[1] = '\0';
++ /* The fractional part has to take the precision into account */
++ for (ch = 0; ch < precision-1; ch++)
++ fraction_part[ch] = '0';
++ fraction_part[ch] = '0';
++ fraction_part[ch+1] = '\0';
+ if (fract)
+ *fract = fraction_part;
+ return integral_part;
+@@ -805,6 +810,7 @@
+ PUT_CHAR(*tmp, p);
+ tmp++;
+ }
++
+ PAD_LEFT(p);
+ }
+
+@@ -972,11 +978,21 @@
+ if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
+ tmp = t;
+
++ if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
++ {
++ /* smash the trailing zeros unless altform */
++ for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
++ tmp2[i] = '\0';
++ if (tmp2[0] == '\0')
++ p->precision = 0;
++ }
++
+ /* calculate the padding. 1 for the dot */
+ p->width = p->width -
+ ((d > 0. && p->justify == RIGHT) ? 1:0) -
+ ((p->flags & PF_SPACE) ? 1:0) -
+- strlen(tmp) - p->precision - 1;
++ strlen(tmp) - p->precision -
++ ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0); /* radix char */
+ PAD_RIGHT(p);
+ PUT_PLUS(d, p, 0.);
+ PUT_SPACE(d, p, 0.);
+@@ -991,11 +1007,6 @@
+ if (p->precision != 0 || (p->flags & PF_ALTFORM))
+ PUT_CHAR(decpoint, p); /* put the '.' */
+
+- if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
+- /* smash the trailing zeros unless altform */
+- for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
+- tmp2[i] = '\0';
+-
+ for (; *tmp2; tmp2++)
+ PUT_CHAR(*tmp2, p); /* the fraction */
+
+@@ -1011,14 +1022,19 @@
+ char *tmp, *tmp2;
+ int j, i;
+
+- if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))
++ if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)))
+ return; /* already printed nan or inf */
+
+ GETLOCALEDATA(decpoint, thoussep, grouping);
+ DEF_PREC(p);
+- j = log_10(d);
+- d = d / pow_10(j); /* get the Mantissa */
+- d = ROUND(d, p);
++ if (d == 0.)
++ j = 0;
++ else
++ {
++ j = log_10(d);
++ d = d / pow_10(j); /* get the Mantissa */
++ d = ROUND(d, p);
++ }
+ tmp = dtoa(d, p->precision, &tmp2);
+
+ /* 1 for unit, 1 for the '.', 1 for 'e|E',
+@@ -1076,6 +1092,7 @@
+ PUT_CHAR(*tmp, p);
+ tmp++;
+ }
++
+ PAD_LEFT(p);
+ }
+ #endif
+@@ -1358,7 +1375,7 @@
+ STAR_ARGS(data);
+ DEF_PREC(data);
+ d = GETDOUBLE(data);
+- i = log_10(d);
++ i = (d != 0.) ? log_10(d) : -1;
+ /*
+ * for '%g|%G' ANSI: use f if exponent
+ * is in the range or [-4,p] exclusively
diff --git a/packages/bash/bash_3.2.bb b/packages/bash/bash_3.2.bb
new file mode 100644
index 0000000000..e3d6b0560c
--- /dev/null
+++ b/packages/bash/bash_3.2.bb
@@ -0,0 +1,28 @@
+DESCRIPTION = "An sh-compatible command language interpreter."
+HOMEPAGE = "http://cnswww.cns.cwru.edu/~chet/bash/bashtop.html"
+DEPENDS = "ncurses"
+SECTION = "base/shell"
+LICENSE = "GPL"
+
+SRC_URI = "${GNU_MIRROR}/bash/bash-${PV}.tar.gz \
+ file://001-005.patch;patch=1"
+
+inherit autotools gettext
+
+PARALLEL_MAKE = ""
+
+bindir = "/bin"
+sbindir = "/sbin"
+
+EXTRA_OECONF = "--with-ncurses"
+export CC_FOR_BUILD = "${BUILD_CC}"
+
+do_configure () {
+ gnu-configize
+ oe_runconf
+}
+
+pkg_postinst () {
+ grep -q "bin/bash" ${sysconfdir}/shells || echo /bin/bash >> ${sysconfdir}/shells
+ grep -q "bin/sh" ${sysconfdir}/shells || echo /bin/sh >> ${sysconfdir}/shells
+}
diff --git a/packages/initscripts/initscripts-1.0/checkroot.sh b/packages/initscripts/initscripts-1.0/checkroot.sh
index df3035371b..44db23707e 100755
--- a/packages/initscripts/initscripts-1.0/checkroot.sh
+++ b/packages/initscripts/initscripts-1.0/checkroot.sh
@@ -148,7 +148,10 @@ else
# 2 or larger. A return code of 1 indicates that filesystem
# errors were corrected but that the boot may proceed.
#
- if test "$?" -gt 1
+
+ echo "RETURNCODE: [$RTC]"
+
+ if test "$RTC" -gt 3
then
# Since this script is run very early in the boot-process, it should be safe to assume that the
@@ -159,13 +162,14 @@ else
# Surprise! Re-directing from a HERE document (as in
# "cat << EOF") won't work, because the root is read-only.
echo
- echo "fsck failed. Please repair manually and reboot. Please note"
- echo "that the root filesystem is currently mounted read-only. To"
- echo "remount it read-write:"
+ echo "fsck failed. Please repair manually and reboot. "
+ echo "Please note that the root filesystem is currently "
+ echo "mounted read-only. To remount it read-write:"
echo
echo " # mount -n -o remount,rw /"
echo
- echo "CONTROL-D will exit from this shell and REBOOT the system."
+ echo "CONTROL-D will exit from this shell"
+ echo "and REBOOT the system."
echo
# Start a single user shell on the console
/sbin/sulogin $CONSOLE
diff --git a/packages/initscripts/initscripts_1.0.bb b/packages/initscripts/initscripts_1.0.bb
index 306629732a..39662eb31a 100644
--- a/packages/initscripts/initscripts_1.0.bb
+++ b/packages/initscripts/initscripts_1.0.bb
@@ -5,7 +5,7 @@ DEPENDS = "makedevs"
DEPENDS_openzaurus = "makedevs virtual/kernel"
RDEPENDS = "makedevs"
LICENSE = "GPL"
-PR = "r82"
+PR = "r83"
SRC_URI = "file://halt \
file://ramdisk \
diff --git a/packages/libexif/libexif_0.6.13.bb b/packages/libexif/libexif_0.6.13.bb
new file mode 100644
index 0000000000..9f3136798f
--- /dev/null
+++ b/packages/libexif/libexif_0.6.13.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Library to read the extended image information (EXIF) from JPEG pictures"
+HOMEPAGE = "http://sourceforge.net/projects/libexif"
+SECTION = "libs"
+LICENSE = "LGPL"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libexif/libexif-${PV}.tar.bz2"
+
+inherit autotools pkgconfig
+
+do_stage() {
+ oe_libinstall -a -so -C libexif libexif ${STAGING_LIBDIR}
+
+ install -d ${STAGING_INCDIR}/libexif
+ for X in exif-byte-order.h exif-data.h exif-format.h exif-loader.h exif-tag.h exif-content.h exif-entry.h exif-ifd.h exif-utils.h exif-log.h exif-mnote-data.h _stdint.h
+ do
+ install -m 0644 ${S}/libexif/$X ${STAGING_INCDIR}/libexif/$X
+ done
+}
diff --git a/packages/linux/linux-openzaurus-2.6.17/asoc-v0.12.4_2.6.17.patch b/packages/linux/linux-openzaurus-2.6.17/asoc-v0.12.4_2.6.17.patch
new file mode 100644
index 0000000000..7fa3822bba
--- /dev/null
+++ b/packages/linux/linux-openzaurus-2.6.17/asoc-v0.12.4_2.6.17.patch
@@ -0,0 +1,31713 @@
+Index: linux-2.6-pxa-new/Documentation/sound/alsa/soc/DAI.txt
+===================================================================
+--- /dev/null
++++ linux-2.6-pxa-new/Documentation/sound/alsa/soc/DAI.txt
+@@ -0,0 +1,546 @@
++ASoC currently supports the three main Digital Audio Interfaces (DAI) found on
++SoC controllers and portable audio CODECS today, namely AC97, I2S and PCM.
++
++
++AC97
++====
++
++ AC97 is a five wire interface commonly found on many PC sound cards. It is
++now also popular in many portable devices. This DAI has a reset line and time
++multiplexes its data on its SDATA_OUT (playback) and SDATA_IN (capture) lines.
++The bit clock (BCLK) is always driven by the CODEC (usually 12.288MHz) and the
++frame (FRAME) (usually 48kHz) is always driven by the controller. Each AC97
++frame is 21uS long and is divided into 13 time slots.
++
++The AC97 specification can be found at :-
++http://www.intel.com/design/chipsets/audio/ac97_r23.pdf
++
++
++I2S
++===
++
++ I2S is a common 4 wire DAI used in HiFi, STB and portable devices. The Tx and
++Rx lines are used for audio transmision, whilst the bit clock (BCLK) and
++left/right clock (LRC) synchronise the link. I2S is flexible in that either the
++controller or CODEC can drive (master) the BCLK and LRC clock lines. Bit clock
++usually varies depending on the sample rate and the master system clock
++(SYSCLK). LRCLK is the same as the sample rate. A few devices support separate
++ADC and DAC LRCLK's, this allows for similtanious capture and playback at
++different sample rates.
++
++I2S has several different operating modes:-
++
++ o I2S - MSB is transmitted on the falling edge of the first BCLK after LRC
++ transition.
++
++ o Left Justified - MSB is transmitted on transition of LRC.
++
++ o Right Justified - MSB is transmitted sample size BCLK's before LRC
++ transition.
++
++PCM
++===
++
++PCM is another 4 wire interface, very similar to I2S, that can support a more
++flexible protocol. It has bit clock (BCLK) and sync (SYNC) lines that are used
++to synchronise the link whilst the Tx and Rx lines are used to transmit and
++receive the audio data. Bit clock usually varies depending on sample rate
++whilst sync runs at the sample rate. PCM also supports Time Division
++Multiplexing (TDM) in that several devices can use the bus similtaniuosly (This
++is sometimes referred to as network mode).
++
++Common PCM operating modes:-
++
++ o Mode A - MSB is transmitted on falling edge of first BCLK after FRAME/SYNC.
++
++ o Mode B - MSB is transmitted on rising edge of FRAME/SYNC.
++
++
++ASoC DAI Configuration
++======================
++
++Every CODEC DAI and SoC DAI must have their capabilities defined in order to
++be configured together at runtime when the audio and clocking parameters are
++known. This is achieved by creating an array of struct snd_soc_hw_mode in the
++the CODEC and SoC interface drivers. Each element in the array describes a DAI
++mode and each mode is usually based upon the DAI system clock to sample rate
++ratio (FS).
++
++i.e. 48k sample rate @ 256 FS = sytem clock of 12.288 MHz
++ 48000 * 256 = 12288000
++
++The CPU and Codec DAI modes are then ANDed together at runtime to determine the
++rutime DAI configuration for both the Codec and CPU.
++
++When creating a new codec or SoC DAI it's probably best to start of with a few
++sample rates first and then test your interface.
++
++struct snd_soc_dai_mode is defined (in soc.h) as:-
++
++/* SoC DAI mode */
++struct snd_soc_dai_mode {
++ u16 fmt; /* SND_SOC_DAIFMT_* */
++ u16 tdm; /* SND_SOC_HWTDM_* */
++ u64 pcmfmt; /* SNDRV_PCM_FMTBIT_* */
++ u16 pcmrate; /* SND_SOC_HWRATE_* */
++ u16 pcmdir:2; /* SND_SOC_HWDIR_* */
++ u16 flags:8; /* hw flags */
++ u16 fs; /* mclk to rate divider */
++ u64 bfs; /* mclk to bclk dividers */
++ unsigned long priv; /* private mode data */
++};
++
++fmt:
++----
++This field defines the DAI mode hardware format (e.g. I2S settings) and
++supports the following settings:-
++
++ 1) hardware DAI formats
++
++#define SND_SOC_DAIFMT_I2S (1 << 0) /* I2S mode */
++#define SND_SOC_DAIFMT_RIGHT_J (1 << 1) /* Right justified mode */
++#define SND_SOC_DAIFMT_LEFT_J (1 << 2) /* Left Justified mode */
++#define SND_SOC_DAIFMT_DSP_A (1 << 3) /* L data msb after FRM */
++#define SND_SOC_DAIFMT_DSP_B (1 << 4) /* L data msb during FRM */
++#define SND_SOC_DAIFMT_AC97 (1 << 5) /* AC97 */
++
++ 2) hw DAI signal inversions
++
++#define SND_SOC_DAIFMT_NB_NF (1 << 8) /* normal bit clock + frame */
++#define SND_SOC_DAIFMT_NB_IF (1 << 9) /* normal bclk + inv frm */
++#define SND_SOC_DAIFMT_IB_NF (1 << 10) /* invert bclk + nor frm */
++#define SND_SOC_DAIFMT_IB_IF (1 << 11) /* invert bclk + frm */
++
++ 3) hw clock masters
++ This is wrt the codec, the inverse is true for the interface
++ i.e. if the codec is clk and frm master then the interface is
++ clk and frame slave.
++
++#define SND_SOC_DAIFMT_CBM_CFM (1 << 12) /* codec clk & frm master */
++#define SND_SOC_DAIFMT_CBS_CFM (1 << 13) /* codec clk slave & frm master */
++#define SND_SOC_DAIFMT_CBM_CFS (1 << 14) /* codec clk master & frame slave */
++#define SND_SOC_DAIFMT_CBS_CFS (1 << 15) /* codec clk & frm slave */
++
++At least one option from each section must be selected. Multiple selections are
++also supported e.g.
++
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_RIGHT_J | \
++ SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_IB_NF | \
++ SND_SOC_DAIFMT_IB_IF
++
++
++tdm:
++------
++This field defines the Time Division Multiplexing left and right word
++positions for the DAI mode if applicable. Set to SND_SOC_DAITDM_LRDW(0,0) for
++no TDM.
++
++
++pcmfmt:
++---------
++The hardware PCM format. This describes the PCM formats supported by the DAI
++mode e.g.
++
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
++ SNDRV_PCM_FORMAT_S24_3LE
++
++pcmrate:
++----------
++The PCM sample rates supported by the DAI mode. e.g.
++
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \
++ SNDRV_PCM_RATE_22050 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | \
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000
++
++
++pcmdir:
++---------
++The stream directions supported by this mode. e.g. playback and capture
++
++
++flags:
++--------
++The DAI hardware flags supported by the mode.
++
++/* use bfs mclk divider mode (BCLK = MCLK / x) */
++#define SND_SOC_DAI_BFS_DIV 0x1
++/* use bfs rate mulitplier (BCLK = RATE * x)*/
++#define SND_SOC_DAI_BFS_RATE 0x2
++/* use bfs rcw multiplier (BCLK = RATE * CHN * WORD SIZE) */
++#define SND_SOC_DAI_BFS_RCW 0x4
++/* capture and playback can use different clocks */
++#define SND_SOC_DAI_ASYNC 0x8
++
++NOTE: Bitclock division and mulitiplication modes can be safely matched by the
++core logic.
++
++
++fs:
++-----
++The FS supported by this DAI mode FS is the ratio between the system clock and
++the sample rate. See above
++
++bfs:
++------
++BFS is the ratio of BCLK to MCLK or the ratio of BCLK to sample rate (this
++depends on the codec or CPU DAI).
++
++The BFS supported by the DAI mode. This can either be the ratio between the
++bitclock (BCLK) and the sample rate OR the ratio between the system clock and
++the sample rate. Depends on the flags above.
++
++priv:
++-----
++private codec mode data.
++
++
++
++Examples
++========
++
++Note that Codec DAI and CPU DAI examples are interchangeable in these examples
++as long as the bus master is reversed. i.e.
++
++ SND_SOC_DAIFMT_CBM_CFM would become SND_SOC_DAIFMT_CBS_CFS
++ and vice versa.
++
++This applies to all SND_SOC_DAIFMT_CB*_CF*.
++
++Example 1
++---------
++
++Simple codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
++BCLK of either MCLK/2 or MCLK/4.
++
++ /* codec master */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = SND_SOC_FSBD(2) | SND_SOC_FSBD(4),
++ }
++
++
++Example 2
++---------
++Simple codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
++BCLK of either Rate * 32 or Rate * 64.
++
++ /* codec master */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 32,
++ },
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++
++
++Example 3
++---------
++Codec that runs at 8k & 48k @ 256FS in master mode, can generate a BCLK that
++is a multiple of Rate * channels * word size. (RCW) i.e.
++
++ BCLK = 8000 * 2 * 16 (8k, stereo, 16bit)
++ = 256kHz
++
++This codecs supports a RCW multiple of 1,2
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RCW,
++ .fs = 256,
++ .bfs = SND_SOC_FSBW(1) | SND_SOC_FSBW(2),
++ }
++
++
++Example 4
++---------
++Codec that only runs at 8k & 48k @ 256FS in master mode, can generate a
++BCLK of either Rate * 32 or Rate * 64. Codec can also run in slave mode as long
++as BCLK is rate * 32 or rate * 64.
++
++ /* codec master */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 32,
++ },
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = 256,
++ .bfs = 64,
++ },
++
++ /* codec slave */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmdir = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = 32,
++ },
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmdir = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_RATE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = 64,
++ },
++
++
++Example 5
++---------
++Codec that only runs at 8k, 16k, 32k, 48k, 96k @ 128FS, 192FS & 256FS in master
++mode and can generate a BCLK of MCLK / (1,2,4,8,16). Codec can also run in slave
++mode as and does not care about FS or BCLK (as long as there is enough bandwidth).
++
++ #define CODEC_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++ #define CODEC_RATES \
++ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 |\
++ SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_96000)
++
++ /* codec master @ 128, 192 & 256 FS */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 128,
++ .bfs = CODEC_FSB,
++ },
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 192,
++ .bfs = CODEC_FSB
++ },
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = CODEC_FSB,
++ },
++
++ /* codec slave */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++
++
++Example 6
++---------
++Codec that only runs at 8k, 44.1k, 48k @ different FS in master mode (for use
++with a fixed MCLK) and can generate a BCLK of MCLK / (1,2,4,8,16).
++Codec can also run in slave mode as and does not care about FS or BCLK (as long
++as there is enough bandwidth). Codec can support 16, 24 and 32 bit PCM sample
++sizes.
++
++ #define CODEC_FSB \
++ (SND_SOC_FSBD(1) | SND_SOC_FSBD(2) | SND_SOC_FSBD(4) | \
++ SND_SOC_FSBD(8) | SND_SOC_FSBD(16))
++
++ #define CODEC_PCM_FORMATS \
++ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S20_3LE | \
++ SNDRV_PCM_FORMAT_S24_3LE | SNDRV_PCM_FORMAT_S24_LE | SNDRV_PCM_FORMAT_S32_LE)
++
++ /* codec master */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_8000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 1536,
++ .bfs = CODEC_FSB,
++ },
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_44100,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 272,
++ .bfs = CODEC_FSB,
++ },
++
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .flags = SND_SOC_DAI_BFS_DIV,
++ .fs = 256,
++ .bfs = CODEC_FSB,
++ },
++
++ /* codec slave */
++ {
++ .fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBS_CFS,
++ .pcmfmt = SNDRV_PCM_FORMAT_S16_LE,
++ .pcmrate = CODEC_RATES,
++ .pcmdir = SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE,
++ .fs = SND_SOC_FS_ALL,
++ .bfs = SND_SOC_FSB_ALL,
++ },
++
++
++Example 7
++---------
++AC97 Codec that does not support VRA (i.e only runs at 48k).
++
++ #define AC97_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++ #define AC97_PCM_FORMATS \
++ (SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_S18_3LE | \
++ SNDRV_PCM_FORMAT_S20_3LE)
++
++ /* AC97 with no VRA */
++ {
++ .pcmfmt = AC97_PCM_FORMATS,
++ .pcmrate = SNDRV_PCM_RATE_48000,
++ }
++
++
++Example 8
++---------
++
++CPU DAI that supports 8k - 48k @ 256FS and BCLK = MCLK / 4 in master mode.
++Slave mode (CPU DAI is FRAME master) supports 8k - 96k at any FS as long as
++BCLK = 64 * rate. (Intel XScale I2S controller).
++
++ #define PXA_I2S_DAIFMT \
++ (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF)
++
++ #define PXA_I2S_DIR \
++ (SND_SOC_DAIDIR_PLAYBACK | SND_SOC_DAIDIR_CAPTURE)
++
++ #define PXA_I2S_RATES \
++ (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 | SNDRV_PCM_RATE_16000 | \<