sound/arm/aaci.c
1004
aaci->fifo_depth = aaci_size_fifo(aaci);
sound/arm/aaci.c
1005
if (aaci->fifo_depth & 15) {
sound/arm/aaci.c
1007
aaci->fifo_depth);
sound/arm/aaci.c
1012
ret = aaci_init_pcm(aaci);
sound/arm/aaci.c
1016
ret = snd_card_register(aaci->card);
sound/arm/aaci.c
1018
dev_info(&dev->dev, "%s\n", aaci->card->longname);
sound/arm/aaci.c
1019
dev_info(&dev->dev, "FIFO %u entries\n", aaci->fifo_depth);
sound/arm/aaci.c
1020
amba_set_drvdata(dev, aaci->card);
sound/arm/aaci.c
1025
if (aaci)
sound/arm/aaci.c
1026
snd_card_free(aaci->card);
sound/arm/aaci.c
1036
struct aaci *aaci = card->private_data;
sound/arm/aaci.c
1037
writel(0, aaci->base + AACI_MAINCR);
sound/arm/aaci.c
107
struct aaci *aaci = ac97->private_data;
sound/arm/aaci.c
114
guard(mutex)(&aaci->ac97_sem);
sound/arm/aaci.c
116
aaci_ac97_select_codec(aaci, ac97);
sound/arm/aaci.c
121
writel((reg << 12) | (1 << 19), aaci->base + AACI_SL1TX);
sound/arm/aaci.c
130
v = readl(aaci->base + AACI_SLFR);
sound/arm/aaci.c
134
dev_err(&aaci->dev->dev, "timeout on slot 1 TX busy\n");
sound/arm/aaci.c
146
v = readl(aaci->base + AACI_SLFR) & (SLFR_1RXV|SLFR_2RXV);
sound/arm/aaci.c
150
dev_err(&aaci->dev->dev, "timeout on RX valid\n");
sound/arm/aaci.c
155
v = readl(aaci->base + AACI_SL1RX) >> 12;
sound/arm/aaci.c
157
v = readl(aaci->base + AACI_SL2RX) >> 4;
sound/arm/aaci.c
160
dev_warn(&aaci->dev->dev,
sound/arm/aaci.c
164
dev_warn(&aaci->dev->dev,
sound/arm/aaci.c
190
static void aaci_fifo_irq(struct aaci *aaci, int channel, u32 mask)
sound/arm/aaci.c
193
dev_warn(&aaci->dev->dev, "RX overrun on chan %d\n", channel);
sound/arm/aaci.c
194
writel(ICLR_RXOEC1 << channel, aaci->base + AACI_INTCLR);
sound/arm/aaci.c
198
dev_warn(&aaci->dev->dev, "RX timeout on chan %d\n", channel);
sound/arm/aaci.c
199
writel(ICLR_RXTOFEC1 << channel, aaci->base + AACI_INTCLR);
sound/arm/aaci.c
203
struct aaci_runtime *aacirun = &aaci->capture;
sound/arm/aaci.c
208
dev_warn(&aaci->dev->dev, "RX interrupt???\n");
sound/arm/aaci.c
256
dev_dbg(&aaci->dev->dev, "TX underrun on chan %d\n", channel);
sound/arm/aaci.c
257
writel(ICLR_TXUEC1 << channel, aaci->base + AACI_INTCLR);
sound/arm/aaci.c
261
struct aaci_runtime *aacirun = &aaci->playback;
sound/arm/aaci.c
266
dev_warn(&aaci->dev->dev, "TX interrupt???\n");
sound/arm/aaci.c
316
struct aaci *aaci = devid;
sound/arm/aaci.c
320
mask = readl(aaci->base + AACI_ALLINTS);
sound/arm/aaci.c
325
aaci_fifo_irq(aaci, i, m);
sound/arm/aaci.c
37
static void aaci_ac97_select_codec(struct aaci *aaci, struct snd_ac97 *ac97)
sound/arm/aaci.c
374
struct aaci *aaci = rule->private;
sound/arm/aaci.c
378
slots = aaci->ac97_bus->pcms[0].r[0].slots;
sound/arm/aaci.c
39
u32 v, maincr = aaci->maincr | MAINCR_SCRA(ac97->num);
sound/arm/aaci.c
392
struct aaci *aaci = substream->private_data;
sound/arm/aaci.c
397
aacirun = &aaci->playback;
sound/arm/aaci.c
399
aacirun = &aaci->capture;
sound/arm/aaci.c
414
aaci_rule_channels, aaci,
sound/arm/aaci.c
428
runtime->hw.fifo_size = aaci->fifo_depth * 2;
sound/arm/aaci.c
430
guard(mutex)(&aaci->irq_lock);
sound/arm/aaci.c
431
if (!aaci->users++) {
sound/arm/aaci.c
432
ret = request_irq(aaci->dev->irq[0], aaci_irq,
sound/arm/aaci.c
433
IRQF_SHARED, DRIVER_NAME, aaci);
sound/arm/aaci.c
435
aaci->users--;
sound/arm/aaci.c
44
v = readl(aaci->base + AACI_SLFR);
sound/arm/aaci.c
447
struct aaci *aaci = substream->private_data;
sound/arm/aaci.c
454
guard(mutex)(&aaci->irq_lock);
sound/arm/aaci.c
455
if (!--aaci->users)
sound/arm/aaci.c
456
free_irq(aaci->dev->irq[0], aaci);
sound/arm/aaci.c
46
readl(aaci->base + AACI_SL2RX);
sound/arm/aaci.c
48
readl(aaci->base + AACI_SL1RX);
sound/arm/aaci.c
488
struct aaci *aaci = substream->private_data;
sound/arm/aaci.c
50
if (maincr != readl(aaci->base + AACI_MAINCR)) {
sound/arm/aaci.c
51
writel(maincr, aaci->base + AACI_MAINCR);
sound/arm/aaci.c
516
aacirun->fifo_bytes = aaci->fifo_depth * 4 / 2;
sound/arm/aaci.c
52
readl(aaci->base + AACI_MAINCR);
sound/arm/aaci.c
69
struct aaci *aaci = ac97->private_data;
sound/arm/aaci.c
692
struct aaci *aaci = substream->private_data;
sound/arm/aaci.c
697
aaci_ac97_write(aaci->ac97, AC97_EXTENDED_STATUS, 0x0001); /* VRA */
sound/arm/aaci.c
698
aaci_ac97_write(aaci->ac97, AC97_PCM_LR_ADC_RATE, runtime->rate);
sound/arm/aaci.c
699
aaci_ac97_write(aaci->ac97, AC97_PCM_MIC_ADC_RATE, runtime->rate);
sound/arm/aaci.c
702
aaci_ac97_write(aaci->ac97, AC97_REC_SEL, 0x0404);
sound/arm/aaci.c
76
guard(mutex)(&aaci->ac97_sem);
sound/arm/aaci.c
78
aaci_ac97_select_codec(aaci, ac97);
sound/arm/aaci.c
792
static int aaci_probe_ac97(struct aaci *aaci)
sound/arm/aaci.c
802
writel(0, aaci->base + AACI_RESET);
sound/arm/aaci.c
804
writel(RESET_NRST, aaci->base + AACI_RESET);
sound/arm/aaci.c
812
ret = snd_ac97_bus(aaci->card, 0, &aaci_bus_ops, aaci, &ac97_bus);
sound/arm/aaci.c
817
aaci->ac97_bus = ac97_bus;
sound/arm/aaci.c
820
ac97_template.private_data = aaci;
sound/arm/aaci.c
827
aaci->ac97 = ac97;
sound/arm/aaci.c
839
aaci->playback.pcm = &ac97_bus->pcms[0];
sound/arm/aaci.c
84
writel(val << 4, aaci->base + AACI_SL2TX);
sound/arm/aaci.c
840
aaci->capture.pcm = &ac97_bus->pcms[1];
sound/arm/aaci.c
848
struct aaci *aaci = card->private_data;
sound/arm/aaci.c
85
writel(reg << 12, aaci->base + AACI_SL1TX);
sound/arm/aaci.c
850
iounmap(aaci->base);
sound/arm/aaci.c
853
static struct aaci *aaci_init_card(struct amba_device *dev)
sound/arm/aaci.c
855
struct aaci *aaci;
sound/arm/aaci.c
860
THIS_MODULE, sizeof(struct aaci), &card);
sound/arm/aaci.c
873
aaci = card->private_data;
sound/arm/aaci.c
874
mutex_init(&aaci->ac97_sem);
sound/arm/aaci.c
875
mutex_init(&aaci->irq_lock);
sound/arm/aaci.c
876
aaci->card = card;
sound/arm/aaci.c
877
aaci->dev = dev;
sound/arm/aaci.c
880
aaci->maincr = MAINCR_IE | MAINCR_SL1RXEN | MAINCR_SL1TXEN |
sound/arm/aaci.c
883
return aaci;
sound/arm/aaci.c
886
static int aaci_init_pcm(struct aaci *aaci)
sound/arm/aaci.c
891
ret = snd_pcm_new(aaci->card, "AACI AC'97", 0, 1, 1, &pcm);
sound/arm/aaci.c
893
aaci->pcm = pcm;
sound/arm/aaci.c
894
pcm->private_data = aaci;
sound/arm/aaci.c
902
aaci->card->dev,
sound/arm/aaci.c
909
static unsigned int aaci_size_fifo(struct aaci *aaci)
sound/arm/aaci.c
911
struct aaci_runtime *aacirun = &aaci->playback;
sound/arm/aaci.c
930
writel(aaci->maincr & ~MAINCR_IE, aaci->base + AACI_MAINCR);
sound/arm/aaci.c
931
readl(aaci->base + AACI_MAINCR);
sound/arm/aaci.c
933
writel(aaci->maincr, aaci->base + AACI_MAINCR);
sound/arm/aaci.c
94
v = readl(aaci->base + AACI_SLFR);
sound/arm/aaci.c
948
struct aaci *aaci;
sound/arm/aaci.c
955
aaci = aaci_init_card(dev);
sound/arm/aaci.c
956
if (!aaci) {
sound/arm/aaci.c
961
aaci->base = ioremap(dev->res.start, resource_size(&dev->res));
sound/arm/aaci.c
962
if (!aaci->base) {
sound/arm/aaci.c
970
spin_lock_init(&aaci->playback.lock);
sound/arm/aaci.c
971
aaci->playback.base = aaci->base + AACI_CSCH1;
sound/arm/aaci.c
972
aaci->playback.fifo = aaci->base + AACI_DR1;
sound/arm/aaci.c
977
spin_lock_init(&aaci->capture.lock);
sound/arm/aaci.c
978
aaci->capture.base = aaci->base + AACI_CSCH1;
sound/arm/aaci.c
979
aaci->capture.fifo = aaci->base + AACI_DR1;
sound/arm/aaci.c
98
dev_err(&aaci->dev->dev,
sound/arm/aaci.c
982
void __iomem *base = aaci->base + i * 0x14;
sound/arm/aaci.c
989
writel(0x1fff, aaci->base + AACI_INTCLR);
sound/arm/aaci.c
990
writel(aaci->maincr, aaci->base + AACI_MAINCR);
sound/arm/aaci.c
995
readl(aaci->base + AACI_CSCH1);
sound/arm/aaci.c
996
ret = aaci_probe_ac97(aaci);