]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/boot/nusbrc
nusbrc: detect "keyboardio model 01", appears as multifuction device with IAD csp...
[plan9front.git] / sys / src / 9 / boot / nusbrc
index 28e467a71a866c2e6066ca04094b92aaba4a8694..be7629c265da499340c0c8d7ada7067a07928bf0 100755 (executable)
@@ -23,8 +23,12 @@ if(! nusb/usbd)
                        nusb/ether -t aue $etherargs $id
                case 0bda8150
                        nusb/ether -t url $etherargs $id
-               case 18d14ee3 0bb40003
+               case 18d14ee3 0bb40003 10046344
                        nusb/ether -t rndis $etherargs $id
+               case 12092301 # keyboardio model 01 (IAD)
+                       nusb/kb $id
+               # prevent attachment to nusb/kb for:
+               case 054c0268 # sony dualshock 3 (ps3) controller
                case *
                        switch($4){
                        case *03
@@ -33,24 +37,28 @@ if(! nusb/usbd)
                                # CDC ethernet
                                nusb/ether $etherargs $id
                        case *08
-                               if(nusb/disk $id) {@{
+                               if(nusb/disk $id) @{
                                        rfork ne
                                        cd '#σ/usb'
                                        devs=sdU^($1 $5)
                                        for(dev in $devs $devs.*) if(test -d $dev) {
                                                diskparts $dev
-                                               for(part in $dev/dos* $dev/9fat) if(test -r $part) {
+                                               for(part in $dev/dos* $dev/9fat* $dev/data) if(test -r $part && ~ `{fstype $part} dos) {
                                                        mkdir -m 0700 '#σc/'^$dev || exit
                                                        {dossrv -s -f $part &} <[0=1] |
                                                                echo 0 >'#σc/'^$dev/dos
                                                        exit
                                                }
                                        }
-                               }&}
+                               }
                        case *
                                # Raspberry Pi ethernet will always appear as /net/etherU0
-                               if(~ $2 0424)
-                                       nusb/ether -t smsc $etherargs $1:0
+                               if(~ $2 0424){
+                                       if(~ $3 7800)
+                                               nusb/ether -t lan78xx $etherargs $1:0
+                                       if not
+                                               nusb/ether -t smsc $etherargs $1:0
+                               }
                        }
                }
        }
@@ -61,5 +69,9 @@ if(! nusb/usbd)
        rc < '#σ/usb/usbevent' &
 }
 
+# usbd removes this file once all devices have been enumerated
+while(test -e /env/usbbusy)
+       sleep 1
+
 bind -a '#σ/usb' /dev
 bind -a '#σ/usbnet' /net