PURPOSE: 改造ums lun机制,实现动态增加
FILE : android.c
FUNCTION: mass_storage_function_init
CONTEXT:
LINE: 68
// add by leon _zhang
20130117 start
static int ums_lun_counter
= 0;
// add by leon _zhang
20130117 end
LINE: 578
-----------------------------------start-------------------------------------------------
//
add by leon_zhang 20120117 start
if (ums_lun_counter <=
1) {
ums_lun_counter =
0;
config-> fsg. nluns =
2;
config-> fsg. luns[0].removable
= 1;
config-> fsg. luns[1].removable
= 1;
config-> fsg. luns[0].cdrom
= 0;
config-> fsg. luns[1].cdrom
= 0;
common = fsg_common_init(NULL, cdev, &config-> fsg);
if (IS_ERR(common))
{
kfree(config);
return PTR_ERR(common);
}
err = sysfs_create_link(&f-> dev-> kobj,
&common-> luns[0].dev.kobj,
"lun0");
err = sysfs_create_link(&f-> dev-> kobj,
&common-> luns[1].dev.kobj,
"lun1");
} else if (ums_lun_counter ==
2) {
ums_lun_counter =
0;
config-> fsg. nluns =
1;
config-> fsg. luns[0].removable
= 1;
config-> fsg. luns[0].cdrom
= 0;
common = fsg_common_init(NULL, cdev, &config-> fsg);
if (IS_ERR(common))
{
kfree(config);
return PTR_ERR(common);
}
err = sysfs_create_link(&f-> dev-> kobj,
&common-> luns[0].dev.kobj,
"lun0");
}
//
add by leon_zhang 20130117 end
-----------------------------------------end-------------------------------------------------------
LINE: 891
//
add by leon _zhang 20130117 start
if(++ums_lun_counter
> 2) {
ums_lun_counter = 0;
pr_err( "android_usb:
ums_lun_counter out of ground '%d'" , ums_lun_counter);
}
//
add by leon _zhang 20130117 end
LINE: 958
//
add by leon _zhang 20120117 start
ums_lun_counter = 0;
//
add by leon _zhang 20120117 end
PURPOSE: /vendor/intel/medfield/init.mfld.usb.rc
FILE : /vendor/intel/medfield/init.mfld.usb.rc
LINE : 88 & 115
CONTEXT:
--------------------------------start--------------------------------
# UMS improvement
on property:sys.usb.config=mass_storage, adb,single
write / sys/class/android_usb/android0/enable
0
# Intel PID/VID for UMS + ADB mode
write / sys/class/android_usb/android0/idVendor
0x8087
write / sys/class/android_usb/android0/idProduct
0x09f2
write / sys/class/android_usb/android0/iProduct
"Android-Phone"
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/functions $sys.usb.config
write /sys/class/android_usb/android0/enable 1
start adbd
setprop sys.usb.state $sys.usb.config
# UMS improvement
on property:sys.usb.config=mass_storage,single
write / sys/class/android_usb/android0/enable
0
# Intel PID/VID for UMS + ADB mode
write / sys/class/android_usb/android0/idVendor
0x8087
write / sys/class/android_usb/android0/idProduct
0x09f2
write / sys/class/android_usb/android0/iProduct
"Android-Phone"
write / sys/class/android_usb/android0/functions
$sys.usb.config
write / sys/class/android_usb/android0/functions
$sys.usb.config
write / sys/class/android_usb/android0/enable
1
start adbd
setprop sys.usb.state
$sys.usb.config
---------------------------------end---------------------------------
Verify:
getprop sys.usb.config
-
- result:
setprop sys.usb.config mass_storage,adb
-
- PC端出现两个盘符
- result: fail
setprop sys.usb.config mass_storage,adb,single
-
- PC端出现一个盘符
- result: fail
Analysis:
- 加入print,观察计数器变化
- 熟悉android.c运行流程