Android->usb_mode_switch: add switch to control otg mode.One bug need to be solved:it must to reconnect usb wire that windows system can discover device while rk3399-aio don't have such problem
This commit is contained in:
@ -111,12 +111,13 @@ on boot
|
||||
|
||||
#add for usb otg by huangjc
|
||||
chown system system /sys/bus/platform/drivers/usb20_otg/force_usb_mode
|
||||
chmod 0664 /sys/bus/platform/drivers/usb20_otg/force_usb_mode
|
||||
chmod 0666 /sys/bus/platform/drivers/usb20_otg/force_usb_mode
|
||||
|
||||
# cpu min freq must change to 126M when boot completed
|
||||
on property:sys.boot_completed=1
|
||||
write /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq 0
|
||||
setprop persist.sys.first_booting false
|
||||
start mode_switch
|
||||
|
||||
# for telephony function
|
||||
on property:ro.boot.baseband=N/A
|
||||
@ -133,6 +134,12 @@ service pppoe_start /system/bin/pppoe-start
|
||||
disabled
|
||||
oneshot
|
||||
|
||||
service mode_switch /system/bin/usb_mode_switch.sh
|
||||
seclabel u:r:install_recovery:s0
|
||||
disabled
|
||||
oneshot
|
||||
#disabled
|
||||
|
||||
service bplus_helper /system/bin/bplus_helper
|
||||
class main
|
||||
oneshot
|
||||
|
||||
@ -34,6 +34,7 @@ import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.os.SystemProperties;
|
||||
import android.preference.CheckBoxPreference;
|
||||
import android.preference.ListPreference;
|
||||
import android.preference.Preference;
|
||||
@ -61,12 +62,16 @@ public class UsbSetting extends SettingsPreferenceFragment implements
|
||||
private CheckBoxPreference mConnectToPc;
|
||||
private File mFile = null;
|
||||
private String mMode = null;
|
||||
private static final String OTG_MODE = "0";
|
||||
private static final String HOST_MODE = new String("1");
|
||||
private static final String SLAVE_MODE = new String("2");
|
||||
|
||||
private static final String OTG_MODE_STR = "otg";
|
||||
private static final String HOST_MODE_STR = "host";
|
||||
private static final String SLAVE_MODE_STR = "peripheral";
|
||||
private Handler mHandler;
|
||||
private static final String KEY_CONNECT_TO_PC = "connect_to_pc";
|
||||
private static final String SYS_FILE = "/sys/bus/platform/drivers/usb20_otg/force_usb_mode";
|
||||
public static final String PERSIST_PRO = "persist.usb.mode";
|
||||
|
||||
private BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
@ -104,6 +109,8 @@ public class UsbSetting extends SettingsPreferenceFragment implements
|
||||
} else if(SLAVE_MODE.equals(mode)) {
|
||||
mConnectToPc.setChecked(true);
|
||||
}
|
||||
|
||||
SystemProperties.set(PERSIST_PRO, mode);
|
||||
} else {
|
||||
Log.e(TAG, "unexpect msg:"+ msg.what);
|
||||
}
|
||||
@ -118,6 +125,16 @@ public class UsbSetting extends SettingsPreferenceFragment implements
|
||||
BufferedReader reader= new BufferedReader(new InputStreamReader(fin));
|
||||
String config = reader.readLine();
|
||||
fin.close();
|
||||
|
||||
Log.d(TAG, "Usb mode: " + config);
|
||||
if (HOST_MODE_STR.equals(config)) {
|
||||
config = HOST_MODE;
|
||||
} else if (SLAVE_MODE_STR.equals(config)) {
|
||||
config = SLAVE_MODE;
|
||||
} else if (OTG_MODE_STR.equals(config)) {
|
||||
config = OTG_MODE;
|
||||
}
|
||||
|
||||
return config;
|
||||
} catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
@ -154,9 +171,9 @@ public class UsbSetting extends SettingsPreferenceFragment implements
|
||||
mConnectToPc.setChecked(false);
|
||||
} else if(SLAVE_MODE.equals(mMode)) {
|
||||
mConnectToPc.setChecked(true);
|
||||
} else if ("0".equals(mMode)) {
|
||||
} else if (OTG_MODE.equals(mMode)) {
|
||||
mConnectToPc.setChecked(true);
|
||||
Write2File(mFile, "2");
|
||||
Write2File(mFile, SLAVE_MODE);
|
||||
}
|
||||
mConnectToPc.setEnabled(true);
|
||||
}
|
||||
|
||||
@ -238,7 +238,7 @@ static const struct fs_path_config android_files[] = {
|
||||
{ 00644, AID_APP, AID_APP, 0, "data/data/*" },
|
||||
{ 00755, AID_ROOT, AID_ROOT, 0, "system/bin/ping" },
|
||||
{ 00766, AID_SYSTEM, AID_SYSTEM, 0, "system/bin/displayd" },
|
||||
|
||||
{ 00755, AID_ROOT, AID_ROOT, 0, "system/bin/usb_mode_switch.sh" },
|
||||
/* the following file is INTENTIONALLY set-gid and not set-uid.
|
||||
* Do not change. */
|
||||
{ 02750, AID_ROOT, AID_INET, 0, "system/bin/netcfg" },
|
||||
|
||||
1
vendor/rockchip/firefly/firefly.mk
vendored
1
vendor/rockchip/firefly/firefly.mk
vendored
@ -3,3 +3,4 @@ CUR_PATH := vendor/rockchip/firefly/
|
||||
-include $(CUR_PATH)/catlog/catlog.mk
|
||||
-include $(CUR_PATH)/hdmiin/hdmiin.mk
|
||||
include $(CUR_PATH)/apps/apps.mk
|
||||
include $(CUR_PATH)/usb_mode_switch/usb_mode_switch.mk
|
||||
|
||||
1
vendor/rockchip/firefly/usb_mode_switch/usb_mode_switch.mk
vendored
Normal file
1
vendor/rockchip/firefly/usb_mode_switch/usb_mode_switch.mk
vendored
Normal file
@ -0,0 +1 @@
|
||||
PRODUCT_COPY_FILES +=vendor/rockchip/firefly/usb_mode_switch/usb_mode_switch.sh:system/bin/usb_mode_switch.sh
|
||||
9
vendor/rockchip/firefly/usb_mode_switch/usb_mode_switch.sh
vendored
Normal file
9
vendor/rockchip/firefly/usb_mode_switch/usb_mode_switch.sh
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
#!/system/bin/sh
|
||||
FILE_USB_MODE="/sys/bus/platform/drivers/usb20_otg/force_usb_mode"
|
||||
MODE=$(getprop persist.usb.mode)
|
||||
|
||||
if [ -z "$MODE" ];then
|
||||
MODE="host";
|
||||
fi
|
||||
|
||||
[ -e "$FILE_USB_MODE" ] && echo "$MODE" > "$FILE_USB_MODE"
|
||||
Reference in New Issue
Block a user