rpms/kernel/devel linux-2.6-alsa-rc4-mm1.patch, NONE, 1.1 kernel.spec, 1.292, 1.293

Chuck Ebbert (cebbert) fedora-extras-commits at redhat.com
Tue Dec 11 20:54:47 UTC 2007


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv605

Modified Files:
	kernel.spec 
Added Files:
	linux-2.6-alsa-rc4-mm1.patch 
Log Message:
* Tue Dec 11 2007 Chuck Ebbert <cebbert at redhat.com>
- ALSA update


linux-2.6-alsa-rc4-mm1.patch:

--- NEW FILE linux-2.6-alsa-rc4-mm1.patch ---
GIT a7789dbc42abf8efbfdd46b99ffa39b4404f7184 git+ssh://master.kernel.org/pub/scm/linux/kernel/git/perex/alsa.git#mm

commit 
Author: Takashi Iwai <tiwai at suse.de>
Date:   Mon Dec 3 17:08:40 2007 +0100

    [ALSA] echoaudio - convert from semaphore to mutex
    
    Converted from semaphore to mutex.
    
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 78c3ffce0da390847c18daabfe49d4d457b2149f
Author: Andy Shevchenko <andy at smile.org.ua>
Date:   Mon Dec 3 16:50:58 2007 +0100

    [ALSA] hda-codec - Fix typo in the ALC883 initial code
    
    The attached patch should fix typo in auto initialization verbs for ALC883
    codec.
    
    Signed-off-by: Andy Shevchenko <andy at smile.org.ua>
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 91f02c16c74a1c151682ce4a33f9548e3227e4d0
Author: Pavel Hofman <dustin at seznam.cz>
Date:   Mon Dec 3 12:44:28 2007 +0100

    [ALSA] switching rate in STAC9460 codec of Prodigy192
    
    * support for switching rate in STAC9460 - using set_rate_val of the akm
    infrastructure
    * listing all STAC9460 registers in proc
    * disabling mpu401 device for Prodigy192 - otherwise the currently
      flawed mpu401 code hangs kernel when opening the midi device
    * removing old unused commented-out code
    
    Signed-off-by: Pavel Hofman <dustin at seznam.cz>
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 35b3a3c38a2a18c00e8e8f99fc1cb2dadf9eebd1
Author: Pavel Hofman <dustin at seznam.cz>
Date:   Mon Dec 3 12:37:17 2007 +0100

    [ALSA] I2C fix for ice1724
    
    adding i2c busy wait before sending device address to prevent reading
    bogus data.
    
    Signed-off-by: Pavel Hofman <dustin at seznam.cz>
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit f9129a53abcdfd700eef783d8179c4ce39dc0482
Author: Rene Herman <rene.herman at gmail.com>
Date:   Fri Nov 30 17:59:25 2007 +0100

    [ALSA] sound/isa: kill pnp_resource_change
    
    This removes the pnp_resource_change use from the ALSA ISAPnP drivers. In
    2.4 these were useful in providing an easy path to setting the resources,
    but in 2.6 they retain function as a layering violation only.
    This makes for a nice cleanup (-550 lines) of ALSA but moreover, ALSA is the
    only remaining user of pnp_init_resource_table(), pnp_resource_change() and
    pnp_manual_config_dev() (and, in fact, of 'struct pnp_resource_table') in
    the tree outide of drivers/pnp itself meaning it makes for more cleanup
    potential inside the PnP layer.
    Thomas Renninger acked their removal from that side, you did from the ALSA
    side (CC list just copied from that thread).
    Against current alsa-kernel HG. Many more potential cleanups in there, but
    this _only_ removes the pnp_resource_change code. Compile tested against
    current alsa-kernel HG and compile- and use-tested against 2.6.23.x (few
    offsets).
    Cc: Thomas Renninger <trenn at suse.de>
    
    Signed-off-by: Rene Herman <rene.herman at gmail.com>
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit da1cd2b5d7168e630972565308fd4207440ad3e6
Author: Julia Lawall <julia at diku.dk>
Date:   Wed Nov 28 11:58:56 2007 +0100

    [ALSA] sound/core/memalloc.c: Add missing pci_dev_put
    
    There should be a pci_dev_put when breaking out of a loop that iterates
    over calls to pci_get_device and similar functions.
    In this case, the return under the initial if needs a pci_dev_put in the
    same way that the return under the subsequent for loop has a pci_dev_put.
    This was fixed using the following semantic patch.
    // <smpl>
    @@
    type T;
    identifier d;
    expression e;
    @@
    T *d;
    ...
    while ((d = \(pci_get_device\|pci_get_device_reverse\|pci_get_subsys\|pci_get_class\)(..., d)) != NULL)
      {... when != pci_dev_put(d)
           when != e = d
    (
        return d;
    |
    +  pci_dev_put(d);
    ?  return ...;
    )
    ...}
    // </smpl>
    
    Signed-off-by: Julia Lawall <julia at diku.dk>
    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 43ee07cf0d4e3fe542626a5347e9c6161beb7f2c
