diff options
Diffstat (limited to 'sound/arm')
-rw-r--r-- | sound/arm/aaci.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c index a148e275c80f..d0cead38d5fb 100644 --- a/sound/arm/aaci.c +++ b/sound/arm/aaci.c | |||
@@ -50,7 +50,11 @@ static void aaci_ac97_select_codec(struct aaci *aaci, struct snd_ac97 *ac97) | |||
50 | if (v & SLFR_1RXV) | 50 | if (v & SLFR_1RXV) |
51 | readl(aaci->base + AACI_SL1RX); | 51 | readl(aaci->base + AACI_SL1RX); |
52 | 52 | ||
53 | writel(maincr, aaci->base + AACI_MAINCR); | 53 | if (maincr != readl(aaci->base + AACI_MAINCR)) { |
54 | writel(maincr, aaci->base + AACI_MAINCR); | ||
55 | readl(aaci->base + AACI_MAINCR); | ||
56 | udelay(1); | ||
57 | } | ||
54 | } | 58 | } |
55 | 59 | ||
56 | /* | 60 | /* |
@@ -966,6 +970,8 @@ static unsigned int __devinit aaci_size_fifo(struct aaci *aaci) | |||
966 | * disabling the channel doesn't clear the FIFO. | 970 | * disabling the channel doesn't clear the FIFO. |
967 | */ | 971 | */ |
968 | writel(aaci->maincr & ~MAINCR_IE, aaci->base + AACI_MAINCR); | 972 | writel(aaci->maincr & ~MAINCR_IE, aaci->base + AACI_MAINCR); |
973 | readl(aaci->base + AACI_MAINCR); | ||
974 | udelay(1); | ||
969 | writel(aaci->maincr, aaci->base + AACI_MAINCR); | 975 | writel(aaci->maincr, aaci->base + AACI_MAINCR); |
970 | 976 | ||
971 | /* | 977 | /* |
@@ -978,7 +984,8 @@ static unsigned int __devinit aaci_size_fifo(struct aaci *aaci) | |||
978 | return i; | 984 | return i; |
979 | } | 985 | } |
980 | 986 | ||
981 | static int __devinit aaci_probe(struct amba_device *dev, struct amba_id *id) | 987 | static int __devinit aaci_probe(struct amba_device *dev, |
988 | const struct amba_id *id) | ||
982 | { | 989 | { |
983 | struct aaci *aaci; | 990 | struct aaci *aaci; |
984 | int ret, i; | 991 | int ret, i; |