Skip to content

Commit

Permalink
sbawe: fix memory detection part 2
Browse files Browse the repository at this point in the history
The patch "sbawe: fix memory detection" fixed detection
for memoryless SB32 cards but broke detection of memory
above 512KB. This patch fixes the regression.

The patch has been tested on the SB32 card (CT3670) with
0MB, 2MB and 8MB memory installed.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
  • Loading branch information
Krzysztof Helt authored and Jaroslav Kysela committed Jan 8, 2010
1 parent 1cb4f62 commit edf12b4
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions sound/isa/sb/emu8000.c
Original file line number Diff line number Diff line change
Expand Up @@ -377,12 +377,13 @@ init_arrays(struct snd_emu8000 *emu)
static void __devinit
size_dram(struct snd_emu8000 *emu)
{
int i, size;
int i, size, detected_size;

if (emu->dram_checked)
return;

size = 0;
detected_size = 0;

/* write out a magic number */
snd_emu8000_dma_chan(emu, 0, EMU8000_RAM_WRITE);
Expand All @@ -393,6 +394,8 @@ size_dram(struct snd_emu8000 *emu)

while (size < EMU8000_MAX_DRAM) {

size += 512 * 1024; /* increment 512kbytes */

/* Write a unique data on the test address.
* if the address is out of range, the data is written on
* 0x200000(=EMU8000_DRAM_OFFSET). Then the id word is
Expand All @@ -414,7 +417,7 @@ size_dram(struct snd_emu8000 *emu)
if (EMU8000_SMLD_READ(emu) != UNIQUE_ID2)
break; /* no memory at this address */

size += 512 * 1024; /* increment 512kbytes */
detected_size = size;

snd_emu8000_read_wait(emu);

Expand Down Expand Up @@ -442,9 +445,9 @@ size_dram(struct snd_emu8000 *emu)
snd_emu8000_dma_chan(emu, 1, EMU8000_RAM_CLOSE);

snd_printdd("EMU8000 [0x%lx]: %d Kb on-board memory detected\n",
emu->port1, size/1024);
emu->port1, detected_size/1024);

emu->mem_size = size;
emu->mem_size = detected_size;
emu->dram_checked = 1;
}

Expand Down

0 comments on commit edf12b4

Please sign in to comment.