/*
 * COPYRIGHT:        See COPYING in the top level directory
 * PROJECT:          ReactOS kernel
 * FILE:             drivers/dd/sound/dsp.c
 * PURPOSE:          Digital Signal Processing ?
 * PROGRAMMER:       Snatched from ?
 *
 * UPDATE HISTORY:
 *              ??/??/??: Created
 * 		10/23/02: Steven Edwards (Steven_Ed4153@yahoo.com)
 *			  Minor build fix
 */

#include "sb16.h"
#include "dsp.h"

/************************************
 * unsigned char read_dsp(void)
 *
 * Reads the DSP chip
 * Arguments: none
 * Returns: Byte read
 ************************************/
unsigned char read_dsp(unsigned short base)
{
//	while((inb(base+0x0e)&0x80)==0);	//Wait until there is something to read
//	return	inb(base+0x0a);
	return 0;
}

/************************************'
 * sb_status detect_dsp(void);
 *
 * Detects if a SB16 is installed
 * Arguments: None
 * Returns: Success or failure
 ************************************/
sb_status detect_dsp(SB16* sb16)
{
	for(base=0x200;base<0x280;base+=0x10)	//Tries to reset all DSP addresses there is
		if(reset_dsp(base)==SB_TRUE)
		{
			sb16->base=base;
		 	return SB_TRUE;
		}
	return SB_FALSE;
}

/**************************************
 * sb_status reset_dsp(unsigned short base_address);
 *
 * Tries to reset a DSP chip
 * Arguments: base address
 * Returns: Success of failure
 **************************************/
sb_status reset_dsp(unsigned short base_address)
{
//	int delay;

//	outb(base_address+DSP_RESET_PORT,1);
//	for(delay=0;delay<0xffff;delay++);

//	outb(base_address+DSP_RESET_PORT,0);
//	for(delay=0;delay<0xffff;delay++);

//	if((inb(base_address+DSP_READ_STATUS_PORT)&0x80)==0) return SB_FALSE;

//	if(inb(base_address+DSP_READ_DATA_PORT)!=0xAA) return SB_FALSE;

	return SB_TRUE;
}

void write_dsp(unsigned short base,unsigned char data)
{
//  while ((inb(base+DSP_WRITE_PORT) & 0x80) != 0);
//  outb(base+DSP_WRITE_PORT, data);
}