99
1010#include "mx4sio.h"
1111#include "crc16.h"
12- #include "ioplib.h"
1312#include "sio2man_hook.h"
1413#include "sio2regs.h"
1514#include "spi_sdcard_driver.h"
@@ -723,9 +722,8 @@ const uint8_t reverse_byte_LUT8[256] = {
723722 0x1f , 0x9f , 0x5f , 0xdf , 0x3f , 0xbf , 0x7f , 0xff };
724723
725724/* module */
726- int module_start (int argc , char * argv [])
725+ static int module_start (int argc , char * argv [], void * startaddr , ModuleInfo_t * mi )
727726{
728- iop_library_t * lib_modload ;
729727 iop_event_t event ;
730728 iop_thread_t thread ;
731729 int rv ;
@@ -740,6 +738,7 @@ int module_start(int argc, char *argv[])
740738 (void )argc ;
741739 (void )argv ;
742740#endif
741+ (void )startaddr ;
743742
744743 /* create default transfer descriptor */
745744 mx_sio2_init_td (& global_td );
@@ -793,17 +792,10 @@ int module_start(int argc, char *argv[])
793792 goto error4 ;
794793 }
795794
796- lib_modload = ioplib_getByName ("modload" );
797- if (lib_modload != NULL ) {
798- M_DEBUG ("modload 0x%x detected\n" , lib_modload -> version );
799- // Newer modload versions allow modules to be unloaded
800- // Let modload know we support unloading
801- if (lib_modload -> version > 0x102 )
802- return MODULE_REMOVABLE_END ;
803- } else {
804- M_DEBUG ("modload not detected!\n" );
805- }
806-
795+ // If modload has certain flags set indicating new version,
796+ // set the unloadable flag
797+ if (mi && ((mi -> newflags & 2 ) != 0 ))
798+ mi -> newflags |= 0x10 ;
807799 return MODULE_RESIDENT_END ;
808800
809801error4 :
@@ -816,7 +808,7 @@ int module_start(int argc, char *argv[])
816808 return MODULE_NO_RESIDENT_END ;
817809}
818810
819- int module_stop (int argc , char * argv [])
811+ static int module_stop (int argc , char * argv [], void * startaddr , ModuleInfo_t * mi )
820812{
821813#ifndef MINI_DRIVER
822814 int i ;
@@ -828,6 +820,8 @@ int module_stop(int argc, char *argv[])
828820 (void )argc ;
829821 (void )argv ;
830822#endif
823+ (void )startaddr ;
824+ (void )mi ;
831825
832826 DeleteThread (sd_detect_thread_id );
833827 sio2man_hook_deinit ();
@@ -836,12 +830,12 @@ int module_stop(int argc, char *argv[])
836830 return MODULE_NO_RESIDENT_END ;
837831}
838832
839- int _start (int argc , char * argv [])
833+ int _start (int argc , char * argv [], void * startaddr , ModuleInfo_t * mi )
840834{
841835 M_PRINTF ("MX4SIO v1.2\n" );
842836
843837 if (argc >= 0 )
844- return module_start (argc , argv );
838+ return module_start (argc , argv , startaddr , mi );
845839 else
846- return module_stop (- argc , argv );
840+ return module_stop (- argc , argv , startaddr , mi );
847841}
0 commit comments