Lines Matching refs:devptr
207 static int sc6000_write(struct device *devptr, char __iomem *vport, int cmd) in sc6000_write() argument
224 dev_err(devptr, "DSP Command (0x%x) timeout.\n", cmd); in sc6000_write()
229 static int sc6000_dsp_get_answer(struct device *devptr, in sc6000_dsp_get_answer() argument
235 if (sc6000_write(devptr, vport, command)) { in sc6000_dsp_get_answer()
236 dev_err(devptr, "CMD 0x%x: failed!\n", command); in sc6000_dsp_get_answer()
269 static int sc6000_hw_cfg_write(struct device *devptr, in sc6000_hw_cfg_write() argument
272 if (sc6000_write(devptr, vport, COMMAND_6C) < 0) { in sc6000_hw_cfg_write()
273 dev_warn(devptr, "CMD 0x%x: failed!\n", COMMAND_6C); in sc6000_hw_cfg_write()
276 if (sc6000_write(devptr, vport, COMMAND_5C) < 0) { in sc6000_hw_cfg_write()
277 dev_err(devptr, "CMD 0x%x: failed!\n", COMMAND_5C); in sc6000_hw_cfg_write()
280 if (sc6000_write(devptr, vport, cfg[0]) < 0) { in sc6000_hw_cfg_write()
281 dev_err(devptr, "DATA 0x%x: failed!\n", cfg[0]); in sc6000_hw_cfg_write()
284 if (sc6000_write(devptr, vport, cfg[1]) < 0) { in sc6000_hw_cfg_write()
285 dev_err(devptr, "DATA 0x%x: failed!\n", cfg[1]); in sc6000_hw_cfg_write()
288 if (sc6000_write(devptr, vport, COMMAND_C5) < 0) { in sc6000_hw_cfg_write()
289 dev_err(devptr, "CMD 0x%x: failed!\n", COMMAND_C5); in sc6000_hw_cfg_write()
296 static int sc6000_cfg_write(struct device *devptr, in sc6000_cfg_write() argument
300 if (sc6000_write(devptr, vport, WRITE_MDIRQ_CFG)) { in sc6000_cfg_write()
301 dev_err(devptr, "CMD 0x%x: failed!\n", WRITE_MDIRQ_CFG); in sc6000_cfg_write()
304 if (sc6000_write(devptr, vport, softcfg)) { in sc6000_cfg_write()
305 dev_err(devptr, "%s: failed!\n", __func__); in sc6000_cfg_write()
311 static int sc6000_setup_board(struct device *devptr, in sc6000_setup_board() argument
317 if (sc6000_write(devptr, vport, COMMAND_88)) { in sc6000_setup_board()
318 dev_err(devptr, "CMD 0x%x: failed!\n", in sc6000_setup_board()
325 dev_err(devptr, "sc6000_read after CMD 0x%x: failed\n", in sc6000_setup_board()
330 if (sc6000_cfg_write(devptr, vport, config)) in sc6000_setup_board()
336 static int sc6000_init_mss(struct device *devptr, in sc6000_init_mss() argument
340 if (sc6000_write(devptr, vport, DSP_INIT_MSS)) { in sc6000_init_mss()
341 dev_err(devptr, "%s [0x%x]: failed!\n", __func__, in sc6000_init_mss()
348 if (sc6000_cfg_write(devptr, vport, config)) in sc6000_init_mss()
356 static void sc6000_hw_cfg_encode(struct device *devptr, in sc6000_hw_cfg_encode() argument
376 dev_dbg(devptr, "hw cfg %x, %x\n", cfg[0], cfg[1]); in sc6000_hw_cfg_encode()
379 static int sc6000_init_board(struct device *devptr, in sc6000_init_board() argument
394 dev_err(devptr, "sc6000_dsp_reset: failed!\n"); in sc6000_init_board()
399 err = sc6000_dsp_get_answer(devptr, vport, GET_DSP_COPYRIGHT, answer, 15); in sc6000_init_board()
401 dev_err(devptr, "sc6000_dsp_copyright: failed!\n"); in sc6000_init_board()
409 dev_warn(devptr, "Warning: non SC-6000 audio card!\n"); in sc6000_init_board()
411 if (sc6000_dsp_get_answer(devptr, vport, GET_DSP_VERSION, version, 2) < 2) { in sc6000_init_board()
412 dev_err(devptr, "sc6000_dsp_version: failed!\n"); in sc6000_init_board()
415 dev_info(devptr, "Detected model: %s, DSP version %d.%d\n", in sc6000_init_board()
419 sc6000_write(devptr, vport, COMMAND_5C); in sc6000_init_board()
425 sc6000_hw_cfg_encode(devptr, in sc6000_init_board()
428 if (sc6000_hw_cfg_write(devptr, vport, cfg) < 0) { in sc6000_init_board()
429 dev_err(devptr, "sc6000_hw_cfg_write: failed!\n"); in sc6000_init_board()
433 err = sc6000_setup_board(devptr, vport, config); in sc6000_init_board()
435 dev_err(devptr, "sc6000_setup_board: failed!\n"); in sc6000_init_board()
442 sc6000_write(devptr, vport, COMMAND_60); in sc6000_init_board()
443 sc6000_write(devptr, vport, 0x02); in sc6000_init_board()
447 err = sc6000_setup_board(devptr, vport, config); in sc6000_init_board()
449 dev_err(devptr, "sc6000_setup_board: failed!\n"); in sc6000_init_board()
452 err = sc6000_init_mss(devptr, vport, config, vmss_port, mss_config); in sc6000_init_board()
454 dev_err(devptr, "Cannot initialize Microsoft Sound System mode.\n"); in sc6000_init_board()
496 static int snd_sc6000_match(struct device *devptr, unsigned int dev) in snd_sc6000_match() argument
501 dev_err(devptr, "specify IO port\n"); in snd_sc6000_match()
505 dev_err(devptr, "specify MSS port\n"); in snd_sc6000_match()
509 dev_err(devptr, "Port must be 0x220 or 0x240\n"); in snd_sc6000_match()
513 dev_err(devptr, "MSS port must be 0x530 or 0xe80\n"); in snd_sc6000_match()
517 dev_err(devptr, "invalid IRQ %d\n", irq[dev]); in snd_sc6000_match()
521 dev_err(devptr, "invalid DMA %d\n", dma[dev]); in snd_sc6000_match()
526 dev_err(devptr, "invalid MPU-401 port %lx\n", in snd_sc6000_match()
533 dev_err(devptr, "invalid MPU-401 IRQ %d\n", mpu_irq[dev]); in snd_sc6000_match()
547 static int __snd_sc6000_probe(struct device *devptr, unsigned int dev) in __snd_sc6000_probe() argument
560 err = snd_devm_card_new(devptr, index[dev], id[dev], THIS_MODULE, in __snd_sc6000_probe()
568 dev_err(devptr, "unable to find a free IRQ\n"); in __snd_sc6000_probe()
576 dev_err(devptr, "unable to find a free DMA\n"); in __snd_sc6000_probe()
581 if (!devm_request_region(devptr, port[dev], 0x10, DRV_NAME)) { in __snd_sc6000_probe()
582 dev_err(devptr, "I/O port region is already in use.\n"); in __snd_sc6000_probe()
585 vport = devm_ioport_map(devptr, port[dev], 0x10); in __snd_sc6000_probe()
587 dev_err(devptr, "I/O port cannot be iomapped.\n"); in __snd_sc6000_probe()
593 if (!devm_request_region(devptr, mss_port[dev], 4, DRV_NAME)) { in __snd_sc6000_probe()
594 dev_err(devptr, in __snd_sc6000_probe()
598 vmss_port = devm_ioport_map(devptr, mss_port[dev], 4); in __snd_sc6000_probe()
600 dev_err(devptr, "MSS port I/O cannot be iomapped.\n"); in __snd_sc6000_probe()
604 dev_dbg(devptr, "Initializing BASE[0x%lx] IRQ[%d] DMA[%d] MIRQ[%d]\n", in __snd_sc6000_probe()
608 err = sc6000_init_board(devptr, vport, vmss_port, dev); in __snd_sc6000_probe()
620 dev_err(devptr, "error creating new WSS PCM device\n"); in __snd_sc6000_probe()
625 dev_err(devptr, "error creating new WSS mixer\n"); in __snd_sc6000_probe()
630 dev_err(devptr, "the mixer rewrite failed\n"); in __snd_sc6000_probe()
636 dev_err(devptr, "no OPL device at 0x%x-0x%x ?\n", in __snd_sc6000_probe()
651 dev_err(devptr, "no MPU-401 device at 0x%lx ?\n", in __snd_sc6000_probe()
664 dev_set_drvdata(devptr, card); in __snd_sc6000_probe()
668 static int snd_sc6000_probe(struct device *devptr, unsigned int dev) in snd_sc6000_probe() argument
670 return snd_card_free_on_error(devptr, __snd_sc6000_probe(devptr, dev)); in snd_sc6000_probe()