]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
PCMCIA IDE correct drive parameters.
authorToni Wilen <twilen@winuae.net>
Sun, 26 Oct 2014 12:50:27 +0000 (14:50 +0200)
committerToni Wilen <twilen@winuae.net>
Sun, 26 Oct 2014 12:50:27 +0000 (14:50 +0200)
filesys.cpp
gayle.cpp
hardfile.cpp
include/gayle.h

index 7592463a04a46bc184b79577a663434f67cd6313..7cb012b45d8b4972bc6884afa7f7ef35f589b8ad 100644 (file)
@@ -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)
index a375708efed3b236daa20e720f8a9e4feddf21db..9d23e27bd4ebac8c3981d3588f7067926b72c532 100644 (file)
--- 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);
 }
index 089980bd5e0b673165b1de42ad033d2f36f0b0c8..9234045fa4bbe5e07f50929a7cee764a6c8b6efc 100644 (file)
@@ -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);
index 69000f5a2c2d1d3fe4f6539188df5a5c4151416c..d94b26a0580541f6d30cf70e8ed5cbbc8808c0b5 100644 (file)
@@ -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);