diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2017-12-17 23:49:01 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2017-12-17 23:49:01 +0300 |
commit | 40ef735db17dfd39e88d5bb1a1d6b56278de1d88 (patch) | |
tree | 83925e93322e395b98223502507b2d4b5c52744f /mods/mod_hakchi/hakchi/rootfs/etc/preinit.d | |
parent | f939bd0194f05167ec83afbed4e957ea8fcbb0e6 (diff) |
USB host
Diffstat (limited to 'mods/mod_hakchi/hakchi/rootfs/etc/preinit.d')
3 files changed, 101 insertions, 61 deletions
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb index 06d7f798..1c05a523 100644 --- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb +++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/b0040_usb @@ -1,58 +1,79 @@ -checkUsbStorage(){ - local trigger="/sys/bus/platform/devices/sunxi_hcd_host0/otg_ed_test" - local disk="/dev/sda1" - - if [ -f "$trigger" ]; then - echo "1" > "$trigger" - local timeout=5 - while [ $timeout -gt 0 ] && ! [ -b "$disk" ]; do - echo "waiting for media $timeout" - let timeout=timeout-1 - sleep 1 - done - fi - - [ -b "$disk" ] || return 1 - - local ro="defaults,nosuid,nodev,noatime,ro" - local rw="defaults,nosuid,nodev,noatime,rw" - mount -o $ro "$disk" "$mountpoint/media" || return 1 - - local saves="$modname/saves" - - if [ -d "$mountpoint/media/$saves" ] || [ -d "$mountpoint/media/$modname/transfer" ] || [ "$cfg_usb_rw" == "y" ]; then - mount -o remount,$rw "$disk" - fi - [ -d "$mountpoint/media/$saves" ] && mount_bind "$mountpoint/media/$saves" "$mountpoint/var/lib/clover/profiles/0" - - local bootlogo0="boot.png" - local bootlogo1="$mountpoint/media/$modname/$bootlogo0" - local bootlogo2="$rootfs/etc/$bootlogo0" - if [ -f "$bootlogo1" ]; then - rsync -ac "$bootlogo1" "$bootlogo2" - showImage "$bootlogo2" - cfg_boot_logo='' - else - [ -f "$bootlogo2" ] && rm "$bootlogo2" && source "$preinit.d/p7010_bootlogo" - fi - - return 0 -} - -checkUsbGamepath(){ - local disk="/dev/sda1" - [ -b "$disk" ] || return 1 - - local games="$modname/games" - if containsGames "$mountpoint/media/$games"; then - if ! mkdir -p "$rootfs$gamepath"; then - rm -rf "$rootfs$gamepath" - mkdir -p "$rootfs$gamepath" || return 1 - fi - mount_bind "$mountpoint/media/$games" "$rootfs$gamepath" - return 0 - else - echo "no romz found at: $disk:/$games" - return 1 - fi -} +disableUsbDevice(){
+ #disable usb
+ echo 0 > "/sys/devices/sunxi_usb/usb_role"
+}
+
+switchToUsbDevice(){
+ disableUsbDevice
+
+ # enable device mode
+ echo 2 > "/sys/devices/sunxi_usb/usb_role"
+
+ # make sure the usb gadgets are disabled
+ echo 0 > "/sys/devices/virtual/android_usb/android0/enable"
+}
+
+switchToUsbHost(){
+ # make sure the usb gadgets are disabled
+ echo 0 > "/sys/devices/virtual/android_usb/android0/enable"
+
+ disableUsbDevice
+
+ # enable host mode
+ echo 1 > "/sys/devices/sunxi_usb/usb_role"
+}
+
+checkUsbStorage(){
+ local disk="/dev/sda1"
+
+ local timeout=5
+ while [ $timeout -gt 0 ] && ! [ -b "$disk" ]; do
+ echo "waiting for media $timeout"
+ let timeout=timeout-1
+ sleep 1
+ done
+
+ [ -b "$disk" ] || return 1
+
+ local ro="defaults,nosuid,nodev,noatime,ro"
+ local rw="defaults,nosuid,nodev,noatime,rw"
+ mount -o $ro "$disk" "$mountpoint/media" || return 1
+
+ local saves="$modname/saves"
+
+ if [ -d "$mountpoint/media/$saves" ] || [ -d "$mountpoint/media/$modname/transfer" ] || [ "$cfg_usb_rw" == "y" ]; then
+ mount -o remount,$rw "$disk"
+ fi
+ [ -d "$mountpoint/media/$saves" ] && mount_bind "$mountpoint/media/$saves" "$mountpoint/var/lib/clover/profiles/0"
+
+ local bootlogo0="boot.png"
+ local bootlogo1="$mountpoint/media/$modname/$bootlogo0"
+ local bootlogo2="$rootfs/etc/$bootlogo0"
+ if [ -f "$bootlogo1" ]; then
+ rsync -ac "$bootlogo1" "$bootlogo2"
+ showImage "$bootlogo2"
+ cfg_boot_logo=''
+ else
+ [ -f "$bootlogo2" ] && rm "$bootlogo2" && source "$preinit.d/p7010_bootlogo"
+ fi
+
+ return 0
+}
+
+checkUsbGamepath(){
+ local disk="/dev/sda1"
+ [ -b "$disk" ] || return 1
+
+ local games="$modname/games"
+ if containsGames "$mountpoint/media/$games"; then
+ if ! mkdir -p "$rootfs$gamepath"; then
+ rm -rf "$rootfs$gamepath"
+ mkdir -p "$rootfs$gamepath" || return 1
+ fi
+ mount_bind "$mountpoint/media/$games" "$rootfs$gamepath"
+ return 0
+ else
+ echo "no romz found at: $disk:/$games"
+ return 1
+ fi
+}
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb index 5026a862..d8c3d82b 100644 --- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb +++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7020_usb @@ -1 +1,15 @@ -[ "$cf_usb" == "n" ] || checkUsbStorage +if [ "$cfg_usb_host" != "y" ]; then
+ switchToUsbDevice
+else
+ switchToUsbHost
+
+ # the usb driver needs about 3 seconds to initialize
+ sleep 3
+
+ if [ -z "$(lsusb | grep -v "1d6b:0001")" ]; then
+ switchToUsbDevice
+ else
+ checkUsbStorage
+ fi
+
+fi
diff --git a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware index fbe018a4..e14653c0 100644 --- a/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware +++ b/mods/mod_hakchi/hakchi/rootfs/etc/preinit.d/p7070_firmware @@ -4,5 +4,10 @@ mod_repair_etc softwareCheck checkUsbGamepath -# temporary -[ "$(uname -n)" == "madmonkey" ] && overmount "/lib/modules" +if [ ! -d "$mountpoint/lib/modules/$(uname -r)" ]; then + if [ -d "$rootfs/lib/modules/$(uname -r)" ]; then + overmount "/lib/modules" + else + echo "no modules for loaded kernel $(uname -r)" + fi +fi |