Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83e0c24a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
  snd-pcsp: silent misleading warning
  snd-pcsp: depend on CONFIG_EXPERIMENTAL
  snd-pcsp: put back the compatibility code for the older alsa-libs
  snd-pcsp: adjust help texts to frighten users
parents 161fb0cf 42ece6c1
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -28,11 +28,6 @@ config SOUND
	  and read <file:Documentation/sound/oss/README.modules>; the module
	  will be called soundcore.

	  I'm told that even without a sound card, you can make your computer
	  say more than an occasional beep, by programming the PC speaker.
	  Kernel patches and supporting utilities to do that are in the pcsp
	  package, available at <ftp://ftp.infradead.org/pub/pcsp/>.

source "sound/oss/dmasound/Kconfig"

if !M68K
+13 −2
Original line number Diff line number Diff line
@@ -5,9 +5,10 @@ menu "Generic devices"


config SND_PCSP
	tristate "PC-Speaker support"
	tristate "PC-Speaker support (READ HELP!)"
	depends on PCSPKR_PLATFORM && X86_PC && HIGH_RES_TIMERS
	depends on INPUT
	depends on EXPERIMENTAL
	depends on SND
	select SND_PCM
	help
@@ -18,11 +19,21 @@ config SND_PCSP

	  You can compile this as a module which will be called snd-pcsp.

	  WARNING: if you already have a soundcard, enabling this
	  driver may lead to a problem. Namely, it may get loaded
	  before the other sound driver of yours, making the
	  pc-speaker a default sound device. Which is likely not
	  what you want. To make this driver play nicely with other
	  sound driver, you can add this into your /etc/modprobe.conf:
	  options snd-pcsp index=2

	  You don't need this driver if you only want your pc-speaker to beep.
	  You don't need this driver if you have a tablet piezo beeper
	  in your PC instead of the real speaker.

	  It should not hurt to say Y or M here in all other cases.
	  Say N if you have a sound card.
	  Say M if you don't.
	  Say Y only if you really know what you do.

config SND_MPU401_UART
        tristate
+17 −6
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ module_param(nforce_wa, bool, 0444);
MODULE_PARM_DESC(nforce_wa, "Apply NForce chipset workaround "
		"(expect bad sound)");

#define DMIX_WANTS_S16	1

static void pcsp_start_timer(unsigned long dummy)
{
	hrtimer_start(&pcsp_chip.timer, ktime_set(0, 0), HRTIMER_MODE_REL);
@@ -47,7 +49,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
{
	unsigned long flags;
	unsigned char timer_cnt, val;
	int periods_elapsed;
	int fmt_size, periods_elapsed;
	u64 ns;
	size_t period_bytes, buffer_bytes;
	struct snd_pcm_substream *substream;
@@ -92,8 +94,11 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)
		goto exit_nr_unlock2;

	runtime = substream->runtime;
	/* assume it is u8 mono */
	val = runtime->dma_area[chip->playback_ptr];
	fmt_size = snd_pcm_format_physical_width(runtime->format) >> 3;
	/* assume it is mono! */
	val = runtime->dma_area[chip->playback_ptr + fmt_size - 1];
	if (snd_pcm_format_signed(runtime->format))
		val ^= 0x80;
	timer_cnt = val * CUR_DIV() / 256;

	if (timer_cnt && chip->enable) {
@@ -111,12 +116,14 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle)

	period_bytes = snd_pcm_lib_period_bytes(substream);
	buffer_bytes = snd_pcm_lib_buffer_bytes(substream);
	chip->playback_ptr += PCSP_INDEX_INC();
	chip->playback_ptr += PCSP_INDEX_INC() * fmt_size;
	periods_elapsed = chip->playback_ptr - chip->period_ptr;
	if (periods_elapsed < 0) {
		printk(KERN_WARNING "PCSP: playback_ptr inconsistent "
#if PCSP_DEBUG
		printk(KERN_INFO "PCSP: buffer_bytes mod period_bytes != 0 ? "
			"(%zi %zi %zi)\n",
			chip->playback_ptr, period_bytes, buffer_bytes);
#endif
		periods_elapsed += buffer_bytes;
	}
	periods_elapsed /= period_bytes;
@@ -270,7 +277,11 @@ static struct snd_pcm_hardware snd_pcsp_playback = {
	.info = (SNDRV_PCM_INFO_INTERLEAVED |
		 SNDRV_PCM_INFO_HALF_DUPLEX |
		 SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID),
	.formats = SNDRV_PCM_FMTBIT_U8,
	.formats = (SNDRV_PCM_FMTBIT_U8
#if DMIX_WANTS_S16
		    | SNDRV_PCM_FMTBIT_S16_LE
#endif
	    ),
	.rates = SNDRV_PCM_RATE_KNOT,
	.rate_min = PCSP_DEFAULT_SRATE,
	.rate_max = PCSP_DEFAULT_SRATE,