Add base address for IO ports to easily allow multiple instance of the same device.
This commit is contained in:
@@ -30,12 +30,12 @@ static uint8_t IC_IO_read(void *pdata, uint8_t port)
|
||||
|
||||
switch(port)
|
||||
{
|
||||
case 0xB0: return params->address_base;
|
||||
case 0xB2: return params->int_enable_mask;
|
||||
case 0xB4: return params->int_status;
|
||||
case 0x0: return params->address_base;
|
||||
case 0x2: return params->int_enable_mask;
|
||||
case 0x4: return params->int_status;
|
||||
}
|
||||
|
||||
return 0x00;
|
||||
return 0x90;
|
||||
}
|
||||
|
||||
static void IC_IO_write(void *pdata, uint8_t port, uint8_t value)
|
||||
@@ -44,8 +44,8 @@ static void IC_IO_write(void *pdata, uint8_t port, uint8_t value)
|
||||
|
||||
switch(port)
|
||||
{
|
||||
case 0xB0: params->address_base = value; break;
|
||||
case 0xB2: params->int_enable_mask = value; break;
|
||||
case 0x0: params->address_base = value; break;
|
||||
case 0x2: params->int_enable_mask = value; break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,14 +57,14 @@ static void IC_IO_write_ack(void *pdata, uint8_t port, uint8_t value)
|
||||
}
|
||||
|
||||
|
||||
static void IC_init(void *params)
|
||||
static void IC_init(uint8_t baseAddress, void *params)
|
||||
{
|
||||
UNUSED_PARAMETER(params);
|
||||
|
||||
register_io_hook(0xB0, IC_IO_read, IC_IO_write, &interrupt_controller);
|
||||
register_io_hook(0xB2, IC_IO_read, IC_IO_write, &interrupt_controller);
|
||||
register_io_hook(0xB4, IC_IO_read, NULL, &interrupt_controller);
|
||||
register_io_hook(0xB6, NULL, IC_IO_write_ack, &interrupt_controller);
|
||||
register_io_hook(baseAddress, 0x0, IC_IO_read, IC_IO_write, &interrupt_controller);
|
||||
register_io_hook(baseAddress, 0x2, IC_IO_read, IC_IO_write, &interrupt_controller);
|
||||
register_io_hook(baseAddress, 0x4, IC_IO_read, NULL, &interrupt_controller);
|
||||
register_io_hook(baseAddress, 0x6, NULL, IC_IO_write_ack, &interrupt_controller);
|
||||
}
|
||||
|
||||
static void IC_reset()
|
||||
@@ -73,16 +73,11 @@ static void IC_reset()
|
||||
interrupt_controller.address_base = 0;
|
||||
}
|
||||
|
||||
static void IC_free()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
device_t InterruptController =
|
||||
{
|
||||
.init = IC_init,
|
||||
.reset = IC_reset,
|
||||
.free = IC_free,
|
||||
.free = NULL,
|
||||
.deviceType = DT_INTERRUPT_CONTROLLER,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user