mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-22 12:14:01 +08:00
[ALSA] ASoC: sh: improve generated code for HAC module (AC97)
Change loops in ac97_read/write functions to count down to zero rather than up. Gcc will then use the 'dt' (decrement-and-test) op instead of an increment/compare op-pair. Signed-off-by: Manuel Lauss <mano@roarinelk.homelinux.net> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
e035b84101
commit
690eceb58c
@ -105,7 +105,7 @@ static int hac_get_codec_data(struct hac_priv *hac, unsigned short r,
|
||||
unsigned int to1, to2, i;
|
||||
unsigned short adr;
|
||||
|
||||
for (i = 0; i < AC97_READ_RETRY; ++i) {
|
||||
for (i = AC97_READ_RETRY; i; i--) {
|
||||
*v = 0;
|
||||
/* wait for HAC to receive something from the codec */
|
||||
for (to1 = TMO_E4;
|
||||
@ -132,7 +132,7 @@ static int hac_get_codec_data(struct hac_priv *hac, unsigned short r,
|
||||
udelay(21);
|
||||
}
|
||||
HACREG(HACRSR) &= ~(RSR_STDRY | RSR_STARY);
|
||||
return (i < AC97_READ_RETRY);
|
||||
return i;
|
||||
}
|
||||
|
||||
static unsigned short hac_read_codec_aux(struct hac_priv *hac,
|
||||
@ -141,7 +141,7 @@ static unsigned short hac_read_codec_aux(struct hac_priv *hac,
|
||||
unsigned short val;
|
||||
unsigned int i, to;
|
||||
|
||||
for (i = 0; i < AC97_READ_RETRY; i++) {
|
||||
for (i = AC97_READ_RETRY; i; i--) {
|
||||
/* send_read_request */
|
||||
local_irq_disable();
|
||||
HACREG(HACTSR) &= ~(TSR_CMDAMT);
|
||||
@ -159,10 +159,7 @@ static unsigned short hac_read_codec_aux(struct hac_priv *hac,
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == AC97_READ_RETRY)
|
||||
return ~0;
|
||||
|
||||
return val;
|
||||
return i ? val : ~0;
|
||||
}
|
||||
|
||||
static void hac_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
|
||||
@ -172,7 +169,7 @@ static void hac_ac97_write(struct snd_ac97 *ac97, unsigned short reg,
|
||||
struct hac_priv *hac = &hac_cpu_data[unit_id];
|
||||
unsigned int i, to;
|
||||
/* write_codec_aux */
|
||||
for (i = 0; i < AC97_WRITE_RETRY; i++) {
|
||||
for (i = AC97_WRITE_RETRY; i; i--) {
|
||||
/* send_write_request */
|
||||
local_irq_disable();
|
||||
HACREG(HACTSR) &= ~(TSR_CMDDMT | TSR_CMDAMT);
|
||||
|
Loading…
Reference in New Issue
Block a user