aaci               37 sound/arm/aaci.c static void aaci_ac97_select_codec(struct aaci *aaci, struct snd_ac97 *ac97)
aaci               39 sound/arm/aaci.c 	u32 v, maincr = aaci->maincr | MAINCR_SCRA(ac97->num);
aaci               44 sound/arm/aaci.c 	v = readl(aaci->base + AACI_SLFR);
aaci               46 sound/arm/aaci.c 		readl(aaci->base + AACI_SL2RX);
aaci               48 sound/arm/aaci.c 		readl(aaci->base + AACI_SL1RX);
aaci               50 sound/arm/aaci.c 	if (maincr != readl(aaci->base + AACI_MAINCR)) {
aaci               51 sound/arm/aaci.c 		writel(maincr, aaci->base + AACI_MAINCR);
aaci               52 sound/arm/aaci.c 		readl(aaci->base + AACI_MAINCR);
aaci               69 sound/arm/aaci.c 	struct aaci *aaci = ac97->private_data;
aaci               76 sound/arm/aaci.c 	mutex_lock(&aaci->ac97_sem);
aaci               78 sound/arm/aaci.c 	aaci_ac97_select_codec(aaci, ac97);
aaci               84 sound/arm/aaci.c 	writel(val << 4, aaci->base + AACI_SL2TX);
aaci               85 sound/arm/aaci.c 	writel(reg << 12, aaci->base + AACI_SL1TX);
aaci               94 sound/arm/aaci.c 		v = readl(aaci->base + AACI_SLFR);
aaci               98 sound/arm/aaci.c 		dev_err(&aaci->dev->dev,
aaci              101 sound/arm/aaci.c 	mutex_unlock(&aaci->ac97_sem);
aaci              109 sound/arm/aaci.c 	struct aaci *aaci = ac97->private_data;
aaci              116 sound/arm/aaci.c 	mutex_lock(&aaci->ac97_sem);
aaci              118 sound/arm/aaci.c 	aaci_ac97_select_codec(aaci, ac97);
aaci              123 sound/arm/aaci.c 	writel((reg << 12) | (1 << 19), aaci->base + AACI_SL1TX);
aaci              132 sound/arm/aaci.c 		v = readl(aaci->base + AACI_SLFR);
aaci              136 sound/arm/aaci.c 		dev_err(&aaci->dev->dev, "timeout on slot 1 TX busy\n");
aaci              149 sound/arm/aaci.c 		v = readl(aaci->base + AACI_SLFR) & (SLFR_1RXV|SLFR_2RXV);
aaci              153 sound/arm/aaci.c 		dev_err(&aaci->dev->dev, "timeout on RX valid\n");
aaci              159 sound/arm/aaci.c 		v = readl(aaci->base + AACI_SL1RX) >> 12;
aaci              161 sound/arm/aaci.c 			v = readl(aaci->base + AACI_SL2RX) >> 4;
aaci              164 sound/arm/aaci.c 			dev_warn(&aaci->dev->dev,
aaci              168 sound/arm/aaci.c 			dev_warn(&aaci->dev->dev,
aaci              175 sound/arm/aaci.c 	mutex_unlock(&aaci->ac97_sem);
aaci              196 sound/arm/aaci.c static void aaci_fifo_irq(struct aaci *aaci, int channel, u32 mask)
aaci              199 sound/arm/aaci.c 		dev_warn(&aaci->dev->dev, "RX overrun on chan %d\n", channel);
aaci              200 sound/arm/aaci.c 		writel(ICLR_RXOEC1 << channel, aaci->base + AACI_INTCLR);
aaci              204 sound/arm/aaci.c 		dev_warn(&aaci->dev->dev, "RX timeout on chan %d\n", channel);
aaci              205 sound/arm/aaci.c 		writel(ICLR_RXTOFEC1 << channel, aaci->base + AACI_INTCLR);
aaci              209 sound/arm/aaci.c 		struct aaci_runtime *aacirun = &aaci->capture;
aaci              214 sound/arm/aaci.c 			dev_warn(&aaci->dev->dev, "RX interrupt???\n");
aaci              264 sound/arm/aaci.c 		dev_dbg(&aaci->dev->dev, "TX underrun on chan %d\n", channel);
aaci              265 sound/arm/aaci.c 		writel(ICLR_TXUEC1 << channel, aaci->base + AACI_INTCLR);
aaci              269 sound/arm/aaci.c 		struct aaci_runtime *aacirun = &aaci->playback;
aaci              274 sound/arm/aaci.c 			dev_warn(&aaci->dev->dev, "TX interrupt???\n");
aaci              326 sound/arm/aaci.c 	struct aaci *aaci = devid;
aaci              330 sound/arm/aaci.c 	mask = readl(aaci->base + AACI_ALLINTS);
aaci              335 sound/arm/aaci.c 				aaci_fifo_irq(aaci, i, m);
aaci              384 sound/arm/aaci.c 	struct aaci *aaci = rule->private;
aaci              388 sound/arm/aaci.c 	slots = aaci->ac97_bus->pcms[0].r[0].slots;
aaci              402 sound/arm/aaci.c 	struct aaci *aaci = substream->private_data;
aaci              407 sound/arm/aaci.c 		aacirun = &aaci->playback;
aaci              409 sound/arm/aaci.c 		aacirun = &aaci->capture;
aaci              424 sound/arm/aaci.c 					  aaci_rule_channels, aaci,
aaci              438 sound/arm/aaci.c 	runtime->hw.fifo_size = aaci->fifo_depth * 2;
aaci              440 sound/arm/aaci.c 	mutex_lock(&aaci->irq_lock);
aaci              441 sound/arm/aaci.c 	if (!aaci->users++) {
aaci              442 sound/arm/aaci.c 		ret = request_irq(aaci->dev->irq[0], aaci_irq,
aaci              443 sound/arm/aaci.c 			   IRQF_SHARED, DRIVER_NAME, aaci);
aaci              445 sound/arm/aaci.c 			aaci->users--;
aaci              447 sound/arm/aaci.c 	mutex_unlock(&aaci->irq_lock);
aaci              458 sound/arm/aaci.c 	struct aaci *aaci = substream->private_data;
aaci              465 sound/arm/aaci.c 	mutex_lock(&aaci->irq_lock);
aaci              466 sound/arm/aaci.c 	if (!--aaci->users)
aaci              467 sound/arm/aaci.c 		free_irq(aaci->dev->irq[0], aaci);
aaci              468 sound/arm/aaci.c 	mutex_unlock(&aaci->irq_lock);
aaci              523 sound/arm/aaci.c 		struct aaci *aaci = substream->private_data;
aaci              537 sound/arm/aaci.c 		aacirun->fifo_bytes = aaci->fifo_depth * 4 / 2;
aaci              723 sound/arm/aaci.c 	struct aaci *aaci = substream->private_data;
aaci              728 sound/arm/aaci.c 	aaci_ac97_write(aaci->ac97, AC97_EXTENDED_STATUS, 0x0001); /* VRA */
aaci              729 sound/arm/aaci.c 	aaci_ac97_write(aaci->ac97, AC97_PCM_LR_ADC_RATE, runtime->rate);
aaci              730 sound/arm/aaci.c 	aaci_ac97_write(aaci->ac97, AC97_PCM_MIC_ADC_RATE, runtime->rate);
aaci              733 sound/arm/aaci.c 	aaci_ac97_write(aaci->ac97, AC97_REC_SEL, 0x0404);
aaci              755 sound/arm/aaci.c 	struct aaci *aaci = card->private_data;
aaci              831 sound/arm/aaci.c static int aaci_probe_ac97(struct aaci *aaci)
aaci              841 sound/arm/aaci.c 	writel(0, aaci->base + AACI_RESET);
aaci              843 sound/arm/aaci.c 	writel(RESET_NRST, aaci->base + AACI_RESET);
aaci              851 sound/arm/aaci.c 	ret = snd_ac97_bus(aaci->card, 0, &aaci_bus_ops, aaci, &ac97_bus);
aaci              856 sound/arm/aaci.c 	aaci->ac97_bus = ac97_bus;
aaci              859 sound/arm/aaci.c 	ac97_template.private_data = aaci;
aaci              866 sound/arm/aaci.c 	aaci->ac97 = ac97;
aaci              878 sound/arm/aaci.c 	aaci->playback.pcm = &ac97_bus->pcms[0];
aaci              879 sound/arm/aaci.c 	aaci->capture.pcm  = &ac97_bus->pcms[1];
aaci              887 sound/arm/aaci.c 	struct aaci *aaci = card->private_data;
aaci              889 sound/arm/aaci.c 	iounmap(aaci->base);
aaci              892 sound/arm/aaci.c static struct aaci *aaci_init_card(struct amba_device *dev)
aaci              894 sound/arm/aaci.c 	struct aaci *aaci;
aaci              899 sound/arm/aaci.c 			   THIS_MODULE, sizeof(struct aaci), &card);
aaci              912 sound/arm/aaci.c 	aaci = card->private_data;
aaci              913 sound/arm/aaci.c 	mutex_init(&aaci->ac97_sem);
aaci              914 sound/arm/aaci.c 	mutex_init(&aaci->irq_lock);
aaci              915 sound/arm/aaci.c 	aaci->card = card;
aaci              916 sound/arm/aaci.c 	aaci->dev = dev;
aaci              919 sound/arm/aaci.c 	aaci->maincr = MAINCR_IE | MAINCR_SL1RXEN | MAINCR_SL1TXEN |
aaci              922 sound/arm/aaci.c 	return aaci;
aaci              925 sound/arm/aaci.c static int aaci_init_pcm(struct aaci *aaci)
aaci              930 sound/arm/aaci.c 	ret = snd_pcm_new(aaci->card, "AACI AC'97", 0, 1, 1, &pcm);
aaci              932 sound/arm/aaci.c 		aaci->pcm = pcm;
aaci              933 sound/arm/aaci.c 		pcm->private_data = aaci;
aaci              941 sound/arm/aaci.c 						      aaci->card->dev,
aaci              948 sound/arm/aaci.c static unsigned int aaci_size_fifo(struct aaci *aaci)
aaci              950 sound/arm/aaci.c 	struct aaci_runtime *aacirun = &aaci->playback;
aaci              969 sound/arm/aaci.c 	writel(aaci->maincr & ~MAINCR_IE, aaci->base + AACI_MAINCR);
aaci              970 sound/arm/aaci.c 	readl(aaci->base + AACI_MAINCR);
aaci              972 sound/arm/aaci.c 	writel(aaci->maincr, aaci->base + AACI_MAINCR);
aaci              987 sound/arm/aaci.c 	struct aaci *aaci;
aaci              994 sound/arm/aaci.c 	aaci = aaci_init_card(dev);
aaci              995 sound/arm/aaci.c 	if (!aaci) {
aaci             1000 sound/arm/aaci.c 	aaci->base = ioremap(dev->res.start, resource_size(&dev->res));
aaci             1001 sound/arm/aaci.c 	if (!aaci->base) {
aaci             1009 sound/arm/aaci.c 	spin_lock_init(&aaci->playback.lock);
aaci             1010 sound/arm/aaci.c 	aaci->playback.base = aaci->base + AACI_CSCH1;
aaci             1011 sound/arm/aaci.c 	aaci->playback.fifo = aaci->base + AACI_DR1;
aaci             1016 sound/arm/aaci.c 	spin_lock_init(&aaci->capture.lock);
aaci             1017 sound/arm/aaci.c 	aaci->capture.base = aaci->base + AACI_CSCH1;
aaci             1018 sound/arm/aaci.c 	aaci->capture.fifo = aaci->base + AACI_DR1;
aaci             1021 sound/arm/aaci.c 		void __iomem *base = aaci->base + i * 0x14;
aaci             1028 sound/arm/aaci.c 	writel(0x1fff, aaci->base + AACI_INTCLR);
aaci             1029 sound/arm/aaci.c 	writel(aaci->maincr, aaci->base + AACI_MAINCR);
aaci             1034 sound/arm/aaci.c 	readl(aaci->base + AACI_CSCH1);
aaci             1035 sound/arm/aaci.c 	ret = aaci_probe_ac97(aaci);
aaci             1043 sound/arm/aaci.c 	aaci->fifo_depth = aaci_size_fifo(aaci);
aaci             1044 sound/arm/aaci.c 	if (aaci->fifo_depth & 15) {
aaci             1046 sound/arm/aaci.c 		       aaci->fifo_depth);
aaci             1051 sound/arm/aaci.c 	ret = aaci_init_pcm(aaci);
aaci             1055 sound/arm/aaci.c 	ret = snd_card_register(aaci->card);
aaci             1057 sound/arm/aaci.c 		dev_info(&dev->dev, "%s\n", aaci->card->longname);
aaci             1058 sound/arm/aaci.c 		dev_info(&dev->dev, "FIFO %u entries\n", aaci->fifo_depth);
aaci             1059 sound/arm/aaci.c 		amba_set_drvdata(dev, aaci->card);
aaci             1064 sound/arm/aaci.c 	if (aaci)
aaci             1065 sound/arm/aaci.c 		snd_card_free(aaci->card);
aaci             1075 sound/arm/aaci.c 		struct aaci *aaci = card->private_data;
aaci             1076 sound/arm/aaci.c 		writel(0, aaci->base + AACI_MAINCR);