/* detection and initialization */ static int sc6000_hw_cfg_write(char __iomem *vport, const int *cfg) { if (sc6000_write(vport, COMMAND_6C) < 0) { snd_printk(KERN_WARNING "CMD 0x%x: failed!\n", COMMAND_6C); return -EIO; } if (sc6000_write(vport, COMMAND_5C) < 0) { snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_5C); return -EIO; } if (sc6000_write(vport, cfg[0]) < 0) { snd_printk(KERN_ERR "DATA 0x%x: failed!\n", cfg[0]); return -EIO; } if (sc6000_write(vport, cfg[1]) < 0) { snd_printk(KERN_ERR "DATA 0x%x: failed!\n", cfg[1]); return -EIO; } if (sc6000_write(vport, COMMAND_C5) < 0) { snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_C5); return -EIO; } return 0; }
/* detection and initialization */ static int __devinit sc6000_hw_cfg_write(char __iomem *vport, const int *cfg) { if (sc6000_write(vport, COMMAND_6C) < 0) { #ifdef CONFIG_DEBUG_PRINTK snd_printk(KERN_WARNING "CMD 0x%x: failed!\n", COMMAND_6C); #else ; #endif return -EIO; } if (sc6000_write(vport, COMMAND_5C) < 0) { snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_5C); return -EIO; } if (sc6000_write(vport, cfg[0]) < 0) { snd_printk(KERN_ERR "DATA 0x%x: failed!\n", cfg[0]); return -EIO; } if (sc6000_write(vport, cfg[1]) < 0) { snd_printk(KERN_ERR "DATA 0x%x: failed!\n", cfg[1]); return -EIO; } if (sc6000_write(vport, COMMAND_C5) < 0) { snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_C5); return -EIO; } return 0; }
/* detection and initialization */ static int __devinit sc6000_hw_cfg_write(char __iomem *vport, const int *cfg) { if (sc6000_write(vport, COMMAND_6C) < 0) { ; return -EIO; } if (sc6000_write(vport, COMMAND_5C) < 0) { ; return -EIO; } if (sc6000_write(vport, cfg[0]) < 0) { ; return -EIO; } if (sc6000_write(vport, cfg[1]) < 0) { ; return -EIO; } if (sc6000_write(vport, COMMAND_C5) < 0) { ; return -EIO; } return 0; }
static int sc6000_cfg_write(char __iomem *vport, unsigned char softcfg) { if (sc6000_write(vport, WRITE_MDIRQ_CFG)) { snd_printk(KERN_ERR "CMD 0x%x: failed!\n", WRITE_MDIRQ_CFG); return -EIO; } if (sc6000_write(vport, softcfg)) { snd_printk(KERN_ERR "sc6000_cfg_write: failed!\n"); return -EIO; } return 0; }
static int sc6000_cfg_write(char __iomem *vport, unsigned char softcfg) { if (sc6000_write(vport, WRITE_MDIRQ_CFG)) { ; return -EIO; } if (sc6000_write(vport, softcfg)) { ; return -EIO; } return 0; }
static int sc6000_dsp_get_answer(char __iomem *vport, int command, char *data, int data_len) { int len = 0; if (sc6000_write(vport, command)) { snd_printk(KERN_ERR "CMD 0x%x: failed!\n", command); return -EIO; } do { int val = sc6000_read(vport); if (val < 0) break; data[len++] = val; } while (len < data_len); /* * If no more data available, return to the caller, no error if len>0. * We have no other way to know when the string is finished. */ return len ? len : -EIO; }
static int sc6000_init_mss(char __iomem *vport, int config, char __iomem *vmss_port, int mss_config) { if (sc6000_write(vport, DSP_INIT_MSS)) { snd_printk(KERN_ERR "sc6000_init_mss [0x%x]: failed!\n", DSP_INIT_MSS); return -EIO; } msleep(10); if (sc6000_cfg_write(vport, config)) return -EIO; iowrite8(mss_config, vmss_port); return 0; }
static int sc6000_setup_board(char __iomem *vport, int config) { int loop = 10; do { if (sc6000_write(vport, COMMAND_88)) { snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_88); return -EIO; } } while ((sc6000_wait_data(vport) < 0) && loop--); if (sc6000_read(vport) < 0) { snd_printk(KERN_ERR "sc6000_read after CMD 0x%x: failed\n", COMMAND_88); return -EIO; } if (sc6000_cfg_write(vport, config)) return -ENODEV; return 0; }