[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Patch for Kernel 2.2.25 (atari-sound)



I've found a small error in the atari sounddriver, that's present in all
2.2.x-versions of the kernel-source. 

In drivers/sound/dmasound.c, in the following function

static void ata_sq_play_next_frame(int index)
{
        char *start, *end;

        /* used by AtaPlay() if all doubts whether there really is something
         * to be played are already wiped out.
         */
        start = sq_block_address(sq.front);
        end = start+((sq.count == index) ? sq.rear_size : sq.block_size);
        /* end might not be a legal virtual address. */
        DMASNDSetEnd(VTOP(end - 1) + 1);
        DMASNDSetBase(VTOP(start));
        /* Since only an even number of samples per frame can
           be played, we might lose one byte here. (TO DO) */
        sq.front = (sq.front+1) % sq.max_count;
        sq.playing++;
        tt_dmasnd.ctrl = DMASND_CTRL_ON | DMASND_CTRL_REPEAT;
}

VTOP() needs to be replaced with virt_to_phys(), creating

        DMASNDSetEnd(virt_to_phys(end - 1) + 1);
        DMASNDSetBase(virt_to_phys(start));

Otherwise, there'll be an unresolved sybol (obviously). I guess someone didn't
grep all the sources for "VTOP" when the function was renamed...

Anyway, if someone with write access to the repository could check this in,
other atari-folks will be spared one error-message. 

Live long and prosper, 

Björn Buske



Reply to: