diff options
Diffstat (limited to 'arch/arm/mach-tegra/audio_switch.c')
-rw-r--r-- | arch/arm/mach-tegra/audio_switch.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/audio_switch.c b/arch/arm/mach-tegra/audio_switch.c index 900d98e9b592..f6e738c2e252 100644 --- a/arch/arm/mach-tegra/audio_switch.c +++ b/arch/arm/mach-tegra/audio_switch.c @@ -269,10 +269,12 @@ void audio_switch_dump_registers(int ifc) void audio_switch_clear_rx_port(int rxport) { audio_switch_writel(ahub_reginfo[rxport].regbase, 0); + ahub_reginfo[rxport].regcache = 0; } void audio_switch_set_rx_port(int rxport, int txport) { audio_switch_writel(ahub_reginfo[rxport].regbase, (1 << txport)); + ahub_reginfo[rxport].regcache = (1 << txport); } int audio_switch_get_rx_port(int rxport) @@ -300,7 +302,7 @@ void ahub_restore_registers(void) } /* audiocif control */ -void audio_switch_set_acif(int addr, struct audio_cif *cifInfo) +u32 audio_switch_set_acif(int addr, struct audio_cif *cifInfo) { u32 val; @@ -341,6 +343,8 @@ void audio_switch_set_acif(int addr, struct audio_cif *cifInfo) __raw_writel(val, addr); AHUB_DEBUG_PRINT("acif value written 0x%x: %08x\n", addr, val); + + return val; } @@ -352,6 +356,7 @@ static inline void apbif_writel(int ifc, u32 val, u32 reg) (unsigned int)ch->virt_base + reg, val); __raw_writel(val, ch->virt_base + reg); + ch->reg_cache[(reg >> 2)] = val; } static inline u32 apbif_readl(int ifc, u32 reg) @@ -767,11 +772,13 @@ int audio_apbif_set_acif(int ifc, int fifo_mode, struct audio_cif *cifInfo) ch = &apbif_channels[ifc]; if (fifo_mode == AUDIO_TX_MODE) { - audio_switch_set_acif((unsigned int)ch->virt_base + - APBIF_AUDIOCIF_TX0_CTRL_0, cifInfo); + ch->reg_cache[(APBIF_AUDIOCIF_TX0_CTRL_0 >> 2)] = + audio_switch_set_acif((unsigned int)ch->virt_base + + APBIF_AUDIOCIF_TX0_CTRL_0, cifInfo); } else { - audio_switch_set_acif((unsigned int)ch->virt_base + - APBIF_AUDIOCIF_RX0_CTRL_0, cifInfo); + ch->reg_cache[(APBIF_AUDIOCIF_RX0_CTRL_0 >> 2)] = + audio_switch_set_acif((unsigned int)ch->virt_base + + APBIF_AUDIOCIF_RX0_CTRL_0, cifInfo); } return 0; } @@ -907,4 +914,4 @@ int audio_switch_close(void) dam_close(); return 0; } -EXPORT_SYMBOL(audio_switch_close);
\ No newline at end of file +EXPORT_SYMBOL(audio_switch_close); |