Lines Matching refs:cs5535au
63 static void wait_till_cmd_acked(struct cs5535audio *cs5535au, unsigned long timeout)
67 tmp = cs_readl(cs5535au, ACC_CODEC_CNTL);
73 dev_err(cs5535au->card->dev,
77 static unsigned short snd_cs5535audio_codec_read(struct cs5535audio *cs5535au,
88 cs_writel(cs5535au, ACC_CODEC_CNTL, regdata);
89 wait_till_cmd_acked(cs5535au, 50);
93 val = cs_readl(cs5535au, ACC_CODEC_STATUS);
99 dev_err(cs5535au->card->dev,
106 static void snd_cs5535audio_codec_write(struct cs5535audio *cs5535au,
117 cs_writel(cs5535au, ACC_CODEC_CNTL, regdata);
118 wait_till_cmd_acked(cs5535au, 50);
124 struct cs5535audio *cs5535au = ac97->private_data;
125 snd_cs5535audio_codec_write(cs5535au, reg, val);
131 struct cs5535audio *cs5535au = ac97->private_data;
132 return snd_cs5535audio_codec_read(cs5535au, reg);
135 static int snd_cs5535audio_mixer(struct cs5535audio *cs5535au)
137 struct snd_card *card = cs5535au->card;
153 ac97.private_data = cs5535au;
154 ac97.pci = cs5535au->pci;
159 err = snd_ac97_mixer(pbus, &ac97, &cs5535au->ac97);
165 snd_ac97_tune_hardware(cs5535au->ac97, ac97_quirks, ac97_quirk);
167 err = olpc_quirks(card, cs5535au->ac97);
176 static void process_bm0_irq(struct cs5535audio *cs5535au)
179 spin_lock(&cs5535au->reg_lock);
180 bm_stat = cs_readb(cs5535au, ACC_BM0_STATUS);
181 spin_unlock(&cs5535au->reg_lock);
183 snd_pcm_period_elapsed(cs5535au->playback_substream);
185 dev_err(cs5535au->card->dev,
191 static void process_bm1_irq(struct cs5535audio *cs5535au)
194 spin_lock(&cs5535au->reg_lock);
195 bm_stat = cs_readb(cs5535au, ACC_BM1_STATUS);
196 spin_unlock(&cs5535au->reg_lock);
198 snd_pcm_period_elapsed(cs5535au->capture_substream);
205 struct cs5535audio *cs5535au = dev_id;
207 if (cs5535au == NULL)
210 acc_irq_stat = cs_readw(cs5535au, ACC_IRQ_STATUS);
218 cs_readl(cs5535au, ACC_GPIO_STATUS);
221 cs_readl(cs5535au, ACC_GPIO_STATUS);
224 process_bm0_irq(cs5535au);
227 process_bm1_irq(cs5535au);
230 dev_err(cs5535au->card->dev,
248 struct cs5535audio *cs5535au = card->private_data;
260 spin_lock_init(&cs5535au->reg_lock);
261 cs5535au->card = card;
262 cs5535au->pci = pci;
263 cs5535au->irq = -1;
269 cs5535au->port = pci_resource_start(pci, 0);
272 IRQF_SHARED, KBUILD_MODNAME, cs5535au)) {
277 cs5535au->irq = pci->irq;
278 card->sync_irq = cs5535au->irq;
289 struct cs5535audio *cs5535au;
300 sizeof(*cs5535au), &card);
303 cs5535au = card->private_data;
310 err = snd_cs5535audio_mixer(cs5535au);
314 err = snd_cs5535audio_pcm(cs5535au);
323 cs5535au->port, cs5535au->irq);