Author: Takashi Iwai <tiwai at suse.de>
Date:   Tue Nov 27 15:27:17 2007 +0100

    [ALSA] ice1712 - Fix word clock status control on Delta 1010LT
    
    The 'Word Clock Status' control on Delta 1010LT checks the CS8427
    error register too strictly and almost always returns 1 (unlocked).
    It should check only the lock status bit.
    
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 3e534c100d03b4abad7848508cab8daab29824fe
Author: Daniel Mack <daniel at caiaq.de>
Date:   Mon Nov 26 09:00:56 2007 +0100

    [ALSA] usb-caiaq - add support for Kore controller 2
    
    Added support for Native Instrument's Kore controller 2. This device has
    no audio but MIDI, input devices and ALSA controllers only.
    
    Signed-off-by: Daniel Mack <daniel at caiaq.de>
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 82982081f1b2412d6d8e7a8869436809cf2c4e18
Author: Ville Syrjala <syrjala at sci.fi>
Date:   Mon Nov 26 08:58:24 2007 +0100

    [ALSA] soc/wm8731: Fix stereo mixer controls
    
    Disable the simultaneous load feature for the line in and headphone
    out volume registers. This allows left and right volume levels to
    be controlled separately.
    
    Signed-off-by: Ville Syrjala <syrjala at sci.fi>
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 8e43d0d0c58a8705cb7c8fb5b5ec03efef8643f7
Author: Takashi Iwai <tiwai at suse.de>
Date:   Mon Nov 26 08:58:48 2007 +0100

    [ALSA] drivers - Add missing snd_card_set_dev()
    
    Added the missing call of snd_card_set_dev() in drivers/*
    
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 8478fa3c825e1522cb516823090b1acc2c406af1
Author: Joe Perches <joe at perches.com>
Date:   Mon Nov 26 08:44:15 2007 +0100

    [ALSA] sound/isa: Add missing 'space'
    
    
    Signed-off-by: Joe Perches <joe at perches.com>
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit 27ab27100d74f0f5073fc8d50dea6aefffe20dda
Author: Takashi Iwai <tiwai at suse.de>
Date:   Mon Nov 26 08:45:43 2007 +0100

    [ALSA] emu10k1x - Add missing snd_card_set_dev call
    
    Added the missing snd_card_set_dev() call.  This will fix the incomplete
    sysfs entry for this card.
    
    Signed-off-by: Takashi Iwai <tiwai at suse.de>
    Signed-off-by: Jaroslav Kysela <perex at perex.cz>

commit ca23210387b188bd6cbce13e644822cdbd148eac
Author: Takashi Iwai <tiwai at suse.de>
Date:   Fri Nov 23 15:41:44 2007 +0100

    [ALSA] aoa - fix compile warning
    
    Set a proper error code in the error path of i2sbus_attach_codec().
[...21552 lines suppressed...]
 		input->keycodemax = ARRAY_SIZE(keycode_rk2);
-		for (i=0; i<ARRAY_SIZE(keycode_rk2); i++)
-			set_bit(keycode_rk2[i], input->keybit);
-
 		input_set_abs_params(input, ABS_X, 0, 4096, 0, 10);
 		input_set_abs_params(input, ABS_Y, 0, 4096, 0, 10);
 		input_set_abs_params(input, ABS_Z, 0, 4096, 0, 10);
 		snd_usb_caiaq_set_auto_msg(dev, 1, 10, 0);
 		break;
 	case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_RIGKONTROL3):
-		input->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
-		input->absbit[0] = BIT(ABS_X) | BIT(ABS_Y) | BIT(ABS_Z);
-		input->keycode = keycode_rk3;
-		input->keycodesize = sizeof(char);
+		input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
+		input->absbit[0] = BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) |
+			BIT_MASK(ABS_Z);
+		BUILD_BUG_ON(sizeof(dev->keycode) < sizeof(keycode_rk3));
+		memcpy(dev->keycode, keycode_rk3, sizeof(keycode_rk3));
 		input->keycodemax = ARRAY_SIZE(keycode_rk3);
-		for (i=0; i<ARRAY_SIZE(keycode_rk3); i++)
-			set_bit(keycode_rk3[i], input->keybit);
-
 		input_set_abs_params(input, ABS_X, 0, 1024, 0, 10);
 		input_set_abs_params(input, ABS_Y, 0, 1024, 0, 10);
 		input_set_abs_params(input, ABS_Z, 0, 1024, 0, 10);
@@ -231,21 +299,50 @@ int snd_usb_caiaq_input_init(struct snd_usb_caiaqdev *dev)
 	case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_AK1):
 		input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
 		input->absbit[0] = BIT_MASK(ABS_X);
-		input->keycode = keycode_ak1;
-		input->keycodesize = sizeof(char);
+		BUILD_BUG_ON(sizeof(dev->keycode) < sizeof(keycode_ak1));
+		memcpy(dev->keycode, keycode_ak1, sizeof(keycode_ak1));
 		input->keycodemax = ARRAY_SIZE(keycode_ak1);
-		for (i=0; i<ARRAY_SIZE(keycode_ak1); i++)
-			set_bit(keycode_ak1[i], input->keybit);
-
 		input_set_abs_params(input, ABS_X, 0, 999, 0, 10);
 		snd_usb_caiaq_set_auto_msg(dev, 1, 0, 5);
 		break;
+	case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_KORECONTROLLER):
+	case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_KORECONTROLLER2):
+		input->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
+		input->absbit[0] = BIT_MASK(ABS_HAT0X) | BIT_MASK(ABS_HAT0Y) |
+				   BIT_MASK(ABS_HAT1X) | BIT_MASK(ABS_HAT1Y) |
+				   BIT_MASK(ABS_HAT2X) | BIT_MASK(ABS_HAT2Y) |
+				   BIT_MASK(ABS_HAT3X) | BIT_MASK(ABS_HAT3Y) |
+				   BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) |
+				   BIT_MASK(ABS_Z);
+		input->absbit[BIT_WORD(ABS_MISC)] |= BIT_MASK(ABS_MISC);
+		BUILD_BUG_ON(sizeof(dev->keycode) < sizeof(keycode_kore));
+		memcpy(dev->keycode, keycode_kore, sizeof(keycode_kore));
+		input->keycodemax = ARRAY_SIZE(keycode_kore);
+		input_set_abs_params(input, ABS_HAT0X, 0, 999, 0, 10);
+		input_set_abs_params(input, ABS_HAT0Y, 0, 999, 0, 10);
+		input_set_abs_params(input, ABS_HAT1X, 0, 999, 0, 10);
+		input_set_abs_params(input, ABS_HAT1Y, 0, 999, 0, 10);
+		input_set_abs_params(input, ABS_HAT2X, 0, 999, 0, 10);
+		input_set_abs_params(input, ABS_HAT2Y, 0, 999, 0, 10);
+		input_set_abs_params(input, ABS_HAT3X, 0, 999, 0, 10);
+		input_set_abs_params(input, ABS_HAT3Y, 0, 999, 0, 10);
+		input_set_abs_params(input, ABS_X, 0, 4096, 0, 10);
+		input_set_abs_params(input, ABS_Y, 0, 4096, 0, 10);
+		input_set_abs_params(input, ABS_Z, 0, 4096, 0, 10);
+		input_set_abs_params(input, ABS_MISC, 0, 255, 0, 1);
+		snd_usb_caiaq_set_auto_msg(dev, 1, 10, 5);
+		break;
 	default:
 		/* no input methods supported on this device */
 		input_free_device(input);
 		return 0;
 	}
 
+	input->keycode = dev->keycode;
+	input->keycodesize = sizeof(unsigned short);
+	for (i = 0; i < input->keycodemax; i++)
+		__set_bit(dev->keycode[i], input->keybit);
+
 	ret = input_register_device(input);
 	if (ret < 0) {
 		input_free_device(input);
@@ -265,5 +362,3 @@ void snd_usb_caiaq_input_free(struct snd_usb_caiaqdev *dev)
 	dev->input_dev = NULL;
 }
 
-#endif /* CONFIG_SND_USB_CAIAQ_INPUT */
-
diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c
index 5e32969..1f1e91c 100644
--- a/sound/usb/usbmixer.c
+++ b/sound/usb/usbmixer.c
@@ -1703,6 +1703,11 @@ static void snd_usb_mixer_memory_change(struct usb_mixer_interface *mixer,
 	case 19: /* speaker out jacks */
 	case 20: /* headphones out jack */
 		break;
+	/* live24ext: 4 = line-in jack */
+	case 3:	/* hp-out jack (may actuate Mute) */
+		if (mixer->chip->usb_id == USB_ID(0x041e, 0x3040))
+			snd_usb_mixer_notify_id(mixer, mixer->rc_cfg->mute_mixer_id);
+		break;
 	default:
 		snd_printd(KERN_DEBUG "memory change in unknown unit %d\n", unitid);
 		break;
@@ -1951,6 +1956,9 @@ static int snd_audigy2nx_controls_create(struct usb_mixer_interface *mixer)
 	int i, err;
 
 	for (i = 0; i < ARRAY_SIZE(snd_audigy2nx_controls); ++i) {
+		if (i > 1 &&  /* Live24ext has 2 LEDs only */
+			mixer->chip->usb_id == USB_ID(0x041e, 0x3040))
+			break; 
 		err = snd_ctl_add(mixer->chip->card,
 				  snd_ctl_new1(&snd_audigy2nx_controls[i], mixer));
 		if (err < 0)
@@ -1963,28 +1971,42 @@ static int snd_audigy2nx_controls_create(struct usb_mixer_interface *mixer)
 static void snd_audigy2nx_proc_read(struct snd_info_entry *entry,
 				    struct snd_info_buffer *buffer)
 {
-	static const struct {
+	static const struct sb_jack {
 		int unitid;
 		const char *name;
-	} jacks[] = {
+	}  jacks_audigy2nx[] = {
 		{4,  "dig in "},
 		{7,  "line in"},
 		{19, "spk out"},
 		{20, "hph out"},
+		{-1, NULL}
+	}, jacks_live24ext[] = {
+		{4,  "line in"}, /* &1=Line, &2=Mic*/
+		{3,  "hph out"}, /* headphones */
+		{0,  "RC     "}, /* last command, 6 bytes see rc_config above */
+		{-1, NULL}
 	};
+	const struct sb_jack *jacks;
 	struct usb_mixer_interface *mixer = entry->private_data;
 	int i, err;
 	u8 buf[3];
 
 	snd_iprintf(buffer, "%s jacks\n\n", mixer->chip->card->shortname);
-	for (i = 0; i < ARRAY_SIZE(jacks); ++i) {
+	if (mixer->chip->usb_id == USB_ID(0x041e, 0x3020))
+		jacks = jacks_audigy2nx;
+	else if (mixer->chip->usb_id == USB_ID(0x041e, 0x3040))
+		jacks = jacks_live24ext;
+	else
+		return;
+
+	for (i = 0; jacks[i].name; ++i) {
 		snd_iprintf(buffer, "%s: ", jacks[i].name);
 		err = snd_usb_ctl_msg(mixer->chip->dev,
 				      usb_rcvctrlpipe(mixer->chip->dev, 0),
 				      GET_MEM, USB_DIR_IN | USB_TYPE_CLASS |
 				      USB_RECIP_INTERFACE, 0,
 				      jacks[i].unitid << 8, buf, 3, 100);
-		if (err == 3 && buf[0] == 3)
+		if (err == 3 && (buf[0] == 3 || buf[0] == 6))
 			snd_iprintf(buffer, "%02x %02x\n", buf[1], buf[2]);
 		else
 			snd_iprintf(buffer, "?\n");
@@ -2022,7 +2044,8 @@ int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif)
 	if ((err = snd_usb_soundblaster_remote_init(mixer)) < 0)
 		goto _error;
 
-	if (mixer->chip->usb_id == USB_ID(0x041e, 0x3020)) {
+	if (mixer->chip->usb_id == USB_ID(0x041e, 0x3020) ||
+	    mixer->chip->usb_id == USB_ID(0x041e, 0x3040)) {
 		struct snd_info_entry *entry;
 
 		if ((err = snd_audigy2nx_controls_create(mixer)) < 0)
diff --git a/sound/usb/usbmixer_maps.c b/sound/usb/usbmixer_maps.c
index 7c4dcb3..d755be0 100644
--- a/sound/usb/usbmixer_maps.c
+++ b/sound/usb/usbmixer_maps.c
@@ -187,6 +187,13 @@ static struct usbmix_selector_map audigy2nx_selectors[] = {
 	{ 0 } /* terminator */
 };
 
+/* Creative SoundBlaster Live! 24-bit External */
+static struct usbmix_name_map live24ext_map[] = {
+	/* 2: PCM Playback Volume */
+	{ 5, "Mic Capture" }, /* FU, default PCM Capture Volume */
+	{ 0 } /* terminator */
+};
+
 /* LineX FM Transmitter entry - needed to bypass controls bug */
 static struct usbmix_name_map linex_map[] = {
 	/* 1: IT pcm */
@@ -273,6 +280,10 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = {
 		.map = audigy2nx_map,
 		.selector_map = audigy2nx_selectors,
 	},
+ 	{
+		.id = USB_ID(0x041e, 0x3040),
+		.map = live24ext_map,
+	},
 	{
 		/* Hercules DJ Console (Windows Edition) */
 		.id = USB_ID(0x06f8, 0xb000),


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.292
retrieving revision 1.293
diff -u -r1.292 -r1.293
--- kernel.spec	11 Dec 2007 16:26:59 -0000	1.292
+++ kernel.spec	11 Dec 2007 20:53:59 -0000	1.293
@@ -579,6 +579,7 @@
 Patch75: linux-2.6-x86-debug-boot.patch
 Patch76: linux-2.6-x86-clean-up-oops-bug-reports.patch
 
+Patch85: linux-2.6-alsa-rc4-mm1.patch
 Patch86: linux-2.6-alsa-support-sis7019.patch
 
 Patch100: linux-2.6-g5-therm-shutdown.patch
@@ -1071,6 +1072,8 @@
 
 # ALSA
 #
+# upstream ALSA
+ApplyPatch linux-2.6-alsa-rc4-mm1.patch
 # SiS 7019 support
 ApplyPatch linux-2.6-alsa-support-sis7019.patch
 
@@ -1736,6 +1739,9 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL} -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf %{with_xen} xen
 
 %changelog
+* Tue Dec 11 2007 Chuck Ebbert <cebbert at redhat.com>
+- ALSA update
+
 * Tue Dec 11 2007 Kyle McMartin <kmcmartin at redhat.com>
 - 2.6.24-rc5
 - remove linux-2.6-firewire-ohci-1.0-iso-receive.patch, merged in -rc5




More information about the fedora-extras-commits mailing list