X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;ds=sidebyside;f=ybin%2Fofpath;h=9cddc916b6e0a21a1885ab28d0292a623b9c75b1;hb=75c4ba10686ac9d3a392cdcd537489eaf656951e;hp=f2d55ca0060a7f4dd4a44dd315b7405f9a32c2d1;hpb=a2b7bb030d78c61ef150f8c9f6926c9558a6f1b5;p=yaboot.git diff --git a/ybin/ofpath b/ybin/ofpath index f2d55ca..9cddc91 100755 --- a/ybin/ofpath +++ b/ybin/ofpath @@ -298,10 +298,24 @@ scsi_ofpath() echo "${DEVICE_PATH##*device-tree}/@$DEVICE_ID:$PARTITION" ;; ata_k2|sata_svw) + #Not all G5 device trees have a compatible "k2-sata" node + #per channel use parent HOST_LIST="$(for i in `find /proc/device-tree -name compatible ` ; do - lgrep "$i" "k2-sata" ; done | sort)" + lgrep "$i" "k2-s-ata" ; done | sort)" DEVICE_PATH="$(printhost $SCSI_HOSTNUMBER $HOST_LIST)" - echo "${DEVICE_PATH##*device-tree}/disk@0:$PARTITION" + K2_DEVICE_ID=0 + while [ "$DEVICE_PATH" = "" ] ; do + SCSI_HOSTNUMBER=`expr $SCSI_HOSTNUMBER - 1` + let "K2_DEVICE_ID += 1" + DEVICE_PATH="$(printhost $SCSI_HOSTNUMBER $HOST_LIST)" + done + echo "${DEVICE_PATH##*device-tree}/k2-sata@$K2_DEVICE_ID/disk@0:$PARTITION" + ;; + sbp2) + HOST_LIST="$(for i in `find /proc/device-tree -name name` ; do + lgrep "$i" "sbp-2" ; done)" + DEVICE_PATH="$(printhost $SCSI_HOSTNUMBER $HOST_LIST)" + echo "${DEVICE_PATH##*device-tree}/disk@0:$PARTITION" ;; *) echo 1>&2 "$PRG: Driver: $SCSI_DRIVER is not supported" @@ -396,6 +410,10 @@ ide_ofpath() local MASTER="/@$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 0))" local SLAVE="/@$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 1))" ;; + spi) + local MASTER="/disk@$(cat /proc/ide/${IDEBUS}/channel),0" + local SLAVE="/disk@$(cat /proc/ide/${IDEBUS}/channel),1" + ;; *) echo 1>&2 "$PRG: Unsupported IDE device type: \"$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)\"" return 1 @@ -659,7 +677,7 @@ chrp() { case "$DEVNODE" in sd*) - if ls -l /proc/device-tree | grep -q ^lr ; then + if ls -l /proc/device-tree | grep -q ^d ; then true else echo 1>&2 "$PRG: /proc/device-tree is broken." @@ -906,6 +924,8 @@ elif (cat /proc/cpuinfo 2>/dev/null | grep ^motherboard | grep -q AAPL) ; then SUBARCH=OldWorld elif (cat /proc/cpuinfo 2> /dev/null | grep ^machine | grep -q 'CHRP IBM') ; then SUBARCH=CHRP +elif (cat /proc/cpuinfo 2>/dev/null | grep ^machine | grep -q 'CHRP Pegasos') ; then + SUBARCH=Pegasos else echo 1>&2 "$PRG: This machine is not yet supported" exit 1 @@ -928,7 +948,8 @@ PARTITION="${DEVICE##*[a-z]}" ## use appropriate search for right sub arch. case "$SUBARCH" in - NewWorld) + # Pegasos OF seems to be NewWorld-ish enough to cope with this. + NewWorld|Pegasos) newworld || exit 1 ;; OldWorld)