MPIO HD300: vastly improve sound quality. This unfortunately means reverting r28797 which introduced poping noise

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30904 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Marcin Bukat 2011-11-05 14:01:22 +00:00
parent 9310fc0b4c
commit f4b74b269a
2 changed files with 17 additions and 30 deletions

View file

@ -219,20 +219,22 @@ static void audiohw_mute(bool mute)
/* Reset and power up the WM8751 */
void audiohw_preinit(void)
{
#ifdef MROBE_100
#if defined(MROBE_100)
/* controls headphone ouput */
GPIOL_ENABLE |= 0x10;
GPIOL_OUTPUT_EN |= 0x10;
GPIOL_OUTPUT_VAL |= 0x10; /* disable */
#endif
#ifdef MPIO_HD200
#elif defined(MPIO_HD200)
/* control headphone output
* disabled on startup
*/
and_l(~(1<<25), &GPIO1_OUT);
or_l((1<<25), &GPIO1_ENABLE);
or_l((1<<25), &GPIO1_FUNCTION);
#elif defined(MPIO_HD300)
and_l(~(1<<5), &GPIO1_OUT);
or_l((1<<5), &GPIO1_ENABLE);
or_l((1<<5), &GPIO1_FUNCTION);
#endif
/*
@ -322,15 +324,15 @@ void audiohw_postinit(void)
audiohw_mute(false);
#ifdef MROBE_100
#if defined(MROBE_100)
/* enable headphone output */
GPIOL_OUTPUT_VAL &= ~0x10;
GPIOL_OUTPUT_EN |= 0x10;
#endif
#ifdef MPIO_HD200
#elif defined(MPIO_HD200)
/* enable headphone output */
or_l((1<<25), &GPIO1_OUT);
#elif defined(MPIO_HD300)
or_l((1<<5), &GPIO1_OUT);
#endif
}
@ -394,9 +396,11 @@ void audiohw_close(void)
/* 1. Set DACMU = 1 to soft-mute the audio DACs. */
audiohw_mute(true);
#ifdef MPIO_HD200
#if defined(MPIO_HD200)
/* disable headphone out */
and_l(~(1<<25), &GPIO1_OUT);
#elif defined(MPIO_HD300)
and_l(~(1<<5), &GPIO1_OUT);
#endif
/* 2. Disable all output buffers. */

View file

@ -210,27 +210,10 @@ void lcd_update(void)
lcd_write_command_ex(LCD_CNTL_COLUMN, 0, -1);
lcd_write_command(LCD_CNTL_DATA_WRITE);
/* lcd can't handle the speed of DMA transfer when boosted
* 11 MHz in bootloader hangs for unknown reason
*/
if ( cpu_frequency == CPUFREQ_NORMAL )
{
/* Copy display bitmap to hardware using DMA */
DSR3 = 1;
DAR3 = 0xf0000002;
SAR3 = (unsigned long)lcd_framebuffer;
BCR3 = LCD_WIDTH*LCD_FBHEIGHT;
DCR3 = DMA_BWC(1) | DMA_SINC | DMA_SSIZE(DMA_SIZE_BYTE) |
DMA_DSIZE(DMA_SIZE_BYTE) | DMA_START;
}
else
{
/* Copy display bitmap to hardware */
lcd_write_data (&lcd_framebuffer[0][0], LCD_WIDTH*LCD_FBHEIGHT);
}
}
/* Update a fraction of the display. */
void lcd_update_rect(int, int, int, int) ICODE_ATTR;
void lcd_update_rect(int x, int y, int width, int height)