Fixed the SMC FDC37C932FR's GPIO port change handler.
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
* Implementation of the SMC FDC37C932FR and FDC37C935 Super
|
* Implementation of the SMC FDC37C932FR and FDC37C935 Super
|
||||||
* I/O Chips.
|
* I/O Chips.
|
||||||
*
|
*
|
||||||
* Version: @(#)sio_fdc37c93x.c 1.0.10 2018/01/16
|
* Version: @(#)sio_fdc37c93x.c 1.0.11 2018/03/14
|
||||||
*
|
*
|
||||||
* Author: Miran Grca, <mgrca8@gmail.com>
|
* Author: Miran Grca, <mgrca8@gmail.com>
|
||||||
* Copyright 2016-2018 Miran Grca.
|
* Copyright 2016-2018 Miran Grca.
|
||||||
@@ -36,7 +36,7 @@ static int fdc37c93x_curreg = 0;
|
|||||||
static int fdc37c93x_gpio_reg = 0;
|
static int fdc37c93x_gpio_reg = 0;
|
||||||
static uint8_t fdc37c93x_regs[48];
|
static uint8_t fdc37c93x_regs[48];
|
||||||
static uint8_t fdc37c93x_ld_regs[10][256];
|
static uint8_t fdc37c93x_ld_regs[10][256];
|
||||||
static uint8_t fdc37c93x_gpio_base = 0x00EA;
|
static uint16_t fdc37c93x_gpio_base = 0x00EA;
|
||||||
static fdc_t *fdc37c93x_fdc;
|
static fdc_t *fdc37c93x_fdc;
|
||||||
|
|
||||||
static uint8_t tries;
|
static uint8_t tries;
|
||||||
@@ -122,12 +122,12 @@ static void fdc37c93x_auxio_handler(void)
|
|||||||
{
|
{
|
||||||
uint16_t ld_port = 0;
|
uint16_t ld_port = 0;
|
||||||
|
|
||||||
uint8_t local_enable = !!fdc37c93x_ld_regs[3][0x30];
|
uint8_t local_enable = !!fdc37c93x_ld_regs[8][0x30];
|
||||||
|
|
||||||
io_removehandler(fdc37c93x_gpio_base, 0x0001, fdc37c93x_gpio_read, NULL, NULL, fdc37c93x_gpio_write, NULL, NULL, NULL);
|
io_removehandler(fdc37c93x_gpio_base, 0x0001, fdc37c93x_gpio_read, NULL, NULL, fdc37c93x_gpio_write, NULL, NULL, NULL);
|
||||||
if (local_enable)
|
if (local_enable)
|
||||||
{
|
{
|
||||||
fdc37c93x_gpio_base = ld_port = make_port(3);
|
fdc37c93x_gpio_base = ld_port = make_port(8);
|
||||||
/* pclog("fdc37c93x: Setting Auxiliary I/O port to %04X\n", ld_port); */
|
/* pclog("fdc37c93x: Setting Auxiliary I/O port to %04X\n", ld_port); */
|
||||||
if ((ld_port >= 0x0100) && (ld_port <= 0x0FFF))
|
if ((ld_port >= 0x0100) && (ld_port <= 0x0FFF))
|
||||||
io_sethandler(fdc37c93x_gpio_base, 0x0001, fdc37c93x_gpio_read, NULL, NULL, fdc37c93x_gpio_write, NULL, NULL, NULL);
|
io_sethandler(fdc37c93x_gpio_base, 0x0001, fdc37c93x_gpio_read, NULL, NULL, fdc37c93x_gpio_write, NULL, NULL, NULL);
|
||||||
@@ -377,7 +377,7 @@ process_value:
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
/* Serial port 2 */
|
/* Auxiliary I/O */
|
||||||
switch(fdc37c93x_curreg)
|
switch(fdc37c93x_curreg)
|
||||||
{
|
{
|
||||||
case 0x30:
|
case 0x30:
|
||||||
|
Reference in New Issue
Block a user