X-Git-Url: http://git.ozlabs.org/?p=yaboot.git;a=blobdiff_plain;f=ybin%2Fofpath;h=b6521649003142324e578280647c6987a9316d58;hp=0f944e2ef7f7ee52d179462dce69f9d3a80bbbb6;hb=cb900d00d1295cc89f55c5968e1c9b4baf92c421;hpb=74a45b785c6537e7632f1633413790bd5e30bf21 diff --git a/ybin/ofpath b/ybin/ofpath index 0f944e2..b652164 100755 --- a/ybin/ofpath +++ b/ybin/ofpath @@ -27,7 +27,7 @@ PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" PRG="${0##*/}" -VERSION=1.0.3-rc1 +VERSION=1.0.3-rc4 DEBUG=0 export LC_COLLATE=C @@ -149,7 +149,7 @@ if (command -v readlink > /dev/null 2>&1) ; then else readlink() { - local SYMTARGET="$(v=`ls -l "$2" 2>/dev/null` ; echo ${v##*> })" + local SYMTARGET="$(v=`ls -l "$1" 2>/dev/null` ; echo ${v##*> })" if [ -n "$SYMTARGET" ] ; then echo "$SYMTARGET" return 0 @@ -313,6 +313,7 @@ ide_ofpath() "PowerMac3,6") local CDROM="$(grep "^drive name:" /proc/sys/dev/cdrom/info 2> /dev/null | grep $DEVNODE)" if [ -z "$CDROM" ] ; then + echo 1>&2 "$PRG: WARNING: Your kernel is too old for proper support, device may be innaccurate." echo "ultra2:$PARTITION" else echo "cd:$PARTITION" @@ -339,16 +340,23 @@ ide_ofpath() return 1 fi + if [ ! -f "/proc/ide/${IDEBUS}/channel" ] ; then + echo 1>&2 "$PRG: KERNEL BUG: /proc/ide/${IDEBUS}/channel does not exist" + return 1 + fi + case "$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)" in ata) - local CHANNEL="" + local MASTER="/disk@0" + local SLAVE="/disk@1" ;; - pci-ata) - if [ ! -f "/proc/ide/${IDEBUS}/channel" ] ; then - echo 1>&2 "$PRG: KERNEL BUG: /proc/ide/${IDEBUS}/channel does not exist" - return 1 - fi - local CHANNEL="/@$(cat /proc/ide/${IDEBUS}/channel)" + pci-ide|pci-ata) + local MASTER="/@$(cat /proc/ide/${IDEBUS}/channel)/disk@0" + local SLAVE="/@$(cat /proc/ide/${IDEBUS}/channel)/disk@1" + ;; + scsi) ## some lame controllers pretend they are scsi, hopefully all kludges are created equal. + local MASTER="/$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 0)),0" + local SLAVE="/$(($(cat /proc/ide/${IDEBUS}/channel) * 2 + 1)),0" ;; *) echo 2>&1 "$PRG: Unsupported IDE device type: \"$(cat /proc/device-tree${DEVSPEC}/device_type 2> /dev/null)\"" @@ -357,12 +365,12 @@ ide_ofpath() esac case "$DEVNODE" in - hda|hdc|hde|hdg|hdi) - echo "${DEVSPEC}${CHANNEL}/disk@0:$PARTITION" + hda|hdc|hde|hdg|hdi|hdk|hdm|hdo) + echo "${DEVSPEC}${MASTER}:$PARTITION" return 0 ;; - hdb|hdd|hdf|hdh|hdj) - echo "${DEVSPEC}${CHANNEL}/disk@1:$PARTITION" + hdb|hdd|hdf|hdh|hdj|hdl|hdn|hdp) + echo "${DEVSPEC}${SLAVE}:$PARTITION" return 0 ;; *)