Removed type member from ADC083x and ADC1213x state structures.

This commit is contained in:
Fabio Priuli 2009-06-02 15:03:20 +00:00
parent 4094fc396a
commit c0aaf94b4b
4 changed files with 34 additions and 92 deletions

View File

@ -52,7 +52,6 @@ struct _adc0831_state
{
adc083x_input_convert_func input_callback_r;
int type;
INT32 cs;
INT32 clk;
INT32 di;
@ -111,7 +110,7 @@ WRITE8_DEVICE_HANDLER( adc083x_cs_write )
if (adc083x->cs == 0 && data != 0)
{
adc083x->state = STATE_IDLE;
if (adc083x->type == TYPE_ADC0834 || adc083x->type == TYPE_ADC0838)
if (device->type == ADC0834 || device->type == ADC0838)
{
adc083x->sars = 1;
}
@ -119,7 +118,7 @@ WRITE8_DEVICE_HANDLER( adc083x_cs_write )
}
if (adc083x->cs != 0 && data == 0)
{
if (adc083x->type == TYPE_ADC0831)
if (device->type == ADC0831)
{
adc083x->state = STATE_MUX_SETTLE;
}
@ -128,7 +127,7 @@ WRITE8_DEVICE_HANDLER( adc083x_cs_write )
adc083x->state = STATE_WAIT_FOR_START;
}
if (adc083x->type == TYPE_ADC0834 || adc083x->type == TYPE_ADC0838)
if (device->type == ADC0834 || device->type == ADC0838)
{
adc083x->sars = 1;
}
@ -153,13 +152,14 @@ static UINT8 adc083x_conversion( const device_config *device )
double vref = adc083x->input_callback_r(device, ADC083X_VREF);
double gnd = adc083x->input_callback_r(device, ADC083X_VREF);
switch (adc083x->type)
if (device->type == ADC0831)
{
case TYPE_ADC0831:
positive_channel = ADC083X_CH0;
negative_channel = ADC083X_CH1;
break;
case TYPE_ADC0832:
}
else if (device->type == ADC0832)
{
positive_channel = ADC083X_CH0 + adc083x->odd;
if (adc083x->sgl == 0)
{
@ -169,8 +169,9 @@ static UINT8 adc083x_conversion( const device_config *device )
{
negative_channel = ADC083X_AGND;
}
break;
case TYPE_ADC0834:
}
else if (device->type == ADC0834)
{
positive_channel = ADC083X_CH0 + adc083x->odd + (adc083x->sel1 * 2);
if (adc083x->sgl == 0)
{
@ -180,8 +181,9 @@ static UINT8 adc083x_conversion( const device_config *device )
{
negative_channel = ADC083X_AGND;
}
break;
case TYPE_ADC0838:
}
else if (device->type == ADC0838)
{
positive_channel = ADC083X_CH0 + adc083x->odd + (adc083x->sel0 * 2) + (adc083x->sel1 * 4);
if (adc083x->sgl == 0)
{
@ -191,7 +193,6 @@ static UINT8 adc083x_conversion( const device_config *device )
{
negative_channel = ADC083X_COM;
}
break;
}
if (positive_channel != ADC083X_AGND)
@ -293,7 +294,7 @@ WRITE8_DEVICE_HANDLER( adc083x_clk_write )
break;
case STATE_WAIT_FOR_SE:
adc083x->sars = 0;
if (adc083x->type == TYPE_ADC0838 && adc083x->se != 0)
if (device->type == ADC0838 && adc083x->se != 0)
{
verboselog(device->machine, 1, "adc083x %s not se\n", device->tag);
}
@ -315,7 +316,7 @@ WRITE8_DEVICE_HANDLER( adc083x_clk_write )
adc083x->output = adc083x_conversion(device);
adc083x->state = STATE_OUTPUT_MSB_FIRST;
adc083x->bit = 7;
if (adc083x->type == TYPE_ADC0834 || adc083x->type == TYPE_ADC0838)
if (device->type == ADC0834 || device->type == ADC0838)
{
adc083x->sars = 1;
}
@ -327,7 +328,7 @@ WRITE8_DEVICE_HANDLER( adc083x_clk_write )
adc083x->bit--;
if (adc083x->bit < 0)
{
if (adc083x->type == TYPE_ADC0831)
if (device->type == ADC0831)
{
adc083x->state = STATE_FINISHED;
}
@ -418,29 +419,30 @@ READ8_DEVICE_HANDLER( adc083x_do_read )
DEVICE_START( adc083x )
-------------------------------------------------*/
static void adc083x_common_start( const device_config *device )
static DEVICE_START( adc0831 )
{
adc0831_state *adc083x = get_safe_token(device);
const adc0831_interface *intf = get_interface(device);
switch (adc083x->type)
if (device->type == ADC0831)
{
adc083x->sars = 1;
adc083x->mux_bits = 0;
}
else if (device->type == ADC0832)
{
case TYPE_ADC0831:
adc083x->sars = 1;
adc083x->mux_bits = 0;
break;
case TYPE_ADC0832:
adc083x->sars = 1;
adc083x->mux_bits = 2;
break;
case TYPE_ADC0834:
}
else if (device->type == ADC0834)
{
adc083x->sars = 0;
adc083x->mux_bits = 3;
break;
case TYPE_ADC0838:
}
else if (device->type == ADC0838)
{
adc083x->sars = 0;
adc083x->mux_bits = 4;
break;
}
/* resolve callbacks */
@ -463,37 +465,6 @@ static void adc083x_common_start( const device_config *device )
state_save_register_device_item(device, 0, adc083x->mux_bits);
}
static DEVICE_START( adc0831 )
{
adc0831_state *adc083x = get_safe_token(device);
adc083x->type = TYPE_ADC0831;
adc083x_common_start(device);
}
static DEVICE_START( adc0832 )
{
adc0831_state *adc083x = get_safe_token(device);
adc083x->type = TYPE_ADC0832;
adc083x_common_start(device);
}
static DEVICE_START( adc0834 )
{
adc0831_state *adc083x = get_safe_token(device);
adc083x->type = TYPE_ADC0834;
adc083x_common_start(device);
}
static DEVICE_START( adc0838 )
{
adc0831_state *adc083x = get_safe_token(device);
adc083x->type = TYPE_ADC0838;
adc083x_common_start(device);
}
/*-------------------------------------------------
DEVICE_RESET( adc083x )
@ -531,16 +502,16 @@ static const char *DEVTEMPLATE_SOURCE = __FILE__;
#include "devtempl.h"
#define DEVTEMPLATE_DERIVED_ID(p,s) p##adc0832##s
#define DEVTEMPLATE_DERIVED_FEATURES DT_HAS_START
#define DEVTEMPLATE_DERIVED_FEATURES 0
#define DEVTEMPLATE_DERIVED_NAME "A/D Converters 0832"
#include "devtempl.h"
#define DEVTEMPLATE_DERIVED_ID(p,s) p##adc0834##s
#define DEVTEMPLATE_DERIVED_FEATURES DT_HAS_START
#define DEVTEMPLATE_DERIVED_FEATURES 0
#define DEVTEMPLATE_DERIVED_NAME "A/D Converters 0834"
#include "devtempl.h"
#define DEVTEMPLATE_DERIVED_ID(p,s) p##adc0838##s
#define DEVTEMPLATE_DERIVED_FEATURES DT_HAS_START
#define DEVTEMPLATE_DERIVED_FEATURES 0
#define DEVTEMPLATE_DERIVED_NAME "A/D Converters 0838"
#include "devtempl.h"

View File

@ -15,15 +15,6 @@
CONSTANTS
***************************************************************************/
/* enumeration specifying which model we are emulating */
enum
{
TYPE_ADC0831,
TYPE_ADC0832,
TYPE_ADC0834,
TYPE_ADC0838
};
#define ADC083X_CH0 0
#define ADC083X_CH1 1
#define ADC083X_CH2 2

View File

@ -25,7 +25,6 @@ struct _adc12138_state
{
adc1213x_input_convert_func input_callback_r;
int type;
int cycle;
int data_out;
int data_in;
@ -312,7 +311,7 @@ READ8_DEVICE_HANDLER( adc1213x_eoc_r )
DEVICE_START( adc1213x )
-------------------------------------------------*/
static void adc1213x_common_start( const device_config *device )
static DEVICE_START( adc12138 )
{
adc12138_state *adc1213x = get_safe_token(device);
const adc12138_interface *intf = get_interface(device);
@ -335,13 +334,6 @@ static void adc1213x_common_start( const device_config *device )
state_save_register_device_item(device, 0, adc1213x->end_conv);
}
static DEVICE_START( adc12138 )
{
adc12138_state *adc1213x = get_safe_token(device);
adc1213x->type = TYPE_ADC12138;
adc1213x_common_start(device);
}
/*-------------------------------------------------
DEVICE_RESET( adc1213x )

View File

@ -12,18 +12,6 @@
#include "devcb.h"
/***************************************************************************
CONSTANTS
***************************************************************************/
/* enumeration specifying which model we are emulating */
enum
{
TYPE_ADC12130,
TYPE_ADC12132,
TYPE_ADC12138
};
/***************************************************************************
MACROS / CONSTANTS
***************************************************************************/