It is determined from reading nvram settings if the function should be turned on or not. By making 2 simple changes you can force it on or off. My patch below does not edit nvram it simple returns off where it should return on. NVRAM keeps the original value incase it is needed as some later point. Changing the tl_setting to 1 in get_tool_launcher_setting and returning 1 from is_tool_launcher_enabled will force the driver to load. You can change the location of the iso file in:
Eclair-2.6.29.6/drivers/usb/gadget/f_mass_storage.c
Line: 1454: static int do_inquiry_cdrom(struct fsg_dev *fsg, struct fsg_buffhd *bh)
if(is_tool_launcher_enabled())
ret = open_backing_file(fsg, fsg->curlun, "/etc/verizon_i500.iso"); //Edit this file name to your liking
#endif
Patch to disable CDROM driver in the OFF position, turning it on can disable other USB gadgets, bad kernel hacking will have your SDcard show up as an invalidly formated CDROM device if you plug it up with this on, be careful, backup your stuffs if you decide to experiment as you never know!!!:
Yes I could probably just patch one of the below functions but I like to be safe, as the NVRAM setting CAN be changed by the phone's system OS. So patching both ensures that if it does change, that it continues to return false that the driver should be disabled.
Eclair-2.6.29.6/drivers/usb/gadget/fsa9480_i2c.c
Line 2157: Function int get_tool_launcher_setting(void)
DEBUG_TL("reading tool launcher setting. TL: %d \n", tl_setting);
+tl_setting = 0; //This tells the tool launcher that the setting is off
set_tool_launcher_setting_state(tl_setting);
Line 2191: int is_tool_launcher_enabled(void)
{
+return 0; //This tells functions that the driver is disabled
if(get_tool_launcher_setting() > 0)