ALSA: ctxfi - Allow unknown PCI SSIDs
Allow unknown PCI SSIDs for emu20k1 and emu20k2 as "unknown" model. Also, add a black-list check in case any device has to be listed as "unsupported". It has a negative value in the pci quirk entry. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
		
					parent
					
						
							
								8dca419721
							
						
					
				
			
			
				commit
				
					
						a8f4310be5
					
				
			
		
					 2 changed files with 22 additions and 6 deletions
				
			
		| 
						 | 
					@ -46,8 +46,6 @@ static struct snd_pci_quirk __devinitdata subsys_20k1_list[] = {
 | 
				
			||||||
	SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, 0x0031, "SB073x", CTSB073X),
 | 
						SND_PCI_QUIRK(PCI_VENDOR_ID_CREATIVE, 0x0031, "SB073x", CTSB073X),
 | 
				
			||||||
	SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_CREATIVE, 0xf000, 0x6000,
 | 
						SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_CREATIVE, 0xf000, 0x6000,
 | 
				
			||||||
			   "UAA", CTUAA),
 | 
								   "UAA", CTUAA),
 | 
				
			||||||
	SND_PCI_QUIRK_VENDOR(PCI_VENDOR_ID_CREATIVE,
 | 
					 | 
				
			||||||
			     "Unknown", CT20K1_UNKNOWN),
 | 
					 | 
				
			||||||
	{ } /* terminator */
 | 
						{ } /* terminator */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -67,13 +65,16 @@ static struct snd_pci_quirk __devinitdata subsys_20k2_list[] = {
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static const char *ct_subsys_name[NUM_CTCARDS] = {
 | 
					static const char *ct_subsys_name[NUM_CTCARDS] = {
 | 
				
			||||||
 | 
						/* 20k1 models */
 | 
				
			||||||
	[CTSB055X]	= "SB055x",
 | 
						[CTSB055X]	= "SB055x",
 | 
				
			||||||
	[CTSB073X]	= "SB073x",
 | 
						[CTSB073X]	= "SB073x",
 | 
				
			||||||
	[CTSB0760]	= "SB076x",
 | 
					 | 
				
			||||||
	[CTUAA]		= "UAA",
 | 
						[CTUAA]		= "UAA",
 | 
				
			||||||
	[CT20K1_UNKNOWN] = "Unknown",
 | 
						[CT20K1_UNKNOWN] = "Unknown",
 | 
				
			||||||
 | 
						/* 20k2 models */
 | 
				
			||||||
 | 
						[CTSB0760]	= "SB076x",
 | 
				
			||||||
	[CTHENDRIX]	= "Hendrix",
 | 
						[CTHENDRIX]	= "Hendrix",
 | 
				
			||||||
	[CTSB0880]	= "SB0880",
 | 
						[CTSB0880]	= "SB0880",
 | 
				
			||||||
 | 
						[CT20K2_UNKNOWN] = "Unknown",
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct {
 | 
					static struct {
 | 
				
			||||||
| 
						 | 
					@ -1240,9 +1241,21 @@ static int __devinit atc_identify_card(struct ct_atc *atc)
 | 
				
			||||||
		return -ENOENT;
 | 
							return -ENOENT;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	p = snd_pci_quirk_lookup(atc->pci, list);
 | 
						p = snd_pci_quirk_lookup(atc->pci, list);
 | 
				
			||||||
	if (!p)
 | 
						if (p) {
 | 
				
			||||||
 | 
							if (p->value < 0) {
 | 
				
			||||||
 | 
								printk(KERN_ERR "ctxfi: "
 | 
				
			||||||
 | 
								       "Device %04x:%04x is black-listed\n",
 | 
				
			||||||
 | 
								       atc->pci->subsystem_vendor,
 | 
				
			||||||
 | 
								       atc->pci->subsystem_device);
 | 
				
			||||||
			return -ENOENT;
 | 
								return -ENOENT;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		atc->model = p->value;
 | 
							atc->model = p->value;
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							if (atc->chip_type == ATC20K1)
 | 
				
			||||||
 | 
								atc->model = CT20K1_UNKNOWN;
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								atc->model = CT20K2_UNKNOWN;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	atc->model_name = ct_subsys_name[atc->model];
 | 
						atc->model_name = ct_subsys_name[atc->model];
 | 
				
			||||||
	snd_printd("ctxfi: chip %s model %s (%04x:%04x) is found\n",
 | 
						snd_printd("ctxfi: chip %s model %s (%04x:%04x) is found\n",
 | 
				
			||||||
		   atc->chip_name, atc->model_name,
 | 
							   atc->chip_name, atc->model_name,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,13 +30,16 @@ enum CHIPTYP {
 | 
				
			||||||
enum CTCARDS {
 | 
					enum CTCARDS {
 | 
				
			||||||
	/* 20k1 models */
 | 
						/* 20k1 models */
 | 
				
			||||||
	CTSB055X,
 | 
						CTSB055X,
 | 
				
			||||||
 | 
						CT20K1_MODEL_FIRST = CTSB055X,
 | 
				
			||||||
	CTSB073X,
 | 
						CTSB073X,
 | 
				
			||||||
	CTUAA,
 | 
						CTUAA,
 | 
				
			||||||
	CT20K1_UNKNOWN,
 | 
						CT20K1_UNKNOWN,
 | 
				
			||||||
	/* 20k2 models */
 | 
						/* 20k2 models */
 | 
				
			||||||
	CTSB0760,
 | 
						CTSB0760,
 | 
				
			||||||
 | 
						CT20K2_MODEL_FIRST = CTSB0760,
 | 
				
			||||||
	CTHENDRIX,
 | 
						CTHENDRIX,
 | 
				
			||||||
	CTSB0880,
 | 
						CTSB0880,
 | 
				
			||||||
 | 
						CT20K2_UNKNOWN,
 | 
				
			||||||
	NUM_CTCARDS		/* This should always be the last */
 | 
						NUM_CTCARDS		/* This should always be the last */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue