* Adding a new architecture to alsa-driver
@ 2006-04-08 15:35 Adrian McMenamin
2006-04-08 16:03 ` Lee Revell
2006-04-08 16:04 ` Lee Revell
0 siblings, 2 replies; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-08 15:35 UTC (permalink / raw)
To: alsa-devel
I've now wasted two days of my life trying to do this and I have had no
luck, can someone explain the steps needed to added SH (ie
CONFIG_SUPERH) to the alsa-driver build. I am sure somebody knows the
steps needed to make this happen
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-08 15:35 Adding a new architecture to alsa-driver Adrian McMenamin
@ 2006-04-08 16:03 ` Lee Revell
2006-04-09 0:23 ` Adrian McMenamin
2006-04-08 16:04 ` Lee Revell
1 sibling, 1 reply; 21+ messages in thread
From: Lee Revell @ 2006-04-08 16:03 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: alsa-devel
On Sat, 2006-04-08 at 16:35 +0100, Adrian McMenamin wrote:
> I've now wasted two days of my life trying to do this and I have had no
> luck, can someone explain the steps needed to added SH (ie
> CONFIG_SUPERH) to the alsa-driver build. I am sure somebody knows the
> steps needed to make this happen
I already explained it. What *exactly* does not work if you change the
Makefiles as I explained?
Lee
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-08 15:35 Adding a new architecture to alsa-driver Adrian McMenamin
2006-04-08 16:03 ` Lee Revell
@ 2006-04-08 16:04 ` Lee Revell
1 sibling, 0 replies; 21+ messages in thread
From: Lee Revell @ 2006-04-08 16:04 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: alsa-devel
On Sat, 2006-04-08 at 16:35 +0100, Adrian McMenamin wrote:
> I've now wasted two days of my life trying to do this and I have had no
> luck, can someone explain the steps needed to added SH (ie
> CONFIG_SUPERH) to the alsa-driver build. I am sure somebody knows the
> steps needed to make this happen
You need to post your driver as a patch against ALSA CVS.
Lee
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-08 16:03 ` Lee Revell
@ 2006-04-09 0:23 ` Adrian McMenamin
2006-04-09 0:56 ` Lee Revell
` (2 more replies)
0 siblings, 3 replies; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-09 0:23 UTC (permalink / raw)
To: Lee Revell; +Cc: alsa-devel
On Sat, 2006-04-08 at 12:03 -0400, Lee Revell wrote:
> On Sat, 2006-04-08 at 16:35 +0100, Adrian McMenamin wrote:
> > I've now wasted two days of my life trying to do this and I have had no
> > luck, can someone explain the steps needed to added SH (ie
> > CONFIG_SUPERH) to the alsa-driver build. I am sure somebody knows the
> > steps needed to make this happen
>
> I already explained it. What *exactly* does not work if you change the
> Makefiles as I explained?
The changes you suggest simply are inadequate. There is no makefile
without configure and even though I have managed to patch the configure
file so it will create a Makefile, a make simply builds the alsa core
and doesn't touch the sh sub directory despite having this in the
makefile:
ifeq (y,$(CONFIG_SUPERH))
SUBDIRS += sh
endif
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 0:23 ` Adrian McMenamin
@ 2006-04-09 0:56 ` Lee Revell
2006-04-09 1:04 ` Lee Revell
2006-04-09 1:16 ` Lee Revell
2 siblings, 0 replies; 21+ messages in thread
From: Lee Revell @ 2006-04-09 0:56 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: alsa-devel
On Sun, 2006-04-09 at 01:23 +0100, Adrian McMenamin wrote:
> The changes you suggest simply are inadequate.
I am not surprised. It should be a start though. Did you create the
sh/Kconfig file?
> There is no makefile
> without configure
Yes, there is. Try a fresh CVS checkout of alsa-driver then "find -name
Makefile" - you'll see ./ppc/Makefile, ./sparc/Makefile, etc.
I would have to see your driver in the form of a patch against ALSA CVS
to comment further.
Lee
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 0:23 ` Adrian McMenamin
2006-04-09 0:56 ` Lee Revell
@ 2006-04-09 1:04 ` Lee Revell
2006-04-09 10:50 ` Adrian McMenamin
2006-04-09 1:16 ` Lee Revell
2 siblings, 1 reply; 21+ messages in thread
From: Lee Revell @ 2006-04-09 1:04 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: alsa-devel
On Sun, 2006-04-09 at 01:23 +0100, Adrian McMenamin wrote:
> The changes you suggest simply are inadequate. There is no makefile
> without configure and even though I have managed to patch the
> configure
> file so it will create a Makefile, a make simply builds the alsa core
> and doesn't touch the sh sub directory despite having this in the
> makefile:
>
Did you patch alsa-driver/configure.in?
$ grep CONFIG_PARISC configure.in
#elif defined(CONFIG_PARISC)
AC_SUBST(CONFIG_PARISC)
I don't know autoconf well enough to know exactly what this is doing but
it seems like you could just copy/paste and s/PARISC/SUPERH/...
Lee
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 0:23 ` Adrian McMenamin
2006-04-09 0:56 ` Lee Revell
2006-04-09 1:04 ` Lee Revell
@ 2006-04-09 1:16 ` Lee Revell
2006-04-09 10:52 ` Adrian McMenamin
2006-04-10 22:06 ` Adrian McMenamin
2 siblings, 2 replies; 21+ messages in thread
From: Lee Revell @ 2006-04-09 1:16 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: alsa-devel
On Sun, 2006-04-09 at 01:23 +0100, Adrian McMenamin wrote:
> On Sat, 2006-04-08 at 12:03 -0400, Lee Revell wrote:
> > On Sat, 2006-04-08 at 16:35 +0100, Adrian McMenamin wrote:
> > > I've now wasted two days of my life trying to do this and I have had no
> > > luck, can someone explain the steps needed to added SH (ie
> > > CONFIG_SUPERH) to the alsa-driver build. I am sure somebody knows the
> > > steps needed to make this happen
> >
> > I already explained it. What *exactly* does not work if you change the
> > Makefiles as I explained?
>
> The changes you suggest simply are inadequate. There is no makefile
> without configure and even though I have managed to patch the configure
> file so it will create a Makefile, a make simply builds the alsa core
> and doesn't touch the sh sub directory despite having this in the
> makefile:
>
> ifeq (y,$(CONFIG_SUPERH))
> SUBDIRS += sh
> endif
>
>
>
OK, how does this work - try this patch against a clean alsa-driver CVS
checkout, then add your driver. Replace c_opts with whatever CFLAGS you
need.
Index: Makefile
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/Makefile,v
retrieving revision 1.121
diff -u -r1.121 Makefile
--- Makefile 17 Nov 2005 11:15:20 -0000 1.121
+++ Makefile 9 Apr 2006 01:15:23 -0000
@@ -6,7 +6,7 @@
ifneq ($(KERNELRELEASE),)
# call from 2.6 kernel build system
-obj-m += acore/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/
+obj-m += acore/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ sh/
else
@@ -99,6 +99,9 @@
ifeq (y,$(CONFIG_PARISC))
SUBDIRS += parisc
endif
+ifeq (y,$(CONFIG_SUPERH))
+SUBDIRS += sh
+endif
CSUBDIRS += include test utils
KCONFIG_FILES = $(shell find $(SND_TOPDIR) -name Kconfig) $(shell find $(SND_TOPDIR)/alsa-kernel/ -name Kconfig)
Index: configure.in
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/configure.in,v
retrieving revision 1.358
diff -u -r1.358 configure.in
--- configure.in 29 Mar 2006 16:52:47 -0000 1.358
+++ configure.in 9 Apr 2006 01:15:24 -0000
@@ -872,6 +872,8 @@
fprintf(file, "amba");
#elif defined(CONFIG_PARISC)
fprintf(file, "parisc");
+#elif defined(CONFIG_SUPERH)
+ fprintf(file, "sh");
#elif defined(CONFIG_MVIAC3_2)
fprintf(file, "viac3_2");
#else
@@ -1117,6 +1119,11 @@
c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200 -mdisable-fpregs"
test "$CONFIG_ISA" = "probe" && CONFIG_ISA=
;;
+ sh)
+ ARCH=sh
+ c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200 -mdisable-fpregs"
+ test "$CONFIG_ISA" = "probe" && CONFIG_ISA=
+ ;;
viac3_2)
ARCH=i386
if $KCC -march=c3-2 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then
@@ -1259,6 +1266,7 @@
AC_SUBST(CONFIG_ISA)
AC_SUBST(CONFIG_ISA_DMA_API)
AC_SUBST(CONFIG_PARISC)
+AC_SUBST(CONFIG_SUPERH)
test "$CONFIG_ISA" = "y" && AC_DEFINE(CONFIG_SND_ISA)
dnl Check for SMP...
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 1:04 ` Lee Revell
@ 2006-04-09 10:50 ` Adrian McMenamin
2006-04-09 11:24 ` Jaroslav Kysela
0 siblings, 1 reply; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-09 10:50 UTC (permalink / raw)
To: Lee Revell; +Cc: alsa-devel
On Sat, 2006-04-08 at 21:04 -0400, Lee Revell wrote:
> On Sun, 2006-04-09 at 01:23 +0100, Adrian McMenamin wrote:
> > The changes you suggest simply are inadequate. There is no makefile
> > without configure and even though I have managed to patch the
> > configure
> > file so it will create a Makefile, a make simply builds the alsa core
> > and doesn't touch the sh sub directory despite having this in the
> > makefile:
> >
>
> Did you patch alsa-driver/configure.in?
>
> $ grep CONFIG_PARISC configure.in
> #elif defined(CONFIG_PARISC)
> AC_SUBST(CONFIG_PARISC)
>
> I don't know autoconf well enough to know exactly what this is doing but
> it seems like you could just copy/paste and s/PARISC/SUPERH/...
>
I had to patch it in about 6 or 7 places and that was one of them
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 1:16 ` Lee Revell
@ 2006-04-09 10:52 ` Adrian McMenamin
2006-04-10 22:06 ` Adrian McMenamin
1 sibling, 0 replies; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-09 10:52 UTC (permalink / raw)
To: Lee Revell; +Cc: alsa-devel
On Sat, 2006-04-08 at 21:16 -0400, Lee Revell wrote:
> On Sun, 2006-04-09 at 01:23 +0100, Adrian McMenamin wrote:
> > On Sat, 2006-04-08 at 12:03 -0400, Lee Revell wrote:
> > > On Sat, 2006-04-08 at 16:35 +0100, Adrian McMenamin wrote:
> > > > I've now wasted two days of my life trying to do this and I have had no
> > > > luck, can someone explain the steps needed to added SH (ie
> > > > CONFIG_SUPERH) to the alsa-driver build. I am sure somebody knows the
> > > > steps needed to make this happen
> > >
> > > I already explained it. What *exactly* does not work if you change the
> > > Makefiles as I explained?
> >
> > The changes you suggest simply are inadequate. There is no makefile
> > without configure and even though I have managed to patch the configure
> > file so it will create a Makefile, a make simply builds the alsa core
> > and doesn't touch the sh sub directory despite having this in the
> > makefile:
> >
> > ifeq (y,$(CONFIG_SUPERH))
> > SUBDIRS += sh
> > endif
> >
> >
> >
>
> OK, how does this work - try this patch against a clean alsa-driver CVS
> checkout, then add your driver. Replace c_opts with whatever CFLAGS you
> need.
>
> Index: Makefile
> ===================================================================
> RCS file: /cvsroot/alsa/alsa-driver/Makefile,v
> retrieving revision 1.121
> diff -u -r1.121 Makefile
> --- Makefile 17 Nov 2005 11:15:20 -0000 1.121
> +++ Makefile 9 Apr 2006 01:15:23 -0000
> @@ -6,7 +6,7 @@
> ifneq ($(KERNELRELEASE),)
> # call from 2.6 kernel build system
>
> -obj-m += acore/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/
> +obj-m += acore/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ sh/
>
> else
>
> @@ -99,6 +99,9 @@
> ifeq (y,$(CONFIG_PARISC))
> SUBDIRS += parisc
> endif
> +ifeq (y,$(CONFIG_SUPERH))
> +SUBDIRS += sh
> +endif
> CSUBDIRS += include test utils
>
> KCONFIG_FILES = $(shell find $(SND_TOPDIR) -name Kconfig) $(shell find $(SND_TOPDIR)/alsa-kernel/ -name Kconfig)
> Index: configure.in
> ===================================================================
> RCS file: /cvsroot/alsa/alsa-driver/configure.in,v
> retrieving revision 1.358
> diff -u -r1.358 configure.in
> --- configure.in 29 Mar 2006 16:52:47 -0000 1.358
> +++ configure.in 9 Apr 2006 01:15:24 -0000
> @@ -872,6 +872,8 @@
> fprintf(file, "amba");
> #elif defined(CONFIG_PARISC)
> fprintf(file, "parisc");
> +#elif defined(CONFIG_SUPERH)
> + fprintf(file, "sh");
> #elif defined(CONFIG_MVIAC3_2)
> fprintf(file, "viac3_2");
> #else
> @@ -1117,6 +1119,11 @@
> c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200 -mdisable-fpregs"
> test "$CONFIG_ISA" = "probe" && CONFIG_ISA=
> ;;
> + sh)
> + ARCH=sh
> + c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200 -mdisable-fpregs"
> + test "$CONFIG_ISA" = "probe" && CONFIG_ISA=
> + ;;
> viac3_2)
> ARCH=i386
> if $KCC -march=c3-2 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then
> @@ -1259,6 +1266,7 @@
> AC_SUBST(CONFIG_ISA)
> AC_SUBST(CONFIG_ISA_DMA_API)
> AC_SUBST(CONFIG_PARISC)
> +AC_SUBST(CONFIG_SUPERH)
> test "$CONFIG_ISA" = "y" && AC_DEFINE(CONFIG_SND_ISA)
>
> dnl Check for SMP...
>
I've done all of this except for the c_opts which obviously wouldn't
impact on the non-building of the sh directory. I'll have another look
shortly
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 10:50 ` Adrian McMenamin
@ 2006-04-09 11:24 ` Jaroslav Kysela
2006-04-09 12:26 ` Adrian McMenamin
0 siblings, 1 reply; 21+ messages in thread
From: Jaroslav Kysela @ 2006-04-09 11:24 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: Lee Revell, alsa-devel
On Sun, 9 Apr 2006, Adrian McMenamin wrote:
> On Sat, 2006-04-08 at 21:04 -0400, Lee Revell wrote:
> > On Sun, 2006-04-09 at 01:23 +0100, Adrian McMenamin wrote:
> > > The changes you suggest simply are inadequate. There is no makefile
> > > without configure and even though I have managed to patch the
> > > configure
> > > file so it will create a Makefile, a make simply builds the alsa core
> > > and doesn't touch the sh sub directory despite having this in the
> > > makefile:
> > >
> >
> > Did you patch alsa-driver/configure.in?
> >
> > $ grep CONFIG_PARISC configure.in
> > #elif defined(CONFIG_PARISC)
> > AC_SUBST(CONFIG_PARISC)
> >
> > I don't know autoconf well enough to know exactly what this is doing but
> > it seems like you could just copy/paste and s/PARISC/SUPERH/...
> >
>
> I had to patch it in about 6 or 7 places and that was one of them
Do you have a valid Kconfig file with your driver? The dependencies are
parsed from Kconfig files.
Jaroslav
-----
Jaroslav Kysela <perex@suse.cz>
Linux Kernel Sound Maintainer
ALSA Project, SUSE Labs
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 11:24 ` Jaroslav Kysela
@ 2006-04-09 12:26 ` Adrian McMenamin
2006-04-10 10:19 ` Takashi Iwai
0 siblings, 1 reply; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-09 12:26 UTC (permalink / raw)
To: Jaroslav Kysela; +Cc: Lee Revell, alsa-devel
On Sun, 2006-04-09 at 13:24 +0200, Jaroslav Kysela wrote:
> On Sun, 9 Apr 2006, Adrian McMenamin wrote:
>
> > On Sat, 2006-04-08 at 21:04 -0400, Lee Revell wrote:
> > > On Sun, 2006-04-09 at 01:23 +0100, Adrian McMenamin wrote:
> > > > The changes you suggest simply are inadequate. There is no makefile
> > > > without configure and even though I have managed to patch the
> > > > configure
> > > > file so it will create a Makefile, a make simply builds the alsa core
> > > > and doesn't touch the sh sub directory despite having this in the
> > > > makefile:
> > > >
> > >
> > > Did you patch alsa-driver/configure.in?
> > >
> > > $ grep CONFIG_PARISC configure.in
> > > #elif defined(CONFIG_PARISC)
> > > AC_SUBST(CONFIG_PARISC)
> > >
> > > I don't know autoconf well enough to know exactly what this is doing but
> > > it seems like you could just copy/paste and s/PARISC/SUPERH/...
> > >
> >
> > I had to patch it in about 6 or 7 places and that was one of them
>
> Do you have a valid Kconfig file with your driver? The dependencies are
> parsed from Kconfig files.
>
Yes, though I have put it in alsa-kernel for the build as Lee suggested
(the writing a driver document doesn't say that though)
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 12:26 ` Adrian McMenamin
@ 2006-04-10 10:19 ` Takashi Iwai
0 siblings, 0 replies; 21+ messages in thread
From: Takashi Iwai @ 2006-04-10 10:19 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: Jaroslav Kysela, Lee Revell, alsa-devel
At Sun, 09 Apr 2006 13:26:06 +0100,
Adrian McMenamin wrote:
>
> On Sun, 2006-04-09 at 13:24 +0200, Jaroslav Kysela wrote:
> > On Sun, 9 Apr 2006, Adrian McMenamin wrote:
> >
> > > On Sat, 2006-04-08 at 21:04 -0400, Lee Revell wrote:
> > > > On Sun, 2006-04-09 at 01:23 +0100, Adrian McMenamin wrote:
> > > > > The changes you suggest simply are inadequate. There is no makefile
> > > > > without configure and even though I have managed to patch the
> > > > > configure
> > > > > file so it will create a Makefile, a make simply builds the alsa core
> > > > > and doesn't touch the sh sub directory despite having this in the
> > > > > makefile:
> > > > >
> > > >
> > > > Did you patch alsa-driver/configure.in?
> > > >
> > > > $ grep CONFIG_PARISC configure.in
> > > > #elif defined(CONFIG_PARISC)
> > > > AC_SUBST(CONFIG_PARISC)
> > > >
> > > > I don't know autoconf well enough to know exactly what this is doing but
> > > > it seems like you could just copy/paste and s/PARISC/SUPERH/...
> > > >
> > >
> > > I had to patch it in about 6 or 7 places and that was one of them
> >
> > Do you have a valid Kconfig file with your driver? The dependencies are
> > parsed from Kconfig files.
> >
> Yes, though I have put it in alsa-kernel for the build as Lee suggested
> (the writing a driver document doesn't say that though)
My document is not a bible that tells everything. Don't believe in it
blindly.
For adding a new architecture, currently, you'd need to patch
alsa-kernel/Kconfig. Or, an ugly hack, e.g. by including
"../sh/Kconfig" from alsa-driver/acore/Kconfig. I'll fix this issue
later.
But honestly, it's a quite time-cusuming thing that you ask us
questions without showing your code. I strongly advise you to post a
patch. You can create an all-in-one patch by
% diff -ruN old-tree new-tree
This will include changes for unnecessary files (like configure,
config.*, */Makefile...), and you'll need to cut them manually via a
text editor. A more clever way is, if you compare two CVS trees,
% diff -ruN --exclude=CVS --exclude='.#*' \
--exclude-from=.cvsignore \
old-tree new-tree
or, using "cvs diff" on the new CVS tree,
% cvs diff -u -N
In the latter case, you need to add the new files via "cvs add".
Otherwise "cvs diff" won't make a diff.
Takashi
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-09 1:16 ` Lee Revell
2006-04-09 10:52 ` Adrian McMenamin
@ 2006-04-10 22:06 ` Adrian McMenamin
2006-04-10 22:40 ` Lee Revell
2006-04-11 1:13 ` Lee Revell
1 sibling, 2 replies; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-10 22:06 UTC (permalink / raw)
To: Lee Revell; +Cc: alsa-devel
On Sat, 2006-04-08 at 21:16 -0400, Lee Revell wrote:
> c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200
> -mdisable-fpregs"
I have tried this patch and it doesn't work. Essentially the aica card
isn't picked up. I think this has something to do with aclocal.m4 or
something similar.
To be honest I've hit a brick wall and any help at all would be welcome.
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-10 22:06 ` Adrian McMenamin
@ 2006-04-10 22:40 ` Lee Revell
2006-04-11 1:13 ` Lee Revell
1 sibling, 0 replies; 21+ messages in thread
From: Lee Revell @ 2006-04-10 22:40 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: alsa-devel
On Mon, 2006-04-10 at 23:06 +0100, Adrian McMenamin wrote:
> On Sat, 2006-04-08 at 21:16 -0400, Lee Revell wrote:
> > c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200
> > -mdisable-fpregs"
>
>
> I have tried this patch and it doesn't work. Essentially the aica card
> isn't picked up. I think this has something to do with aclocal.m4 or
> something similar.
>
> To be honest I've hit a brick wall and any help at all would be welcome.
>
I need to see your driver in the form of a patch against ALSA CVS
sources to help any more.
Lee
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-10 22:06 ` Adrian McMenamin
2006-04-10 22:40 ` Lee Revell
@ 2006-04-11 1:13 ` Lee Revell
2006-04-11 10:01 ` Takashi Iwai
2006-04-11 21:37 ` Adrian McMenamin
1 sibling, 2 replies; 21+ messages in thread
From: Lee Revell @ 2006-04-11 1:13 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: alsa-devel, Takashi Iwai
On Mon, 2006-04-10 at 23:06 +0100, Adrian McMenamin wrote:
> On Sat, 2006-04-08 at 21:16 -0400, Lee Revell wrote:
> > c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200
> > -mdisable-fpregs"
>
>
> I have tried this patch and it doesn't work. Essentially the aica card
> isn't picked up. I think this has something to do with aclocal.m4 or
> something similar.
>
> To be honest I've hit a brick wall and any help at all would be welcome.
>
>
Adrian,
OK, here's the working (I think) patch against ALSA CVS.
I could not figure out how to add a new arch while leaving the driver in
alsa-driver, so this adds it to alsa-kernel.
Lee
diff -Nru alsa-kernel/Kconfig alsa-kernel2/Kconfig
--- alsa-kernel/Kconfig 2005-11-29 09:48:41.000000000 -0500
+++ alsa-kernel2/Kconfig 2006-04-10 19:15:34.000000000 -0400
@@ -74,6 +74,8 @@
source "sound/parisc/Kconfig"
+source "sound/sh/Kconfig"
+
endmenu
menu "Open Sound System"
diff -Nru alsa-kernel/Makefile alsa-kernel2/Makefile
--- alsa-kernel/Makefile 2005-03-22 03:50:46.000000000 -0500
+++ alsa-kernel2/Makefile 2006-04-10 19:08:32.000000000 -0400
@@ -4,7 +4,7 @@
obj-$(CONFIG_SOUND) += soundcore.o
obj-$(CONFIG_SOUND_PRIME) += oss/
obj-$(CONFIG_DMASOUND) += oss/
-obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/
+obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/ sh/
ifeq ($(CONFIG_SND),y)
obj-y += last.o
diff -Nru alsa-kernel/sh/Kconfig alsa-kernel2/sh/Kconfig
--- alsa-kernel/sh/Kconfig 1969-12-31 19:00:00.000000000 -0500
+++ alsa-kernel2/sh/Kconfig 2006-04-10 18:59:59.000000000 -0400
@@ -0,0 +1,16 @@
+menu "SH (Super-H) devices"
+ depends on SND!=n && SUPERH
+
+config SND_AICA
+ tristate "Yamaha AICA sound for SEGA Dreamcast"
+ depends on SND
+ depends on SH_DREAMCAST
+ select SND_PCM
+ help
+ Say Y here to include support for sound on your SEGA Dreamcast
+
+ To compile this driver as a module, choose M here: the module
+ will be called snd-aica.
+
+endmenu
+
diff -Nru alsa-kernel/sh/Makefile alsa-kernel2/sh/Makefile
--- alsa-kernel/sh/Makefile 1969-12-31 19:00:00.000000000 -0500
+++ alsa-kernel2/sh/Makefile 2006-04-10 18:59:59.000000000 -0400
@@ -0,0 +1,2 @@
+ snd-aica-objs := aica.o
+ obj-$(CONFIG_SND_AICA) += snd-aica.o
diff -Nru alsa-kernel/sh/aica.c alsa-kernel2/sh/aica.c
--- alsa-kernel/sh/aica.c 1969-12-31 19:00:00.000000000 -0500
+++ alsa-kernel2/sh/aica.c 2006-04-10 18:59:59.000000000 -0400
@@ -0,0 +1,802 @@
+/*
+* This code is licenced under
+* the General Public Licence
+* version 2
+*
+* Copyright Adrian McMenamin 2005, 2006
+* <adrian@mcmen.demon.co.uk>
+* See also http://newgolddream.dyndns.info/cgi-bin/cvsweb
+*
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of version 2 of the GNU General Public License as published by
+* the Free Software Foundation.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*
+*/
+
+
+#include <linux/init.h>
+#include <linux/jiffies.h>
+#include <linux/slab.h>
+#include <linux/time.h>
+#include <linux/wait.h>
+#include <linux/moduleparam.h>
+#include <linux/platform_device.h>
+#include <linux/firmware.h>
+#include <linux/timer.h>
+#include <linux/delay.h>
+#include <asm-sh/io.h>
+#include <asm-sh/dma.h>
+#include <asm-sh/dreamcast/sysasic.h>
+#include <sound/driver.h>
+#include <sound/core.h>
+#include <sound/control.h>
+#include <sound/pcm.h>
+#include <sound/initval.h>
+#include <sound/info.h>
+#include "aica.h"
+
+
+MODULE_AUTHOR("Adrian McMenamin <adrian@mcmen.demon.co.uk>");
+MODULE_DESCRIPTION("Dreamcast AICA sound (pcm) driver");
+MODULE_LICENSE("GPL");
+MODULE_SUPPORTED_DEVICE("{{Yamaha/SEGA, AICA}}");
+
+/* module parameters */
+#define CARD_NAME "AICA"
+
+static int index = 0;
+static char *id = "0";
+static int enable= 1;
+
+module_param(index, int, 0444);
+MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard.");
+module_param(id, charp, 0444);
+MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard.");
+module_param(enable, bool, 0644);
+MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
+
+
+/* SPU specific functions */
+
+inline void spu_write_wait()
+{
+ while (1) {
+ if (!(readl(G2_FIFO) & 0x11))
+ break;
+ }
+
+ return;
+}
+
+
+
+static void spu_memset(uint32_t toi, unsigned long what, int length)
+{
+ uint32_t *to = (uint32_t *) (SPU_MEMORY_BASE + toi);
+ int i;
+
+ if (length % 4)
+ length = (length / 4) + 1;
+ else
+ length = length / 4;
+ spu_write_wait();
+ for (i = 0; i < length; i++) {
+ writel(what, to);
+ to++;
+ if (i && !(i % 8))
+ spu_write_wait();
+ }
+ return;
+}
+
+static void spu_memload(uint32_t toi, uint8_t * from, int length)
+{
+ uint32_t *froml = (uint32_t *) from;
+ uint32_t *to = (uint32_t *) (SPU_MEMORY_BASE + toi);
+ int i, val;
+ if (length % 4)
+ length = (length / 4) + 1;
+ else
+ length = length / 4;
+ spu_write_wait();
+ for (i = 0; i < length; i++) {
+ val = *froml;
+ writel(val, to);
+ froml++;
+ to++;
+ if (i && !(i % 8))
+ spu_write_wait();
+ }
+ return;
+
+}
+
+static void spu_disable()
+{
+ int i;
+ uint32_t regval;
+ spu_write_wait();
+ regval = readl(ARM_RESET_REGISTER);
+ regval |= 1;
+ spu_write_wait();
+ writel(regval, ARM_RESET_REGISTER);
+ for (i = 0; i < 64; i++) {
+ spu_write_wait();
+ regval = readl(SPU_REGISTER_BASE + (i * 0x80));
+ regval = (regval & ~0x4000) | 0x8000;
+ spu_write_wait();
+ writel(regval, SPU_REGISTER_BASE + (i * 0x80));
+
+ }
+
+}
+
+
+static void spu_enable()
+{
+ uint32_t regval = readl(ARM_RESET_REGISTER);
+ regval &= ~1;
+ spu_write_wait();
+ writel(regval, ARM_RESET_REGISTER);
+ return;
+
+}
+
+
+/* Halt the sound processor,
+ clear the memory,
+ load some default ARM7 code,
+ and then restart ARM7
+*/
+static int spu_init()
+{
+
+ spu_disable();
+ spu_memset(0, 0, 0x200000 / 4);
+ *(uint32_t *) SPU_MEMORY_BASE = 0xea000002;
+ spu_enable();
+ schedule();
+ return 0;
+}
+
+
+
+static aica_channel_t *channel;
+
+inline static void aica_chn_start()
+{
+ spu_write_wait();
+ writel(AICA_CMD_KICK | AICA_CMD_START,
+ (uint32_t *) AICA_CONTROL_POINT);
+
+}
+
+inline static void aica_chn_halt()
+{
+ spu_write_wait();
+ writel(AICA_CMD_KICK | AICA_CMD_STOP,
+ (uint32_t *) AICA_CONTROL_POINT);
+
+}
+
+
+/* ALSA code below */
+
+static snd_pcm_hardware_t snd_pcm_aica_playback_hw = {
+
+ .info = (SNDRV_PCM_INFO_NONINTERLEAVED),
+ .formats =
+ (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE |
+ SNDRV_PCM_FMTBIT_IMA_ADPCM),
+ .rates = SNDRV_PCM_RATE_8000_48000,
+ .rate_min = 8000,
+ .rate_max = 48000,
+ .channels_min = 1,
+ .channels_max = 2,
+ .buffer_bytes_max = AICA_BUFFER_SIZE,
+ .period_bytes_min = AICA_PERIOD_SIZE,
+ .period_bytes_max = AICA_PERIOD_SIZE,
+ .periods_min = AICA_PERIOD_NUMBER,
+ .periods_max = AICA_PERIOD_NUMBER,
+};
+
+/* There is only one sound card on a Dreamcast */
+static snd_card_aica_t *dreamcastcard = NULL;
+static struct platform_device *pd = NULL;
+
+
+
+
+static int stereo_buffer_transfer(snd_pcm_substream_t * substream,
+ int buffer_size, int period)
+{
+ int transferred;
+ snd_pcm_runtime_t *runtime;
+ int period_offset;
+ period_offset = period;
+ period_offset %= (AICA_PERIOD_NUMBER / 2);
+ runtime = substream->runtime;
+
+ //snd_printk("period is 0x%X, period_offset is 0x%X, buffer_size is 0x%X\n", period, period_offset, buffer_size);
+ /* transfer left and then right */
+ dma_xfer(0,
+ runtime->dma_area + (AICA_PERIOD_SIZE * period_offset),
+ AICA_CHANNEL0_OFFSET + (AICA_PERIOD_SIZE * period_offset),
+ buffer_size / 2, 5);
+ /* wait for completion */
+ do {
+ udelay(5);
+ transferred = get_dma_residue(0);
+ }
+ while (transferred < buffer_size / 2);
+ dma_xfer(0,
+ AICA_BUFFER_SIZE / 2 + runtime->dma_area +
+ (AICA_PERIOD_SIZE * period_offset),
+ AICA_CHANNEL1_OFFSET + (AICA_PERIOD_SIZE * period_offset),
+ buffer_size / 2, 5);
+ /* have to wait again */
+ do {
+ udelay(5);
+ transferred = get_dma_residue(0);
+ }
+ while (transferred < buffer_size / 2);
+ return 0;
+}
+
+
+
+
+void aica_period_elapsed(unsigned long timer_var)
+{
+ int transferred;
+ int play_period;
+ snd_pcm_runtime_t *runtime;
+ runtime = (dreamcastcard->substream)->runtime;
+
+ /* Have we played out an additional period? */
+ play_period =
+ frames_to_bytes(runtime,
+ readl
+ (AICA_CONTROL_CHANNEL_SAMPLE_NUMBER)) /
+ AICA_PERIOD_SIZE;
+ if (play_period == dreamcastcard->current_period) {
+ dreamcastcard->timer.expires = jiffies + 1;
+ add_timer(&(dreamcastcard->timer));
+ return;
+ }
+ if (runtime->channels > 1) {
+ dreamcastcard->current_period = play_period; /*TO DO: Work out why this doesn't work for 1 channel */
+
+ stereo_buffer_transfer(dreamcastcard->substream,
+ AICA_PERIOD_SIZE * 2,
+ dreamcastcard->clicks);
+ } else {
+ dma_xfer(0,
+ runtime->dma_area +
+ (AICA_PERIOD_SIZE * dreamcastcard->clicks),
+ AICA_CHANNEL0_OFFSET +
+ (AICA_PERIOD_SIZE * dreamcastcard->clicks),
+ AICA_PERIOD_SIZE, 5);
+ do {
+ /* Try to fine tune the delay to keep it as short as possible */
+ udelay(5);
+ /* get_dma_residue reports residue until completion when it reports total bytes transferred */
+ transferred = get_dma_residue(0);
+ }
+ while (transferred < AICA_PERIOD_SIZE);
+ }
+
+ snd_pcm_period_elapsed(dreamcastcard->substream);
+ dreamcastcard->clicks++;
+ dreamcastcard->clicks %= AICA_PERIOD_NUMBER;
+ /* reschedule the timer */
+ dreamcastcard->timer.expires = jiffies + 1;
+ add_timer(&(dreamcastcard->timer));
+ return;
+}
+
+static int snd_aicapcm_pcm_open(snd_pcm_substream_t * substream)
+{
+ if (!enable) return -ENOENT;
+
+ channel = kmalloc(sizeof(aica_channel_t), GFP_KERNEL);
+ if (!channel)
+ return -ENOMEM;
+ /* set defaults for channel */
+ channel->sfmt = SM_8BIT;
+ channel->cmd = AICA_CMD_START;
+ channel->vol = dreamcastcard->master_volume;
+ channel->pan = 0x80;
+ channel->pos = 0;
+ channel->flags = 0; /* default to mono */
+ snd_pcm_runtime_t *runtime;
+ runtime = substream->runtime;
+ runtime->hw = snd_pcm_aica_playback_hw;
+ spu_enable();
+ dreamcastcard->clicks = 0;
+ dreamcastcard->current_period = 0;
+ return 0;
+
+}
+
+static int snd_aicapcm_pcm_close(snd_pcm_substream_t * substream)
+{
+ del_timer(&dreamcastcard->timer);
+ kfree(channel);
+ spu_disable();
+ return 0;
+}
+
+static int snd_aicapcm_pcm_hw_free(snd_pcm_substream_t * substream)
+{
+ /* Free the DMA buffer */
+ return snd_pcm_lib_free_pages(substream);
+}
+
+static int snd_aicapcm_pcm_hw_params(snd_pcm_substream_t * substream,
+ snd_pcm_hw_params_t * hw_params)
+{
+ /* Allocate a DMA buffer using ALSA built-ins */
+ return
+ snd_pcm_lib_malloc_pages(substream,
+ params_buffer_bytes(hw_params));
+}
+
+static int snd_aicapcm_pcm_prepare(snd_pcm_substream_t * substream)
+{
+
+ /* Set up the playback */
+ /* basic settings to test working */
+ if ((substream->runtime)->format == SNDRV_PCM_FORMAT_S16_LE)
+ channel->sfmt = SM_16BIT;
+ channel->freq = substream->runtime->rate;
+ dreamcastcard->substream = substream;
+ return 0;
+}
+
+
+static void startup_aica()
+{
+ spu_memload(AICA_CHANNEL0_CONTROL_OFFSET, (uint8_t *) channel,
+ sizeof(aica_channel_t));
+ aica_chn_start();
+ return;
+}
+
+
+static void spu_begin_dma(snd_pcm_substream_t * substream)
+{
+ int buffer_size;
+ snd_pcm_runtime_t *runtime;
+ runtime = substream->runtime;
+ buffer_size = frames_to_bytes(runtime, runtime->buffer_size);
+ if (runtime->channels == 1)
+ dma_xfer(0, runtime->dma_area, AICA_CHANNEL0_OFFSET,
+ buffer_size, 5);
+ else {
+ int transfer_status;
+ channel->flags |= 0x01;
+ transfer_status =
+ stereo_buffer_transfer(substream, buffer_size, 0);
+ if (transfer_status != 0)
+ return;
+ dreamcastcard->clicks =
+ buffer_size / (AICA_PERIOD_SIZE * runtime->channels);
+ }
+ startup_aica();
+ init_timer(&(dreamcastcard->timer));
+ dreamcastcard->timer.function = aica_period_elapsed;
+
+
+ dreamcastcard->timer.expires = jiffies + 4;
+ add_timer(&(dreamcastcard->timer));
+ return;
+}
+
+static int snd_aicapcm_pcm_trigger(snd_pcm_substream_t * substream,
+ int cmd)
+{
+
+ switch (cmd) {
+ case SNDRV_PCM_TRIGGER_START:
+ spu_begin_dma(substream);
+ break;
+ case SNDRV_PCM_TRIGGER_STOP:
+ aica_chn_halt();
+ break;
+ default:
+ return -EINVAL;
+ }
+
+
+ return 0;
+}
+
+static snd_pcm_uframes_t snd_aicapcm_pcm_pointer(snd_pcm_substream_t *
+ substream)
+{
+ return readl(AICA_CONTROL_CHANNEL_SAMPLE_NUMBER);
+
+}
+
+
+static snd_pcm_ops_t snd_aicapcm_playback_ops = {
+ .open = snd_aicapcm_pcm_open,
+ .close = snd_aicapcm_pcm_close,
+ .ioctl = snd_pcm_lib_ioctl,
+ .hw_params = snd_aicapcm_pcm_hw_params,
+ .hw_free = snd_aicapcm_pcm_hw_free,
+ .prepare = snd_aicapcm_pcm_prepare,
+ .trigger = snd_aicapcm_pcm_trigger,
+ .pointer = snd_aicapcm_pcm_pointer,
+};
+
+
+static int snd_aicapcm_free(snd_card_aica_t * dreamcastcard)
+{
+ release_mem_region(ARM_RESET_REGISTER, 0x4);
+ release_mem_region(SPU_MEMORY_BASE, 0x200000);
+ return 0;
+}
+
+/* Set up the PCM playback device
+ card is pointer to the overall AICA device
+ pcm_index is number of PCM instances - 1
+
+ TO DO: set up to handle more than one pcm instance
+*/
+
+
+static int __init snd_aicapcmchip(snd_card_aica_t * dreamcastcard,
+ int pcm_index)
+{
+ snd_pcm_t *pcm;
+ int err;
+
+ /* Can we lock the memory */
+
+ if (request_mem_region(ARM_RESET_REGISTER, 4, "AICA ARM control")
+ == NULL)
+ return -ENOMEM;
+ if (request_mem_region(SPU_MEMORY_BASE, 0x200000, "AICA Sound RAM")
+ == NULL) {
+ release_mem_region(ARM_RESET_REGISTER, 0x4);
+ return -ENOMEM;
+ }
+
+ /* AICA has no capture ability */
+ if ((err =
+ snd_pcm_new(dreamcastcard->card, "AICA PCM", pcm_index, 1, 0,
+ &pcm)) < 0)
+ return err;
+ pcm->private_data = dreamcastcard;
+ dreamcastcard->card->private_data = pcm;
+ strcpy(pcm->name, "AICA PCM");
+
+ snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK,
+ &snd_aicapcm_playback_ops);
+
+ /* Allocate the DMA buffers */
+ err =
+ snd_pcm_lib_preallocate_pages_for_all(pcm,
+ SNDRV_DMA_TYPE_CONTINUOUS,
+ snd_dma_continuous_data
+ (GFP_KERNEL),
+ AICA_BUFFER_SIZE,
+ AICA_BUFFER_SIZE);
+
+ return err;
+}
+
+/* Mixer controls */
+static int aica_pcmswitch_info(snd_kcontrol_t * kcontrol,
+ snd_ctl_elem_info_t * uinfo)
+{
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
+ uinfo->count = 1;
+ uinfo->value.integer.min = 0;
+ uinfo->value.integer.max = 1;
+ return 0;
+}
+
+static int aica_pcmswitch_get(snd_kcontrol_t * kcontrol,
+ snd_ctl_elem_value_t * ucontrol)
+{
+ ucontrol->value.integer.value[0] = 1; /* TO DO: Fix me */
+ return 0;
+}
+
+static int aica_pcmswitch_put(snd_kcontrol_t * kcontrol,
+ snd_ctl_elem_value_t * ucontrol)
+{
+ if (ucontrol->value.integer.value[0] == 1)
+ return 0; /* TO DO: Fix me */
+ else
+ aica_chn_halt();
+ return 0;
+}
+
+
+
+
+static int aica_pcmvolume_info(snd_kcontrol_t * kcontrol,
+ snd_ctl_elem_info_t * uinfo)
+{
+
+ uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
+ uinfo->count = 1;
+ uinfo->value.integer.min = 0;
+ uinfo->value.integer.max = 0xFF;
+
+ return 0;
+}
+
+static int aica_pcmvolume_get(snd_kcontrol_t * kcontrol,
+ snd_ctl_elem_value_t * ucontrol)
+{
+ if (!channel)
+ return -ETXTBSY; /* we've not yet been set up */
+ ucontrol->value.integer.value[0] = channel->vol;
+ return 0;
+}
+
+static int aica_pcmvolume_put(snd_kcontrol_t * kcontrol,
+ snd_ctl_elem_value_t * ucontrol)
+{
+ if (!channel) {
+ snd_printk("No channel yet\n");
+ return -ETXTBSY; /* too soon */
+ }
+
+ else if (channel->vol == ucontrol->value.integer.value[0])
+ return 0;
+
+ else {
+ channel->vol = ucontrol->value.integer.value[0];
+ dreamcastcard->master_volume = ucontrol->value.integer.value[0];
+ spu_memload(AICA_CHANNEL0_CONTROL_OFFSET,
+ (uint8_t *) channel, sizeof(aica_channel_t));
+ }
+ return 1;
+}
+
+
+static snd_kcontrol_new_t snd_aica_masterswitch_control __devinitdata = {
+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+ .name = "Playback Switch",
+ .info = aica_pcmswitch_info,
+ .get = aica_pcmswitch_get,
+ .put = aica_pcmswitch_put
+};
+
+static snd_kcontrol_new_t snd_aica_pcmswitch_control __devinitdata = {
+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+ .name = "PCM Playback Switch",
+ .index = 0,
+ .info = aica_pcmswitch_info,
+ .get = aica_pcmswitch_get,
+ .put = aica_pcmswitch_put
+};
+
+
+static snd_kcontrol_new_t snd_aica_mastervolume_control __devinitdata = {
+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+ .name = "Playback Volume",
+ .info = aica_pcmvolume_info,
+ .get = aica_pcmvolume_get,
+ .put = aica_pcmvolume_put
+};
+
+static snd_kcontrol_new_t snd_aica_pcmvolume_control __devinitdata = {
+ .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
+ .name = "PCM Playback Volume",
+ .index = 0,
+ .info = aica_pcmvolume_info,
+ .get = aica_pcmvolume_get,
+ .put = aica_pcmvolume_put
+};
+
+
+
+static struct device_driver aica_driver = {
+ .name = "AICA",
+ .bus = &platform_bus_type,
+};
+
+
+/* Fill up the members of the embedded device structure */
+
+static void populate_dreamcastaicadev(struct device *dev)
+{
+ dev->bus = &platform_bus_type;
+ dev->driver = &aica_driver;
+ driver_register(dev->driver);
+ device_bind_driver(dev);
+}
+
+static int load_aica_firmware()
+{
+ int err;
+ err = 0;
+ spu_init();
+ const struct firmware *fw_entry;
+ err = request_firmware(&fw_entry, "aica_firmware.bin", &pd->dev);
+ if (err)
+ return err;
+ /* write firware into memory */
+ spu_disable();
+ spu_memload(0, fw_entry->data, fw_entry->size);
+ spu_enable();
+ release_firmware(fw_entry);
+ return err;
+}
+
+static int __devinit add_aicamixer_controls()
+{
+ int err;
+ err = snd_ctl_add
+ (dreamcastcard->card,
+ snd_ctl_new1(&snd_aica_pcmvolume_control,
+ dreamcastcard));
+ if (err < 0){
+ snd_printk("pcmvolume failed\n");
+ return err;
+ }
+
+ err= snd_ctl_add
+ (dreamcastcard->card,
+ snd_ctl_new1(&snd_aica_pcmswitch_control,
+ dreamcastcard));
+ if (err < 0){
+ snd_printk("pcmswitch failed\n");
+ return err;
+ }
+
+
+ err = snd_ctl_add
+ (dreamcastcard->card,
+ snd_ctl_new1(&snd_aica_mastervolume_control,
+ dreamcastcard));
+ if (err < 0){
+ snd_printk("mastervolume failed\n");
+ return err;
+ }
+
+
+ err = snd_ctl_add
+ (dreamcastcard->card,
+ snd_ctl_new1(&snd_aica_masterswitch_control,
+ dreamcastcard));
+ if (err < 0){
+ snd_printk("masterswitch failed\n");
+ return err;
+ }
+
+
+
+ /* succeeded */
+ return 0;
+}
+
+
+
+static int __init aica_init(void)
+{
+
+
+ int err;
+ int idx;
+
+ /* Are we in a Dreamcast at all? */
+ if (!mach_is_dreamcast())
+ return -ENODEV;
+ dreamcastcard = kmalloc(sizeof(snd_card_aica_t), GFP_KERNEL);
+ if (!dreamcastcard)
+ return -ENOMEM;
+ dreamcastcard->card = NULL;
+ /* Can only be one real device on a Dreamcast
+ but we might have the dummy or some other driver loaded */
+ for (idx = 0; idx < SNDRV_CARDS; idx++) {
+ dreamcastcard->card =
+ snd_card_new(idx, "AICA", THIS_MODULE, 0);
+ if (dreamcastcard->card)
+ break;
+ }
+ if (!dreamcastcard->card) {
+ kfree(dreamcastcard);
+ return -ENODEV;
+ }
+ strcpy(dreamcastcard->card->driver, "snd_card_aica");
+ strcpy(dreamcastcard->card->shortname, "AICA");
+ strcpy(dreamcastcard->card->longname,
+ "Yamaha AICA Super Intelligent Sound Processor for SEGA Dreamcast");
+
+ /* Load the PCM 'chip' */
+ if ((err = snd_aicapcmchip(dreamcastcard, 0)) < 0)
+ goto freedreamcast;
+
+
+ pd = platform_device_register_simple(dreamcastcard->card->driver,
+ -1, NULL, 0);
+
+ if (IS_ERR(pd)) {
+ err = -ENODEV;
+ goto freepcm;
+ }
+
+ populate_dreamcastaicadev(&pd->dev);
+ snd_card_set_dev(dreamcastcard->card, &pd->dev);
+ /* Register the card with ALSA subsystem */
+ if ((err = snd_card_register(dreamcastcard->card)) < 0)
+ goto freepcm;
+
+ /* Load the firmware */
+ err = load_aica_firmware();
+
+ if (err)
+ goto freepcm;
+
+
+ /* Add basic controls */
+ if (add_aicamixer_controls() < 0) goto freepcm;
+
+ snd_printk
+ ("ALSA Driver for Yamaha AICA Super Intelligent Sound Processor on slot %d\n",
+ idx);
+
+ return 0;
+
+ freepcm:
+ snd_aicapcm_free(dreamcastcard);
+
+ freedreamcast:
+ snd_card_free(dreamcastcard->card);
+
+ if (pd) {
+ struct device_driver *drv = (&pd->dev)->driver;
+ device_release_driver(&pd->dev);
+ driver_unregister(drv);
+ platform_device_unregister(pd);
+ pd = NULL;
+ }
+ kfree(dreamcastcard);
+ return err;
+
+
+}
+
+static void __exit aica_exit(void)
+{
+
+ if (likely(dreamcastcard->card)) {
+ snd_aicapcm_free(dreamcastcard);
+ snd_card_free(dreamcastcard->card);
+ kfree(dreamcastcard);
+ if (likely(pd)) {
+ struct device_driver *drv = (&pd->dev)->driver;
+ device_release_driver(&pd->dev);
+ driver_unregister(drv);
+ platform_device_unregister(pd);
+ }
+
+ }
+ /* Kill any sound still playing and reset ARM7 to safe state */
+ spu_init();
+
+
+ return;
+}
+
+
+module_init(aica_init);
+module_exit(aica_exit);
diff -Nru alsa-kernel/sh/aica.h alsa-kernel2/sh/aica.h
--- alsa-kernel/sh/aica.h 1969-12-31 19:00:00.000000000 -0500
+++ alsa-kernel2/sh/aica.h 2006-04-10 18:59:59.000000000 -0400
@@ -0,0 +1,79 @@
+/* aica.h
+ * Header file for ALSA driver for
+ * Sega Dreamcast Yamaha AICA sound
+ * Copyright Adrian McMenamin
+ * <adrian@mcmen.demon.co.uk>
+ * 2006
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License as published by
+ * the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+/* SPU memory and register constants etc */
+#define G2_FIFO 0xa05f688c
+#define SPU_MEMORY_BASE 0xA0800000
+#define ARM_RESET_REGISTER 0xA0702C00
+#define SPU_REGISTER_BASE 0xA0700000
+
+
+
+/* AICA channels stuff */
+
+#define AICA_CONTROL_POINT 0xA0810000
+#define AICA_CONTROL_CHANNEL_SAMPLE_NUMBER 0xA0810008
+#define AICA_CHANNEL0_CONTROL_OFFSET 0x10004
+
+/* Command values */
+#define AICA_CMD_KICK 0x80000000
+#define AICA_CMD_NONE 0
+#define AICA_CMD_START 1
+#define AICA_CMD_STOP 2
+#define AICA_CMD_VOL 3
+
+/* Sound modes */
+#define SM_8BIT 1
+#define SM_16BIT 0
+#define SM_ADPCM 2
+
+/* Buffer and period size */
+#define AICA_BUFFER_SIZE 0x8000
+#define AICA_PERIOD_SIZE 0x800
+#define AICA_PERIOD_NUMBER 16
+
+#define AICA_CHANNEL0_OFFSET 0x11000
+#define AICA_CHANNEL1_OFFSET 0x21000
+
+
+typedef struct {
+ snd_card_t *card;
+ snd_pcm_substream_t *substream;
+ int clicks;
+ int current_period;
+ struct timer_list timer;
+ int master_volume;
+
+} snd_card_aica_t;
+
+
+
+typedef struct aica_channel {
+ uint32_t cmd; /* Command ID */
+ uint32_t pos; /* Sample position */
+ uint32_t length; /* Sample length */
+ uint32_t freq; /* Frequency */
+ uint32_t vol; /* Volume 0-255 */
+ uint32_t pan; /* Pan 0-255 */
+ uint32_t sfmt; /* Sound format */
+ uint32_t flags; /* Bit flags */
+} aica_channel_t;
diff -Nru alsa-driver/Makefile alsa-driver2/Makefile
--- alsa-driver/Makefile 2005-11-17 06:15:20.000000000 -0500
+++ alsa-driver2/Makefile 2006-04-08 21:14:22.000000000 -0400
@@ -6,7 +6,7 @@
ifneq ($(KERNELRELEASE),)
# call from 2.6 kernel build system
-obj-m += acore/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/
+obj-m += acore/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ sh/
else
@@ -99,6 +99,9 @@
ifeq (y,$(CONFIG_PARISC))
SUBDIRS += parisc
endif
+ifeq (y,$(CONFIG_SUPERH))
+SUBDIRS += sh
+endif
CSUBDIRS += include test utils
KCONFIG_FILES = $(shell find $(SND_TOPDIR) -name Kconfig) $(shell find $(SND_TOPDIR)/alsa-kernel/ -name Kconfig)
diff -Nru alsa-driver/configure.in alsa-driver2/configure.in
--- alsa-driver/configure.in 2006-03-29 11:52:47.000000000 -0500
+++ alsa-driver2/configure.in 2006-04-08 21:13:18.000000000 -0400
@@ -872,6 +872,8 @@
fprintf(file, "amba");
#elif defined(CONFIG_PARISC)
fprintf(file, "parisc");
+#elif defined(CONFIG_SUPERH)
+ fprintf(file, "sh");
#elif defined(CONFIG_MVIAC3_2)
fprintf(file, "viac3_2");
#else
@@ -1117,6 +1119,11 @@
c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200 -mdisable-fpregs"
test "$CONFIG_ISA" = "probe" && CONFIG_ISA=
;;
+ sh)
+ ARCH=sh
+ c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200 -mdisable-fpregs"
+ test "$CONFIG_ISA" = "probe" && CONFIG_ISA=
+ ;;
viac3_2)
ARCH=i386
if $KCC -march=c3-2 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then
@@ -1259,6 +1266,7 @@
AC_SUBST(CONFIG_ISA)
AC_SUBST(CONFIG_ISA_DMA_API)
AC_SUBST(CONFIG_PARISC)
+AC_SUBST(CONFIG_SUPERH)
test "$CONFIG_ISA" = "y" && AC_DEFINE(CONFIG_SND_ISA)
dnl Check for SMP...
diff -Nru alsa-driver/sh/Makefile alsa-driver2/sh/Makefile
--- alsa-driver/sh/Makefile 1969-12-31 19:00:00.000000000 -0500
+++ alsa-driver2/sh/Makefile 2006-04-10 19:01:28.000000000 -0400
@@ -0,0 +1,10 @@
+ifndef SND_TOPDIR
+SND_TOPDIR=..
+endif
+
+include $(SND_TOPDIR)/toplevel.config
+include $(SND_TOPDIR)/Makefile.conf
+
+include $(SND_TOPDIR)/alsa-kernel/sh/Makefile
+
+include $(SND_TOPDIR)/Rules.make
diff -Nru alsa-driver/sh/aica.c alsa-driver2/sh/aica.c
--- alsa-driver/sh/aica.c 1969-12-31 19:00:00.000000000 -0500
+++ alsa-driver2/sh/aica.c 2006-04-10 19:02:31.000000000 -0400
@@ -0,0 +1,3 @@
+#include "../alsa-kernel/sh/aica.c"
+EXPORT_NO_SYMBOLS;
+
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-11 1:13 ` Lee Revell
@ 2006-04-11 10:01 ` Takashi Iwai
2006-04-14 17:56 ` Adrian McMenamin
2006-04-11 21:37 ` Adrian McMenamin
1 sibling, 1 reply; 21+ messages in thread
From: Takashi Iwai @ 2006-04-11 10:01 UTC (permalink / raw)
To: Lee Revell; +Cc: Adrian McMenamin, alsa-devel
At Mon, 10 Apr 2006 21:13:36 -0400,
Lee Revell wrote:
>
> On Mon, 2006-04-10 at 23:06 +0100, Adrian McMenamin wrote:
> > On Sat, 2006-04-08 at 21:16 -0400, Lee Revell wrote:
> > > c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200
> > > -mdisable-fpregs"
> >
> >
> > I have tried this patch and it doesn't work. Essentially the aica card
> > isn't picked up. I think this has something to do with aclocal.m4 or
> > something similar.
> >
> > To be honest I've hit a brick wall and any help at all would be welcome.
> >
> >
>
> Adrian,
>
> OK, here's the working (I think) patch against ALSA CVS.
>
> I could not figure out how to add a new arch while leaving the driver in
> alsa-driver, so this adds it to alsa-kernel.
As I wrote in another post, it's not possible cleanly right now.
You can include sh/Kconfig from acore/Kconfig, for example, but better
to fix alsa-driver/utils/mod-deps.c, which generates acinclude.m4 and
toplevel config.
> diff -Nru alsa-kernel/Makefile alsa-kernel2/Makefile
> --- alsa-kernel/Makefile 2005-03-22 03:50:46.000000000 -0500
> +++ alsa-kernel2/Makefile 2006-04-10 19:08:32.000000000 -0400
> @@ -4,7 +4,7 @@
> obj-$(CONFIG_SOUND) += soundcore.o
> obj-$(CONFIG_SOUND_PRIME) += oss/
> obj-$(CONFIG_DMASOUND) += oss/
> -obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/
> +obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/ sh/
>
> ifeq ($(CONFIG_SND),y)
> obj-y += last.o
This change is not necessary. Only the changes to Kconfigs are
required in alsa-kernel tree. Others can be gracefully put solely in
alsa-driver tree.
> diff -Nru alsa-kernel/sh/Makefile alsa-kernel2/sh/Makefile
> --- alsa-kernel/sh/Makefile 1969-12-31 19:00:00.000000000 -0500
> +++ alsa-kernel2/sh/Makefile 2006-04-10 18:59:59.000000000 -0400
> @@ -0,0 +1,2 @@
> + snd-aica-objs := aica.o
> + obj-$(CONFIG_SND_AICA) += snd-aica.o
This should go to alsa-driver/sh/Makefile.
> diff -Nru alsa-kernel/sh/aica.c alsa-kernel2/sh/aica.c
> --- alsa-kernel/sh/aica.c 1969-12-31 19:00:00.000000000 -0500
> +++ alsa-kernel2/sh/aica.c 2006-04-10 18:59:59.000000000 -0400
I don't comment on driver code here.
Many things I pointed are not fixed yet...
> diff -Nru alsa-driver/sh/Makefile alsa-driver2/sh/Makefile
> --- alsa-driver/sh/Makefile 1969-12-31 19:00:00.000000000 -0500
> +++ alsa-driver2/sh/Makefile 2006-04-10 19:01:28.000000000 -0400
> @@ -0,0 +1,10 @@
> +ifndef SND_TOPDIR
> +SND_TOPDIR=..
> +endif
> +
> +include $(SND_TOPDIR)/toplevel.config
> +include $(SND_TOPDIR)/Makefile.conf
> +
> +include $(SND_TOPDIR)/alsa-kernel/sh/Makefile
> +
> +include $(SND_TOPDIR)/Rules.make
The following should be in this file in replace of
include $(SND_TOPDIR)/alsa-kernel/sh/Makefile
snd-aica-objs := aica.o
obj-$(CONFIG_SND_AICA) += snd-aica.o
> diff -Nru alsa-driver/sh/aica.c alsa-driver2/sh/aica.c
> --- alsa-driver/sh/aica.c 1969-12-31 19:00:00.000000000 -0500
> +++ alsa-driver2/sh/aica.c 2006-04-10 19:02:31.000000000 -0400
> @@ -0,0 +1,3 @@
> +#include "../alsa-kernel/sh/aica.c"
> +EXPORT_NO_SYMBOLS;
> +
Also, aica.c and aica.h should be directly here.
Takashi
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-11 1:13 ` Lee Revell
2006-04-11 10:01 ` Takashi Iwai
@ 2006-04-11 21:37 ` Adrian McMenamin
2006-04-11 21:57 ` Lee Revell
1 sibling, 1 reply; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-11 21:37 UTC (permalink / raw)
To: Lee Revell; +Cc: alsa-devel, Takashi Iwai
On Mon, 2006-04-10 at 21:13 -0400, Lee Revell wrote:
> On Mon, 2006-04-10 at 23:06 +0100, Adrian McMenamin wrote:
> > On Sat, 2006-04-08 at 21:16 -0400, Lee Revell wrote:
> > > c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200
> > > -mdisable-fpregs"
> >
> >
> > I have tried this patch and it doesn't work. Essentially the aica card
> > isn't picked up. I think this has something to do with aclocal.m4 or
> > something similar.
> >
> > To be honest I've hit a brick wall and any help at all would be welcome.
> >
> >
>
> Adrian,
>
> OK, here's the working (I think) patch against ALSA CVS.
>
> I could not figure out how to add a new arch while leaving the driver in
> alsa-driver, so this adds it to alsa-kernel.
I just cannot get this patch to apply. It seems to be made at two
different patch levels
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-11 21:37 ` Adrian McMenamin
@ 2006-04-11 21:57 ` Lee Revell
2006-04-11 22:05 ` Adrian McMenamin
2006-04-12 9:38 ` Takashi Iwai
0 siblings, 2 replies; 21+ messages in thread
From: Lee Revell @ 2006-04-11 21:57 UTC (permalink / raw)
To: Adrian McMenamin; +Cc: alsa-devel, Takashi Iwai
On Tue, 2006-04-11 at 22:37 +0100, Adrian McMenamin wrote:
> I just cannot get this patch to apply. It seems to be made at two
> different patch levels
>
cvs diff was not working for me (I could not get it to show the contents
of the "sh" directories, diff -Nru style) so I made a separate patch for
alsa-driver and alsa-kernel and combined them.
It works for me:
$ cat ~/aica-new.patch | patch -p0 --dry-run
patching file alsa-kernel/Kconfig
patching file alsa-kernel/Makefile
patching file alsa-kernel/sh/Kconfig
patching file alsa-kernel/sh/Makefile
patching file alsa-kernel/sh/aica.c
patching file alsa-kernel/sh/aica.h
patching file alsa-driver/Makefile
patching file alsa-driver/configure.in
patching file alsa-driver/sh/Makefile
patching file alsa-driver/sh/aica.c
Lee
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-11 21:57 ` Lee Revell
@ 2006-04-11 22:05 ` Adrian McMenamin
2006-04-12 9:38 ` Takashi Iwai
1 sibling, 0 replies; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-11 22:05 UTC (permalink / raw)
To: Lee Revell; +Cc: alsa-devel, Takashi Iwai
On Tue, 2006-04-11 at 17:57 -0400, Lee Revell wrote:
> On Tue, 2006-04-11 at 22:37 +0100, Adrian McMenamin wrote:
> > I just cannot get this patch to apply. It seems to be made at two
> > different patch levels
> >
>
> cvs diff was not working for me (I could not get it to show the contents
> of the "sh" directories, diff -Nru style) so I made a separate patch for
> alsa-driver and alsa-kernel and combined them.
>
> It works for me:
>
> $ cat ~/aica-new.patch | patch -p0 --dry-run
> patching file alsa-kernel/Kconfig
> patching file alsa-kernel/Makefile
> patching file alsa-kernel/sh/Kconfig
> patching file alsa-kernel/sh/Makefile
> patching file alsa-kernel/sh/aica.c
> patching file alsa-kernel/sh/aica.h
> patching file alsa-driver/Makefile
> patching file alsa-driver/configure.in
> patching file alsa-driver/sh/Makefile
> patching file alsa-driver/sh/aica.c
>
I'll try it this way then
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-11 21:57 ` Lee Revell
2006-04-11 22:05 ` Adrian McMenamin
@ 2006-04-12 9:38 ` Takashi Iwai
1 sibling, 0 replies; 21+ messages in thread
From: Takashi Iwai @ 2006-04-12 9:38 UTC (permalink / raw)
To: Lee Revell; +Cc: Adrian McMenamin, alsa-devel
At Tue, 11 Apr 2006 17:57:55 -0400,
Lee Revell wrote:
>
> On Tue, 2006-04-11 at 22:37 +0100, Adrian McMenamin wrote:
> > I just cannot get this patch to apply. It seems to be made at two
> > different patch levels
> >
>
> cvs diff was not working for me (I could not get it to show the contents
> of the "sh" directories, diff -Nru style)
cvs diff shows the patch for new files only when they are added to
repo via cvs add. They don't have to be committed, though.
Takashi
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: Adding a new architecture to alsa-driver
2006-04-11 10:01 ` Takashi Iwai
@ 2006-04-14 17:56 ` Adrian McMenamin
0 siblings, 0 replies; 21+ messages in thread
From: Adrian McMenamin @ 2006-04-14 17:56 UTC (permalink / raw)
To: Takashi Iwai; +Cc: Lee Revell, alsa-devel
On Tue, 2006-04-11 at 12:01 +0200, Takashi Iwai wrote:
> At Mon, 10 Apr 2006 21:13:36 -0400,
> Lee Revell wrote:
> >
> > On Mon, 2006-04-10 at 23:06 +0100, Adrian McMenamin wrote:
> > > On Sat, 2006-04-08 at 21:16 -0400, Lee Revell wrote:
> > > > c_opts="-mno-space-regs -mfast-indirect-calls -mschedule=7200
> > > > -mdisable-fpregs"
> > >
> > >
> > > I have tried this patch and it doesn't work. Essentially the aica card
> > > isn't picked up. I think this has something to do with aclocal.m4 or
> > > something similar.
> > >
> > > To be honest I've hit a brick wall and any help at all would be welcome.
> > >
> > >
> >
> > Adrian,
> >
> > OK, here's the working (I think) patch against ALSA CVS.
> >
> > I could not figure out how to add a new arch while leaving the driver in
> > alsa-driver, so this adds it to alsa-kernel.
>
> As I wrote in another post, it's not possible cleanly right now.
> You can include sh/Kconfig from acore/Kconfig, for example, but better
> to fix alsa-driver/utils/mod-deps.c, which generates acinclude.m4 and
> toplevel config.
>
> > diff -Nru alsa-kernel/Makefile alsa-kernel2/Makefile
> > --- alsa-kernel/Makefile 2005-03-22 03:50:46.000000000 -0500
> > +++ alsa-kernel2/Makefile 2006-04-10 19:08:32.000000000 -0400
> > @@ -4,7 +4,7 @@
> > obj-$(CONFIG_SOUND) += soundcore.o
> > obj-$(CONFIG_SOUND_PRIME) += oss/
> > obj-$(CONFIG_DMASOUND) += oss/
> > -obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/
> > +obj-$(CONFIG_SND) += core/ i2c/ drivers/ isa/ pci/ ppc/ arm/ synth/ usb/ sparc/ parisc/ pcmcia/ mips/ sh/
> >
> > ifeq ($(CONFIG_SND),y)
> > obj-y += last.o
>
> This change is not necessary. Only the changes to Kconfigs are
> required in alsa-kernel tree. Others can be gracefully put solely in
> alsa-driver tree.
>
>
> > diff -Nru alsa-kernel/sh/Makefile alsa-kernel2/sh/Makefile
> > --- alsa-kernel/sh/Makefile 1969-12-31 19:00:00.000000000 -0500
> > +++ alsa-kernel2/sh/Makefile 2006-04-10 18:59:59.000000000 -0400
> > @@ -0,0 +1,2 @@
> > + snd-aica-objs := aica.o
> > + obj-$(CONFIG_SND_AICA) += snd-aica.o
>
> This should go to alsa-driver/sh/Makefile.
>
>
> > diff -Nru alsa-kernel/sh/aica.c alsa-kernel2/sh/aica.c
> > --- alsa-kernel/sh/aica.c 1969-12-31 19:00:00.000000000 -0500
> > +++ alsa-kernel2/sh/aica.c 2006-04-10 18:59:59.000000000 -0400
>
> I don't comment on driver code here.
> Many things I pointed are not fixed yet...
>
>
> > diff -Nru alsa-driver/sh/Makefile alsa-driver2/sh/Makefile
> > --- alsa-driver/sh/Makefile 1969-12-31 19:00:00.000000000 -0500
> > +++ alsa-driver2/sh/Makefile 2006-04-10 19:01:28.000000000 -0400
> > @@ -0,0 +1,10 @@
> > +ifndef SND_TOPDIR
> > +SND_TOPDIR=..
> > +endif
> > +
> > +include $(SND_TOPDIR)/toplevel.config
> > +include $(SND_TOPDIR)/Makefile.conf
> > +
> > +include $(SND_TOPDIR)/alsa-kernel/sh/Makefile
> > +
> > +include $(SND_TOPDIR)/Rules.make
>
> The following should be in this file in replace of
> include $(SND_TOPDIR)/alsa-kernel/sh/Makefile
> snd-aica-objs := aica.o
> obj-$(CONFIG_SND_AICA) += snd-aica.o
>
>
> > diff -Nru alsa-driver/sh/aica.c alsa-driver2/sh/aica.c
> > --- alsa-driver/sh/aica.c 1969-12-31 19:00:00.000000000 -0500
> > +++ alsa-driver2/sh/aica.c 2006-04-10 19:02:31.000000000 -0400
> > @@ -0,0 +1,3 @@
> > +#include "../alsa-kernel/sh/aica.c"
> > +EXPORT_NO_SYMBOLS;
> > +
>
> Also, aica.c and aica.h should be directly here.
>
This worked - in the sense that the alsa setup now tries to compile the
driver. Yes, lots of things weren't fixed, but that was because I
couldn't compile the driver against the alsa sources - I can now do that
so will get on with fixing the driver.
However, I note the alsa anon cvs still seems to be shipping out code
that was meant to be fixed 10 days ago.
-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2006-04-14 17:56 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-04-08 15:35 Adding a new architecture to alsa-driver Adrian McMenamin
2006-04-08 16:03 ` Lee Revell
2006-04-09 0:23 ` Adrian McMenamin
2006-04-09 0:56 ` Lee Revell
2006-04-09 1:04 ` Lee Revell
2006-04-09 10:50 ` Adrian McMenamin
2006-04-09 11:24 ` Jaroslav Kysela
2006-04-09 12:26 ` Adrian McMenamin
2006-04-10 10:19 ` Takashi Iwai
2006-04-09 1:16 ` Lee Revell
2006-04-09 10:52 ` Adrian McMenamin
2006-04-10 22:06 ` Adrian McMenamin
2006-04-10 22:40 ` Lee Revell
2006-04-11 1:13 ` Lee Revell
2006-04-11 10:01 ` Takashi Iwai
2006-04-14 17:56 ` Adrian McMenamin
2006-04-11 21:37 ` Adrian McMenamin
2006-04-11 21:57 ` Lee Revell
2006-04-11 22:05 ` Adrian McMenamin
2006-04-12 9:38 ` Takashi Iwai
2006-04-08 16:04 ` Lee Revell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.