|
@@ -63,11 +63,6 @@ MODULE_PARM_DESC(enable, "Enable ad1816a based soundcard.");
|
|
|
module_param_array(clockfreq, int, NULL, 0444);
|
|
|
MODULE_PARM_DESC(clockfreq, "Clock frequency for ad1816a driver (default = 0).");
|
|
|
|
|
|
-struct snd_card_ad1816a {
|
|
|
- struct pnp_dev *dev;
|
|
|
- struct pnp_dev *devmpu;
|
|
|
-};
|
|
|
-
|
|
|
static struct pnp_card_device_id snd_ad1816a_pnpids[] = {
|
|
|
/* Analog Devices AD1815 */
|
|
|
{ .id = "ADS7150", .devs = { { .id = "ADS7150" }, { .id = "ADS7151" } } },
|
|
@@ -99,25 +94,16 @@ MODULE_DEVICE_TABLE(pnp_card, snd_ad1816a_pnpids);
|
|
|
#define DRIVER_NAME "snd-card-ad1816a"
|
|
|
|
|
|
|
|
|
-static int __devinit snd_card_ad1816a_pnp(int dev, struct snd_card_ad1816a *acard,
|
|
|
- struct pnp_card_link *card,
|
|
|
+static int __devinit snd_card_ad1816a_pnp(int dev, struct pnp_card_link *card,
|
|
|
const struct pnp_card_device_id *id)
|
|
|
{
|
|
|
struct pnp_dev *pdev;
|
|
|
int err;
|
|
|
|
|
|
- acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
|
|
|
- if (acard->dev == NULL)
|
|
|
+ pdev = pnp_request_card_device(card, id->devs[0].id, NULL);
|
|
|
+ if (pdev == NULL)
|
|
|
return -EBUSY;
|
|
|
|
|
|
- acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL);
|
|
|
- if (acard->devmpu == NULL) {
|
|
|
- mpu_port[dev] = -1;
|
|
|
- snd_printk(KERN_WARNING PFX "MPU401 device busy, skipping.\n");
|
|
|
- }
|
|
|
-
|
|
|
- pdev = acard->dev;
|
|
|
-
|
|
|
err = pnp_activate_dev(pdev);
|
|
|
if (err < 0) {
|
|
|
printk(KERN_ERR PFX "AUDIO PnP configure failure\n");
|
|
@@ -130,16 +116,17 @@ static int __devinit snd_card_ad1816a_pnp(int dev, struct snd_card_ad1816a *acar
|
|
|
dma2[dev] = pnp_dma(pdev, 1);
|
|
|
irq[dev] = pnp_irq(pdev, 0);
|
|
|
|
|
|
- if (acard->devmpu == NULL)
|
|
|
+ pdev = pnp_request_card_device(card, id->devs[1].id, NULL);
|
|
|
+ if (pdev == NULL) {
|
|
|
+ mpu_port[dev] = -1;
|
|
|
+ snd_printk(KERN_WARNING PFX "MPU401 device busy, skipping.\n");
|
|
|
return 0;
|
|
|
-
|
|
|
- pdev = acard->devmpu;
|
|
|
+ }
|
|
|
|
|
|
err = pnp_activate_dev(pdev);
|
|
|
if (err < 0) {
|
|
|
printk(KERN_ERR PFX "MPU401 PnP configure failure\n");
|
|
|
mpu_port[dev] = -1;
|
|
|
- acard->devmpu = NULL;
|
|
|
} else {
|
|
|
mpu_port[dev] = pnp_port_start(pdev, 0);
|
|
|
mpu_irq[dev] = pnp_irq(pdev, 0);
|
|
@@ -153,18 +140,17 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
|
|
|
{
|
|
|
int error;
|
|
|
struct snd_card *card;
|
|
|
- struct snd_card_ad1816a *acard;
|
|
|
struct snd_ad1816a *chip;
|
|
|
struct snd_opl3 *opl3;
|
|
|
struct snd_timer *timer;
|
|
|
|
|
|
error = snd_card_create(index[dev], id[dev], THIS_MODULE,
|
|
|
- sizeof(struct snd_card_ad1816a), &card);
|
|
|
+ sizeof(struct snd_ad1816a), &card);
|
|
|
if (error < 0)
|
|
|
return error;
|
|
|
- acard = card->private_data;
|
|
|
+ chip = card->private_data;
|
|
|
|
|
|
- if ((error = snd_card_ad1816a_pnp(dev, acard, pcard, pid))) {
|
|
|
+ if ((error = snd_card_ad1816a_pnp(dev, pcard, pid))) {
|
|
|
snd_card_free(card);
|
|
|
return error;
|
|
|
}
|
|
@@ -174,7 +160,7 @@ static int __devinit snd_card_ad1816a_probe(int dev, struct pnp_card_link *pcard
|
|
|
irq[dev],
|
|
|
dma1[dev],
|
|
|
dma2[dev],
|
|
|
- &chip)) < 0) {
|
|
|
+ chip)) < 0) {
|
|
|
snd_card_free(card);
|
|
|
return error;
|
|
|
}
|