Bug 94940 - add hooks to activate support for cs4231 audio
Summary: add hooks to activate support for cs4231 audio
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: sparc64 (show other bugs)
Version: 6.1-PRERELEASE
Hardware: Any Any
: Normal Affects Only Me
Assignee: freebsd-sparc64 (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-03-26 00:40 UTC by Gheorghe Ardelean
Modified: 2006-03-28 06:19 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gheorghe Ardelean 2006-03-26 00:40:17 UTC
The support for cs4231 audio codec was added a while ago but the necessary hooks to activate this are still missing.

Fix: Add the following lines to the kernel definition file (e.g. GENERIC): 

device          sound
device          "snd_cs4231"

and apply this patches to the corresponding files (relative to /usr/src):



after this compile a new kernel and reboot the system. The audio device shows up as:

pcm0: <Sun Audiocs> mem 0xc000000-0xc0001ff irq 2020 on sbus0
pcm0: <CS4231A Codec Id. 10>

It works nicely on my plain Ultra1.--0W7rJT6aRjrHzTgcdHYo1wOF465ok7X4Cuw3pQBRCAmVrOsM
Content-Type: text/plain; name="file.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="file.diff"

--- ./sys/conf/NOTES.orig       Thu Feb 23 03:13:30 2006
+++ ./sys/conf/NOTES    Sun Mar 26 03:52:48 2006
@@ -1939,6 +1939,7 @@
 # snd_audiocs:         Crystal Semiconductor CS4231 SBus/EBus. Only
 #                      for sparc64.
 # snd_cmi:             CMedia CMI8338/CMI8738 PCI.
+# snd_cs4231:          Crystal Semiconductor CS4231.
 # snd_cs4281:          Crystal Semiconductor CS4281 PCI.
 # snd_csa:             Crystal Semiconductor CS461x/428x PCI. (except
 #                      4281)
@@ -1976,6 +1977,7 @@
 #device                snd_au88x0
 #device                snd_audiocs
 device         snd_cmi
+device          snd_cs4231
 device         snd_cs4281
 device         snd_csa
 device         snd_ds1
--- ./sys/conf/files.orig       Sun Mar 26 01:30:11 2006
+++ ./sys/conf/files    Sun Mar 26 03:47:16 2006
@@ -843,6 +843,8 @@
 dev/sound/pcm/sndstat.c                optional sound
 dev/sound/pcm/sound.c          optional sound
 dev/sound/pcm/vchan.c          optional sound
+dev/sound/sbus/cs4231.c                optional snd_cs4231 sbus
+dev/sound/sbus/cs4231.c                optional snd_cs4231 ebus
 #dev/sound/usb/upcm.c          optional snd_upcm usb
 dev/sound/usb/uaudio.c         optional snd_uaudio usb
 dev/sound/usb/uaudio_pcm.c     optional snd_uaudio usb
--- ./sys/modules/sound/driver/Makefile.orig    Fri Dec 30 20:55:54 2005
+++ ./sys/modules/sound/driver/Makefile Sun Mar 26 03:49:04 2006
@@ -3,7 +3,7 @@
 .if ${MACHINE_ARCH} == "sparc64"
 SUBDIR  = audiocs es137x
 .else
-SUBDIR  = als4000 ad1816 atiixp cmi cs4281 csa ds1 emu10k1 es137x ess
+SUBDIR  = als4000 ad1816 atiixp cmi cs4231 cs4281 csa ds1 emu10k1 es137x ess
 SUBDIR += fm801 ich maestro maestro3 mss neomagic sb16 sb8 sbc solo
 SUBDIR += t4dwave via8233 via82c686 vibes
 SUBDIR += driver uaudio
Comment 1 Gheorghe Ardelean 2006-03-26 04:29:18 UTC
The patch I provided in sparc64/94940 does not build correctly the module
for cs4231 (as part of the sound module). Sorry for that. After updating
the patch provided by Pyun YongHyeon here:
http://www.kr.freebsd.org/~yongari/cs4231.freebsd.diff
I've got a new patch that applies cleanly to 6.1-PRERELEASE.

In order to apply the patch please run
  cd /usr/src
  patch -p0 < /path/to/patch

The patch follows:

--- ./sys/conf/NOTES.orig	Thu Feb 23 03:13:30 2006
+++ ./sys/conf/NOTES	Sun Mar 26 03:52:48 2006
@@ -1939,6 +1939,7 @@
 # snd_audiocs:		Crystal Semiconductor CS4231 SBus/EBus. Only
 #			for sparc64.
 # snd_cmi:		CMedia CMI8338/CMI8738 PCI.
+# snd_cs4231:		Crystal Semiconductor CS4231 sbus/ebus.
 # snd_cs4281:		Crystal Semiconductor CS4281 PCI.
 # snd_csa:		Crystal Semiconductor CS461x/428x PCI. (except
 #			4281)
@@ -1976,6 +1977,7 @@
 #device		snd_au88x0
 #device		snd_audiocs
 device		snd_cmi
+device          snd_cs4231
 device		snd_cs4281
 device		snd_csa
 device		snd_ds1
--- ./sys/conf/files.orig	Sun Mar 26 01:30:11 2006
+++ ./sys/conf/files	Sun Mar 26 03:47:16 2006
@@ -843,6 +843,8 @@
 dev/sound/pcm/sndstat.c		optional sound
 dev/sound/pcm/sound.c		optional sound
 dev/sound/pcm/vchan.c		optional sound
+dev/sound/sbus/cs4231.c		optional snd_cs4231 sbus
+dev/sound/sbus/cs4231.c		optional snd_cs4231 ebus
 #dev/sound/usb/upcm.c		optional snd_upcm usb
 dev/sound/usb/uaudio.c		optional snd_uaudio usb
 dev/sound/usb/uaudio_pcm.c	optional snd_uaudio usb
--- ./sys/modules/sound/driver/Makefile.orig	Sun Mar 26 06:36:30 2006
+++ ./sys/modules/sound/driver/Makefile	Sun Mar 26 06:36:45 2006
@@ -1,7 +1,7 @@
 # $FreeBSD: src/sys/modules/sound/driver/Makefile,v 1.16.2.1 2005/12/30 19:55:54 netchild Exp $

 .if ${MACHINE_ARCH} == "sparc64"
-SUBDIR  = audiocs es137x
+SUBDIR  = audiocs es137x cs4231
 .else
 SUBDIR  = als4000 ad1816 atiixp cmi cs4281 csa ds1 emu10k1 es137x ess
 SUBDIR += fm801 ich maestro maestro3 mss neomagic sb16 sb8 sbc solo
--- /dev/null	Sun Mar 26 06:22:01 2006
+++ ./sys/modules/sound/driver/cs4231/Makefile	Sun Mar 26 05:45:11 2006
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../../../dev/sound/sbus
+
+KMOD=	snd_cs4231
+SRCS=	device_if.h bus_if.h ofw_bus_if.h
+SRCS+=	channel_if.h feeder_if.h mixer_if.h
+SRCS+=	cs4231.c
+
+.include <bsd.kmod.mk>
Comment 2 Joerg Wunsch freebsd_committer freebsd_triage 2006-03-28 06:18:17 UTC
State Changed
From-To: open->closed

Confirmed by Gheorghe Ardelean <ardelean@ww.uni-erlangen.de>: 

> Try reverting your patches and using 'device snd_audiocs' instead of 
> 'device snd_cs4231' in your kernel config.  I think there is also already 
> support for a snd_audiocs kernel module as well. 

This is true, it works nicely with snd_audiocs. Sorry for not seeing it. 
Someone please close the pr!