int mv88fx_snd_hw_init(struct mv88fx_snd_chip *chip) { /* Clear ints */ cs42l51_init(); mv88fx_snd_writel(chip, MV_AUDIO_INT_CAUSE_REG, 0xffffffff); mv88fx_snd_writel(chip, MV_AUDIO_INT_MASK_REG, 0); mv88fx_snd_writel(chip, MV_AUDIO_SPDIF_REC_INT_CAUSE_MASK_REG, 0); if (MV_OK != mvAudioInit()) return EIO; /* Disable all playback/recording */ mv88fx_snd_bitreset(chip, MV_AUDIO_PLAYBACK_CTRL_REG, (APCR_PLAY_I2S_ENABLE_MASK | APCR_PLAY_SPDIF_ENABLE_MASK)); mv88fx_snd_bitreset(chip, MV_AUDIO_RECORD_CTRL_REG, (ARCR_RECORD_SPDIF_EN_MASK | ARCR_RECORD_I2S_EN_MASK)); if (MV_OK != mvSPDIFRecordTclockSet()) { mv88fx_snd_debug("Marvell ALSA driver ERR. mvSPDIFRecordTclockSet failed\n"); return -ENOMEM; } return 0; }
static int mv88fx_i2_hw_init(int port) { mv88fx_snd_debug(""); mv88fx_snd_writel(mv88fx_i2s_info[port].base, MV_AUDIO_INT_CAUSE_REG(port), 0xffffffff); mv88fx_snd_writel(mv88fx_i2s_info[port].base, MV_AUDIO_INT_MASK_REG(port), 0); mv88fx_snd_writel(mv88fx_i2s_info[port].base, MV_AUDIO_SPDIF_REC_INT_CAUSE_MASK_REG(port), 0); // if (MV_OK != mvAudioInit(mv88fx_i2s_info.port)) // return -EIO; mvSysAudioInit(port); /* Disable all playback/recording */ mv88fx_snd_bitreset(mv88fx_i2s_info[port].base, MV_AUDIO_PLAYBACK_CTRL_REG(port), (APCR_PLAY_I2S_ENABLE_MASK | APCR_PLAY_SPDIF_ENABLE_MASK)); mv88fx_snd_bitreset(mv88fx_i2s_info[port].base, MV_AUDIO_RECORD_CTRL_REG(port), (ARCR_RECORD_SPDIF_EN_MASK | ARCR_RECORD_I2S_EN_MASK)); if (MV_OK != mvSPDIFRecordTclockSet(port)) { mv88fx_snd_error("mvSPDIFRecordTclockSet failed"); return -ENOMEM; } return 0; }