From 0af9bfb0758c62fe434cb41bd8c1cd1c45e9d0cf Mon Sep 17 00:00:00 2001 From: Toni Wilen Date: Sun, 26 Oct 2014 14:50:27 +0200 Subject: [PATCH] PCMCIA IDE correct drive parameters. --- filesys.cpp | 2 +- gayle.cpp | 28 +++++++++++----------------- hardfile.cpp | 2 +- include/gayle.h | 4 ++-- 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/filesys.cpp b/filesys.cpp index 7592463a..7cb012b4 100644 --- a/filesys.cpp +++ b/filesys.cpp @@ -974,7 +974,7 @@ static void initialize_mountinfo (void) gayle_add_pcmcia_sram_unit (uci->rootdir, uci->readonly); added = true; } else if (type == HD_CONTROLLER_TYPE_PCMCIA_IDE) { - gayle_add_pcmcia_ide_unit (uci->rootdir, uci->readonly); + gayle_add_pcmcia_ide_unit (uci->rootdir, uci); added = true; } if (added) diff --git a/gayle.cpp b/gayle.cpp index a375708e..9d23e27b 100644 --- a/gayle.cpp +++ b/gayle.cpp @@ -2367,7 +2367,7 @@ static int freepcmcia (int reset) return 1; } -static int initpcmcia (const TCHAR *path, int readonly, int type, int reset) +static int initpcmcia (const TCHAR *path, int readonly, int type, int reset, struct uaedev_config_info *uci) { if (currprefs.cs_pcmcia == 0) return 0; @@ -2414,25 +2414,19 @@ static int initpcmcia (const TCHAR *path, int readonly, int type, int reset) } } else if (type == PCMCIA_IDE) { - if (reset) { - if (path) { - struct uaedev_config_info ci = { 0 }; - _tcscpy (ci.rootdir , path); - ci.blocksize = 512; - ci.readonly = readonly != 0; - add_ide_unit (PCMCIA_IDE_ID * 2, &ci); - } + if (reset && path) { + add_ide_unit (PCMCIA_IDE_ID * 2, uci); } pcmcia_common_size = 0; - pcmcia_readonly = readonly; + pcmcia_readonly = uci->readonly; pcmcia_attrs_size = 0x40000; pcmcia_attrs = xcalloc (uae_u8, pcmcia_attrs_size); pcmcia_type = type; write_log (_T("PCMCIA IDE: '%s' open\n"), path); pcmcia_card = 1; - initscideattr (readonly); + initscideattr (pcmcia_readonly); if (!(gayle_cs & GAYLE_CS_DIS)) { gayle_map_pcmcia (); card_trigger (1); @@ -2717,26 +2711,26 @@ int gayle_add_ide_unit (int ch, struct uaedev_config_info *ci) int gayle_add_pcmcia_sram_unit (const TCHAR *path, int readonly) { - return initpcmcia (path, readonly, PCMCIA_SRAM, 1); + return initpcmcia (path, readonly, PCMCIA_SRAM, 1, NULL); } -int gayle_add_pcmcia_ide_unit (const TCHAR *path, int readonly) +int gayle_add_pcmcia_ide_unit (const TCHAR *path, struct uaedev_config_info *uci) { - return initpcmcia (path, readonly, PCMCIA_IDE, 1); + return initpcmcia (path, 0, PCMCIA_IDE, 1, uci); } int gayle_modify_pcmcia_sram_unit (const TCHAR *path, int readonly, int insert) { if (insert) - return initpcmcia (path, readonly, PCMCIA_SRAM, pcmcia_sram ? 0 : 1); + return initpcmcia (path, readonly, PCMCIA_SRAM, pcmcia_sram ? 0 : 1, NULL); else return freepcmcia (0); } -int gayle_modify_pcmcia_ide_unit (const TCHAR *path, int readonly, int insert) +int gayle_modify_pcmcia_ide_unit (const TCHAR *path, struct uaedev_config_info *uci, int insert) { if (insert) - return initpcmcia (path, readonly, PCMCIA_IDE, pcmcia_sram ? 0 : 1); + return initpcmcia (path, 0, PCMCIA_IDE, pcmcia_sram ? 0 : 1, uci); else return freepcmcia (0); } diff --git a/hardfile.cpp b/hardfile.cpp index 089980bd..9234045f 100644 --- a/hardfile.cpp +++ b/hardfile.cpp @@ -1686,7 +1686,7 @@ void hardfile_do_disk_change (struct uaedev_config_data *uci, bool insert) gayle_modify_pcmcia_sram_unit (uci->ci.rootdir, uci->ci.readonly, insert); return; } else if (uci->ci.controller_type == HD_CONTROLLER_TYPE_PCMCIA_IDE) { - gayle_modify_pcmcia_ide_unit (uci->ci.rootdir, uci->ci.readonly, insert); + gayle_modify_pcmcia_ide_unit (uci->ci.rootdir, &uci->ci, insert); return; } hfd = get_hardfile_data (fsid); diff --git a/include/gayle.h b/include/gayle.h index 69000f5a..d94b26a0 100644 --- a/include/gayle.h +++ b/include/gayle.h @@ -4,9 +4,9 @@ extern void gayle_hsync (void); extern void gayle_free (void); extern int gayle_add_ide_unit (int ch, struct uaedev_config_info *ci); extern int gayle_modify_pcmcia_sram_unit (const TCHAR *path, int readonly, int insert); -extern int gayle_modify_pcmcia_ide_unit (const TCHAR *path, int readonly, int insert); +extern int gayle_modify_pcmcia_ide_unit (const TCHAR *path, struct uaedev_config_info*, int insert); extern int gayle_add_pcmcia_sram_unit (const TCHAR *path, int readonly); -extern int gayle_add_pcmcia_ide_unit (const TCHAR *path, int readonly); +extern int gayle_add_pcmcia_ide_unit (const TCHAR *path, struct uaedev_config_info*); extern void gayle_free_units (void); extern void rethink_gayle (void); extern void gayle_map_pcmcia (void); -- 2.47.3