ALSA: opti9xx: Use standard print API

Use the standard print API with dev_*() instead of the old house-baked
one.  It gives better information and allows dynamically control of
debug prints.

The card pointer is stored in struct snd_opti9xx and snd_miro to be
referred for dev_*() calls.

Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20240807133452.9424-30-tiwai@suse.de
This commit is contained in:
Takashi Iwai 2024-08-07 15:34:19 +02:00
parent 764a55bb8d
commit 40b15de3c4
3 changed files with 119 additions and 107 deletions

View File

@ -72,6 +72,7 @@
#define ACI_SET_EQ7 0x46 /* ... to Treble */ #define ACI_SET_EQ7 0x46 /* ... to Treble */
struct snd_miro_aci { struct snd_miro_aci {
struct snd_card *card;
unsigned long aci_port; unsigned long aci_port;
int aci_vendor; int aci_vendor;
int aci_product; int aci_product;

View File

@ -111,6 +111,7 @@ struct snd_miro {
long mpu_port; long mpu_port;
int mpu_irq; int mpu_irq;
struct snd_card *card;
struct snd_miro_aci *aci; struct snd_miro_aci *aci;
}; };
@ -151,8 +152,9 @@ static int aci_busy_wait(struct snd_miro_aci *aci)
byte = inb(aci->aci_port + ACI_REG_BUSY); byte = inb(aci->aci_port + ACI_REG_BUSY);
if ((byte & 1) == 0) { if ((byte & 1) == 0) {
if (timeout >= ACI_MINTIME) if (timeout >= ACI_MINTIME)
snd_printd("aci ready in round %ld.\n", dev_dbg(aci->card->dev,
timeout-ACI_MINTIME); "aci ready in round %ld.\n",
timeout-ACI_MINTIME);
return byte; return byte;
} }
if (timeout >= ACI_MINTIME) { if (timeout >= ACI_MINTIME) {
@ -174,7 +176,7 @@ static int aci_busy_wait(struct snd_miro_aci *aci)
} }
} }
} }
snd_printk(KERN_ERR "aci_busy_wait() time out\n"); dev_err(aci->card->dev, "%s() time out\n", __func__);
return -EBUSY; return -EBUSY;
} }
@ -184,7 +186,7 @@ static inline int aci_write(struct snd_miro_aci *aci, unsigned char byte)
outb(byte, aci->aci_port + ACI_REG_COMMAND); outb(byte, aci->aci_port + ACI_REG_COMMAND);
return 0; return 0;
} else { } else {
snd_printk(KERN_ERR "aci busy, aci_write(0x%x) stopped.\n", byte); dev_err(aci->card->dev, "aci busy, %s(0x%x) stopped.\n", __func__, byte);
return -EBUSY; return -EBUSY;
} }
} }
@ -197,7 +199,7 @@ static inline int aci_read(struct snd_miro_aci *aci)
byte = inb(aci->aci_port + ACI_REG_STATUS); byte = inb(aci->aci_port + ACI_REG_STATUS);
return byte; return byte;
} else { } else {
snd_printk(KERN_ERR "aci busy, aci_read() stopped.\n"); dev_err(aci->card->dev, "aci busy, %s() stopped.\n", __func__);
return -EBUSY; return -EBUSY;
} }
} }
@ -260,8 +262,8 @@ static int snd_miro_get_capture(struct snd_kcontrol *kcontrol,
value = aci_getvalue(miro->aci, ACI_S_GENERAL); value = aci_getvalue(miro->aci, ACI_S_GENERAL);
if (value < 0) { if (value < 0) {
snd_printk(KERN_ERR "snd_miro_get_capture() failed: %d\n", dev_err(miro->card->dev, "%s() failed: %d\n", __func__,
value); value);
return value; return value;
} }
@ -280,8 +282,8 @@ static int snd_miro_put_capture(struct snd_kcontrol *kcontrol,
error = aci_setvalue(miro->aci, ACI_SET_SOLOMODE, value); error = aci_setvalue(miro->aci, ACI_SET_SOLOMODE, value);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "snd_miro_put_capture() failed: %d\n", dev_err(miro->card->dev, "%s() failed: %d\n", __func__,
error); error);
return error; return error;
} }
@ -322,8 +324,8 @@ static int snd_miro_get_preamp(struct snd_kcontrol *kcontrol,
value = aci_getvalue(miro->aci, ACI_GET_PREAMP); value = aci_getvalue(miro->aci, ACI_GET_PREAMP);
if (value < 0) { if (value < 0) {
snd_printk(KERN_ERR "snd_miro_get_preamp() failed: %d\n", dev_err(miro->card->dev, "%s() failed: %d\n", __func__,
value); value);
return value; return value;
} }
@ -342,8 +344,8 @@ static int snd_miro_put_preamp(struct snd_kcontrol *kcontrol,
error = aci_setvalue(miro->aci, ACI_SET_PREAMP, value); error = aci_setvalue(miro->aci, ACI_SET_PREAMP, value);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "snd_miro_put_preamp() failed: %d\n", dev_err(miro->card->dev, "%s() failed: %d\n", __func__,
error); error);
return error; return error;
} }
@ -374,7 +376,8 @@ static int snd_miro_put_amp(struct snd_kcontrol *kcontrol,
error = aci_setvalue(miro->aci, ACI_SET_POWERAMP, value); error = aci_setvalue(miro->aci, ACI_SET_POWERAMP, value);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "snd_miro_put_amp() to %d failed: %d\n", value, error); dev_err(miro->card->dev, "%s() to %d failed: %d\n", __func__,
value, error);
return error; return error;
} }
@ -430,13 +433,15 @@ static int snd_miro_get_double(struct snd_kcontrol *kcontrol,
right_val = aci_getvalue(miro->aci, right_reg); right_val = aci_getvalue(miro->aci, right_reg);
if (right_val < 0) { if (right_val < 0) {
snd_printk(KERN_ERR "aci_getvalue(%d) failed: %d\n", right_reg, right_val); dev_err(miro->card->dev, "aci_getvalue(%d) failed: %d\n",
right_reg, right_val);
return right_val; return right_val;
} }
left_val = aci_getvalue(miro->aci, left_reg); left_val = aci_getvalue(miro->aci, left_reg);
if (left_val < 0) { if (left_val < 0) {
snd_printk(KERN_ERR "aci_getvalue(%d) failed: %d\n", left_reg, left_val); dev_err(miro->card->dev, "aci_getvalue(%d) failed: %d\n",
left_reg, left_val);
return left_val; return left_val;
} }
@ -489,13 +494,15 @@ static int snd_miro_put_double(struct snd_kcontrol *kcontrol,
left_old = aci_getvalue(aci, getreg_left); left_old = aci_getvalue(aci, getreg_left);
if (left_old < 0) { if (left_old < 0) {
snd_printk(KERN_ERR "aci_getvalue(%d) failed: %d\n", getreg_left, left_old); dev_err(miro->card->dev, "aci_getvalue(%d) failed: %d\n",
getreg_left, left_old);
return left_old; return left_old;
} }
right_old = aci_getvalue(aci, getreg_right); right_old = aci_getvalue(aci, getreg_right);
if (right_old < 0) { if (right_old < 0) {
snd_printk(KERN_ERR "aci_getvalue(%d) failed: %d\n", getreg_right, right_old); dev_err(miro->card->dev, "aci_getvalue(%d) failed: %d\n",
getreg_right, right_old);
return right_old; return right_old;
} }
@ -515,15 +522,15 @@ static int snd_miro_put_double(struct snd_kcontrol *kcontrol,
if (left >= 0) { if (left >= 0) {
error = aci_setvalue(aci, setreg_left, left); error = aci_setvalue(aci, setreg_left, left);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "aci_setvalue(%d) failed: %d\n", dev_err(miro->card->dev, "aci_setvalue(%d) failed: %d\n",
left, error); left, error);
return error; return error;
} }
} else { } else {
error = aci_setvalue(aci, setreg_left, 0x80 - left); error = aci_setvalue(aci, setreg_left, 0x80 - left);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "aci_setvalue(%d) failed: %d\n", dev_err(miro->card->dev, "aci_setvalue(%d) failed: %d\n",
0x80 - left, error); 0x80 - left, error);
return error; return error;
} }
} }
@ -531,15 +538,15 @@ static int snd_miro_put_double(struct snd_kcontrol *kcontrol,
if (right >= 0) { if (right >= 0) {
error = aci_setvalue(aci, setreg_right, right); error = aci_setvalue(aci, setreg_right, right);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "aci_setvalue(%d) failed: %d\n", dev_err(miro->card->dev, "aci_setvalue(%d) failed: %d\n",
right, error); right, error);
return error; return error;
} }
} else { } else {
error = aci_setvalue(aci, setreg_right, 0x80 - right); error = aci_setvalue(aci, setreg_right, 0x80 - right);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "aci_setvalue(%d) failed: %d\n", dev_err(miro->card->dev, "aci_setvalue(%d) failed: %d\n",
0x80 - right, error); 0x80 - right, error);
return error; return error;
} }
} }
@ -557,14 +564,14 @@ static int snd_miro_put_double(struct snd_kcontrol *kcontrol,
error = aci_setvalue(aci, setreg_left, 0x20 - left); error = aci_setvalue(aci, setreg_left, 0x20 - left);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "aci_setvalue(%d) failed: %d\n", dev_err(miro->card->dev, "aci_setvalue(%d) failed: %d\n",
0x20 - left, error); 0x20 - left, error);
return error; return error;
} }
error = aci_setvalue(aci, setreg_right, 0x20 - right); error = aci_setvalue(aci, setreg_right, 0x20 - right);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "aci_setvalue(%d) failed: %d\n", dev_err(miro->card->dev, "aci_setvalue(%d) failed: %d\n",
0x20 - right, error); 0x20 - right, error);
return error; return error;
} }
} }
@ -667,7 +674,7 @@ static int snd_set_aci_init_values(struct snd_miro *miro)
if ((aci->aci_product == 'A') && wss) { if ((aci->aci_product == 'A') && wss) {
error = aci_setvalue(aci, ACI_SET_WSS, wss); error = aci_setvalue(aci, ACI_SET_WSS, wss);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "enabling WSS mode failed\n"); dev_err(miro->card->dev, "enabling WSS mode failed\n");
return error; return error;
} }
} }
@ -677,7 +684,7 @@ static int snd_set_aci_init_values(struct snd_miro *miro)
if (ide) { if (ide) {
error = aci_setvalue(aci, ACI_SET_IDE, ide); error = aci_setvalue(aci, ACI_SET_IDE, ide);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "enabling IDE port failed\n"); dev_err(miro->card->dev, "enabling IDE port failed\n");
return error; return error;
} }
} }
@ -688,8 +695,8 @@ static int snd_set_aci_init_values(struct snd_miro *miro)
error = aci_setvalue(aci, aci_init_values[idx][0], error = aci_setvalue(aci, aci_init_values[idx][0],
aci_init_values[idx][1]); aci_init_values[idx][1]);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "aci_setvalue(%d) failed: %d\n", dev_err(miro->card->dev, "aci_setvalue(%d) failed: %d\n",
aci_init_values[idx][0], error); aci_init_values[idx][0], error);
return error; return error;
} }
} }
@ -805,7 +812,7 @@ static int snd_miro_init(struct snd_miro *chip,
break; break;
default: default:
snd_printk(KERN_ERR "sorry, no support for %d\n", hardware); dev_err(chip->card->dev, "sorry, no support for %d\n", hardware);
return -ENODEV; return -ENODEV;
} }
@ -836,7 +843,7 @@ static unsigned char snd_miro_read(struct snd_miro *chip,
break; break;
default: default:
snd_printk(KERN_ERR "sorry, no support for %d\n", chip->hardware); dev_err(chip->card->dev, "sorry, no support for %d\n", chip->hardware);
} }
spin_unlock_irqrestore(&chip->lock, flags); spin_unlock_irqrestore(&chip->lock, flags);
@ -866,7 +873,7 @@ static void snd_miro_write(struct snd_miro *chip, unsigned char reg,
break; break;
default: default:
snd_printk(KERN_ERR "sorry, no support for %d\n", chip->hardware); dev_err(chip->card->dev, "sorry, no support for %d\n", chip->hardware);
} }
spin_unlock_irqrestore(&chip->lock, flags); spin_unlock_irqrestore(&chip->lock, flags);
@ -1022,7 +1029,7 @@ static int snd_miro_configure(struct snd_miro *chip)
snd_miro_write_mask(chip, OPTi9XX_MC_REG(4), 0x00, 0x0c); snd_miro_write_mask(chip, OPTi9XX_MC_REG(4), 0x00, 0x0c);
break; break;
default: default:
snd_printk(KERN_ERR "chip %d not supported\n", chip->hardware); dev_err(chip->card->dev, "chip %d not supported\n", chip->hardware);
return -EINVAL; return -EINVAL;
} }
@ -1045,7 +1052,7 @@ static int snd_miro_configure(struct snd_miro *chip)
wss_base_bits = 0x02; wss_base_bits = 0x02;
break; break;
default: default:
snd_printk(KERN_ERR "WSS port 0x%lx not valid\n", chip->wss_base); dev_err(chip->card->dev, "WSS port 0x%lx not valid\n", chip->wss_base);
goto __skip_base; goto __skip_base;
} }
snd_miro_write_mask(chip, OPTi9XX_MC_REG(1), wss_base_bits << 4, 0x30); snd_miro_write_mask(chip, OPTi9XX_MC_REG(1), wss_base_bits << 4, 0x30);
@ -1068,7 +1075,7 @@ static int snd_miro_configure(struct snd_miro *chip)
irq_bits = 0x04; irq_bits = 0x04;
break; break;
default: default:
snd_printk(KERN_ERR "WSS irq # %d not valid\n", chip->irq); dev_err(chip->card->dev, "WSS irq # %d not valid\n", chip->irq);
goto __skip_resources; goto __skip_resources;
} }
@ -1083,12 +1090,12 @@ static int snd_miro_configure(struct snd_miro *chip)
dma_bits = 0x03; dma_bits = 0x03;
break; break;
default: default:
snd_printk(KERN_ERR "WSS dma1 # %d not valid\n", chip->dma1); dev_err(chip->card->dev, "WSS dma1 # %d not valid\n", chip->dma1);
goto __skip_resources; goto __skip_resources;
} }
if (chip->dma1 == chip->dma2) { if (chip->dma1 == chip->dma2) {
snd_printk(KERN_ERR "don't want to share dmas\n"); dev_err(chip->card->dev, "don't want to share dmas\n");
return -EBUSY; return -EBUSY;
} }
@ -1097,7 +1104,7 @@ static int snd_miro_configure(struct snd_miro *chip)
case 1: case 1:
break; break;
default: default:
snd_printk(KERN_ERR "WSS dma2 # %d not valid\n", chip->dma2); dev_err(chip->card->dev, "WSS dma2 # %d not valid\n", chip->dma2);
goto __skip_resources; goto __skip_resources;
} }
dma_bits |= 0x04; dma_bits |= 0x04;
@ -1125,8 +1132,8 @@ static int snd_miro_configure(struct snd_miro *chip)
mpu_port_bits = 0x00; mpu_port_bits = 0x00;
break; break;
default: default:
snd_printk(KERN_ERR "MPU-401 port 0x%lx not valid\n", dev_err(chip->card->dev, "MPU-401 port 0x%lx not valid\n",
chip->mpu_port); chip->mpu_port);
goto __skip_mpu; goto __skip_mpu;
} }
@ -1144,8 +1151,8 @@ static int snd_miro_configure(struct snd_miro *chip)
mpu_irq_bits = 0x01; mpu_irq_bits = 0x01;
break; break;
default: default:
snd_printk(KERN_ERR "MPU-401 irq # %d not valid\n", dev_err(chip->card->dev, "MPU-401 irq # %d not valid\n",
chip->mpu_irq); chip->mpu_irq);
goto __skip_mpu; goto __skip_mpu;
} }
@ -1208,6 +1215,7 @@ static int snd_card_miro_aci_detect(struct snd_card *card,
miro->aci = aci; miro->aci = aci;
aci->card = card;
mutex_init(&aci->aci_mutex); mutex_init(&aci->aci_mutex);
/* get ACI port from OPTi9xx MC 4 */ /* get ACI port from OPTi9xx MC 4 */
@ -1218,37 +1226,37 @@ static int snd_card_miro_aci_detect(struct snd_card *card,
miro->res_aci_port = miro->res_aci_port =
devm_request_region(card->dev, aci->aci_port, 3, "miro aci"); devm_request_region(card->dev, aci->aci_port, 3, "miro aci");
if (miro->res_aci_port == NULL) { if (miro->res_aci_port == NULL) {
snd_printk(KERN_ERR "aci i/o area 0x%lx-0x%lx already used.\n", dev_err(card->dev, "aci i/o area 0x%lx-0x%lx already used.\n",
aci->aci_port, aci->aci_port+2); aci->aci_port, aci->aci_port+2);
return -ENOMEM; return -ENOMEM;
} }
/* force ACI into a known state */ /* force ACI into a known state */
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
if (snd_aci_cmd(aci, ACI_ERROR_OP, -1, -1) < 0) { if (snd_aci_cmd(aci, ACI_ERROR_OP, -1, -1) < 0) {
snd_printk(KERN_ERR "can't force aci into known state.\n"); dev_err(card->dev, "can't force aci into known state.\n");
return -ENXIO; return -ENXIO;
} }
aci->aci_vendor = snd_aci_cmd(aci, ACI_READ_IDCODE, -1, -1); aci->aci_vendor = snd_aci_cmd(aci, ACI_READ_IDCODE, -1, -1);
aci->aci_product = snd_aci_cmd(aci, ACI_READ_IDCODE, -1, -1); aci->aci_product = snd_aci_cmd(aci, ACI_READ_IDCODE, -1, -1);
if (aci->aci_vendor < 0 || aci->aci_product < 0) { if (aci->aci_vendor < 0 || aci->aci_product < 0) {
snd_printk(KERN_ERR "can't read aci id on 0x%lx.\n", dev_err(card->dev, "can't read aci id on 0x%lx.\n",
aci->aci_port); aci->aci_port);
return -ENXIO; return -ENXIO;
} }
aci->aci_version = snd_aci_cmd(aci, ACI_READ_VERSION, -1, -1); aci->aci_version = snd_aci_cmd(aci, ACI_READ_VERSION, -1, -1);
if (aci->aci_version < 0) { if (aci->aci_version < 0) {
snd_printk(KERN_ERR "can't read aci version on 0x%lx.\n", dev_err(card->dev, "can't read aci version on 0x%lx.\n",
aci->aci_port); aci->aci_port);
return -ENXIO; return -ENXIO;
} }
if (snd_aci_cmd(aci, ACI_INIT, -1, -1) < 0 || if (snd_aci_cmd(aci, ACI_INIT, -1, -1) < 0 ||
snd_aci_cmd(aci, ACI_ERROR_OP, ACI_ERROR_OP, ACI_ERROR_OP) < 0 || snd_aci_cmd(aci, ACI_ERROR_OP, ACI_ERROR_OP, ACI_ERROR_OP) < 0 ||
snd_aci_cmd(aci, ACI_ERROR_OP, ACI_ERROR_OP, ACI_ERROR_OP) < 0) { snd_aci_cmd(aci, ACI_ERROR_OP, ACI_ERROR_OP, ACI_ERROR_OP) < 0) {
snd_printk(KERN_ERR "can't initialize aci.\n"); dev_err(card->dev, "can't initialize aci.\n");
return -ENXIO; return -ENXIO;
} }
@ -1268,14 +1276,14 @@ static int snd_miro_probe(struct snd_card *card)
miro->mc_base_size, miro->mc_base_size,
"miro (OPTi9xx MC)"); "miro (OPTi9xx MC)");
if (miro->res_mc_base == NULL) { if (miro->res_mc_base == NULL) {
snd_printk(KERN_ERR "request for OPTI9xx MC failed\n"); dev_err(card->dev, "request for OPTI9xx MC failed\n");
return -ENOMEM; return -ENOMEM;
} }
} }
error = snd_card_miro_aci_detect(card, miro); error = snd_card_miro_aci_detect(card, miro);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "unable to detect aci chip\n"); dev_err(card->dev, "unable to detect aci chip\n");
return -ENODEV; return -ENODEV;
} }
@ -1335,11 +1343,11 @@ static int snd_miro_probe(struct snd_card *card)
default: default:
sprintf(card->shortname, sprintf(card->shortname,
"unknown miro"); "unknown miro");
snd_printk(KERN_INFO "unknown miro aci id\n"); dev_info(card->dev, "unknown miro aci id\n");
break; break;
} }
} else { } else {
snd_printk(KERN_INFO "found unsupported aci card\n"); dev_info(card->dev, "found unsupported aci card\n");
sprintf(card->shortname, "unknown Cardinal Technologies"); sprintf(card->shortname, "unknown Cardinal Technologies");
} }
@ -1355,8 +1363,8 @@ static int snd_miro_probe(struct snd_card *card)
error = snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, error = snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401,
mpu_port, 0, miro->mpu_irq, &rmidi); mpu_port, 0, miro->mpu_irq, &rmidi);
if (error < 0) if (error < 0)
snd_printk(KERN_WARNING "no MPU-401 device at 0x%lx?\n", dev_warn(card->dev, "no MPU-401 device at 0x%lx?\n",
mpu_port); mpu_port);
} }
if (fm_port > 0 && fm_port != SNDRV_AUTO_PORT) { if (fm_port > 0 && fm_port != SNDRV_AUTO_PORT) {
@ -1365,8 +1373,8 @@ static int snd_miro_probe(struct snd_card *card)
if (snd_opl4_create(card, fm_port, fm_port - 8, if (snd_opl4_create(card, fm_port, fm_port - 8,
2, &opl3, &opl4) < 0) 2, &opl3, &opl4) < 0)
snd_printk(KERN_WARNING "no OPL4 device at 0x%lx\n", dev_warn(card->dev, "no OPL4 device at 0x%lx\n",
fm_port); fm_port);
} }
error = snd_set_aci_init_values(miro); error = snd_set_aci_init_values(miro);
@ -1410,14 +1418,14 @@ static int snd_miro_isa_probe(struct device *devptr, unsigned int n)
error = snd_card_miro_detect(card, miro); error = snd_card_miro_detect(card, miro);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "unable to detect OPTi9xx chip\n"); dev_err(card->dev, "unable to detect OPTi9xx chip\n");
return -ENODEV; return -ENODEV;
} }
if (port == SNDRV_AUTO_PORT) { if (port == SNDRV_AUTO_PORT) {
port = snd_legacy_find_free_ioport(possible_ports, 4); port = snd_legacy_find_free_ioport(possible_ports, 4);
if (port < 0) { if (port < 0) {
snd_printk(KERN_ERR "unable to find a free WSS port\n"); dev_err(card->dev, "unable to find a free WSS port\n");
return -EBUSY; return -EBUSY;
} }
} }
@ -1425,8 +1433,8 @@ static int snd_miro_isa_probe(struct device *devptr, unsigned int n)
if (mpu_port == SNDRV_AUTO_PORT) { if (mpu_port == SNDRV_AUTO_PORT) {
mpu_port = snd_legacy_find_free_ioport(possible_mpu_ports, 2); mpu_port = snd_legacy_find_free_ioport(possible_mpu_ports, 2);
if (mpu_port < 0) { if (mpu_port < 0) {
snd_printk(KERN_ERR dev_err(card->dev,
"unable to find a free MPU401 port\n"); "unable to find a free MPU401 port\n");
return -EBUSY; return -EBUSY;
} }
} }
@ -1434,29 +1442,29 @@ static int snd_miro_isa_probe(struct device *devptr, unsigned int n)
if (irq == SNDRV_AUTO_IRQ) { if (irq == SNDRV_AUTO_IRQ) {
irq = snd_legacy_find_free_irq(possible_irqs); irq = snd_legacy_find_free_irq(possible_irqs);
if (irq < 0) { if (irq < 0) {
snd_printk(KERN_ERR "unable to find a free IRQ\n"); dev_err(card->dev, "unable to find a free IRQ\n");
return -EBUSY; return -EBUSY;
} }
} }
if (mpu_irq == SNDRV_AUTO_IRQ) { if (mpu_irq == SNDRV_AUTO_IRQ) {
mpu_irq = snd_legacy_find_free_irq(possible_mpu_irqs); mpu_irq = snd_legacy_find_free_irq(possible_mpu_irqs);
if (mpu_irq < 0) { if (mpu_irq < 0) {
snd_printk(KERN_ERR dev_err(card->dev,
"unable to find a free MPU401 IRQ\n"); "unable to find a free MPU401 IRQ\n");
return -EBUSY; return -EBUSY;
} }
} }
if (dma1 == SNDRV_AUTO_DMA) { if (dma1 == SNDRV_AUTO_DMA) {
dma1 = snd_legacy_find_free_dma(possible_dma1s); dma1 = snd_legacy_find_free_dma(possible_dma1s);
if (dma1 < 0) { if (dma1 < 0) {
snd_printk(KERN_ERR "unable to find a free DMA1\n"); dev_err(card->dev, "unable to find a free DMA1\n");
return -EBUSY; return -EBUSY;
} }
} }
if (dma2 == SNDRV_AUTO_DMA) { if (dma2 == SNDRV_AUTO_DMA) {
dma2 = snd_legacy_find_free_dma(possible_dma2s[dma1 % 4]); dma2 = snd_legacy_find_free_dma(possible_dma2s[dma1 % 4]);
if (dma2 < 0) { if (dma2 < 0) {
snd_printk(KERN_ERR "unable to find a free DMA2\n"); dev_err(card->dev, "unable to find a free DMA2\n");
return -EBUSY; return -EBUSY;
} }
} }
@ -1505,14 +1513,14 @@ static int snd_card_miro_pnp(struct snd_miro *chip,
err = pnp_activate_dev(pdev); err = pnp_activate_dev(pdev);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "AUDIO pnp configure failure: %d\n", err); dev_err(chip->card->dev, "AUDIO pnp configure failure: %d\n", err);
return err; return err;
} }
err = pnp_activate_dev(devmc); err = pnp_activate_dev(devmc);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "MC pnp configure failure: %d\n", dev_err(chip->card->dev, "MC pnp configure failure: %d\n",
err); err);
return err; return err;
} }
@ -1533,7 +1541,7 @@ static int snd_card_miro_pnp(struct snd_miro *chip,
if (mpu_port > 0) { if (mpu_port > 0) {
err = pnp_activate_dev(devmpu); err = pnp_activate_dev(devmpu);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "MPU401 pnp configure failure\n"); dev_err(chip->card->dev, "MPU401 pnp configure failure\n");
mpu_port = -1; mpu_port = -1;
return err; return err;
} }
@ -1560,6 +1568,7 @@ static int snd_miro_pnp_probe(struct pnp_card_link *pcard,
return err; return err;
miro = card->private_data; miro = card->private_data;
miro->card = card;
err = snd_card_miro_pnp(miro, pcard, pid); err = snd_card_miro_pnp(miro, pcard, pid);
if (err) if (err)
@ -1572,7 +1581,7 @@ static int snd_miro_pnp_probe(struct pnp_card_link *pcard,
err = snd_miro_opti_check(card, miro); err = snd_miro_opti_check(card, miro);
if (err) { if (err) {
snd_printk(KERN_ERR "OPTI chip not found\n"); dev_err(card->dev, "OPTI chip not found\n");
return err; return err;
} }

View File

@ -109,6 +109,7 @@ MODULE_PARM_DESC(dma2, "2nd dma # for opti9xx driver.");
#endif /* OPTi93X */ #endif /* OPTi93X */
struct snd_opti9xx { struct snd_opti9xx {
struct snd_card *card;
unsigned short hardware; unsigned short hardware;
unsigned char password; unsigned char password;
char name[7]; char name[7];
@ -218,7 +219,7 @@ static int snd_opti9xx_init(struct snd_opti9xx *chip,
#endif /* OPTi93X */ #endif /* OPTi93X */
default: default:
snd_printk(KERN_ERR "chip %d not supported\n", hardware); dev_err(chip->card->dev, "chip %d not supported\n", hardware);
return -ENODEV; return -ENODEV;
} }
return 0; return 0;
@ -261,7 +262,7 @@ static unsigned char snd_opti9xx_read(struct snd_opti9xx *chip,
#endif /* OPTi93X */ #endif /* OPTi93X */
default: default:
snd_printk(KERN_ERR "chip %d not supported\n", chip->hardware); dev_err(chip->card->dev, "chip %d not supported\n", chip->hardware);
} }
spin_unlock_irqrestore(&chip->lock, flags); spin_unlock_irqrestore(&chip->lock, flags);
@ -304,7 +305,7 @@ static void snd_opti9xx_write(struct snd_opti9xx *chip, unsigned char reg,
#endif /* OPTi93X */ #endif /* OPTi93X */
default: default:
snd_printk(KERN_ERR "chip %d not supported\n", chip->hardware); dev_err(chip->card->dev, "chip %d not supported\n", chip->hardware);
} }
spin_unlock_irqrestore(&chip->lock, flags); spin_unlock_irqrestore(&chip->lock, flags);
@ -400,7 +401,7 @@ static int snd_opti9xx_configure(struct snd_opti9xx *chip,
#endif /* OPTi93X */ #endif /* OPTi93X */
default: default:
snd_printk(KERN_ERR "chip %d not supported\n", chip->hardware); dev_err(chip->card->dev, "chip %d not supported\n", chip->hardware);
return -EINVAL; return -EINVAL;
} }
@ -423,7 +424,7 @@ static int snd_opti9xx_configure(struct snd_opti9xx *chip,
wss_base_bits = 0x02; wss_base_bits = 0x02;
break; break;
default: default:
snd_printk(KERN_WARNING "WSS port 0x%lx not valid\n", port); dev_warn(chip->card->dev, "WSS port 0x%lx not valid\n", port);
goto __skip_base; goto __skip_base;
} }
snd_opti9xx_write_mask(chip, OPTi9XX_MC_REG(1), wss_base_bits << 4, 0x30); snd_opti9xx_write_mask(chip, OPTi9XX_MC_REG(1), wss_base_bits << 4, 0x30);
@ -448,7 +449,7 @@ static int snd_opti9xx_configure(struct snd_opti9xx *chip,
irq_bits = 0x04; irq_bits = 0x04;
break; break;
default: default:
snd_printk(KERN_WARNING "WSS irq # %d not valid\n", irq); dev_warn(chip->card->dev, "WSS irq # %d not valid\n", irq);
goto __skip_resources; goto __skip_resources;
} }
@ -463,13 +464,13 @@ static int snd_opti9xx_configure(struct snd_opti9xx *chip,
dma_bits = 0x03; dma_bits = 0x03;
break; break;
default: default:
snd_printk(KERN_WARNING "WSS dma1 # %d not valid\n", dma1); dev_warn(chip->card->dev, "WSS dma1 # %d not valid\n", dma1);
goto __skip_resources; goto __skip_resources;
} }
#if defined(CS4231) || defined(OPTi93X) #if defined(CS4231) || defined(OPTi93X)
if (dma1 == dma2) { if (dma1 == dma2) {
snd_printk(KERN_ERR "don't want to share dmas\n"); dev_err(chip->card->dev, "don't want to share dmas\n");
return -EBUSY; return -EBUSY;
} }
@ -478,7 +479,7 @@ static int snd_opti9xx_configure(struct snd_opti9xx *chip,
case 1: case 1:
break; break;
default: default:
snd_printk(KERN_WARNING "WSS dma2 # %d not valid\n", dma2); dev_warn(chip->card->dev, "WSS dma2 # %d not valid\n", dma2);
goto __skip_resources; goto __skip_resources;
} }
dma_bits |= 0x04; dma_bits |= 0x04;
@ -509,8 +510,8 @@ static int snd_opti9xx_configure(struct snd_opti9xx *chip,
mpu_port_bits = 0x00; mpu_port_bits = 0x00;
break; break;
default: default:
snd_printk(KERN_WARNING dev_warn(chip->card->dev,
"MPU-401 port 0x%lx not valid\n", mpu_port); "MPU-401 port 0x%lx not valid\n", mpu_port);
goto __skip_mpu; goto __skip_mpu;
} }
@ -528,8 +529,8 @@ static int snd_opti9xx_configure(struct snd_opti9xx *chip,
mpu_irq_bits = 0x01; mpu_irq_bits = 0x01;
break; break;
default: default:
snd_printk(KERN_WARNING "MPU-401 irq # %d not valid\n", dev_warn(chip->card->dev, "MPU-401 irq # %d not valid\n",
mpu_irq); mpu_irq);
goto __skip_mpu; goto __skip_mpu;
} }
@ -603,7 +604,7 @@ static int snd_opti93x_mixer(struct snd_wss *chip)
strcpy(id2.name, "CD Playback Switch"); strcpy(id2.name, "CD Playback Switch");
err = snd_ctl_rename_id(card, &id1, &id2); err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "Cannot rename opti93x control\n"); dev_err(card->dev, "Cannot rename opti93x control\n");
return err; return err;
} }
/* reassign AUX1 switch to FM */ /* reassign AUX1 switch to FM */
@ -611,7 +612,7 @@ static int snd_opti93x_mixer(struct snd_wss *chip)
strcpy(id2.name, "FM Playback Switch"); strcpy(id2.name, "FM Playback Switch");
err = snd_ctl_rename_id(card, &id1, &id2); err = snd_ctl_rename_id(card, &id1, &id2);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "Cannot rename opti93x control\n"); dev_err(card->dev, "Cannot rename opti93x control\n");
return err; return err;
} }
/* remove AUX1 volume */ /* remove AUX1 volume */
@ -740,7 +741,7 @@ static int snd_card_opti9xx_pnp(struct snd_opti9xx *chip,
err = pnp_activate_dev(pdev); err = pnp_activate_dev(pdev);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "AUDIO pnp configure failure: %d\n", err); dev_err(chip->card->dev, "AUDIO pnp configure failure: %d\n", err);
return err; return err;
} }
@ -757,7 +758,7 @@ static int snd_card_opti9xx_pnp(struct snd_opti9xx *chip,
err = pnp_activate_dev(devmc); err = pnp_activate_dev(devmc);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "MC pnp configure failure: %d\n", err); dev_err(chip->card->dev, "MC pnp configure failure: %d\n", err);
return err; return err;
} }
@ -781,7 +782,7 @@ static int snd_card_opti9xx_pnp(struct snd_opti9xx *chip,
if (devmpu && mpu_port > 0) { if (devmpu && mpu_port > 0) {
err = pnp_activate_dev(devmpu); err = pnp_activate_dev(devmpu);
if (err < 0) { if (err < 0) {
snd_printk(KERN_ERR "MPU401 pnp configure failure\n"); dev_err(chip->card->dev, "MPU401 pnp configure failure\n");
mpu_port = -1; mpu_port = -1;
} else { } else {
mpu_port = pnp_port_start(devmpu, 0); mpu_port = pnp_port_start(devmpu, 0);
@ -811,7 +812,7 @@ static int snd_opti9xx_probe(struct snd_card *card)
if (port == SNDRV_AUTO_PORT) { if (port == SNDRV_AUTO_PORT) {
port = snd_legacy_find_free_ioport(possible_ports, 4); port = snd_legacy_find_free_ioport(possible_ports, 4);
if (port < 0) { if (port < 0) {
snd_printk(KERN_ERR "unable to find a free WSS port\n"); dev_err(card->dev, "unable to find a free WSS port\n");
return -EBUSY; return -EBUSY;
} }
} }
@ -850,7 +851,7 @@ static int snd_opti9xx_probe(struct snd_card *card)
error = devm_request_irq(card->dev, irq, snd_opti93x_interrupt, error = devm_request_irq(card->dev, irq, snd_opti93x_interrupt,
0, DEV_NAME" - WSS", chip); 0, DEV_NAME" - WSS", chip);
if (error < 0) { if (error < 0) {
snd_printk(KERN_ERR "opti9xx: can't grab IRQ %d\n", irq); dev_err(card->dev, "opti9xx: can't grab IRQ %d\n", irq);
return error; return error;
} }
#endif #endif
@ -876,8 +877,8 @@ static int snd_opti9xx_probe(struct snd_card *card)
error = snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, error = snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401,
mpu_port, 0, mpu_irq, &rmidi); mpu_port, 0, mpu_irq, &rmidi);
if (error) if (error)
snd_printk(KERN_WARNING "no MPU-401 device at 0x%lx?\n", dev_warn(card->dev, "no MPU-401 device at 0x%lx?\n",
mpu_port); mpu_port);
} }
if (fm_port > 0 && fm_port != SNDRV_AUTO_PORT) { if (fm_port > 0 && fm_port != SNDRV_AUTO_PORT) {
@ -900,8 +901,8 @@ static int snd_opti9xx_probe(struct snd_card *card)
#endif /* !OPTi93X */ #endif /* !OPTi93X */
if (!opl3 && snd_opl3_create(card, fm_port, fm_port + 2, if (!opl3 && snd_opl3_create(card, fm_port, fm_port + 2,
OPL3_HW_AUTO, 0, &opl3) < 0) { OPL3_HW_AUTO, 0, &opl3) < 0) {
snd_printk(KERN_WARNING "no OPL device at 0x%lx-0x%lx\n", dev_warn(card->dev, "no OPL device at 0x%lx-0x%lx\n",
fm_port, fm_port + 4 - 1); fm_port, fm_port + 4 - 1);
} }
if (opl3) { if (opl3) {
error = snd_opl3_hwdep_new(opl3, 0, 1, &synth); error = snd_opl3_hwdep_new(opl3, 0, 1, &synth);
@ -958,28 +959,28 @@ static int snd_opti9xx_isa_probe(struct device *devptr,
if (mpu_port == SNDRV_AUTO_PORT) { if (mpu_port == SNDRV_AUTO_PORT) {
mpu_port = snd_legacy_find_free_ioport(possible_mpu_ports, 2); mpu_port = snd_legacy_find_free_ioport(possible_mpu_ports, 2);
if (mpu_port < 0) { if (mpu_port < 0) {
snd_printk(KERN_ERR "unable to find a free MPU401 port\n"); dev_err(devptr, "unable to find a free MPU401 port\n");
return -EBUSY; return -EBUSY;
} }
} }
if (irq == SNDRV_AUTO_IRQ) { if (irq == SNDRV_AUTO_IRQ) {
irq = snd_legacy_find_free_irq(possible_irqs); irq = snd_legacy_find_free_irq(possible_irqs);
if (irq < 0) { if (irq < 0) {
snd_printk(KERN_ERR "unable to find a free IRQ\n"); dev_err(devptr, "unable to find a free IRQ\n");
return -EBUSY; return -EBUSY;
} }
} }
if (mpu_irq == SNDRV_AUTO_IRQ) { if (mpu_irq == SNDRV_AUTO_IRQ) {
mpu_irq = snd_legacy_find_free_irq(possible_mpu_irqs); mpu_irq = snd_legacy_find_free_irq(possible_mpu_irqs);
if (mpu_irq < 0) { if (mpu_irq < 0) {
snd_printk(KERN_ERR "unable to find a free MPU401 IRQ\n"); dev_err(devptr, "unable to find a free MPU401 IRQ\n");
return -EBUSY; return -EBUSY;
} }
} }
if (dma1 == SNDRV_AUTO_DMA) { if (dma1 == SNDRV_AUTO_DMA) {
dma1 = snd_legacy_find_free_dma(possible_dma1s); dma1 = snd_legacy_find_free_dma(possible_dma1s);
if (dma1 < 0) { if (dma1 < 0) {
snd_printk(KERN_ERR "unable to find a free DMA1\n"); dev_err(devptr, "unable to find a free DMA1\n");
return -EBUSY; return -EBUSY;
} }
} }
@ -987,7 +988,7 @@ static int snd_opti9xx_isa_probe(struct device *devptr,
if (dma2 == SNDRV_AUTO_DMA) { if (dma2 == SNDRV_AUTO_DMA) {
dma2 = snd_legacy_find_free_dma(possible_dma2s[dma1 % 4]); dma2 = snd_legacy_find_free_dma(possible_dma2s[dma1 % 4]);
if (dma2 < 0) { if (dma2 < 0) {
snd_printk(KERN_ERR "unable to find a free DMA2\n"); dev_err(devptr, "unable to find a free DMA2\n");
return -EBUSY; return -EBUSY;
} }
} }
@ -1076,6 +1077,7 @@ static int snd_opti9xx_pnp_probe(struct pnp_card_link *pcard,
if (error < 0) if (error < 0)
return error; return error;
chip = card->private_data; chip = card->private_data;
chip->card = card;
hw = snd_card_opti9xx_pnp(chip, pcard, pid); hw = snd_card_opti9xx_pnp(chip, pcard, pid);
switch (hw) { switch (hw) {
@ -1097,7 +1099,7 @@ static int snd_opti9xx_pnp_probe(struct pnp_card_link *pcard,
return error; return error;
error = snd_opti9xx_read_check(card, chip); error = snd_opti9xx_read_check(card, chip);
if (error) { if (error) {
snd_printk(KERN_ERR "OPTI chip not found\n"); dev_err(card->dev, "OPTI chip not found\n");
return error; return error;
} }
error = snd_opti9xx_probe(card); error = snd_opti9xx_probe(card);